<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 10.3 AudioManager(音頻管理器) ## 本節引言: > 在多媒體的第一節,我們用SoundPool寫了個Duang的示例,小豬點擊一個按鈕后,突然發出"Duang"的 一聲,而且當時的聲音很大,嚇死寶寶了![](http://www.runoob.com/wp-content/uploads/2015/10/75690406.jpg),好在不是上班時間,上班時間偷偷寫博客給經理知道 會作死的~嗯,好的,說到這個聲音大小就得介紹下Android為我們提供的(音量大小控制)的API: > > **AudioManager(音頻管理器)**了,該類位于Android.Media包下,提供了音量控制與鈴聲模式相關操作! 本節我們就來學下這個東東的用法,你可以寫一個Demo,一個簡單的靜音,每次看小電影之前,先 進Demo點下靜音,然后![](http://www.runoob.com/wp-content/uploads/2015/10/59360078.jpg),說說而已哈~嗯,話不多說,開始本節內容! > > 官方API文檔:[AudioManager](http://androiddoc.qiniudn.com/reference/android/media/AudioManager.html) ## 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資源文件! **運行效果圖**: ![](http://www.runoob.com/wp-content/uploads/2015/10/22065922.jpg) **代碼實現**: 布局代碼**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_MUTE** 或 **ADJUST_UNMUTE**! 對了,還有: 如果**adjustStreamVolume**()的第三個參數你設置了振動(Vibrator), 需要在AndroidManifest.xml中添加這個權限哦! ``` <**uses-permission android:name="android.permission.VIBRATE"**/> ``` ## 4.代碼示例下載 [AudioManagerDemo.zip](http://static.runoob.com/download/AudioManagerDemo.zip) ## 本節小結: > 好的,本節給大家演示了AudioManager用于調節音量的一個簡單用法,這個類筆者也不常用 到,以后如果有什么新get的技能再加上吧~嘿嘿,靜音Demo寫好沒?要結合實際需求哈~![](http://www.runoob.com/wp-content/uploads/2015/10/68214403.jpg) > > 另外,本周博客可能不會更新得太頻繁,本周要把公司的WebSocket庫替換掉,有得頭痛了~ 好的,就說這么多,謝謝~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看