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

Unity中如何通过按钮点击检测安卓设备DND(静音)模式状态?

检测安卓设备DND模式并同步Unity音频静音状态

一、通过Unity调用Android原生API检测DND模式

安卓系统的静音/DND状态可通过AudioManager的getRingerMode()方法获取,Unity无需额外插件,直接用AndroidJavaClass调用即可:

using UnityEngine;

public class DndMonitor : MonoBehaviour
{
    private AndroidJavaObject _audioManager;
    private AndroidJavaObject _currentActivity;

    void Awake()
    {
        // 初始化安卓环境对象
        var unityPlayerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        _currentActivity = unityPlayerClass.GetStatic<AndroidJavaObject>("currentActivity");
        _audioManager = _currentActivity.Call<AndroidJavaObject>("getSystemService", "audio");
    }

    /// <summary>
    /// 检测设备是否处于静音/DND模式
    /// </summary>
    /// <returns>true=开启,false=关闭</returns>
    public bool IsDndActive()
    {
        if (_audioManager == null) return false;
        
        // 获取当前铃声模式:0=静音(含DND),1=振动,2=正常
        int ringerMode = _audioManager.Call<int>("getRingerMode");
        return ringerMode == 0;
    }
}

二、同步Unity音频状态

获取DND状态后,可通过两种方式同步音频:

1. 轮询检测(简单实现)

在Update中定期检查状态变化,批量调整AudioSource的静音状态:

private bool _lastDndState;
private DndMonitor _dndMonitor;

void Start()
{
    _dndMonitor = GetComponent<DndMonitor>();
    _lastDndState = _dndMonitor.IsDndActive();
}

void Update()
{
    bool currentDndState = _dndMonitor.IsDndActive();
    if (currentDndState != _lastDndState)
    {
        _lastDndState = currentDndState;
        // 遍历所有AudioSource并设置静音
        foreach (var audioSource in FindObjectsOfType<AudioSource>())
        {
            audioSource.mute = currentDndState;
        }
    }
}

2. 监听安卓广播(高效实现)

若不想轮询,可注册android.media.RINGER_MODE_CHANGED广播,当铃声模式变化时直接通知Unity调整音频。需要编写简单的安卓原生代码打包成aar,或通过Unity的Android广播API实现监听。

三、权限配置

需在安卓Manifest中添加权限以访问通知策略:

<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />

Unity中添加方式:打开Player Settings > Publishing Settings > Build,勾选Custom Main Manifest,在生成的Manifest文件中插入上述权限代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 13:42:49