2013-04-10 95 views
1

我有,我想点击一个按钮时启动的侦听器,加速度计的应用程序,所以我想是这样的:如何在按钮的onClick方法内注册传感器侦听器?

private SensorManager sensorManager; 

@Override 
public void onCreate (Bundle savedInstanceState){ 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.storing_act); 

    Button start = (Button)findViewById(R.id.startl); 

    start.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      sensorManager=(SensorManager)getSystemService(SENSOR_SERVICE); 
      sensorManager.registerListener(this, 
        sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), 
        SensorManager.SENSOR_DELAY_NORMAL); 
     } 
    }); 

,但似乎与

“的消息方法registerListener(SensorEventListener,传感器,INT)在类型的SensorManager不适用于参数(新View.OnClickListener(){},传感器,INT)”

有没有解决容易的方法吗?我是否必须重写其他方法?由于

+3

,而不是这个你应该通过YouActivityName.this – 2013-04-10 13:50:36

+0

您尝试注册一个'View'监听器,传感器管理一个希望将[SensorEventListener(http://developer.android.com/reference/android /hardware/SensorEventListener.html),如错误所述。 – adrianp 2013-04-10 13:52:07

+0

谢谢,现在它工作正常 – Burakito 2013-04-10 15:06:40

回答

2

您需要使用MyActivity.this因为thisOnClickListenerregisterListener方法需要SensorEventListener

public class MyActivity extends Activity implements SensorEventListener { 
    @Override 
    public void onCreate (Bundle savedInstanceState){ 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.storing_act); 

     Button start = (Button)findViewById(R.id.startl); 

     start.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       sensorManager=(SensorManager)getSystemService(SENSOR_SERVICE); 
       sensorManager.registerListener(MyActivity.this, 
         sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), 
         SensorManager.SENSOR_DELAY_NORMAL); 
      } 
     }); 
}