2016-10-31 38 views
0

私はCameraActivityを開くCardActivityを持っています。私はイメージボタンを押して、ネイティブのカメラアプリが開き、写真を撮ることができます。私はByteArrayでインテントを使ってCardActivityに戻します。しかしそれは私に白い空白の画面を与えます。それは画像ビューに何も挿入しません。 Bitmap要素はnullではなく、何かを持っています。SetImageBitmapは白い空白の全画面を表示します

これはカメラの活動を開始し、画像を設定するための私のスイッチである。

switch (v.getId()) { 
       case R.id.pButton1: 
        Intent cam = new Intent(CardActivity.this, CameraActivity.class); 
        startActivity(cam); 
        returnImage2(); 
        mImageView = (ImageView)findViewById(R.id.imageView); 
        mImageView.setImageBitmap(bitmap); 
        mImageView.setRotation(180); 
        break; 

これは私returnImage2(です)。

public void returnImage2() { 

     try { 
      bitmap = BitmapFactory.decodeStream(this.openFileInput("myImage")); 
     } 
     catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

これは私のcameraActivityです:

public class CameraActivity extends Activity { 
     private String mCurrentPhotoPath; 
     private ImageView mImageView; 
     private Bitmap mImageBitmap; 
     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      dispatchTakePictureIntent(); 
     } 
     public void dispatchTakePictureIntent() { 
      Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
      // Ensure that there's a camera activity to handle the intent 
      if (takePictureIntent.resolveActivity(getPackageManager()) != null) { 
       // Create the File where the photo should go 
       File photoFile = null; 
       try { 
        photoFile = createImageFile(); 
       } catch (IOException ex) { 
        // Error occurred while creating the File 
        System.out.println("ERR CANNOT CREATE FILE"); 
       } 
       // Continue only if the File was successfully created 
       if (photoFile != null) { 
        Uri photoURI = FileProvider.getUriForFile(this, 
          "com.example.android.fileprovider", 
          photoFile); 
        takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI); 
        startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO); 
       } 
      } 
     } 
     private File createImageFile() throws IOException { 
      // Create an image file name 
      String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
      String imageFileName = "JPEG_" + timeStamp + "_"; 
      File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES); 

      File image = File.createTempFile(
        imageFileName, /* prefix */ 
        ".jpg",   /* suffix */ 
        storageDir  /* directory */ 
      ); 

      // Save a file: path for use with ACTION_VIEW intents 
      mCurrentPhotoPath = "file:" + image.getAbsolutePath(); 
      return image; 
     } 
     private File createImageFile2() throws IOException { 
      // Create an image file name 
      String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
      String imageFileName = "JPEG_" + timeStamp + "_"; 
      File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES); 

      File image = File.createTempFile(
        imageFileName, /* prefix */ 
        ".jpg",   /* suffix */ 
        storageDir  /* directory */ 
      ); 

      // Save a file: path for use with ACTION_VIEW intents 
      mCurrentPhotoPath = "file:" + image.getAbsolutePath(); 
      return image; 
     } 
     @Override 
     protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
      if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { 
       try { 
        mImageBitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), Uri.parse(mCurrentPhotoPath)); 
        cImageFromBitmap(mImageBitmap); 
        //mImageView = (ImageView)findViewById(R.id.imageView); 
        //mImageView.setImageBitmap(mImageBitmap); 
        //mImageView.setRotation(180); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
     public String cImageFromBitmap(Bitmap bitmap){ 
      String fileName = "myImage";//no .png or .jpg needed 
      try { 
       ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
       bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes); 
       FileOutputStream fo = openFileOutput(fileName, Context.MODE_PRIVATE); 
       fo.write(bytes.toByteArray()); 
       // remember close file output 
       fo.close(); 
      } catch (Exception e) { 
       e.printStackTrace(); 
       fileName = null; 
      } 
      return fileName; 
     } 
} 

答えて

0

私はあなたが

   startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO) 

あなたの活動を開始するためREQUEST_TAKE_PHOTOを使用しているが、あなたはonActivityResult

   if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { 
012に REQUEST_IMAGE_CAPTUREをチェックされて気づきました

ALSO:

なぜこの作業をすべて行ってファイルを作成するのか分かりません。あなたがACTION_IMAGE_CAPTUREを使用すると、ビットマップ自体は、結果の意図に戻ってくる:

  if (requestCode == REQUEST_TAKE_PHOTO && resultCode == RESULT_OK) { 
       try { 
        mImageBitmap = (Bitmap) data.getExtras().get("data"); 
+0

私は、この作品のすべてを通過する理由れる1 MB以上のインテントを処理するために:私はその部分を削除した場合/私はまだ白い画面を取得しますifチェック – NicklasN

関連する問題