我正在尝试修复应用中的错误,但问题是我无法修复该错误 因为我无法重新创建崩溃,但是我可以获取日志,也无法确定问题所在,所以我提到了与 UnsupportedOperationException 相关的问题,但到目前为止,没有成功的指南提示会有所帮助
Log1
Fatal Exception: java.lang.RuntimeException
Unable to create service com.musicplayer.music.audioplayer.PlayerService:
java.lang.RuntimeException: AudioEffect: set/get parameter error
android.app.ActivityThread.handleCreateService (ActivityThread.java:2801)
android.app.ActivityThread.access$1800 (ActivityThread.java:155)
android.app.ActivityThread$H.handleMessage (ActivityThread.java:1400)
android.os.Handler.dispatchMessage (Handler.java:102)
android.os.Looper.loop (Looper.java:135)
android.app.ActivityThread.main (ActivityThread.java:5343)
java.lang.reflect.Method.invoke (Method.java)
java.lang.reflect.Method.invoke (Method.java:372)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run
(ZygoteInit.java:905)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:700)
logcat 2
Caused by java.lang.RuntimeException
AudioEffect: set/get parameter error
android.media.audiofx.AudioEffect.<init> (AudioEffect.java:407)
android.media.audiofx.Virtualizer.<init> (Virtualizer.java:120)
com.musicplayer.music.audioplayer.equalizermerge.model.EqualizerApi.init
(EqualizerApi.java:23)
com.musicplayer.music.audioplayer.PlayerService.onCreate
(PlayerService.java:400)
android.app.ActivityThread.handleCreateService (ActivityThread.java:3141)
android.app.ActivityThread.access$1800 (ActivityThread.java:178)
android.app.ActivityThread$H.handleMessage (ActivityThread.java:1640)
android.os.Handler.dispatchMessage (Handler.java:111)
android.os.Looper.loop (Looper.java:214)
android.app.ActivityThread.main (ActivityThread.java:6102)
java.lang.reflect.Method.invoke (Method.java)
java.lang.reflect.Method.invoke (Method.java:372)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run
(ZygoteInit.java:1028)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:823)
根据建议,我已经从 io.fabric EqualizerApi code
中添加了完整的日志目录答案 0 :(得分:2)
我发现源代码的版本(https://android.googlesource.com/platform/frameworks/base/+/5bb8f80/media/java/android/media/audiofx/AudioEffect.java),尽管行号与您的堆栈跟踪不匹配。
初始化音频效果引擎的本机代码实现时,由于问题而抛出UnsupportedOperationException
。在我正在查看的代码中,异常消息显示“未加载效果库”。我猜这是由以下原因之一引起的:
加载路径中缺少必需的本机库。 (也许您尚未将其包含在应用中...)
库的初始化代码中可能存在错误。
更新-更新的堆栈跟踪和错误消息表示在创建Virtualizer
时出现问题。该消息暗示它是由于参数错误所致。
浏览AudioEffect和Virtualizer类的代码,看来Virtualizer
初始化程序正在尝试从本机API检索参数以测试是否支持Virtualizer的“ strength”参数。 API似乎在说它甚至不理解应该说强度参数是否受支持的参数(!)
Virtualizer类中靠近指定参数编号的位置的注释说:
// These constants must be synchronized with those in
// frameworks/base/include/media/EffectVirtualizerApi.h
根据我的推断,看来这是不正确的。换句话说,我认为……某种程度上……您使用的Java API版本与本机API版本不匹配。
或者,这可能是由于这些设备上的Virtualizer支持中断而引起的。
我建议以下解决方法:
尝试在init
方法中捕获运行时异常,并将Virtualizer功能视为已在设备上禁用。
如果您知道有问题的设备是什么,请对init
方法进行编码,甚至不要尝试在这些设备上配置虚拟器。
完全不支持这些设备。 (它们已经旧了吗?他们运行的是旧版/维护不善的Android版本吗?甚至还不值得支持吗?)
问题也有可能与以下问答有关: