Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android中文API(129) —— AudioManager

Android中文API(129) —— AudioManager

編輯:Android開發實例

前言

  本章內容是android.media.AudioManager,版本為Android 3.2 r1,翻譯來自"文炜。
 

 

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)

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

參數

I 請求焦點的監聽器。

返回值

AUDIOFOCUS_REQUEST_FAILED或 AUDIOFOCUS_REQUEST_GRANTED

 

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

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

         這個方法只能用於代替音頻設置的平台范圍管理應用程序或主要電話應用程序。

參數

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

STREAM_RING, STREAM_MUSIC或STREAM_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 接收媒體按鈕intent的BroadcastReceiver 的標志符。這個廣播

                            接收器必須在應用程序清單中聲明。

 

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.取樣必須是16kH或8kHz。

         下列限制應用在輸出流: 1.格式必須是mono2.取樣必須是16kH或8kHz。

         注意電話應用程序總是有使用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的標識符。

轉自:http://www.cnblogs.com/over140/archive/2011/08/07/2130393.html

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved