如何在Android上播放stream式audio?

我有一个Android应用程序,使用MediaPlayer类从Internet播放stream式audio。

当用户点击主页button来运行其他应用程序时,如何让它继续在后台播放audio?

在运行其他应用程序时,我希望它继续播放audio。

Solutions Collecting From Web of "如何在Android上播放stream式audio?"

你必须使用一些名为Android服务。

从文档:

“服务是一个应用程序组件,代表应用程序希望执行长时间运行的操作,而不与用户交互或为其他应用程序提供function的应用程序”。

以下是使用服务帮助您入门的最佳官方指南: http : //developer.android.com/guide/components/services.html

这是一个很好的教程build立一个audio播放器: http : //www.androidhive.info/2012/03/android-building-audio-player-tutorial/

以下是制作stream式音乐播放器的video教程: http : //www.youtube.com/watch?v = LKL -efbiIAM

您需要实施服务才能在后台播放媒体,而不会将其与开始播放的活动绑定。 看看这个例子 。

关键是定义Service.START_STICKY继续在后台播放:

  public int onStartCommand(Intent intent, int flags, int startId) { myMediaPlayer.start(); return Service.START_STICKY; } 

Service.START_STICKY :如果此服务的进程在启动时被终止,系统将尝试重新创build服务。

这是做这个的一个例子:

 import android.app.Service; import android.content.Intent; import android.media.MediaPlayer; import android.os.IBinder; import android.util.Log; import android.widget.Toast; /** * Created by jorgesys. */ /* Add declaration of this service into the AndroidManifest.xml inside application tag*/ public class BackgroundSoundService extends Service { private static final String TAG = "BackgroundSoundService"; MediaPlayer player; public IBinder onBind(Intent arg0) { Log.i(TAG, "onBind()" ); return null; } @Override public void onCreate() { super.onCreate(); player = MediaPlayer.create(this, R.raw.jorgesys_song); player.setLooping(true); // Set looping player.setVolume(100,100); Toast.makeText(this, "Service started...", Toast.LENGTH_SHORT).show(); Log.i(TAG, "onCreate() , service started..."); } public int onStartCommand(Intent intent, int flags, int startId) { player.start(); return Service.START_STICKY; } public IBinder onUnBind(Intent arg0) { Log.i(TAG, "onUnBind()"); return null; } public void onStop() { Log.i(TAG, "onStop()"); } public void onPause() { Log.i(TAG, "onPause()"); } @Override public void onDestroy() { player.stop(); player.release(); Toast.makeText(this, "Service stopped...", Toast.LENGTH_SHORT).show(); Log.i(TAG, "onCreate() , service stopped..."); } @Override public void onLowMemory() { Log.i(TAG, "onLowMemory()"); } } 

开始服务:

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

停止服务:

 Intent myService = new Intent(MainActivity.this, BackgroundSoundService.class); stopService(myService); 

这个例子的完整代码。