Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Global audio & session IDs on Android 4.0.3+

Tags:

android

audio

I have an app on the market that applies a bass boost effect to the global audio mix. Unfortunately, the use of audio session 0 has been deprecated since 4.0.3 and I have not been able to find a workaround. Is there a way of scanning for audio session Ids? Here's my logcat:

10-16 20:58:01.569: E/AndroidRuntime(645): FATAL EXCEPTION: main
10-16 20:58:01.569: E/AndroidRuntime(645): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.rustlesoft.bassbooster/com.rustlesoft.bassbooster.BassBooster}: java.lang.IllegalArgumentException: Effect type: 0634f220-ddd4-11db-a0fc-0002a5d5c51b not supported.
10-16 20:58:01.569: E/AndroidRuntime(645):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1983)
10-16 20:58:01.569: E/AndroidRuntime(645):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
10-16 20:58:01.569: E/AndroidRuntime(645):  at android.app.ActivityThread.access$600(ActivityThread.java:130)
10-16 20:58:01.569: E/AndroidRuntime(645):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
10-16 20:58:01.569: E/AndroidRuntime(645):  at android.os.Handler.dispatchMessage(Handler.java:99)
10-16 20:58:01.569: E/AndroidRuntime(645):  at android.os.Looper.loop(Looper.java:137)
10-16 20:58:01.569: E/AndroidRuntime(645):  at android.app.ActivityThread.main(ActivityThread.java:4745)
10-16 20:58:01.569: E/AndroidRuntime(645):  at java.lang.reflect.Method.invokeNative(Native Method)
10-16 20:58:01.569: E/AndroidRuntime(645):  at java.lang.reflect.Method.invoke(Method.java:511)
10-16 20:58:01.569: E/AndroidRuntime(645):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
10-16 20:58:01.569: E/AndroidRuntime(645):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-16 20:58:01.569: E/AndroidRuntime(645):  at dalvik.system.NativeStart.main(Native Method)
10-16 20:58:01.569: E/AndroidRuntime(645): Caused by: java.lang.IllegalArgumentException: Effect type: 0634f220-ddd4-11db-a0fc-0002a5d5c51b not supported.
10-16 20:58:01.569: E/AndroidRuntime(645):  at android.media.audiofx.AudioEffect.<init>(AudioEffect.java:381)
10-16 20:58:01.569: E/AndroidRuntime(645):  at android.media.audiofx.BassBoost.<init>(BassBoost.java:101)
10-16 20:58:01.569: E/AndroidRuntime(645):  at com.rustlesoft.bassbooster.BassBooster.<init>(BassBooster.java:14)
10-16 20:58:01.569: E/AndroidRuntime(645):  at java.lang.Class.newInstanceImpl(Native Method)
10-16 20:58:01.569: E/AndroidRuntime(645):  at java.lang.Class.newInstance(Class.java:1319)
10-16 20:58:01.569: E/AndroidRuntime(645):  at android.app.Instrumentation.newActivity(Instrumentation.java:1053)
10-16 20:58:01.569: E/AndroidRuntime(645):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1974)
10-16 20:58:01.569: E/AndroidRuntime(645):  ... 11 more
like image 385
user1745892 Avatar asked Nov 12 '22 20:11

user1745892


1 Answers

It might be deprecated, but applying an effect on the global output mix (session 0) should still work in both ICS and JB, as long as you've got MODIFY_AUDIO_SETTINGS permission and you don't also apply any effects on a session other than 0.

like image 94
Michael Avatar answered Nov 15 '22 11:11

Michael