Android检测移动-registerListener应用程序崩溃

Android检测移动-registerListener应用程序崩溃,android,Android,我与registerListener有问题。我的应用程序崩溃了,我不知道如何正确编写registerListener。 我从互联网上获取了一些代码。实际上是从这个网站。 这是我的密码: public class FullscreenActivity extends Activity { // Start with some variables private SensorManager sensorMan; private Sensor accelerometer; private flo

我与registerListener有问题。我的应用程序崩溃了,我不知道如何正确编写registerListener。 我从互联网上获取了一些代码。实际上是从这个网站。 这是我的密码:

public class FullscreenActivity extends Activity {

 // Start with some variables
private SensorManager sensorMan;
private Sensor accelerometer;

private float[] mGravity;
private float mAccel;
private float mAccelCurrent;
private float mAccelLast;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_fullscreen);

    if (Build.VERSION.SDK_INT < 16) {
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
    }

    // In onCreate method
    sensorMan = (SensorManager)getSystemService(SENSOR_SERVICE);
    accelerometer = sensorMan.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
    mAccel = 0.00f;
    mAccelCurrent = SensorManager.GRAVITY_EARTH;
    mAccelLast = SensorManager.GRAVITY_EARTH;                                
}         

    @Override
public void onResume() {
    super.onResume();
    sensorMan.registerListener((SensorEventListener)this, accelerometer,SensorManager.SENSOR_DELAY_UI);
}

@Override
protected void onPause() {
    super.onPause();
    sensorMan.unregisterListener((SensorEventListener) this);
}

    public void onSensorChanged(SensorEvent event) {
    if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER){
        mGravity = event.values.clone();
        // Shake detection
        float x = mGravity[0];
        float y = mGravity[1];
        float z = mGravity[2];
        mAccelLast = mAccelCurrent;
        mAccelCurrent = FloatMath.sqrt(x*x + y*y + z*z);
        float delta = mAccelCurrent - mAccelLast;
        mAccel = mAccel * 0.9f + delta;
            // Make this higher or lower according to how much
            // motion you want to detect
        if(mAccel > 3){ 
        // do something
        }
    }

}

public void onAccuracyChanged(Sensor sensor, int accuracy) {
    // required method
}    
公共类FullscreenActivity扩展活动{
//从一些变量开始
私人传感器经理;
专用传感器加速度计;
私人股本;
私人浮动麦塞尔;
私人浮标;
私人浮球;
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_全屏);
如果(Build.VERSION.SDK_INT<16){
getWindow().setFlags(WindowManager.LayoutParams.FLAG_全屏,
WindowManager.LayoutParams.FLAG(全屏);
}
//在onCreate方法中
sensorMan=(传感器管理器)getSystemService(传感器服务);
加速计=sensorMan.getDefaultSensor(传感器类型\加速计);
麦塞尔=0.00f;
mAccelCurrent=SensorManager.GRAVITY\u接地;
mAccelLast=传感器管理器。重力与地球;
}         
@凌驾
恢复时公开作废(){
super.onResume();
sensorMan.registerListener((SensorEventListener)this、Accelerator、SensorManager.SENSOR\u DELAY\u UI);
}
@凌驾
受保护的void onPause(){
super.onPause();
取消注册侦听器((SensorEventListener)this);
}
传感器更改时的公共无效(传感器事件){
if(event.sensor.getType()==sensor.TYPE\u加速计){
mGravity=event.values.clone();
//震动检测
float x=mGravity[0];
浮动y=mGravity[1];
float z=mGravity[2];
mAccelLast=MaccellCurrent;
mAccelCurrent=FloatMath.sqrt(x*x+y*y+z*z);
浮动增量=mAccelCurrent-mAccelLast;
麦赛尔=麦赛尔*0.9f+三角洲;
//根据价格高低来决定价格
//要检测的运动
如果(mAccel>3){
//做点什么
}
}
}
精度更改时的公共无效(传感器,int精度){
//必选方法
}    
}

因此,应用程序崩溃

您尝试将
(SensorEventListener)
强制转换为
活动
类型,您将获得需要实现的强制转换异常

SensorEventListener in your `Activity`
试试这个

public class FullscreenActivity extends Activity implements SensorEventListener 

有什么例外?请发布日志。下面的答案解决这个问题。谢谢