Java 如何使用CameraKit拍照?

Java 如何使用CameraKit拍照?,java,android,Java,Android,我一直在构建一个使用Flurge的摄像机的项目,我有一个相当恼人的问题。我真的不知道怎么拍照。我有一个快门按钮,按下该按钮时,应该会激活PictureTaken侦听器,但我不知道它是否工作,或者是否正在保存。当我点击手机上的快门按钮时,logcat会返回图片的尺寸,即13MP,但不会保存 这是按下快门按钮时运行的代码: cameraView.captureImage(); cameraView.setCameraListener(new CameraListener() { @Overr

我一直在构建一个使用Flurge的
摄像机的项目,我有一个相当恼人的问题。我真的不知道怎么拍照。我有一个快门按钮,按下该按钮时,应该会激活PictureTaken侦听器,但我不知道它是否工作,或者是否正在保存。当我点击手机上的快门按钮时,logcat会返回图片的尺寸,即13MP,但不会保存

这是按下快门按钮时运行的代码:

cameraView.captureImage();
cameraView.setCameraListener(new CameraListener() {
    @Override
    public void onPictureTaken(byte[] picture) {
        super.onPictureTaken(picture);

        Bitmap result = BitmapFactory.decodeByteArray(picture, 0, picture.length);
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        result.compress(Bitmap.CompressFormat.JPEG, 40, stream);
    }
});
我尝试将JPEG质量设置为40,以减少应用程序在处理图像时的冻结,但根本没有帮助。我得到的唯一输出是图像全分辨率的logcat,它是13Mp

无论它是否被保存

如果“保存”,您的意思是写入磁盘或网络,那么在您的问题中,您没有执行此操作的任何代码

这是按下快门按钮时运行的代码:

cameraView.captureImage();
cameraView.setCameraListener(new CameraListener() {
    @Override
    public void onPictureTaken(byte[] picture) {
        super.onPictureTaken(picture);

        Bitmap result = BitmapFactory.decodeByteArray(picture, 0, picture.length);
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        result.compress(Bitmap.CompressFormat.JPEG, 40, stream);
    }
});
如果要将映像保存到磁盘,请分叉一个线程并将字节写入
FileOutputStream
,其中
FileOutputStream
指向要将映像存储在或上的任何位置。您不需要解码
字节[]
;它已经是JPEG格式,所以您可以只写字节

无论它是否被保存

如果“保存”,您的意思是写入磁盘或网络,那么在您的问题中,您没有执行此操作的任何代码

这是按下快门按钮时运行的代码:

cameraView.captureImage();
cameraView.setCameraListener(new CameraListener() {
    @Override
    public void onPictureTaken(byte[] picture) {
        super.onPictureTaken(picture);

        Bitmap result = BitmapFactory.decodeByteArray(picture, 0, picture.length);
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        result.compress(Bitmap.CompressFormat.JPEG, 40, stream);
    }
});

如果要将映像保存到磁盘,请分叉一个线程并将字节写入
FileOutputStream
,其中
FileOutputStream
指向要将映像存储在或上的任何位置。您不需要解码
字节[]
;它已经是JPEG格式,所以您可以只写字节。

您需要调用
captureImage()位于侦听器下方

看起来您甚至在设置侦听器之前就已经捕获了图像。应该是这样的

cameraView.setCameraListener(new CameraListener() {
    @Override
    public void onPictureTaken(byte[] picture) {
        super.onPictureTaken(picture);

            Bitmap result = BitmapFactory.decodeByteArray(picture, 0,picture.length);
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            result.compress(Bitmap.CompressFormat.JPEG, 40, stream);

    }
});
cameraView.captureImage();

您需要调用
captureImage()位于侦听器下方

看起来您甚至在设置侦听器之前就已经捕获了图像。应该是这样的

cameraView.setCameraListener(new CameraListener() {
    @Override
    public void onPictureTaken(byte[] picture) {
        super.onPictureTaken(picture);

            Bitmap result = BitmapFactory.decodeByteArray(picture, 0,picture.length);
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            result.compress(Bitmap.CompressFormat.JPEG, 40, stream);

    }
});
cameraView.captureImage();

我想我得到了大部分,你能为它写代码吗?如果你不能,请你更深入地解释一下我是如何做到这一点的?我很抱歉给你添麻烦,不过谢谢你@MayankThakur:Threads和
FileOutputStream
在您关于Java编程的书中有介绍。关于Android应用程序开发的书中介绍了存储文件的特定位置和Android的特定线程技术。一旦你读了这些东西,如果你仍然有一些具体的问题没有完全解决,请随意问一些新的堆栈溢出问题。根据我的书,你指的是一些教程吗?因为我没有任何编程方面的书,也没有写过。Thanks@MayankThakur:“因为我没有任何编程方面的书”——也许这就是你困难的根源。找一本关于Java编程的书,学习Java。然后,买一本关于安卓应用程序开发的书,学习安卓应用程序开发。我想我已经掌握了其中的大部分内容,你能为此编写代码吗?如果你不能,请你更深入地解释一下我是如何做到这一点的?我很抱歉给你添麻烦,不过谢谢你@MayankThakur:Threads和
FileOutputStream
在您关于Java编程的书中有介绍。关于Android应用程序开发的书中介绍了存储文件的特定位置和Android的特定线程技术。一旦你读了这些东西,如果你仍然有一些具体的问题没有完全解决,请随意问一些新的堆栈溢出问题。根据我的书,你指的是一些教程吗?因为我没有任何编程方面的书,也没有写过。Thanks@MayankThakur:“因为我没有任何编程方面的书”——也许这就是你困难的根源。找一本关于Java编程的书,学习Java。然后,买一本关于Android应用程序开发的书,学习Android应用程序开发。