我想要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才能访问您的公共字段。

08-18 03:29