El título hace que este sonido sea mucho más simple de lo que es ... Estoy intentando transmitir un intento que pausará a la mayoría de los reproductores de música.Pausa confiablemente Reproducción multimedia en todo el sistema en Android
Sé que puedo utilizar para crear un KeyEvent que difundirá KEYCODE_MEDIA_PLAY_PAUSE con esto:
long eventTime = SystemClock.uptimeMillis();
Intent downIntent = new Intent(Intent.ACTION_MEDIA_BUTTON, null);
KeyEvent downEvent = new KeyEvent(eventTime, eventTime, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE, 0);
downIntent.putExtra(Intent.EXTRA_KEY_EVENT, downEvent);
ctx.sendOrderedBroadcast(downIntent, null);
y que funciona. Pausará el reproductor multimedia original como yo quiero, junto con la mayoría de los otros reproductores de música compatibles con los botones reproducir/pausa de los auriculares. Pero por alguna razón, solo funciona una vez con el reproductor de música en stock. Puedo presionar el botón para llamar a esto y pausará la música. Si comienzo a reproducirlo nuevamente y presiono el botón de pausa nuevamente, no funciona. Una vez que reinicie el dispositivo, funcionará una vez más. Pero luego, con Pandora, funciona de manera consistente como debería.
Pensé que podría ser capaz de evitar eso y hacer una pausa sin usar un KeyEvent. Intenté esto con AudioManager y otra intención:
AudioManager mAudioManager = (AudioManager) ctx.getSystemService(Context.AUDIO_SERVICE);
if (mAudioManager.isMusicActive()) {
Intent mediaIntent = new Intent("com.android.music.musicservicecommand");
mediaIntent.putExtra("command", "pause");
ctx.sendBroadcast(mediaIntent);
}
Y esto también funciona, y funciona constantemente. Pero es intrínsecamente frágil, porque al enviar el intento directamente al reproductor de música de Android, es el único jugador con el que trabajará. No tengo control de Pandora, Last.FM, etc. y necesito que funcione con la mayoría de los reproductores de música.
No estoy seguro de a dónde ir después. No soy exigente con respecto al tipo de solución que recibo, siempre y cuando funcione. Si puedes ayudarme a hacer funcionar el KeyEvent, fantástico, si tienes una solución totalmente diferente, fantástico. ¡Solo quiero que funcione! ¡Gracias!
Todo lo que hagas aquí será "inherentemente frágil". Además, habrá muchos reproductores multimedia que ignorarán por completo este evento. Y es muy posible que algún día el sistema operativo comience a bloquear los eventos 'ACTION_MEDIA_BUTTON' falsificados de la misma forma que bloquean otros eventos simulados similares. Si está escribiendo su propio reproductor multimedia, use las funciones de enfoque de audio en 'AudioManager' para adquirir el enfoque de audio. – CommonsWare
No estoy escribiendo mi propio reproductor multimedia. Sé que hay muchas aplicaciones completamente funcionales en la Play Store que detendrán la música después de un tiempo determinado, pero no estoy particularmente contento con ninguna de ellas. Solo estoy tratando de escribir mi opinión sobre una, y necesito poder pausar la mayoría de las aplicaciones de música. – Geniusdog254