近接センサーの値の変化を監視するアプリを開発しています。アプリケーションでは、サービスを開始して近接センサーの監視を開始するための2つの別個のボタンが必要です。Androidで機能を呼び出す開始サービス
これは私のサービスクラス
public class MyService extends Service{
Sensor proxSensor;
SensorManager sm;
public static MyService instance;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
instance = this;
return Service.START_STICKY;
}
public void startScan(){
sm=(SensorManager)getSystemService(SENSOR_SERVICE);
proxSensor=sm.getDefaultSensor(Sensor.TYPE_PROXIMITY);
SensorEventListener eventListener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent sensorEvent) {
Log.e("Sensor","Value "+sensorEvent.values[0]);
}
@Override
public void onAccuracyChanged(Sensor sensor, int i) {
}
};
sm.registerListener(eventListener, proxSensor, SensorManager.SENSOR_DELAY_NORMAL);
}
私はアプリの実行中にログ出力が正しく印刷され
public void viewNotification(View view){
startService(new Intent(this,MyService.class));
}
public void viewNotification2(View view){
MyService.instance.startScan();
}
私の主な活動からサービスを開始するが、私は活動を終了し、時に削除していますですそれ以前のアプリのリストから出力は与えられていません。しかし、私がonStartCommand内でstartScan()を呼び出すと、アプリケーションを閉じた後でも実行されます。
なぜ出力が得られないのですか? これを達成するために静的なMyServiceを使用する代わりに、他の方法がありますか?
サービスにアクティビティをバインドし、静的メソッドでアクセスしないでください –
私は、アプリケーションの終了後でもセンサの値を引き続き印刷したいと思っていますか?また静的な方法でサービスを呼び出さないでください –
私はbindService()を試しましたが、アクティビティが生きている場合にのみセンサ出力も表示されます。サービスが無期限に実行されるようにしたい – chamathabeysinghe