Skip to content

Commit cf2a9ab

Browse files
authored
Merge pull request #4 from XuDaojie/master
Add MediaUtil and UriUtil
2 parents a1da7c3 + 15d519f commit cf2a9ab

File tree

8 files changed

+188
-31
lines changed

8 files changed

+188
-31
lines changed

.idea/.name

Lines changed: 0 additions & 1 deletion
This file was deleted.

.idea/encodings.xml

Lines changed: 0 additions & 6 deletions
This file was deleted.

.idea/gradle.xml

Lines changed: 1 addition & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/misc.xml

Lines changed: 35 additions & 17 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

README.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,30 @@ String getVersionName(Context context)
218218
int getVersionCode(Context context)
219219
```
220220

221+
## MediaUtil
222+
多媒体工具类
223+
224+
### 打开系统拍照
225+
``` java
226+
void startActivityForCamera(Activity activity, int requestCode, Uri outputUri)
227+
void startActivityForCamera(Activity activity, int requestCode)
228+
```
229+
230+
### 打开系统相册
231+
``` java
232+
void startActivityForGallery(Activity activity, int requestCode)
233+
```
234+
235+
### 打开系统裁剪
236+
``` java
237+
void startActivityForImageCut(Activity activity, int requestCode,
238+
Uri inputUri, Uri outputUri,
239+
int width, int height)
240+
```
241+
242+
## UriUtil
243+
Uri工具类
244+
221245
# 微信公众号
222246
欢迎微信扫一扫关注:不止于技术分享,每天进步一点点。
223247

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
package com.wuxiaolong.androidutils.library;
2+
3+
import android.app.Activity;
4+
import android.content.Intent;
5+
import android.graphics.Bitmap;
6+
import android.net.Uri;
7+
import android.provider.MediaStore;
8+
9+
/**
10+
* Created by xdj on 16/8/28.
11+
*/
12+
@SuppressWarnings("unused")
13+
public class MediaUtil {
14+
15+
private static final String TAG = MediaUtil.class.getSimpleName();
16+
17+
public static final int PHOTO_REQUEST_GALLERY = 1000;
18+
public static final int PHOTO_REQUEST_CAMERA = 1001;
19+
public static final int PHOTO_REQUEST_CUT = 1002;
20+
21+
/**
22+
* 进入系统拍照
23+
* @param activity
24+
* @param outputUri 照片输出路径 Uri.fromFile(new File(Environment.getExternalStorageDirectory() + "/image.jpg"))
25+
*/
26+
public static void startActivityForCamera(Activity activity, int requestCode, Uri outputUri) {
27+
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
28+
intent.addCategory(Intent.CATEGORY_DEFAULT);
29+
// 制定图片保存路径
30+
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputUri);
31+
activity.startActivityForResult(intent, requestCode);
32+
}
33+
34+
/**
35+
* 进入系统拍照 (输出为Bitmap)<br>
36+
*
37+
* 获得输出
38+
* 在 @<code>onActivityResult</code>中<br>
39+
* 通过@<code>Bitmap bitmap = (Bitmap)intent.data.getExtras().get("data")</code>获取<br>
40+
*
41+
* Tips: 返回的Bitmap并非原图的Bitmap而是经过压缩的Bitmap
42+
* @param activity
43+
*
44+
*/
45+
public static void startActivityForCamera(Activity activity, int requestCode) {
46+
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
47+
intent.addCategory(Intent.CATEGORY_DEFAULT);
48+
activity.startActivityForResult(intent, requestCode);
49+
}
50+
51+
/**
52+
* 进入系统图库<br>
53+
* 获得输出<br>
54+
* 在 @<code>onActivityResult</code>中通过@<code>Uri uri = intent.getData()</code>获取<br>
55+
* Uri返回路径格式为 content://media/external/images/media/32073<br>
56+
* 需要经过转换才能获得绝对路径 {@link com.wuxiaolong.androidutils.library.UriUtil}
57+
* @param activity
58+
*/
59+
public static void startActivityForGallery(Activity activity, int requestCode) {
60+
// 弹出系统图库
61+
Intent i = new Intent(Intent.ACTION_PICK,
62+
MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
63+
activity.startActivityForResult(i, requestCode);
64+
}
65+
66+
/**
67+
* 进入系统裁剪
68+
* @param inputUri 需裁剪的图片路径 Uri.fromFile(new File(Environment.getExternalStorageDirectory() + "/image.jpg")
69+
* @param outputUri 裁剪后图片路径 Uri.fromFile(new File(Environment.getExternalStorageDirectory() + "/image_cut.jpg")
70+
* @param width 裁剪后宽度(px)
71+
* @param height 裁剪后高度(px)
72+
*/
73+
public static void startActivityForImageCut(Activity activity, int requestCode,
74+
Uri inputUri, Uri outputUri,
75+
int width, int height) {
76+
Intent intent = new Intent("com.android.camera.action.CROP");
77+
intent.setDataAndType(inputUri, "image/*");
78+
// 下面这个crop=true是设置在开启的Intent中设置显示的VIEW可裁剪
79+
intent.putExtra("crop", "true");
80+
intent.putExtra("scale", true); // 去黑边
81+
intent.putExtra("scaleUpIfNeeded", true); // 去黑边
82+
// aspectX aspectY 裁剪框宽高比例
83+
intent.putExtra("aspectX", width); // 输出是X方向的比例
84+
intent.putExtra("aspectY", height);
85+
// outputX outputY 输出图片宽高,切忌不要再改动下列数字,会卡死
86+
intent.putExtra("outputX", width); // 输出X方向的像素
87+
intent.putExtra("outputY", height);
88+
intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
89+
intent.putExtra("noFaceDetection", true);
90+
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputUri);
91+
intent.putExtra("return-data", false); // 设置为不返回数据
92+
activity.startActivityForResult(intent, requestCode);
93+
}
94+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.wuxiaolong.androidutils.library;
2+
3+
import android.content.Context;
4+
import android.database.Cursor;
5+
import android.net.Uri;
6+
import android.provider.MediaStore;
7+
8+
/**
9+
* Created by xdj on 16/8/31.
10+
*/
11+
@SuppressWarnings("unused")
12+
public class UriUtil {
13+
14+
/**
15+
* 将 content://media/external/images/media/32073 格式路径转为文件绝对路径
16+
* @param uri
17+
* @return
18+
*/
19+
public static String convertToFilePath(Context context, Uri uri) {
20+
String[] proj = {MediaStore.Images.Media.DATA};
21+
Cursor cursor = context.getContentResolver().query(uri, proj, null, null, null);
22+
if (cursor.moveToFirst()) {
23+
return cursor.getString(cursor.getColumnIndex(MediaStore.MediaColumns.DATA));
24+
}
25+
return null;
26+
}
27+
}

library/src/main/java/com/wuxiaolong/androidutils/library/VersionUtil.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,20 @@
77
/**
88
* Created by Administrator
99
* on 2016/5/24.
10+
*
11+
* Android Studio 中会自动生成BuildConfig.java文件
12+
* 可以通过此文件获得Apk的VersionCode、 VersionName、isDebug
1013
*/
1114
@SuppressWarnings("unused")
1215
public class VersionUtil {
1316
/**
1417
* 获取版本号
18+
* 使用 BuildConfig.VERSION_NAME 替换
1519
*
1620
* @param context 上下文
1721
* @return 版本号
1822
*/
23+
@Deprecated
1924
public static String getVersionName(Context context) {
2025
PackageManager packageManager = context.getPackageManager();
2126
String packageName = context.getPackageName();
@@ -30,10 +35,12 @@ public static String getVersionName(Context context) {
3035

3136
/**
3237
* 获取版本code
38+
* 使用 BuildConfig.VERSION_CODE 替换
3339
*
3440
* @param context 上下文
3541
* @return 版本code
3642
*/
43+
@Deprecated
3744
public static int getVersionCode(Context context) {
3845
PackageManager packageManager = context.getPackageManager();
3946
String packageName = context.getPackageName();

0 commit comments

Comments
 (0)