1

URL のどこかに保存されているオーディオを再生する必要があるアプリケーションを実行しています。

URLを再生する前に、再生ボタンの画像を一時停止に変更したい。

私は参照でやろうとするのに苦労しました。

URL でオーディオを再生した直後に UI が変更され、サーバー URL の再生に 5 ~ 10 秒かかります。オーディオを再生する前にボタンの画像を変更するにはどうすればよいですか。

なぜこれが起こっているのか、そして考えられる解決策は何なのか、誰か説明してください。

私のコードを見てください:-

((Button)v).setBackgroundResource(R.drawable.pause);
                PlayPauseBtn.setId(1);

                Toast.makeText(RadioActivity.this, "Loading...", Toast.LENGTH_LONG).show();
                MediaController.mediaPlayStart(R.raw.acoustic_loop_bgm,
                        RadioActivity.this.getApplicationContext());


public static void mediaPlayStart(int resourcesId,final Context m_Context) {
    try {
        mp = new MediaPlayer();

        mp.setDataSource(m_Context, Uri.parse(Contants.audioURL));
        mp.prepare();
        mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
        mp.setLooping(true);

        try {
            mp.start();
        } catch (Exception e) {
            // TODO: handle exception
        }
    } catch (Exception e) {
        // TODO: handle exception
        System.out.println("#####THE EXCEPTION IN THE MEDIA PLAYER PLAY==="+e.getMessage());
    }
}

以下は、サウンドを再生する前のログキャットです。

06-21 17:15:17.661: W/KeyCharacterMap(1005): No keyboard for id 0

06-21 17:15:17.661: W/KeyCharacterMap(1005): デフォルトのキーマップを使用: /system/usr/keychars/qwerty.kcm.bin 06-21 17:15:21.910: I/System.out(1005): 00000000000000 06-21 17:15:21.910: I/System.out(1005): 2222222222 06-21 17:15:22.080: D/dalvikvm(1005): GC_FOR_MALLOC は 3592 オブジェクト/199296 バイトを 65ms で解放した 06-21 15:26.140: D/MediaPlayer(1005): クライアント側でファイルを開けませんでした。サーバー側を試してください

4

1 に答える 1

5

使っているからかもしれません

mediaPlayer.prepare();

非同期メソッドを使用することをお勧めします:

mediaPlayer.asyncPrepare();

これによりアプリケーションがフリーズすることはなく、アイコンがすぐに変更されます。

編集 :

mp.setDataSource(url); 
mp.setOnPreparedListener(this);
mp.prepareAsync();

public void onPrepared(MediaPlayer player) {
    mp.start();
}
于 2013-06-21T09:57:46.217 に答える