我實現了一個mediaplayer和mediacontroller,流的MP3網址。然而,我在TMobile網絡上的設備不能獲得很好的3G信號,因此它在EDGE上運行。我假設mediaplayer崩潰,因爲流太慢或不完整,有沒有超時我可以設置?android媒體播放器媒體控制器超時
3
A
回答
0
的確Mediaplayer確實需要一些時間來緩衝和緩慢的網絡,可能會導致問題。
你不能控制這個過程,沒有用戶設置超時,但你可以通過捕獲所有異常,如setDataSource(),prepare(),prepareAsync()和start()可以拋出。
1
您還可以在MediaPlayer上使用prepare()而不是prepareAsync(),並將其放入asyncTask或工作線程中;那麼你可以自己實現超時功能。稍後我會添加一個代碼示例,但我認爲這個想法很明確。
3
沒有超時方法在MediaPlayer,但你可以自己實現 - 有很多方法可以做到這一點。 我建議他們中的一個,我用我自己和它的工作對我來說 - 廣播接收器 代碼看起來像:
public class ConnectivityCheckingReceiver extends WakefulBroadcastReceiver
{
private AlarmManager alarmManager;
private PendingIntent pendingIntent;
@Override
public void onReceive(Context context, Intent intent)
{
if (MusicService.mediaPlayer != null)
{
if (!MusicService.mediaPlayer.isPlaying())
Log.v("Music", "Music is NOT playing");
//stop service and notify user
else
Log.v("Music", "Music is playing");
}
else
{
Log.v("Music", "User stopped player");
}
}
public void setAlarm (Context context, int hour, int minute, int second)
{
alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, ConnectivityCheckingReceiver.class);
pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, hour);
calendar.set(Calendar.MINUTE, minute);
calendar.set(Calendar.SECOND, second);
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
}
}
在你的活動/服務/片段添加此行:
ConnectivityCheckingReceiver conCheck = new ConnectivityCheckingReceiver();
conCheck.setAlarm(context, hour, min, second);
您將需要自己實施小時/分鐘/秒檢查邏輯,但是可以使用像Joda Time這樣的庫輕鬆完成。 不要忘記添加到您的清單:
<uses-permission android:name="android.permission.WAKE_LOCK" />
<receiver android:name=".receivers.ConnectivityCheckingReceiver" />
PS,我的解決方案並不完美,但我還沒有看到這個問題的任何好的答案,如果找到了,請分享。
相關問題
- 1. 控制Android媒體播放器
- 2. Android媒體播放器流媒體
- 3. 媒體播放器控件
- 4. Android媒體播放器
- 5. Android媒體播放器庫
- 6. Android媒體播放器seekbar
- 7. Android媒體播放器bug
- 8. Android媒體播放器setdatasource
- 9. RTSP Android媒體播放器
- 10. Pywinauto控制媒體播放器
- 11. Android媒體播放器不播放
- 12. Android媒體控制器
- 13. 媒體播放器的監聽器 - Android
- 14. Android的HTTP流媒體播放器的URL使用媒體播放器
- 15. vb6 Windows媒體播放器
- 16. HTML5/JS媒體播放器
- 17. Crossbrowser媒體播放器
- 18. Silverlight媒體播放器
- 19. C#。 Windows媒體播放器
- 20. 停止媒體播放器
- 21. 媒體播放器異常
- 22. 媒體播放器問題
- 23. 媒體播放器問題
- 24. 停止媒體播放器
- 25. 使媒體播放器
- 26. 帶有Firebase多媒體文件的Android媒體播放器
- 27. 在Android媒體播放器中流媒體
- 28. Android媒體播放器流媒體 - 現在工作它不
- 29. C#:媒體播放器控件(Trackbar/Sliders/..)
- 30. jQuery媒體播放器控件
這個答案很好,但是我正在尋找與媒體播放器api本身有關的東西...... – 2015-03-21 01:34:18