xamarin - 通过听筒播放时音量按钮无效
问题描述
在我的 Xamarin Forms Android 应用程序中,我通过耳机而不是普通扬声器发送音频。我正在做类似的事情:
myMediaPlayer.SetAudioAttributes(new AudioAttributes.Builder().SetLegacyStreamType(Stream.VoiceCall).Build());
以上不推荐使用的版本是
myMediaPlayer.SetAudioStreamType(Stream.VoiceCall);
无论哪种方式,这似乎都有效(不过,如果有更好的方法,请告诉我)。但是,我无法控制音量。声音仅从耳机正确发出,但音量恒定,忽略了我的音量键按下(尽管音量计显示在屏幕上随着按下按钮而上升和下降)。...(为澄清起见,我不是试图以编程方式控制音量,我只是希望设备能够按照预期调整音量。)
有什么帮助吗?
更新
我也试过这段代码:
myMediaPlayer.SetAudioAttributes(new AudioAttributes.Builder().SetContentType(AudioContentType.Music).SetUsage(AudioUsageKind.VoiceCommunication).Build());
我有两个目标:
- 仅通过耳机播放(或耳机,如果已连接)
- 能够控制音量(我认为这是给定的)
更新代码示例
以下内容将通过听筒播放,但不会改变音量。
public void Play(string url)
{
var myMediaPlayer = new MediaPlayer();
myMediaPlayer.SetDataSource(url);
if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
myMediaPlayer.SetAudioAttributes(new AudioAttributes.Builder().SetContentType(AudioContentType.Music).SetUsage(AudioUsageKind.VoiceCommunication).Build());
else
myMediaPlayer.SetAudioStreamType(Stream.VoiceCall);
myMediaPlayer.Prepare();
myMediaPlayer.Start();
}
解决方案
推荐阅读
- python - 合并熊猫中的数据框
- c - 从字符串中删除第一个和最后一个字符
- aws-lambda - 如何处理 AWS lambda 服务中的 6 兆字节限制?
- laravel - laravel : 如果列表为空,则删除所有下拉菜单
- excel - VBA返回包含最大值的错误单元格
- regex - 在单元格中查找部分字符串并使用公式返回精确值?
- c++ - 如何使用 OpenMP 并行化最近邻搜索
- arrays - 数组计算通过迭代工作,但在移动到工作表后不会“坚持”
- python - python多线程:阻塞可以线程化吗?
- powershell - 在我的电子邮件正文 -Powershell 上的文件之间添加一行