Skip to main content

Images from Gallery / Taking Photo by Programmatically in Android

Getting Image from Gallery & Capture Image:



private Bitmap bitmap, b1;

private byte[] img;
private Uri mImageCaptureUri;
productimage.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        onPhotoClick();
    }
});
private void onPhotoClick() {
    AlertDialog.Builder builder = new AlertDialog.Builder(context);
    builder.setTitle("Select Picker").setItems(R.array.ImageSelection,
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    if (which == 0) {
                        pickImage();
                    } else {
                        doTakePhotoAction();
                    }
                }
            });
    AlertDialog dialog = builder.create();
    dialog.show();
}

In style.xml

<string-array name="ImageSelection">
    <item>Image Picker</item>
    <item>Camera</item>
</string-array>



private void pickImage() {
    Intent intent;
    if (Build.VERSION.SDK_INT < 19) {
        intent = new Intent();
        intent.setAction(Intent.ACTION_GET_CONTENT);
        intent.setType("image/*");
        startActivityForResult(
                Intent.createChooser(intent, "Complete action using"),
                PICK_FROM_FILE);
    } else {
        intent = new Intent(Intent.ACTION_PICK);
        intent.setType("image/*");
        intent.putExtra(MediaStore.EXTRA_OUTPUT,
                mImageCaptureUri);
        startActivityForResult(
                Intent.createChooser(intent, "Complete action using"),
                PICK_FROM_FILE);
    }
}
private void doTakePhotoAction() {
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    mImageCaptureUri = Uri.fromFile(new File(Environment
            .getExternalStorageDirectory(), "tmp_avatar_"
            + String.valueOf(System.currentTimeMillis()) + ".jpg"));
    intent.putExtra(MediaStore.EXTRA_OUTPUT,
            mImageCaptureUri);
    try {
        intent.putExtra("return-data", true);
        startActivityForResult(intent, PICK_FROM_CAMERA);
    } catch (ActivityNotFoundException e) {
        e.printStackTrace();
    }
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode != Activity.RESULT_OK)
        return;
    switch (requestCode) {
        case PICK_FROM_CAMERA:
            doCrop();
            break;
        case PICK_FROM_FILE:
            if (Build.VERSION.SDK_INT < 19) {
                mImageCaptureUri = data.getData();
            } else {
                mImageCaptureUri = data.getData();
                ParcelFileDescriptor parcelFileDescriptor;
                try {
                    parcelFileDescriptor = this.getContentResolver()
                            .openFileDescriptor(mImageCaptureUri, "r");
                    FileDescriptor fileDescriptor = parcelFileDescriptor
                            .getFileDescriptor();
                    bitmap = BitmapFactory.decodeFileDescriptor(fileDescriptor);
                    parcelFileDescriptor.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            doCrop();
            break;
        case CROP_FROM_CAMERA:
            Bundle extras = data.getExtras();
            if (extras != null) {
                bitmap = extras.getParcelable("data");
                productimage.setImageBitmap(bitmap);
                ByteArrayOutputStream bos = new ByteArrayOutputStream();
                bitmap.compress(Bitmap.CompressFormat.PNG, 100, bos);
                img = bos.toByteArray();
            }
            if (mImageCaptureUri != null) {
                File f = new File(mImageCaptureUri.getPath());
                if (f.exists())
                    f.delete();
            }
            break;
    }
}
private void doCrop() {
    Intent intent = new Intent("com.android.camera.action.CROP");
    intent.setType("image/*");
    List<ResolveInfo> list = this.getPackageManager()
            .queryIntentActivities(intent, 0);
    int size = list.size();
    if (size == 0) {
        Toast.makeText(context, "Can not find image crop app",
                Toast.LENGTH_SHORT).show();
        return;
    } else {
        if (mImageCaptureUri != null) {
            intent.setData(mImageCaptureUri);
        }
        intent.putExtra("scale", true);
        intent.putExtra("return-data", true);
        Intent i = new Intent(intent);
        ResolveInfo res = list.get(0);
        i.setComponent(new ComponentName(res.activityInfo.packageName,
                res.activityInfo.name));
        System.out.println(res.activityInfo.packageName);
        System.out.println(res.activityInfo.name);
        startActivityForResult(i, CROP_FROM_CAMERA);
    }
}

Comments

Popular posts from this blog

SearchView using CursorAdapter

Here  MYFRAGMENT is nothing but name of  a Fragment @Override public void onCreateOptionsMenu (Menu menu, MenuInflater inflater) {     inflater.inflate(R.menu.popup, menu);     final SearchManager searchManager = (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE);     final SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();     searchView.setSearchableInfo(searchManager.getSearchableInfo(getActivity().getComponentName()));     searchView.setSubmitButtonEnabled(false);     searchView.setIconifiedByDefault(true);     //       searchView.setOnCloseListener(this);     SearchView. OnQueryTextListener textChangeListener = new SearchView. OnQueryTextListener () {         @Override         public boolean onQueryTextSubmit(String query) {             cartAdapt...

Fragment

To enable/disable menu items in Different fragments in same Activity: @Override public void onCreate(@Nullable Bundle savedInstanceState)  {     super.onCreate(savedInstanceState);     setHasOptionsMenu(true);  } @Override public void onPrepareOptionsMenu(Menu menu) {     //Disable the SearchView which is enabled in Product Chart     menu.findItem(R.id.action_search).setVisible(false);   // true to enable } ====================================================

To make a ListView to be scrolled inside of ScrollView

To make a ListView to be scrolled inside of ScrollView: lv . setOnTouchListener ( new ListView . OnTouchListener () { @Override public boolean onTouch ( View v , MotionEvent event ) { int action = event . getAction (); switch ( action ) { case MotionEvent . ACTION_DOWN : // Disallow ScrollView to intercept touch events. v . getParent (). requestDisallowInterceptTouchEvent ( true ); break ; case MotionEvent . ACTION_UP : // Allow ScrollView to intercept touch events. v . getParent (). requestDisallowInterceptTouchEvent ( false ); break ; } // Handle ListView touch events. v . onTouchEvent ( event ); return true ; } }); Refer: http://stackoverflow.com/questions/6210895/listview-inside-scrollview-is-not-scrolling-on-android