Предотвратить запуск приложения OnPause при выключении экрана с помощью частичной блокировки - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь поймать нажатие кнопки увеличения / уменьшения громкости с выключенным экраном, но, несмотря на получение функции пробуждения, приложение не остается на переднем плане при нажатии кнопки блокировки.У меня есть точка останова в методе OnPause, и он срабатывает при выключении экрана, и я могу подтвердить, что активирована функция пробуждения через терминал ADB с помощью команды:

adb shell dumpsys power

Iпропущены события кнопок громкости, так как они не актуальны, но они работают, когда экран включен.Я не знаю, что мне не хватает, может быть, я неправильно понимаю, как должен вести себя будильник?

Я тестирую его в эмуляторе с Android 6.0 и на физическом телефоне с Android 7.1.2.Заранее спасибо за любую помощь ..

Button getLockBtn;

PowerManager _powerManager;
PowerManager.WakeLock _wakeLock;


protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);
    RequestWindowFeature(WindowFeatures.NoTitle);
    SetContentView(Resource.Layout.Main);

    getLockBtn = FindViewById<Button>(Resource.Id.GetLockBtn);

    _powerManager = (PowerManager)GetSystemService(PowerService);
    _wakeLock = _powerManager.NewWakeLock(WakeLockFlags.Partial, "MyTag");

    getLockBtn.Click += (s, e) =>
    {
        if (_wakeLock.IsHeld)
        {
            _wakeLock.Release();
            getLockBtn.Text = "Get lock";
            //Remove the notification
        }
        else
        {
            //Here I show a notification
            _wakeLock.Acquire();
            getLockBtn.Text = "Release lock";
        }
    };
}

1 Ответ

0 голосов
/ 06 февраля 2019

Так как приложения, такие как Google Maps, достигают такого поведения

Когда экран заблокирован, регулятор громкости исходит из системы, и сейчас не время применять сам элемент управления.Google Maps ничего не делает с громкостью.

Ваша проблема может заключаться не в использовании кнопки громкости под экраном блокировки, но программа все равно может работать при блокировке экрана.

ЕслиВы хотите, чтобы задача продолжала выполняться, даже если ваша активность не активна, вам нужно использовать службу.https://developer.android.com/guide/components/services.html. Также можно и Уведомление показать что-то на экране блокировки.https://developer.android.com/guide/topics/ui/notifiers/notifications.html

...