Android 将OpenCV图像(或位图)从服务发送到活动(SurfaceView)

Android 将OpenCV图像(或位图)从服务发送到活动(SurfaceView),android,opencv,service,android-activity,surfaceview,Android,Opencv,Service,Android Activity,Surfaceview,我正在开发一个安卓应用程序,它安装了一个可以执行某些操作的服务 连续且成本高昂的处理(它利用OpenCV抓取相机图像 并对其进行一些处理)。我希望我的活动连接到并断开连接 从服务中执行设备上的其他操作并查看处理过程 (主要用于调试,但我也可以看到其他用例) 问题是我不确定如何设计这个应用程序——我对Android编程也相当陌生 由于它是一个性能关键型应用程序,我想我无法从 活动的服务,所以我想我想把SurfaceView和 活动到达前台后立即提供服务 如下所示-注意:这不是一个完整的示例,它只是

我正在开发一个安卓应用程序,它安装了一个可以执行某些操作的服务 连续且成本高昂的处理(它利用OpenCV抓取相机图像 并对其进行一些处理)。我希望我的活动连接到并断开连接 从服务中执行设备上的其他操作并查看处理过程 (主要用于调试,但我也可以看到其他用例)

问题是我不确定如何设计这个应用程序——我对Android编程也相当陌生

由于它是一个性能关键型应用程序,我想我无法从 活动的服务,所以我想我想把SurfaceView和 活动到达前台后立即提供服务

如下所示-注意:这不是一个完整的示例,它只是显示了流程

公共类MainActivity扩展活动{
私有OpenCVCameraService mService;
私人SurfaceView mSurfaceView;
@凌驾
public void onCreate(){
//显示用户界面
//使用mSurfaceView启动MSService
}
}
公共类OpenCVCameraService扩展服务{
私有处理;
私人SurfaceView mSurfaceView;
@凌驾
public void onCreate(){
//设置OpenCV相机的东西
//使用mSurfaceView进行初始化处理
}
}
公共类处理扩展了线程{
私有视频捕获mCamera;
private SurfaceView mSurfaceView;//可能只是SurfaceHolder
处理(视频捕获摄像机、SurfaceView SurfaceView){
mCamera=摄像机;
mSurfaceView=surfaceView;
}
@凌驾
公开募捐{
mCamera.grab();
检索(…);
//处理检索到的图像
//图像到位图
//现在怎么办,如何将位图发送到MainActivity?我想使用intent传递是一个性能上的成功
//可能类似于if(mSurfaceView!=null){Canvas Canvas=mSurfaceView.lockSurface();…}
}
}

您将如何设计这样的应用程序?还有什么我需要考虑的吗?

< P> OK,这就是我的做法:我已经将Survivew设置为正确的视图(如果应用程序正在运行),如果不在NoService EngEndo/OnService断开的MaunActudio中,则将其设置为NULL(即暂停)。在服务中,我检查视图是否存在。这不是最好的解耦,但它可以工作,而且就我目前所知,性能还可以。

但是当视图为空时,您仍然能够捕获和处理服务中的帧吗?