前面的文章对音量设置中的音量增益流程 setCurrentGainIndex 方法我们分析到了 native 层就没有往下分析,这里我们继续分析下面的流程。
一、源码分析
1、android_media_AudioSystem.cpp
源码位置:frameworks/base/core/jni/android_media_AudioSystem.cpp
static jint android_media_AudioSystem_setAudioPortConfig(JNIEnv *env, jobject clazz, jobject jAudioPortConfig)
{
if (jAudioPortConfig == NULL) {
return AUDIO_JAVA_BAD_VALUE;
}
if (!env->IsInstanceOf(jAudioPortConfig, gAudioPortConfigClass)) {
return AUDIO_JAVA_BAD_VALUE;
}
struct audio_port_config nAudioPortConfig = {};
jint jStatus = convertAudioPortConfigToNative(env, &nAudioPortConfig, jAudioPortConfig, true);
if (jStatus != AUDIO_JAVA_SUCCESS) {
return jStatus;
}
status_t status = AudioSystem::setAudioPortConfig(&nAudioPortConfig);
jStatus = nativeToJavaStatus(status);
return jStatus;
}
这里