博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 音量调节
阅读量:5049 次
发布时间:2019-06-12

本文共 1829 字,大约阅读时间需要 6 分钟。

对于Android的音量调节,可以分为按键调节音量和设置中调节音量。我们首先说一说设置中的音量调节。

一、音量的分类:

1.AudioManager.STREAM_VOICE_CALL

2.AudioManager.STREAM_RING

3.AudioManager.STREAM_MUSIC,

4.AudioManager.STREAM_ALARM

5.AudioManager.STREAM_NOTIFICATION

二、音量的范围:

对于不同类型的音量Android规定了不同的范围,在AudioService中有一个数组,定义了不同音量的范围。

private final int[] MAX_STREAM_VOLUME = new int[] {

  5, // STREAM_VOICE_CALL
  7, // STREAM_SYSTEM
  7, // STREAM_RING
  15, // STREAM_MUSIC
  7, // STREAM_ALARM
  7, // STREAM_NOTIFICATION
  15, // STREAM_BLUETOOTH_SCO
  7, // STREAM_SYSTEM_ENFORCED
  15, // STREAM_DTMF
  15 // STREAM_TTS
};

三:调节音量的方法:

int streamValue = am.getStreamVolume(streamType); 获取当前类型的音量值

AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 获取音频服务

audioManager.setStreamVolume(mStreamType, streamValue, 0);  设置音量

现在说一下使用按键调节音量

使用按键调节音量,首先会在PhoneWinManager中收到一个按键的事件,然后调用AudioService中的adjustStreamVolume方法,源码如下:

/**

* Tell the audio service to adjust the volume appropriate to the event.
* @param keycode
*/
void handleVolumeKey(int stream, int keycode) {
IAudioService audioService = getAudioService();
if (audioService == null) {
return;
}
try {
// since audio is playing, we shouldn't have to hold a wake lock
// during the call, but we do it as a precaution for the rare possibility
// that the music stops right before we call this
// TODO: Actually handle MUTE.
mBroadcastWakeLock.acquire();
audioService.adjustStreamVolume(stream,
keycode == KeyEvent.KEYCODE_VOLUME_UP
? AudioManager.ADJUST_RAISE
: AudioManager.ADJUST_LOWER,
0);
} catch (RemoteException e) {
Log.w(TAG, "IAudioService.adjustStreamVolume() threw RemoteException " + e);
} finally {
mBroadcastWakeLock.release();
}
}

在adjustStreamVolume会启动VolumePanel,也就是我们按音量键出现的界面。在VolumePanel中会调用AudioManager的setStreamVolume进行设置音量。

 

转载于:https://www.cnblogs.com/sharecode/p/5651006.html

你可能感兴趣的文章
再次陷入迷惘期的一点感想
查看>>
字符串的常用方法
查看>>
SQL查询语句 常用示例
查看>>
抄写例题作业1
查看>>
Nginx geo模块
查看>>
mingw using pthread
查看>>
centos6.4搭建基于ftp的yum源让本地局域网服务器使用
查看>>
php GD 和图像处理函数, 制作一张图片
查看>>
设计模式第二篇-观察者模式
查看>>
把一元可以分解成几个1毛,2毛,5毛?
查看>>
windows系统安装gcc编译器----c/c++语言编译器
查看>>
12、Oracle中的dual数据表
查看>>
python网络编程-OSI七层模型详解
查看>>
scala 模式匹配详解 2 scala里是怎么实现的?
查看>>
音视频处理中的硬压缩与软压缩
查看>>
STL-map
查看>>
第三周进度条
查看>>
Keil的lib生成个人总结
查看>>
java程序员常见面试题
查看>>
java @SuppressWarnings注解
查看>>