вот код, который считывает данные с датчика акселерометра и датчика гироскопа. Я тестировал это приложение на многих устройствах Android, таких как samsung galaxy tab 2 или samsung dues или модели неба ... но не они показали мне данные гироскопа. Я уверен, что код в порядке, потому что все устройства показали мне данные о ускорении, но не данные для гироскопов. Может ли кто-нибудь мне помочь? Я знаю, что у этих устройств есть датчики гироскопа. то почему они не дают мне данные?Нет данных от датчика гироскопа
public class MainActivity extends Activity implements SensorEventListener{
Sensor gyroscope;
Sensor acceleration;
SensorManager sm;
TextView gyro_text;
TextView acceleration_text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sm = (SensorManager) getSystemService(SENSOR_SERVICE);
gyroscope = sm.getDefaultSensor(Sensor.TYPE_GYROSCOPE);
sm.registerListener(this, gyroscope, SensorManager.SENSOR_DELAY_NORMAL);
gyro_text = (TextView) findViewById(R.id.gyro);
acceleration = sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
sm.registerListener(this, acceleration, SensorManager.SENSOR_DELAY_NORMAL);
acceleration_text = (TextView) findViewById(R.id.acceleration);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
switch(event.sensor.getType()){
case Sensor.TYPE_ACCELEROMETER:
acceleration_text.setText("X acc: "+event.values[0]+
"\tY acc: "+event.values[1]+
"\tZ acc: "+event.values[2]);
break;
case Sensor.TYPE_GYROSCOPE:
gyro_text.setText("X gyro: "+event.values[0]+
"\tY gyro: "+event.values[1]+
"\tZ gyro: "+event.values[2]);
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
}