当我们在听歌时,当我们在刷小视频时,当我们在看动漫、在看电影、在追剧时,不知道是否有人注意到,在这些软件中滑动屏幕或者拖动滑动条就可以直接控制音量,而不需要去按手机硬件上的音量键。

在某些时候,程序需要管理系统音量,或者让系统直接静音,这就要借助于Android提供的AudioManager来实现了。

先调用 getSysytemService方法来获取系统的音频管理器,然后再调用 AudioManager的方法控制手机音频即可。

在举例子之前,需要来了解一下AudioManager的大致用法:

adjustStreamVolume(int streamType,int direction,int flag):调用手机指定类型的声音, streamType的参数如下:

STREAM_ALARM:手机闹铃的声音

STREAM_DTMF:DTMF音调的声音

STREAM_MUSIC:手机音乐的声音

STREAM_NOTIFICATION:系统提示的声音

STREAM_RING:电话铃声的声音

接下来,来看一下具体的例子:

在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);
   }
  });

原文:http://blog.itpub.net/69917874/viewspace-2697030/

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐