gpt4 book ai didi

android - ToneGenerator 在 android 6.0 中崩溃

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

在我的应用程序中,我使用 ToneGenerator 来播放简单的声音。当通过使用 6.0 编译应用程序来测试我的应用程序时,我的应用程序由于 ToneGenerator 初始化方法而随机崩溃。以下是异常(exception)情况。

 java.lang.RuntimeException: Init failed 
04-21 12:34:05.497 7166 7166 E MyApplication: at android.media.ToneGenerator.native_setup(Native Method)
04-21 12:34:05.497 7166 7166 E MyApplication: at android.media.ToneGenerator.<init>(ToneGenerator.java:746)

我正在以下面的方式使用音调发生器。

    public ToneGenerator toneGenerator;
public void playSound() {
if (toneGenerator == null) {
toneGenerator = new ToneGenerator(AudioManager.STREAM_NOTIFICATION, 100);
}
toneGenerator.startTone(ToneGenerator.TONE_CDMA_ANSWER, 200);
}


public void releaseToneGenerator() {
if (toneGenerator != null) {
toneGenerator.release();
}
}

有人面临同样的问题吗?..以前我的应用程序运行在 4.4 上,我们没有观察到任何崩溃。在 6.0 应用程序崩溃

最佳答案

使用处理程序解决了这个问题。

private static void playTone(Context context, int mediaFileRawId) {
Log.d(TAG, "playTone");
try {
if (toneGenerator == null) {
toneGenerator = new ToneGenerator(AudioManager.STREAM_NOTIFICATION, 100);
}
toneGenerator.startTone(mediaFileRawId, 200);
Handler handler = new Handler(Looper.getMainLooper());
handler.postDelayed(new Runnable() {
@Override
public void run() {
if (toneGenerator != null) {
Log.d(TAG, "ToneGenerator released");
toneGenerator.release();
toneGenerator = null;
}
}

}, 200);
} catch (Exception e) {
Log.d(TAG, "Exception while playing sound:" + e);
}
}

关于android - ToneGenerator 在 android 6.0 中崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43515604/

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