public class GalleryHelper{
private Activity mActivity;
public GalleryHelper(Activity activity) {
mActivity = new WeakReference<>(activity).get();
}
}
public final class FolderEntity {
private int num;
private String name;
private List<String> paths = new ArrayList<>();
public int getNum() {
return paths.size();
}
public List<String> getPaths() {
return paths;
}
public void setName(String name) {
this.name = name;
}
}
mActivity.getLoaderManager().initLoader(0, null, new LoaderManager.LoaderCallbacks<Cursor>() {
@Override
public Loader<Cursor> onCreateLoader(int i, Bundle bundle) {
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
}
});
public Loader<Cursor> onCreateLoader(int i, Bundle bundle) {
return new CursorLoader(mActivity,
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
new String[]{MediaStore.Images.Media.DATA},
MediaStore.Images.Media.MIME_TYPE + "=? or "
+ MediaStore.Images.Media.MIME_TYPE + "=?",
new String[]{"image/jpeg", "image/png"},
MediaStore.Images.Media.DATE_ADDED + " DESC");
}
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
HashMap<String, FolderEntity> folderEntityHashMap = new HashMap<String, FolderEntity>();
if (cursor != null) {
while (cursor.moveToNext()) {
//图片路径
String path = cursor.getString(
cursor.getColumnIndex(MediaStore.Images.Media.DATA));
// 路径不存在或者文件不存在就跳过
File file = new File(path);
if (TextUtils.isEmpty(path) || !file.exists()) {
continue;
}
String folerPath = file.getParent();
FolderEntity folderEntity;
if (folderEntityHashMap.containsKey(folerPath)) {
folderEntity = folderEntityHashMap.get(folerPath);
} else {
folderEntity = new FolderEntity();
folderEntityHashMap.put(file.getParentFile().getName(), folderEntity);
}
folderEntity.getPaths().add(path);
}
cursor.close();
}
}
private ArrayList<FolderEntity> map2List(HashMap<String, FolderEntity> mediaBeanMap) {
Iterator<FolderEntity> iterator = mediaBeanMap.values().iterator();
ArrayList<FolderEntity> list = new ArrayList<FolderEntity>();
while (iterator.hasNext()) {
list.add(iterator.next());
}
Collections.sort(list, new Comparator<FolderEntity>() {
@Override
public int compare(FolderEntity lhs, FolderEntity rhs) {
return lhs.getNum() > rhs.getNum() ? 1 : -1;
}
});
return list;
}
public interface GalleryCallback {
void complete(List<FolderEntity> list);
}
callback.complete(map2List(folderEntityHashMap));
File imageStoreDir = new File(Environment.getExternalStorageDirectory(),
"/DCIM/" + mActivity.getResources().getString(R.string.app_name));
if (!imageStoreDir.exists()) {
imageStoreDir.mkdir();
}
Intent captureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (captureIntent.resolveActivity(mActivity.getPackageManager()) != null) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss", Locale.CHINA);
String filename = String.format("IMG%s", dateFormat.format(new Date()));
imagePath = new File(imageStoreDir, filename).getAbsolutePath();
captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(imagePath)));
mActivity.startActivityForResult(new Intent(
MediaStore.ACTION_IMAGE_CAPTURE), REQUEST_CODE);
}
public interface CameraCallback {
void complete(String path);
}
public void onActivityResult(int requestCode, int resultCode) {
if (Activity.RESULT_OK == resultCode && REQUEST_CODE == requestCode) {
if (cameraCallback != null) {
cameraCallback.complete(imagePath);
}
}
}
galleryHelper = new GalleryHelper(this);
galleryHelper.loadImages(new GalleryHelper.GalleryCallback() {
@Override
public void complete(List<FolderEntity> list) {
//加载本地图片返回结果
}
});
findViewById(R.id.btn_camera).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
galleryHelper.openCamera(new GalleryHelper.CameraCallback() {
@Override
public void complete(String path) {
//拍照返回结果
}
});
}
});
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//使用拍照,必须接收Activity的onActivityResult方法
galleryHelper.onActivityResult(requestCode, resultCode);
}
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有