云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > RingtoneManager

RingtoneManager

  • 62 次阅读
  • 3 次下载
  • 2026/4/25 23:57:12

Android音量调节的实现(RingtoneManager和RingerVolumePreference)

分类: Android 2011-08-12 20:54 4044人阅读 评论(6) 收藏 举报

Android音量调节的实现,分两种情况说明,一种是在settings的音量设置界面,按下侧键进行调节;另一种是在非settings界面,按下侧键进行音量调节。这两种调节方式的实现不一样,分别操作的是两个不同的音量SeekBar。下面,分别进行分析:

一. 在settings的音量设置界面,按下侧键进行调节:

在settings的音量设置界面,按下侧键回有音量的调节,同时,会播放音乐(这个音乐是在铃声设置中设置的),整个过程的实现的相关代码如下: 1. settings的音量设置界面:

文件: packages/apps/Settings/src/com/android/settings/RingerVolumePreference.java 说明: 在这个RingerVolumePreference,会调用 audioManager.setStreamVolume进行音量大小的调节,但是,播放声音却不在这个文件中。 2. 播放音乐:

文件: frameworks/base/core/java/android/preference/VolumePreference.java 说明:RingerVolumePreference继承自VolumePreference,当点击侧键时,VolumePreference的onKey函数会收到键值,并通过

mSeekBarVolumizer.changeVolumeBy, sample, mRingtone.play 最终播放出音乐。 值得注意的是:mRingtone.play用的是 new MediaPlayer 的方式,通过创建MediaPlayer来实现音乐的播放。

二. 在非settings界面按侧键进行音量的调节:

实现: 通过RingtoneManager会调用到AudioManager的adjustStreamVolume,进而调用AudioServicer的adjustStreamVolume,最主要的就是这个函数了。 在这个函数中:

1. checkForRingerModeChange(oldIndex, direction); oldIndex指的是知之前的音量,direction表明是增加还是降低音量。见名知意,这个函数用于检测改变铃声模式,如振动,静音等,是通过调用setRingerMode函数来实现的。而setRingerMode通过发送广播(调用broadcastRingerMode函数)来通知模式的改变。

2. sendMsg: 发送消息,处理这个消息的是handleMessage函数,调用

setStreamVolumeIndex来调节音量,其实,最终是通过AudioPolicyService的对应函数实现的。

3. mVolumePanel.postVolumeChanged(streamType, flags); // 用于更新UI.

4. sendVolumeUpdate: 会发送AudioManager.VOLUME_CHANGED_ACTION,处理这个intent的是最终的目的是用于播放那个短促的蜂鸣声(见ToneGenerator.java的startTone)。

5. ToneGenerator.java的startTone的分析: 通过jni调用到ToneGenerator.cpp的startTone函数。

值的注意的是,最终是通过AudioTrack来实现这个声音的处理的,而不是创建MediaPlay, 这与settings中的处理方式是不同的。

题外话: 来电的声音播放方式也是通过Ringtone,创建MediaPlay来实现的。 转载自:http://www.hlovey.cn/2009/09/24/android-ringtone-ringvolumn.html

通过程序获取android系统手机的铃声和音量。同样,设置铃声和音量的方法也很简单! 1. AudioManager mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); //通话音量

1. 2. 3. int max = mAudioManager.getStreamMaxVolume( AudioManager.STREAM_VOICE_CALL ); int current = mAudioManager.getStreamVolume( AudioManager.STREAM_VOICE_CALL ); Log.d(\//系统音量

1. 2. 3. max = mAudioManager.getStreamMaxVolume( AudioManager.STREAM_SYSTEM ); current = mAudioManager.getStreamVolume( AudioManager.STREAM_SYSTEM ); Log.d(\//铃声音量

1. 2. 3. max = mAudioManager.getStreamMaxVolume( AudioManager.STREAM_RING ); current = mAudioManager.getStreamVolume( AudioManager.STREAM_RING ); Log.d(\//音乐音量

1. 2. 3. max = mAudioManager.getStreamMaxVolume( AudioManager.STREAM_MUSIC ); current = mAudioManager.getStreamVolume( AudioManager.STREAM_MUSIC ); Log.d(\//提示声音音量

1. 2. 3. max = mAudioManager.getStreamMaxVolume( AudioManager.STREAM_ALARM ); current = mAudioManager.getStreamVolume( AudioManager.STREAM_ALARM ); Log.d(\设置音量的方法也很简单,AudioManager提供了方法:

public void setStreamVolume(int streamType, int index, int flags) 其中 streamType 有内置的常量,去文档里面就可以看到

搜索更多关于: RingtoneManager 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
本文作者:...

共分享92篇相关文档

文档简介:

Android音量调节的实现(RingtoneManager和RingerVolumePreference) 分类: Android 2011-08-12 20:54 4044人阅读 评论(6) 收藏 举报 Android音量调节的实现,分两种情况说明,一种是在settings的音量设置界面,按下侧键进行调节;另一种是在非settings界面,按下侧键进行音量调节。这两种调节方式的实现不一样,分别操作的是两个不同的音量SeekBar。下面,分别进行分析: 一. 在settings的音量设置界面,按下侧键进行调节: 在settings的音量设置界面,按下侧键回有音量的调节,同时,会播放音乐(这个音乐是在铃声设置中设置的),整个过程的实现的相关代码如下: 1. settings的音量设置界面: 文件: p

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com