2013-05-27 3 views
0

Я начинаю работать с android, у меня есть проблема в следующем примере для печати значений гироскопа с помощью android.Гироскоп Android

public class Gyro extends Activity implements OnClickListener,SensorEventListener { 

    Button click; 

    SensorManager sm; 

    Sensor gyroscope; 

    int decide=1; 

    Context c; 

    TextView txt; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 


    setContentView(R.layout.activity_gyro); 

    c = getApplicationContext(); 

click = (Button)findViewById(R.id.btnAction); 

sm = (SensorManager)getSystemService(SENSOR_SERVICE); 

gyroscope = sm.getDefaultSensor(Sensor.TYPE_GYROSCOPE); 

txt = (TextView)findViewById(R.id.txt) ; 

click.setText("Start"); 
click.setOnClickListener(this); 
} 

@Override 
public void onClick(View arg0) { 

    if(decide==1) 
    { 
     sm.registerListener(Gyro.this,gyroscope,SensorManager.SENSOR_DELAY_NORMAL); 

     click.setText("Stop"); 
     decide=0; 

    }else if(decide==0){ 

     sm.unregisterListener(Accelerometer.this); 

     click.setText("Start"); 
     decide=1; 
    } 
} 

@Override 
public void onAccuracyChanged(Sensor sensor, int accuracy) { 
    // TODO Auto-generated method stub 

} 

@Override 
public void onSensorChanged(SensorEvent event) { 

    txt.setText(event.values[0]+"::"+event.values[1]+"::"+event.values[2]); 

} 

} 

Код не работает. Любой пример, учебник также будет полезен. Спасибо заранее.

+0

У вас возникли ошибки? – JiTHiN

ответ

1

Вот хороший пример, прочитайте это все, что вам нужно это внутри ..

http://www.41post.com/3745/programming/android-acessing-the-gyroscope-sensor-for-simple-applications

Кроме того, лучше, чтобы проверить, если этот датчик доступен на вашем оборудовании, например:

Boolean sensorAvailable = false; 
    List<Sensor> sensorList = sm.getSensorList(Sensor.TYPE_ALL); 
    for(int i=0;i<sensorList.size();i++){ 

     if(sensorList.get(i)==Sensor.TYPE_GYROSCOPE){ 
      sensorAvailable=true; 
     } 
     } 

Если датчик недоступен, приведите несколько тостов, чтобы показать пользователю, что это не будет работать с устройством. Например, в вашем onClick:

  @Override 
     public void onClick(View arg0) { 

    if(sensorAvailable==true){ 
    if(decide==1) 
     { 
      sm.registerListener(Gyro.this,gyroscope,SensorManager.SENSOR_DELAY_NORMAL); 

      click.setText("Stop"); 
     decide=0; 

     }else if(decide==0){ 

      sm.unregisterListener(Accelerometer.this); 

     click.setText("Start"); 
      decide=1; 
     }else{ 


     Toast.makeText(Gyro.this,"Gyroscope not available",Toast.LENGTH_LONG).show(); 

     } 
    } 
Смежные вопросы