gpt4 book ai didi

android - 仅创建一个Media Player实例

转载 作者:行者123 更新时间:2023-12-02 23:47:09 26 4
gpt4 key购买 nike

我在Web View 中播放声音文件,并使用Javascript调用它们。

这是我使用的代码,但是每次我将新声音称为mediaplayer实例时都会创建它,因此我无法停止已经播放的声音并且正在运行太多的媒体播放器。

public class AudioInterface {
Context mContext;

AudioInterface(Context c) {
mContext = c;
}

//Play an audio file from the webpage
@JavascriptInterface
public void playAudio(String aud) {
final MediaPlayer mp;
try {
AssetFileDescriptor fileDescriptor =
mContext.getAssets().openFd(aud);

mp = new MediaPlayer();
mp.setDataSource(fileDescriptor.getFileDescriptor(),
fileDescriptor.getStartOffset(),
fileDescriptor.getLength());
fileDescriptor.close();
mp.prepare();
mp.start();
}

catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};

如何只创建一个 mediaplayer实例,以便在播放新实例之前停止当前声音?

最佳答案

以此替换您的代码。注意我是如何在playAudio(...)之外初始化MediaPlayer的:

public class AudioInterface {

Context mContext;
final MediaPlayer mp;

AudioInterface(Context c) {
mContext = c;
mp = new MediaPlayer();
}

// Play an audio file from the webpage
@JavascriptInterface
public void playAudio(String aud) {

try {
AssetFileDescriptor fileDescriptor = mContext.getAssets().openFd(aud);

mp.reset();
mp.setDataSource(fileDescriptor.getFileDescriptor(), fileDescriptor.getStartOffset(), fileDescriptor.getLength());
fileDescriptor.close();
mp.prepare();
mp.start();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

关于android - 仅创建一个Media Player实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30336426/

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