gpt4 book ai didi

android - 如何在android中更新运行媒体播放器的setdatasource

转载 作者:搜寻专家 更新时间:2023-11-01 09:47:19 25 4
gpt4 key购买 nike

我通过编写 OutputStream(Bytes array) 创建一个 mp3 文件,然后将 mp3 文件路径放入媒体播放器的 setDataSource 中,然后媒体播放器启动。

但是当我在运行时通过附加流(字节数组)更新正在运行的 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();
}
}

最佳答案

你可以试试这个

首先声明一个 bool 变量,当文件被追加或接下来播放时需要设置

 public boolean nextplay=true; 

如果没有文件(或未附加到现有文件的末尾)播放则将其设置为 false

      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();
}
}
});

关于android - 如何在android中更新运行媒体播放器的setdatasource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37452829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com