随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)
/**
* 跳转至系统相册
*
* @param activity
* 活动实例
* @param requestCode
* 请求码
*/
public static void startSystemAlbumForResult(Activity activity,
int requestCode) {
Intent intent = new Intent(Intent.ACTION_PICK,
Media.EXTERNAL_CONTENT_URI);
activity.startActivityForResult(intent, requestCode);
}
/**
* 调用系统相机
*
* @param activity
* 活动实例
* @param requestCode
* 请求码
*/
public static void startSystemCameraForResult(Activity activity,
int requestCode) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
activity.startActivityForResult(intent, requestCode);
}
/**
* 启动系统截图页面
*
* @param activity
* 当前活动实例
* @param requestCode
* 请求码
* @param data
* 相片Uri地址
* @param width
* 剪裁后图片的宽
* @param height
* 剪裁后图片的高
*/
public static void startPhotoZoomForResult(Activity activity,
int requestCode, Uri data, int width, int height) {
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(data, "image/*");
// crop为true时表示显示的view可以剪裁
intent.putExtra("crop", "true");
// aspectX aspectY 是宽高的比例
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
// outputX,outputY 是剪裁图片的宽高
intent.putExtra("outputX", width);
intent.putExtra("outputY", height);
intent.putExtra("return-data", true);
activity.startActivityForResult(intent, requestCode);
}
/**
* 获取系统相册返回的图片路径
*
* @param context
* 上下文对象
* @param data
* 携带数据的Intent对象
* @return 图片本地路径
*/
public static String getAlbumImgPath(Context context, Intent data) {
Uri selectedImage = data.getData();
if (selectedImage == null) {
return null;
}
String[] filePathColumns = { MediaStore.Images.Media.DATA };
Cursor c = context.getContentResolver().query(selectedImage,
filePathColumns, null, null, null);
c.moveToFirst();
int columnIndex = c.getColumnIndex(filePathColumns[0]);
String picturePath = c.getString(columnIndex);
c.close();
return picturePath;
}
/**
* 获取系统相机返回的图片Bitmap对象
*
* @param context
* 上下文对象
* @param data
* 携带数据的Intent对象
* @return 图片Bitmap对象
*/
public static Bitmap getCameraImgBitmap(Context context, Intent data) {
Bundle bundle = data.getExtras();
if (bundle != null) {
return (Bitmap) bundle.get("data");
}
return null;
}