Guest User

Untitled

a guest
Jan 16th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.57 KB | None | 0 0
  1. public class MainActivity extends AppCompatActivity implements
  2. SensorEventListener {
  3.  
  4. private float rotateY = 0f;
  5. private SensorManager sensorManager;
  6.  
  7. @Override
  8. protected void onCreate(Bundle savedInstanceState) {
  9. super.onCreate(savedInstanceState);
  10. setContentView(R.layout.activity_main);
  11.  
  12. sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
  13. }
  14.  
  15. @Override
  16. protected void onResume() {
  17. super.onResume();
  18.  
  19. sensorManager.registerListener(this,
  20. sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE),
  21. SensorManager.SENSOR_DELAY_GAME);
  22. }
  23.  
  24. @Override
  25. protected void onPause() {
  26. super.onPause();
  27. sensorManager.unregisterListener(this);
  28. }
  29.  
  30. @Override
  31. public void onSensorChanged(SensorEvent event) {
  32.  
  33. float degree = Math.round(event.values[1]);
  34. rotateY += degree;
  35. Log.d("TAG", "rotateY: " + rotateY);
  36. }
  37.  
  38. @Override
  39. public void onAccuracyChanged(Sensor sensor, int accuracy) {
  40. }
  41. }
  42.  
  43. public class MainActivity extends Activity {
  44.  
  45. TextView tvText;
  46. SensorManager sensorManager;
  47. Sensor sensorAccel;
  48. Sensor sensorMagnet;
  49.  
  50. StringBuilder sb = new StringBuilder();
  51.  
  52. Timer timer;
  53.  
  54.  
  55. @Override
  56. protected void onCreate(Bundle savedInstanceState) {
  57. super.onCreate(savedInstanceState);
  58. setContentView(R.layout.activity_main);
  59. tvText = (TextView) findViewById(R.id.tvText);
  60. sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
  61. sensorAccel = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
  62. sensorMagnet = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
  63. }
  64.  
  65. @Override
  66. protected void onResume() {
  67. super.onResume();
  68. sensorManager.registerListener(listener, sensorAccel, SensorManager.SENSOR_DELAY_NORMAL);
  69. sensorManager.registerListener(listener, sensorMagnet, SensorManager.SENSOR_DELAY_NORMAL);
  70.  
  71. timer = new Timer();
  72. TimerTask task = new TimerTask() {
  73. @Override
  74. public void run() {
  75. runOnUiThread(new Runnable() {
  76. @Override
  77. public void run() {
  78. getDeviceOrientation();
  79. showInfo();
  80. }
  81. });
  82. }
  83. };
  84. timer.schedule(task, 0, 10);
  85.  
  86. }
  87.  
  88. @Override
  89. protected void onPause() {
  90. super.onPause();
  91. sensorManager.unregisterListener(listener);
  92. timer.cancel();
  93. }
  94.  
  95. String format(float values[]) {
  96. return String.format("%1$.1ftt%2$.1ftt%3$.1f", values[0], values[1], values[2]);
  97. }
  98.  
  99. void showInfo() {
  100. sb.setLength(0);
  101. sb.append("Orientation : " + format(valuesResult));
  102. tvText.setText(sb);
  103. }
  104.  
  105. float[] r = new float[9];
  106.  
  107. void getDeviceOrientation() {
  108. SensorManager.getRotationMatrix(r, null, valuesAccel, valuesMagnet);
  109. SensorManager.getOrientation(r, valuesResult);
  110.  
  111. valuesResult[0] = (float) Math.toDegrees(valuesResult[0]);
  112. valuesResult[1] = (float) Math.toDegrees(valuesResult[1]);
  113. valuesResult[2] = (float) Math.toDegrees(valuesResult[2]);
  114. return;
  115. }
  116.  
  117.  
  118. float[] valuesAccel = new float[3];
  119. float[] valuesMagnet = new float[3];
  120. float[] valuesResult = new float[3];
  121.  
  122.  
  123.  
  124. SensorEventListener listener = new SensorEventListener() {
  125.  
  126. @Override
  127. public void onAccuracyChanged(Sensor sensor, int accuracy) {
  128. }
  129.  
  130. @Override
  131. public void onSensorChanged(SensorEvent event) {
  132.  
  133.  
  134.  
  135. switch (event.sensor.getType()) {
  136. case Sensor.TYPE_ACCELEROMETER:
  137. for (int i=0; i < 3; i++){
  138. valuesAccel[i] = event.values[i];
  139. }
  140. break;
  141. case Sensor.TYPE_MAGNETIC_FIELD:
  142. for (int i=0; i < 3; i++){
  143. valuesMagnet[i] = event.values[i];
  144. }
  145. break;
  146. }
  147. }
  148. };
Add Comment
Please, Sign In to add comment