Próbowałem też zaimplementować wykrywanie naciśnięcia przycisku głośności w mojej aplikacji i zostawiłem to część zostanie opracowana później po zakończeniu głównej części. Udało mi się wykryć naciśnięcie klawisza głośności, gdy ekran jest włączony, nawet gdy telefon jest zablokowany, z usługi w tle.
Nagrywarka wideo w tle 2 (BVR2) (i możliwe, że BVR1 również, nie próbowałem) jest jedną z aplikacji, która wykrywa naciśnięcie klawisza głośności, nawet gdy ekran jest wyłączony. Próbując zaimplementować wykrywanie klucza głośności, gdy ekran jest wyłączony w mojej aplikacji, zainstalowałem BVR2, mając nadzieję, że dowiem się, jak to działa. Ku mojemu zaskoczeniu dało to mojej aplikacji możliwość wykrycia klawiszy głośności, nawet gdy ekran jest wyłączony. Moja aplikacja miała ContentObserver do monitorowania zmian głośności, ale nie działała, gdy ekran jest wyłączony. Gdy funkcja BVR2 jest aktywna, moja aplikacja może również wykrywać naciśnięcie klawisza głośności, gdy ekran jest wyłączony. Wciąż kopie.
Ale BVR2 ma własne działanie wyzwalacza, czyli nagrywanie wideo, działanie, którego może nie chcieć wystąpić tylko ze względu na to, że aplikacja wykrywa naciśnięcia klawiszy objętości.
Inną aplikacją jest QuickClick. Ta aplikacja może dać Twojej aplikacji to, czego jej brakuje, moc wykrywania naciśnięć klawiszy, nawet gdy ekran jest wyłączony, bez dodatkowych niechcianych działań. Po prostu zainstaluj QuickClick i nie konfiguruj żadnej akcji. Utwórz ContentObserver
, aby monitorować zmiany głośności strumienia i jesteś gotowy. Twoja aplikacja będzie teraz mogła wykrywać naciśnięcia przycisków głośności, nawet gdy ekran jest wyłączony.
Należy pamiętać, że moja aplikacja działa jako usługa w tle.
Obie wyżej wymienione aplikacje są przeznaczone do innych zastosowań, ale do wykonania działania wykorzystuje wykrywanie klucza głośności. Nie jestem w żaden sposób połączony z żadną z wymienionych aplikacji.
Jeśli te aplikacje i prawdopodobnie dziesiątki innych osób mogą wykrywać naciśnięcie klawisza głośności, można to zrobić.Poproszę ekspertów, aby dowiedzieli się, jak to zrobić, abyśmy mogli wdrożyć w naszej aplikacji bez polegania na innej aplikacji.
Jeśli uważasz, że ta odpowiedź jest przydatna, przeprowadź głosowanie w górę.
Czy masz jakieś przykłady czegoś, co wydaje się to robić, co sugeruje, że jest to możliwe? Poza ograniczonym przypadkiem, w którym działa procesor aplikacji, ale ekran jest wyłączony, czy jest jakieś wskazanie, że jądro się obudziło i uświadomiło sobie, że klawisz został naciśnięty? Gdyby nie potrzebne były modemy sprzętowe lub co najmniej radiowe. Tylko wtedy, gdy/jądro zda sobie sprawę z kluczowego zdarzenia może stać się problemem w przekonaniu platformy, aby twój kod o tym wiedział. –
Niestety nie. Jedyne, o czym mogę pomyśleć, to mediaplayer. Zaczynam wierzyć, że mój pomysł jest tak prosty, jak to tylko możliwe (sprawdź powiadomienia bez konieczności wyjmowania telefonu z kieszeni, po prostu naciskając przycisk głośności, który spowoduje, że urządzenie będzie wibrować, jeśli oczekują powiadomienia) po prostu zbyt skomplikowane, by je stworzyć. –
Czy dioda LED zwykle nie miga, jeśli na pasku stanu pojawiają się nowe powiadomienia, w tym niestandardowe z aplikacji innych firm? –