Advertisement
Ratatuy

Untitled

May 1st, 2021
248
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.50 KB | None | 0 0
  1. package com.example.compass;
  2.  
  3. import androidx.appcompat.app.AppCompatActivity;
  4.  
  5. import android.annotation.SuppressLint;
  6. import android.hardware.Sensor;
  7. import android.hardware.SensorEvent;
  8. import android.hardware.SensorEventListener;
  9. import android.hardware.SensorManager;
  10. import android.os.Bundle;
  11. import android.widget.ImageView;
  12. import android.widget.TextView;
  13. import android.view.animation.Animation;
  14. import android.view.animation.RotateAnimation;
  15.  
  16. public class MainActivity extends AppCompatActivity implements SensorEventListener {
  17. private ImageView iv_dial; //imageview c картинкой компаса
  18. private TextView tv_degree;
  19. private float CurrentDegree = 0f; //текущее отклонение в градусах
  20. private SensorManager sensorManager;
  21. Sensor accelerometer;
  22. Sensor magnetometer;
  23.  
  24.  
  25.  
  26.  
  27.  
  28. @Override
  29. protected void onCreate(Bundle savedInstanceState) {
  30. super.onCreate(savedInstanceState);
  31. setContentView(R.layout.activity_main);
  32. sensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
  33. accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
  34. magnetometer = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
  35. init();
  36.  
  37.  
  38. }
  39. private void init()
  40. {
  41. iv_dial = findViewById(R.id.iv_dial);
  42. tv_degree = findViewById(R.id.tv_degree);
  43. sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
  44.  
  45. }
  46.  
  47. @Override
  48. protected void onResume() {
  49. super.onResume();
  50. sensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_UI);
  51. sensorManager.registerListener(this, magnetometer, SensorManager.SENSOR_DELAY_UI);
  52.  
  53. }
  54.  
  55. @Override
  56. protected void onPause() {
  57. super.onPause();
  58. sensorManager.unregisterListener(this);
  59. }
  60.  
  61. @SuppressLint("SetTextI18n")
  62. @Override
  63. public void onSensorChanged(SensorEvent event) {
  64. float degree = Math.round(event.values[0]);
  65.  
  66. tv_degree.setText("Degree from North: " + degree + " degrees");
  67.  
  68. RotateAnimation ra = new RotateAnimation(CurrentDegree, -degree,
  69. Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
  70.  
  71. ra.setDuration(210);
  72. ra.setFillAfter(true);
  73. iv_dial.startAnimation(ra);
  74. CurrentDegree = -degree;
  75.  
  76.  
  77. }
  78.  
  79. @Override
  80. public void onAccuracyChanged(Sensor sensor, int accuracy) {
  81.  
  82. }
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement