2012-05-29 20 views
6

Szukałem ostatnich 2 dni na SW, Google i tak dalej. Szukam sposobu na zaimplementowanie działania, które pochodzi z natywnego ekranu blokowania Androida ICS, jak pokazano na poniższych ekranach. Te ekrany pochodzą z Player Pro, ale zauważyłem, że również inni gracze (na przykład PlayerPro) mają tę samą funkcję, która wygląda dokładnie tak samo, dlatego uważam, że jest to coś natywnego lub przynajmniej istnieje powszechny sposób jego implementacji.Android natywny ekran blokady ICS

tej pory mam tylko udało się dostać i aktywność, która zastąpi lockscreen użyciu tych znaczników:

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

z BroadCaseReciever o tych wydarzeniach:

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

Moim problemem jest to, że chcę moją aktywność być pokazany z LockScreen nie zastąpienie go. Czy wiecie, jak to osiągnąć?

Czy jest tam ukryty interfejs API, aby to zrobić?

Czy możecie mi powiązać próbki, które implementują tę konkretną funkcję?

z góry dzięki;)

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

+0

Zobacz ten post: http://stackoverflow.com/questions/4065201/android-how-can-i-programmatically-draw-text-on-key-guard-screen-lock-screen Ale może od 4.0 jest to możliwe, w przeciwnym razie Player Pro użyje własnego API – Guillaume

+0

co masz na myśli mówiąc o "własnym API"? nawiasem mówiąc, inni gracze mają tę samą funkcję (na przykład PowerAmp), więc myślę, że to nie jest coś opracowane przez graczy PlayerPro. –

+0

Czy jest to może fragment okna dialogowego używający pokazu po zablokowaniu flagi? EDYCJA: wydaje się również, że FLAG_SPLIT_TOUCH umożliwia przeniesienie elementów poza tym oknem do tego okna, jeśli ma flagę na ... Wygląda na to, że kombinacja tych dwóch może pozwolić na to –

Odpowiedz

7

Wygląda na to, że prawdopodobnie szukasz interfejsu API "Zdalny widok" Audio Controls (RemoteControlClient) dodanego w systemie Android 4.0 (poziom API 14). Znalazłem the RemoteControlClient API w Android docs deweloperskich że:

umoĹĽliwia narażając informacji oznaczało być spożywane przez pilotów zdolnych do wyświetlania metadanych, grafiki i multimediów przyciski sterowania transportem.

(To był związany off this page.)

Uwaga: Nigdy nie używałem tego API siebie, więc przepraszam, jeśli to nie działa dla Ciebie.

+0

+1 Jest to zdecydowanie to, czego szuka i czego powinien używać do natywnej integracji z ekranem blokady. – kcoppock

+0

yeee ... w końcu odpowiedź, której szukałem. +1 i bounty. Wiedziałem, że istnieje API, ale nie mogłem go znaleźć. Wielkie dzięki, bardzo się cieszę, że mogę wreszcie wprowadzić ekran blokady: D. –

+0

Cieszę się, że mogę Ci pomóc i powodzenia :) – scorpiodawg

1

Już prawie robi to dobrze. Rób dalej to, co robisz z BroadcastReceiver. To jest droga. Za oknem, to są flagi trzeba użyć:

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

Czy nie użycie FLAG_DISMISS_KEYGAURD

Czynności te: SHOW_WHEN_LOCKED umożliwia wyświetlanie aktywności na górze ekranu blokady. FLAG_NOT_TOUCH_MODAL pozwala na zdarzenia dotykowe, które nie są na twojej aktywności, aby przejść do innych działań, tj. Pozwala odblokować ekran. FLAG_DISMISS_KEYGUARD pozbywa się ekranu blokady, więc nie używamy go.

Zdefiniuj ten styl w swoim res/values ​​/ styles.xml file

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

W swoim manifeście, zdefiniować swoją aktywność w stylu

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

Co to robi to sprawia, że ​​aktywność całkowicie widzieć przez i zawijania zawartości.

Teraz Twoja aktywność powinna znajdować się na górze ekranu blokady, umożliwiając wprowadzanie dotykowe na ekran blokady i do aplikacji, przy czym aktywność nie jest pełna.

Pozdrawiam.

+0

czy już to wdrożyłeś w ten sposób? ponieważ próbowałem i jak tylko dodałem androida: windowIsFloating do true i nie mogę uzyskać aktywności pokazywanej na szczycie keyguarda, nawet jeśli ustawiłem FLAG_SHOW_WHEN_LOCKED –

+0

również próbowałem ustawić TYPE_KEYGUARD_DIALOG jako typ okna, ale nic się nie zmieniło. –

+0

Witaj @ Zaid-Daghestani, czy masz rozwiązanie tego problemu? http://stackoverflow.com/questions/33466950/creating-a-real-lockscreen-module-for-android –

Powiązane problemy