Tôi đang tạo ứng dụng khởi động dịch vụ khi nút "Bắt đầu" được nhấn và dừng khi nút "Dừng" được nhấn. trong dịch vụ, tôi đăng ký người nghe cho cảm biến ACCELEROMETER để tôi nhận được giá trị gia tốc của x, y, z trục .. nhưng khi tôi dừng ứng dụng và hủy đăng ký người nghe khỏi cảm biến, ngay cả khi tôi nhận được giá trị gia tốc của mình.Làm cách nào để hủy đăng ký người nghe khỏi cảm biến sau khi ngừng dịch vụ?
Dưới đây là các mã:
// Service
public class Accel extends Service
{
private static Context CONTEXT;
private static Sensor sensor;
private static SensorManager sensorManager;
private static boolean running = false;
@Override
public void onCreate()
{
}
// code to execute when the service is shutting down
@Override
public void onDestroy()
{
if (isListening())
stopListening();
}
// code to execute when the service is starting up
@Override
public void onStart(Intent intent, int startid)
{
CONTEXT = this;
startListening(this);
}
public static Context getContext()
{
return CONTEXT;
}
// Returns true if the manager is listening to orientation changes
public static boolean isListening()
{
return running;
}
//Unregisters listeners
public static void stopListening()
{
running = false;
sensorManager.unregisterListener(sensorEventListener, sensor);
}
/**
* Registers a listener and start listening
* @param accelerometerListener
* callback for accelerometer events
*/
public static void startListening(AccelerometerListener accelerometerListener)
{
sensorManager = (SensorManager) getContext().getSystemService(Context.SENSOR_SERVICE);
List<Sensor> sensors = sensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER);
if (sensors.size() > 0)
{
sensor = sensors.get(0);
running = sensorManager.registerListener(sensorEventListener, sensor, SensorManager.SENSOR_DELAY_GAME);
listener = accelerometerListener;
}
}
/**
* The listener that listen to events from the accelerometer listener
*/
private static SensorEventListener sensorEventListener =
new SensorEventListener()
{
public void onAccuracyChanged(Sensor sensor, int accuracy) {}
public void onSensorChanged(SensorEvent event)
{
// the code to perform on sensor change
}
};
}
bất cứ ai có thể vui lòng giúp tôi ra ??
Dịch vụ đó có thể cần được dừng bởi ứng dụng của bạn – zapl
ứng dụng đang bị ứng dụng của tôi dừng lại. Hoạt động chính của ứng dụng của tôi dừng dịch vụ bằng cách gọi phương thức stopService(). – Nikunj
có thể thấy rằng câu hỏi này cũ. Bạn đã tìm thấy một giải pháp? :) –