當前位置:
首頁 > 知識 > AudioManager(音頻管理器)

AudioManager(音頻管理器)

1.獲得AudioManager對象實例


AudioManager audiomanage = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);


2.相關方法詳解

常用方法

  • adjustVolume

    (int direction, int flags): 控制手機音量,調大或者調小一個單位,根據第一個參數進行判斷

    AudioManager.ADJUST_LOWER

    ,可調小一個單位;

    AudioManager.ADJUST_RAISE

    ,可調大一個單位
  • adjustStreamVolume

    (int streamType, int direction, int flags): 同上,不過可以選擇調節的聲音類型 1)streamType參數,指定聲音類型,有下述幾種聲音類型:

    STREAM_ALARM

    :手機鬧鈴

    STREAM_MUSIC

    :手機音樂
  • STREAM_RING

    :電話鈴聲

    STREAM_SYSTEAM

    :手機系統
  • STREAM_DTMF

    :音調

    STREAM_NOTIFICATION

    :系統提示
  • STREAM_VOICE_CALL

    :語音電話 2)第二個參數和上面那個一樣,調大或調小音量的 3)可選的標誌位,比如AudioManager.

    FLAG_SHOW_UI

    ,顯示進度條,AudioManager.

    PLAY_SOUND

    :播放聲音
  • setStreamVolume

    (int streamType, int index, intflags):直接設置音量大小
  • getMode

    ( ):返回當前的音頻模式
  • setMode

    ( ):設置聲音模式 有下述幾種模式:

    MODE_NORMAL

    (普通),

    MODE_RINGTONE

    (鈴聲),

    MODE_IN_CALL

    (打電話),

    MODE_IN_COMMUNICATION

    (通話)
  • getRingerMode

    ( ):返回當前的鈴聲模式

  • setRingerMode

    (int streamType):設置鈴聲模式 有下述幾種模式: 如

    RINGER_MODE_NORMAL

    (普通)、

    RINGER_MODE_SILENT

    (靜音)、

    RINGER_MODE_VIBRATE

    (震動)
  • getStreamVolume

    (int streamType): 獲得手機的當前音量,最大值為7,最小值為0,當設置為0的時候,會自動調整為震動模式
  • getStreamMaxVolume

    (int streamType):獲得手機某個聲音類型的最大音量值
  • setStreamMute

    (int streamType,boolean state):將手機某個聲音類型設置為靜音
  • setSpeakerphoneOn

    (boolean on):設置是否打開擴音器
  • setMicrophoneMute

    (boolean on):設置是否讓麥克風靜音
  • isMicrophoneMute

    ():判斷麥克風是否靜音或是否打開

  • isMusicActive

    ():判斷是否有音樂處於活躍狀態
  • isWiredHeadsetOn

    ():判斷是否插入了耳機

其他方法

  • abandonAudioFocus

    (AudioManager.OnAudioFocusChangeListenerl):放棄音頻的焦點
  • adjustSuggestedStreamVolume

    (int,int suggestedStreamType intflags): 調整最相關的流的音量,或者給定的回退流
  • getParameters

    (String keys):給音頻硬體設置一個varaible數量的參數值
  • getVibrateSetting

    (int vibrateType):返回是否該用戶的振動設置為振動類型
  • isBluetoothA2dpOn

    ():檢查是否A2DP藍牙耳機音頻路由是打開或關閉
  • isBluetoothScoAvailableOffCall

    ():顯示當前平台是否支持使用SCO的關閉調用用例
  • isBluetoothScoOn

    ():檢查通信是否使用藍牙SCO

  • loadSoundEffects

    ():載入聲音效果
  • playSoundEffect

    ((int effectType, float volume):播放聲音效果
  • egisterMediaButtonEventReceiver

    (ComponentName eventReceiver): 註冊一個組件MEDIA_BUTTON意圖的唯一接收機
  • requestAudioFocus

    (AudioManager.OnAudioFocusChangeListener l,int streamType,int durationHint) 請求音頻的焦點
  • setBluetoothScoOn

    (boolean on):要求使用藍牙SCO耳機進行通訊
  • startBluetoothSco/stopBluetoothSco()

    ():啟動/停止藍牙SCO音頻連接
  • unloadSoundEffects

    ():卸載音效

3.使用示例


嘿嘿,屬性蠻多的,有些還涉及到藍牙這些東東,這裡我們只講解最常見的一些方法!

遇到一些特殊的沒見過的,我們再來查文檔!

簡單的示例:使用Mediaplayer播放音樂,通過AudioManager調節音量大小與靜音!

對了,先在res下創建一個raw的文件夾,往裡面丟一個MP3資源文件!

運行效果圖

AudioManager(音頻管理器)

代碼實現

布局代碼activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/btn_start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="播放" />
<Button
android:id="@+id/btn_stop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:enabled="false"
android:text="停止" />
<Button
android:id="@+id/btn_higher"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="調高音量" />
<Button
android:id="@+id/btn_lower"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="調低音量" />
<Button
android:id="@+id/btn_quite"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="靜音" />
</LinearLayout>

MainActivity.java

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button btn_start;
private Button btn_stop;
private Button btn_higher;
private Button btn_lower;
private Button btn_quite;
private MediaPlayer mePlayer;
private AudioManager aManager;
//定義一個標誌用來標示是否點擊了靜音按鈕
private int flag = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//獲得系統的音頻對象
aManager = (AudioManager) getSystemService(Service.AUDIO_SERVICE);
//初始化mediaplayer對象,這裡播放的是raw文件中的mp3資源
mePlayer = MediaPlayer.create(MainActivity.this, R.raw.countingstars);
//設置循環播放:
mePlayer.setLooping(true);
bindViews();
}
private void bindViews() {
btn_start = (Button) findViewById(R.id.btn_start);
btn_stop = (Button) findViewById(R.id.btn_stop);
btn_higher = (Button) findViewById(R.id.btn_higher);
btn_lower = (Button) findViewById(R.id.btn_lower);
btn_quite = (Button) findViewById(R.id.btn_quite);
btn_start.setOnClickListener(this);
btn_stop.setOnClickListener(this);
btn_higher.setOnClickListener(this);
btn_lower.setOnClickListener(this);
btn_quite.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_start:
btn_stop.setEnabled(true);
mePlayer.start();
btn_start.setEnabled(false);
break;
case R.id.btn_stop:
btn_start.setEnabled(true);
mePlayer.pause();
btn_stop.setEnabled(false);
break;
case R.id.btn_higher:
// 指定調節音樂的音頻,增大音量,而且顯示音量圖形示意
aManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,
AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI);
break;
case R.id.btn_lower:
// 指定調節音樂的音頻,降低音量,只有聲音,不顯示圖形條
aManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,
AudioManager.ADJUST_LOWER, AudioManager.FLAG_PLAY_SOUND);
break;
case R.id.btn_quite:
// 指定調節音樂的音頻,根據isChecked確定是否需要靜音
flag *= -1;
if (flag == -1) {
aManager.setStreamMute(AudioManager.STREAM_MUSIC, true); //API 23過期- -
// aManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_MUTE,
// AudioManager.FLAG_SHOW_UI); //23以後的版本用這個
btn_quite.setText("取消靜音");
} else {
aManager.setStreamMute(AudioManager.STREAM_MUSIC, false);//API 23過期- -
// aManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_UNMUTE,
// AudioManager.FLAG_SHOW_UI); //23以後的版本用這個
aManager.setMicrophoneMute(false);
btn_quite.setText("靜音");
}
break;
}
}
}

代碼還是非常簡單的,另外設置靜音的方法setStreamMute()在API 23版本過期, 可以使用另一個方法adjustStreamVolume(int, int, int),然後第三個屬性設置:

ADJUST_MUTEADJUST_UNMUTE

對了,還有:

如果adjustStreamVolume()的第三個參數你設置了振動(Vibrator), 需要在AndroidManifest.xml中添加這個許可權哦!

<**uses-permission android:name="android.permission.VIBRATE"**/>


4.代碼示例下載

AudioManagerDemo.zip



本節小結:


好的,本節給大家演示了AudioManager用於調節音量的一個簡單用法,這個類筆者也不常用 到,以後如果有什麼新get的技能再加上吧~嘿嘿,靜音Demo寫好沒?要結合實際需求哈

AudioManager(音頻管理器)

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員小新人學習 的精彩文章:

MySQL使用JPA+Hibernate的9個高性能技巧
基於 Python 自建分散式高並發 RPC 服務

TAG:程序員小新人學習 |