Main
import android.annotation.SuppressLint;import android.app.Activity;import android.content.pm.ActivityInfo;import android.database.Cursor;import android.os.Bundle;import android.os.Environment;import android.provider.MediaStore;import android.provider.MediaStore.Images;import android.provider.MediaStore.Images.Media;import android.text.TextUtils;import android.util.Log;import android.view.View;import android.widget.TextView;public class MainActivity extends Activity { private static final String TGA=MainActivity.class.getSimpleName(); private TextView photobean_detail_tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); photobean_detail_tv=(TextView) this.findViewById(R.id.photobean_detail_tv); } public void getPhotoDetails(View view) { CameraPhotoBean photoBean= getPhotoBeanByPath_Name(null, "IMG_20161125_201708.jpg"); photobean_detail_tv.setText(photoBean.toString()); } public void changeScreenOrientation(View view) { /** 设置为横屏*/ if(getRequestedOrientation()!=ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE){ setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); }else { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } } /** * 本次查询的就是针对 相机里面的图片进行搜查 * @param path =/storage/emulated/0/DCIM/Camera 默认值 * @param name =head.jpg 这个不能为空 * * @param path_name eg:= /storage/emulated/0/DCIM/Camera/head.jpg * @return */ @SuppressLint({ "DefaultLocale", "InlinedApi" }) public CameraPhotoBean getPhotoBeanByPath_Name(String path,String name) { if (TextUtils.isEmpty(name)) { return null; } if (!TextUtils.isEmpty(path)) { path=String.valueOf(path.toLowerCase().hashCode()); }else { String cameraPath=Environment.getExternalStorageDirectory().toString() + "/DCIM/Camera"; path=String.valueOf(cameraPath.toLowerCase().hashCode());// path=CAMERA_IMAGE_BUCKET_ID; } // 需要获得项 String[] largeFileProjection = { MediaStore.Images.ImageColumns.DATA, MediaStore.Images.ImageColumns.ORIENTATION, MediaStore.Images.ImageColumns.BUCKET_DISPLAY_NAME, MediaStore.Images.ImageColumns.BUCKET_ID, MediaStore.Images.ImageColumns.DATE_TAKEN, MediaStore.Images.ImageColumns.IS_PRIVATE, MediaStore.Images.ImageColumns.LATITUDE, MediaStore.Images.ImageColumns.LONGITUDE, MediaStore.Images.ImageColumns.MINI_THUMB_MAGIC, MediaStore.Images.ImageColumns.PICASA_ID,// MediaStore.Images.ImageColumns._COUNT,//_count 这列不存在 MediaStore.Images.ImageColumns._ID, MediaStore.Images.ImageColumns.DATE_ADDED, MediaStore.Images.ImageColumns.DATE_MODIFIED, MediaStore.Images.ImageColumns.DISPLAY_NAME, MediaStore.Images.ImageColumns.HEIGHT, MediaStore.Images.ImageColumns.MIME_TYPE, MediaStore.Images.ImageColumns.SIZE, MediaStore.Images.ImageColumns.TITLE, MediaStore.Images.ImageColumns.WIDTH};// 需要获得项 String[] largeFileProjection2 = { Media.DATA, Media.ORIENTATION, Media.BUCKET_DISPLAY_NAME, Media.BUCKET_ID, Media.DATE_TAKEN, Media.IS_PRIVATE, Media.LATITUDE, Media.LONGITUDE, Media.MINI_THUMB_MAGIC, Media.PICASA_ID,// Media._COUNT,//_count 这列不存在 Media._ID, Media.DATE_ADDED, Media.DATE_MODIFIED, Media.DISPLAY_NAME, Media.HEIGHT, Media.MIME_TYPE, Media.SIZE, Media.TITLE, Media.WIDTH}; // final String selection = MediaStore.Images.Media.BUCKET_ID + " = ? "; // final String[] selectionArgs = { CAMERA_IMAGE_BUCKET_ID };// 执行的SQLite 语句 String selectionSQstr = MediaStore.Images.Media.BUCKET_ID+ " = ? and " + MediaStore.Images.ImageColumns.DISPLAY_NAME + " =? "; String[] selectionArgs = { path,name};//问号值 Cursor myCursor = BaseApplication .getInstance() .getApplicationContext() .getContentResolver() .query(Images.Media.EXTERNAL_CONTENT_URI, largeFileProjection, selectionSQstr, selectionArgs, null); Cursor myCursor2=BaseApplication .getInstance() .getApplicationContext() .getContentResolver() .query(Media.EXTERNAL_CONTENT_URI, null, null, null, null); CameraPhotoBean mCameraInfo = null; long timer; int rotateXDegrees; String data ; String bucketDisplayName ; String bucketID ; String dateTaken ; String isPrivate ; String latitude ; String miniThumbMagic ; String picasaID ;// String _count ;//_count 这列不存在 String _id ; String dateAdded ; String dateModified ; String height ; String mimeType ; String size ; String title ; String width ;// myCursor.moveToFirst(); 如要写这句话,会导致 少一条数据;// myCursor2.moveToFirst(); System.out.println("myCursor.getCount = "+myCursor.getCount()); System.out.println("myCursor2.getCount = "+myCursor2.getCount()); int i=0; while (myCursor.moveToNext()) { data = myCursor.getString(myCursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA)); File f = new File(data); if (f.exists()) { timer = f.lastModified();// 最后一次修改时间 rotateXDegrees = myCursor.getInt(myCursor.getColumnIndexOrThrow(Media.ORIENTATION)); bucketDisplayName = myCursor.getString(myCursor.getColumnIndexOrThrow(Media.BUCKET_DISPLAY_NAME)); bucketID = myCursor.getString(myCursor.getColumnIndexOrThrow(Media.BUCKET_ID)); dateTaken = myCursor.getString(myCursor.getColumnIndexOrThrow(Media.DATE_TAKEN)); isPrivate = myCursor.getString(myCursor.getColumnIndexOrThrow(Media.IS_PRIVATE)); latitude = myCursor.getString(myCursor.getColumnIndexOrThrow(Media.LATITUDE)); miniThumbMagic = myCursor.getString(myCursor.getColumnIndexOrThrow(Media.MINI_THUMB_MAGIC)); picasaID = myCursor.getString(myCursor.getColumnIndexOrThrow(Media.PICASA_ID));// _count = myCursor.getString(myCursor.getColumnIndexOrThrow(Media._COUNT));//_count 这列不存在 _id = myCursor.getString(myCursor.getColumnIndexOrThrow(Media._ID)); dateAdded = myCursor.getString(myCursor.getColumnIndexOrThrow(Media.DATE_ADDED)); dateModified = myCursor.getString(myCursor.getColumnIndexOrThrow(Media.DATE_MODIFIED)); height = myCursor.getString(myCursor.getColumnIndexOrThrow(Media.HEIGHT)); mimeType = myCursor.getString(myCursor.getColumnIndexOrThrow(Media.MIME_TYPE)); size = myCursor.getString(myCursor.getColumnIndexOrThrow(Media.SIZE)); title = myCursor.getString(myCursor.getColumnIndexOrThrow(Media.TITLE)); width = myCursor.getString(myCursor.getColumnIndexOrThrow(Media.WIDTH));// mCameraInfo = new CameraPhotoBean(data, rotateXDegrees,timer); mCameraInfo = new CameraPhotoBean(rotateXDegrees, data, timer, bucketDisplayName, bucketID, dateTaken, isPrivate, latitude, miniThumbMagic, picasaID, "_count 这列不存在", _id, dateAdded, dateModified, height, mimeType, size, title, width); Log.e(TGA+" i = "+i,"mCameraInfo.toString() = "+mCameraInfo.toString()); i++; } } myCursor.close(); return mCameraInfo; }}
xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="wrap_content" android:layout_height="match_parent" android:orientation="vertical" tools:context="${relativePackage}.${activityClass}" > <ScrollView android:layout_width="wrap_content" android:layout_height="match_parent" android:fillViewport="true" > <LinearLayout android:layout_width="wrap_content" android:layout_height="match_parent" android:orientation="vertical" > <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="changeScreenOrientation" android:text="changeScreenOrientation" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="getPhotoDetails" android:text="获取图片的信息" /> <TextView android:id="@+id/photobean_detail_tv" android:layout_width="1000dp" android:layout_height="wrap_content" /> </LinearLayout> </ScrollView></LinearLayout>
方法:
/** * 本次查询的就是针对 相机里面的图片进行搜查 * @param path =/storage/emulated/0/DCIM/Camera 默认值 * @param name =head.jpg 这个不能为空 * * @param path_name eg:= /storage/emulated/0/DCIM/Camera/head.jpg * @return */ @SuppressLint({ "DefaultLocale", "InlinedApi" }) public CameraPhotoBean getPhotoBeanByPath_Name(String path,String name) { if (TextUtils.isEmpty(name)) { return null; } if (!TextUtils.isEmpty(path)) { path=String.valueOf(path.toLowerCase().hashCode()); }else { String cameraPath=Environment.getExternalStorageDirectory().toString() + "/DCIM/Camera"; path=String.valueOf(cameraPath.toLowerCase().hashCode());// path=CAMERA_IMAGE_BUCKET_ID; } // 需要获得项 String[] largeFileProjection = { MediaStore.Images.ImageColumns.DATA, MediaStore.Images.ImageColumns.ORIENTATION, MediaStore.Images.ImageColumns.BUCKET_DISPLAY_NAME, MediaStore.Images.ImageColumns.BUCKET_ID, MediaStore.Images.ImageColumns.DATE_TAKEN, MediaStore.Images.ImageColumns.IS_PRIVATE, MediaStore.Images.ImageColumns.LATITUDE, MediaStore.Images.ImageColumns.LONGITUDE, MediaStore.Images.ImageColumns.MINI_THUMB_MAGIC, MediaStore.Images.ImageColumns.PICASA_ID,// MediaStore.Images.ImageColumns._COUNT,//_count 这列不存在 MediaStore.Images.ImageColumns._ID, MediaStore.Images.ImageColumns.DATE_ADDED, MediaStore.Images.ImageColumns.DATE_MODIFIED, MediaStore.Images.ImageColumns.DISPLAY_NAME, MediaStore.Images.ImageColumns.HEIGHT, MediaStore.Images.ImageColumns.MIME_TYPE, MediaStore.Images.ImageColumns.SIZE, MediaStore.Images.ImageColumns.TITLE, MediaStore.Images.ImageColumns.WIDTH};// 需要获得项 String[] largeFileProjection2 = { Media.DATA, Media.ORIENTATION, Media.BUCKET_DISPLAY_NAME, Media.BUCKET_ID, Media.DATE_TAKEN, Media.IS_PRIVATE, Media.LATITUDE, Media.LONGITUDE, Media.MINI_THUMB_MAGIC, Media.PICASA_ID,// Media._COUNT,//_count 这列不存在 Media._ID, Media.DATE_ADDED, Media.DATE_MODIFIED, Media.DISPLAY_NAME, Media.HEIGHT, Media.MIME_TYPE, Media.SIZE, Media.TITLE, Media.WIDTH}; // final String selection = MediaStore.Images.Media.BUCKET_ID + " = ? "; // final String[] selectionArgs = { CAMERA_IMAGE_BUCKET_ID };// 执行的SQLite 语句 String selectionSQstr = MediaStore.Images.Media.BUCKET_ID+ " = ? and " + MediaStore.Images.ImageColumns.DISPLAY_NAME + " =? "; String[] selectionArgs = { path,name};//问号值 Cursor myCursor = BaseApplication .getInstance() .getApplicationContext() .getContentResolver() .query(Images.Media.EXTERNAL_CONTENT_URI, largeFileProjection, selectionSQstr, selectionArgs, null); Cursor myCursor2=BaseApplication .getInstance() .getApplicationContext() .getContentResolver() .query(Media.EXTERNAL_CONTENT_URI, null, null, null, null); CameraPhotoBean mCameraInfo = null; long timer; int rotateXDegrees; String data ; String bucketDisplayName ; String bucketID ; String dateTaken ; String isPrivate ; String latitude ; String miniThumbMagic ; String picasaID ;// String _count ;//_count 这列不存在 String _id ; String dateAdded ; String dateModified ; String height ; String mimeType ; String size ; String title ; String width ;// myCursor.moveToFirst(); 如要写这句话,会导致 少一条数据;// myCursor2.moveToFirst(); System.out.println("myCursor.getCount = "+myCursor.getCount()); System.out.println("myCursor2.getCount = "+myCursor2.getCount()); int i=0; while (myCursor.moveToNext()) { data = myCursor.getString(myCursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA)); File f = new File(data); if (f.exists()) { timer = f.lastModified();// 最后一次修改时间 rotateXDegrees = myCursor.getInt(myCursor.getColumnIndexOrThrow(Media.ORIENTATION)); bucketDisplayName = myCursor.getString(myCursor.getColumnIndexOrThrow(Media.BUCKET_DISPLAY_NAME)); bucketID = myCursor.getString(myCursor.getColumnIndexOrThrow(Media.BUCKET_ID)); dateTaken = myCursor.getString(myCursor.getColumnIndexOrThrow(Media.DATE_TAKEN)); isPrivate = myCursor.getString(myCursor.getColumnIndexOrThrow(Media.IS_PRIVATE)); latitude = myCursor.getString(myCursor.getColumnIndexOrThrow(Media.LATITUDE)); miniThumbMagic = myCursor.getString(myCursor.getColumnIndexOrThrow(Media.MINI_THUMB_MAGIC)); picasaID = myCursor.getString(myCursor.getColumnIndexOrThrow(Media.PICASA_ID));// _count = myCursor.getString(myCursor.getColumnIndexOrThrow(Media._COUNT));//_count 这列不存在 _id = myCursor.getString(myCursor.getColumnIndexOrThrow(Media._ID)); dateAdded = myCursor.getString(myCursor.getColumnIndexOrThrow(Media.DATE_ADDED)); dateModified = myCursor.getString(myCursor.getColumnIndexOrThrow(Media.DATE_MODIFIED)); height = myCursor.getString(myCursor.getColumnIndexOrThrow(Media.HEIGHT)); mimeType = myCursor.getString(myCursor.getColumnIndexOrThrow(Media.MIME_TYPE)); size = myCursor.getString(myCursor.getColumnIndexOrThrow(Media.SIZE)); title = myCursor.getString(myCursor.getColumnIndexOrThrow(Media.TITLE)); width = myCursor.getString(myCursor.getColumnIndexOrThrow(Media.WIDTH));// mCameraInfo = new CameraPhotoBean(data, rotateXDegrees,timer); mCameraInfo = new CameraPhotoBean(rotateXDegrees, data, timer, bucketDisplayName, bucketID, dateTaken, isPrivate, latitude, miniThumbMagic, picasaID, "_count 这列不存在", _id, dateAdded, dateModified, height, mimeType, size, title, width); Log.e(TGA+" i = "+i,"mCameraInfo.toString() = "+mCameraInfo.toString()); i++; } } myCursor.close(); return mCameraInfo; }
public class CameraPhotoBean { public CameraPhotoBean() { } public CameraPhotoBean(String cameraPath, int cameraAngle, long timer) { this.cameraPath = cameraPath; this.cameraAngle = cameraAngle; this.timer = timer; } /** 图片角度*/ private int cameraAngle = 0; /** 图片保存路径*/ private String cameraPath = ""; /** 图片生成时间*/ private long timer = 0; /** 图片保存路径*/ private String bucketDisplayName = ""; /** 图片保存路径*/ private String bucketID = ""; /** 图片保存路径*/ private String dateTaken = ""; /** 图片保存路径*/ private String isPrivate = ""; /** 图片保存路径*/ private String latitude = ""; /** 图片保存路径*/ private String miniThumbMagic = ""; /** 图片保存路径*/ private String picasaID = ""; /** 图片保存路径*/ private String _count = ""; /** 图片保存路径*/ private String _id = ""; /** 图片保存路径*/ private String dateAdded = ""; /** 图片保存路径*/ private String dateModified = ""; /** 图片保存路径*/ private String height = ""; /** 图片保存路径*/ private String mimeType = ""; /** 图片保存路径*/ private String size = ""; /** 图片保存路径*/ private String title = ""; /** 图片保存路径*/ private String width = ""; public int getCameraAngle() { return cameraAngle; } public void setCameraAngle(int cameraAngle) { this.cameraAngle = cameraAngle; } public String getCameraPath() { return cameraPath; } public void setCameraPath(String cameraPath) { this.cameraPath = cameraPath; } public long getTimer() { return timer; } public void setTimer(long timer) { this.timer = timer; } public String getBucketDisplayName() { return bucketDisplayName; } public void setBucketDisplayName(String bucketDisplayName) { this.bucketDisplayName = bucketDisplayName; } public String getBucketID() { return bucketID; } public void setBucketID(String bucketID) { this.bucketID = bucketID; } public String getDateTaken() { return dateTaken; } public void setDateTaken(String dateTaken) { this.dateTaken = dateTaken; } public String getIsPrivate() { return isPrivate; } public void setIsPrivate(String isPrivate) { this.isPrivate = isPrivate; } public String getLatitude() { return latitude; } public void setLatitude(String latitude) { this.latitude = latitude; } public String getMiniThumbMagic() { return miniThumbMagic; } public void setMiniThumbMagic(String miniThumbMagic) { this.miniThumbMagic = miniThumbMagic; } public String getPicasaID() { return picasaID; } public void setPicasaID(String picasaID) { this.picasaID = picasaID; } public String get_count() { return _count; } public void set_count(String _count) { this._count = _count; } public String get_id() { return _id; } public void set_id(String _id) { this._id = _id; } public String getDateAdded() { return dateAdded; } public void setDateAdded(String dateAdded) { this.dateAdded = dateAdded; } public String getDateModified() { return dateModified; } public void setDateModified(String dateModified) { this.dateModified = dateModified; } public String getHeight() { return height; } public void setHeight(String height) { this.height = height; } public String getMimeType() { return mimeType; } public void setMimeType(String mimeType) { this.mimeType = mimeType; } public String getSize() { return size; } public void setSize(String size) { this.size = size; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getWidth() { return width; } public void setWidth(String width) { this.width = width; } public CameraPhotoBean(int cameraAngle, String cameraPath, long timer, String bucketDisplayName, String bucketID, String dateTaken, String isPrivate, String latitude, String miniThumbMagic, String picasaID, String _count, String _id, String dateAdded, String dateModified, String height, String mimeType, String size, String title, String width) { super(); this.cameraAngle = cameraAngle; this.cameraPath = cameraPath; this.timer = timer; this.bucketDisplayName = bucketDisplayName; this.bucketID = bucketID; this.dateTaken = dateTaken; this.isPrivate = isPrivate; this.latitude = latitude; this.miniThumbMagic = miniThumbMagic; this.picasaID = picasaID; this._count = _count; this._id = _id; this.dateAdded = dateAdded; this.dateModified = dateModified; this.height = height; this.mimeType = mimeType; this.size = size; this.title = title; this.width = width; } @Override public String toString() { return "CameraPhotoBean [" + " \n 旋转角度 cameraAngle---------= " + cameraAngle + ",\n 相片绝对路径 cameraPath----------= " + cameraPath + ",\n 拍照时间 timer---------------= " + timer + ",\n 相对路径 bucketDisplayName---= " + bucketDisplayName + ",\n bucketID-------------------= " + bucketID + ",\n dateTaken------------------= " + dateTaken + ",\n isPrivate------------------= " + isPrivate + ",\n latitude-------------------= " + latitude + ",\n miniThumbMagic-------------= " + miniThumbMagic + ",\n picasaID-------------------= " + picasaID + ",\n _count---------------------= " + _count + ",\n _id------------------------= "+ _id + ",\n dateAdded------------------= " + dateAdded + ",\n dateModified---------------= " + dateModified + ",\n height---------------------= " + height + ",\n 文件格式 mimeType------------= " + mimeType + ",\n size-----------------------= " + size + ",\n title----------------------= " + title + ",\n width----------------------= " + width + "]"; } }