2013-04-10 92 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); 
      } 
     }); 
}