我正在运行一个应用程序,我需要播放存储在URL某处的音频。
在播放url之前,我想将播放按钮的图像更改为暂停。
我很难在参考文献中做到这一点。
UI在URL上播放音频后改变,需要5-10秒才能播放服务器URL。如何在播放音频前更改按钮的图像?
谁能告诉我为什么会发生这种情况,可能的解决方案是什么?
请查看我的代码:-
((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): Using default keymap:/system/usr/keychars/qwerty.kcm.bin06-21 17:15:21.910: I/System.out(1005): 0000000000000006-21 17:15:21.910: I/System.out(1005): 222222222206-21 17:15:22.080: D/dalvikvm(1005): GC_FOR_MALLOC在65ms内释放了3592个对象/199296个字节06-21 17:15:26.140: D/MediaPlayer(1005):无法在客户端打开文件,尝试在服务器端
这可能是因为你正在使用
mediaPlayer.prepare();
你最好使用async方法:
mediaPlayer.asyncPrepare();
这将不会冻结你的应用程序,你的图标将立即改变。
编辑:
mp.setDataSource(url);
mp.setOnPreparedListener(this);
mp.prepareAsync();
public void onPrepared(MediaPlayer player) {
mp.start();
}