#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 должен быть объявлен в манифесте, как и разрешение вибрировать:
Комментариев нет:
Отправить комментарий