Привет, я хочу установить будильник, когда телефон не был затронут. Если экран не был затронут в течение почти 2 минут, звук будильника будет поднят. Как я могу это сделать? Кто-нибудь может мне помочь? Заранее спасибо.
Передайте AlarmService через приведенный ниже код. Это покажет, как долго ваше устройство находится в режиме ожидания.
idle.java
Handler hl_timeout = new Handler(); /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); try{ hl_timeout.postDelayed(DoOnTimeOut, 15000); }catch(Exception e) { e.printStackTrace(); } } // Toast Thread DoOnTimeOut = new Thread() { public void run() { try{ Toast.makeText(getApplicationContext(), "System is idle", Toast.LENGTH_LONG).show(); }catch(Exception e) { e.printStackTrace(); } } }; @Override public void onUserInteraction() { super.onUserInteraction(); //Remove any previous callback try{ hl_timeout.removeCallbacks(DoOnTimeOut); hl_timeout.postDelayed(DoOnTimeOut, 15000); }catch(Exception e) { e.printStackTrace(); } }
Надеюсь, это вам поможет.
Вы можете создать AlarmService для воспроизведения звука, даже если приложение / устройство не работает
Расширьте метод onUserInteraction класса Activity, чтобы сбросить таймер и начать снова в течение двух минут.
Если я правильно понял ваш вопрос, вам нужно вызвать сигнал тревоги, когда в течение некоторого интервала времени не происходит никакого взаимодействия с пользователем. И одно из основных требований: на вашем рабочем столе нет вашей активности. Таким образом, случай с onUserInteraction не работает для вас. В этом случае вы все равно можете получать обновления для каждого действия пользователя, если вы создаете свой собственный AccessibilityService.
Добавьте это в свой манифест, чтобы объявить услугу:
<service android:name=".MyAccessibilityService"> <intent-filter> <action android:name="android.accessibilityservice.AccessibilityService" /> </intent-filter> </service>
И ваша реализация сервиса должна выглядеть примерно так:
public class MyAccessibilityService extends AccessibilityService { @Override public void onServiceConnected() { AccessibilityServiceInfo info = new AccessibilityServiceInfo(); // we are interested in all types of accessibility events info.eventTypes = AccessibilityEvent.TYPES_ALL_MASK; info.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC; // we want to receive events in a certain interval info.notificationTimeout = 100; setServiceInfo(info); Log.e("ALEX", "service connected!"); } @Override public void onAccessibilityEvent(AccessibilityEvent arg0) { Log.e("ALEX", "Event happened!"); } }
Теперь, когда пользователь прикоснется к экрану, например, вы активируете onAccessibilityEvent () и сможете перезапустить таймер, который запустит ваш Тревога.
ОДНАКО, этот подход имеет один недостаток: чтобы он работал, вам нужно перейти к настройкам телефона -> Доступность и включить ваше приложение. В противном случае система не будет запускать вашу службу.