Camera Service

以前写过的一个相机的service,不依赖于Activity,运行在service中,提供主要的操作接口

StartCamera

StopeCamera

TakePicture

主要思路是提供一个像素的surfaceView,这个view一直在最前,保证相机能运行并且拿到数据。然后通过相机的操作实现需要的功能。


一个像素的点的大概实现如下:

   

private void makeAndAddSurfaceView() {

        SurfaceView dummyView = new SurfaceView(this.mApplication);

        SurfaceHolder holder = dummyView.getHolder();

        holder.addCallback(this);

        holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);


        WindowManager wm = (WindowManager)this.mApplication.getSystemService(Context.WINDOW_SERVICE);

        

        WindowManager.LayoutParams params = new WindowManager.LayoutParams(1, 1,

                WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,

                WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |

                        WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,

                PixelFormat.TRANSPARENT);

        params.gravity = Gravity.TOP | Gravity.RIGHT;

        params.alpha = PixelFormat.TRANSPARENT;

        params.x = params.y = mApplication.getResources().getDimensionPixelOffset(

                R.dimen.preview_surface_offset);

        

        wm.addView(dummyView, params);

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {

        dummyView.setAlpha(PixelFormat.TRANSPARENT);

        }


        //dummyView.getBackground().setAlpha(PixelFormat.TRANSPARENT);

        mDummySurfaceView = dummyView;

    }


等surfaceview创建完成后,打开相机,可以找到前置或者后置相机,根据自己的意图选择自己需要的相机

               

findFirstBackFacingCamera();


mCamera = Camera.open(mCameraId);


通过mCamera实现对相机的操作等。


详细代码就不写了。有需要的留言吧。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值