2

Ich erstelle eine mp3-Datei, indem ich OutputStream (Bytes array) schreibe und dann mp3-Dateipfad in setDataSource des Media Players setze, dann wird media player gestartet.wie man setdatasource von laufendem mediaplayer in android aktualisiert

Aber wenn ich laufende MP3-Datei durch Hinzufügen Stream (Bytes Array) zur Laufzeit aktualisieren, dann Media Player wird nicht aktualisiert. Wie kann ich dieses Problem lösen? bitte helfen Sie in Bezug auf dieses Problem.

Hier ist mein Code:

InputStream inputStream = socket.getInputStream(); 

ByteArrayOutputStream dataOutputStream = new ByteArrayOutputStream();  
int count=0 
    while(true){ 
       byte[] buffer = new byte[1096*50]; 
       int bytesRead = inputStream.read(buffer); 
       dataOutputStream.write(buffer, 0, bytesRead); 

       String fpath = "/sdcard/" + "sha" + ".txt"; 
       File file = new File(fpath); 
       // If file does not exists, then create it 

    if (!file.exists()) {        
         file.createNewFile(); 
         } 
    try{ 

     OutputStream outputStream = new FileOutputStream(fpath); 
     dataOutputStream.writeTo(outputStream); 
     count++; 
      if (count==500){ 
       playMp3(fpath); 
          } 
       } 


    private void playMp3(String path) { 

     try { 
      MediaPlayer mediaPlayer = new MediaPlayer(); 
      mediaPlayer.reset(); 
      mediaPlayer.setDataSource(path); 
      mediaPlayer.prepare(); 
      mediaPlayer.start(); 

     } catch (IOException ex) { 
      String s = ex.toString(); 
      ex.printStackTrace(); 
     } 
    } 
+0

Veröffentlichen Sie die Codes, die Sie für relevant halten. –

Antwort

0

du

zuerst die Boolesche Variable deklarieren, die festgelegt ist, müssen versuchen können, wenn die Datei angehängt wird, oder es wird als nächstes spielen

public boolean nextplay=true; 

Wenn keine Datei ist (oder nicht zu einer vorhandenen Datei Ende angehängt), dann spielen sie falsch machen

 MediaPlayer mediaPlayer = new MediaPlayer(); 
     mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
      @Override 
      public void onCompletion(MediaPlayer mp) { 
       if(nextplay) 
       { 
       mp.stop(); 
       mp.reset(); 
       mp.setDataSource(second_file); 
       mp.prepare(); 
       mp.start(); 
       } 
       else 
       { 
       mp.stop(); 
      } 
      } 
      }); 
+0

Danke Akhil. aber wenn Sie diesen Code ausführen, gibt es Ausnahme –

+0

Dank Akhil. aber wenn dieser Code ausgeführt wird, gibt es eine Ausnahme in Link [link] (https://jpst.it/IROw) –

+0

Ich habe ein wenig Bearbeitung zu meiner Antwort gemacht.Es ist –