Coder Social home page Coder Social logo

dooully / mediapicker Goto Github PK

View Code? Open in Web Editor NEW

This project forked from alhazmy13/mediapicker

0.0 2.0 0.0 362 KB

Media Picker is an Android Libary that lets you to select multiple images or video

Home Page: alhazmy13.net

License: Apache License 2.0

Java 97.91% C 2.09%

mediapicker's Introduction

Media Picker

Codacy Badge

Media Picker is an Android Libary that lets you to select multiple images, video or voice for Android 4.1 (API 16) +. You can report any issue on issues page. Note: If you speak Arabic, you can submit issues with Arabic language and I will check them. :)

NOTE


This build 2.x.x will break backward compatibility and there are a lot of changes to improve the performance and fix a lot of Leak memory issues, So please read below document carefully.

Installation


Maven

<dependency>
<groupId>net.alhazmy13.MediaPicker</groupId>
<artifactId>libary</artifactId>
<version>2.4.0</version>
</dependency>

Gradle

dependencies {
	compile 'net.alhazmy13.MediaPicker:libary:2.4.0'
}

Usage


Images

After adding the library, you need to:

  1. Create an object from ImagePicker or VideoPicker
  2. Override onActivityResult to receive the path of image or videos.

Create an ImagePicker

You will need to create a new instance of ImagePicker. Once the instance are configured, you can call build().

        new ImagePicker.Builder(MainActivity.this)
                        .mode(ImagePicker.Mode.CAMERA_AND_GALLERY)
                        .compressLevel(ImagePicker.ComperesLevel.MEDIUM)
                        .directory(ImagePicker.Directory.DEFAULT)
                        .extension(ImagePicker.Extension.PNG)
                        .scale(600, 600)
                        .allowMultipleImages(false)
                        .enableDebuggingMode(true)
                        .build();

Override onActivityResult

In order to receive the path of image, you will need to override onActivityResult .

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

        if (requestCode == ImagePicker.IMAGE_PICKER_REQUEST_CODE && resultCode == RESULT_OK) {
            List<String> mPaths = (List<String>) data.getSerializableExtra(ImagePicker.EXTRA_IMAGE_PATH);
            //Your Code
        }
    }

Additional Options

  • mode to select the mode, you can choose one of these CAMERA,GALLERY or CAMERA_AND_GALLERY
.mode(ImagePicker.Mode.CAMERA)
  • extension You can change the extension of image to PNG or JPG
.extension(ImagePicker.Extension.PNG)
  • compressLevel You can change the quality of image with three different levels HARD,MEDIUM, SOFT or NONE
.compressLevel(ImagePicker.ComperesLevel.MEDIUM)
  • directory You can pass the storage path, or select Directory.DEFAULT_DIR to keep the default path.
.directory(ImagePicker.Directory.DEFAULT)

//OR

.directory(Environment.getExternalStorageDirectory()+"/myFolder")
  • scale You can scale the image to a a minimum width and height. This will only be used if compressLevel is set. To avoid OutOfMemory issues, ensure this is used.
.scale(500, 500)
  • allowMultipleImages Extra used to select and return multiple images from gallery CANNOT select single image from gallery if this feature was enabled
	.allowMultipleImages(true)
  • enableDebuggingMode used to print Image Picker Log
	.enableDebuggingMode(true)
  • allowOnlineImages an option to allow the user to select any image from online resource ex: Google Drive (KNOWN ISSUE) if you enable this option then you cannot select multiple images
	.allowOnlineImages(true)

Create an VideoPicker

You will need to create a new instance of VideoPicker. Once the instance are configured, you can call build().

        new VideoPicker.Builder(MainActivity.this)
                        .mode(VideoPicker.Mode.CAMERA_AND_GALLERY)
                        .directory(VideoPicker.Directory.DEFAULT)
                        .extension(VideoPicker.Extension.MP4)
                        .enableDebuggingMode(true)
                        .build();

Override onActivityResult

In order to receive the path of videos, you will need to override onActivityResult .

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

        if (requestCode == VideoPicker.VIDEO_PICKER_REQUEST_CODE && resultCode == RESULT_OK) {
            List<String> mPaths = (List<String>) data.getSerializableExtra(VideoPicker.EXTRA_VIDEO_PATH);
            //Your Code
        }
    }

Additional Options

  • mode to select the mode, you can choose one of these CAMERA,GALLERY or CAMERA_AND_GALLERY
.mode(VideoPicker.Mode.CAMERA)
  • extension You can change the extension of video to MP4
.extension(VideoPicker.Extension.MP4)
  • directory You can pass the storage path, or select Directory.DEFAULT_DIR to keep the default path.
.directory(VideoPicker.Directory.DEFAULT)

//OR

.directory(Environment.getExternalStorageDirectory()+"/myFolder")
  • enableDebuggingMode used to print Video Picker Log
	.enableDebuggingMode(true)

RxJava for MediaPicker

It's an extenstion that allow you to return an observable from ImagePickerBuilder or VideoPickerBuilder, all you need is to add below dependency and then return the observable from ImagePickerHelper || VideoPickerHelper class.

Gradle

dependencies {
	compile 'net.alhazmy13.MediaPicker:rxjava:(Last_version)'
}
  new ImagePickerHelper(
        new ImagePicker.Builder(Context)
                ...)
                .getObservable()
                .subscribe(new Subscriber<List<String>>() {
                    @Override
                    public void onCompleted() {
                        Log.d(TAG, "onCompleted() called with: " + "");
                    }

                    @Override
                    public void onError(Throwable e) {
                        Log.d(TAG, "onError()");
                    }

                    @Override
                    public void onNext(List<String> imagePaths) {
                        Log.d(TAG, "onNext() ");
                    }
                });

Theme the pickers

You can change the strings be overwriting below resources in your project.

    <string name="media_picker_select_from">Select From:</string>
    <string name="media_picker_camera">Camera</string>
    <string name="media_picker_gallery">Gallery</string>
    <string name="media_picker_ok">Ok</string>
    <string name="media_picker_cancel">Cancel</string>
    <string name="media_picker_some_permission_is_denied">Some Permission is Denied</string>
    <string name="media_picker_you_need_to_grant_access_to">You need to grant access to</string>
    <string name="media_picker_read_Write_external_storage"><![CDATA[Read & Write External Storage]]></string>

mediapicker's People

Contributors

alhazmy13 avatar noone1521 avatar ibrahimghailani avatar mustafa-nimir avatar codacy-badger avatar

Watchers

James Cloos avatar KangHo Lee avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.