2012-05-29 2 views
6

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

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

  • WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
  • WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD

с BroadCaseReciever об этих событиях:

  • Intent.ACTION_SCREEN_ON
  • Intent.ACTION_SCREEN_OFF
  • Intent.ACTION_USER_PRESENT

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

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

Можете ли вы, ребята, связать мне образец, который реализует эту особенность?

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

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

+0

Посмотреть это сообщение: http://stackoverflow.com/questions/4065201/android-how-can-i-programmatically-draw-text-on-key-guard-screen-lock-screen Но, может быть, с тех пор 4.0 это возможно, иначе Player Pro использует свой собственный API – Guillaume

+0

, что вы имеете в виду под «своим собственным API»? Кстати, у других игроков есть одна и та же функция (например, PowerAmp), поэтому я думаю, что это не что-то, что разработали ребята PlayerPro. –

+0

Возможно, это фрагмент диалога с использованием шоу при заблокированном флаге? EDIT: также есть FLAG_SPLIT_TOUCH, который позволяет касатьться за окном, чтобы он был перенесен в это окно, если у него есть флаг ... Похоже, что сочетание этих двух может позволить ему –

ответ

7

Я думаю, вы, возможно, ищете Audio Controls «Удаленный просмотр» (RemoteControlClient) API, добавленный в Android 4.0 (API уровня 14). Я нашел the RemoteControlClient API в Android документации для разработчиков, которые:

позволяет разоблачение информации, предназначенную для потребления с помощью пульта дистанционного управления, способного отображать метаданные, произведение искусство и средства массовой информации кнопки управления транспортом.

(Это было связано офф this page.)

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

+0

+1 Это определенно то, что он ищет, и что он должен использовать для собственной интеграции с экраном блокировки. – kcoppock

+0

yeee ... наконец, ответ, который я искал. +1 и щедрость. Я знал, что есть API, но я не мог его найти. Большое спасибо, я так счастлив, что смогу, наконец, реализовать этот lockscreen: D. –

+0

Рад помочь и удачи :) – scorpiodawg

1

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

  • WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
  • WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL

У не использование 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> 

Что это делает делает вашу деятельность полностью увидеть через и обруча содержания.

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

Cheers.

+0

Вы уже реализовали его таким образом? потому что я попробовал, и как только я вставил android: windowIsFloating to true, я не могу заставить Activity показать вверху keyguard, даже если я установил FLAG_SHOW_WHEN_LOCKED –

+0

, я также попытался поместить TYPE_KEYGUARD_DIALOG в качестве типа окна, но ничего не изменилось. –

+0

Здравствуйте, Zaid-Daghestani, у вас есть решение для этого? http://stackoverflow.com/questions/33466950/creating-a-real-lockscreen-module-for-android –