i'm implement audio recorder bluetooth speaker. bluetooth speaker have media button such play/pause, next, previous. trigger play button record , press again stop. problem when using maudiomanager.startbluetoothsco() using bluetooth microphone record, media_button receiver not working anymore, can't receive event.
below sourcecode: register receiver:
((audiomanager) getsystemservice(audio_service)).registermediabuttoneventreceiver( new componentname( this, mediabuttonreceiver.class.getname()));
mediabuttonreceiver:
@override public void onreceive(context context, intent intent) { log.d("mediabuttonreceiver", "onreceive media button!" ); keyevent key = (keyevent) intent.getparcelableextra(intent.extra_key_event); log.d("mediabuttonreceiver", "media button! action: [" + key.getaction() + "] key code: [" + key.getkeycode() + "]"); if(key.getaction() == keyevent.action_up) { int action = fromkeycodetoaction(key.getkeycode()); switch (action) { case action_start_stop_talking: logutils.logd("mediabuttonreceiver", "action start/stop"); startstoprecord(); break;
... handle logic in hear check current status record or not. , trigger service start or stop record. , code start record.
if (isbluetoothheadsetconnected) { logutils.logi("bluetooth", "record using headset"); //we start recording when audio state connected mcontext.registerreceiver(mbluetoothaudiostatebroadcastreceiver, mbluetoothaudiostateintentfilter); logutils.logi("bluetooth", "startbluetoothsco"); maudiomanager.startbluetoothsco(); maudiomanager.setbluetoothscoon(true); } else { logutils.logi("bluetooth", "record "); maudiomanager.setmode(audiomanager.mode_normal); maudiomanager.setbluetoothscoon(false); handlestartrecordjob(); }
if remove startbluetoothsco(), receiver work normal, app using device mic instead of bluetooth speaker. if don't remove, receiver not working anymore , can't stop recorder. have solution work arround?
Comments
Post a Comment