Android中文API(129) —— AudioManager

dearbaba_8520發表於2018-08-10
原文地址為:Android中文API(129) —— AudioManager

 

前言

  本章內容是android.media.AudioManager,版本為Android 3.2 r1,翻譯來自"文煒",歡迎訪問他的部落格:"http://www.cnblogs.com/iezhyg/",再次感謝"文煒"!歡迎你一起參與Android的中文翻譯,聯絡我over140@gmail.com。

 

宣告

  歡迎轉載,但請保留文章原始出處:)

    部落格園:http://www.cnblogs.com/

    Android中文翻譯組: http://goo.gl/6vJQl

 

AudioManager

譯者署名: 文煒

譯者連結:http://www.cnblogs.com/iezhyg/

版本:Android 3.2 r1

 

結構

繼承關係

public class AudioManager extends Object

        

java.lang.Object

android.media.AudioManager

 

類概述

AudioManager類提供訪問音量和振鈴模式的控制。

Context.getSystemService(Context.AUDIO_SERVICE)得到這個類的例項。

 

常量

public static final String ACTION_AUDIO_BECOMING_NOISY

廣播intent,提示應用程式音訊訊號由於音訊輸出的變化將變得“嘈雜”。例如,當拔出一個有線耳機,或斷開一個支援A2DP的音訊接收器,這個intent就會被髮送,且音訊系統將自動切換音訊線路到揚聲器。收到這個intent後,控制音訊流的應用程式會考慮暫停,減小音量或其他措施,以免揚聲器的聲音使使用者驚奇。

常量值:"android.media.AUDIO_BECOMING_NOISY"

 

public static final String ACTION_SCO_AUDIO_STATE_CHANGED

廣播intent,表明藍芽SCO音訊連線狀態已改變。這個intent包含額外資訊:EXTRA_SCO_AUDIO_STATE,它表明新的狀態是SCO_AUDIO_STATE_DISCONNECTED或SCO_AUDIO_STATE_CONNECTED

         參照

                   startBluetoothSco()

         常量值:"android.media.SCO_AUDIO_STATE_CHANGED"

 

public static final int ADJUST_LOWER

減小鈴聲音量。

參照

adjustVolume(int, int)

adjustStreamVolume(int, int, int)

常量值: -1 (0xffffffff)

 

public static final int ADJUST_RAISE

增大鈴聲音量。

參照

adjustVolume(int, int)

adjustStreamVolume(int, int, int)

常量值: 1 (0x00000001)

 

public static final int ADJUST_SAME

保持先前的鈴聲音量。當需要toast顯示音量而不修改它時可能是有用的。

參照

adjustVolume(int, int)

adjustStreamVolume(int, int, int)

常量值: 0 (0x00000000)

 

public static final int AUDIOFOCUS_GAIN

用來指示獲得音訊焦點,請求音訊焦點,未知持續時間

參照

onAudioFocusChange(int)

requestAudioFocus(OnAudioFocusChangeListener, int, int)

常量值 1 (0x00000001)

 

public static final int AUDIOFOCUS_GAIN_TRANSIENT

用來指示臨時獲得或請求音訊焦點,預期持續很短的時間。臨時改變的例子是操縱方向的回放,或一個事件的通知。

參照

onAudioFocusChange(int)

requestAudioFocus(OnAudioFocusChangeListener, int, int)

常量值 2 (0x00000002)

 

public static final int AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK

用來指示一個臨時的音訊焦點請求,預期持續很短的時間,其它音訊程式降低他們的輸出級別後保持播放是可接受的(也被稱為“ducking”)。臨時改變的例子是操縱方向的回入,在後臺回放音樂是可接受的。

參照

onAudioFocusChange(int)

requestAudioFocus(OnAudioFocusChangeListener, int, int)

常量值 3 (0x00000003)

 

public static final int AUDIOFOCUS_LOSS

用來指示在未知持續時間內丟失音訊焦點

參照

onAudioFocusChange(int)

常量值: -1 (0xffffffff)

 

public static final int AUDIOFOCUS_LOSS_TRANSIENT

         用來指示暫時的丟失音訊焦點。

參照

onAudioFocusChange(int)

常量值: -2 (0xfffffffe)

 

public static final int AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK

         用來指示暫時的丟失音訊焦點,若音訊焦點的丟失者想繼續播放,它會降低自己的輸出

音量(也被稱為“ducking”),因為新的焦點擁有者不要求其它靜音。

參照

onAudioFocusChange(int)

常量值: -3 (0xfffffffd)

 

public static final int AUDIOFOCUS_REQUEST_FAILED

一個失敗的焦點轉移請求。

常量值: 0 (0x00000000)

 

public static final int AUDIOFOCUS_REQUEST_GRANTED

一個成功的焦點轉移請求。

常量值: 1 (0x00000001)

 

public static final String EXTRA_RINGER_MODE

新的振鈴模式。

參照

RINGER_MODE_CHANGED_ACTION

RINGER_MODE_NORMAL

RINGER_MODE_SILENT

RINGER_MODE_VIBRATE

常量值: "android.media.EXTRA_RINGER_MODE"

 

public static final String EXTRA_SCO_AUDIO_STATE

         額外的intent ACTION_SCO_AUDIO_STATE_CHANGED包含新的藍芽SCO連線狀態。

常量值: "android.media.extra.SCO_AUDIO_STATE"

 

public static final String EXTRA_VIBRATE_SETTING

特定型別的新振動設定。

參照

VIBRATE_SETTING_CHANGED_ACTION

EXTRA_VIBRATE_TYPE

VIBRATE_SETTING_ON

VIBRATE_SETTING_OFF

VIBRATE_SETTING_ONLY_SILENT

常量值: "android.media.EXTRA_VIBRATE_SETTING"

 

public static final String EXTRA_VIBRATE_TYPE

振動型別設定發生變化。

參照

VIBRATE_SETTING_CHANGED_ACTION

VIBRATE_TYPE_NOTIFICATION

VIBRATE_TYPE_RINGER

常量值: "android.media.EXTRA_VIBRATE_TYPE"

 

public static final int FLAG_ALLOW_RINGER_MODES

當改變音量時,是否將振鈴模式作為候選項。例如,如果為true且音量級別為0音量或用ADJUST_LOWER調整音量,那麼振鈴模式會改變靜音或振動模式。

對鈴聲流來說這個選項預設是開啟的。如果包括這個標誌,這個行為將被展示,不管流型別受振鈴模式的影響。

參照

adjustVolume(int, int)

adjustStreamVolume(int, int, int)

常量值: 2 (0x00000002)

 

public static final int FLAG_PLAY_SOUND

         當改變音量時,是否播放聲音。

若由adjustVolume(int, int)adjustSuggestedStreamVolume(int, int, int)給出,則在某些情況下會被忽略(例如,採用的流型別不是STREAM_RING,或正在向下調整音量)。

參照

adjustStreamVolume(int, int, int)

adjustVolume(int, int)

setStreamVolume(int, int, int)

常量值: 4 (0x00000004)

 

public static final int FLAG_REMOVE_SOUND_AND_VIBRATE

         移除佇列中或正在播放(與改變音量相關)的聲音/振動。

常量值: 8 (0x00000008)

 

public static final int FLAG_SHOW_UI

顯示包含當前音量的toast

參照

adjustStreamVolume(int, int, int)

adjustVolume(int, int)

setStreamVolume(int, int, int)

setRingerMode(int)

常量值: 1 (0x00000001)

 

public static final int FLAG_VIBRATE

若進入振動鈴聲模式是否振動。

常量值: 16 (0x00000010)

 

public static final int FX_FOCUS_NAVIGATION_DOWN

焦點下移。

參照

playSoundEffect(int)

常量值: 2 (0x00000002)

 

public static final int FX_FOCUS_NAVIGATION_LEFT

         焦點左移

參照

playSoundEffect(int)

常量值: 3 (0x00000003)

 

public static final int FX_FOCUS_NAVIGATION_RIGHT

焦點右移。

參照

playSoundEffect(int)

常量值: 4 (0x00000004)

 

public static final int FX_FOCUS_NAVIGATION_UP

         焦點上移。

參照

playSoundEffect(int)

常量值: 1 (0x00000001)

 

public static final int FX_KEYPRESS_DELETE

IME刪除按鍵聲音。

參照

playSoundEffect(int)

常量值: 7 (0x00000007)

 

public static final int FX_KEYPRESS_RETURN

         IME返回按鍵聲音。

參照

playSoundEffect(int)

常量值: 8 (0x00000008)

 

public static final int FX_KEYPRESS_SPACEBAR

IME空格按鍵聲音。

參照

playSoundEffect(int)

常量值: 6 (0x00000006)

 

public static final int FX_KEYPRESS_STANDARD

         IME標準按鍵聲音。

參照

playSoundEffect(int)

常量值: 5 (0x00000005)

 

public static final int FX_KEY_CLICK

         鍵盤和方向鍵點選聲音。

參照

playSoundEffect(int)

常量值: 0 (0x00000000)

 

public static final int MODE_CURRENT

 當前音訊模式。用來請求音訊路由到當前模式。

常量值: -1 (0xffffffff)

 

public static final int MODE_INVALID

無效的音訊模式

常量值: -2 (0xfffffffe)

 

public static final int MODE_IN_CALL

呼叫的音訊模式。建立一個電話呼叫。

常量值: 2 (0x00000002)

 

public static final int MODE_IN_COMMUNICATION

         通訊的音訊模式。建立一個音訊/視訊或VoIP呼叫。

常量值: 3 (0x00000003)

 

public static final int MODE_NORMAL

正常的音訊模式:不是振鈴或建立呼叫。

常量值: 0 (0x00000000)

 

public static final int MODE_RINGTONE        

振鈴的音訊模式。獲取訊號輸入。

常量值: 1 (0x00000001)

 

public static final int NUM_STREAMS

         已棄用。

AudioSystem.getNumStreamTypes() 代替。

常量值: 5 (0x00000005)

 

public static final String RINGER_MODE_CHANGED_ACTION

         廣播intent表明振鈴模式被改變。包括新的振鈴模式。

參照

EXTRA_RINGER_MODE

常量值 "android.media.RINGER_MODE_CHANGED"

 

public static final int RINGER_MODE_NORMAL

         振鈴模式可以是聽得見的或振動的。若音量在改變這一模式前是聽得見的,則它是聽得見的。若開啟振動設定,則它是振動的。

參照

setRingerMode(int)

getRingerMode()

常量值 2 (0x00000002)

 

public static final int RINGER_MODE_SILENT

振鈴模式是靜音且不振動。(這要覆蓋振動設定。)

參照

setRingerMode(int)

getRingerMode()

常量值 0 (0x00000000)

public static final int RINGER_MODE_VIBRATE     

振鈴模式是靜音且振動。(這會導致電話鈴聲一直振動,但若設定當通知振動時振動)

參照

setRingerMode(int)

getRingerMode()

常量值 1 (0x00000001)

 

public static final int ROUTE_ALL

已棄用。

      不要直接設定音訊路由,用方法setSpeakerphoneOn(), setBluetoothScoOn()代替。

用來遮蔽setRouting(int, int, int)的引數。

常量值: -1 (0xffffffff)

 

public static final int ROUTE_BLUETOOTH

已棄用。

ROUTE_BLUETOOTH_SCO。不要直接設定音訊路由,用方法setSpeakerphoneOn(),

setBluetoothScoOn()代替。

常量值: 4 (0x00000004)

 

public static final int ROUTE_BLUETOOTH_A2DP

已棄用。

不要直接設定音訊路由,用方法setSpeakerphoneOn(), setBluetoothScoOn()代替。

路由音訊輸出到藍芽A2DP

常量值: 16 (0x00000010)

 

public static final int ROUTE_BLUETOOTH_SCO

已棄用。

不要直接設定音訊路由,用方法setSpeakerphoneOn(), setBluetoothScoOn()代替。

路由音訊輸出到藍芽SCO

常量值: 4 (0x00000004)

 

public static final int ROUTE_EARPIECE

已棄用。

不要直接設定音訊路由,用方法setSpeakerphoneOn(), setBluetoothScoOn()代替。

路由音訊輸出到聽筒。

常量值: 1 (0x00000001)

 

public static final int ROUTE_HEADSET

已棄用。

不要直接設定音訊路由,用方法setSpeakerphoneOn(), setBluetoothScoOn()代替。

路由音訊輸出到耳機。

常量值: 8 (0x00000008)

 

public static final int ROUTE_SPEAKER

已棄用。

不要直接設定音訊路由,用方法setSpeakerphoneOn(), setBluetoothScoOn()代替。

路由音訊輸出到揚聲器。

常量值: 2 (0x00000002)

 

public static final int SCO_AUDIO_STATE_CONNECTED

EXTRA_SCO_AUDIO_STATE的額外值表明SCO音訊通道已建立。

常量值: 1 (0x00000001)

 

public static final int SCO_AUDIO_STATE_DISCONNECTED

         EXTRA_SCO_AUDIO_STATE的額外值表明SCO音訊通道未建立。

常量值: 0 (0x00000000)

 

public static final int SCO_AUDIO_STATE_ERROR

         EXTRA_SCO_AUDIO_STATE的額外值表明嘗試獲取狀態有錯誤。

常量值: -1 (0xffffffff)

 

public static final int STREAM_ALARM

         用於報警的音訊流。

常量值: 4 (0x00000004)

 

public static final int STREAM_DTMF

用於DTMF Tones的音訊流。

常量值: 8 (0x00000008)

 

public static final int STREAM_MUSIC

用於音樂回放的音訊流。

常量值: 3 (0x00000003)

 

public static final int STREAM_NOTIFICATION

用於通知的音訊流。

常量值: 5 (0x00000005)

 

public static final int STREAM_RING

用於電話鈴聲的音訊流。

常量值: 2 (0x00000002)

 

public static final int STREAM_SYSTEM

用於系統聲音的音訊流。

常量值: 1 (0x00000001)

 

public static final int STREAM_VOICE_CALL

用於電話的音訊流。

常量值: 0 (0x00000000)

 

public static final int USE_DEFAULT_STREAM_TYPE

         建議使用預設的流型別。這可能不適用於所有需要流型別的地方。

常量值: -2147483648 (0x80000000)

 

public static final String VIBRATE_SETTING_CHANGED_ACTION

廣播intent,表明振動設定已改變。包括振動型別和其新設定。

參照

EXTRA_VIBRATE_TYPE

EXTRA_VIBRATE_SETTING

常量值: "android.media.VIBRATE_SETTING_CHANGED"

 

public static final int VIBRATE_SETTING_OFF

建議不振動的振動設定

參照

setVibrateSetting(int, int)

getVibrateSetting(int)

常量值: 0 (0x00000000)

 

public static final int VIBRATE_SETTING_ON

建議在合適時振動的振動設定。

參照

setVibrateSetting(int, int)

getVibrateSetting(int)

常量值: 1 (0x00000001)

 

public static final int VIBRATE_SETTING_ONLY_SILENT

建議只在振動鈴聲模式中振動的振動設定。

參照

setVibrateSetting(int, int)

getVibrateSetting(int)

常量值: 2 (0x00000002)

 

public static final int VIBRATE_TYPE_NOTIFICATION

與通知相符的振動型別。

參照

setVibrateSetting(int, int)

getVibrateSetting(int)

shouldVibrate(int)

常量值: 1 (0x00000001)

 

public static final int VIBRATE_TYPE_RINGER

與振鈴相符的振動型別。

參照

setVibrateSetting(int, int)

getVibrateSetting(int)

shouldVibrate(int)

常量值: 0 (0x00000000)

 

公共方法

public int abandonAudioFocus (AudioManager.OnAudioFocusChangeListener l)

放棄音訊焦點。若存在先前焦點擁有者,則使它接收焦點。

引數

請求焦點的監聽器。

返回值

AUDIOFOCUS_REQUEST_FAILED AUDIOFOCUS_REQUEST_GRANTED

 

public void adjustStreamVolume (int streamType, int direction, int flags)

通過同一方向的一步調整特定流的音量。

         這個方法只能用於代替音訊設定的平臺範圍管理應用程式或主要電話應用程式。

引數

streamType      欲調整的流型別。 值為STREAM_VOICE_CALL, STREAM_SYSTEM,

STREAM_RING, STREAM_MUSICSTREAM_ALARM

Direction           欲調整音量的方向。值為ADJUST_LOWER, ADJUST_RAISE,

ADJUST_SAME.

Flags                  一個或多個標誌。

參照

adjustVolume(int, int)

setStreamVolume(int, int, int)

 

public void adjustSuggestedStreamVolume (int direction, int suggestedStreamType, int flags)

調整最相關流或給定的回放流的音量。

這個方法只能用於代替音訊設定的平臺範圍管理應用程式或主要電話應用程式。

引數

  direction                              欲調整音量的方向。 值為 ADJUST_LOWER, ADJUST_RAISE,

                                               ADJUST_SAME.

  suggestedStreamType     若不存在相關流,則用該流型別。

USE_DEFAULT_STREAM_TYPE在這是有效的。

  Flags                                     一個或多個標誌。

參照

adjustVolume(int, int)

adjustStreamVolume(int, int, int)

setStreamVolume(int, int, int)

 

public void adjustVolume (int direction, int flags)

調整最相關流的音量。例如,若在通話中,不管通話螢幕是否顯示,它都將擁有最高的

優先順序。另一個例子,若音樂正在後臺播放且不在通話中,剛將調整音訊流。

這個方法只能用於代替音訊設定的平臺範圍管理應用程式或主要電話應用程式。

引數

direction           欲調整音量的方向。 值為ADJUST_LOWER, ADJUST_RAISE,

ADJUST_SAME.

flags                            一個或多個標誌。

參照

adjustSuggestedStreamVolume(int, int, int)

adjustStreamVolume(int, int, int)

setStreamVolume(int, int, int)

 

public int getMode ()

返回當前的音訊模式。

返回值

當前音訊模式(MODE_NORMAL, MODE_RINGTONE, MODE_IN_CALL

MODE_IN_COMMUNICATION). HAL中返回當前音訊狀態。

 

public String getParameters (String keys)

         獲得音訊硬體設定的引數值變數。

引數

keys 引數列表

返回值

鍵值對形式的引數列表: key1=value1;key2=value2;...

 

public int getRingerMode ()

返回當前鈴聲模式。

返回值

當前鈴聲模式,值為RINGER_MODE_NORMAL, RINGER_MODE_SILENT,

RINGER_MODE_VIBRATE.

參照

setRingerMode(int)

 

public int getRouting (int mode)

已棄用。

不要直接查詢音訊路由,用方法isSpeakerphoneOn(), isBluetoothScoOn(), isBluetoothA2dpOn() and isWiredHeadsetOn()代替。

      返回指定模式的當前音訊路由位向量。

引數

mode 獲取路由的音訊模式 (e.g., MODE_RINGTONE)

返回值

可以與ROUTE_xxx相比較的一個音訊路由位向量

 

public int getStreamMaxVolume (int streamType)

返回特定流的最大音量索引。

引數

streamType 返回最大音量索引的流型別。

返回值

流的最大有效音量索引。

參照

getStreamVolume(int)

 

public int getStreamVolume (int streamType)

返回特定類的當前音量索引。

引數

streamType 返回音量索引的流型別。

返回值

The current volume index for the stream.

流的當前音量索引。

參照

getStreamMaxVolume(int)

setStreamVolume(int, int, int)

 

public int getVibrateSetting (int vibrateType)

返回振動型別對應的使用者振動設定。

大多數需要振動的客戶端不應該使用這個方法,用shouldVibrate(int)代替。

引數

vibrateType      振動型別。值為VIBRATE_TYPE_NOTIFICATION

VIBRATE_TYPE_RINGER

返回值

振動設定,值為VIBRATE_SETTING_ON, VIBRATE_SETTING_OFF,

VIBRATE_SETTING_ONLY_SILENT.

參照

setVibrateSetting(int, int)

shouldVibrate(int)

 

public boolean isBluetoothA2dpOn ()

檢查A2DP音訊路由到藍芽耳機是否開啟。

返回值

true if A2DP audio is being routed to/from Bluetooth headset; false if otherwise

A2DP音訊被路由到/從藍芽耳機,返回ture。反之,返回false

 

public boolean isBluetoothScoAvailableOffCall ()

表明當前平臺是否支援使用SCO關閉通話用例。當電話不在通話中,應用程式需要使用藍芽SCO音訊,必須先呼叫這個方法以確保平臺支援這一特性。

返回值

true if bluetooth SCO can be used for audio when not in call false otherwise

若當不在通話中時音訊可以使用藍芽SCO,返回ture。反之,返回false

參照

startBluetoothSco()

 

public boolean isBluetoothScoOn ()

檢查通訊是否使用藍芽SCO

返回值

若通訊使用SCO,返回true。反之,返回false

 

public boolean isMicrophoneMute ()

檢查麥克風是否靜音。

返回值

若麥克風靜音,返回true。反之,返回false

 

public boolean isMusicActive ()

檢查是否有音樂是活動的。

返回值

若有音樂曲目是活動的,返回true

 

public boolean isSpeakerphoneOn ()

檢查喇叭擴音器是否開著。

返回值

若喇叭擴音器開著,返回true。反之,返回false

 

public boolean isWiredHeadsetOn ()

檢查音訊路由到有線耳機是否開著。

返回值

若音訊被路由到/從有線耳機,返回true。反之,返回false

 

public void loadSoundEffects ()

載入音效。當音效可用時,要先呼叫這個方法。

 

public void playSoundEffect (int effectType, float volume)

播放音效(按鍵聲音,開啟/關閉蓋子)

引數

effectType        音效的型別。值為FX_KEY_CLICK, FX_FOCUS_NAVIGATION_UP,

                            FX_FOCUS_NAVIGATION_DOWN, FX_FOCUS_NAVIGATION_LEFT,

                            FX_FOCUS_NAVIGATION_RIGHT,FX_KEYPRESS_STANDARD,

                            FX_KEYPRESS_SPACEBAR,FX_KEYPRESS_DELETE,

                            FX_KEYPRESS_RETURN

Volume          音效的音量。 音量值是原始標量so UI controls should be scaled logarithmically. 若音量指定為-1,用AudioManager.STREAM_MUSIC 流音量減去3dB。注意:這個版本應用於啟動和控制音量皮膚的設定。

 

public void playSoundEffect (int effectType)

播放音效(按鍵聲音,開啟/關閉蓋子)

引數

effectType        音效的型別。值為FX_KEY_CLICK, FX_FOCUS_NAVIGATION_UP,

                            FX_FOCUS_NAVIGATION_DOWN, FX_FOCUS_NAVIGATION_LEFT,

                            FX_FOCUS_NAVIGATION_RIGHT, FX_KEYPRESS_STANDARD,

FX_KEYPRESS_SPACEBAR, FX_KEYPRESS_DELETE,

FX_KEYPRESS_RETURN,注意:這個版本使用UI設定決定聲音能否

被聽見。

 

public void registerMediaButtonEventReceiver (ComponentName eventReceiver)

註冊一個元件,它是MEDIA_BUTTON intent的唯一接收器。

引數

eventReceiver 接收媒體按鈕intentBroadcastReceiver 的標誌符。這個廣播

                            接收器必須在應用程式清單中宣告。

 

public int requestAudioFocus (AudioManager.OnAudioFocusChangeListener l, int streamType, int durationHint)

         請求音訊焦點。傳送請求以獲得音訊焦點。

引數

l                           音訊焦點改變時通知的接收器。

streamType      受焦點請求影響的主要音訊流型別。

durationHint    AUDIOFOCUS_GAIN_TRANSIENT表示這個焦點請求是暫時的,很快會放棄這個焦點。暫時請求的例子有操縱方向的回放,通知聲音。用AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK表示若先前焦點擁有者躲開它的音訊輸出,它保持播放是可行的。AUDIOFOCUS_GAIN用於一個求和持續時間的焦點請求,如回放歌曲或音訊。

返回值

AUDIOFOCUS_REQUEST_FAILED AUDIOFOCUS_REQUEST_GRANTED

 

public void setBluetoothA2dpOn (boolean on)

已棄用。

不要使用。

引數

on 若為true,路由A2DP音訊到/從藍芽耳機;若為false,禁用A2DP音訊。

 

public void setBluetoothScoOn (boolean on)

請求在通訊中使用藍芽SCO耳機。

這個方法只能用於代替音訊設定的平臺範圍管理應用程式或主要電話應用程式。

引數

on 若為true,在通訊中使用藍芽SCO;若為false,不使用。

 

public void setMicrophoneMute (boolean on)

設定麥克風是否靜音。

這個方法只能用於代替音訊設定的平臺範圍管理應用程式或主要電話應用程式。

引數

on 若為ture,麥克風靜音。若為flase,不靜音。

 

public void setMode (int mode)

設定音訊模式。

音訊模式包含音訊路由和電話層的行為。因此,這個方法只能用於代替音訊設定的平臺範圍管理應用程式或主要電話應用程式。特別地,MODE_IN_CALL模式只能用在當打電話時的電話程式中,因為它會引起訊號從音訊層饋入到平臺混音器。

引數

mode        請求的音訊模式(MODE_NORMAL, MODE_RINGTONE, MODE_IN_CALL

                   MODE_IN_COMMUNICATION)。通知HAL當前的音訊狀態以便它能

                   適當的路由音訊。

 

public void setParameters (String keyValuePairs)

給音訊硬體設定一個可變數目的引數值。

引數

keyValuePairs 鍵值對形式的引數列表:key1=value1;key2=value2;... 

 

public void setRingerMode (int ringerMode)

設定鈴聲模式。

靜音模式會靜音且不會振動。振動模式會靜音且會振動。正常模式是聽得見的且根據使用者設定決定是否振動。

引數

ringerMode      鈴聲模式。值為RINGER_MODE_NORMAL, RINGER_MODE_SILENT,

                            or RINGER_MODE_VIBRATE.

參照

getRingerMode()

 

public void setRouting (int mode, int routes, int mask)

已棄用。

不要直接設定音訊路由,用方法setSpeakerphoneOn(), setBluetoothScoOn()代替。

為特定模式設定音訊路由。

引數

mode        改變路由的音訊模式。E.g., MODE_RINGTONE.

routes      請求路由的位向量,由一個或多個ROUTE_xxx型別建立。設定位表

                   明路由應該開啟。

mask         改變路由位向量由一個或多個ROUTE_xxx型別建立復原位表明路由

                   應該不改變。

 

public void setSpeakerphoneOn (boolean on)

設定喇叭擴音器開啟或關閉。

這個方法只能用於代替音訊設定的平臺範圍管理應用程式或主要電話應用程式。

引數

on true開啟喇叭擴音器;為false關閉喇叭擴音器。

 

public void setStreamMute (int streamType, boolean state)

靜音或不靜音音訊流。

靜音命令被保護以免客戶端程式死亡:若具有流上的活動靜音請求的程式死亡,這個流會自動取消靜音。

對於給定的流,靜音請求是累計的:AudioManager會從一個或多個客戶端接收數個靜音請求,只有當接收到相同數目的取消靜音請求時流才會取消靜音。

為了更好的使用者體驗,應該程式必須在onPause()中取消已靜音流,若合適在onResume()中再次靜音

這個方法只能用於代替音訊設定的平臺範圍管理應用程式或主要電話應用程式。

引數

streamType      欲靜音/取消靜音的流。

state                           請求靜音狀態:若為true,靜音;若為false,取消靜音。

 

public void setStreamSolo (int streamType, boolean state)

單獨的或不單獨的一個特定類。其它流靜音。

     保護solo命令以免客戶端程式死亡:若有在流上活動的solo請求的程式死亡,所有的流都被靜音,因為這一請求被自動取消靜音。

對給定類的solo請求是累計的:AudioManager會從一個或多個客戶端接收數個solo請求,只有當接收到相同數目的unsoloed請求時流才會是unsoloed

為了更好的使用者體驗,應該程式必須在onPause()unsole a soloed 流,若合適在onResume()中再次solo

引數

streamType      soloed/unsolod的流。

state                 請求的solo狀態:solo開啟為true,關閉為false

 

public void setStreamVolume (int streamType, int index, int flags)

         設定特定流的音量索引。

引數

streamType      欲設定音量索引的流。

index         欲設定的音量索引。參照getStreamMaxVolume(int) 獲得最大有效值。

flags                   一個或多個標誌。

參照

getStreamMaxVolume(int)

getStreamVolume(int)

 

public void setVibrateSetting (int vibrateType, int vibrateSetting)

當振動型別應該振動時,設定配置。

這個方法只能用於代替音訊設定的平臺範圍管理應用程式或主要電話應用程式。

引數

vibrateType      振動型別。值為VIBRATE_TYPE_NOTIFICATION

VIBRATE_TYPE_RINGER

vibrateSetting 振動設定。值為VIBRATE_SETTING_ON, VIBRATE_SETTING_OFF,

VIBRATE_SETTING_ONLY_SILENT

參照

getVibrateSetting(int)

shouldVibrate(int)

 

public void setWiredHeadsetOn (boolean on)

已棄用。

不再使用。

設定開啟或關閉音訊路由到有線耳機。

引數

on true,設定路由音訊到/從有線耳機;為false 禁用有線耳機音訊。

 

public boolean shouldVibrate (int vibrateType)

根據使用者的設定和當前鈴聲模式,返回一個特定型別是否應該振動。

         使用通知來振動的大多數客戶端不應該使用這個方法。若策略不允許,通知管理器不會振動,故客戶端常常設定振動模式且讓通知管理器控制是否振動。

引數

vibrateType      振動型別。值為VIBRATE_TYPE_NOTIFICATION

VIBRATE_TYPE_RINGER

返回值

在呼叫這個方法的瞬間,型別是否應該振動。

參照

setVibrateSetting(int, int)

getVibrateSetting(int)

 

public void startBluetoothSco ()

啟動藍芽SCO音訊連線。

需要許可權:MODIFY_AUDIO_SETTINGS

當電話不在通話中,想傳送/接收音訊到/從藍芽SCO耳機的應用程式可以使用這個方法。

         由於SCO連線會花費幾秒鐘,應用程式不應該依賴方法返回的可用連線,而是註冊接

intent ACTION_SCO_AUDIO_STATE_CHANGED,並等待狀態變為SCO_AUDIO_STATE_CONNECTED

         由於不保證連線成功,應用程式必須等待這個intent超時。

         當完成SCO連線或建立超時,應用程式必須呼叫stopBluetoothSco()去清空請求並關閉藍芽連線。

         即使SCO連線已建立,下列限制應用在音訊輸出流以使他們被路由到SCO耳機:1.流型別必須是STREAM_VOICE_CALL 2.格式必須是mono 3.取樣必須是16kH8kHz

         下列限制應用在輸出流: 1.格式必須是mono2.取樣必須是16kH8kHz

         注意電話應用程式總是有使用SCO連線的優先權。當電話在通話中,呼叫這個方法會被忽略。類似,當應用程式正在使用SCO連線,若接聽來電或呼叫傳送,連線會丟失且不會在通話結束後自動返回。

參照

stopBluetoothSco()

ACTION_SCO_AUDIO_STATE_CHANGED

 

public void stopBluetoothSco ()

停止藍芽SCO音訊連線。

         需要許可權:MODIFY_AUDIO_SETTINGS

應用程式用startBluetoothSco()請求使用藍芽SCO音訊,當應用程式完成SCO連線或建立時間超時, 必須呼叫這個方法。

參照

startBluetoothSco()

 

public void unloadSoundEffects ()

不載入音效。當音效被禁用時,呼叫這個方法釋放一些記憶體。

 

public void unregisterMediaButtonEventReceiver (ComponentName eventReceiver)

移除註冊MEDIA_BUTTON intent的接收器。

引數

eventReceiver                   registerMediaButtonEventReceiver(ComponentName)註冊的BroadcastReceiver的識別符號。

 

補充

         文章精選

                 Android 小專案之--使用【AudioManager】類控制音量

      android之聲音管理器AudioManager的使用

                  


轉載請註明本文地址:Android中文API(129) —— AudioManager

相關文章