gpt4 book ai didi

android - 样本未准备好音池

转载 作者:太空宇宙 更新时间:2023-11-03 12:20:45 24 4
gpt4 key购买 nike

我正在开发一款将短语从英语翻译成另一种语言的应用程序。我正在使用 ExpandableListView 并通过 BaseExpandableListAdapter 绑定(bind)数据。简而言之:当点击一个列表项时,会打开一个子项,您可以在其中看到翻译,同时有一个声音在说话。 问题是有时不播放声音 - 特别是对于较长的短语。我可以在 logcat 中看到以下内容:

1) 当根本没有播放声音时...

示例未加载。等待 30 毫秒。 sample X 未准备好

2) 实际播放声音的时间

*示例未加载。等待 30 毫秒。


因此,即使播放了声音,logcat 也会显示“样本尚未准备好”。

好的,这就是logcat给出的信息。另一件事是,声音文件越大,失败的可能性就越大。小声音文件播放两秒钟(约 30 KB)大约 4 秒(约 60 KB)。

现在我不知道如何解决这个问题。我在互联网上搜索了解决方案,尤其是这个网站。我都试过....

1) 使用 OnLoadCompleteListener()

及其不工作

2) 制作某种 while 循环。

也不行

我可能做错了什么。我给出下面的代码。也许有什么尴尬的事?例如,我是否以错误的方式实现了监听器?

此致

expList.setOnGroupExpandListener(new OnGroupExpandListener() {
public void onGroupExpand(int groupPosition) {

final int group_position = groupPosition;
loaded = false;


int nmbr_childs = adapter.getChildrenCount(groupPosition);
if (nmbr_childs == 1) {


myVoice = soundPool.load(PhraseActivity.this, sound[group_position][0], 2);
soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() {
@Override
public void onLoadComplete(SoundPool soundPool, int sampleId,
int status) {
loaded = true;
}
});

if (loaded) {
soundPool.play(myVoice, 20, 20, 1, 0, 1f);
}
else {
System.out.println("something wrong with soundpool!");
}


}

group = groupPosition;
int len = adapter.getGroupCount();
for (int i = 0; i < len; i++) {
if (i != groupPosition) {
expList.collapseGroup(i);
}
}
}
});

最佳答案

我认为您应该按如下方式更改代码:

 myVoice = soundPool.load(PhraseActivity.this, sound[group_position][0], 2);
soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() {
@Override
public void onLoadComplete(SoundPool soundPool, int sampleId,
int status) {
soundPool.play(myVoice, 20, 20, 1, 0, 1f);
}
});

它对我有用。

关于android - 样本未准备好音池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16731183/

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