如何在后台使用 Android 相机?

编程入门 行业动态 更新时间:2024-10-27 00:23:37
本文介绍了如何在后台使用 Android 相机?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前正在开发一个需要在后台录制视频并对其进行处理的应用.

I'm currently developing an app which need to record video in background and process it.

(需要后台实时获取相机预览数据,并对预览数据进行图像处理)

(It needs to get camera preview data real-time in background and have to image process the preview data)

但是,要实现它,我需要使用Camera和OpenCV as Service,而且在OpenCV和Android.Hardware.Camera中使用JavaCameraView似乎不可能不使用任何预览.

However, to achieve it, I need to use Camera and OpenCV as Service, and it seems that it is impossible to use JavaCameraView in OpenCV and Android.Hardware.Camera without using any preview.

这是我的问题.

我听说 OpenCV 中的 NativeCamera 可以用于此目的.是否可以?(可能有例子?)

I heard that NativeCamera in OpenCV can be used for this purpose. Is it possible? (Possibly with examples?)

是否有任何方法可以为此目的使用 JavaCameraView(或类似的东西)?我目前使用的是 Galaxy S4.

Is there any method that I can use JavaCameraView(or similar stuff) for this purpose? I currently use Galaxy S4.

如果 android 不支持这种方法,是否有可能的解决方法?(使用没有任何表面视图的相机预览,或不使用预览处理相机数据)

Is there any possible workarounds if android doesn't support such method?(Using Camera Preview without any surface view, or Process camera data without using preview)

(可选)为什么安卓不支持这样的操作?很烦人!

(OPTIONAL)Why the android doesn't support such operation? It is very annoying!

感谢您回答问题.

推荐答案

可以通过以下步骤..

创建一个活动,它会在某个事件上启动您的后台服务,或者您也可以根据需要使用警报管理器来启动和停止服务.

Create one activity which will start your background service on some event or you can also use alarm manager to start and stop the service as per your requirement.

查看下面的代码可以帮助您.

See the below code that'll help you.

public boolean starMediaRecording(){
        Camera.Parameters params = mServiceCamera.getParameters();
        mServiceCamera.setParameters(params);
        Camera.Parameters p = mServiceCamera.getParameters();

        final List<Size> listSize = p.getSupportedPreviewSizes();
        Size mPreviewSize = listSize.get(2);
        p.setPreviewSize(mPreviewSize.width, mPreviewSize.height);
        p.setPreviewFormat(PixelFormat.YCbCr_420_SP);
        mServiceCamera.setParameters(p);

        try {
            mServiceCamera.setPreviewDisplay(mSurfaceHolder);
            mServiceCamera.startPreview();
        }
        catch (IOException e) {
            Log.e(TAG, e.getMessage());
            e.printStackTrace();
        }

        mServiceCamera.unlock();

        mMediaRecorder = new MediaRecorder();
        mMediaRecorder.setCamera(mServiceCamera);
        mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
        mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
        mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
        mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);
        mMediaRecorder.setOutputFile("/sdcard/filenamevideo.mp4");
        mMediaRecorder.setVideoFrameRate(30);
        mMediaRecorder.setVideoSize(mPreviewSize.width, mPreviewSize.height);
        mMediaRecorder.setPreviewDisplay(mSurfaceHolder.getSurface());

        mMediaRecorder.prepare();
        mMediaRecorder.start(); 

        mRecordingStatus = true;

        return true;

}

public void stopMediaRecorder() {
    mServiceCamera.reconnect();

    mMediaRecorder.stop();
    mMediaRecorder.reset();

    mServiceCamera.stopPreview();
    mMediaRecorder.release();

    mServiceCamera.release();
    mServiceCamera = null;
    }
}

这篇关于如何在后台使用 Android 相机?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

更多推荐

[db:关键词]

本文发布于:2023-03-30 21:05:04,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/787598.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:后台   相机   如何在   Android

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!