gpt4 book ai didi

Android 声音文件没有完全播放,被残酷地打断

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

场景

我遇到了一个让我抓狂的问题。在一项 Activity 中,我有以下场景。创建时:- 创建一个 GPS 监听器- 创建一个位置监听器- 启动 GPS 监听器和位置监听器- 启动从网络下载 map /或从缓存加载 map 的异步任务- 播放一个原始资源的 wav 文件,非常小(大约 63 Kilo)也很短,基本上它说:“让我们前往起点”,它使 TextView 可见 10 秒。

问题

声音很少能完全播放。有时我只听到“Let's head”,有时是“Let's head to the star”,有时根本没有播放。好像有什么东西挡住了声音。我在自己的线程中移动了声音,但仍然没有成功:

代码

private void ShowTextPlayVoice(String message, int soundResId)
{
txtProceed.setText(message);
txtProceed.setVisibility(View.VISIBLE);
final int soundId = soundResId;

Handler splashHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 0:
txtProceed.setVisibility(View.INVISIBLE);
break;
}
super.handleMessage(msg);
}
};

Message msg = new Message();
msg.what = 0;
splashHandler.sendMessageDelayed(msg, 10000);

Thread thread = new Thread() {
public void run() {
MediaPlayer mp = MediaPlayer.create(ctx, soundId);
mp.start();
mp.setOnCompletionListener(new OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
mp.release();
}
});
}
};
thread.start();
}

谢谢大家的帮助。

最佳答案

经过一些尝试,这是一个可行的解决方案

private MediaPlayer mediaPlayer = new MediaPlayer();

private void ShowTextPlayVoice(String message, int soundResId)
{
txtProceed.setText(message);
txtProceed.setVisibility(View.VISIBLE);

Handler splashHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 0:
txtProceed.setVisibility(View.INVISIBLE);
break;
}
super.handleMessage(msg);
}
};

Message msg = new Message();
msg.what = 0;
splashHandler.sendMessageDelayed(msg, 10000);

new SoundTask().execute(soundResId);
}

protected class SoundTask extends AsyncTask<Integer, Void, Void>
{
@Override
protected Void doInBackground(Integer... params)
{
AssetFileDescriptor afd = ctx.getResources().openRawResourceFd(params[0]);

try
{
//final MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.reset();
mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getDeclaredLength());
mediaPlayer.prepare();
mediaPlayer.setOnPreparedListener(new OnPreparedListener() {
public void onPrepared(MediaPlayer arg0) {
mediaPlayer.seekTo(0);
mediaPlayer.start();
});
}
});
afd.close();
}
catch (Exception e) {
}

return null;
}
}

关于Android 声音文件没有完全播放,被残酷地打断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4301392/

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