0

音楽アプリを開発しています。

プレーヤーを一時停止したいのですが、再開すると、その時点から開始されます。

Music.java

public class Music {

    private static MediaPlayer mp = null;

    public static void play(Context context,int resource){
        stop(context);
        mp = MediaPlayer.create(context, resource);
        mp.setLooping(true);
        mp.start();
    }

    static void stop(Context context) {
        if(mp != null){
            mp.stop();
            mp.release();
            mp = null;
        }
    }
}

Sミュージックアクティビティ

public class SMusicActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Button btnplay = (Button)findViewById(R.id.play);
        btnplay.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                onResume();
            }
        });

        Button btnstop = (Button)findViewById(R.id.pause);
        btnstop.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                onPause();
            }
        });
    }

    @Override
    protected void onResume() {
        super.onResume();
        Music.play(this,R.raw.govind_bolo);
    }

    @Override
    protected void onPause() {
        super.onPause();
        Music.stop(this);
    }
}

停止ボタンを一時停止して再生したい。コーディングはしましたが、ご存知のように完璧なものは得られませんでした..では、これにPlayやPauseなどの操作をどのように組み込むことができますか。

4

2 に答える 2

2

静的な音楽ファサードを取り除きます。アクティビティで実際のMediaPlayerを使用し、

  • 一度だけインスタンス化する(onCreate)
  • ボタンがクリックされたときに再生および一時停止するために配置します
  • mediaPlayer.isPlaying()で、プレーヤーを実際に再生または一時停止できることを確認してください。このオブジェクトを使用するときに尊重する状態図があります。状態の詳細と特定の状態からの許可された遷移については、 javadocを参照してください。
于 2012-04-11T11:09:14.707 に答える
0

「private int currentPosition」のようなローカル変数を作成し、次を使用します。

    btnplay.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            mp.seekTo(currentPosition);
            onResume();
        }
    });

    Button btnstop = (Button)findViewById(R.id.pause);
    btnstop.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
        currentPosition = mp.getCurrentPosition();
            onPause();
        }
    });
于 2013-01-25T13:26:50.777 に答える