0

カメラで写真を撮り、それをバイト配列に変換して次のアクティビティに渡そうとしています。私はそれを行う方法を理解することはできません。これは、写真を撮るアクティビティのコードです。

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
    }

}

バイトアレイを受信して​​デコードできるように、次のアクティビティをすでに設定しているので、サポートが必要なのはこれだけです。

4

2 に答える 2

1

これを試してみてください

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();
    }
于 2013-03-10T20:48:18.253 に答える
1

Squonk が指摘したように、カメラのインテントと OnActivityResult を、それ自体ではなく次のアクティビティに移動する必要がありました。それは今動作します。

于 2013-03-10T21:09:55.447 に答える