2013-05-27 63 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; 
     } 
     } 

如果傳感器不可用,請提供一些Toast以向用戶顯示這不適用於設備。例如在您的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(); 

     } 
    }