我正在为我的网站制作一个Android应用程序。它有一些有点像播客的视频。我希望应用程序能够在用户锁定屏幕或使用其他应用程序时在后台播放音频。为实现这一目标,我有一个WebView。为了提供上述功能,我尝试在活动中使用PARTIAL_WAKE_LOCK。这仅在屏幕锁定时继续播放音频,而在按下主页按钮时(即在后台)不播放。这个问题有解决方法吗?
答案 0 :(得分:0)
如果您希望自己的应用继续运行音频,即使它位于后台,您必须在Separate Service.
此服务将继续运行即使应用程序转到后台或回来。 如果应用程序被杀,您甚至可以编写一个粘性服务来继续运行(前景为true)。
答案 1 :(得分:0)
您应该使用Android服务播放与您的活动无关的音乐。请看这个例子:
这是我的Android服务类:
class MusicService extends Service implements OnCompletionListener {
MediaPlayer mediaPlayer;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
mediaPlayer = MediaPlayer.create(this, R.raw.s);// raw/s.mp3
mediaPlayer.setOnCompletionListener(this);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (!mediaPlayer.isPlaying()) {
mediaPlayer.start();
}
return START_STICKY;
}
public void onDestroy() {
if (mediaPlayer.isPlaying()) {
mediaPlayer.stop();
}
mediaPlayer.release();
}
public void onCompletion(MediaPlayer _mediaPlayer) {
stopSelf();
}
}
这是活动:
public class MusicActivity extends Activity implements OnClickListener {
Button startPlaybackButton, stopPlaybackButton;
Intent playbackServiceIntent;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
startPlaybackButton = (Button) this.findViewById(R.id.StartPlaybackButton);
stopPlaybackButton = (Button) this.findViewById(R.id.StopPlaybackButton);
startPlaybackButton.setOnClickListener(this);
stopPlaybackButton.setOnClickListener(this);
playbackServiceIntent = new Intent(this,MusicService.class);
}
public void onClick(View v) {
if (v == startPlaybackButton) {
startService(playbackServiceIntent);
finish();
} else if (v == stopPlaybackButton) {
stopService(playbackServiceIntent);
finish();
}
}
}
请不要忘记在清单文件中添加服务:
<service android:enabled="true" android:name=".services.MusicService" />