AndroidのAudioManager(オーディオマネージャー)

このセクションの概要:

マルチメディアの最初のセクションでは、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"**/>

おすすめ

転載: blog.csdn.net/leyang0910/article/details/131936411