Android 加速计,用于检测要将手机铃声模式更改为铃声模式的设备的移动

Android 加速计,用于检测要将手机铃声模式更改为铃声模式的设备的移动,android,accelerometer,detection,Android,Accelerometer,Detection,*我有一个应用程序试图使用加速计来检测设备的移动,想要将手机的铃声模式更改为铃声模式\u静音*我实现了检测来电的服务,但我无法忍受移动设备时如何在后台更改手机模式,请允许我帮助我实现这个应用程序 公共类MainActivity扩展活动实现SensorEventListener{ private SensorManager mSensorManager; private Sensor mAccelerometre; @Override protected void onCreate(Bu

*我有一个应用程序试图使用加速计来检测设备的移动,想要将手机的铃声模式更改为铃声模式\u静音*我实现了检测来电的服务,但我无法忍受移动设备时如何在后台更改手机模式,请允许我帮助我实现这个应用程序

公共类MainActivity扩展活动实现SensorEventListener{

 private SensorManager mSensorManager;
  private Sensor mAccelerometre;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
    mAccelerometre =   mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)  

Button b1=(Button)findViewById(R.id.start);
Button b2=(Button)findViewById(R.id.stop);
b1.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        //Intent intent=new Intent(Main.this,ServiceReceiver.class);
          Intent serv = new Intent(MainActivity.this, ServiceBroadcast.class);
  startService(serv);       
    }
}))


使用加速计进行简单的运动检测很容易(模式检测很困难)只需使用sqrt(x^2+y^2+z^2)-9.81即可,它提供运动,其中x、y、z是加速计读数。与一些阈值进行比较,并在其交叉时更改您的配置文件模式

注:

正如你在代码中提到的,加速计不要给出方位角、横摇、俯仰

值[0]:x轴上的加速度减去Gx

值[1]:y轴上的加速度减去Gy

值[2]:z轴上的加速度减去Gz

  b2.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        //Intent intent=new Intent(Main.this,ServiceReceiver.class);
          Intent serv = new Intent(MainActivity.this, ServiceBroadcast.class);
          stopService(serv);

}

 public void onSensorChanged()(SensorEvent event) {
    float azimuth,pitch,roll;
    if(mSensorManager==SensorManager.Sensor_Accelerometer)
     {
    azimuth = event.values[0];
    pitch = event.values[1];
    roll = event.values[2];
    ((TextView)findViewById(R.id.azimuth)).setText("Axe x "+azimuth);
    ((TextView)findViewById(R.id.pitch)).setText("Axe y "+pitch);
    ((TextView)findViewById(R.id.roll)).setText("Axe z "+roll);
}
  }