2017-11-23 5 views
0

誰かが私を助けてくれますか。 私は写真を撮ることができ、ギャラリーに表示されますが、イメージビューでは設定できません。アプリがクラッシュします。 マイコードカメラインテントアプリクラッシュ

多分何かがactivityresultに間違っていますか?

File createImageFile() throws IOException { 

     String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
     String imageFileName = "LetsTalk_img" + timeStamp; 
     File storageDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES); 

     File image = File.createTempFile(imageFileName,".jpg", storageDirectory); 
     mImageFileLocation = image.getAbsolutePath(); 
     sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(image))); 
     return image; 

    } 

とonactivityresult: はここで私のミスです

button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 




       intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 

       File photoFile = null; 
       try { 
        photoFile = createImageFile(); 

       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
String authorities = getApplicationContext().getPackageName() + ".fileprovider"; 

       Uri imageUri = FileProvider.getUriForFile(camtest.this, authorities, photoFile); 
intent.putExtra(MediaStore.EXTRA_OUTPUT,imageUri); 



       if (photoFile != null) { 
        imageUri = FileProvider.getUriForFile(camtest.this, 
          BuildConfig.APPLICATION_ID + ".fileprovider", 
          photoFile); 
        Log.i("Uri", imageUri.toString()); 
//    takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI); 
       } 
       else{ 
        Log.i("Uri", "none"); 
       } 
       sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(photoFile))); 

       startActivityForResult(intent, 7); 




      } 
     }); 

ファイルメソッドを作成?事前

+1

方法:スタックトレース? – Alessio

+0

onClick()でメディアスキャナを呼び出さないでください。早くまで。ユーザーは写真を撮らないことも決めることができます。 mediascannerコードをonActivityResult()に移動します。 – greenapps

+0

onActivityResultでビットマップを取得しようとしました。しかし、EXTRA_OUTPUTを使用するときは、1つを取得しません。 – greenapps

答えて

0

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

     if (requestCode == 7 && resultCode == RESULT_OK) { 



     Bitmap bitmap = (Bitmap) data.getExtras().get("data"); 
      imageView.setImageBitmap(bitmap); 


     } 
    } 

おかげであなたは自分のボタンのクリック機能にcameraIntent()方法を置きます。

private void cameraIntent() { 
     Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     startActivityForResult(intent, 0); 
    } 

そして、これをペーストした後。サムネイルに設定するための

@Override 
     public void onActivityResult(int requestCode, int resultCode, Intent data) { 
      super.onActivityResult(requestCode, resultCode, data); 
      if (resultCode == Activity.RESULT_OK) { 
       if (requestCode == 0){ 
        onCaptureImageResult(data); 
      } 
      } 
     } 

は、このようなあなたのImageViewの変数にデータを渡す:

それはすべての最も重要な程度
private void onCaptureImageResult(Intent data) { 

     Bitmap thumbnail = (Bitmap) data.getExtras().get("data"); 
     ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
     thumbnail.compress(Bitmap.CompressFormat.JPEG, 90, bytes); 
     byteArray = bytes.toByteArray(); 
     encodedImage = Base64.encodeToString(byteArray, Base64.DEFAULT); 
     File destination = new File(Environment.getExternalStorageDirectory(), 
       System.currentTimeMillis() + ".jpg"); 
     FileOutputStream fo; 
     try { 
      destination.createNewFile(); 
      fo = new FileOutputStream(destination); 
      fo.write(bytes.toByteArray()); 
      fo.close(); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     imagebox.setImageBitmap(thumbnail); 
    } 
+0

これにはsdカードが必要ですか? – FreetimeBeatz

+0

私は外付けのディレクトリを持っていません – FreetimeBeatz

+0

いいえ、あなたの携帯電話のメモ帳にも保存できます。 –