为什么播放音乐的Android服务不起作用?

时间:2016-01-31 22:09:14

标签: java android android-studio

我对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。

我可能错过了一些明显的东西,有人可以指出它和/或提供有关如何在未来更好地做到这一点的任何提示吗?提前谢谢。

2 个答案:

答案 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();
}

并确保音乐文件位于正确的文件夹(原始)