2016-03-23 22 views
0

Internet'ten akan bir medya oynatıcısına bir arama çubuğu eklemeye çalışıyorum. Ancak, bazı nedenlerle çalışmıyor. Kullanıcı arayüzünü her saniye güncellemek için bir işleyici kullanıyorum. İşte altta benim kodudur:Android SeekBar ilerleme çalışmıyor?

public class MainActivity extends AppCompatActivity { 
MediaPlayer mediaPlayer; 
boolean isPrepared = false; 
ImageButton imageButton; 
Handler handler; 
SeekBar seekBar; 
TextView notifying; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    mediaPlayer = new MediaPlayer(); 
    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
    imageButton = (ImageButton) findViewById(R.id.imageButton); 
    seekBar = (SeekBar) findViewById(R.id.seekBar); 
    notifying = (TextView) findViewById(R.id.notifying); 

    handler = new Handler(); 
    final Runnable runnable = new Runnable() { 
     @Override 
     public void run() { 

      if (mediaPlayer != null) { 
       int mCurrentPosition = mediaPlayer.getCurrentPosition()/1000; 
       Log.i("message", mCurrentPosition + ""); 
       seekBar.setProgress(mCurrentPosition); 

      } 
      handler.postDelayed(this, 1000); 
     } 
    }; 
    handler.postDelayed(runnable, 1000); 


    try { 
     mediaPlayer.setDataSource("Any mp3 souund from the internet"); 


    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
     @Override 
     public void onPrepared(MediaPlayer mp) { 
      Log.i("message", "prepared"); 
      isPrepared = true; 
     } 
    }); 
    mediaPlayer.prepareAsync(); 
    seekBar.setMax(mediaPlayer.getDuration()); 
} 

public void play(View view) { 
    if (!mediaPlayer.isPlaying() && isPrepared == true) { 
     Log.i("message", isPrepared + ""); 
     Log.i("message", mediaPlayer.isPlaying() + ""); 
     Log.i("message", (mediaPlayer.getDuration()/1000)/60 + ""); 
     mediaPlayer.start(); 
     imageButton.setImageResource(R.drawable.pause); 

    } else { 

     mediaPlayer.pause(); 
     imageButton.setImageResource(R.drawable.play); 
    } 
} 

public void stop(View view) { 
    if (mediaPlayer != null & mediaPlayer.isPlaying()) { 
     mediaPlayer.pause(); 
     mediaPlayer.seekTo(0); 

     imageButton.setImageResource(R.drawable.play); 
    } 
} 

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    if (mediaPlayer != null) { 
     mediaPlayer.release(); 
     mediaPlayer = null; 

    } 
} 

cevap

1

Im emin değilim ama bu deneyin:

koymak preperalistener callback'inde içinde bu çizgiyi böyle

seekBar.setMax(mediaPlayer.getDuration()); 

:

mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
     @Override 
     public void onPrepared(MediaPlayer mp) { 
      Log.i("message", "prepared"); 
      isPrepared = true; 
      seekBar.setMax(mediaPlayer.getDuration()); 

     } 
    }); 

Ayrıca burada int mCurrentPosition = mediaPlayer.getCurrentPosition()/1000; olduğuna inanıyorum, 1000 ile bölmemelisiniz.

başka

seekBar.setMax(mediaPlayer.getDuration()/1000);

+0

mediaPlayer.setDataSource ("internetten Herhangi mp3 souund"); Mediaplayer'a bir mp3 yüklüyor musunuz? – z3n105

+0

Tabii ki. Kodda burayı boş bıraktım ama uygulamamda internetten belirli bir veri ayarlıyorum. –

+0

int mCurrentPosition = mediaPlayer.getCurrentPosition()/1000; Neden 1000'e böldün? – z3n105