1

我正在运行一个应用程序,我需要在其中播放存储在 URL 某处的音频。

在播放网址之前,我想将播放按钮的图像更改为暂停。

我很难在参考中做。

一旦在 URL 上播放音频,用户界面就会发生变化,播放服务器 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());
    }
}

下面是我在播放声音之前的 logcat。

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-2 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 回答