ToneGenerator Init failed Crash

需求需要在扫码时产生一个短促的提示音, 搜了下像这样实现。测试时发现多次扫码后,会触发程序崩溃问题。

异常如下

java.lang.RuntimeException: Init failed
    at android.media.ToneGenerator.native_setup(Native Method)
    at android.media.ToneGenerator.<init>(ToneGenerator.java:746)
    at com.ganzhi.app.android.ganzhiandroid.MainOneActivity$2.onReceive(MainOneActivity.java:505)
    at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$getRunnable$0(LoadedApk.java:1391)
    at android.app.-$$Lambda$LoadedApk$ReceiverDispatcher$Args$_BumDX2UKsnxLVrE6UJsJZkotuA.run(Unknown Source:2)
    at android.os.Handler.handleCallback(Handler.java:873)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:193)
    at android.app.ActivityThread.main(ActivityThread.java:6747)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:860)

代码如下:

toneGenerator = new ToneGenerator(AudioManager.STREAM_MUSIC, 100);

toneGenerator.startTone(ToneGenerator.TONE_CDMA_PIP,150);

一番搜索, 以下为最佳答案, 加上以后,循环测试, 不再引起异常了。

toneGenerator.release();

原因。。

/**
* Releases resources associated with this ToneGenerator object. It is good
* practice to call this method when you're done using the ToneGenerator.
*/

释放ToneGernerator 对象关联的资源。当你使用完成后,调用下这个方法是个好习惯。

猜你喜欢

转载自blog.csdn.net/qq_25148525/article/details/124472315
今日推荐