2012-05-29 45 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 –