1

我有一个具有CameraActivity的 android 应用程序,它定期在预览流中的图像帧上运行tflite 分类器。Camera 和 tflite 的实现在 Android 部分运行良好,并提供了良好的 FPS。

我想在我的 Flutter 应用程序中将这个CameraActivity显示为一个屏幕。Flutter 应用程序已经实现了所有的前端和 UI 部分。

我已经尝试使用官方 Flutter Camera插件通过使用camera.startImageStream来实现相同的功能,但是在使用methodChannel异步调用 tflite 模型时无法获得匹配的 FPS 和 Camera Preview 滞后。

我还遇到了AndroidView,它在 Widget 层次结构中嵌入了一个 Android 视图,但文档说这是一项昂贵的操作,当可能使用 Flutter 等价物时应该避免这种操作。

有没有办法编写一个插件来在 Flutter 端显示CameraActivity(即 UI),类似于使用 methodChannel 在 Flutter 和 Native 代码之间交换数据的方式。或者,如果有另一种可能的方式来实现这一点,请告诉我。

提前致谢!

4

1 回答 1

0
//Flutter side
Future<Null> showNativeView() async {

  
  if (Platform.isAndroid) {//check if platform is android
    var methodChannel = MethodChannel("methodchannelname");//create a method channel name 
    await methodChannel.invokeMethod('showNativeCameraView');//create method name
  }
}

Container(
child: InkWell(
onTap: () {
showNativeView();//call to open native android activity
},
child: Center(
child: new Text("takeimage"))))

//Android side 


//inside mainactivity on create
var channel: MethodChannel? = null


channel = MethodChannel(flutterView, "methodchannelname");
MethodChannel(flutterView, "methodchannelname")//same as flutterside 
    .setMethodCallHandler { call, result ->
if (call.method == "showNativeCameraView") {//same methodname as flutterside
val intent = Intent(this, ActivityCamera::class.java)//native camera activity code can be added in the android folder of the flutter application
startActivity(intent)
result.success(true)
} else {
result.notImplemented()
}

}
         

此链接将帮助您进一步 https://medium.com/@Chetan/flutter-communicate-with-android-activity-or-ios-viewcontroller-through-method-channel-c11704429cd0

于 2020-07-23T12:52:29.953 回答