-1

私は2曲にしなければなりません。両方の曲にラジオボタンを使用したので、最初に選択すると最初の曲が再生され、2番目をクリックすると再生されます。2 番目の曲を再生する必要があります。再生、一時停止、停止ボタンを使用したので、最初の曲を選択して再生をクリックすると、最初の曲が再生されます。2 曲にメディア プレーヤーを使用する方法。1 つのメディア プレーヤーの使用方法。
以前、私はこのステートメントを 2 つの曲に使用しました。

mediaPlayer = MediaPlayer.create(getApplicationContext(),R.drawable.inno); 

mediaPlayer1 = MediaPlayer.create(getApplicationContext(),R.drawable.rocky); 

私の質問は、両方の曲に 1 つのメディア プレーヤーのみを使用したいということです。

4

2 に答える 2

0

このような場合は、2 つのメディアプレーヤーを使用し続けてください。問題はありません。参照を 1 つだけ使用すると、クリップを変更するたびに再作成するか、停止して setDataSource(context, URI) を呼び出す必要があります。

mediaplayer への参照を 1 つだけ使用する場合、ユーザーはクリップを再生するたびに準備が整うまで待機する必要がありますが、実装では両方のサウンド クリップをいつでも再生する準備ができています。

とにかく、ここにsetDataSourceの例があります:

MediaPlayer mp = MediaPlayer.create(context, firstSongUriOrRes);

public void play(int clip)
{
    if(mp.isPlaying())    //Stop the mediaplayer if it's already playing
        mp.stop();
    switch(clip)          //Choose the clip to be played
    {
        case 0:
            mp.setDataSource(context, firstSongUriOrRes);
            break;
        case 1:
            mp.setDataSource(context, secondSongUriOrRes);
            break;
    }
    mp.prepare();
    mp.start();           //Start the mediaplayer
}

setDataSource を使用するもう 1 つの方法は、オーディオ ファイルをアセット ディレクトリ内に配置し、次のコードを使用することです。

AssetFileDescriptor fd = context.getAssets().openFd("pathInsideAssets/fileName");
mp.setDataSource(fd.getFileDescriptor(), fd.getStartOffset(), fd.getDeclaredLength());
于 2013-09-16T15:44:42.740 に答える