Вот есть скажем bluetoh-гарнитура. На ней кнопки "следующий трек", "предыдущий трек, "пауза/играть дальше". Она общается с телефоном, отдавая некие команды текущему (!) играющему плееру. Но как это повторить?
Интересует совместимость с 2.3.3 и выше.
Пробовал два варианта. Первый работает только с дефолтным плеером и не на всех телефонах.
Intent i = new Intent("com.android.music.musicservicecommand");
i.putExtra("command" , key ); //key - "togglepause","next","previous"
context.sendBroadcast(i);
Второй работает на всех телефонах, но если установлено несколько плееров - управляет не текущим, а только одним из них, по какому принципу выбирается плеер - понятия не имею. Т.е., если играет иной плеер - он ставится на паузу, а команду отдаются совершенно другому, который и запускается.
long eventtime = SystemClock.uptimeMillis() - 1;
//key - это KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE, KeyEvent.KEYCODE_MEDIA_NEXT, KeyEvent.KEYCODE_MEDIA_PREVIOUS
Intent downIntent = new Intent(Intent.ACTION_MEDIA_BUTTON, null);
KeyEvent downEvent = new KeyEvent(eventtime, eventtime, KeyEvent.ACTION_DOWN, key, 0);
downIntent.putExtra(Intent.EXTRA_KEY_EVENT, downEvent);
context.sendOrderedBroadcast(downIntent, null);
eventtime++;
Intent upIntent = new Intent(Intent.ACTION_MEDIA_BUTTON, null);
KeyEvent upEvent = new KeyEvent(eventtime, eventtime,KeyEvent.ACTION_UP, key, 0);
upIntent.putExtra(Intent.EXTRA_KEY_EVENT, upEvent);
context.sendOrderedBroadcast(upIntent, null);
Вот, ищу универсальную возможность, работающую стабильно.