Android 话筒、听筒、扬声器

话筒是输入(麦克风),听筒、扬声器是输出(喇叭)

听筒/扬声器:

  • 听筒是用来听对方传送过来的声音,手机放的MP3和开机铃声是从喇叭发出的。
  • 听筒模式,就是手机上一般听电话的内置小耳机,声音较小。
  • 扬声器模式,就是声音外放,声音较大

话筒:

  • 传声器是一个声-电转换器件(也可以称为换能器或传感器),是和喇叭正好相反的一个器件(电→声)。是声音设备的两个终端,传声器是输入,喇叭是输出。
  • 麦克风,学名为传声器,由Microphone翻译而来。传声器是将声音信号转换为电信号的能量转换器件,也称话筒,麦克风,微音器

AudioManger对象通过getSystemService(Service.AUDIO_SERVICE)获取
AudioManger常用的几个方法void android.media.AudioManager.adjustStreamVolume(int streamType, int direction, int flags):第二个表示调整音乐的大小,第三个参数表示显示调整是的标志 AudioManager.FLAG_SHOW_UI;调整手机类型的声音;第一个参数的几个值
STREAM_ALARM:手机闹铃的声音
STREAM_MUSIC:手机音乐的声音
STREAM_DTMF:DTMF音调的声音
STREAM_RING:电话铃声的声音
STREAM_NOTFICATION:系统提示的声音
STREAM_SYSTEM:系统的声音
STREAM_VOICE_CALL:语音电话声音

void android.media.AudioManager.setMicrophoneMute(boolean on)设置是否让麦克风设置静音
// 打开扬声器
audioManager.setSpeakerphoneOn(true);

void android.media.AudioManager.setRingerMode(int ringerMode):设置手机电话铃声的模式;支持的几个属性值
RINGER_MODE_NORMAL:正常的手机铃声
RINGER_MODE_SILENT:手机铃声静音
RING_MODE_VIBATE:手机震动
void android.media.AudioManager.setStreamMute(int streamType, boolean state)将指定的音量类型调整为静音

Android中打开扬声器关闭麦克风的代码实现:

//获取音频服务  
AudioManager audioManager = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);  
//设置声音模式  
audioManager.setMode(AudioManager.STREAM_MUSIC);  
//关闭麦克风  
audioManager.setMicrophoneMute(false);  
// 打开扬声器  
audioManager.setSpeakerphoneOn(true);  
//实例化一个SoundPool对象  
SoundPool soundPool =new SoundPool(10, AudioManager.STREAM_SYSTEM, 5);  
//加载声音  
int  id = soundPool.load(this,R.raw.beep,5);  
//播放声音  
 soundPool.play(id, 1, 1, 0, 0, 1);  
另外必须加上权限:<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>

Android 手机听筒Earpiece和扬声器speaker切换:

AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
 private void setSpeakerphoneOn(boolean on) 
 {
        if(on)
        {
            audioManager.setSpeakerphoneOn(true);       
        } else 
        {
            audioManager.setSpeakerphoneOn(false);//关闭扬声器                                
            //把声音设定成Earpiece(听筒)出来,设定为正在通话中
            audioManager.setMode(AudioManager.MODE_IN_CALL);                                                                                                                                                                                                                                                                                                                                                                    
        }
 }
### 实现指定扬声器播放音频 为了使应用程序能够在 Android 设备上通过特定的扬声器播放声音,主要依赖于 `AudioManager` 类来管理音频路由。这涉及到获取系统的音频服务并配置合适的参数以确保声音能够按照预期的方式输出。 #### 获取 AudioManager 实例 首先,在 Java 或 Kotlin 代码中获得对 `AudioManager` 的引用: ```java // 获得 AudioManager 对象实例 AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); ``` #### 设置音频流类型 接着设定要使用的音频流类型。对于大多数多媒体应用来说,通常会选择 `STREAM_MUSIC` 流作为目标[^4]: ```java int streamType = AudioManager.STREAM_MUSIC; ``` #### 控制音频输出路径 为了让声音仅从外部扬声器发出而不是耳机或其他连接设备,可以通过调用 `setSpeakerphoneOn()` 方法来进行控制: ```java // 打开扬声器模式 audioManager.setSpeakerphoneOn(true); // 如果需要关闭其他可能正在占用音频焦点的应用程序,则可以请求音频焦点 audioManager.requestAudioFocus(null, streamType, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK); ``` 需要注意的是,当不再需要使用扬声器时应当恢复原来的设置,并放弃之前申请到的音频焦点[^5]: ```java // 关闭扬声器模式 audioManager.setSpeakerphoneOn(false); // 放弃音频焦点 audioManager.abandonAudioFocus(null); ``` 以上就是如何在 Android 应用里让声音只从内置或外置扬声器输出的方法概述。实际项目中还需要考虑更多细节比如处理不同硬件平台之间的差异以及用户偏好等因素的影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大数据AI

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值