从Android的后台服务打开/运行相机 [英] Open/Run Camera from background service in android

查看:157
本文介绍了从Android的后台服务打开/运行相机的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

要建立一个应用程序不断记录在后台,这可能吗?

Want to build an app which keeps recording in background, is it possible ?

推荐答案

是它非常可能。

创建活动,将一些活动启动后台服务,或者你也可以使用报警管理器来启动和停止服务,按照您的要求。

Create an 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.

查了一些粗糙的code将开始与放大器;停止使用相机录制,这个你可以从你的后台服务调用,将工作的顺利开展。

Check some rough code which will start & stop recording using camera, this you can call from your background service and will work smoothly.

    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;
    }
}

这是样品code,你需要周围添加自己的逻辑和也相应处理异常。

This is sample code, you need to add your own logic around and also handle exceptions accordingly.

这篇关于从Android的后台服务打开/运行相机的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆