[android] 블루투스 헤드셋의 마이크가 활성화되면 ACTION_MEDIA_BUTTON을 받을 수 없다.

[android] 블루투스 헤드셋의 마이크가 활성화되면 ACTION_MEDIA_BUTTON을 받을 수 없다.

넥서스 7 2세대에서는 BroadcastReceiver에서 블루투스 헤드셋의 ACTION_MEDIA_BUTTON 액션을 바로 받을 수 있지만, 어지간한 다른 폰에서는 AudioManager의 registerMediaButtonEventReceiver() 를 이용해야 한다.
예제 : https://code.google.com/p/media-button-router

 

그래서 만약 내가 원하는 게 KeyEvent. KEYCODE_MEDIA_PREVIOUS 라면, 다른 키가 들어왔을 때는 그대로 forward를 하고, 내가 원하는 신호일 때는 내가 원하는 동작을 하게 할 수 있다.
하지만 문제는 내가 원하는 작업이 블루투스 마이크 녹음이라면, 이 방법도 불가능해진다.

 

원인은 AudioManager의 startBluetoothSco() 가 호출되면 블루투스 헤드셋에서는 미디어 버튼에 속하는 재생/정지, 이전, 다음 버튼을 눌러도 아무런 신호를 보내주지 않는다.
(BroadcastReceiver에서 바로 신호를 받을 수 있는 넥서스 7 2세대에서도 증상은 같다)

 

예제는 여기
https://github.com/susemi99/TestBluetoothClick