gpt4 book ai didi

Android:使用硬件键控制 STREAM_ALARM 音量

转载 作者:行者123 更新时间:2023-12-02 01:40:16 26 4
gpt4 key购买 nike

我正在尝试播放媒体类型为 STREAM_ALARM 的 radio 流,并使用硬件按钮更改其音量。

它需要是 STREAM_ALARM,因为它实际上是一个闹钟:即使插入耳机和/或手机设置为静音,它也应该通过扬声器播放。

我正在寻找一种始终有效的实现方式,无论用户处于何种 Activity (因此它也应该适用于主屏幕等)。我知道我可以覆盖 onKeyUp/Down 但这只适用于我的 Activity )

这是我现在做的(简化代码)

audioMgr.requestAudioFocus(
afChangeListener,
AudioManager.STREAM_ALARM,
AudioManager.AUDIOFOCUS_GAIN
);

if (mp!=null) { mp.release(); mp = null;}
mp = new MediaPlayer();
mp.setDataSource(streamUrl);
mp.setAudioStreamType(AudioManager.STREAM_ALARM);
mp.setOnPreparedListener(onPreparedListener);
mp.prepareAsync();

然后当 onPreparedListener 触发时:

mp.start();

但是当我按下手机上的音量按钮时,它会改变媒体音量而不是闹钟(使用 Android 4.4 和 5.0 测试)

Android 文档说明如下:

“默认情况下,按下音量控件会修改 Activity 音频流的音量。”

来源:http://developer.android.com/training/managing-audio/volume-playback.html#HardwareVolumeKeys

所以我想问题是:如何(正确地)将 STREAM_ALARM 设置为 Activity 音频流?

还是我做错了什么?

提前致谢!

更新:我已经在 AOSP Bug Tracker 上将其报告为一个错误并且它被接受了..所以我想这实际上应该像我上面描述的那样工作,但它没有 :S

链接:https://code.google.com/p/android/issues/detail?id=183843

最佳答案

回答我自己的问题:事实证明,Google 认为硬件音量按钮始终控制“您听到的内容”是完全合理的,除非是闹钟。然后你必须进入应用程序并使用音量按钮:

Volume keys never control alarm stream volume by default. They do in clock app or when the alarm volume slider is active in the volume panel.

An application must call Activity.setVolumeControlStream() with ALARM stream to have the volume keys control the ALARM stream volume

状态:按预期工作

https://code.google.com/p/android/issues/detail?id=183843

所以我没有做错任何事情,Android 在使用音量按钮控制声音时表现不一致是设计使然。经过。设计。 :(

关于Android:使用硬件键控制 STREAM_ALARM 音量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28925023/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com