以前在开发中遇到过一个项目,需要调用手机的拍照,并把照片传过去。但是拍照时手机不能让用户看到相机打开。
思路是启动一个service,service中实现一个surfaceview,surfaceview是一个像素的点,这样就防止了用户看到相机被打开。
先看surfaceview的实现:
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 = Gravi