Guest User

Untitled

a guest
Aug 17th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.65 KB | None | 0 0
  1. Android Accelerometer Sensor, Anomalous Values/Glitches
  2. package com.example.m6;
  3.  
  4. import java.net.DatagramPacket;
  5. import java.net.DatagramSocket;
  6. import java.net.InetAddress;
  7. import java.util.Calendar;
  8.  
  9. import android.app.Activity;
  10. import android.content.Context;
  11. import android.content.pm.ActivityInfo;
  12. import android.graphics.Color;
  13. import android.hardware.Sensor;
  14. import android.hardware.SensorEvent;
  15. import android.hardware.SensorEventListener;
  16. import android.hardware.SensorManager;
  17. import android.os.Bundle;
  18. import android.os.PowerManager;
  19. import android.view.Window;
  20. import android.view.WindowManager;
  21. import android.widget.TextView;
  22. //import android.widget.Toast;
  23.  
  24. public class HelloAndroidActivity extends Activity implements SensorEventListener {
  25. private SensorManager sensorManager;
  26. private TextView tv;
  27. private float accel[] = {0,0,0};
  28. private float gyro[] = {0,0,0};
  29.  
  30.  
  31. InetAddress addr;
  32. int port = 1337;
  33. DatagramSocket s = null;
  34. String out = "";
  35. PowerManager.WakeLock wl;
  36.  
  37. /** Called when the activity is first created. */
  38.  
  39. @Override
  40. public void onCreate(Bundle savedInstanceState) {
  41. try{
  42. //Lock the screen
  43. super.onCreate(savedInstanceState);
  44. requestWindowFeature(Window.FEATURE_NO_TITLE);
  45. getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
  46. setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
  47.  
  48. //Set up the output screen
  49. setContentView(R.layout.main);
  50. tv = (TextView) findViewById(R.id.textview);
  51. tv.setBackgroundColor(Color.BLACK);
  52. tv.setTextColor(Color.GREEN);
  53.  
  54. //Set up the telemetry feed
  55. addr = InetAddress.getByName("192.168.0.12");
  56. s = new DatagramSocket();
  57.  
  58. //Turning off the power management!!
  59. PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
  60. wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "My Tag");
  61. wl.acquire();
  62.  
  63. //Set up the sensors
  64. sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
  65.  
  66. out += "Donen";
  67. tv.setText(out);
  68.  
  69. } catch (Exception e) {
  70. out += "nInit Error:" + e.getMessage() + "n";
  71. tv.setText(out);
  72. }
  73.  
  74. }
  75.  
  76. private static final float NS2S = 1.0f / 1000000000.0f;
  77. private float timestamp;
  78.  
  79. int down = 0;
  80. float tstart = 0;
  81. @Override
  82. public void onSensorChanged(SensorEvent event) {
  83.  
  84. String type = "";
  85. float dT = 0;
  86. if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
  87. if (timestamp != 0) {
  88. accel = event.values;
  89. dT = (event.timestamp - timestamp);
  90. tstart += dT;
  91. }
  92. timestamp = event.timestamp;
  93. type = "G";
  94. }
  95.  
  96. if(event.sensor.getType() == Sensor.TYPE_GYROSCOPE) {
  97. if (timestamp != 0) {
  98. gyro = event.values;
  99. dT = (event.timestamp - timestamp);
  100. tstart += dT;
  101. }
  102. timestamp = event.timestamp;
  103. type = "A";
  104. }
  105.  
  106. String out_packet = tstart / 1000 / 1000 + " "+ type + " " + dT + " " + accel[0] + " " + accel[1] + " " + accel[2] + " " + gyro[0] + " " + gyro[1] + " " + gyro[2] + "n";
  107.  
  108. try{
  109. DatagramPacket p = new DatagramPacket(out_packet.getBytes(),out_packet.length(), addr,port);
  110. s.send(p);
  111. }
  112. catch (Exception e) {
  113. out += "Packet send error: " + e.getMessage() + "n";
  114. }
  115.  
  116. tv.setText(timestamp + "n" + out);
  117. }
  118.  
  119. @Override
  120. protected void onResume() {
  121. super.onResume();
  122. out += "on resumen";
  123. sensorManager.registerListener(this,sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),SensorManager.SENSOR_DELAY_NORMAL);
  124. sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE), SensorManager.SENSOR_DELAY_NORMAL);
  125. tv.setText(out);
  126. }
  127.  
  128. @Override
  129. protected void onPause() {
  130. out += "on pause";
  131. sensorManager.unregisterListener(this);
  132. tv.setText(out);
  133. super.onStop();
  134.  
  135. }
  136.  
  137. @Override
  138. protected void onDestroy() {
  139. out += "on destroy";
  140. wl.release();
  141. tv.setText(out);
  142. super.onDestroy();
  143. }
  144.  
  145. @Override
  146. public void onAccuracyChanged(Sensor sensor, int accuracy) {
  147. // TODO Auto-generated method stub
  148.  
  149. }
  150. }
  151.  
  152. if (event.accuracy == SensorManager.SENSOR_STATUS_UNRELIABLE ){
  153. return;
  154. }
Add Comment
Please, Sign In to add comment