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" />