-2

I am trying to display a image captured from camera inside imageview in android Selecting a photo from the correct gallery works But the camera fails: "app has stopped"

images.get(2).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    current_image = 2;
                    if (!fill_images[current_image]) {
                        show_dialog();
                    }else {
                        show_delete_dialog();
                    };
                }
            });

 public void show_dialog() {        
                     final ArrayList<String> list = new ArrayList<String>();
                     list.add("select from gallery");
                     list.add("take a photo");

                     AlertDialog.Builder builder = new AlertDialog.Builder(NewAdActivity.this);

                     builder.setAdapter(new ArrayAdapter<String>(NewAdActivity.this, R.layout.row, R.id.mytext, list)
                             , new DialogInterface.OnClickListener() {
                                 @Override
                                 public void onClick(DialogInterface dialogInterface, int i) {

            if (i == 0) {//gallery                           Intent gallery_intent=new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI) ;               startActivityForResult(Intent.createChooser(gallery_intent,"select image"),2);

                                     }
 else if (i == 1){//camera
          Intent camera_intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

      File file=new File(Environment.getExternalStorageDirectory(),"file"+String.valueOf(System.currentTimeMillis()+".jpg"));

              uri= Uri.fromFile(file);

            camera_intent.putExtra(MediaStore.EXTRA_OUTPUT,uri);

             camera_intent.putExtra("return-data",true);

         startActivityForResult(camera_intent,1); 

                                     }
                                 }
                             });
                     builder.show();

                 }
Alex Cohn
  • 56,089
  • 9
  • 113
  • 307
hassan abbasi
  • 123
  • 1
  • 1
  • 9

2 Answers2

0
new Camera.PictureCallback() {
      @Override
      public void onPictureTaken(final byte[] data, Camera camera) {
            bytes = data;
      }
}

Then convert the bytes to bitmap

Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);

Then set imageview imageView.setImageBitmap(bitmap);

Burhanuddin Rashid
  • 5,260
  • 6
  • 34
  • 51
Santanu Sur
  • 10,997
  • 7
  • 33
  • 52
0

At first make sure that you declared all necessary permission on manifest.xml file. Then try with it -

public class MainActivity extends AppCompatActivity {

    private static final int SELECTED_PICTURE=1;
    private ImageView iv;
    private Button btnClick;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        iv=(ImageView)findViewById(R.id.imageView1);
        btnClick = (Button) findViewById(R.id.btnClick);
        btnClick.setOnClickListener(new View.OnCLickListener(){
              public void onClick(View view) {
            btnClick(view);
        }
        });
    }

    public void btnClick(View v){
        Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
        startActivityForResult(takePictureIntent, SELECTED_PICTURE);
    }

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == CAMERA_REQUEST && resultCode == Activity.RESULT_OK) {  
        Bitmap photo = (Bitmap) data.getExtras().get("data"); 
        iv.setImageBitmap(photo);
    }  
    }
}

And dont forget to add permission to manifest.xml -

<uses-feature
        android:name="android.hardware.camera"
        android:required="true" />

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
AGM Tazim
  • 2,213
  • 3
  • 16
  • 25