2015-06-06 17 views
5

Android'de MediaPlayer kullanarak birden fazla mp3 dosyası üretmek için bir sorunum var. Tek bir dosyayı yeniden oluşturabiliyorum ancak farklı dosyaları birbiri ardına çoğaltmak için hiçbir şey bulamadım. şimdi bir dosya çoğaltmak için kullandıklarıAndroid içinde MediaPlayer ile mp3 dosyasının çalma listesi

kodudur:

public MediaPlayer mediaPlayer = null; 

public void playP(View view) { 

    if (mediaPlayer == null) { 
     mediaPlayer = MediaPlayer.create(MainActivity.this, R.raw.music); 
    } 
    mediaPlayer.start(); 

} 
Ben daha dosyasının bir listesini üretmek için değiştirebilir nasıl

?

Teşekkür

+0

gibi

. Bir oynatma listesine şarkı eklemek/eklemek ister misiniz? Hala bunun üzerinde çalışıyor musun? Ve mediaPlayer şarkı çalıyor ama saklamıyor. –

+0

Evet, MediaPlayer ile bir ses dosyaları listesi oluşturmaya çalışıyorum. – Gualty

cevap

7

Çalma listesine eklemek istediğiniz müziğin bir listesini oluşturun. Ardından, çalınan müziği takip edin ve bir kez bittiğinde listeye bir sonraki başlayın. Anlamadığım bu

import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.Menu; 
import android.view.MenuItem; 

import java.util.ArrayList; 
import java.util.Timer; 
import java.util.TimerTask; 


public class MainActivity extends AppCompatActivity { 

    Timer timer; 
    MediaPlayer mp; 
    ArrayList<Integer> playlist; 
    int i=0; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     playlist = new ArrayList<>(); 
     playlist.add(R.raw.a1); 
     playlist.add(R.raw.a2); 
     mp = MediaPlayer.create(this,playlist.get(0)); 
     mp.start(); 
     timer = new Timer(); 
     if (playlist.size()>1) playNext(); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 

    public void playNext() { 
     timer.schedule(new TimerTask() { 
      @Override 
      public void run() { 
       mp.reset(); 
       mp = MediaPlayer.create(MainActivity.this,playlist.get(++i)); 
       mp.start(); 
       if (playlist.size() > i+1) { 
        playNext(); 
       } 
      } 
     },mp.getDuration()+100); 
    } 

    @Override 
    public void onDestroy() { 
     if (mp.isPlaying()) 
      mp.stop(); 
     timer.cancel(); 
     super.onDestroy(); 
    } 
} 
+0

Nasıl kodlanacağı konusunda bir fikrin var mı? Döngüsü için? – Gualty

+0

, eksik kod var gibi görünüyor, çünkü eğer playNext() 'ile bu döngüyü başlatırsanız, mp, mp.getDuration() işlevini yürütmeye çalıştığında null olacaktır. –