How to capture key events from bluetooth headset with android -


my app can controlled normal headset. overrides "onkeydown". key events bluetooth headset not captured - why? or how capture bluetooth key events?

the "log cat" shows following if press button on headset:

bluetooth @ recv(3043): at+vgs=15 audiopolicymanagerbase(13654): fm radio recording off audioservice(2261): sendvolumeupdate, iskeyguardlocked...not update volume panel. volumepanel(2261): change volume msg_volume_changed volumepanel(2261): onvolumechanged(streamtype: 6, flags: 0) volumepanel(2261): call setchangeseekbarcolor(false) 

i tried handle media button actions isn't working. idea free configurable key mapping: user chooses "set key" app hears on keys (hardware, media buttons, bluetooth headset) user presses key , event/key code stored in config.

summerizing not working answers: volume buttons must captured "volume_changed_action". problem intents broadcasted other apps , abortbroadcast() doesn't work (it works "ordered" broadcasts). problem keys on cable headset , on phone trigger onreceive() twice (why?) bluetooth headset trigger once. next problem 3rd key on bluetooth headset. triggers voice-command (s-voice starts on s3), tried capture many different intents regarding can't "receive" button press , don't know why. @ end want capture kinds of buttons , don't want them handled other apps (like using onkeydown , returning true).

add broadcast listener media_button:

<intent-filter android:priority="<some number>">     <action android:name="android.intent.action.media_button" />  </intent-filter>  

you should register broadcast receiver inside application (not in manifest file). otherwise google music player catch broadcast , aboard it.

your intentfilter priority should higher other media players priorities in phone)

add android.permission.bluetooth permission in manifest support bluetooth headset

after received key have manually abort broadcast using abortbroadcast().

however priorities , abortbroadcast() work fine long each app responds while e.g. played. several users expect "default player" launched (or start playing) upon button press, default player, might happen app higher priority number won't let intent come through app

in onreceive, can button event

keyevent key = (keyevent)  intent.getparcelableextra(intent.extra_key_event);  

key.getkeyaction() tells whether button released or pressed, key.getkeycode() tells button pressed.

if want handle single button cable headsets well, regard key code keycode_headsethook

override onkeydown method in activity , check keyevent.keycode_media_keycode_pressed_key

e.g.

 boolean onkeydown(int keycode, keyevent event) {              audiblereadyplayer abc;              switch (keycode) {              case keyevent.keycode_media_fast_forward:                      // code fast forward                      return true;              case keyevent.keycode_media_next:                      // code next                      return true;              case keyevent.keycode_media_play_pause:                      // code play/pause                      return true;              case keyevent.keycode_media_previous:                      // code previous                      return true;              case keyevent.keycode_media_rewind:                      // code rewind                      return true;              case keyevent.keycode_media_stop:                      // code stop                      return true;              }              return false;      }  

volume key integration example android - volume buttons used in application
1 may need permission

<uses-permission android:name="android.permission.modify_audio_settings" /> 


or can try slimier implementations on following link

android developer blog : handling remote control buttons
android tales : add headset button support android application


Comments

Popular posts from this blog

javascript - DIV "hiding" when changing dropdown value -

Does Firefox offer AppleScript support to get URL of windows? -

android - How to install packaged app on Firefox for mobile? -