Android ICS родной экран блокировки

Последние 2 дня я искал на SW, Google и так далее. Я ищу способ реализовать действие, которое поставляется с родным экраном блокировки Android ICS, как показано на экранах ниже. Эти экраны приходят изPlayer Pro но я заметил, что и другие игроки (PlayerPro например) иметь ту же функцию, которая выглядит точно так же, поэтому я думаю, что это что-то нативное или, по крайней мере, существует общий способ его реализации.

Пока мне удалось получить и Activity, которая заменяет экран блокировки, используя эти флаги:

WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD

с BroadCaseReciever на эти события:

Intent.ACTION_SCREEN_ON Intent.ACTION_SCREEN_OFF Intent.ACTION_USER_PRESENT

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

есть ли скрытый API для этого?

Ребята, не могли бы вы дать мне пример, который реализует эту особенность?

заранее спасибо ;)

enter image description here enter image description here enter image description here

 Drake Clarris29 мая 2012 г., 22:55
Может быть, это фрагмент диалога, использующий флаг «Показать при заблокированном»? РЕДАКТИРОВАТЬ: там также, кажется, есть FLAG_SPLIT_TOUCH, который позволяет переносить прикосновения за пределы окна в это окно, если у него есть флаг ... Похоже, комбинация этих двух может позволить это
 Mario Lenci30 мая 2012 г., 09:40
хорошо, я попытался, и я не могу заставить его работать, потому что я не могу показать диалог из BroadCastReciever, он выдает эту ошибку "BadTockenException: Невозможно добавить окно - токен нулевой не для приложения". Вы знаете, как получить токен блокировки экрана? это было бы решением.
 Guillaume29 мая 2012 г., 17:18
Смотрите этот пост:stackoverflow.com/questions/4065201/…  Но, возможно, начиная с 4.0 это возможно, иначе Player Pro использует свой собственный API
 Mario Lenci29 мая 2012 г., 21:13
что вы имеете в виду под "своим собственным API"? Кстати, другие игроки имеют такую же функцию (например, PowerAmp), так что я думаю, что это не что-то разработанное ребятами PlayerPro.
 Mario Lenci30 мая 2012 г., 09:46
Я также пытался использовать FLAG_SPLIT_TOUCH в своей деятельности, используя стиль диалога, но все равно он не работает, потому что, как только я установил & android: windowIsFloating & quot; для истины активность отображается после экрана блокировки. И без него не будет отображаться наложение экрана блокировки. другие идеи?

Ответы на вопрос(2)

Вы почти все делаете правильно. Продолжайте делать то, что вы делаете с BroadcastReceiver. Это путь. Для окна это флаги, которые вам нужно использовать:

WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL

Делатьnot использовать FLAG_DISMISS_KEYGAURD

Что делают эти флаги: SHOW_WHEN_LOCKED позволяет вашей активности отображаться в верхней части экрана блокировки. FLAG_NOT_TOUCH_MODAL позволяет сенсорным событиям, которые не относятся к вашей деятельности, переходить к другим действиям, т. Е. Позволяет пользователю разблокировать экран. FLAG_DISMISS_KEYGUARD избавляется от экрана блокировки, поэтому мы его не используем.

Определите этот стиль в вашем файле res / values / styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="Theme.FloatingTranslucent" parent="android:Theme.Translucent.NoTitleBar">
    <item name="android:windowIsFloating">true</item>
  </style>
</resources>

В своем манифесте определите стиль своей деятельности

<activity android:name=".SampleActivity" android:theme="@style/Theme.FloatingTranslucent">
...
</activity>

Это делает вашу деятельность полностью прозрачной иwrap content.

Теперь ваша активность должна быть в верхней части экрана блокировки, позволяя сенсорный ввод на экране блокировки и в вашем приложении, причем ваша активность не в полном размере.

Приветствия.

 Mario Lenci05 июн. 2012 г., 11:53
Вы уже реализовали это таким образом? потому что я попытался, и как только я установил для android: windowIsFloating значение true, я не смогу отобразить Activity на верхней части клавиатуры, даже если я установил FLAG_SHOW_WHEN_LOCKED
 Mario Lenci06 июн. 2012 г., 12:42
я также попытался поместить TYPE_KEYGUARD_DIALOG в качестве типа окна, но ничего не изменилось.
 01 нояб. 2015 г., 22:14
Здравствуйте @ Zaid-Daghestani, у вас есть решение для этого?stackoverflow.com/questions/33466950/…
Решение Вопроса

Я думаю, что вы, возможно, ищете для Audio Controls "удаленного просмотра" (RemoteControlClient) API добавлен в Android 4.0 (уровень API 14). я нашелRemoteControlClient API в документах для разработчиков Android:

enables exposing information meant to be consumed by remote controls capable of displaying metadata, artwork and media transport control buttons.

(Это было связано сэта страница.)

Примечание: я никогда не использовал этот API сам, поэтому я прошу прощения, если это не работает для вас.

 12 июн. 2012 г., 00:31
Рад быть полезным и удачи :)
 Mario Lenci11 июн. 2012 г., 10:23
дааа ... наконец-то ответ, который я искал. +1 и щедрость. Я знал, что существует API, но не смог его найти. Большое спасибо, я так счастлив, что наконец-то смог реализовать этот экран блокировки: D.
 08 июн. 2012 г., 20:07
+1 Это определенно то, что он ищет, и что он должен использовать для встроенной интеграции с экраном блокировки.
 26 июл. 2014 г., 03:24
Примечание. Образец больше не доступен на портале для разработчиков.

Ваш ответ на вопрос