Android 获得最近一张拍照或截屏图片
来源:互联网 发布:php 5.6 Oracle 编辑:程序博客网 时间:2024/06/15 18:06
类型微信那种,拍了一张照片或者截了屏 点击聊天加号 就会有个 弹框询问是否要发送那张图片;这里只是做了获取那张最新图片的代码,没有判断时间间隔
Kotlin版
/** * Created by JokAr on 2017/10/16. */object ImageUtil { /** * 返回相册或截屏中最新的一张图片 */ fun getLatestPhoto(context: Context): Pair<Long, String>? { //拍摄照片的地址 val CAMERA_IMAGE_BUCKET_NAME = Environment.getExternalStorageDirectory().toString() + "/DCIM/Camera" //截屏照片的地址 val SCREENSHOTS_IMAGE_BUCKET_NAME = getScreenshotsPath() //拍摄照片的地址ID val CAMERA_IMAGE_BUCKET_ID = getBucketId(CAMERA_IMAGE_BUCKET_NAME) //截屏照片的地址ID val SCREENSHOTS_IMAGE_BUCKET_ID = getBucketId(SCREENSHOTS_IMAGE_BUCKET_NAME) //查询路径和修改时间 val projection = arrayOf(MediaStore.Images.Media.DATA, MediaStore.Images.Media.DATE_MODIFIED) val selection = MediaStore.Images.Media.BUCKET_ID + " = ?" val selectionArgs = arrayOf(CAMERA_IMAGE_BUCKET_ID) val selectionArgsForScreenshots = arrayOf(SCREENSHOTS_IMAGE_BUCKET_ID) var cameraPair: Pair<Long, String>? = null //检查camera文件夹,查询并排序 var cursor = context.contentResolver.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, selection, selectionArgs, MediaStore.Files.FileColumns.DATE_MODIFIED + " DESC") if (cursor.moveToFirst()) { cameraPair = Pair(cursor.getLong(cursor.getColumnIndex(MediaStore.Images.Media.DATE_MODIFIED)), cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA))) } //检查Screenshots文件夹 var screenshotsPair: Pair<Long, String>? = null //查询并排序 cursor = context.contentResolver.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, selection, selectionArgsForScreenshots, MediaStore.Files.FileColumns.DATE_MODIFIED + " DESC") if (cursor.moveToFirst()) { screenshotsPair = Pair(cursor.getLong(cursor.getColumnIndex(MediaStore.Images.Media.DATE_MODIFIED)), cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA))) } if (!cursor.isClosed) { cursor.close() } //对比 if (cameraPair != null && screenshotsPair != null) { return if (cameraPair.first!! > screenshotsPair.first!!) { screenshotsPair = null cameraPair } else { cameraPair = null screenshotsPair } } else if (cameraPair != null && screenshotsPair == null) { return cameraPair } else if (cameraPair == null && screenshotsPair != null) { return screenshotsPair } return null } private fun getBucketId(path: String): String { return path.toLowerCase().hashCode().toString() } /** * 获取截图路径 */ private fun getScreenshotsPath(): String { var path = Environment.getExternalStorageDirectory().toString() + "/DCIM/Screenshots" var file: File? = File(path) if (!file?.exists()!!) { path = Environment.getExternalStorageDirectory().toString() + "/Pictures/Screenshots" } file = null return path }}
Java版
/** * 获取相册中最新一张图片 * * @param context * @return */ public static Pair<Long, String> getLatestPhoto(Context context) { //拍摄照片的地址 String CAMERA_IMAGE_BUCKET_NAME = Environment.getExternalStorageDirectory().toString() + "/DCIM/Camera"; //截屏照片的地址 String SCREENSHOTS_IMAGE_BUCKET_NAME = getScreenshotsPath(); //拍摄照片的地址ID String CAMERA_IMAGE_BUCKET_ID = getBucketId(CAMERA_IMAGE_BUCKET_NAME); //截屏照片的地址ID String SCREENSHOTS_IMAGE_BUCKET_ID = getBucketId(SCREENSHOTS_IMAGE_BUCKET_NAME); //查询路径和修改时间 String[] projection = {MediaStore.Images.Media.DATA, MediaStore.Images.Media.DATE_MODIFIED}; // String selection = MediaStore.Images.Media.BUCKET_ID + " = ?"; // String[] selectionArgs = {CAMERA_IMAGE_BUCKET_ID}; String[] selectionArgsForScreenshots = {SCREENSHOTS_IMAGE_BUCKET_ID}; //检查camera文件夹,查询并排序 Pair<Long, String> cameraPair = null; Cursor cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, selection, selectionArgs, MediaStore.Files.FileColumns.DATE_MODIFIED + " DESC"); if (cursor.moveToFirst()) { cameraPair = new Pair(cursor.getLong(cursor.getColumnIndex(MediaStore.Images.Media.DATE_MODIFIED)), cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA))); } //检查Screenshots文件夹 Pair<Long, String> screenshotsPair = null; //查询并排序 cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, selection, selectionArgsForScreenshots, MediaStore.Files.FileColumns.DATE_MODIFIED + " DESC"); if (cursor.moveToFirst()) { screenshotsPair = new Pair(cursor.getLong(cursor.getColumnIndex(MediaStore.Images.Media.DATE_MODIFIED)), cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA))); } if (!cursor.isClosed()) { cursor.close(); } //对比 if (cameraPair != null && screenshotsPair != null) { if (cameraPair.first > screenshotsPair.first) { screenshotsPair = null; return cameraPair; } else { cameraPair = null; return screenshotsPair; } } else if (cameraPair != null && screenshotsPair == null) { return cameraPair; } else if (cameraPair == null && screenshotsPair != null) { return screenshotsPair; } return null; } private static String getBucketId(String path) { return String.valueOf(path.toLowerCase().hashCode()); } /** * 获取截图路径 * @return */ public static String getScreenshotsPath(){ String path = Environment.getExternalStorageDirectory().toString() + "/DCIM/Screenshots"; File file = new File(path); if(!file.exists()){ path = Environment.getExternalStorageDirectory().toString() + "/Pictures/Screenshots"; } file = null; return path; }
阅读全文
0 0
- Android 获得最近一张拍照或截屏图片
- android 获得最近一次拍照 截屏 下载等,的图片路径
- android获取本地图片或拍照图片
- android获取本地图片或拍照图片
- android获取本地图片或拍照图片
- android拍照获得图片及获得图片后并裁剪
- Android在程序中启动拍照/摄像或选择一张图片/视频,并制作缩略图后保存
- Android在程序中启动拍照/摄像或选择一张图片/视频,并制作缩略图后保存
- android-显示选择本地图片或拍照
- Android拍照或本地图片上传
- Android获取本地图片或拍照上传
- Android删除相册得最近拍得一张图片
- Android删除相册得最近拍得一张图片
- 选择手机中的一张照片或拍照上传图片(超高清晰度)
- 【解决方法】android拍照获得的图片太小
- android拍照获得图片URI为空的处理方法
- android拍照获得图片URI为空的处理方法
- android拍照获得图片URI为null的处理方法
- 2017.10.16以前的学习(3)
- 2frangment 切换变颜色
- 几种经典密码(classic cipher)
- 关于Directx中shader的输入与输出
- pdf阅读器下载官方下载的免费方法
- Android 获得最近一张拍照或截屏图片
- 射气球(今日头条笔试题)? 待解决
- 'tasklist' 不是内部或外部命令,也不是可运行的程序(解决办法)
- #error This file requires compiler and library support for the upcoming ISO C++ standard, C++0x. Th
- Web应用的负载均衡、集群、高可用(HA)解决方案整理总结
- JSP 笔记(四 : EL 表达式 )
- Html+Css/JS/PHP常用工具下载
- 各向异性相干增强算法
- HTML屏蔽右键