Android音量调节原理

Android系统音量调节机制执行过程

前言

做有关APK项目时用到了Android系统的音量调节相关的知识,于是去追了Android源码,下面来简单介绍下。

正文

在APP层调用的代码如下:

private AudioManager audioManager;
int index = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
int device = AudioDeviceInfo.TYPE_BUILTIN_SPEAKER;
double decible = (double)audioManager.getStreamVolumeDb(AudioManager.STREAM_MUCIC, index, device);

AudioManager.java文件在Framework层,部分代码如下:

public float getStreamVolumeDb(@PublicStreamTypes int streamType, int index,
							@AudioDeviceInfo.AudioDeviceTypeOut int deviceType)
{
   
	if (!isPublicStreamType(streamType)) {
   
		throw new IllegalArgumentException("Invalid stream type " + streamType);
	}
	if (index > getStreamMaxVolume(streamType) || index < getStreamMinVolume(streamType)) {
   
		throw new IllegalArgumentException("Invalid stream volume index " + index);
	}
	if (!AudioDeviceInfo.isValidAudioDeviceTypeOut(deviceType)) {
   
		throw new IllegalArgumentException("Invalid audio output device type " + deviceType);
	}
	final float gain = AudioSystem.getStreamVolumeDB(streamType, index, AudioDeviceInfo.convertDeviceTypeToInternalDevice(deviceType));//此函数在AudioSystem.java
	if (gain <= VOLUME_MIN_DB) {
   
		return Float.NEGATIVE_INFINITY;
	} else {
   
		return gain;
	}
}

AudioSystem.java文件在Framework层,部分代码如下:

public static native float getStreamVolumeDB(int stream, int index, int device);//调用AudioPolicyManager类的getStreamVolumeDB方法

AudioPolicyManager.cpp类在Native层,部分代码如下:

float AudioPolicyManager::getStreamVolumeDB(audio_stream_type_t stream,
											int index, audio_devices_t device)
{
   
	return computeVolume(getVolumeCurves(stream), toVolumeSource(stream), index, {
   device});
}
...
float AudioPolicyManager::computeVolume(IVolumeCurves &cu
  • 23
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Android操作系统提供了丰富的音量调节功能,使用户可以根据自己的需求和环境来调节设备的音量。 首先,用户可以通过音量按钮来快速调节设备的音量。通过按下设备的音量上下按钮,可以分别提高或降低音量。这种方式非常方便,用户可以根据需要快速调整音量大小。 除了音量按钮,用户还可以通过系统设置来进一步调节音量。用户可以打开“设置”应用,找到“声音”或“音量”选项。在该选项,用户可以分别设置媒体、通知、来电、闹钟等不同的音量,并使用滑块来调整音量大小。 另外,Android还提供了快捷菜单来调节音量。用户可以从屏幕顶部或底部向上或向下滑动,从而打开快捷菜单。在该菜单,用户可以找到音量控制选项,并通过滑块来调整音量大小。这种方式比较便捷,用户可以在任何应用快速调节音量,而无需进入设置。 最后,有些应用还提供了自定义音量调节功能。例如,音乐播放器应用通常会提供独立的音量控制,用户可以在应用内部调整音量,而不影响其他应用的音量设置。这种方式适用于一些需要专注调整音乐或媒体音量的场景。 总之,Android提供了多种方法来调节音量,包括通过音量按钮、系统设置、快捷菜单和应用自定义等方式。用户可以根据需要和偏好自由地调整设备的音量大小

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值