如何使用带有setAudioAttributes的警报音量播放铃声?

时间:2015-11-27 16:26:43

标签: android audio

所以我试图围绕音频属性。这就是我到目前为止所拥有的:

{ read user; read pw; read ip; } <<<"$ssh_info"
mapfile -t info <<<"$ssh_info"  # then use ${info[0]}, ${info[1]}, ${info[2]}

This page讨论音频属性及其&#34;兼容性映射。&#34;如果我以前使用// alarm.getSound() will return a proper URI to pick a ringtone Ringtone tone = RingtoneManager.getRingtone(this, alarm.getSound()); if (Build.VERSION.SDK_INT >= 21) { AudioAttributes aa = new AudioAttributes.Builder() .setFlags(AudioAttributes.USAGE_ALARM | AudioAttributes.CONTENT_TYPE_SONIFICATION) .build(); tone.setAudioAttributes(aa); } else { tone.setStreamType(RingtoneManager.TYPE_ALARM); } tone.play(); (就像我上面那样),那么它将设置setStreamType(TYPE_ALARM)CONTENT_TYPE_SONIFICATION标志。我想离开USAGE_ALARM所以我想如果我手动设置那些标志(就像我上面那样)那么当铃声播放时它会使用闹钟音量。好吧,它似乎并没有像那样工作。

以上代码仍然使用我的Nexus 6的媒体音量而不是警报音量。我在构建MRA68N的6.0上。使用警报音量可以做些什么?

2 个答案:

答案 0 :(得分:6)

在Moto G Android 6.0上测试

mysqli_close()

答案 1 :(得分:1)

这里的回应有所帮助,但对我没有用。我打开了自己的问题here来解决它。

这是我的工作解决方案。

mediaPlayerScan = new MediaPlayer();
try {
  mediaPlayerScan.setDataSource(getContext(),
          Uri.parse(getString(R.string.res_path) + R.raw.scan_beep));

  if (Build.VERSION.SDK_INT >= 21) {
    mediaPlayerScan.setAudioAttributes(new AudioAttributes.Builder()
            .setUsage(AudioAttributes.USAGE_ALARM)
            .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
            .build());
  } else {
    mediaPlayerScan.setAudioStreamType(AudioManager.STREAM_ALARM);
  }
  mediaPlayerScan.prepare();
} catch (IOException e) {
  e.printStackTrace();
}