2015-01-13 4 views
0

В моем приложении я передаю файлы Mp3 с сервера. Потоковая передача и загрузка работают отлично. Но проблема в поиске в медиаплеере,Android Музыкальный плеер seekto (pos) Воспроизведение музыки при неправильной позиции

как у меня есть 2 мин. Mp3, если я загрузил его и играю, угадайте буферизацию, переходите на 100%, после воспроизведения 50% (означает около 1 мин) , мы ищем 25% (на 30 секунд), Игрок начнет с 10 секунд, это очень странное поведение музыкального плеера

Я пробовал много, но я не могу получить какое-либо решение здесь я расстраивает сейчас, пожалуйста, помогите мне спасибо в adavance

Мой код ниже

Инициировать

MediaPlayer mPlayer = new MediaPlayer(); 

mPlayer.setWakeMode(_context, PowerManager.PARTIAL_WAKE_LOCK); 
mPlayer.setOnPreparedListener(this); 
mPlayer.setOnCompletionListener(this); 
mPlayer.setOnErrorListener(this); 
mPlayer.setOnInfoListener(this); 
mPlayer.setOnBufferingUpdateListener(this); 

musicseekbar =(SeekBar)findViewById(R.id.seekbar); 
     currenttime = (TextView)findViewById(R.id.runningtime); 
     totaltime = (TextView)findViewById(R.id.totaltime); 
     setSeekbar(); 


try { 
    mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
} catch (Exception e) { 
} 
mPlayer.setDataSource(manualUrl); 
mPlayer.prepareAsync(); 

Прочее Stuf

 private void setSeekbar() { 
     // TODO Auto-generated method stub 
     musicseekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { 

      @Override 
      public void onStopTrackingTouch(SeekBar seekBar) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void onStartTrackingTouch(SeekBar seekBar) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void onProgressChanged(SeekBar seekBar, int progress, 
        boolean fromUser) { 
       // TODO Auto-generated method stub 

       if (fromUser) { 

        if (mPlayer != null && mPlayer.isPlaying()) { 
         MusicSeekto(progress,Globals.PlayerDuration); 
         seekBar.setProgress(progress); 
        } 
       } 
      } 
     }); 
    } 

    public void setSeekBarpositionDetail(int position,int currenttime1,int totaltime1) { 
     // TODO Auto-generated method stub 
     if (musicseekbar != null) { 
      musicseekbar.setProgress(currenttime1); 
     } 
    } 


    public void setPlayerInfo(int duration) { 

     musicseekbar.setMax(duration); // set maximum here 
    } 


    public void MusicSeekto(int i, int playerDuration) { 
     // TODO Auto-generated method stub 

     if (mPlayer != null) { 
      mPlayer.seekTo(i); //problem is here , I get here exact "i", but seekto(pos) does't start from that position. 

     } 
    } 

     public void primarySeekBarProgressUpdater() { 

     if (mPlayer != null) { 
      stop = (int) (((float) mPlayer.getCurrentPosition()/Globals.PlayerDuration) * 100); 

      setSeekBarpositionDetail(stop, mPlayer.getCurrentPosition(), mPlayer.getDuration()); 
     } 

     if (mPlayer != null) { 
      if (mPlayer.isPlaying()) { 

       notification = new Runnable() { 
        public void run() { 
         primarySeekBarProgressUpdater(); 
        } 
       }; 
       handler.postDelayed(notification, 100); 
      } 
     } 
    } 

    @Override 
    public void onPrepared(MediaPlayer mp) { 
     // TODO Auto-generated method stub 
     playerstarting(); 
     primarySeekBarProgressUpdater(); 
    } 

    private void playerstarting() { 
     // TODO Auto-generated method stub 

     if (mPlayer != null) { 
      mPlayer.start(); 
     } 
     Globals.PlayerDuration = mPlayer.getDuration(); 
     changingImage(false); 
     setPlayerInfo(mPlayer.getDuration());// seekbar value passing from here 
    } 

ответ

0

MediaPlayer.seekto не берет процент. Требуется миллисекунды. Тем не менее, вы проходите в процентах. Это не сработает. Попробуйте проголосовать

((float)(i*mPlayer.getDuration()))/100.0 
+0

У меня нет никакого процента, я установил максимальное количество очков в поиске. и там я получаю в miliseconds, и что miliseconds ищут (pos) в музыкальном проигрывателе. я все еще получаю проблемы. –

+0

У вас нет кода, который вы разместили здесь. Вы можете опубликовать весь код и очистить отложенные разделы, чтобы мы могли выяснить, что происходит на самом деле. –

+0

У меня был обновленный код, а также прокомментировал эту строку, которая устанавливаетMax в поисковый барабан, пожалуйста, проверьте. Если вам нужна какая-либо дополнительная информация, сообщите мне. –

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

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