0

Я использую listview и в нижней части экрана, используя медиа-контроллеры, для первого, когда я нажимаю на любой элемент списка, на этот раз я могу воспроизвести эту песню, но после этого, когда я действительно нажмите на другой элемент списка, его не играть в эту музыку (мой средний не останавливая существующие, когда и не начинать новый)Как играть прослушанный Список Элемент Песня

listview.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, int position, 
       long id) { 
      // TODO Auto-generated method stub 
      Toast.makeText(getApplicationContext(), actorsList.get(position).getUrl(), Toast.LENGTH_LONG).show(); 
      strTitle = actorsList.get(position).getTitle().toString(); 
      textAudioTitle.setText(strTitle); 
      strURL = actorsList.get(position).getUrl().toString(); 
     } 
    }); 


    public void play(){   
     mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
     try { 
      mediaPlayer.setDataSource(strURL); 
     } catch (IllegalArgumentException e) { 

     } catch (SecurityException e) { 

     } catch (IllegalStateException e) { 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     try { 
      mediaPlayer.prepare(); 
     } catch (IllegalStateException e) { 

     } catch (IOException e) { 

     } 
     mediaPlayer.start(); 
     finalTime = mediaPlayer.getDuration(); 
     startTime = mediaPlayer.getCurrentPosition(); 
     if(oneTimeOnly == 0){ 
     seekbar.setMax((int) finalTime); 
     oneTimeOnly = 1; 
     } 

     endTimeField.setText(String.format("%d : %d", 
     TimeUnit.MILLISECONDS.toMinutes((long) finalTime), 
     TimeUnit.MILLISECONDS.toSeconds((long) finalTime) - 
     TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS. 
     toMinutes((long) finalTime))) 
    ); 
     startTimeField.setText(String.format("%d : %d", 
     TimeUnit.MILLISECONDS.toMinutes((long) startTime), 
     TimeUnit.MILLISECONDS.toSeconds((long) startTime) - 
     TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS. 
     toMinutes((long) startTime))) 
    ); 
     seekbar.setProgress((int)startTime); 
     myHandler.postDelayed(UpdateSongTime,100); 

     btnPlay.setVisibility(View.GONE); 
     btnPause.setVisibility(View.VISIBLE); 
    } 

    private Runnable UpdateSongTime = new Runnable() { 
     public void run() { 
     startTime = mediaPlayer.getCurrentPosition(); 
     startTimeField.setText(String.format("%d : %d", 
      TimeUnit.MILLISECONDS.toMinutes((long) startTime), 
      TimeUnit.MILLISECONDS.toSeconds((long) startTime) - 
      TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS. 
      toMinutes((long) startTime))) 
     ); 
     seekbar.setProgress((int)startTime); 
     myHandler.postDelayed(this, 100); 
     } 
    }; 
    public void pause(){  
     mediaPlayer.pause(); 
     btnPlay.setVisibility(View.VISIBLE); 
     btnPause.setVisibility(View.GONE); 
    } 

ответ

1

Вы должны остановить СМИ, если он играет на ItemClick

@Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, int position, 
       long id) { 
      // TODO Auto-generated method stub 
      Toast.makeText(getApplicationContext(), actorsList.get(position).getUrl(), Toast.LENGTH_LONG).show(); 
      strTitle = actorsList.get(position).getTitle().toString(); 
      textAudioTitle.setText(strTitle); 
      strURL = actorsList.get(position).getUrl().toString(); 

      if(mediaPlayer!=null && mediaPlayer.isPlaying()) 
      { 
       mediaPlayer.stop(); 
      } 

     } 
0

Это потому, что вы никогда не называя mediaPlayer.stop() для текущая песня.

+0

так, как я могу сделать управление на то, чтобы играть новую песню? – Sophie

+0

Остановите проигрыватель от воспроизведения воспроизводимой песни с помощью какого-либо обработчика событий, а затем начните воспроизведение новой песни. – vkm