这个问题通常是由于Android的后台进程限制导致的。为了解决它,我们需要在MediaPlayer中使用Service来启动播放器和音频流,并将其与已启动的Service一起使用,从而使它在后台播放。
以下是一个简单的播放器示例代码,它使用Service来播放音频:
首先,在AndroidManifest.xml中声明你的Service:
然后,创建AudioService类来启动播放器:
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;
public class AudioService extends Service {
private MediaPlayer mediaPlayer;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
mediaPlayer = MediaPlayer.create(this, R.raw.audio_file); //替换为你自己的音频文件
mediaPlayer.setLooping(true); //设置循环播放
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
mediaPlayer.start();
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
mediaPlayer.stop();
mediaPlayer.release();
}
}
在你的Activity中启动AudioService,然后将其绑定到你的Activity中:
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private AudioService audioService;
private ServiceConnection serviceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
AudioService.LocalBinder binder = (AudioService.LocalBinder) iBinder;
audioService = binder.getService();
}
@Override
public void onServiceDisconnected(ComponentName componentName) {
audioService = null;
}
};
@Override