gpt4 book ai didi

android - Media Player应用程序中的多个声音崩溃

转载 作者:行者123 更新时间:2023-12-03 18:10:43 24 4
gpt4 key购买 nike

我开发了一个应用程序,其中有4个声音文件一起播放
第一声​​:


在下一个按钮上按
-第二声音:
在上一个按钮上按

第三声:


播放项目的声音

第四声:


在物品上玩(物品怎么说)

一切正常,直到用户快速播放并第四次播放,文字转语音引擎崩溃


MediaPlayer:错误(-19,0)android


我试图重置媒体播放器,释放并在下一个和上一个按钮中停止,但是在返回几声后四声之后,项目的声音仍然停止。


我做了什么 :

public class A extends Activity {


int imgArr[] = {R.drawable.a, R.drawable.b, R.drawable.c, R.drawable.d};
int soundsrc[] = {R.raw.a, R.raw.b, R.raw.c, R.raw.d};
String pro[] = new String[]{"a", "b", "c", "d"};
ImageView iView;
int count = 0;

TextToSpeech txtToSpeech1;
MediaPlayer mp;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_names);
stopService(new Intent(this, PlayMusic.class));


iView = (ImageView) findViewById(R.id.imageView5);
iView.setImageResource(R.drawable.befora);
txtToSpeech1 = new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener() {


@Override
public void onInit(int status) {
if(status != TextToSpeech.ERROR) {
txtToSpeech1.setLanguage(Locale.UK);
txtToSpeech1.speak(pro[count], TextToSpeech.QUEUE_FLUSH, null);
}
}
});

Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
aSounds();
}
}, 1000);




}

@Override
public void onDestroy() {
// Don't forget to shutdown!
if (txtToSpeech1 != null) {
txtToSpeech1.stop();
txtToSpeech1.shutdown();
}
super.onDestroy();
}

public void onPause(){
if(txtToSpeech1 !=null){
txtToSpeech1.stop();
txtToSpeech1.shutdown();
}
super.onPause();
}

public void aSounds() {
mp = MediaPlayer.create(ANames.this, soundsrc[count]);
mp.start();
}


public void forwardd(View v) {
buttonSounds(R.raw.multimedia_button_click);
if (count < imgArr.length && count >= 0) {
count++;
if (count == imgArr.length)
count = 0;
iView.setImageResource(imgArr[count]);

if (txtToSpeech1.isSpeaking()) {
Log.i("Tag", "Stop speaking");
txtToSpeech1.stop();
}

txtToSpeech1.speak(pro[count], TextToSpeech.QUEUE_FLUSH, null);
// Execute some code after 2 seconds have passed

Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
aSounds();
}
}, 1000);


}
}

public void backwardd(View v) {
buttonSounds(R.raw.multimedia_button_click);

if (count >= 0 && count < imgArr.length) {
count--;
if (count == -1) {
count = imgArr.length - 1;
}
iView.setImageResource(imgArr[count]);
txtToSpeech1.speak(pro[count], TextToSpeech.QUEUE_FLUSH, null);

Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
aSounds();
}
}, 1000);


}
}

public void onImageClick(View v) {
txtToSpeech1.speak(pro[count], TextToSpeech.QUEUE_FLUSH, null);
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
aSounds();
}
}, 1000);
}

public void home(View v) {
buttonSounds(R.raw.multimedia_button_click);
Intent ii = new Intent(ANames.this, PlayMusic.class);
finish();
startService(ii);
}

public void buttonSounds(int src) {
mp = MediaPlayer.create(ANames.this, R.raw.multimedia_button_click);
mp.start();
}


}


-很长很久以来我一直在尝试

-尝试了有关媒体播放器工作的几乎所有堆栈溢出答案Google。

-以及如何在单击按钮时停止,释放,重置,启动媒体播放器,但对我没有任何帮助。

-所以最后决定在堆栈溢出中提问以寻求帮助

-任何帮助都将由衷地欢迎和感谢

最佳答案

如果按钮播放声音效果,例如1-4秒。考虑使用SoundPool类。据我所知,它应该用于那些东西。媒体播放器错误LINKLINK。似乎任何人遇到错误19都需要释放他正在播放的资源。

关于android - Media Player应用程序中的多个声音崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35909607/

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