检测Android的屏幕截图

时间:2015-04-09 07:34:32

标签: android events screenshot detect

我近年来对Android进行编程,我想知道:如何检测用户何时截屏?我希望当用户截取屏幕截图时,我们会转到下一个活动。 我尝试了拦截事件的方法,但是存在一个问题:例如,当设备进入休眠状态时,拦截了一个事件。你有截获事件只截获屏幕截图或忽略其他事件吗?

感谢您的帮助!

2 个答案:

答案 0 :(得分:13)

没有直接的广播意图告诉您已截取屏幕截图。 有些人here讨论了这样做的可能选择(就像在Snapchat上做的那样)。 一种可能的选择是使用FileObserver

答案 1 :(得分:10)

这是我在获取截图时得到通知的黑客。

public void detectScreenShotService(final Activity activity){

   final Handler h = new Handler();
   final int delay = 3000; //milliseconds
   final ActivityManager am=(ActivityManager)activity.getSystemService(Context.ACTIVITY_SERVICE);

    h.postDelayed(new Runnable(){
        public void run(){

            List<ActivityManager.RunningServiceInfo> rs=am.getRunningServices(200);

            for(ActivityManager.RunningServiceInfo ar:rs){
                if(ar.process.equals("com.android.systemui:screenshot")){
                    Toast.makeText(activity,"Screenshot captured!!",Toast.LENGTH_LONG).show();
                }
            }
            h.postDelayed(this, delay);
        }
    }, delay);

}

在Oneplus 2和Moto E上测试。

更新

这最终对我不起作用,我最终在屏幕截图类型的条目上使用了ContentObserver。