2015-10-05 137 views
0

我需要在我的应用程序中计算yz角度。我正在尝试使用陀螺仪,但它不起作用。我的手机甚至没有进入功能onSensorChanged。你可以帮我吗?这是我的代码如何在Android中使用陀螺仪

MainActivity:

public class mainActivity extends Activity implements SensorEventListener { 

private SensorManager mSensorManager; 
private Sensor mSensor; 

private float xy_angle; 
private float xz_angle; 
private float yz_angle; 

private TextView yzPlane; 


public void onAccuracyChanged(Sensor sensor, int accuracy) 
{ 

} 
protected void onResume() 
{ 
    super.onResume(); 
} 
protected void onPause() 
{ 
    super.onPause(); 
} 
public void onSensorChanged(SensorEvent sensorEvent) 
{ 
    xy_angle = sensorEvent.values[0]; 
    xz_angle = sensorEvent.values[1]; 
    yz_angle = sensorEvent.values[2]; 

    Log.i("Test", "Trying to change sensor" + String.valueOf(xy_angle)); 
    yzPlane.setText("Angle is: " + String.valueOf(yz_angle)); 
} 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); 
    mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE); 
    mSensorManager.registerListener(this, mSensor, SensorManager.SENSOR_DELAY_FASTEST); 
    yzPlane = (TextView) findViewById(R.id.yzPlane); 


} 

我也有用途,功能清单文件:

<uses-feature android:name="android.hardware.sensor.gyroscope" android:required="true"/> 

我有索尼XPERIA M2所以它有一个陀螺仪。但亚行给我这个错误:

21681-21681/com.example.orientationsensor E/SensorManager﹕ sensor or listener is null

+0

'我有索尼Xperia M2,所以它有一个陀螺仪。[引用需要] – njzk2

回答

1

我所知,̶XPERIA M2̶d̶o̶e̶s̶n̶'̶t̶有̶g̶y̶r̶o̶s̶c̶o̶p̶e̶.̶尝试注册另一个传感器,F.E.加速度计,看看是否调用onSensorChanged。也许错误...

+0

是的,谢谢。我读了2个不同的网站,其中一个信息m2有陀螺仪/我尝试过TYPE_ORIENTATION,它工作。 –