public
class
AudioActivity
extends
Activity
{
private
AudioManager mAudioManager;
private
static
final
String TAG =
"AudioActivity"
;
@Override
protected
void
onCreate
(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_audio);
initData();
mBroadcast =
new
MyRingerBroadcast();
IntentFilter intent =
new
IntentFilter();
intent.addAction(AudioManager.RINGER_MODE_CHANGED_ACTION);
registerReceiver(mBroadcast, intent);
@Override
protected
void
onDestroy
() {
super
.onDestroy();
unregisterReceiver(mBroadcast);
private
void
initData
() {
mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
int
mode = mAudioManager.getRingerMode();
Log.i(TAG,
"initData: mode="
+ mode);
* 静音模式
*
@param
view
public
void
silent
(View view) {
mAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
* 震动模式
*
@param
view
public
void
vibrate
(View view) {
mAudioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
int
mode = mAudioManager.getRingerMode();
Log.i(TAG,
"initData: mode="
+ mode);
* 正常模式
*
@param
view
public
void
normal
(View view) {
mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
int
mode = mAudioManager.getRingerMode();
Log.i(TAG,
"initData: mode="
+ mode);
* 单步调整媒体声音
public
void
adjustMusicVolume
() {
int
curVolume = mAudioManager.getStreamVolume(STREAM_MUSIC);
for
(
int
i =
0
; i <= curVolume; i++) {
mAudioManager.adjustStreamVolume(STREAM_MUSIC, ADJUST_RAISE, FLAG_SHOW_UI);
* 调整某个指定音频流的声音的音量
public
void
setMusicVolume
() {
int
curVolume = mAudioManager.getStreamVolume(STREAM_MUSIC);
mAudioManager.setStreamVolume(STREAM_MUSIC, curVolume ,
0
)
private
MyRingerBroadcast mBroadcast;
*监听响铃模式切换
private
class
MyRingerBroadcast
extends
BroadcastReceiver
{
@Override
public
void
onReceive
(Context context, Intent intent) {
String action = intent.getAction();
int
mode = intent.getIntExtra(AudioManager.EXTRA_RINGER_MODE, -
1
);
Log.i(TAG,
"onReceive: action=="
+ action +
" the mode="
+ mode);
小米手机在静音模式下没有媒体声音的解决方案
一般手机在设置为静音模式下依然保持媒体声音,也就是在静音模式下,播放音乐,视频依然有声音。但是小米手机在设置为静音模式同时将媒体声音自动调整为0。为了解决小米手机在设置静音模式下依然保持媒体声音,解决方案为:在设置静音的同时延时大概500ms之后调整媒体声音到静音之前的声音。
int curVolume = mAudioManager.getStreamVolume(STREAM_MUSIC);
mAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
mAudioManager.setStreamVolume(STREAM_MUSIC, curVolume , 0);
}, 500);
注意:这里为何要延时500ms之后才去调整媒体声音呢?因为不延时调整媒体声音会无效。声音涉及到硬件资源,设置静音模式后立马去调整声音可能资源还没有及时释放,所以延时500ms等待硬件资源释放后在去调整媒体声音及有效了。
回声(或称回音)是指障碍物对
声音
的反射。声波在遇到障碍物时,一部分声波会穿过障碍物,而另一部分声波会反射回来形成回声。若障碍物具有坚硬光滑的表面易产生回声;反之,具有柔软的表面则易吸收
声音
;另外,粗糙的表面易散射
声音
。回声相比那些直接传播的
声音
所经过的路程更长,所以会比直接传播的
声音
晚被听到。如果两列声波的时间间隔小于0.1秒,人耳边无法分辨,只能听到被延长的
声音
。因为室温(20℃)时空气中的声速是343米每秒,所以站在声源处的人要听到回声需要障碍物到声源的距离至少17米。
很多时候直播有连麦的需求,这时
Audio
Manager
audio
Manager
= (
Audio
Manager
) mContext.getSystemService (Context.
AUDIO
_SERVICE);
//
audio
Manager
.setMode(
Audio
Man...
问题描述:在不同的
使用
场景,用户会有调节不同
音频
流音量的需求,APP可以调用接口setStreamVolume(int streamType, int index, int flags)来满足这一需求,但往往开发者并没有将streamType参数与当前场景正在播放的
音频
流类型设置一致,并且该接口可以截获系统的音量按键,导致用户
使用
APP时,按音量键调节音量后,当前的
声音
音量大小却没有变化。建议:由于这个接口直接作用在手机的底层麦克风数据通路,影响范围很大,不建议
使用
这个接口来实现语音静音发送的需求。
这是自己第一次通过写文章的方式来记录在开发中的一些心得,在这里也希望这是一个好的开始并一直坚持下去,同时更是希望能帮助到有需要的开发者。
这篇文章主要讲述的是
Android
中
使用
Audio
Record类和
Audio
Track类来进行语音采集和播放相关的知识,在这篇文章中首先介绍的是有关
声音
的一些概念性知识,然后介绍
声音
的采集,
2012-04-03
Audio
输出
通道
有很多,Speaker、headset、bluetooth A2DP等。通话或播放音乐等
使用
Audio
输出过程中,可能发生
Audio
输出
通道
的切换。比如,插入有线耳机播放音乐时,
声音
是从耳机发出的;而此时拔出耳机,
Audio
输出
通道
会发生切换。如果音乐播放器不做处理,
Audio
输出是被切换到扬声器的,
声音
直接从Speaker发出。我们在...
a、通过系统服务获得
声音
管理
器:
Audio
Manager
audio
Manager
= (
Audio
Manager
)getSystemService(Service.
AUDIO
_SERVICE);b、根据实际需要调用适当的方法:(常用方法)
audio
Manager
.adjustStreamVolume(int streamType, int direction, int flags);stre...
初始化
音频
管理
器/*** 初始化
音频
管理
器*/private void init
Audio
Manager
() {
audio
Manager
= (
Audio
Manager
) context.getSystemService(Context.
AUDIO
_SERVICE);if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){aud...
废话不多说,直接上代码:private void setSpeakerphoneOn(boolean on) {if (on) {// 为true打开喇叭扩音器;为false关闭喇叭扩音器.
audio
Manager
.setSpeakerphoneOn(true);} else {
audio
Manager
.setSpeakerphoneOn(false);//关闭扬声器
audio
Manager
.se...
音频
播放
Audio
Track之入门篇
音频
播放
Audio
Track作用
Audio
Track实现PCM
音频
播放1. 配置基本参数StreamType
音频
流类型MODE模式(static和stream两种)最小缓冲区大小2. 创建
Audio
Track对象3. 获取PCM文件,转成DataInputStream4. 开启/停止播放总结
音频
播放
音频
播放
声音
分为MediaPlayer和
Audio
Trac...
开始写文章了,才知道写文章真心耗费心力,希望自己尽量做到快速更新,也希望这些文章真心能帮助到开发者们。
这篇文章主要讲述
Android
声音
采集相关的知识,首先介绍
声音
的基础知识,然后介绍如何采集
声音
,最后再讲述
Android
上
声音
录制和回声消除的相关步骤。
整个项目已经开源,开源地址:SopCastComponent
二、基础知识
声音
的原理
声音
是振动产生的声波,通过介质(空气或固体、液体)传播并能被人或动物听觉器官所感知的波动现象。
声音
的频率一般会以赫兹表示,记为Hz,指每秒钟周
手机都有
声音
模式,
声音
、静音还有震动,甚至震动加
声音
兼备,这些都是手机的基本功能。在
Android
手机中,我们同样可以通过
Android
的SDK提供的
声音
管理
接口来
管理
手机
声音
模式以及调整
声音
大小,这就是
Android
中
Audio
Manager
的
使用
。
以下分别是
Audio
Ma
本文实例讲述了
Android
开发之关闭和打开Speaker(扬声器)的方法。分享给大家供大家参考,具体如下:private int currVolume = 0;/*** 打开扬声器*/private void openSpeaker() {try{
Audio
Manager
audio
Manager
= (
Audio
Manager
) getSystemService(Context.
AUDIO
_S...