Flutter Screen Capture Event 在鸿蒙平台的使用指南
·
插件介绍
fluttertpc_screen_capture_event 是一个强大的 Flutter 插件,用于监听和处理屏幕截图和录制事件。该插件支持 Android、iOS 和 HarmonyOS(鸿蒙)平台,帮助开发者轻松实现屏幕捕获行为的检测与响应。
在鸿蒙平台上,该插件经过专门适配,允许开发者:
- 监听用户的屏幕截图操作
- 获取截图文件路径
- 防止屏幕截图和录制
- 检查当前是否正在进行屏幕录制
如何使用插件
1. 包的引入
由于这是一个自定义修改版本,需要通过 Git 形式引入。在项目的 pubspec.yaml 文件中添加以下依赖配置:
dependencies:
screen_capture_event_ohos:
git:
url: "https://gitcode.com/openharmony-sig/fluttertpc_screen_capture_event.git"
path: "ohos"
然后执行以下命令获取依赖:
flutter pub get
2. 权限配置
在鸿蒙平台上使用该插件需要配置相应的权限。
2.1 添加权限声明
打开 entry/src/main/module.json5 文件,添加以下权限配置:
...
"requestPermissions": [
{
"name": "ohos.permission.PRIVACY_WINDOW",
"reason": "screen_capture_event_ohos_example",
"usedScene": {
"abilities": [
"EntryAbility"
],
"when": "inuse"
}
},
{
"name": "ohos.permission.READ_IMAGEVIDEO",
"reason": "screen_capture_event_ohos_example",
"usedScene": {
"abilities": [
"EntryAbility"
],
"when": "inuse"
}
}
]
...
2.2 添加权限说明
打开 entry/src/main/resources/base/element/string.json 文件,添加以下内容:
{
"string": [
{
"name": "EntryAbility_label",
"value": "screen_capture_event_ohos_example"
}
]
}
3. API 调用示例
3.1 初始化屏幕捕获事件监听器
import 'package:screen_capture_event_ohos/screen_capture_event_ohos.dart';
final ScreenCaptureEventOhos screenListener = ScreenCaptureEventOhos();
3.2 请求存储权限
await screenListener.storagePermission();
3.3 添加屏幕截图监听器
screenListener.addScreenShotListener((filePath) {
// filePath 为截图文件的路径
setState(() {
_message = "截图已保存到: $filePath";
});
});
3.4 防止屏幕截图/录制
// 禁止屏幕截图和录制
screenListener.preventOhosScreenShot(true);
// 允许屏幕截图和录制
screenListener.preventOhosScreenShot(false);
3.5 检查当前是否正在录制
bool isRecording = await screenListener.isRecording();
setState(() {
_recordingStatus = isRecording ? "正在录制" : "未录制";
});
3.6 开始监听和释放资源
void initState() {
super.initState();
// 开始监听屏幕捕获行为
screenListener.watch();
}
void dispose() {
// 释放所有原生监听器
screenListener.dispose();
super.dispose();
}
4. 完整使用示例
以下是一个完整的使用示例,展示了如何在 Flutter 应用中集成和使用该插件:
import 'package:flutter/material.dart';
import 'package:screen_capture_event_ohos/screen_capture_event_ohos.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
final ScreenCaptureEventOhos _screenListener = ScreenCaptureEventOhos();
String _message = '等待屏幕捕获事件...';
String _recordingStatus = '未录制';
bool _preventScreenShot = false;
void initState() {
super.initState();
_initScreenCaptureEvent();
}
Future<void> _initScreenCaptureEvent() async {
// 请求存储权限
await _screenListener.storagePermission();
// 添加屏幕截图监听器
_screenListener.addScreenShotListener((filePath) {
setState(() {
_message = "截图已保存到: $filePath";
});
});
// 开始监听
_screenListener.watch();
}
Future<void> _checkRecordingStatus() async {
bool isRecording = await _screenListener.isRecording();
setState(() {
_recordingStatus = isRecording ? "正在录制" : "未录制";
});
}
void dispose() {
// 释放资源
_screenListener.dispose();
super.dispose();
}
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('屏幕捕获事件监听'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(_message),
const SizedBox(height: 20),
Text('录制状态: $_recordingStatus'),
const SizedBox(height: 20),
ElevatedButton(
onPressed: _checkRecordingStatus,
child: const Text('检查录制状态'),
),
const SizedBox(height: 20),
ElevatedButton(
onPressed: () {
_preventScreenShot = !_preventScreenShot;
_screenListener.preventOhosScreenShot(_preventScreenShot);
setState(() {
_message = _preventScreenShot ? "已禁止屏幕截图和录制" : "已允许屏幕截图和录制";
});
},
child: Text(_preventScreenShot ? "允许屏幕截图和录制" : "禁止屏幕截图和录制"),
),
],
),
),
),
);
}
}
API 参考
| 方法名 | 描述 | 参数 | 返回值 | 鸿蒙支持情况 |
|---|---|---|---|---|
| ScreenCaptureEventOhos | 构造函数,初始化屏幕事件监听器 | bool requestPermission | / | 支持 |
| storagePermission | 请求存储权限 | / | Future | 支持 |
| preventOhosScreenShot | 防止屏幕截图/录制 | bool value | Future | 支持 |
| addScreenRecordListener | 添加屏幕录制状态监听器 | Function(bool recorded) callback | void | 不支持 |
| addScreenShotListener | 添加屏幕截图监听器 | Function(String filePath) callback | void | 支持 |
| watch | 开始监听屏幕捕获行为 | / | void | 支持 |
| dispose | 释放所有原生监听器 | / | void | 支持 |
| isRecording | 检查当前是否正在录制 | / | Future | 支持 |
约束与限制
-
兼容性:
- Flutter: 3.7.12-ohos-1.0.6 及以上
- SDK: 5.0.0(12) 及以上
- IDE: DevEco Studio: 5.0.13.200 及以上
-
功能限制:
- 目前鸿蒙平台暂不支持
addScreenRecordListener方法来监听屏幕录制状态变化
- 目前鸿蒙平台暂不支持
总结
fluttertpc_screen_capture_event 是一个功能强大的屏幕捕获事件监听插件,通过简单的 API 调用,开发者可以轻松实现屏幕截图和录制的监听与控制。在鸿蒙平台上,该插件经过专门适配,提供了良好的用户体验。
欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)