AudioManager

山有木xi發表於2020-06-09

當我們在聽歌時,當我們在刷小影片時,當我們在看動漫、在看電影、在追劇時,不知道是否有人注意到,在這些軟體中滑動螢幕或者拖動滑動條就可以直接控制音量,而不需要去按手機硬體上的音量鍵

在某些時候,程式需要管理系統音量,或者讓系統直接靜音,這就要藉助於Android提供的AudioManager來實現了

先呼叫 getSysytemService方法來獲取系統的音訊管理器,然後再呼叫 AudioManager的方法控制手機音訊即可

在舉例子之前,需要來了解一下AudioManager的大致用法

adjustStreamVolume(int streamType,int direction,int flag):呼叫手機指定型別的聲音, streamType的引數如下:

  1. STREAM_ALARM:手機鬧鈴的聲音

  2. STREAM_DTMF:DTMF音調的聲音

  3. STREAM_MUSIC:手機音樂的聲音

  4. STREAM_NOTIFICATION:系統提示的聲音

  5. STREAM_RING:電話鈴聲的聲音

  6. ...

接下來,來看一下具體的例子

在xml中先建立幾個button,然後開啟MainActivity

首先需要在 onCreate建立各個button的例項和呼叫 getSysytemService方法來獲取系統的音訊管理器

public void onCreate(Bundle savedInstanceState)
 {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  aManager = (AudioManager) getSystemService(
    Service.AUDIO_SERVICE);
  play = (Button) findViewById(R.id.play);
  up = (Button) findViewById(R.id.up);
  down = (Button) findViewById(R.id.down);
  mute = (ToggleButton) findViewById(R.id.mute);
  }

onCreate中繼續實現 播放音樂

play.setOnClickListener(new OnClickListener()
  {
   @Override
   public void onClick(View source)
   {
    MediaPlayer mPlayer = MediaPlayer.create(
      MainActivity.this, R.raw.earth);
    mPlayer.setLooping(true);
    mPlayer.start();
   }
  });

onCreate 中繼續實 增大音量

up.setOnClickListener(new OnClickListener()
  {
   @Override
   public void onClick(View source)
   {
    aManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,
      AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI);
   }
  });

onCreate 中繼續實 減小音量

down.setOnClickListener(new OnClickListener()
  {
   @Override
   public void onClick(View source)
   {
    aManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,
      AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI);
   }
  });

最後在onCreat中實現 靜音

mute.setOnCheckedChangeListener(new OnCheckedChangeListener()
  {
   @Override
   public void onCheckedChanged(CompoundButton source,
           boolean isChecked)
   {
    // 指定調節音樂的音訊,根據isChecked確定是否需要靜音
    aManager.setStreamMute(AudioManager.STREAM_MUSIC,
      isChecked);
   }
  });


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69917874/viewspace-2697030/,如需轉載,請註明出處,否則將追究法律責任。