#java #android #service
Код сервиса, который каждую минуту запускает вибрацию на телефоне.
Как только экран гаснет, сервис прекращает работу. Как запретить остановку? И как
в нужный момент по кнопке остановить этот сервис?
public class TimeService extends Service {
Vibrator vib;
public static final long NOTIFY_INTERVAL = 60 * 1000; // 60 seconds
private Handler mHandler = new Handler();
private Timer mTimer = null;
@Override
public IBinder onBind(Intent intent) { return null; }
@Override
public void onCreate() {
vib = (Vibrator) this.getSystemService(Context.VIBRATOR_SERVICE);
// cancel if already existed
if (mTimer != null) { mTimer.cancel();}
else { mTimer = new Timer(); }
// schedule task
mTimer.scheduleAtFixedRate(new TimeDisplayTimerTask(), 0,
NOTIFY_INTERVAL);
}
class TimeDisplayTimerTask extends TimerTask {
@Override
public void run() {
// run on another thread
mHandler.post(new Runnable() {
@Override
public void run() {
vib.vibrate(500);
}
});
}
Запускаю сервис так:
public void onClick_btTask(View v) {
startService(new Intent(this, TimeService.class));
}
Ответы
Ответ 1
Service по умолчанию работает в том же потоке, что и запускающая его activity. Чтобы вибрировать каждую минуту, можете попробовать использовать связку с IntentService и AlarmManager-а с ключом RTC_WAKEUP, который будет этот IntentService каждую минуту вызывать. Примерно так: public class VibrateService extends IntentService { public static final String TAG = "VibrateService"; public VibrateService() { super(TAG); } @Override protected void onHandleIntent(Intent intent) { Vibrator vibrator = (Vibrator) this.getSystemService(Context.VIBRATOR_SERVICE); vibrator.vibrate(500); } } ... Intent intent = new Intent(this, VibrateService.class); // Запуск повторения вызова сервиса AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 60 * 1000, PendingIntent.getService(this, REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT)); Конечно же, VibrateService должен быть объявлен в манифесте, как и разрешение вибрировать:
Комментариев нет:
Отправить комментарий