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 + "]";
}
}