2016-07-25 61 views
0

當我使用Sensor.TYPE_ACCELEROMETER時,它的工作正常並給出了加速度值,但是當我使用type_linear_acceleration時,它甚至在列表中找不到(請參閱代碼)。Type_linear_acceleration傳感器不工作,但TYPE_ACCELEROMETER正在工作

這裏是我的 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-我沒有設備上的陀螺儀。

回答

2

重力傳感器,線性加速度傳感器和旋轉矢量傳感器在Android 4.0中進行了更新,現在使用設備的陀螺儀。 https://developer.android.com/guide/topics/sensors/sensors_motion.html

+0

謝謝...有什麼辦法可以用線性加速度傳感器計算垂直距離嗎? –

+0

@RishabhJindal你在談論設備的垂直移動距離嗎? – Ivan

+0

是在垂直運動。 –

相關問題