Pick Image From Camera and Gellary To Set ImageView in Android
In This Example to Take Image From Camera And Gellary to Multiple Selection Dialog Open And Set Image From Imageview.And How To Convert Bitmap File and Compress Bitmap from File and Set Imageview in android.
Add Permission To Camera And Read And Write External Storage to Pick Photo from Gellary and Capture From Camera to Access in User.
Add Permission From AndroidManifest File
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-feature android:name="android.hardware.camera2" /> <uses-permission android:name="android.permission.CAMERA" />
Create XML Design File To Design Layout in Android MainActivity
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.bhaumik.camerademo.MainActivity"> <Button android:id="@+id/btn_selected" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Selecte Image" android:textAllCaps="false" android:layout_marginTop="10dp" android:layout_gravity="center_horizontal"/> <ImageView android:id="@+id/img_view" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="10dp"/> </LinearLayout>
Create Java Code File To Runtime Permission Access And Code from Pick Image From Camera And Gellary
package com.example.bhaumik.camerademo; import android.Manifest; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.PackageManager; import android.graphics.Bitmap; import android.media.MediaScannerConnection; import android.net.Uri; import android.os.Build; import android.os.Environment; import android.provider.MediaStore; import android.provider.Settings; import android.support.annotation.NonNull; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.Toast; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.Calendar; public class MainActivity extends AppCompatActivity { Button click; ImageView imageView; private int camera = 1,gellary = 2; public static final int PERMISSION_CODE = 111; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); click = (Button) findViewById(R.id.btn_selected); imageView = (ImageView) findViewById(R.id.img_view); if (!checkPermission()){ requestPermission(); } click.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { OpenImages(); } }); } public boolean checkPermission(){ int result = ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE); int result1 = ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.WRITE_EXTERNAL_STORAGE); int result2 = ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.CAMERA); return result == PackageManager.PERMISSION_GRANTED && result1 == PackageManager.PERMISSION_GRANTED && result2 == PackageManager.PERMISSION_GRANTED; } public void requestPermission(){ ActivityCompat.requestPermissions(MainActivity.this,new String[] {Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.CAMERA},PERMISSION_CODE); } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { switch (requestCode){ case PERMISSION_CODE : if (grantResults.length > 0){ boolean storage = grantResults[0] == PackageManager.PERMISSION_GRANTED; boolean cameras = grantResults[0] == PackageManager.PERMISSION_GRANTED; if (storage && cameras){ Toast.makeText(MainActivity.this, "Permission Granted", Toast.LENGTH_SHORT).show(); }else{ Toast.makeText(MainActivity.this, "Permission Denied", Toast.LENGTH_SHORT).show(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){ if (shouldShowRequestPermissionRationale(Manifest.permission.WRITE_EXTERNAL_STORAGE)){ showMsg("You need to allow access to the permissions", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){ requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.CAMERA},PERMISSION_CODE); } } }); return; } } } } } } private void showMsg(String s, DialogInterface.OnClickListener listener) { new AlertDialog.Builder(MainActivity.this) .setMessage(s) .setPositiveButton("OK", listener) .setNegativeButton("Cancel", null) .create() .show(); } private void OpenImages() { final CharSequence[] option = {"Camera","Gellary"}; AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setTitle("Select Action"); builder.setItems(option, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { if (option[which].equals("Camera")){ CameraIntent(); } if (option[which].equals("Gellary")){ GellaryIntent(); } } }); AlertDialog dialog = builder.create(); dialog.show(); } private void GellaryIntent() { Intent intent = new Intent(); intent.setType("image/*"); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(Intent.createChooser(intent,"Select File"),gellary); } private void CameraIntent() { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent,camera); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK){ if (requestCode == camera){ OpenCameraResult(data); }else if (requestCode == gellary){ OpenGellaryResult(data); } } } private void OpenGellaryResult(Intent data) { Bitmap bitmap = null; if (data != null){ try { bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(),data.getData()); } catch (IOException e) { e.printStackTrace(); } } imageView.setImageBitmap(bitmap); } private void OpenCameraResult(Intent data) { Bitmap bitmap = (Bitmap) data.getExtras().get("data"); ByteArrayOutputStream bytes = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG,90,bytes); File paths = new File(Environment.getExternalStorageDirectory(), System.currentTimeMillis() + ".jpg"); Toast.makeText(this, "Path -> " + paths.getAbsolutePath(), Toast.LENGTH_SHORT).show(); Log.d("tag","File Path -> " + paths.getName()); try { FileOutputStream fos = new FileOutputStream(paths); paths.createNewFile(); if(!paths.exists()){ paths.mkdir(); } fos.write(bytes.toByteArray()); fos.close(); } catch (IOException e) { e.printStackTrace(); } imageView.setImageBitmap(bitmap); } }
Output
Open Runtime Permission Dialog. Open Select Image Dialog In Camera And Gellary.M/br>Capture From Camera and Set Image From ImageView.And Pick Photo From Gellary
0 comments:
Post a Comment