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

Ash*_*win 0 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");

                 }
             }
         });
Run Code Online (Sandbox Code Playgroud)


但是我收到以下错误.

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

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

War*_*ith 6

this是指OnClickListener而不是你的Activity.

把它改成这个:

smanager.registerListener(YourActivityClass.this, smanager.getDefaultSensor.TYPE_LINEAR_ACCELERATION, SensorManager.SENSOR_DELAY_NORMAL);
Run Code Online (Sandbox Code Playgroud)

编辑以回答您的context评论:

registerListener()需要一个SensorListener.根据你的说法

它适用于onResume()

评论,我假设你Activity实现了SensorListener接口.上下文本身并没有实现它,因为你得到了同样的错误.