I have Preferences Activity, which start a service on preferences changes. On service I want to detect shaking action. this code I have below, works fine when I used it in a activity, but when i want to use it on service, it just wont work, this is how I used my shake detector code in service, what is wrong with my code?
public class back extends Service {
SensorManager mSensorManager;
ShakeEventListener mSensorListener;
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
}
@Override
public void onStart(Intent intent, int startId) {
// TODO Auto-generated method stub
Toast.makeText(back.this, "Service Started", Toast.LENGTH_LONG).show();
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mSensorListener = new ShakeEventListener();
mSensorListener.setOnShakeListener(new ShakeEventListener.OnShakeListener() {
public void onShake() {
Toast.makeText(back.this, "Shake!", Toast.LENGTH_SHORT).show();
}
});
}
protected void onResume() {
mSensorManager.registerListener(mSensorListener,
mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_UI);
}
protected void onPause() {
mSensorManager.unregisterListener(mSensorListener);
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
}
}
I got "Service Started" Toast which means service is started, but after I shake device I dont see "Shake!" Toast. what should I do. Thanks is advance.