Android 将相机拍摄的图像转换为bytearray,然后传递到下一个活动?
我试着用相机拍一张照片,然后把它转换成一个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.
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您知道,我不知道为什么这样做。我只是把它移到了另一个活动中,效果非常好!谢谢:)