You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin.Forms Android端如何检测是否有后台音频正在播放

Xamarin.Forms Android 端后台音频播放状态检测方案

Android 平台可通过系统内置的AudioManager服务实现检测,无需额外引入第三方依赖,具体实现方案如下:

核心检测逻辑

Android 系统从API Level 9(Android 2.3)开始提供IsMusicActive属性,可直接判断当前是否有音频处于播放状态,Xamarin.Android 中调用代码如下:

// 获取系统音频服务实例
var audioManager = (AudioManager)Android.App.Application.Context.GetSystemService(Android.Content.Context.AudioService);
// 检测是否有其他音频正在播放
bool hasPlayingAudio = audioManager?.IsMusicActive ?? false;

跨平台封装方案

你可以将双端的检测逻辑封装为Xamarin.Forms依赖服务,方便公共层统一调用:

  1. 公共层定义接口

在Xamarin.Forms共享项目中新增音频服务接口:

public interface IAudioPlaybackDetector
{
    bool IsOtherAudioPlaying();
}
  1. iOS端实现

直接复用你现有的AVAudioSession逻辑即可:

[assembly: Dependency(typeof(AudioPlaybackDetector_iOS))]
namespace YourAppName.iOS
{
    public class AudioPlaybackDetector_iOS : IAudioPlaybackDetector
    {
        public bool IsOtherAudioPlaying()
        {
            return AVAudioSession.SharedInstance().OtherAudioPlaying;
        }
    }
}
  1. Android端实现

封装刚才的AudioManager检测逻辑:

[assembly: Dependency(typeof(AudioPlaybackDetector_Android))]
namespace YourAppName.Droid
{
    public class AudioPlaybackDetector_Android : IAudioPlaybackDetector
    {
        public bool IsOtherAudioPlaying()
        {
            var audioManager = (AudioManager)Android.App.Application.Context.GetSystemService(Android.Content.Context.AudioService);
            return audioManager?.IsMusicActive ?? false;
        }
    }
}
  1. 公共层调用

在需要检测音频状态的地方直接调用依赖服务即可:

var detector = DependencyService.Get<IAudioPlaybackDetector>();
bool isBackgroundAudioPlaying = detector.IsOtherAudioPlaying();
// 后续可根据该值决定是否跳过音效播放、降低音效音量或请求音频焦点

可选优化

如果你的应用适配Android 12及以上版本,可以额外注册AudioManager.AudioPlaybackCallback监听音频播放状态变化,无需主动轮询检测,性能表现更好。

建议搭配平台音频焦点机制使用:播放应用内音效前先请求音频焦点,系统会自动压低或暂停后台音频,播放结束后释放焦点,更符合系统交互规范。

内容的提问来源于stack exchange,提问作者Bijington

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 17:45:05