2012-10-15 23 views
5

Ho un'app sul mercato che applica un effetto di amplificazione dei bassi al mix audio globale. Sfortunatamente, l'uso della sessione audio 0 è stato deprecato dalla 4.0.3 e non sono stato in grado di trovare una soluzione alternativa. C'è un modo di scansionare gli ID delle sessioni audio? Ecco il mio logcat:ID audio e sessione globali su Android 4.0.3+

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 

risposta

1

Potrebbe essere deprecato, ma applicando un effetto sul mix di produzione mondiale (sessione 0) dovrebbe ancora funzionare in entrambi ICS e JB, a patto che hai MODIFY_AUDIO_SETTINGS permesso e don Applicare qualsiasi effetto anche su una sessione diversa da 0.

+0

ho il permesso di MODIFY_AUDIO_SETTINGS e non ci sono altri effetti diversi dal basso aumenta ma l'app si arresta ancora all'avvio in 4.0.3 e versioni successive. Sarebbe d'aiuto se fornissi un logcat? – user1745892

+0

Probabilmente sarebbe una buona idea. – Michael

+0

@ Michael: ho lo stesso problema. Potete fornire qualche codice su come realizzarlo? –

0

Questo potrebbe essere afferrato da una cannuccia ma guardando il tuo stacktrace ma sospetto che l'effetto audio che stai tentando di applicare potrebbe non essere supportato affatto.

Si potrebbe provare a chiamare queryEffects() e scorrere gli oggetti Descriptor per verificare se il tipo di effetto audio che si sta cercando di applicare è supportato prima

Problemi correlati