एक ACTION_MEDIA_BUTTON इरादे के साथ एक SendOrderedBroadcast भेजते समय (मैं अनुकरण कर रहा हूं कि उपयोगकर्ता ब्लूटूथ हेडसेट पर प्ले बटन पर क्लिक कर रहा है), Google Play Music अग्रभूमि संगीत बजाने वाले ऐप के बजाय खेला गया अंतिम एल्बम खुलता है और बजाता है।क्या Google Play Music सभी ACTION_MEDIA_BUTTON इरादों को हॉगिंग कर रहा है?
यदि मैं इसे Google Play Music और वर्तमान संगीत बजाने वाला ऐप (मेरे मामले में पेंडोरा) दोनों को भेजने के लिए बदलता हूं, तो प्ले बटन को लागू करेगा।
यह केवल एंड्रॉइड 4.0 और से अधिक होता है। क्या इस मकसद को एक मज़ेदार संगीत (एक बग) है? क्या आपको संदेह है कि इस सलाह के बाद पेंडोरा खुद को मौजूदा मीडिया बटन हैंडलर के रूप में पंजीकृत नहीं कर रहा है: http://android-developers.blogspot.com/2010/06/allowing-applications-to-play-nicer.html
क्या कोई तरीका है कि मैं इस उद्देश्य को वर्तमान संगीत बजाने वाले ऐप पर ही निर्देशित कर सकता हूं?
public void broadcastMediaIntent(MediaIntent intentType){
long eventtime = SystemClock.uptimeMillis();
Intent downIntent = new Intent(Intent.ACTION_MEDIA_BUTTON, null);
Intent upIntent = new Intent(Intent.ACTION_MEDIA_BUTTON, null);
KeyEvent downEvent = null;
KeyEvent upEvent = null;
switch(intentType){
case NEXT:
downEvent = new KeyEvent(eventtime, eventtime,
KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_NEXT, 0);
upEvent = new KeyEvent(eventtime, eventtime,
KeyEvent.ACTION_UP, KeyEvent.KEYCODE_MEDIA_NEXT, 0);
break;
case PLAY_PAUSE:
downEvent = new KeyEvent(eventtime, eventtime,
KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE, 0);
upEvent = new KeyEvent(eventtime, eventtime,
KeyEvent.ACTION_UP, KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE, 0);
break;
case PREVIOUS:
downEvent = new KeyEvent(eventtime, eventtime,
KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_PREVIOUS, 0);
upEvent = new KeyEvent(eventtime, eventtime,
KeyEvent.ACTION_UP, KeyEvent.KEYCODE_MEDIA_PREVIOUS, 0);
break;
case FAST_FORWARD:
downEvent = new KeyEvent(eventtime, eventtime,
KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_FAST_FORWARD, 0);
upEvent = new KeyEvent(eventtime, eventtime,
KeyEvent.ACTION_UP, KeyEvent.KEYCODE_MEDIA_FAST_FORWARD, 0);
break;
case REWIND:
downEvent = new KeyEvent(eventtime, eventtime,
KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_REWIND, 0);
upEvent = new KeyEvent(eventtime, eventtime,
KeyEvent.ACTION_UP, KeyEvent.KEYCODE_MEDIA_REWIND, 0);
break;
default:
break;
}
downIntent.putExtra(Intent.EXTRA_KEY_EVENT, downEvent);
sendOrderedBroadcast(downIntent, null);
upIntent.putExtra(Intent.EXTRA_KEY_EVENT, upEvent);
sendOrderedBroadcast(upIntent, null);
}
http://code.google.com/p/android/issues/detail?id=23272 – joepetrakovich