Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将相机拍摄的图像转换为bytearray,然后传递到下一个活动?_Android_Android Intent_Camera - Fatal编程技术网

Android 将相机拍摄的图像转换为bytearray,然后传递到下一个活动?

Android 将相机拍摄的图像转换为bytearray,然后传递到下一个活动?,android,android-intent,camera,Android,Android Intent,Camera,我试着用相机拍一张照片,然后把它转换成一个bytearray并传递到下一个活动。但是我不知道怎么做。这是拍摄照片的活动中的代码: import java.io.ByteArrayOutputStream; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.

我试着用相机拍一张照片,然后把它转换成一个bytearray并传递到下一个活动。但是我不知道怎么做。这是拍摄照片的活动中的代码:

import java.io.ByteArrayOutputStream;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.provider.MediaStore;
import android.widget.ImageView;

public class TakePictureActivity extends Activity {

    public final static int CAMERA_REQUEST = 1888;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TakePicture();
    }

    public void TakePicture() {
        Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(takePictureIntent, CAMERA_REQUEST);
    }

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // I don't know what to do here
    }

}
我已经设置了下一个活动,以便它可以接收bytearray并对其进行解码,所以我需要的帮助就是这个。

试试这个

byte[] inputData=null;
protected void onActivityResult(int requestCode, int resultCode, Intent intent){
    Uri uri = intent.getData();
    InputStream iStream =   getContentResolver().openInputStream(uri);
    inputData = getBytes(iStream);
} 
getBytes方法

public byte[] getBytes(InputStream inputStream) throws IOException {
      ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream();
      int bufferSize = 1024;
      byte[] buffer = new byte[bufferSize];

      int len = 0;
      while ((len = inputStream.read(buffer)) != -1) {
        byteBuffer.write(buffer, 0, len);
      }
      return byteBuffer.toByteArray();
    }

正如Squonk指出的,我应该将相机的意图和OnActivityResult移到下一个活动中,而不是移到它自己的活动中。现在可以了。

为什么你有一个没有“视图”的
活动?
活动的要点在于它基本上是一个UI框架——换句话说,它不仅仅是某种普通类,它是用来显示用户界面的。只需将您的
TakePicture()
onActivityResult(…)
方法放入另一个
Activity
中,您就不必担心传递图像了。@Squonk您知道,我不知道为什么这样做。我只是把它移到了另一个活动中,效果非常好!谢谢:)