2

Я создаю mp3-файл, записывая OutputStream (Bytes array), а затем помещаю путь mp3-файла в setDataSource медиаплеера, а затем запускается медиа-плеер.Как обновить setdatasource для запуска mediaplayer в android

Но когда я обновляю исполняемый mp3-файл, добавляя поток (массив байтов) во время выполнения, тогда медиаплеер не обновляется. Итак, как я могу решить эту проблему. пожалуйста помощь относительно этот выпуск.

Вот мой код:

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

Опубликовать код, который, по вашему мнению, уместен. –

ответ

0

Вы можете попробовать это

Сначала объявить логическую переменную, которая необходимо установить, когда файл добавляется или он будет играть в следующем

public boolean nextplay=true; 

Если файла нет (или не добавлено к концу существующего файла), то сделайте его ложным

 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

Спасибо akhil. но при запуске этого кода он дает исключение –

+0

Спасибо akhil. но при запуске этого кода он дает исключение в ссылке [link] (https://jpst.it/IROw) –

+0

Я немного изменил свой ответ на мой answer.try it –