Media Picker is an Android Libary that lets you to select multiple images, video or voice for Android 4.1 (API 16) +.
Gradle
dependencies {
implementation "com.master.android:mediapicker:1.3"
}After adding the library, you need to:
- Create an object from
ImagePickerorVideoPicker - Override
onActivityResultto receive the path of image or videos. - Solved "Only Full Screen Activity request for orientation"
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();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 = data.getStringArrayListExtra(ImagePicker.EXTRA_IMAGE_PATH);
//Your Code
}
}modeto select the mode, you can choose one of theseCAMERA,GALLERYorCAMERA_AND_GALLERY
.mode(ImagePicker.Mode.CAMERA)extensionYou can change the extension of image toPNGorJPG
.extension(ImagePicker.Extension.PNG)compressLevelYou can change the quality of image with three different levelsHARD,MEDIUM,SOFTorNONE
.compressLevel(ImagePicker.ComperesLevel.MEDIUM)directoryYou can pass the storage path, or selectDirectory.DEFAULT_DIRto keep the default path.
.directory(ImagePicker.Directory.DEFAULT)
//OR
.directory(Environment.getExternalStorageDirectory()+"/myFolder")scaleYou 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)allowMultipleImagesExtra used to select and return multiple images from gallery CANNOT select single image from gallery if this feature was enabled
.allowMultipleImages(true)enableDebuggingModeused to print Image Picker Log
.enableDebuggingMode(true)allowOnlineImagesan 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)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();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 = data.getStringArrayListExtra(VideoPicker.EXTRA_VIDEO_PATH);
//Your Code
}
}modeto select the mode, you can choose one of theseCAMERA,GALLERYorCAMERA_AND_GALLERY
.mode(VideoPicker.Mode.CAMERA)extensionYou can change the extension of video toMP4
.extension(VideoPicker.Extension.MP4)directoryYou can pass the storage path, or selectDirectory.DEFAULT_DIRto keep the default path.
.directory(VideoPicker.Directory.DEFAULT)
//OR
.directory(Environment.getExternalStorageDirectory()+"/myFolder")enableDebuggingModeused to print Video Picker Log
.enableDebuggingMode(true)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 {
implementation 'io.reactivex.rxjava2:rxandroid:(Last_version)'
implementation 'io.reactivex.rxjava2:rxjava:(Last_version)'
implementation 'net.alhazmy13.MediaPicker:rxjava:(Last_version)'
} new ImagePickerHelper(
new ImagePicker.Builder(Context)
...)
.getObservable()
.subscribe(....);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>