android+后台+拍照,Android相机无法从后台服务拍照

作者分享了一段关于从后台线程启动照片拍摄服务的代码,但发现服务启动后,onPictureTaken方法未触发,且无明显错误。文章将探讨问题可能的原因,寻求解决策略,以帮助读者理解此类常见问题及排查技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我已经实现了一个从后台线程拍照的服务,但照片永远不会在我的任何设备上拍摄…这里是代码(下面的日志输出):

public class PhotoCaptureService extends Service {

private static final String TAG = "PhotoCaptureService";

@Override

public void onStart(Intent intent, int startId) {

super.onStart(intent, startId);

Log.d(TAG, "Starting the PhotoCaptureService");

takePhoto();

}

private void takePhoto() {

Log.d(TAG, "Preparing to take photo");

Camera camera = null;

try {

camera = Camera.open();

} catch (RuntimeException e) {

Log.e(TAG, "Camera not available", e);

return;

}

if (null == camera) {

Log.e(TAG, "Could not get camera instance");

return;

}

Log.d(TAG, "Got the camera, creating the dummy surface texture");

SurfaceTexture dummySurfaceTexture = new SurfaceTexture(0);

try {

camera.setPreviewTexture(dummySurfaceTexture);

} catch (Exception e) {

Log.e(TAG, "Could not set the surface preview texture", e);

}

Log.d(TAG, "Preview texture set, starting preview");

camera.startPreview();

Log.d(TAG, "Preview started");

camera.takePicture(null, null, new Camera.PictureCallback() {

@Override

public void onPictureTaken(byte[] data, Camera camera) {

Log.d(TAG, "Photo taken, stopping preview");

camera.stopPreview();

Log.d(TAG, "Preview stopped, releasing camera");

camera.release();

Log.d(TAG, "Camera released");

}

});

}

记录输出:

D/PhotoCaptureService﹕ Starting the PhotoCaptureService

D/PhotoCaptureService﹕ Preparing to take photo

D/PhotoCaptureService﹕ Got the camera, creating the dummy surface texture

D/PhotoCaptureService﹕ Preview texture set, starting preview

D/PhotoCaptureService﹕ Preview started

此时没有其他任何事情发生,onPictureTaken方法永远不会被调用,并且没有抛出错误或异常.有谁知道为什么会这样?我看过StackOverflow上的每一个相机教程,似乎没什么用.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值