我对Android开发相对较新,我正试图在Android Studio中制作一款我想要播放背景音乐的游戏。这是我的服务代码:
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.backgroundmusic);
player.setLooping(true); // Set looping
player.setVolume(100,100);
}
public int onStartCommand(Intent intent, int flags, int startId) {
player.start();
return 1;
}
public IBinder onUnBind(Intent arg0) {
// TO DO Auto-generated method
return null;
}
public void onStop() {
player.pause();
}
public void onPause() {
}
@Override
public void onDestroy() {
player.stop();
player.release();
}
@Override
public void onLowMemory() {
player.pause();
}
}
在我想要初始化backgroundmusic
的活动中Intent svc=new Intent(this, BackgroundSoundService.class);
startService(svc);
放在onCreateMethod中。当我打开我呼叫服务播放音乐的活动时,没有任何反应,完全沉默。
有关更多详细信息:backgroundmusic文件采用.mp3格式,我测试的手机是运行最新版Marshmallow的Nexus 6。
我可能错过了一些明显的东西,有人可以指出它和/或提供有关如何在未来更好地做到这一点的任何提示吗?提前谢谢。
答案 0 :(得分:0)
尝试添加prepare-Listener:
player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
public void onPrepared(MediaPlayer mp) {
Log.d(TAG, "preparation Completed ...playing ");
player.start();
}
});
我认为setVolume默认使用float处理(0 = off,1 = max)。检查您的日志输出。有时MediaPlayer会报告错误代码。
编辑/第二种方法:
您是否已将此行添加到清单(应用内标记内)?
<application
... >
<service android:name="BackgroundSoundService" android:enabled="true"></service>
答案 1 :(得分:0)
尝试使用这段代码在启动时运行音乐
public class start extends Activity {
MediaPlayer intro;
@Override
protected void onCreate(Bundle Start) {
// TODO Auto-generated method stub
super.onCreate(Start);
setContentView(R.layout.start);
intro = MediaPlayer.create(start.this,R.raw.SONGNAME);
intro.start();
Thread timer = new Thread() {
public void run() {
try {
sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
Intent openStart = new Intent("com.example.main.MAIN");
startActivity(openStart);
}
}
};
timer.start();
}
@Override
protected void onPause() {
super.onPause();
intro.release();
finish();
}
并确保音乐文件位于正确的文件夹(原始)