gpt4 book ai didi

android - 相机预览 onPictureTaken 在 android 中返回错误数据

转载 作者:行者123 更新时间:2023-11-29 19:05:00 27 4
gpt4 key购买 nike

为了完成相机叠加,我写了一个程序,我发现当我在onPictureTaken()中设置变量“image_data”时,它并没有立即改变值,当我再次调用onPictureTaken时它改变了值我无法解决它,任何人都可以帮助我吗?

private PictureCallback jpegCallback = new PictureCallback()  
{public void setImageData(byte[] b) {
image_data = b;
}
@Override
public void onPictureTaken(byte[] data, Camera camera)
{

if (mCamera != null){
mCamera.startPreview();}

FileOutputStream outStream = null;
try {
// Write to SD Card
outStream = new FileOutputStream(String.format("/sdcard/%d.jpg",
System.currentTimeMillis()) );
outStream.write(data);
outStream.close();
Log.d(TAG, "onPictureTaken - wrote bytes: " + data.length);

Log.d(TAG, String.valueOf(data));
image_data = data;
setImageData(data); //neither direct assign nor setImageData are invalid
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
}

Log.d(TAG, "onPictureTaken - jpeg");
}
};

CameraTestActivity代码

mCamera.takePicture();
Toast toast = Toast.makeText(CameraTestActivity.this,
"PhotoTaken"+mCamera.getImageData(), Toast.LENGTH_LONG);
toast.show();

而第一张 toast 秀的照片是“PhotoTaken null”辅助输出是“PhotoTaken B@c4f05e2”

以下是logcat数据

12-03 22:19:20.416 21589-21589/com.example.acer.camerapreview 
D/CameraTest.VersionedCamera: onPictureTaken - wrote bytes: 1644369
12-03 22:19:20.416 21589-21589/com.example.acer.camerapreview
D/CameraTest.VersionedCamera: [B@c4f05e2
12-03 22:19:29.631 21589-21589/com.example.acer.camerapreview
D/CameraTest.VersionedCamera: onPictureTaken - wrote bytes: 1622238
12-03 22:19:29.631 21589-21589/com.example.acer.camerapreview
D/CameraTest.VersionedCamera: [B@adb9e2e

最佳答案

mCamera.takePicture() 需要传递一个PictureCallback,那么你在哪里传递你的PictureCallback(在你的代码中,我看到你的callbackjpegCallback) 吗?

Toast.makeText(CameraTestActivity.this, "PhotoTaken"+ mCamera.getImageData(), Toast.LENGTH_LONG).show() PictureCallback 应该写对>,不低于它。

例如:

mCamera.takePicture(null, null, new Camera.PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
// your code in here is correct ✔︎
}
});

但是

mCamera.takePicture(null, null, new Camera.PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
}
});
// your code in here is wrong ✕

关于android - 相机预览 onPictureTaken 在 android 中返回错误数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47619335/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com