1

こんにちは私は私のインターンシップのためのアプリを作っています。
私はこれがactivity.javaエラーキャプチャ写真とサムネイルアンドロイドスタジオを表示

private void dispatchTakePictureIntent() { 
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    // Ensure that there's a camera activity to handle the intents 
    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 
     } 
     // Continue only if the File was successfully created 
     if (photoFile != null) { 
      Uri photoURI = FileProvider.getUriForFile(this, "com.example.android.provider", photoFile); 
      takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI); 
      startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO); 
     } 
    } 
} 

であり、これはonActivityResult()のコードである。この

を解決してください:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data){ 
    super.onActivityResult(requestCode, resultCode, data); 
    if (resultCode == RESULT_OK && requestCode == REQUEST_TAKE_PHOTO) { 
     Bundle extras = data.getExtras(); 
     Bitmap imageBitmap = (Bitmap) extras.get("data"); 
     imageView.setImageBitmap(imageBitmap); 
    } 
    if (resultCode == Activity.RESULT_OK){ 
     if (requestCode == PICK_FILE_REQUEST){ 
      if (data == null){ 
       return; 
      } 

      Uri selectedFileUri = data.getData(); 
      selectedFilePath = FilePath.getPath(this, selectedFileUri); 
      Log.i(TAG,"Selected File Path:"+selectedFilePath); 

      if (selectedFilePath != null && !selectedFilePath.equals("")){ 
       tv_file_name.setText(selectedFilePath); 
      }else{ 
       Toast.makeText(this, "Cannot upload file to server", Toast.LENGTH_SHORT).show(); 
      } 
     } 
    } 
} 

と私はこの

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { }} to activity {com.example.febryan.apptest/com.example.febryan.apptest.RequestActivity2}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.os.Bundle.get(java.lang.String)' on a null object reference 
                      at android.app.ActivityThread.deliverResults(ActivityThread.java:4324) 
                      at android.app.ActivityThread.handleSendResult(ActivityThread.java:4367) 
                      at android.app.ActivityThread.-wrap19(Unknown Source:0) 
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1649) 
                      at android.os.Handler.dispatchMessage(Handler.java:105) 
                      at android.os.Looper.loop(Looper.java:164) 
                      at android.app.ActivityThread.main(ActivityThread.java:6541) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 
                     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.os.Bundle.get(java.lang.String)' on a null object reference 
                      at com.example.febryan.apptest.RequestActivity2.onActivityResult(RequestActivity2.java:311) 
                      at android.app.Activity.dispatchActivityResult(Activity.java:7235) 
                      at android.app.ActivityThread.deliverResults(ActivityThread.java:4320) 

をしてくださいました私はこれを解決するのに役立ちます。 thx

答えて

1

返されたインテントのサムネイルを返すときにのみ、デフォルトのAndroidカメラアプリケーションがnull以外のインテントを返します。書き込むURIでEXTRA_OUTPUTを渡すと、ヌルインテントが返され、渡されたURIに画像が入ります。

あなたの意図に沿ったEXTRA_OUTPUTの場所を渡すので、常にデータでヌルを返します今の場合、写真/キャプチャされた画像はphotoURIパスになります。

したがって、onActivityResult()のデータインテントを調べる代わりに、photoURIパスからデータインテントを取得します。 below.Hereの写真ファイルと同じように、あなたはサムネイル画像のために言及し、おそらくとして、この画像をトリミングして拡大したい場合は、実際のカメラ画像

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data){ 
    super.onActivityResult(requestCode, resultCode, data); 
    if (resultCode == RESULT_OK && requestCode == REQUEST_TAKE_PHOTO) { 

     Uri uri = Uri.fromFile(photoFile); // Here photo file is the file EXTRA_OUTPUT location where you saved the actual camera image 
     Bitmap bitmap; 
     try { 
      bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri); 
      bitmap = crupAndScale(bitmap, 300); // if you mind scaling 
      pofileImageView.setImageBitmap(bitmap); 
     } catch (FileNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     imageView.setImageBitmap(bitmap); 
    } 

} 

を保存したファイルEXTRA_OUTPUTの場所です。

public static Bitmap crupAndScale (Bitmap source,int scale){ 
    int factor = source.getHeight() <= source.getWidth() ? source.getHeight(): source.getWidth(); 
    int longer = source.getHeight() >= source.getWidth() ? source.getHeight(): source.getWidth(); 
    int x = source.getHeight() >= source.getWidth() ?0:(longer-factor)/2; 
    int y = source.getHeight() <= source.getWidth() ?0:(longer-factor)/2; 
    source = Bitmap.createBitmap(source, x, y, factor, factor); 
    source = Bitmap.createScaledBitmap(source, scale, scale, false); 
    return source; 
} 
+1

どうも!!!今私は私のサーバーにそれをアップロードする必要があります –

+0

あなたの歓迎。お力になれて、嬉しいです :) –

関連する問題