Logo ko.androidermagazine.com
Logo ko.androidermagazine.com

재생 : 블루투스를 통한 재생 제어의 어려움

Anonim

직장에서, 집에서, 침대에서, 샤워 실에서 그리고 그 사이의 모든 곳에서 내가 제 정신을 유지하고 행복하게 유지하는 데 사용합니다. 음악은 나를 더 좋게 만들고 음악은 안드로이드 경험의 큰 부분이기 때문에 지난 몇 년 동안, 특히 지난 몇 개월 동안 고통스럽게 알고있는 느린 감소가있었습니다.

때로는 Bluetooth 헤드폰을 켜고 재생을했는데 아무런 반응이 없습니다. 그리고 예전보다 더 많은 일은 일어나지 않습니다.

초기 Android 시절에는 Soarin을 주머니에 넣고 (예, Samsung Captivate Glide라고 명명했습니다.) 목에 Kinivo Bluetooth 헤드폰을 꽂았습니다.Google Play 뮤직을 열 필요가 없었습니다. 헤드폰으로 재생합니다. 사실, 삼성 갤럭시 SII를 서랍에서 꺼내어 몇 달 만에 처음 부팅하고 블루투스 헤드폰과 페어링하여 재생 버튼을 눌렀습니다. 그리고 음악이 연주되었습니다.

내 안정 장치의 현재 장치에는 그리 많지 않습니다.

HTC 10은 가끔씩 블루투스 컨트롤에 따르지 않고 음악 앱에 대한 지속적인 알림 여부를 결정합니다. 오히려 Moto 360 또는 전화 자체에서 재생됩니다. HTC A9도 마찬가지로 까다 롭습니다. Nexus 5X는 때때로 지속적인 알림을 통해 음악을 백업하지 않지만 때로는 알림없이 음악을 시작합니다. Samsung S6 Edge는 재생되지만 때로는 가장 최근에 활성화 된 음악 앱을 재생하는 대신 기본적으로 사전로드 된 음악 앱으로 돌아갑니다.

여기에 계속 반복되는 단어가 있습니다. 때때로. 이는 사용중인 Android 기기, 사용중인 블루투스 기기, 기기에있는 Android 및 블루투스 버전, 재생하려는 음악 앱, 기타 변수 등 많은 변수가있는 문제이기 때문입니다. 어떤 환경에 있는지 등. 버튼을 누를 때마다 버튼이 작동하지 않는 것처럼 보이는 단순한 문제에 기여하는 것은 많은 것입니다.

실제로 여기서 무슨 일이 일어나고 있습니까? 글쎄요, 대답은 약간 – 좋아, 많이 – 기술적입니다.

버튼을 누르면 Android에서 해석되어 KeyEvents를 통해 시스템 전체에 브로드 캐스트됩니다. 헤드셋의 다음 버튼은 KeyEvent를 통해 KEYCODE_MEDIA_NEXT로 해석되어 전달됩니다. 다른 버튼 또는 동일한 버튼에 대해 다양한 값을 가져올 수 있습니다. 대부분의 헤드셋에서 재생 버튼은 일시 중지 버튼이기도하므로 장치와 현재 상태에 따라 키가 KEYCODE_MEDIA_PAUSE, KEYCODE_MEDIA_PLAY 또는 KEYCODE_MEDIA_PLAY_PAUSE를 반환 할 수 있습니다. 그건 그렇고, 당신이 일시 정지를 치고 당신이보고 / 듣고있는 것이 일시 중지 된 동안 다른 곳에서 음악이 시작된 경우, 이것은 두 개의 앱에 의해 수신되어 작동했기 때문에 KeyEvent입니다.

KeyEvents가 해석되면 BroadcastReceiver 인 텐트를 통해 미디어 버튼을 듣고있는 음악 앱에서 여전히 들려야합니다. 결국, 앱이 KeyEvent를 볼 수 없으면 작동 할 수 없습니다. 앱의 수신기가 버튼 누름을 수신하지 못하는 것이 있으면 위에서 설명한 간헐적 문제를 포함하여 여러 가지 방법으로 재생 컨트롤을 엉망으로 만들 수 있습니다. Audio Focus (Android가 특정 시간에 오디오를 재생할 수있는 앱을 결정하는 방법)를 잃을 때 앱이 BroadcastReceiver를 너무 빨리 등록 취소하면 음악을 일시 중지하면 청취가 중단되고 버튼을 누르는 소리가 들리지 않을 수 있습니다 다시 연주를 시작합니다. 그렇기 때문에 미디어 앱이 Audio Focus와 BroadcastReceiver를 올바르게 처리하여 장치가 전자를 잃어버린 경우에도 후자를 잃지 않도록하는 것이 중요합니다.

헤드셋의 버튼을 누를 때 음악 앱이 얼마나 잘 프로그램되어 있고 장치에서 어떤 미디어 버튼이 브로드 캐스트되고 있는지에 대한 정보가 많이 있습니다. 즉, 기기를 구매할 때 재생 제어 기능이 일관된 경우에도 앱 업데이트 나 시스템 업데이트로 인해 청취 중지 속도가 변경 될 수 있습니다.

Google Play 뮤직과 같은 앱의 경우 최신 업데이트가 점점 더 빈번 해지고 있습니다. 대부분의 휴식 시간은 빠르게 수정되지만 다른 휴식 시간은 몇 달이 걸릴 수 있습니다. Bluetooth에서 음악이 제대로 시작되지 않는 등의 간헐적 인 문제는 기록 및 식별이 어려워 수정이 더 느려질 수 있습니다.

음악 앱에 오디오 포커스가없고 포 그라운드 서비스로 실행되지 않는 경우 (미디어 플레이어에 대한 지속적인 알림이없는 경우) Android 시스템 (특히 Doze) 또는 소위 "리소스 -saving "앱은 다른 활동을 위해 메모리를 확보하기 위해 앱을 종료시킬 수 있습니다. 그런 경우에는 수신기가 열려 있고 명령을 수신하지 않기 때문에 재생을 누르면 아무 것도 수행되지 않을 수 있습니다.

이제 재생 컨트롤을 손상시킬 수있는 몇 가지 사항이있는 것처럼이를 수정하기위한 옵션도 있습니다.

첫 번째 솔루션은 약간 극단적이지만 사용자가 소프트웨어에 대한 근본적인 변경없이 현재 휴대폰에서 구현할 수있는 몇 안되는 솔루션 중 하나입니다. Tasker 및 AutoInput과 같은 앱을 사용하여 버튼 누름을 감지하고 원래 KeyEvent 동작을 억제 한 다음 하나의 앱을 직접 목표로하는보다 전문화 된 (일관된) 명령을 수행 할 수 있습니다. 예를 들어, 재생 버튼이 수십 개의 미디어 서비스에서 선택하거나 무시할 수있는 일반적인 재생 미디어 명령이 아니라 Google Play 뮤직과 관련된 재생 / 일시 정지 전환 명령으로 다시 매핑하여 다른 앱이 대신 시작하십시오.

이 작업은 프로그래밍하기가 지루할 수 있으며 원래 작업을 억제하고이를 대체하여 YouTube 또는 Netflix와 같은 다른 앱에서 사용할 수있는 기본 일시 정지 버튼을 해제합니다. 요컨대, 기술이 아닌 사용자 나 다양한 미디어 앱을 사용하는 사용자에게는 그다지 유용한 솔루션이 아닙니다.

많은 전화에는 카메라의 홈 / 전원을 두 번 누르거나 깨우기 위해 두 번 누르는 것과 같이 설정에서 켜거나 끌 수있는 제스처와 버튼 동작이 있습니다. 이 목록에 Bluetooth 컨트롤을 추가하면 길어지고 복잡해질 수 있지만, Android 시스템이 수신기를 수신하거나 수신하지 않는 모든 기기에 일반 신호를 브로드 캐스트하는 대신 KeyEvent를 인식하여 특정 앱으로 보내면 일관성을 유지할 수 있습니다. 예를 들어 자동차의 Bluetooth에 연결된 경우 지정된 음악 앱을 켜는 Moto Assist를 여는 등의 장치에서이 작업을 수행했습니다.

Android가 미디어 버튼을 처리하는 방식을 변경하고 Bluetooth 컨트롤러 및 키보드가 자체 문제로 실행됨에 따라 버튼 입력을 처리하는 방식으로 해결하면 새로운 문제가 많이 발생할 수 있지만 가능한 장소 수를 고려할 수 있습니다. 현재 시스템에서 잘못되면 새로운 오믈렛을 만들기 위해 계란을 깨는 것이 좋습니다.

하루가 끝나면 일상적인 사용자는 주요 명령, 수신기 및 현재 오디오 포커스가있는 앱을 파고 들지 않습니다. 우리는 음악 자체에 초점을 맞추고 음악이 필요한 곳을 원합니다. 그리고 처음 시도 할 때 시끄럽고 붐비는 장소에서 제 정신을 유지하는 음악을 켤 수 없다면 나는 행복한 소녀가 아닙니다. 그리고 나는 내가 유일한 사람이 아니라고 확신합니다.

링크를 사용하여 구매 수수료를받을 수 있습니다. 자세히 알아보십시오.