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