編輯:關於Android編程
標簽(空格分隔): Android基礎入門教程
在多媒體的第一節,我們用SoundPool寫了個Duang的示例,小豬點擊一個按鈕後,突然發出”Duang”的
一聲,而且當時的聲音很大,嚇死寶寶了,好在不是上班時間,上班時間偷偷寫博客給經理知道
會作死的~嗯,好的,說到這個聲音大小就得介紹下Android為我們提供的(音量大小控制)的API:
AudioManager(音頻管理器)了,該類位於Android.Media包下,提供了音量控制與鈴聲模式相關操作!
本節我們就來學下這個東東的用法,你可以寫一個Demo,一個簡單的靜音,每次看小電影之前,先
進Demo點下靜音,然後,說說而已哈~嗯,話不多說,開始本節內容!
官方API文檔:AudioManager
AudioManager audiomanage = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
常用方法:
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():卸載音效
嘿嘿,屬性蠻多的,有些還涉及到藍牙這些東東,這裡我們只講解最常見的一些方法!
遇到一些特殊的沒見過的,我們再來查文檔!
簡單的示例:使用Mediaplayer播放音樂,通過AudioManager調節音量大小與靜音!
對了,先在res下創建一個raw的文件夾,往裡面丟一個MP3資源文件!
運行效果圖:
代碼實現:
布局代碼activity_main.xml:
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 or ADJUST_UNMUTE!
對了,還有:
如果adjustStreamVolume()的第三個參數你設置了振動(Vibrator),
需要在AndroidManifest.xml中添加這個權限哦!
<uses-permission android:name=”android.permission.VIBRATE”/>
前言開發做得久了,總免不了會遇到各種坑。而在Android開發的路上,『軟鍵盤擋住了輸入框』這個坑,可謂是一個曠日持久的巨坑——來來來,我們慢慢看。入門篇最基本的情況,如
sina刷新 這種下拉刷新的方式是比較簡單的。上個圖: 這種刷新方式的思路是這樣的: 首先是需要一個HeaderVIew也就是刷新時頭部所顯示出來的數據。這個view的
你應該有過手機解鎖密碼忘記的經歷吧,一開始對圖案解鎖十分好奇,設置了一個比較復雜的圖案,只是沒有過多久就忘記了,只能通過刷機解決了,還好本文的出現將會幫助一
實際上字母索引表的效果,可以說在現在的眾多APP中使用的非常流行,比如支付寶,微信中的聯系人,還有購物,買票的APP中選擇全國城市,切換城市的時候,這時候的城市也就是按照