Android截屏事件监听

本文介绍了Android系统下如何监听截屏事件,包括使用FileObserver监听目录变化和ContentObserver监听图片资源变化。由于Android的多样性,监听快捷键并不靠谱。FileObserver存在局限性,而ContentObserver虽然能监听所有图片变化,但需要做好去重过滤。文章总结了这两种方法并邀请读者分享更多监听方式。
摘要由CSDN通过智能技术生成

转载注明出处:http://blog.csdn.net/xiaohanluo/article/details/53737655

1. 前言

Android系统没有直接对截屏事件监听的接口,也没有广播,只能自己动手来丰衣足食,一般有三种方法。

  • 利用FileObserver监听某个目录中资源变化情况
  • 利用ContentObserver监听全部资源的变化
  • 监听截屏快捷按键

由于厂商自定义Android系统的多样性,再加上快捷键的不同以及第三方应用,监听截屏快捷键这事基本不靠谱,可以直接忽略。

本文使用的测试手机,一加2(One Plus 2)。

2. FileObserver

添加权限:

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

代码示例:

public class ScreenshotActivity extends AppCompatActivity {
   

    private final String TAG = "Screenshot";

    private static final String PATH = Environment.getExternalStorageDirectory() + File.separator 
            + Environment.DIRECTORY_PICTURES + File.separator + "Screenshots" + File.separator;

    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_screenshot);

        mFileObserver = new CustomFileObserver(PATH);
    }

    @Override
    protected void onResume() {
        super.onResume();
        mFileObserver.startWatching();
        Log.d(TAG, PATH);
    }

    @Override
    protected void onStop() {
        super.onStop();
        mFileObserver.stopWatching();
    }

    /**
     * 目录监听器
     */
    private class CustomFileObserver extends FileObserver {
   

        private String mPath;

        public CustomFileObserver(String path) {
            super(path);
            this.mPath = path;
        }

        public CustomFileObserver(String path, int mask) {
            super(path, mask);
            this.mPath = path;
        }

        @Override
        public void onEvent(int event, String path) {
            Log.d(TAG, path + " " + event);
            // 监听到事件,做一些过滤去重处理操作
        }
    }
}

打印的日志:

一加2

D/Screenshot: Screensho
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值