Android:是否可以使用没有UI的服务从相机拍照

And*_*Dev 5 camera android

我能够使用相机拍摄照片的唯一代码来自一项活动.我相当确定可以从服务中或从服务启动的AsyncTask中获取照片.

在我看来,相机API需要一个必须绑定到UI的SurfaceView.也许我错了.有人写过代码可以从服务中获取照片吗?

lif*_*ger 5

这可以WindowManager在Android中使用.

/sf/answers/718805531/

我应该说是的,你需要SurfaceView拍照,但它不必绑定到某个xml布局.您可以将它添加到WindowManager甚至在服务中工作的类中.因此,WindowManager这里打开一个"窗口",让您在Android中执行任何浮动效果.

特别,

您可以添加SurfaceViewWindowManager并设置参数如下.

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

  • 重要的是要注意,此方法需要android.permission.SYSTEM_ALERT_WINDOW权限,用户可能会遇到此问题. (4认同)

Gri*_*ail -3

我认为这是不可能的,因为相机需要预览屏幕。在这里查看类似的问题