package net.alhazmy13.mediapicker.Video;
import android.app.Activity;
import android.content.Intent;
import android.os.Environment;
import java.lang.ref.WeakReference;
/**
* Created by Alhazmy13 on 10/26/15.
*/
public class VideoPicker {
public static final int VIDEO_PICKER_REQUEST_CODE = 53213;
public static final String EXTRA_VIDEO_PATH = "EXTRA_VIDEO_PATH";
private final VideoConfig imageConfig;
VideoPicker(VideoPicker.Builder builder) {
// Required
WeakReference<Activity> context = builder.context;
// Optional
imageConfig = builder.imageConfig;
Intent callingIntent = VideoActivity.getCallingIntent(context.get(), imageConfig);
context.get().startActivityForResult(callingIntent, VIDEO_PICKER_REQUEST_CODE);
}
public static class Builder implements VideoPickerBuilderBase {
// Required params
private final WeakReference<Activity> context;
private VideoConfig imageConfig;
public Builder(Activity context) {
this.context = new WeakReference<>(context);
this.imageConfig = new VideoConfig();
}
@Override
public VideoPicker.Builder mode(VideoPicker.Mode mode) {
this.imageConfig.mode = mode;
return this;
}
@Override
public VideoPicker.Builder directory(String directory) {
this.imageConfig.directory = directory;
return this;
}
@Override
public VideoPicker.Builder directory(VideoPicker.Directory directory) {
switch (directory) {
case DEFAULT:
this.imageConfig.directory = Environment.getExternalStorageDirectory() + VideoTags.Tags.IMAGE_PICKER_DIR;
break;
default:
break;
}
return this;
}
@Override
public VideoPicker.Builder extension(VideoPicker.Extension extension) {
this.imageConfig.extension = extension;
return this;
}
@Override
public VideoPicker.Builder enableDebuggingMode(boolean debug) {
this.imageConfig.debug = debug;
return this;
}
@Override
public VideoPicker build() {
return new VideoPicker(this);
}
public Activity getContext() {
return context.get();
}
}
public enum Extension {
MP4(".mp4");
private final String value;
Extension(String value) {
this.value = value;
}
public String getValue() {
return value;
}
}
public enum Mode {
CAMERA(0), GALLERY(1), CAMERA_AND_GALLERY(2);
private final int value;
Mode(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
public enum Directory {
DEFAULT(0);
private final int value;
Directory(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
}