package com.roboo.like.google.async;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.LinkedList;
import java.util.TimeZone;
import android.annotation.SuppressLint;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Build;
import android.os.Environment;
import android.provider.MediaStore;
import android.provider.MediaStore.Images.Media;
import com.droidux.trial.bi;
import com.roboo.like.google.models.PictureItem;
public class PictureAsyncTaskLoader extends BaseAsyncTaskLoader<LinkedList<PictureItem>>
{
private Context mContext;
public PictureAsyncTaskLoader(Context context)
{
super(context);
mContext = context;
}
public LinkedList<PictureItem> loadInBackground()
{
LinkedList<PictureItem> items = null;
if (Build.VERSION.SDK_INT > 18)
{
items = getPictureInKK();
}
else
{
items = getPictureBeforeKK();
}
return items;
}
private LinkedList<PictureItem> getPictureInKK()
{
LinkedList<PictureItem> items = null;
// String[] paths = new String[] { Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getPath() };
// String[] mimeTypes = new String[] { "image/*" };
mContext.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + Environment.getExternalStorageDirectory())));
Uri mImageUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
ContentResolver mContentResolver = mContext.getContentResolver();
Cursor mCursor = mContentResolver.query(mImageUri, null, null, null, MediaStore.Images.Media.DATE_ADDED);
if (mCursor != null && mCursor.getCount() > 0)
{
items = new LinkedList<PictureItem>();
mCursor.moveToFirst();
while (mCursor.moveToNext())
{
// 获取图片的路径
String path = mCursor.getString(mCursor.getColumnIndex(MediaStore.Images.Media.DATA));
// 获取图片的添加到系统的毫秒数
long time = mCursor.getLong(mCursor.getColumnIndex(MediaStore.Images.Media.DATE_ADDED));
PictureItem item = new PictureItem(path, parseTimeToYMD(time));
items.add(item);
}
mCursor.close();
}
return items;
}
/**
* 获取SD卡中的图片, 在奇巧[19]之前使用此方法, API19后限制了系统应用才有权限使用广播通知系统扫描SD卡
*/
private LinkedList<PictureItem> getPictureBeforeKK()
{
LinkedList<PictureItem> items = null;
mContext.sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));
Uri mImageUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
ContentResolver mContentResolver = mContext.getContentResolver();
Cursor mCursor = mContentResolver.query(mImageUri, null, null, null, MediaStore.Images.Media.DATE_ADDED);
if (mCursor != null && mCursor.getCount() > 0)
{
items = new LinkedList<PictureItem>();
mCursor.moveToFirst();
while (mCursor.moveToNext())
{
// 获取图片的路径
String path = mCursor.getString(mCursor.getColumnIndex(MediaStore.Images.Media.DATA));
// 获取图片的添加到系统的毫秒数
long time = mCursor.getLong(mCursor.getColumnIndex(MediaStore.Images.Media.DATE_ADDED));
PictureItem item = new PictureItem(path, parseTimeToYMD(time));
System.out.println("item = " + item);
items.add(item);
}
mCursor.close();
}
return items;
}
@SuppressLint("SimpleDateFormat")
public String parseTimeToYMD(long time)
{
System.setProperty("user.timezone", "Asia/Shanghai");
TimeZone tz = TimeZone.getTimeZone("Asia/Shanghai");
TimeZone.setDefault(tz);
SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日");
return format.format(new Date(time * 1000L));
}
}