2012-05-17 3 views
6

У меня есть служба Media Player, которая играет в интернет-поток, но у меня возникают проблемы с отображением в моем xml процент буферизации, на данный момент я просто показываю сообщение, так как все пути, которые я попробовал, дали мне статическое длинное число. Вот код из службы игрока:Android, как отображать буферизацию% from onBufferingUpdate

@Override 
public void onBufferingUpdate(MediaPlayer mp, int percent) { 
    setBufferPosition(percent * getMusicDuration()/100); 
    myMain.EstadoRadio.setText(" Reproductor \n Buffering... "); 
} 

как вы можете сказать EstadoRadio текстовый вид в моем XML, который работает от деятельности myMain, где я хочу, чтобы отобразить буферную% потока. Спасибо за помощь.

EDIT: Я видел сокровенные случаев, когда используется «процент» от onBufferingUpdate (MediaPlayer ммк, внутр процента), что-то вроде этого:

myMain.EstadoRadio.setText(" Reproductor \n" + percent + "%"); 

, но в моем случае процентов всегда -2147483648, я не знаю, почему, и почему она не меняется или обновление, здесь немного из моего журнала кошки:

05-17 13:34:37.005: V/MediaPlayer(25382): message received msg=3, ext1=-2147483648, ext2=0 
05-17 13:34:37.005: V/MediaPlayer(25382): buffering -2147483648 
05-17 13:34:37.005: V/MediaPlayer(25382): callback application 
05-17 13:34:37.005: V/MediaPlayer(25382): getDuration 
05-17 13:34:37.015: V/MediaPlayer(25382): back from callback 
05-17 13:34:38.016: V/MediaPlayer(25382): message received msg=3, ext1=-2147483648, ext2=0 
05-17 13:34:38.016: V/MediaPlayer(25382): buffering -2147483648 
05-17 13:34:38.016: V/MediaPlayer(25382): callback application 
05-17 13:34:38.016: V/MediaPlayer(25382): getDuration 
05-17 13:34:38.016: V/MediaPlayer(25382): back from callback 

ответ

3

номер, который вы видите, это минимальное значение бита междунар подписано 32. Я бы предпочел и сказал, что Android не может вернуть процент и фактически дает вам данные мусора.

Я бы заменить свой интернет поток с удаленным mp3 URL, чтобы увидеть, если буферизация получает реальное значение обратно

EDIT (как это подтвердит, остальная часть кода не виноват.): В Android документации относительно OnBufferingUpdateListener объясняет пример использования для прогрессивной загрузки HTTP, а не бесконечного интернет-потока.

Я не считаю, что способность отображать процент буферизации доступна с помощью встроенных прослушивателей в Android. Не взламывая исходный код Android, чтобы узнать, в какой момент класс MediaPlayer решит начать воспроизведение вашего потока (и если он даже обеспечит обратный вызов), я сомневаюсь, что этот вопрос будет разрешен.

Тем не менее, я был бы заинтересован в решении/обходном пути, если кто-нибудь сможет его предоставить.

http://en.wikipedia.org/wiki/Integer_(computer_science)

http://developer.android.com/reference/android/media/MediaPlayer.OnBufferingUpdateListener.html

+0

так есть способ получить buferring% от живого потока? – zvzej

+0

@zvzej Я обновил свой ответ с тем, что считаю верным. Я бы хотел связать этот отчет об ошибке [ошибка 832] (http://code.google.com/p/android/issues/detail?id=832). Извините, я не могу предоставить фактическое решение. – stevokk

 Смежные вопросы

  • Нет связанных вопросов^_^