我能够使用相机拍摄照片的唯一代码来自一项活动.我相当确定可以从服务中或从服务启动的AsyncTask中获取照片.
在我看来,相机API需要一个必须绑定到UI的SurfaceView.也许我错了.有人写过代码可以从服务中获取照片吗?
这可以WindowManager在Android中使用.
我应该说是的,你需要SurfaceView拍照,但它不必绑定到某个xml布局.您可以将它添加到WindowManager甚至在服务中工作的类中.因此,WindowManager这里打开一个"窗口",让您在Android中执行任何浮动效果.
特别,
您可以添加SurfaceView到WindowManager并设置参数如下.
mPreview = new CameraPreview(this, mCamera, jpegCallback);
WindowManager wm = (WindowManager) this
.getSystemService(Context.WINDOW_SERVICE);
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
PixelFormat.TRANSPARENT);
params.height = 1;
params.width = 1;
wm.addView(mPreview, params);
Run Code Online (Sandbox Code Playgroud)
Android具有此功能,而iOS则没有.这就是为什么你可以在Android而不是iOS的主屏幕上激活Facebook聊天.
在android中显示来自广播接收器的聊天头像facebook