2012-05-29 15 views
6

He estado buscando los últimos 2 días en SW, Google, y así sucesivamente. Estoy buscando una forma de implementar una actividad que viene con la pantalla de bloqueo nativa de Android ICS como la que se muestra en las pantallas a continuación. Esas pantallas vienen de Player Pro pero noté que también otros jugadores (PlayerPro por ejemplo) tienen la misma característica que se ve exactamente igual, es por eso que creo que es algo nativo o, al menos, hay una forma común de implementarlo.cerradura de pantalla nativa de Android ICS

Hasta ahora sólo lograron obtener y actividad que reemplace la pantalla de bloqueo usando estas banderas:

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

con un BroadCaseReciever en estos eventos:

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

Mi problema es que yo quiero que mi actividad que se muestra con la pantalla de bloqueo, no reemplazarlo. ¿Ustedes saben cómo lograr esto?

¿hay una API nativa oculta para hacer esto?

¿Pueden vincularme alguna muestra que implemente esta característica en particular?

gracias de antemano;)

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

+0

Ver este post: http://stackoverflow.com/questions/4065201/android-how-can-i-programmatically-draw-text-on-key-guard-screen-lock-screen-screen Pero, tal vez desde el 4.0 es posible, sino Player Pro usa su propia API – Guillaume

+0

¿Qué quiere decir con "su propia API"? por cierto, también otros jugadores tienen la misma característica (PowerAmp, por ejemplo), así que supongo que no es algo desarrollado por los chicos de PlayerPro. –

+0

¿Es tal vez un fragmento de diálogo que usa el indicador mostrar cuando está bloqueado? EDITAR: también parece haber un FLAG_SPLIT_TOUCH que permite que los toques fuera de la ventana se transfieran a esa ventana si tiene el indicador activado ... Parece que la combinación de estos dos podría permitirlo –

Respuesta

7

Creo que es posible que esté buscando la API "Control remoto" de Audio Controls (RemoteControlClient) agregada en Android 4.0 (API nivel 14). He encontrado the RemoteControlClient API en la documentación para desarrolladores de Android que:

permite exponer la información destinada a ser consumida por controles remotos capaces de mostrar metadatos, obras de arte y los medios botones de control de transporte.

(que estaba vinculada fuera de this page.)

Nota: Nunca he utilizado esta API a mí mismo, así que me disculpo si esto no funciona para usted.

+0

+1 Esto es definitivamente lo que está buscando, y lo que debería usar para la integración nativa con la pantalla de bloqueo. – kcoppock

+0

yeee ... finalmente la respuesta que estaba buscando. +1 y recompensa. Sabía que había una API pero no pude encontrarla. Muchas gracias, estoy tan contento que finalmente puedo implementar esa pantalla de bloqueo: D. –

+0

Me alegro de ser de ayuda y buena suerte :) – scorpiodawg

1

Ya casi haciendo bien. Sigue haciendo lo que haces con BroadcastReceiver. Ese es el camino a seguir. Por la ventana, estas son las banderas es necesario utilizar:

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

hacer no uso FLAG_DISMISS_KEYGAURD

Qué hacen estos indicadores: SHOW_WHEN_LOCKED permite que su actividad se muestre en la parte superior de la pantalla de bloqueo. FLAG_NOT_TOUCH_MODAL permite que los eventos táctiles que no están en tu actividad vayan a las otras actividades, es decir, permite al usuario desbloquear la pantalla. FLAG_DISMISS_KEYGUARD elimina la pantalla de bloqueo, por lo que no la usamos.

Defina este estilo en sus res/values ​​/ styles.archivo

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

En su manifiesto XML, defina el estilo de su actividad

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

Lo que esto hace es que hace que su actividad ver completamente a través y envoltura de contenido.

Ahora, su actividad debe estar en la parte superior de la pantalla de bloqueo, permitiendo la entrada táctil a la pantalla de bloqueo y a su aplicación, con su actividad no a tamaño completo.

Saludos.

+0

¿Ya lo implementó de esa manera? porque lo intenté y tan pronto como puse android: windowIsFloating en true no puedo hacer que Activity se muestre en la parte superior del teclado, incluso si configuré FLAG_SHOW_WHEN_LOCKED –

+0

intenté poner TYPE_KEYGUARD_DIALOG como tipo de ventana, pero no cambió nada. –

+0

Hola @ Zaid-Daghestani, ¿tienes una solución para esto? http://stackoverflow.com/questions/33466950/creating-a-real-lockscreen-module-for-android –

Cuestiones relacionadas