Ich entwickle eine Unterhaltungs-App für Android. Ich möchte Hintergrundmusik abspielen und dafür den Dienst nutzen. App hat 3 Aktivitäten und Musik muss über alle Aktivitäten gespielt werden. Wenn die Aktivität angehalten wird, muss die Musik PAUSE sein und angehalten werden, wenn sie zerstört wird. Kann mir jemand sagen, wie das geht? irgendwelche links oder beispiele?
Vielen Dank.
Mach es ohne Service
http://www.rbgrn.net/content/307-light-racer-20-days-61-64-completion
Wenn Sie es so ernst meinen , machen Sie es mit Diensten , die mediaplayer verwenden
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() {
}
}
Rufen Sie diesen Dienst in Manifest auf Stellen Sie sicher, dass am Ende der .BackgroundSoundService-Zeichenfolge kein Leerzeichen steht
<service Android:enabled="true" Android:name=".BackgroundSoundService" />
viel zu spät für die Party hier, aber ich werde noch meine $ 0,02 hinzufügen, hat Google ein kostenloses Beispiel namens Universal Music Player veröffentlicht, mit dem Sie lernen können, Musik über alle Android Plattformen zu streamen (auto, watch , mobile, tv ..) es benutzt service um musik im hintergrund abzuspielen, schaut es euch sehr hilfreich an. hier ist der link zum projekt
https://github.com/googlesamples/Android-UniversalMusicPlayer
Die Antwort von @ Synxmax ist korrekt, wenn eine Service
und die MediaPlayer
-Klasse verwendet werden. Sie müssen jedoch auch die Service
im Manifest deklarieren, damit dies funktioniert.
<service
Android:enabled="true"
Android:name="com.package.name.BackgroundSoundService" />
ich hatte ein Problem mit der Ausführung und ich habe einige Änderungen vorgenommen, um es mit mp3-Quelle auszuführen. hier ist BackfrounSoundService.Java
Datei. Beachten Sie, dass sich meine MP3-Datei auf meiner SD-Karte in meinem Telefon befindet.
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() {
}
}
Es gibt ein hervorragendes Tutorial zu diesem Thema unter HelloAndroid zu diesem Thema. Tatsächlich war es der erste Treffer, den ich auf Google bekam. Sie sollten versuchen zu googeln, bevor Sie hier nachfragen, da dies eine gute Übung ist.
Erstelle einen Vordergrunddienst mit dem START_STICKY
Flagge.
@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;
}
Dies kann dann von jeder Aktivität aus aufgerufen werden, um Musik abzuspielen
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)
Sie können mit bindService eine Bindung zum Service herstellen und den Service an den entsprechenden Aktivitätslebenszyklusmethoden anhalten/anhalten.
Hier ist ein gutes Tutorial über Abspielen von Musik im Hintergrund auf Android
Ich habe zwei großartige Ressourcen zum Teilen gefunden. Wenn jemand über Google auf diesen Thread stößt, kann dies hilfreich sein (2018). Eines ist dieses Video-Tutorial, in dem Sie praktisch sehen werden, wie der Service funktioniert. Dies ist gut für Anfänger.
Link: - https://www.youtube.com/watch?v=p2ffzsCqrs8
Andere ist diese Website, die Ihnen wirklich mit Hintergrund-Audio-Player helfen wird.
Link: - https://www.dev2qa.com/Android-play-audio-file-in-background-service-example/
Viel Glück :)