gpt4 book ai didi

Android MediaPlayer 在某些平台上不播放声音

转载 作者:行者123 更新时间:2023-11-29 22:29:17 26 4
gpt4 key购买 nike

我目前正在开发一个 Android 应用程序,它可以在不同的时间间隔向用户播放声音。我有工作代码(包含在下面),它在我的 Hero(运行 2.2)和 1.6 模拟器上完全按照预期运行。但是,它在我的 friend Xperia x8 上不起作用——没有声音播放。他设置了通知音,当他收到短信等时播放效果很好。

private void prepareAudio(){
alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
mp = new MediaPlayer();
if(alert != null){
try {
mp.setDataSource(ctx, alert);
} catch (IllegalArgumentException e) {
Log.i("Prepare Audio", e.getMessage());
} catch (SecurityException e) {
Log.i("Prepare Audio", e.getMessage());
} catch (IllegalStateException e) {
Log.i("Prepare Audio", e.getMessage());
} catch (IOException e) {
Log.i("Prepare Audio", e.getMessage());
}
}
am = (AudioManager)ctx.getSystemService(Context.AUDIO_SERVICE);
}

private void notifyUser(){
if(alert != null){
if (am.getStreamVolume(AudioManager.STREAM_ALARM) != 0) {
mp.setAudioStreamType(AudioManager.STREAM_ALARM);
mp.setLooping(false);
try {
mp.prepare();
} catch (IllegalStateException e) {
Log.i("Notify User", e.getMessage());
} catch (IOException e) {
Log.i("Notify User", e.getMessage());
}
mp.start();
} else {
Log.i("Notify User", "Alarm volume zero");
}
} else {
Log.i("Notify User", "Uri is null");
}
long[] pattern = {0,200,300,600};
v.vibrate(pattern, -1);
}

PrepareAudio 在初始化类时调用,并在每次我们想要播放声音时通知用户。手机总是在该振动的时候振动,所以 notifyUser 肯定被调用了。

我 friend 安装的版本使用 e.printStackTrace 而不是 Log.i,所以在 logcat 中没有吐出任何东西。我将尝试拿到他的手机,将其更新为带有 Log.i 的版本,但与此同时,代码是否有任何明显的错误可能导致这种间歇性问题?

谢谢,

最佳答案

所以事实证明,更新我在原始帖子中列出的异常处理似乎已经解决了这个问题。

如果你将上面的代码用于任何事情,值得注意的是有时 e.getMessage() 返回 null,而不是

Log.i("Notify User", e.getMessage());

使用

Log.i("Notify User", e.getMessage() + "");

在抛出异常时避免任何讨厌的 FC。

对于这个无法回答的问题,我们深表歉意!

关于Android MediaPlayer 在某些平台上不播放声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4820294/

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