android - 在应用程序本身拍照后使用byte []

时间:2015-08-08 14:27:55

标签: android camera android-camera android-camera-intent

我拍照并想把它放在另一个Activity的ImageView中,但出了点问题。这是我的代码:

Camera mCamera;

//Some Code

public void onClick(View v) {
    mCamera.takePicture(shutterCallback, rawCallback, jpegCallback);        
}

Camera.ShutterCallback shutterCallback = new Camera.ShutterCallback() {
    public void onShutter() {           
    }
};

Camera.PictureCallback rawCallback = new Camera.PictureCallback() {
    public void onPictureTaken(byte[] data, Camera camera) {
        mCamera.stopPreview();
        mCamera.release();
        mCamera = null;

        Intent inCapture = new Intent(MainActivity.this, SecondActivity.class);
        //Actually, I don't know where to put it: here or in jpegCallback
        inCapture.putExtra("captured", data);
        startActivity(inCapture);
    }
};

Camera.PictureCallback jpegCallback = new Camera.PictureCallback() {
    public void onPictureTaken(byte[] data, Camera camera) {

        //My attempt to load the result into ImageView in the same Activity - didn't work too
        if (data != null) {
            ByteArrayInputStream imageStream = new ByteArrayInputStream(
                    data);
            Bitmap theImage = BitmapFactory
                    .decodeStream(imageStream);
            imageView.setBackground(null);
            imageView.setBackground(new BitmapDrawable(
                    getResources(), theImage));
        }
    }
};

它没有运行SecondActivity,我不知道如何在onClick()中声明我的意图,并且能够将byte []数据放入其中(不同的类我无法生成意图静态 - 至少,我不能。有没有更好的方法来捕获照片并将该字节[]传递给另一个Activity?

P.S。我知道还有Camera2更新,但到目前为止,我还没有明白如何使用它。

1 个答案:

答案 0 :(得分:0)

你可以使用ContentProvider,虽然有些实现需要由你自己来处理,但它有时可能会很有用,但也不错。你可以做的另一件事是将Bitmap对象放在一个单独的类中的队列或hashmap中,并通过intent传递该位图的id,被调用的activity将获取id并从那里拉出它。你需要在那里处理一些同步。