You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET MAUI获取Android摄像头实时流实现应用内预览拍照咨询

.NET MAUI Android 端 CameraX 应用内预览+拍照实现方案

直接走「共享层自定义控件 + 平台Handler对接原生CameraX」的路径即可,不需要调用系统media selector,全流程在应用内完成,代码量小兼容性高,落地步骤如下:

  • 共享层基础控件定义
    在共享项目新建继承自View的CameraPreview类,添加3个核心成员:
    • 可绑定属性IsPreviewActive(bool类型),用于控制预览启停
    • 可绑定属性CaptureCommand(ICommand类型),用于触发拍照动作
    • 事件PhotoCaptured(事件参数为Stream类型),用于把捕获的图片流回传给业务层
  • Android 项目前置配置
    1. 编辑Platforms/Android/AndroidManifest.xml,添加必要权限与特性声明:
      <uses-permission android:name="android.permission.CAMERA" />
      <uses-feature android:name="android.hardware.camera" android:required="true" />
      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
      
    2. 给Android项目安装对应版本的CameraX依赖包:Xamarin.AndroidX.Camera.Core、Xamarin.AndroidX.Camera.Camera2、Xamarin.AndroidX.Camera.Lifecycle、Xamarin.AndroidX.Camera.View,版本号和当前MAUI版本绑定的AndroidX库版本对齐即可,避免版本冲突。
  • 平台Handler实现
    为CameraPreview编写Android端Handler:
    1. Handler的原生视图直接用CameraX官方提供的PreviewView,不要自定义SurfaceView/SurfaceHolder,减少兼容性问题。
    2. 重写ConnectHandler方法,首先动态申请CAMERA权限,权限校验通过后再执行CameraX初始化逻辑。
    3. 初始化时先获取ProcessCameraProvider单例,构造两个核心用例:预览用的Preview实例、拍照用的ImageCapture实例,把两个用例绑定到当前页面所在Activity的LifecycleOwner上,生命周期完全交给CameraX托管,不需要手动写页面切后台释放、回前台重连的逻辑。
    4. 等PreviewView完成布局渲染后,再把Preview实例的SurfaceProvider绑定到PreviewView的SurfaceProvider上——这是绝大多数人调试预览黑屏的核心原因,提前绑定会拿不到有效的渲染Surface。
  • 拍照功能实现
    响应共享层CaptureCommand的调用,直接用初始化好的ImageCapture实例执行TakePicture方法,输出选项可选内存流或者临时文件,捕获完成后把图片字节转为Stream,通过PhotoCaptured事件传回共享层,即可在业务层实现图片保存、展示、上传等逻辑。
  • 常见问题排查
    • 预览黑屏:优先检查摄像头权限是否授予,其次检查Preview和PreviewView的绑定时机是否在控件布局完成后,最后确认CameraX绑定的是当前Activity的生命周期,而非Application全局生命周期。
    • 拍照画面变形:将PreviewView的ScaleType设置为FillCenter,同时让ImageCapture的目标宽高比和CameraPreview控件的实际宽高比保持一致,不要硬编码固定比例。
    • 切后台崩溃:不要手动持有Camera实例做生命周期管理,全量交给Lifecycle组件托管即可,CameraX会自动处理资源释放与重连。

不建议直接依赖第三方跨平台相机插件,这类插件普遍存在MAUI版本适配滞后、自定义能力不足的问题,自行对接CameraX的核心代码不到200行,后续迭代可控性更高。

内容的提问来源于stack exchange,提问作者user14386474

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 22:54:31