【发布时间】:2013-05-13 18:26:35
【问题描述】:
我正在开发一个简单的游戏,其中 3 个活动(菜单、设置和排名列表)需要一个背景音乐,即使用户离开菜单并进入设置然后返回也应该在后台流畅播放。
为此,我创建了完美运行的服务。只有一个主要问题:当应用程序关闭时(例如用户按下主页按钮),音乐不会停止播放。
我尝试过 onDestroy、onStop、onPause 但问题没有解决。
服务:
package com.android.migame;
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.IBinder;
public class Meni_music extends Service implements OnCompletionListener {
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.menu);
player.setLooping(true); // Set looping
}
public int onStartCommand(Intent intent, int flags, int startId) {
player.start();
return 1;
}
public IBinder onUnBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onDestroy() {
player.stop();
player.release();
stopSelf();
}
@Override
public void onLowMemory() {
}
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
}
}
菜单:
package com.android.migame;
import android.app.Activity;
import android.app.ActivityManager;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
public class Meni extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setContentView(R.layout.meni);
startService(new Intent(Meni.this,Meni_music.class));
}
@Override
protected void onPause() {
super.onPause();
}
@Override
protected void onResume() {
super.onResume();
}
}
【问题讨论】:
-
在
onPause(),在activity中,调用service中的一个方法告诉它停止播放。类似于您服务中的OnDestroy()。 -
onPause 每次我去另一个活动(如设置)时都会被调用。我创建服务是因为我希望音乐在多个服务中流畅播放。
-
你说得对。将它添加到主页按钮可能吗?因此,当按下键并且在家时,停止。
-
我不认为你可以玩弄主页按钮。 stackoverflow.com/questions/4783960/…
-
onDestroy(){ stopService(new Intent(Meni.this,Meni_music.class)) }
标签: android android-music-player