AudioManager控制声音和铃声

news/2024/11/29 19:48:05/

AudioManager最主要的是它能控制声音和铃声

 

这里只讲述几个比较常用到的方法:

adjustVolume(intdirection, int flags) ——用来控制手机音量大小,当传入的第一个参数为 AudioManager.ADJUST_LOWER时,可将音量调小一个单位,传入AudioManager.ADJUST_RAISE 时,则可以将音量调大一个单位。

adjustStreamVolume(intstreamType, int direction, int flags)——(以步长)调节手机音量大小

参数1:声音类型,可取为STREAM_VOICE_CALL(通话)、STREAM_SYSTEM(系统声音)、STREAM_RING(铃声)、STREAM_MUSIC(音乐)、STREAM_ALARM(闹铃声)

参数2:调整音量的方向,可取ADJUST_LOWER(降低)、ADJUST_RAISE(升高)、ADJUST_SAME

参数3:可选的标志位

setStreamVolume(intstreamType, int index, int flags)——直接设置音量大小

getMode() ——返回当前音频模式,如NORMAL(普通), RINGTONE(铃声), or IN_CALL(通话)

setMode()——设置声音模式,可取值NORMAL(普通),RINGTONE(铃声), or IN_CALL(通话)

getRingerMode()——返回当前的铃声模式。如RINGER_MODE_NORMAL(普通)、RINGER_MODE_SILENT(静音)、RINGER_MODE_VIBRATE(震动)

setRingerMode(intringerMode) ——改变铃声模式

getStreamVolume(intstreamType) ——取得当前手机的音量,最大值为7,最小值为0,当为0时,手机自动将模式调整为“震动模式”。

getStreamMaxVolume(intstreamType)——获得当前手机最大铃声。

setStreamMute(intstreamType, boolean state)

//音量控制,初始化定义

AudioManagermAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);

//最大音量

int  maxVolume =mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);

//当前音量

int  currentVolume =mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);

直接控制音量的多少:

以一步步长控制音量的增减,并弹出系统默认音量控制条:

 

//降低音量,调出系统音量控制

if(flag ==0){

            mAudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC

                                                                            ,AudioManager.ADJUST_LOWER

                                                                            ,AudioManager.FX_FOCUS_NAVIGATION_UP);

}else if(flag ==1){ 

//增加音量,调出系统音量控制

            mAudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC

                                                                            ,AudioManager.ADJUST_RAISE

        ,AudioManager.FX_FOCUS_NAVIGATION_UP);

}

 

常用方法:

androidaudioManager获取音量:

先获取AudioManager实例,

AudioManagermAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);

//通话音量

int max =mAudioManager.getStreamMaxVolume( AudioManager.STREAM_VOICE_CALL ); 

int current =mAudioManager.getStreamVolume( AudioManager.STREAM_VOICE_CALL ); 

//系统音量

int max =mAudioManager.getStreamMaxVolume( AudioManager.STREAM_SYSTEM ); 

current =mAudioManager.getStreamVolume( AudioManager.STREAM_SYSTEM ); 

//铃声音量

max =mAudioManager.getStreamMaxVolume( AudioManager.STREAM_RING ); 

current =mAudioManager.getStreamVolume( AudioManager.STREAM_RING ); 

//音乐音量

max =mAudioManager.getStreamMaxVolume( AudioManager.STREAM_MUSIC ); 

current =mAudioManager.getStreamVolume( AudioManager.STREAM_MUSIC ); 

//提示声音音量

max =mAudioManager.getStreamMaxVolume( AudioManager.STREAM_ALARM ); 

current =mAudioManager.getStreamVolume( AudioManager.STREAM_ALARM ); 

 

7)处理Audio硬件设备

查找正在使用的声音设备

if(isBluetoothA2dpOn()) { 

    // Adjust output forBluetooth. 

} else if(isSpeakerphoneOn()) { 

    // Adjust output forSpeakerphone. 

} else if(isWiredHeadsetOn()) { 

    // Adjust output for headsets 

} else {  

    // If audio plays and noone can hearit, is it still playing? 

}

 

当耳机设备或蓝牙设备断开连接之后,Audio设备自动切换到喇叭,会发送ACTION_AUDIO_BECOMING_NOISY 广播,注册一个广播接收者用于接收该 广播就可以控制声音播放

private classNoisyAudioStreamReceiver extends BroadcastReceiver { 

    @Override 

    public void onReceive(Contextcontext, Intent intent) { 

        if(AudioManager.ACTION_AUDIO_BECOMING_NOISY.equals(intent.getAction())) { 

            // Pause the playback 

       } 

    } 

 

private IntentFilterintentFilter = newIntentFilter(AudioManager.ACTION_AUDIO_BECOMING_NOISY); 

 

private voidstartPlayback() { 

   registerReceiver(myNoisyAudioStreamReceiver(), intentFilter); 

 

private voidstopPlayback() { 

   unregisterReceiver(myNoisyAudioStreamReceiver); 

}

 

 

转载于:https://www.cnblogs.com/yangjies145/p/6361840.html


http://www.ppmy.cn/news/753532.html

相关文章

Android 一个简单手机响铃功能实现

当有新通知到达时,常常以响铃方式提醒用户。这里主要讲怎么通过简单的代码来播放系统默认的铃声。请参阅下面的关键代码: import java.util.Random; import android.app.Notification; import android.app.NotificationManager; import android.app.Serv…

基于java的敬老院养老院管理系统

基于java的敬老院养老院管理系统 源码数据库文档ppt部署调试视频齐全 系统管理员用户功能介绍: 用户管理员、员工登录、老人信息管理、床位分配管理、护工薪资管理、护工请假记录、老人请假记录、入住费用和事故记录管理以及对这些功能的增、删、改、查处理 普通管理…

Android系统铃声音量监控(铃声、音量、静音、扬声器)

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

老人专用计算机,老年人专用的平板电脑:不用教 一看就会用

原标题:老年人专用的平板电脑:不用教 一看就会用 智能科技越来越普及了,就连老人也开始酷爱玩自拍玩游戏了,所以很多时候,老年人也需要一台平板电脑。因此,有人已经很贴心的开发了这么一个平板电脑的“简易…

android 播放闹钟声音,如何在Android中播放铃声/闹钟声音

我一直在寻找无处不在如何在Android中播放铃声/报警声音。 我按一个按钮,我想播放铃声/报警声。我找不到一个简单,直接的样本。是的,我已经看过闹钟源代码…但它不直接,我不能编译它。 我不能使这项工作: Uri alert R…

怎么更改开机铃声的声音大小

以下代码针对的是android 6.0.1 1. 关于开机关机铃声的代码位置是: /frameworks/base/cmds/bootanimation/ 下面。 2. 打开 BootAnimation.cpp 文件。搜索关键字 “volume” 。关于铃声声音大小的代码如下: float volume 0.9;if (mMode NORM) {mPla…

关爱孤寡老人 用心陪伴 让老人安度幸福晚年

10月6日,一个再普通不过的日子,却又是一个值得回忆的日子,在莱阳市众城志愿服务中心王艳梅的带领下,志愿者王伟,罗宇程(学生)李宏英,乔荣(学生)战一豪&#x…

大数据告诉你中老年人上网爱干什么

中老年人最爱用微信,最喜欢看心灵鸡汤,最易被“免费领红包”骗……昨天,中国社科院国情调查与大数据研究中心和腾讯社会研究中心联合发布《中老年互联网生活研究报告》,报告对50岁以上人群的互联网生活进行了多方面解读。 数据显示…