如何在单击按钮时注册或取消注册传感器事件侦听器?

时间:2012-10-13 14:12:08

标签: android android-sensors

我使用以下代码注册和取消注册SensorEventListener。

 //Get the Toggle Button
         final ToggleButton tb=(ToggleButton) findViewById(R.id.activate);
         //Listener for ToggleButton
         tb.setOnClickListener(new View.OnClickListener() {


             public void onClick(View arg0) {
                 if(tb.isChecked()){
                    //Register the sensor
                     //smanager.
                     smanager.registerListener(this, smanager.getDefaultSensor.TYPE_LINEAR_ACCELERATION,SensorManager.SENSOR_DELAY_NORMAL);
                     Log.v(classname, "Sensor Listener Unregistered");
                 }
                 else{
                      //deRegister the Sensor
                     // Unregister the listener
                     smanager.unregisterListener(this);
                     Log.v(classname, "Sensor Listener Unregistered");

                 }
             }
         });


但是我收到以下错误。

The method registerListener(SensorListener, Sensor, int) is not applicable for the arguments new View.onClickListener(),{},Sensor,int

在活动的onPause()方法中编写相同的代码时,我没有收到此错误。有什么问题以及如何解决这个问题?

1 个答案:

答案 0 :(得分:6)

this指的是OnClickListener,而不是Activity

将其更改为:

smanager.registerListener(YourActivityClass.this, smanager.getDefaultSensor.TYPE_LINEAR_ACCELERATION, SensorManager.SENSOR_DELAY_NORMAL);

修改以回复您的context评论:

registerListener()需要SensorListener。根据你的

  

它适用于onResume()

评论,我假设您的Activity实现了SensorListener界面。上下文本身没有实现它,因为你得到了同样的错误。