我已经阅读了Android API并尝试通过互联网搜索声明自定义audioSessionId,然后使用它audioSessionId来初始化AudioFx类并为我的MediaPlayer或AudioTrack分配硬编码audioSessionId.
此方法允许我首先创建一个AudioFx,然后将新的MediaPlayer或AudioTrack附加到此audioSessionId.
我目前能够在Android 2.3.6上使用这种方法,但是在Android 4.x上我遇到了初始化失败的错误问题,或者在其他ICS/JellyBean设备上这个错误是沉默但调用函数会导致异常.
三星Galaxy S II [Android 4.0.3]: [问题不再适用于Android 4.0.4]
E/AudioEffect(13250): set(): AudioFlinger could not create effect, status: -38
E/AudioEffects-JNI(13250): AudioEffect initCheck failed -5
E/AudioEffect-JAVA(13250): Error code -5 when initializing AudioEffect.
W/WrapEqualizer(13250): createEqualizer() -> Effect library not loaded
Run Code Online (Sandbox Code Playgroud)
摩托罗拉Xoom [Android 4.1.2]
在构造函数之后似乎无声地失败.然后调用getProperties()它崩溃了.
java.lang.RuntimeException: AudioEffect: set/get parameter error
at android.media.audiofx.AudioEffect.checkStatus(AudioEffect.java:1247)
at android.media.audiofx.Equalizer.getProperties(Equalizer.java:532)
Run Code Online (Sandbox Code Playgroud)
Nexus 4 [Android 4.2.1]
使用audioSessionId = 0一切正常但是使用任何其他数字时,每当我尝试将预设,波段电平,低音增强设置为ON或Virtualizer更改为ON时,设备将报告以下静音错误.报告的效果ID因我尝试修改的FX而异.
W/AudioPolicyManagerBase(165): unregisterEffect() unknown effect ID 1381
Run Code Online (Sandbox Code Playgroud)
更新08/11/12:
我可以使用audioSessionId0.我知道它已被弃用但它使用权限工作.<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />我应该使用音频会话ID为0的AudioFx吗?
| 归档时间: |
|
| 查看次数: |
3782 次 |
| 最近记录: |