このセクションの概要:
マルチメディアの最初のセクションでは、SoundPool を使用して Duang の例を作成しました。豚がボタンをクリックした後、突然「Duang」という音が出ました。その音は非常に大きく、赤ちゃんは死ぬほど怖がりました。
, 幸いなことに勤務時間ではありません。勤務時間中にこっそりブログを書いてマネージャーに知らせると命を落としますよ~まあ、音量に関して言えば、提供されているAPI(音量ボリュームコントロール)を導入する必要がありますアンドロイドによる:
Android.Media パッケージの下にあるAudioManager (オーディオ マネージャー) は、音量コントロールと着信音モード関連の操作を提供します。このセクションでは、このものの使用方法を学びます。デモ、単純なミュートを作成できます。短いムービーを見る前に、デモを進めて、ミュートをクリックしてください。
, ただの話ですよ~それでは早速、このセクションを始めましょう!
公式 API ドキュメント: AudioManager
1. AudioManager オブジェクトのインスタンスを取得します
AudioManager audiomanage = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
2.関連メソッドの詳細説明
一般的な方法:
- 調整ボリューム(int 方向、整数フラグ): 携帯電話の音量を制御し、1 単位で上げたり下げたり、1 単位で 調整できる 最初のパラメータAudioManager.ADJUST_LOWERと、AudioManager.ADJUST_RAISEに従って判断します。 1台で調整可能
- 調整ストリームボリューム(int streamType、int 方向、int flags): 上記と同じですが、サウンド タイプを調整することを選択できます 1) streamType パラメーター、サウンド タイプを指定します。次のサウンド タイプがあります: STREAM_ALARM: 携帯電話のアラーム STREAM_MUSIC: 携帯 電話電話の 音楽STREAM_RING
:電話の着信音 STREAM_SYSTEAM : 携帯電話システム
STREAM_DTMF : トーン STREAM_NOTIFICATION : システム プロンプト
STREAM_VOICE_CALL : 音声通話 2) 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 (): ヘッドセットが接続されているかどうかを判断します
その他の方法:
- 放棄AudioFocus (AudioManager.OnAudioFocusChangeListenerl): オーディオフォーカスを放棄します。
- AdjustSuggestedStreamVolume (int,int requestedStreamType intflags): 最も関連性の高いストリーム、または指定されたフォールバック ストリームのボリュームを調整します。
- getParameters (文字列キー): オーディオ ハードウェアのパラメータ値の可変数を設定します。
- getVibrateSetting (int vibrateType): ユーザーの振動が振動タイプに設定されているかどうかを返します。
- isBluetoothA2dpOn (): A2DP Bluetooth ヘッドセットのオーディオ ルーティングがオンかオフかを確認します。
- isBluetoothScoAvailableOffCall (): 現在のプラットフォームが SCO を使用したオフコールのユースケースをサポートしているかどうかを表示します
- isBluetoothScoOn (): 通信が Bluetooth SCO を使用しているかどうかを確認します
- loadSoundEffects (): サウンドエフェクトをロードします
- playSoundEffect ((int effectType, float volume): サウンドエフェクトを再生します
- registerMediaButtonEventReceiver (ComponentNameeventReceiver): コンポーネント MEDIA_BUTTON インテントの一意のレシーバーを登録します
- requestAudioFocus (AudioManager.OnAudioFocusChangeListener l, int streamType, int periodHint) オーディオ フォーカスの要求
- setBluetoothScoOn (ブール値 on): 通信には Bluetooth SCO ヘッドセットの使用が必要です
- startBluetoothSco/stopBluetoothSco() (): Bluetooth SCO オーディオ接続の開始/停止
- unloadSoundEffects (): サウンドエフェクトをアンロードします
3. 使用例
属性は非常に多く、中には Bluetooth などに関連するものもありますが、ここでは最も一般的な方法の一部のみを説明します。
これまで見たことのない特別なものに出会ったら、もう一度ドキュメントを確認してみましょう。
簡単な例: Mediaplayer を使用して音楽を再生し、音量を調整し、AudioManager を通じてミュートします。
ちなみに、まずres配下にrawフォルダを作成し、そこにMP3リソースファイルを放り込みます!
ランニング効果図:
コードの実装:
レイアウトコード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="停止" /> <ボタン android:id="@+id/btn_higher" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="调高音量" /> <ボタン android:id="@+id/btn_ lower" android :layout_width="wrap_content" android:layout_height="wrap_content" android:text="调低音量" /> <ボタン android:id="@+id/btn_quite" android:layout_width="wrap_content" android:layout_height="wrap_content " android:text="静音" /> </LinearLayout>
MainActivity.java:
public class MainActivity extends AppCompatActivityimplements View.OnClickListener { private Button btn_start; private Button btn_stop; private Button btn_higher ; private Button btn_ lower ; private Button btn_quite ; vate AudioManager aManager; //ミュートがクリックされたかどうかを示すフラグを定義 Button private int flag = 1; @Override protected void onCreate(Bundle SavedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //システムのオーディオ オブジェクトを取得 aManager = (AudioManager) getSystemService(Service.AUDIO_SERVICE ); //メディアプレーヤー オブジェクトを初期化します。これは生ファイル内の mp3 リソースです btn_higher.setOnClickListener(this); mePlayer = MediaPlayer.create(MainActivity.this, R.raw.countingstars); //設置循環播放: mePlayer.setLooping(true); バインドビュー(); private void bindingViews() { btn_start = (ボタン) findViewById(R.id.btn_start) ; btn_stop = (ボタン) findViewById(R.id.btn_stop); btn_higher = (ボタン) findViewById(R.id.btn_higher); btn_ lower = (ボタン) findViewById(R.id.btn_ lower); btn_quite = (ボタン) findViewById(R.id.btn_quite); btn_start.setOnClickListener(this); btn_stop.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); 壊す; case R.id.btn_stop: btn_start.setEnabled(true); mePlayer.pause(); btn_stop.setEnabled(false); 壊す; 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("Cancel mute"); } else { AMANAGER.SetStstreammute (Audiomanager.stream_music, FALSE); // API 23 の有効期限- // amanager.adjustStreamVolum (A udiomanager.stream_music, Audiomanager.adjust_unmute, / / Audiomanager .FLAG_SHOW_UI); //バージョン 23 以降ではこれを使用します aManager.setMicrophoneMute(false); btn_quite.setText("mute"); } Break; } } }
コードは依然として非常に単純です。さらに、ミュートを設定するためのsetStreamMute () メソッドは API 23 バージョンで期限切れになりました。別のメソッドAdjustStreamVolume(int, int, int) を使用して、3 番目のプロパティを設定できます。
ADJUST_MUTE または ADJUST_UNMUTE!
ちなみに、以下のようなものがあります。
アジャストストリームボリューム()の第三引数に振動(Vibrator)を設定する場合は、AndroidManifest.xmlにこの権限を追加する必要があります。
<**uses-permission android:name="android.permission.VIBRATE"**/>