Type_linear_acceleration传感器不工作但TYPE_ACCELEROMETER正在工作

时间:2016-07-25 17:12:06

标签: android accelerometer android-sensors

当我使用Sensor.TYPE_ACCELEROMETER它工作正常并给我加速度值但是当我使用type_linear_acceleration时,它甚至没有在列表中找到(参见代码)。

这是我的 MainActivity.java

public class MainActivity extends AppCompatActivity {

SensorManager sm = null;
TextView textView1 = null;
List list;

SensorEventListener sel = new SensorEventListener(){
    public void onAccuracyChanged(Sensor sensor, int accuracy) {}
    public void onSensorChanged(SensorEvent event) {

        Log.i("tag","inside sensor listener");
        textView1.setText("x:"+event.values[0]+"\ny:"+event.values[1]+"\nz:"+event.values[2]);

    }

};

@Override
protected void onResume() {
    super.onResume();
    sm = (SensorManager)getSystemService(SENSOR_SERVICE);

    list = sm.getSensorList(Sensor.TYPE_LINEAR_ACCELERATION);


    //Log.i("tag",Sensor.TYPE_ACCELEROMETER);
    if(list.size()>0){

    sm.registerListener(sel,sm.getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION) , SensorManager.SENSOR_DELAY_NORMAL);

        Toast.makeText(getBaseContext(), "Accelerometer.", Toast.LENGTH_LONG).show();
    }else{
    Toast.makeText(getBaseContext(), "Error: No Accelerometer.", Toast.LENGTH_LONG).show();
    }

}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    textView1 = (TextView)findViewById(R.id.textView2);

}

@Override
protected void onStop() {
    if(list.size()>0){
        sm.unregisterListener(sel);
    }
    super.onStop();
}

}

问题是显示“错误:没有加速度计”。可能的原因是什么? P.s-我的设备上没有陀螺仪。

1 个答案:

答案 0 :(得分:2)

重力传感器,线性加速度传感器和旋转矢量传感器在Android 4.0中进行了更新,现在使用了设备的陀螺仪。 https://developer.android.com/guide/topics/sensors/sensors_motion.html