studio programacion para móviles libro edición desarrollo desarrollar curso aprende aplicaciones android android-service background-music android-music-player

para - manual de programacion android pdf



Servicio de música de fondo de Android (6)

Estoy desarrollando una aplicación de entretenimiento en Android. Quiero reproducir música de fondo y quiero usar el servicio para eso. La aplicación tiene 3 actividades y se debe tocar música en todas las actividades. Además, cuando la actividad está en pausa, la música debe PAUSAR y detenerse cuando se destruye. Puede alguien decirme cómo hacer esto ? cualquier enlace o ejemplos?

Gracias.


Crea un servicio en primer plano con el indicador START_STICKY .

@Override public int onStartCommand(Intent startIntent, int flags, int startId) { if (startIntent != null) { String action = startIntent.getAction(); String command = startIntent.getStringExtra(CMD_NAME); if (ACTION_CMD.equals(action)) { if (CMD_PAUSE.equals(command)) { if (mPlayback != null && mPlayback.isPlaying()) { handlePauseRequest(); } } else if (CMD_PLAY.equals(command)) { ArrayList<Track> queue = new ArrayList<>(); for (Parcelable input : startIntent.getParcelableArrayListExtra(ARG_QUEUE)) { queue.add((Track) Parcels.unwrap(input)); } int index = startIntent.getIntExtra(ARG_INDEX, 0); playWithQueue(queue, index); } } } return START_STICKY; }

Esto puede ser llamado desde cualquier actividad para tocar música

Intent intent = new Intent(MusicService.ACTION_CMD, fileUrlToPlay, activity, MusicService::class.java) intent.putParcelableArrayListExtra(MusicService.ARG_QUEUE, tracks) intent.putExtra(MusicService.ARG_INDEX, position) intent.putExtra(MusicService.CMD_NAME, MusicService.CMD_PLAY) activity.startService(intent)

Puede enlazar al servicio utilizando bindService y hacer que el servicio pause / stop de los métodos del ciclo de vida de la actividad correspondiente.

Aquí hay un buen tutorial sobre Reproducción de música en segundo plano en Android


Demasiado tarde para la fiesta aquí pero aún agregaré mis $ 0.02, Google ha lanzado una muestra gratuita llamada reproductor de música universal con la que puedes aprender a transmitir música en todas las plataformas de Android (auto, reloj, móvil, tv ...) que usa servicio para reproducir música en segundo plano, compruebalo muy útil. aquí está el enlace al proyecto
https://github.com/googlesamples/android-UniversalMusicPlayer


Hay un excelente tutorial sobre este tema en HelloAndroid respecto a este mismo tema. De hecho, fue el primer golpe que recibí en google. Debes intentar google antes de preguntar aquí, ya que es una buena práctica.


La respuesta de @ Synxmax es correcta cuando se usa un Service y la clase MediaPlayer ; sin embargo, también debe declarar el Service en el manifiesto para que esto funcione, de esta manera:

<service android:enabled="true" android:name="com.package.name.BackgroundSoundService" />


tuve problemas para ejecutarlo y realizo algunos cambios para ejecutarlo con la fuente mp3. aquí está el archivo BackfrounSoundService.java . considera que mi archivo mp3 está en mi tarjeta SD en mi teléfono.

public class BackgroundSoundService extends Service { private static final String TAG = null; MediaPlayer player; public IBinder onBind(Intent arg0) { return null; } @Override public void onCreate() { super.onCreate(); Log.d("service", "onCreate"); player = new MediaPlayer(); try { player.setDataSource(Environment.getExternalStorageDirectory().getAbsolutePath() + "/your file.mp3"); } catch (IOException e) { e.printStackTrace(); } player.setLooping(true); // Set looping player.setVolume(100, 100); } public int onStartCommand(Intent intent, int flags, int startId) { Log.d("service", "onStartCommand"); try { player.prepare(); player.start(); } catch (IOException e) { e.printStackTrace(); } return 1; } public void onStart(Intent intent, int startId) { // TO DO } public IBinder onUnBind(Intent arg0) { // TO DO Auto-generated method return null; } public void onStop() { } public void onPause() { } @Override public void onDestroy() { player.stop(); player.release(); } @Override public void onLowMemory() { } }


Hazlo sin servicio

http://www.rbgrn.net/content/307-light-racer-20-days-61-64-completion

Si eres tan serio acerca de hacerlo con servicios usando mediaplayer

Intent svc=new Intent(this, BackgroundSoundService.class); startService(svc);

public class BackgroundSoundService extends Service { private static final String TAG = null; MediaPlayer player; public IBinder onBind(Intent arg0) { return null; } @Override public void onCreate() { super.onCreate(); player = MediaPlayer.create(this, R.raw.idil); player.setLooping(true); // Set looping player.setVolume(100,100); } public int onStartCommand(Intent intent, int flags, int startId) { player.start(); return 1; } public void onStart(Intent intent, int startId) { // TO DO } public IBinder onUnBind(Intent arg0) { // TO DO Auto-generated method return null; } public void onStop() { } public void onPause() { } @Override public void onDestroy() { player.stop(); player.release(); } @Override public void onLowMemory() { } }

Llame a este servicio en Manifest Asegúrese de que no haya espacio al final de la cadena .BackgroundSoundService

<service android:enabled="true" android:name=".BackgroundSoundService" />