我想要Android相机返回的字节数组。因为我希望同步获取它,所以我正在做下面的代码,等待回调完成...但是来自c ++,我想有些东西我不正确。在我的函数中,我想返回回调中提供的字节数组。我尝试了几种组合,直到仍然有问题为止。在jpegCallback.jpgData下面的sameple中给出“找不到符号(字段jpgData)”。 (我在Qt上执行此操作,但我认为问题与Java(和我)严格相关)。感谢您的任何见解。
public static byte[] CameraTakePicture(){
final CountDownLatch jpgWaiter = new CountDownLatch(1);
Camera.PictureCallback jpgCallback=new Camera.PictureCallback(){
public byte[] jpgData;
@Override
public void onPictureTaken(byte[] data,Camera cam){
jpgData=data;
jpgWaiter.countDown();
}
};
camera.takePicture(null,null,null,jpgCallback);
jpgWaiter.await();
byte[] jpgData=jpgCallback.jpgData.clone();
return jpgData;
}
最佳答案
从Java的角度来看,您的jpgCallback
类型为Camera.PictureCallback
,运行时不知道类型为jpgData
的对象中是否存在公共Camera.PictureCallback
字段。
您必须子类化Camera.PictureCallback
才能访问您的公共字段。