Android系统中提供了截屏事件监听功能,该功能可以在用户截屏时触发监听事件,从而实现一系列操作。以下是截屏事件监听的原生Demo代码,供开发者参考:

public class ScreenShotObserver extends ContentObserver {

private static final String TAG = "ScreenShotObserver";

private static final String SCREENSHOTS_DIR_NAME = "Screenshots";

private static final String MEDIA_EXTERNAL_URI = MediaStore.Images.Media.EXTERNAL_CONTENT_URI.toString();

private static final String[] PROJECTION = new String[] { MediaStore.Images.ImageColumns._ID,

MediaStore.Images.ImageColumns.DATA };

private Context mContext;

public ScreenShotObserver(Context context) {
    super(new Handler());
    mContext = context;
}

@Override
public void onChange(boolean selfChange, Uri uri) {
    super.onChange(selfChange, uri);
    if (uri.toString().startsWith(MEDIA_EXTERNAL_URI)) {
        Cursor cursor = null;
        try {
            cursor = mContext.getContentResolver().query(uri, PROJECTION, null, null, null);
            if (cursor != null &;&; cursor.moveToFirst()) {
                int id = cursor.getInt(cursor.getColumnIndex(MediaStore.Images.ImageColumns._ID));
                String path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA));
                int lastIndex = path.lastIndexOf("/");
                String fileName = path.substring(lastIndex + 1);
                String dir = path.substring(0, lastIndex + 1) + SCREENSHOTS_DIR_NAME;
                File fileDir = new File(dir);
                if (!fileDir.exists()) {
                    fileDir.mkdir();
                }
                File file = new File(fileDir, fileName);
                if (file.exists()) {
                    Log.d(TAG, "ScreenShotObserver: The screenshot has already been saved.");
                    return;
                }
                boolean success = new File(path).renameTo(file);
                if (success) {
                    Log.d(TAG, "ScreenShotObserver: The screenshot has been saved to " + file.getAbsolutePath());
                } else {
                    Log.e(TAG, "ScreenShotObserver: Failed to save screenshot to " + file.getAbsolutePath());
                }
            }
        } catch (Exception e) {
            Log.e(TAG, "ScreenShotObserver: Failed to fetch screenshot path:" + e.getMessage());
        } finally {
            if (cursor != null) {
                cursor.close();
            }
        }
    }
}

public static void start(Context context) {
    ScreenShotObserver screenShotObserver = new ScreenShotObserver(context);
    context.getContentResolver().registerContentObserver(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
            true, screenShotObserver);
}

public static void stop(Context context) {
    context.getContentResolver().unregisterContentObserver(new ScreenShotObserver(context));
}

}

使用该代码,开发者可以监听用户截屏事件,并获取截屏图片的路径。需要注意的是,在Android系统中,截屏图片的默认保存路径是"/sdcard/Pictures/Screenshots/",如果开发者需要自定义保存路径,需要在代码中进行修改。