下拉通知面板时是否可以暂停Android中的任何视频(媒体播放器)应用程序?

zha*_*hen 11 java android kotlin android-developer-api

假设我有 AOSP 源代码,如何在下拉通知面板时在前台暂停 APP?我用谷歌搜索并发现一个应用程序可以监听事件onWindowFocusChange并主动采取一些行动,但是如何在拉下通知面板时暂停任何应用程序,而不分别修改每个应用程序(这是不切实际的)?

有没有办法可以onPause从 SystemUI 进程调用任何前台应用程序的功能?

Aka*_*bey 10

您可以使用以下方法来检测通知面板拉动,

在您的清单文件中

 <uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
Run Code Online (Sandbox Code Playgroud)

在您的活动中覆盖onWindowFocusChanged()并编写以下代码。

这使用权限

@Override
public void onWindowFocusChanged(boolean hasFocus)
{
    try
    {
        if(!hasFocus)
        {
            Object service  = getSystemService("statusbar");
            Class<?> statusbarManager = Class.forName("android.app.StatusBarManager");
            Method collapse = statusbarManager.getMethod("collapse");
            collapse .setAccessible(true);
            collapse .invoke(service);
        }
    }
    catch(Exception ex)
    {
        if(!hasFocus)
        {
            try {
                Object service  = getSystemService("statusbar");
                Class<?> statusbarManager = Class.forName("android.app.StatusBarManager");
                Method collapse = statusbarManager.getMethod("collapse");
                collapse .setAccessible(true);
                collapse .invoke(service);

            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();                
            }
            ex.printStackTrace();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在您的音频焦点应用请求中,请参阅以下链接

https://developer.android.com/guide/topics/media-apps/audio-focus#java

这将暂停所有其他应用的音频访问。