Как установить будильник, когда мобильный телефон работает без участия Android?

Привет. Я хочу установить будильник, когда телефон не был затронут. Если экран не коснулся почти 2 минуты, звук будильника будет поднят. Как я могу это сделать? Кто-нибудь может мне помочь? Заранее спасибо.

Ответы

Ответ 1

Передайте 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();
    }
}

Надеюсь, это поможет вам.

Ответ 2

Вы можете создать AlarmService для воспроизведения звука, даже когда приложение/устройство не работает

Расширьте метод onUserInteraction класса активности до таймера reset и начните снова в течение двух минут.

Ответ 3

Если я правильно понял ваш вопрос, вам нужно вызвать сигнал тревоги, когда в течение некоторого интервала времени не происходит никакого взаимодействия с пользователем. И одно из основных требований, на вашем рабочем столе нет вашей активности. Поэтому случай с 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() и сможете перезапустить таймер, который запустит ваш Тревога.

ОДНАКО, этот подход имеет один недостаток: для того, чтобы он работал, вам нужно перейти к настройкам телефона → Доступность и включить приложение. В противном случае система не будет запускать вашу службу.