2012-05-29 74 views
6

我一直在尋找過去兩天的軟件,谷歌等。我正在尋找一種方法來實施原生Android ICS鎖屏所帶來的活動,如下面的屏幕所示。 這些屏幕來自Player Pro,但我注意到其他玩家(例如PlayerPro)具有相同的功能,看起來完全相同,這就是爲什麼我認爲它是本機或至少是某種東西,有一個常見的方法來實現它。Android的ICS原生鎖屏

到目前爲止,我只設法獲取和活動,使用這些標誌更換鎖屏:

  • 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

+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

這可能是一個使用顯示鎖定標誌時的對話框片段?編輯:也似乎有一個FLAG_SPLIT_TOUCH,允許在窗口外面的觸摸轉移到該窗口,如果它有標誌...看起來像這兩個組合可以讓它 –

回答

7

我想你可能正在尋找在Android 4.0(API等級14)中添加的Audio Controls「remote view」(RemoteControlClient)API。

使指由能夠顯示元數據,藝術品和媒體 傳輸控制按鈕的遙控器被消耗 曝光信息:我在Android顯影劑文檔所發現the RemoteControlClient API

(它是連結過的this page

注:我從來沒有使用這個API自己,所以我道歉,如果這並不爲你工作。

+0

+1這絕對是他正在尋找的東西,以及他應該如何與鎖屏本地整合。 – kcoppock

+0

yeee ...終於找到了我正在尋找的答案。 +1和賞金。 我知道有一個API,但我找不到它。非常感謝我很高興我終於可以實現這個鎖屏: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> 

這樣做是什麼讓你的活動完全看透和包裝內容

現在,您的活動應該位於鎖定屏幕的頂部,允許觸摸輸入到鎖定屏幕和您的應用程序,而您的活動不是完整大小。

乾杯。

+0

你是否已經實現了這種方式?因爲我試過了,只要我把android:windowIsFloating設置爲true,即使我設置了FLAG_SHOW_WHEN_LOCKED –

+0

我也嘗試將TYPE_KEYGUARD_DIALOG設置爲窗口類型,但沒有任何更改,我無法讓該活動顯示在鍵盤上。 –

+0

你好@Zaid-Daghestani你會有這個解決方案嗎? http://stackoverflow.com/questions/33466950/creating-a-real-lockscreen-module-for-android –