Android 通过手机文件夹路径,得到 某张 照片 的 详细/详情/信息的获取

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;
	}







PhotoBean

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

}














评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值