2017-02-22 14 views
0

私はアンドロイドで簡単なカメラアプリケーションを構築しています。カメラインテントは、MainActivityに存在するImageViewに後で表示される画像をクリックします。 ただし、画像をキャプチャすることはできますが、画像を表示する代わりに画像がキャプチャされるとすぐに、アプリが突然クラッシュします。ここでカメラからキャプチャした画像を取得できません

は、アプリケーションのための私のコードです:

MainActivity.java

package com.example.suzancruz.cameraapplicaton; 

import android.content.Intent; 
import android.graphics.Bitmap; 
import android.provider.MediaStore; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ImageView; 


public class MainActivity extends AppCompatActivity { 


    static final int REQUEST_IMAGE_CAPTURE = 123; 
    ImageView myImageView; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

    } 

    //Launching the camera 
    public void launchCamera(View view){ 
     Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     //Take a picture and pass results along to onActivityResult 
     startActivityForResult(intent, REQUEST_IMAGE_CAPTURE); 
    } 

    //If you want to return the image taken 
    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if(requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK){ 
      //Get the photo 
      Bundle extras = data.getExtras(); 
      Bitmap photo = (Bitmap) extras.get("data"); 
      myImageView.setImageBitmap(photo); 
     } 
    } 
} 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activity_main" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.example.suzancruz.cameraapplicaton.MainActivity"> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:onClick="launchCamera" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     android:text="Take Picture" 

     /> 
    <ImageView 
     android:layout_width="300dp" 
     android:layout_height="300dp" 
     android:id="@+id/myImageView" 

     /> 
</RelativeLayout> 

のAndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.suzancruz.cameraapplicaton"> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity android:name=".MainActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 

     </activity> 
     <uses-feature android:name="android.hardware.camera2"></uses-feature> 
     <uses-permission android:name="android.permission.CAMERA"/> 
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
    </application> 

</manifest> 
+0

クラッシュレポートには何が記載されていますか? – Piyush

+0

@Piyush、原因:java.lang.NullPointerException:行 "myImageView.setImageBitmap(photo);" –

+0

'myImageView' – Piyush

答えて

0

この `パブリックを試してみてくださいvoid onTakeImg(){

values = new ContentValues(); 
    values.put(MediaStore.Images.Media.TITLE, "Image"); 
    values.put(MediaStore.Images.Media.DESCRIPTION, "From your Camera"); 
    imageUri = getActivity().getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); 
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); 
    if (takePictureIntent.resolveActivity(getActivity().getPackageManager()) != null) { 
     startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); 
    } 

} 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 

    switch (requestCode) { 
     case REQUEST_IMAGE_CAPTURE: 
      if (resultCode == RESULT_OK) { 
       try { 
        mBitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), imageUri); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
       onImageAvailable(mBitmap, requestCode); 
       Img.setImageBitmap(mBitmap); 
           } 
      break; 

    } 
} 

void onImageAvailable(Bitmap imageBitmap, int requestCode) { 
    String output = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString() + "/.immigration/temp/"; 
    File f = new File(output); 
    if (!f.exists()) { 
     f.mkdirs(); 
    } 

    String filename = output + "Image.jpg"; 

    File fileDelete = new File(filename); 

    if (fileDelete.exists()) { 
     if (fileDelete.delete()) { 
      System.out.println("file Deleted :" + filename); 
     } else { 
      System.out.println("file not Deleted :" + filename); 
     } 
    } 

    try { 
     FileOutputStream out = new FileOutputStream(filename); 
     Matrix matrix = new Matrix(); 
     if (imageBitmap.getWidth() < imageBitmap.getHeight()) { 
      matrix.postRotate(90); 
     } 
     mBitmap = Bitmap.createBitmap(imageBitmap, 0, 0, imageBitmap.getWidth(), imageBitmap.getHeight(), matrix, true); 
     mBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out); 
     out.close(); 
     Log.d("Ar", "Ole"); 
    } catch (IOException e) { 
     e.printStackTrace(); 
     Log.d("Ar", e.toString()); 
    } 

    File fdelete = new File(imageUri.getPath()); 
    if (fdelete.exists()) { 
     if (fdelete.delete()) { 
      System.out.println("file Deleted :" + imageUri.getPath()); 
     } else { 
      System.out.println("file not Deleted :" + imageUri.getPath()); 
     } 
    } 

}` 
関連する問題