6

过去 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 来执行此操作?

你们可以链接我一些实现此特定功能的示例吗?

提前致谢 ;)

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

4

2 回答 2

7

我想您可能正在寻找 Android 4.0(API 级别 14)中添加的音频控制“远程视图”(RemoteControlClient)API。我在 Android 开发者文档中找到了以下RemoteControlClientAPI :

使能够显示元数据、艺术作品和媒体传输控制按钮的遥控器能够公开信息。

(它是从这个页面链接的。)

注意:我自己从未使用过这个 API,所以如果这对你不起作用,我深表歉意。

于 2012-06-08T18:03:28.803 回答
1

你几乎做对了。继续做你对广播接收器所做的事情。这就是要走的路。对于 Window,这些是您需要使用的标志:

  • 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>

这样做的目的是让您的活动完全看穿和包装内容

现在,您的 Activity 应该位于锁定屏幕的顶部,允许对锁定屏幕和您的应用进行触摸输入,而您的 Activity 不是全尺寸。

干杯。

于 2012-06-05T09:26:30.900 回答