diff --git "a/ohos/docs/Flutter OHOS\345\244\226\346\216\245\347\272\271\347\220\206\351\200\202\351\205\215\347\256\200\344\273\213.md" "b/ohos/docs/Flutter OHOS\345\244\226\346\216\245\347\272\271\347\220\206\351\200\202\351\205\215\347\256\200\344\273\213.md" new file mode 100644 index 0000000000000000000000000000000000000000..fa423d9e424285de44aef6e8271949cf3dc8c93c --- /dev/null +++ "b/ohos/docs/Flutter OHOS\345\244\226\346\216\245\347\272\271\347\220\206\351\200\202\351\205\215\347\256\200\344\273\213.md" @@ -0,0 +1,92 @@ +Flutter OHOS外接纹理适配简介 + +Flutter在OHOS平台使用外接纹理,视频播放和相机预览使用方法是一致的,在注册纹理时,flutter engine返回surfaceId。图片场景,则是以PixelMap的形式注册到flutter engine。 + +注:一般而言,为了方便复用,会将ohos对接flutter外接纹理的功能代码作为一个module模块组件单独写一个插件注册到Flutter engine,见视频播放的demo中的。 + +# 相机预览 + +## Demo地址 + + + +## 实现说明 + +1. 实现插件,在onAttachedToEngine中,从入参FlutterPluginBinding中获取TextureRegistry + +![](media/dc15b84a4b97ec7f923ffefe121bd346.png) + +2. 在onMethodCall中实现注册纹理的响应方法 + +![](media/3f7a2a6befa3459f00a90b6e796839e4.png) + +registerCameraTexture中实现注册纹理,先获取textureId,再使用该textureId去注册纹理到flutter engine,返回surfaceId。 + +![](media/7ea99353820d6640826bf0bd24dd5f8b.png) + +3. 在启动相机预览中,使用前面获取到的surfaceId。 + +![](media/614df503f2164dd4e4a4b4a5e5bc9c87.png) + +4 . dart侧通过MethodChannel触发,触发纹理注册和启动相机预览。 + +![](media/62bbfe62e6fecbb269ab9f607fb2cfbf.png) + +预览画面使用获取到的textureId构造一个texture widget。 + +![](media/37b3118e6921ff70b1baf4234fcdaa69.png) + +# 视频播放 + +## Demo地址 + + + +## 实现说明 + +视频播放和相机预览使用纹理方式完全一致,简述如下: + +1. 在video_player_ohos插件中实现ohos原生播放器:AVplayer。可参考https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/media/using-avplayer-for-playback.md/ +2. 同样实现插件,在onAttachedToEngine中,从入参FlutterPluginBinding中获取TextureRegistry(此处放入FlutterState中封装)。 + + ![](media/50312d42df3346723abf740064ea019b.png) + +3. 在创建视频播放器的方法中,(先从FlutterState拿出TextureRegistry)同样的先获取textureId,再注册纹理到engine,得到surfaceId(surfaceId在返回的SurfaceTextureEntry对象中): + + ![](media/e68f5cbb2f98dca205bf51d6ab53ad09.png) + +4. Videoplaye构造方法中取出surfaceId: + + ![](media/d7e3f8d50d8970578c1bfc9bdcb1941c.png) + +5. 在AVplayer是AvplayerStatus.INITIALIZED状态时,把surfaceId赋给AVplayer + +![](media/7f03e4b85c4434de763faf2b3d073a6d.png) + +1. 第三步创建AVplayer时,需要把textureId返回给dart层,dart层得到该值,可以在texture Widget中使用该外接纹理完成渲染。 + +# 图片显示 + +## Demo地址 + + + +## 使用说明 + +图片外接纹理,不需要使用surfaceId, 而是以PixelMap的形式注册到flutter engine。 + +1. 同样实现插件,在onAttachedToEngine中,从入参FlutterPluginBinding中获取TextureRegistry。 + + ![](media/975272fd1c19bb2371545f5d011284bd.png) + +2. 在onMethodCall中实现注册纹理的响应方法 + + ![](media/ff662b72b643008d3ba214eb3632452e.png) + +3. 注册纹理实现方法中,把图片数据读进来,创建ImageSource,再创建PixelMap对象,使用registerPixelMap接口注册纹理到flutter engine,得到textureId返回给dart层。 + + ![](media/44c0e7494d3916a7b760fc4ed4cd9668.png) + +4. dart层得到该值,可以在texture Widget中使用该外接纹理完成渲染。 + + ![](media/8eff1f85dd7c64952444faf2de19ff89.png) diff --git a/ohos/docs/media/37b3118e6921ff70b1baf4234fcdaa69.png b/ohos/docs/media/37b3118e6921ff70b1baf4234fcdaa69.png new file mode 100644 index 0000000000000000000000000000000000000000..2aa34a3c8d273559432db206b366524cb02e1ecc Binary files /dev/null and b/ohos/docs/media/37b3118e6921ff70b1baf4234fcdaa69.png differ diff --git a/ohos/docs/media/3f7a2a6befa3459f00a90b6e796839e4.png b/ohos/docs/media/3f7a2a6befa3459f00a90b6e796839e4.png new file mode 100644 index 0000000000000000000000000000000000000000..51f00cd37ca97b69eb04f2d3929240c6274f92f7 Binary files /dev/null and b/ohos/docs/media/3f7a2a6befa3459f00a90b6e796839e4.png differ diff --git a/ohos/docs/media/44c0e7494d3916a7b760fc4ed4cd9668.png b/ohos/docs/media/44c0e7494d3916a7b760fc4ed4cd9668.png new file mode 100644 index 0000000000000000000000000000000000000000..655da3ad1faecc3d0b6169180dc708166ccf9cf9 Binary files /dev/null and b/ohos/docs/media/44c0e7494d3916a7b760fc4ed4cd9668.png differ diff --git a/ohos/docs/media/50312d42df3346723abf740064ea019b.png b/ohos/docs/media/50312d42df3346723abf740064ea019b.png new file mode 100644 index 0000000000000000000000000000000000000000..805ab9872316a0fb6705dd5f5e8d3d6829219eaa Binary files /dev/null and b/ohos/docs/media/50312d42df3346723abf740064ea019b.png differ diff --git a/ohos/docs/media/614df503f2164dd4e4a4b4a5e5bc9c87.png b/ohos/docs/media/614df503f2164dd4e4a4b4a5e5bc9c87.png new file mode 100644 index 0000000000000000000000000000000000000000..f568abbdef39ca8f7f16ca44a2a525a703e1a476 Binary files /dev/null and b/ohos/docs/media/614df503f2164dd4e4a4b4a5e5bc9c87.png differ diff --git a/ohos/docs/media/62bbfe62e6fecbb269ab9f607fb2cfbf.png b/ohos/docs/media/62bbfe62e6fecbb269ab9f607fb2cfbf.png new file mode 100644 index 0000000000000000000000000000000000000000..d031f65b384d231888df0d5d39a0327b2b53df00 Binary files /dev/null and b/ohos/docs/media/62bbfe62e6fecbb269ab9f607fb2cfbf.png differ diff --git a/ohos/docs/media/7ea99353820d6640826bf0bd24dd5f8b.png b/ohos/docs/media/7ea99353820d6640826bf0bd24dd5f8b.png new file mode 100644 index 0000000000000000000000000000000000000000..62abba754503ee230b3dfa7322a8b01c7793de56 Binary files /dev/null and b/ohos/docs/media/7ea99353820d6640826bf0bd24dd5f8b.png differ diff --git a/ohos/docs/media/7f03e4b85c4434de763faf2b3d073a6d.png b/ohos/docs/media/7f03e4b85c4434de763faf2b3d073a6d.png new file mode 100644 index 0000000000000000000000000000000000000000..2bfedb3856ec938c0ddaf0fda0bca0eae9c1a6e6 Binary files /dev/null and b/ohos/docs/media/7f03e4b85c4434de763faf2b3d073a6d.png differ diff --git a/ohos/docs/media/8eff1f85dd7c64952444faf2de19ff89.png b/ohos/docs/media/8eff1f85dd7c64952444faf2de19ff89.png new file mode 100644 index 0000000000000000000000000000000000000000..4e6d73bc370e7da56d9f19af2cb948ab8673150c Binary files /dev/null and b/ohos/docs/media/8eff1f85dd7c64952444faf2de19ff89.png differ diff --git a/ohos/docs/media/975272fd1c19bb2371545f5d011284bd.png b/ohos/docs/media/975272fd1c19bb2371545f5d011284bd.png new file mode 100644 index 0000000000000000000000000000000000000000..6268a5627f968e30b603095eadbb1b3bf41ef4bc Binary files /dev/null and b/ohos/docs/media/975272fd1c19bb2371545f5d011284bd.png differ diff --git a/ohos/docs/media/d7e3f8d50d8970578c1bfc9bdcb1941c.png b/ohos/docs/media/d7e3f8d50d8970578c1bfc9bdcb1941c.png new file mode 100644 index 0000000000000000000000000000000000000000..c98336267bc4f01e0de0a10aabfeaebb9288d9cd Binary files /dev/null and b/ohos/docs/media/d7e3f8d50d8970578c1bfc9bdcb1941c.png differ diff --git a/ohos/docs/media/dc15b84a4b97ec7f923ffefe121bd346.png b/ohos/docs/media/dc15b84a4b97ec7f923ffefe121bd346.png new file mode 100644 index 0000000000000000000000000000000000000000..3ed1f9013b81713b9b9081052461e8ee62ef0428 Binary files /dev/null and b/ohos/docs/media/dc15b84a4b97ec7f923ffefe121bd346.png differ diff --git a/ohos/docs/media/e68f5cbb2f98dca205bf51d6ab53ad09.png b/ohos/docs/media/e68f5cbb2f98dca205bf51d6ab53ad09.png new file mode 100644 index 0000000000000000000000000000000000000000..bf3781afa3c4d7bea7cc6bdf32efa46ff6dd8bc0 Binary files /dev/null and b/ohos/docs/media/e68f5cbb2f98dca205bf51d6ab53ad09.png differ diff --git a/ohos/docs/media/ff662b72b643008d3ba214eb3632452e.png b/ohos/docs/media/ff662b72b643008d3ba214eb3632452e.png new file mode 100644 index 0000000000000000000000000000000000000000..e001db806b7e356d9b66fe6b60ce68ac914772ff Binary files /dev/null and b/ohos/docs/media/ff662b72b643008d3ba214eb3632452e.png differ diff --git a/ohos/testcamera/ohos/entry/src/ohosTest/ets/test/Ability.test.ets b/ohos/testcamera/ohos/entry/src/ohosTest/ets/test/Ability.test.ets index 741f7eb8513f725019f3278db6c0467c5e4f27c8..25d4c71ff3cd584f5d64f6f8c0ac864928c234c4 100644 --- a/ohos/testcamera/ohos/entry/src/ohosTest/ets/test/Ability.test.ets +++ b/ohos/testcamera/ohos/entry/src/ohosTest/ets/test/Ability.test.ets @@ -20,7 +20,7 @@ export default function abilityTest() { describe('ActsAbilityTest', function () { // Defines a test suite. Two parameters are supported: test suite name and test suite function. beforeAll(function () { - // Presets an action, which is performed only once before all test cases of the test suite start . + // Presets an action, which is performed only once before all test cases of the test suite start. // This API supports only one parameter: preset action function. }) beforeEach(function () {