0

私は Android ゲームを開発していて、イントロ用にバックグラウンド ミュージックを再生しています (イントロ アクティビティがあります) が、次のアクティビティまで再生を続け、おそらくアプリケーション内のどこからでも音楽を停止または再生できるようにしたい.

これを行うためにServiceクラスを作成しました

すべてが正常に機能していますが、必要なのは、ユーザーが音楽を停止したときにメディアプレーヤーが getCurrentPosition(); を保存することだけです。これで、seekTo(msec); でカウントされた音楽を再生できます。

重要な点は、ユーザーが音楽を途中で停止した場合、音楽は最初から開始されないことです (ユーザーが音楽を一時停止して音楽を続行できるようなものです)。

私が使う

startService(new Intent(this, MyService.class));

音楽を始める

そして私は使用します

stopService(new Intent(this, MyService.class));

音楽を止める

これは私の MyService クラスです

public class MyService extends Service {
    private static final String TAG = "MyService";
    MediaPlayer player;

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
        Toast.makeText(this, "My Service Created", Toast.LENGTH_LONG).show();
        Log.d(TAG, "onCreate");

        player = MediaPlayer.create(this, R.raw.game_music3);
        player.setLooping(false); // Set looping

    }

    @Override
    public void onDestroy() {
        Toast.makeText(this, "My Service Stopped", Toast.LENGTH_LONG).show();
        Log.d(TAG, "onDestroy");
        player.stop();
    }

    @Override
    public void onStart(Intent intent, int startid) {
        Toast.makeText(this, "My Service Started", Toast.LENGTH_LONG).show();
        Log.d(TAG, "onStart");
        player.start();
    }

    protected void onNewIntent() {
        player.pause();
    }
}

不明な点がある場合は、私の質問にコメントしてください。詳しく説明します。助けてくれてありがとう

4

1 に答える 1

0

音楽トラックの現在位置を に保存してみませんSharedPreferencesか?

Android のドキュメントでストレージ オプションを確認してください。

于 2013-05-02T20:59:14.453 に答える