locked
Как сделать чтобы приложение не блокировалось при отсутствии воздействия на программу RRS feed

  • Вопрос

  • Добрый день , скажите как сделать чтобы телефон не уводил приложение в фоновый и режим и не блокировал экран ? 

    Я пытался сделать так но это не работает 

    public App()
            {
                var displayRequest = new Windows.System.Display.DisplayRequest();
                displayRequest.RequestActive();
                this.InitializeComponent();
                this.Suspending += this.OnSuspending;
                
            }

    25 октября 2016 г. 7:50

Ответы

  • Для более подробной информации почитайте здесь.

    Make the community better together

    26 октября 2016 г. 6:22
  • Нет, в ссылках, которые мы Вам предоставили все описанно. Прочитайте еще раз в блоге, который Вам предоставил Азат:

    private Windows.System.Display.DisplayRequest _displayRequest;
    
    public void ActivateDisplay()
    {
        //create the request instance if needed
        if (_displayRequest == null)
            _displayRequest = new Windows.System.Display.DisplayRequest();
    
        //make request to put in active state
        _displayRequest.RequestActive();
    }
    
    public void ReleaseDisplay()
    {
        //must be same instance, so quit if it doesn't exist
        if (_displayRequest == null)
            return;
    
        //undo the request
        _displayRequest.RequestRelease();
    }


    Если Вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку "Предложить как ответ" или "Проголосовать за полезное сообщение" Мнения, высказанные здесь, являются отражение моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.

    • Помечено в качестве ответа Timur2008 27 октября 2016 г. 8:11
    27 октября 2016 г. 7:03

Все ответы

  • Здравствуйте,

    Надо использовать:

    PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled
    Это если для WP8

    Если Вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку "Предложить как ответ" или "Проголосовать за полезное сообщение" Мнения, высказанные здесь, являются отражение моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.

    25 октября 2016 г. 11:01
  • Здравствуйте,

    Надо использовать:

    PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled
    Это если для WP8

    Если Вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку "Предложить как ответ" или "Проголосовать за полезное сообщение" Мнения, высказанные здесь, являются отражение моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.

    У меня uwp wp 8.1 Там такого класса нет :( 
    25 октября 2016 г. 16:02
  • Уточните, у вас UWP или все же WP 8.1?

    UWP на WP 8.1 нет, а класс выше указан на MSDN как поддерживаемый на всех версиях WP:

    https://msdn.microsoft.com/en-us/library/microsoft.phone.shell.phoneapplicationservice%28v=vs.105%29.aspx?f=255&MSPPError=-2147217396


    This posting is provided "AS IS" with no warranties, and confers no rights.

    25 октября 2016 г. 18:29
  • Уточните, у вас UWP или все же WP 8.1?

    UWP на WP 8.1 нет, а класс выше указан на MSDN как поддерживаемый на всех версиях WP:

    https://msdn.microsoft.com/en-us/library/microsoft.phone.shell.phoneapplicationservice%28v=vs.105%29.aspx?f=255&MSPPError=-2147217396


    This posting is provided "AS IS" with no warranties, and confers no rights.

    Ну похоже что uwp . Я когда проект создаю у меня создаются 2 проекта один для телефона и и один для ПК . А тот клсс что вы указали студяи понять не может что за класс, но то класс что я указал в своем вопросе студия видит нормально, но видимо я как то не так его юзаю и приложение через минуту всеравно отключается из-за блокировки экрана.
    26 октября 2016 г. 0:15
  • Здравствуйте,

    Для UWP необходимо использовать RequestActive из DisplayRequest class

    Windows.System.Display.DisplayRequest KeepScreenOnRequest = new Windows.System.Display.DisplayRequest();
    
    KeepScreenOnRequest.RequestActive();





    Если Вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку "Предложить как ответ" или "Проголосовать за полезное сообщение" Мнения, высказанные здесь, являются отражение моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.

    • Предложено в качестве ответа Azat Tazayan 26 октября 2016 г. 6:21
    26 октября 2016 г. 6:13
  • Для более подробной информации почитайте здесь.

    Make the community better together

    26 октября 2016 г. 6:22
  • Эмм я так  и делаю. Хорошо тогда у меня вопрос 

    есть конструктор 

     public App()
            {
                this.InitializeComponent();
                this.Suspending += this.OnSuspending;
            }
    Есть событие Suspending и если я подпишусь на него  и в подписанном методе вызову 

    var displayRequest = new Windows.System.Display.DisplayRequest(); displayRequest.RequestActive();

    Этим я добьюсь того чтобы приложение не уходило в фоновый режим ?

    Или там какое то другое событие для этих целей используется ?

    Сейчас не могу проверить к сожалению, студия гонит чтото :(


    • Изменено Timur2008 26 октября 2016 г. 14:12
    26 октября 2016 г. 14:01
  • Нет, в ссылках, которые мы Вам предоставили все описанно. Прочитайте еще раз в блоге, который Вам предоставил Азат:

    private Windows.System.Display.DisplayRequest _displayRequest;
    
    public void ActivateDisplay()
    {
        //create the request instance if needed
        if (_displayRequest == null)
            _displayRequest = new Windows.System.Display.DisplayRequest();
    
        //make request to put in active state
        _displayRequest.RequestActive();
    }
    
    public void ReleaseDisplay()
    {
        //must be same instance, so quit if it doesn't exist
        if (_displayRequest == null)
            return;
    
        //undo the request
        _displayRequest.RequestRelease();
    }


    Если Вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку "Предложить как ответ" или "Проголосовать за полезное сообщение" Мнения, высказанные здесь, являются отражение моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.

    • Помечено в качестве ответа Timur2008 27 октября 2016 г. 8:11
    27 октября 2016 г. 7:03
  • Я прочитал , но всеравно не понимаю :( Там написано что бы приложение не ушло фоновую задачу нужно к нему постоянно обращаться (точнее к экрану). Но я не понимаю тогда в какие моменты эти обращения нужно делать :( Я понял код который указан в том блоге , но как его применить видимо не понимаю тогда :( 
    Я пытался этот код помещать в методе и вызывать его в MainPage конструкторе но это не срабатывает :( 

    Либо как вообще отследить что приложение пытается уйти в фоновый режим ? 

    Все заработало!!1! Ошибка была в том что надо было переменную объвить глобальной private DisplayRequest AppDisplayRequest; и все ок будет . блин Maksim Marinov и Azat Tazayan Жили б вы Томске я бы вам пиваса проставил бы в Засаде. Спасибо!!!
    • Изменено Timur2008 27 октября 2016 г. 8:11
    27 октября 2016 г. 7:27
  • Не за что Тимур, рад что Вам самому удалось найти ошибку в своем примере :)

    Если Вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку "Предложить как ответ" или "Проголосовать за полезное сообщение" Мнения, высказанные здесь, являются отражение моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.

    27 октября 2016 г. 11:04