2012-04-21 5 views
14

내가 그들의 질문에 응답 없어 다른 사용자 인용거야이 질문에 대한 것입니다 볼륨 버튼 사용 : I가 하드웨어 볼륨 버튼을 사용하는 Andoid 응용 프로그램을 작성했습니다확인 화면이 꺼져

을 또 다른 목적.

앱이 실행 중이고 표시되면 잘 작동하지만 화면을 끄거나 시간 제한을 설정하면 버튼 클릭 수가 내 핸들러에 들지 않습니다.

화면이 꺼져있을 때 이러한 버튼 클릭을 감지하는 방법이 있는지 아는 사람 있습니까? 출처 : AV695's question

나는 볼륨 버튼을 사용합니다 응용 프로그램 자신 일하고 있어요,하지만이 사용자도 언급 한 바와 같이 화면이 꺼져되면 때 onKeyPress와 버튼을 확인하는 정상적인 동작이 작동을 멈 춥니 다. 화면에서 활동이 일시 중지되기 때문입니다.

화면이 꺼져있는 동안 활동을 계속 실행하거나 화면이 꺼져있을 때 볼륨 버튼 사용을 확인하는 방법이 있습니까? 전에 서비스를 사용해 보았지만 Commonsware에서 언급 한 것처럼 볼륨 키를 확인하는 것은 불가능합니다.

+0

이 작업을 수행하는 것으로 보이는 예가 있습니까? 그렇다면 이것이 가능할 수도 있습니다. 응용 프로그램 CPU가 실행 중이지만 화면이 꺼져있는 제한된 경우 외에 커널이 깨어나고 키가 눌 렸음을 알 수 있다는 표시가 있습니까? 하드웨어가 아니면 최소한 무선 펌웨어 개조가 필요할 것입니다. 커널이 핵심 이벤트를 알고있는 경우에만 플랫폼이 코드에 대해 알 수 있도록하는 것이 문제가 될 수 있습니다. –

+0

슬프게도 나는 그렇지 않습니다. 내가 생각할 수있는 유일한 것은 미디어 플레이어입니다. 내 생각은 간단합니다 (전화를 주머니에서 꺼내지 않고도 알림을 확인하고, 알림 대기중인 경우 기기를 진동시키는 볼륨 버튼을 누르기 만하면됩니다). 단순히 너무 복잡해서 만들 수 없습니다. –

+0

타사 앱의 맞춤 알림을 비롯하여 상태 표시 줄에 새로운 알림이있는 경우 LED가 대개 깜박이지 않습니까? –

답변

6

를 사용한다 잠자는 동안 커널의주의를 환기시킵니다.

합리적인 시스템 -ROM 수정의 범위 내에서보다 일반적인 방법은 기존 오픈 소스 ROM을 수정하여 사용자 정의 플랫폼 수준 코드를 일반적으로 전원 단추를 처리하는 데 사용하도록하는 것입니다 장치를 잠금 해제하기위한 준비 - 적어도 커널이주의를 기울이는 지 알아야합니다. 이 코드는 승인되지 않은 알림이있는 경우 소리 나 진동으로 사용자에게 알릴 수 있습니다.

사용자가 잠깐 기다리거나 장치 방향을 확인하거나 다른 키를 찾아 사용자가 장치를 자신의 주머니 밖으로 들고 잠금 해제 할 때 성가신 방법으로 피할 수 있습니다.


아니면 볼륨 키를 사용하고 단지 사람 주머니에 펌블 할 필요성을 피하고, 15 분마다 일어나 승인되지 않은 통지가있는 경우 진동 타이머를 설정할 수 없습니다.


귀하는 사용자 지정 요청의 언급 : 그것은 하나 개의 해제 또는 소량의 의미 경우, 고려해야 할 또 다른 옵션은 몇 업체가 당신이에서 푸시 알림을 수 있도록하는 SDK와에서 "블루투스 시계"가 있다는 것 안드로이드 장치.

생성 된 알림을 캡처 할 수있는 경우 사용자의 손목에 알림을 넣은 다음 다시 전화를 수면 상태로 만들 수 있습니다.

+3

광범위한 의견 감사드립니다. 슬프게도 나는이 작은 프로젝트에 대해 생각하는 것을 멈추고 앞으로 나아갈 가능성이있다. 아마도이 같은 것들이 조금 더 쉬운 곳에서 다시 시도해 볼 수있을 것이다. 그것들 중 하나였습니다. "이런, 너는 쿨한 것을 알지?" 임의의 온라인 낯선 사람에게서 아이디어의 종류, 그래서 나는 블루투스 시계 아이디어가 너무 많이 생각합니다. 아이디어를 가져 주셔서 감사합니다 :) –

+0

실제로 잠자기 모드에 의지 할 때 어떻게합니까? 일단 화면이 꺼지면 활동이 일시 중지되고 키가 전달되지 않는 것 같습니다. – ondra

-1

나는이만큼 간단 경우 확실하지 오전하지만 안드로이드 블로그 확인 :

Allowing applications to play nice(r) with each other: Handling remote control buttons

그것은 위/아래 볼륨 컨트롤 및 기타 음악 컨트롤을 수신하는 방송 수신기의 사용 설명을 . 요약

당신은 내가이 볼륨을 가지고 마지막에 수정없이 플랫폼, 커널, 또는 기본 무선 펌웨어 수준 중 하나에서 (배터리 소모 가동 잠금에 의지하지 않고) 지원되는지 의심 registerMediaButtonEventReceiver

+2

이러한 방법이 화면과 함께 작동한다고 믿을만한 이유가 있습니까? –

2

응용 프로그램이 백그라운드에서 KeyPress 자체를 듣지 않고 키를 가로 챌 수 없습니다. this question에 설명 된대로 ContentObserver를 등록 할 수 있습니다.

0

Chris Stratton이 언급했듯이 앱을 유지하는 유일한 방법은 배터리 드레 이닝 잠자기 잠금을 사용하는 것입니다.

그러나 동일한 상황에서 나 자신을 발견했기 때문에 다른 해결책을 찾았습니다. 안타깝게도 Xposed 프레임 워크뿐만 아니라 루팅 된 장치가 필요합니다.

zposed 프로세스를 대체하는 Xposed를 사용하면 시스템의 생성자와 메소드에 자신을 연결할 수 있으므로 시스템이 처리하기 전에 원시 KeyEvents를 잡을 수 있습니다.

이 작업은 PhoneWindowManager.interceptKeyBeforeQueueing()에서 수행됩니다. XC_MethodHook을 사용하면 앞서 언급 한 메서드에서 beforeHookedMethod()를 사용하여 장치가 딥 슬립 상태에 있더라도 모든 하드웨어 버튼 이벤트를 잡을 수 있습니다.

관심있는 이벤트를 포착 한 후에는 임시 깨우기 잠금 장치를 만들어 작업을 수행 할 수 있지만 작업을 마친 후에는 잠자기 잠금 장치를 해제하는 것을 잊지 마십시오.

이 작업을 수행하는 좋은 예는 Xposed Torch 모듈입니다. 그러나 뿌리를 내린 적이없는 시스템에 의존하는 경우 나쁜 소식은 배터리를 소모하지 않으면 불가능하다는 것입니다 ...

0

또한 앱에서 볼륨 버튼 누름 감지 기능을 구현하려고했지만 나중에 핵심 부품이 완성되면 나중에 개발할 부품. 배경 서비스에서 전화가 잠긴 경우에도 화면이 켜져있을 때 볼륨 키 누름을 감지 할 수있었습니다.

배경 비디오 레코더 2 (BVR2도 가능)는 화면이 꺼져 있어도 볼륨 키 누름을 감지 할 수있는 앱 중 하나입니다. 내 앱에서 화면이 꺼져있는 동안 볼륨 키 감지를 구현하는 동안 BVR2가 설치되어 작동 방법을 찾고 있습니다. 놀랍게도 화면이 꺼져 있어도 볼륨 키를 감지 할 수있는 앱을 내 앱에 제공했습니다. 내 앱에는 볼륨 변경을 모니터링하는 ContentObserver가 있지만 화면이 꺼지면 작동하지 않습니다. BVR2가 활성화되면 화면이 꺼져있을 때도 내 앱에서 볼륨 키 누름을 감지 할 수 있습니다. 아직도 파고있어.

그러나 BVR2에는 비디오를 녹화하는 고유 한 트리거 동작이 있습니다.이 동작은 볼륨 키 누름을 감지하는 응용 프로그램에서만 발생하기를 원하지 않는 동작입니다.

다른 앱은 QuickClick입니다. 이 앱을 사용하면 앱에 부족한 부분, 화면이 꺼져 있어도 볼륨 키 누름을 감지 할 수있는 힘을 여분의 원치 않는 작업없이 제공 할 수 있습니다. QuickClick을 설치하고 아무런 조치도 취하지 마십시오. ContentObserver을 만들어 스트림 볼륨 변경을 모니터링하면 준비가 완료됩니다. 화면이 꺼져 있어도 앱에서 볼륨 키 누름을 감지 할 수 있습니다.

제 앱은 백그라운드 서비스로 실행됩니다.

위의 두 앱은 다른 용도로 사용되지만 볼륨 키 감지를 사용하여 작업을 수행합니다. 내가 언급 한 애플 리케이션의 어떤 방법으로 연결되어 있지 않습니다.

이러한 앱 및 다른 앱이 볼륨 키를 감지 할 수 있으면이를 수행 할 수 있습니다.전문가에게 다른 앱에 의존하지 않고 앱에서 구현할 수 있도록 앱을 만드는 방법을 찾아달라고 요청합니다.

이 답변이 유용하다고 생각하면 승낙하십시오.

관련 문제