Jos*_*a W 5 service camera android background photo
我已经实现了一个从后台线程拍照的服务,但照片永远不会在我的任何设备上拍摄...这里是代码(下面的日志输出):
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");
}
});
}
Run Code Online (Sandbox Code Playgroud)
记录输出:
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
Run Code Online (Sandbox Code Playgroud)
此时没有其他任何事情发生,onPictureTaken方法永远不会被调用,并且没有抛出错误或异常.有谁知道为什么会这样?我看过StackOverflow上的每一个相机教程,似乎没什么用.
根据我的经验和所读到的内容,虚拟SurfaceTexture策略并不适用于所有手机。尝试添加 1x1 像素并在的回调SurfaceView中启动预览(通过 添加)。SurfaceView.getHolder()onSurfaceCreatedaddCallback
有关详细信息,请参阅从相机拍摄照片而不进行预览。
| 归档时间: |
|
| 查看次数: |
2020 次 |
| 最近记录: |