我用onCreate活动方法编写了下面的代码。
MusicPlayer.getEqualizerHelper().getCurrentEqualizer().usePreset((short) 0); --- line no 1
short numberFrequencyBands = MusicPlayer.getEqualizerHelper().getCurrentEqualizer().getNumberOfBands();--- line no 2
final short lowerEqualizerBandLevel = MusicPlayer.getEqualizerHelper().getCurrentEqualizer().getBandLevelRange()[0];--- line no 3在所有低于nougat的android o.s中,它都运行得很好。当我在nougat设备上安装我的应用程序时,它会在1号线上抛出异常。请给我建议问题所在和解决方案。提前感谢
致命异常:主进程: com.ag.musicplayer,PID: 15039 java.lang.RuntimeException:无法启动活动 ComponentInfo{com.ag.musicplayer/com.ag.musicplayer.activity.EqualizerActivity}:java.lang.UnsupportedOperationException: AudioEffect: android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646)的无效参数操作在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app。ActivityThread$H.handleMessage(ActivityThread.java:1460) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154)在android.app.ActivityThread.main(ActivityThread.java:6077) at java.lang.reflect.Method.invoke(原生方法)在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)由: java.lang.UnsupportedOperationException: AudioEffect引起的: android.media.audiofx.AudioEffect.checkStatus(AudioEffect.java:1273)中无效的参数操作在android.media.audiofx.Equalizer.usePreset(Equalizer.java:335) at com.ag.musicplayer.activity.EqualizerActivity.onCreate(EqualizerActivity.java:287)在android.app.Activity.performCreate(Activity.java:6664) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707) at android.app.ActivityThread.-wrap12(ActivityThread.java)在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)(在android.os.Handler.dispatchMessage(Handler.java:102))在android.app.ActivityThread.main(ActivityThread.java:6077)的android.os.Looper.loop(Looper.java:154)在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)的java.lang.reflect.Method.invoke(本地方法)在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
发布于 2016-12-05 06:14:32
我不太清楚为什么它会在努格特上抛出错误,但一个可能的原因是可能没有预设。因此,为了确保您可以首先检查是否有可用的预置,是否使用getNumberOfPresets()。
发布于 2018-08-19 13:21:56
如果您在自定义ROM (以及使用系统均衡器的其他遗留rom )上运行,则必须禁用音频会话id的系统均衡器:
private void unbindSystemEqualizer(int audioSessionId) {
Intent intent = new Intent(AudioEffect.ACTION_CLOSE_AUDIO_EFFECT_CONTROL_SESSION);
intent.putExtra(AudioEffect.EXTRA_AUDIO_SESSION, audioSessionId);
intent.putExtra(AudioEffect.EXTRA_PACKAGE_NAME, mContext.getPackageName());
mContext.sendBroadcast(intent);
}请确保您的自定义均衡器已启用,并且在启动广播意图之前设置是可用的。
https://stackoverflow.com/questions/40967977
复制相似问题