问题 如何使用相机在Android后台服务中拍照? [重复]


这个问题在这里已有答案:


3524
2017-09-13 08:30


起源



答案:


您可以使用虚拟视图无需预览即可拍摄照片。

喜欢:

SurfaceView view = new SurfaceView(this);
c.setPreviewDisplay(view.getHolder());
c.startPreview();
c.takePicture(shutterCallback, rawPictureCallback, jpegPictureCallback);

9
2017-09-13 08:35



这不适用于所有设备,如下所示: stackoverflow.com/a/5384913/318870 - Dolan Antenucci
什么是c,shutterCallback和所有变量..请提供整个代码 - jyomin
此代码不正确。我需要添加 view 到了 WindowManager。我还需要添加一个回调 view.getHolder() 然后在 surfaceCreated 设置预览,开始预览,拍摄照片。 - Sam


答案:


您可以使用虚拟视图无需预览即可拍摄照片。

喜欢:

SurfaceView view = new SurfaceView(this);
c.setPreviewDisplay(view.getHolder());
c.startPreview();
c.takePicture(shutterCallback, rawPictureCallback, jpegPictureCallback);

9
2017-09-13 08:35



这不适用于所有设备,如下所示: stackoverflow.com/a/5384913/318870 - Dolan Antenucci
什么是c,shutterCallback和所有变量..请提供整个代码 - jyomin
此代码不正确。我需要添加 view 到了 WindowManager。我还需要添加一个回调 view.getHolder() 然后在 surfaceCreated 设置预览,开始预览,拍摄照片。 - Sam


没有预览/表面视图是不可能的。


1
2017-09-13 08:33



没错,但您仍然可以使用透明预览或1x1预览等技巧。此外,在某些手机上,你显然可以使用假人 SurfaceTexture 要么 SurfaceView 没有显示。 - Sam
它在某些设备上没有Surfaceview(如我的笔记2),但在每台设备上都不起作用。所以使用SurfaceView是必须的。 - TheOnlyAnil