我遇到了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
}
}
结果应用程序崩溃了。
答案 0 :(得分:0)
您尝试将(SensorEventListener)
转换为Activity
类型,您将获得需要实施的强制转换
SensorEventListener in your `Activity`
试试这个
public class FullscreenActivity extends Activity implements SensorEventListener