diff --git a/.idea/markdown-exported-files.xml b/.idea/markdown-exported-files.xml new file mode 100644 index 0000000000000000000000000000000000000000..5d1f1293cf7e21f16a64a07a50fe52c261269055 --- /dev/null +++ b/.idea/markdown-exported-files.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/markdown-navigator.xml b/.idea/markdown-navigator.xml new file mode 100644 index 0000000000000000000000000000000000000000..808794e4fbb5b875374a5641a8b4dc02754b0295 --- /dev/null +++ b/.idea/markdown-navigator.xml @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/yesway/android/util/MultiMediaUtil.java b/app/src/main/java/com/yesway/android/util/MultiMediaUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..d8a1232af3f4a92846b28e0690421c2009e8a330 --- /dev/null +++ b/app/src/main/java/com/yesway/android/util/MultiMediaUtil.java @@ -0,0 +1,194 @@ +package com.zhijiaxing.travel.util; + +import android.Manifest; +import android.app.Activity; +import android.content.Intent; +import android.net.Uri; +import android.os.Environment; +import android.provider.MediaStore; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentActivity; + +import com.tbruyelle.rxpermissions2.RxPermissions; + +import java.io.File; +import java.text.SimpleDateFormat; +import java.util.Date; + +import io.reactivex.functions.Consumer; +import me.nereo.multi_image_selector.MultiImageSelector; + +/** + * Description:

多媒体工具类

+ * + *

注意事项:

+ * + * Author: gxl
+ * Date: 2018/12/25
+ * Version: V1.0.0
+ * Update:
+ */ +public class MultiMediaUtil { + public static final int SELECT_IMAGE = 1001; + public static final int TAKE_PHONE = 1002; + public static final int TAKE_VIDEO = 1003; + + /** + * + * 打开图片选择器,选择图片
+ * 来获取图片 + * @param activity + * @param count:选择图片个数 + * @param requestcode + */ + public static void pohotoSelect(Activity activity, int count, int requestcode) { + pohotoSelect(activity, null, count, requestcode); + } + + public static void pohotoSelect(Fragment fragment, int count, int requestcode) { + pohotoSelect(null, fragment, count, requestcode); + } + + private static void pohotoSelect(Activity activity, Fragment fragment, int count, int requestcode) { + if (activity != null) { + MultiImageSelector.create().showCamera(false).count(count).single().multi() + //.origin(ArrayList) + .start(activity, requestcode); + } else if (fragment != null) { + MultiImageSelector.create().showCamera(false).count(count).single().multi() + //.origin(ArrayList) + .start(fragment, requestcode); + } + + } + + /** + * 拍照 + * @param activity + * @param path:照片存放的路径 + * @param requestcode + */ + public static void takePhoto(FragmentActivity activity, String path, int requestcode) { + takePhoto(activity, null, path, requestcode); + } + + public static void takePhoto(Fragment fragment, String path, int requestcode) { + takePhoto(null, fragment, path, requestcode); + } + + private static void takePhoto(final FragmentActivity activity, final Fragment fragment, final String path, final int requestcode) { + if (activity == null && fragment == null) { + return; + } + RxPermissions rxPermissions = null; + if (activity != null) { + rxPermissions = new RxPermissions(activity); + } else if (fragment != null) { + rxPermissions = new RxPermissions(fragment); + } + + rxPermissions.request(Manifest.permission.CAMERA).subscribe(new Consumer() { + @Override + public void accept(Boolean aBoolean) throws Exception { + if (aBoolean) { + File file = new File(path); + try { + if (file.createNewFile()) { + Intent intent = new Intent(); + intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE); + intent.addCategory(Intent.CATEGORY_DEFAULT); + intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file)); + + if (activity != null) { + activity.startActivityForResult(intent, requestcode); + } else if (fragment != null) { + fragment.startActivityForResult(intent, requestcode); + } + } + } catch (Exception e) { + e.printStackTrace(); + ToastUtil.showToast("无法启动拍照程序"); + } + } else { + ToastUtil.showToast("无摄像头权限,无法进行拍照!"); + } + } + }); + } + + + /** + * 拍视频 + * @param activity + * @param path:视频存放的路径 + * @param requestcode + */ + public static void takeVideo(final FragmentActivity activity, final String path, final int requestcode) { + takeVideo(activity, null, path, requestcode); + } + + public static void takeVideo(final Fragment fragment, final String path, final int requestcode) { + takeVideo(null, fragment, path, requestcode); + } + + private static void takeVideo(final FragmentActivity activity, final Fragment fragment, final String path, final int requestcode) { + if (activity == null && fragment == null) { + return; + } + RxPermissions rxPermissions = null; + if (activity != null) { + rxPermissions = new RxPermissions(activity); + } else if (fragment != null) { + rxPermissions = new RxPermissions(fragment); + } + rxPermissions.request(Manifest.permission.CAMERA).subscribe(new Consumer() { + @Override + public void accept(Boolean aBoolean) throws Exception { + if (aBoolean) { + File file = new File(path); + try { + if (file.createNewFile()) { + Intent intent = new Intent(); + intent.setAction(MediaStore.ACTION_VIDEO_CAPTURE); + intent.addCategory(Intent.CATEGORY_DEFAULT); + intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file)); + if (activity != null) { + activity.startActivityForResult(intent, requestcode); + } else if (fragment != null) { + fragment.startActivityForResult(intent, requestcode); + } + + } + } catch (Exception e) { + e.printStackTrace(); + ToastUtil.showToast("无法启动拍视频程序"); + } + } else { + ToastUtil.showToast("无摄像头权限,无法进行拍视频!"); + } + } + }); + } + + //获取图片路径 + public static String getPhotoPath(Activity activity) { + String filename = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()) + ".jpg"; + String filepath = activity.getExternalFilesDir(Environment.DIRECTORY_PICTURES).getAbsolutePath() + File.separator + filename; + return filepath; + } + + //获取视频的路径 + public static String getVideoPath(Activity activity) { + String filename = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()) + ".3gp"; + String filepath = activity.getExternalFilesDir(Environment.DIRECTORY_MOVIES).getAbsolutePath() + File.separator + filename; + return filepath; + } +}