为用户提供选项以播放带或不带音频的视频

tar*_*oca 2 audio video android

我正在使用VideoView播放mp4视频.我想让用户选择用声音观看这个视频,或者如果他/她选择的话将声音静音.我没有使用mediaController允许用户停止和播放,我有"触摸"事件来控制它.

更新:我有一个菜单,我已添加一个"静音"图标.现在我想弄清楚如何将静音添加到此按钮.我正在阅读Android AudioManager的一些信息,特别是setStreamMute.以下是API的说法:

  public void  setStreamMute  (int streamType, boolean state)
Run Code Online (Sandbox Code Playgroud)

自:API级别1

将音频流静音或取消静音.

静音命令受到保护以防止客户端进程死亡:如果流上有活动静音请求的进程终止,则此流将自动取消静音.

对给定流的静音请求是累积的:AudioManager可以从一个或多个客户端接收几个静音请求,并且只有在收到相同数量的取消静音请求时才会取消静音.

为了获得更好的用户体验,应用程序必须在onPause()中取消静音流的静音,如果合适,则静音再次在onResume()中.

此方法仅应由替换平台范围的音频设置管理或主要电话应用程序的应用程序使用.参数streamType要静音/取消静音的流.state所需的静音状​​态:对于静音ON为true,对于静音OFF为false

Dev*_*red 6

使用AudioManager服务仅将与视频相关的流静音和取消静音.从您声明的方法响应用户触摸事件,调用方法如:

public void mute() {
  AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
  am.setStreamMute(AudioManager.STREAM_MUSIC, true);
}

public void unmute() {
  AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
  am.setStreamMute(AudioManager.STREAM_MUSIC, false);
}
Run Code Online (Sandbox Code Playgroud)

这将使其他流(通知,警报等)处于活动状态,因此您不会为了使视频静音而使整个设备静音.

此外,如果您需要向您的活动建议应该通过哪个流推送音频,您可以调用Activity.setVolumeControlStream(AudioManager.STREAM_MUSIC)将您的活动窗口绑定到该流.