在做一個 app 時音量鍵會因為在不同情況下做不同的事,例如在有麥克風時需要控制麥克風的傳輸音量,在播音樂時就需要控制音量的輸出,所以這篇就是在說如何自由的控制想要的功能。
常用代碼:
STREAM_ALARM 警報
STREAM_MUSIC 音樂回放即媒體音量
STREAM_NOTIFICATION 窗口頂部狀態欄Notification,
STREAM_RING 鈴聲
STREAM_SYSTEM 系統
STREAM_VOICE_CALL 通話
STREAM_DTMF 雙音多頻
第二個direction,是調整的方向,增加或減少,可以是:
ADJUST_LOWER 降低音量
ADJUST_RAISE 升高音量
ADJUST_SAME 保持不變,這個主要用於向用戶展示當前的音量
第三個flags是一些附加參數,只介紹兩個常用的
FLAG_PLAY_SOUND 調整音量時播放聲音
FLAG_SHOW_UI 調整時顯示音量條,就是按音量鍵出現的那個
在 onKeyDown 下的 case 呼叫音源鍵的上跟下
package com.example.retrofit;
import androidx.appcompat.app.AppCompatActivity;
import android.app.Service;
import android.media.AudioManager;
import android.util.Log;
import android.view.KeyEvent;
public class MainActivity extends AppCompatActivity {
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
AudioManager am = (AudioManager) getSystemService(Service.AUDIO_SERVICE);
switch (keyCode) {
case KeyEvent.KEYCODE_VOLUME_UP:
Log.d("TAG", "音量提升鍵");
am.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI);
break;
case KeyEvent.KEYCODE_VOLUME_DOWN:
Log.d("TAG", "音量減少鍵");
am.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI);
break;
default:
break;
}
return super.onKeyDown(keyCode, event);
}}
這樣當你把程式寫在case裡面時他就可以當一個button使用了