Android 机顶盒(HiSi平台)判断是否正在使用播放资源

开发背景:
需求:定时清理杀应用,但是需要判断用户当前是否在播放,如果在播放不能杀应用(暂停状态也属于正在播放)
需要特别考虑三种状态:
1.无论是系统app播放,还是三方app播放,都不能清理;
2.无论是全屏播放,或者是小屏幕播放,都不能清理;
3.无论是播放还是暂停,都不能清理;

方法1:
通过AudioManager,判断当前设备是否正在占用声音播放,来判断是否正在播放;
缺点是:当用户点击暂停后,是不占用Audio资源的,所以无法判断暂停状态;

private boolean isPlaying() {
        if (audioManager == null)
            audioManager = (AudioManager) this.getSystemService(AUDIO_SERVICE);
        Log.i(TAG, "audioManager.isMusicActive() = " + audioManager.isMusicActive());
        Log.i(TAG, "audioManager.isLocalOrRemoteMusicActive() = " + audioManager.isLocalOrRemoteMusicActive());

        if (audioManager.isMusicActive()) {
            return true;
        }
        if (audioManager.isLocalOrRemoteMusicActive()) {
            return true;
        }
        return false;
}

方法二:
hisi平台在播放视频资源时,在proc/msp/vpss00节点会有视频相关信息写入;
通过读取这个节点,判断当前是否有视频资源正在被占用;
优点:在视频播放暂停状态下可以有效判断

    private boolean isPlaying() {
        if (AutoClearUtil.isVpss00Empty())
            return false;
        return true;
    }

    /**
     * 读取proc/msp/vpss00节点的信息
     * 当节点信息为空时,播放器没有使用
     * 当节点信息不为空,播放器正在使用
     * @return
     */
    public static boolean isVpss00Empty() {
        Process catProcess = null;
        BufferedReader mReader = null;
        try {
            catProcess = Runtime.getRuntime().exec("cat proc/msp/vpss00");
            mReader = new BufferedReader(new InputStreamReader(
                    catProcess.getInputStream()), 1024);
            String line = null;
            if ((line = mReader.readLine()) != null) {
                Log.i(TAG, "cat proc/msp/vpss00 = " + line);
                return false;
            }

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (mReader != null)
                    mReader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            if (catProcess != null)
                catProcess.destroy();
        }
        return true;
    }

你可能感兴趣的:(Android 机顶盒(HiSi平台)判断是否正在使用播放资源)