package com.example.kjdskjf;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Build;
import android.os.Environment;
import android.provider.MediaStore;
import android.provider.MediaStore.MediaColumns;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.widget.Toast;
public class PhotoUtil {
private static final File pubFile = MyApplication.getAppContext()
.getExternalFilesDir(Environment.DIRECTORY_PICTURES);
public static final File file1 = new File(pubFile, "temp1.jpg");// 拍照路径
public static final File file2 = new File(pubFile, "temp2.jpg");// 剪裁路径
public static final File file3 = new File(pubFile, "temp3.jpg");// 压缩路径
/**
* 返回码
*/
public static final int NONE = 0;
/**
* 拍照
*/
public static final int PHOTOGRAPH = 1;
/**
* 相册
*/
public static final int PHOTOALBUM = 2;
/**
* 剪裁
*/
public static final int CLIPPING = 3;
/**
* @param activity
* 吊起相册或拍照
*/
public static void getPhoto(final Activity activity) {
final CharSequence[] items = { "相册", "拍照" };
AlertDialog dlg = new AlertDialog.Builder(activity).setTitle("选择图片")
.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
if (item == 1) {
Log.i("aini", "调用系统相机");
Intent getImageByCamera = new Intent("android.media.action.IMAGE_CAPTURE");
getImageByCamera.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file1));
activity.startActivityForResult(getImageByCamera, PHOTOGRAPH);
} else {
Intent getImage = new Intent(Intent.ACTION_GET_CONTENT);
getImage.addCategory(Intent.CATEGORY_OPENABLE);
getImage.setType("image/jpeg");
activity.startActivityForResult(getImage, PHOTOALBUM);
}
}
}).create();
dlg.show();
}
/**
* 调起拍照
*/
public static void takePhoto(Activity activity) {
Intent getImageByCamera = new Intent("android.media.action.IMAGE_CAPTURE");
getImageByCamera.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file1));
activity.startActivityForResult(getImageByCamera, PHOTOGRAPH);
}
/**
* 调起相册
*/
public static void pickPhoto(Activity activity) {
Intent getImage = new Intent(Intent.ACTION_GET_CONTENT);
getImage.addCategory(Intent.CATEGORY_OPENABLE);
getImage.setType("image/jpeg");
activity.startActivityForResult(getImage, PHOTOALBUM);
}
/**
* 拍照返回调用
*/
public static void onPhotoFromCamera(Activity activity) {
startPhotoZoom(Uri.fromFile(file1), activity);
}
/**
* 相册返回调用
*/
public static void onPhotoFromPick(Activity activity, Uri uri) {
startPhotoZoom(uri, activity);
}
/**
* @param compress
* 0``100 100表示原图 返回剪裁的图片
*/
public static Bitmap getBitmap(int compress) {
try {
Bitmap bm = BitmapFactory.decodeFile(file2.getAbsolutePath());
OutputStream outStream = new FileOutputStream(file3);
bm.compress(android.graphics.Bitmap.CompressFormat.JPEG, compress, outStream);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return BitmapFactory.decodeFile(file3.getAbsolutePath());
}
public static void startPhotoZoom(Uri uri, Activity activity) {
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(uri, "image/*");
intent.putExtra("crop", "true");
// aspectX aspectY 是宽高的比例
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file2));
// outputX outputY 是裁剪图片宽高
// intent.putExtra("outputX", 100);
// intent.putExtra("outputY", 100);
intent.putExtra("return-data", false);
activity.startActivityForResult(intent, CLIPPING);
}
/*
* 用的activity调用这个
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == PhotoUtil.NONE)
return;
if (requestCode == PhotoUtil.PHOTOALBUM) {
PhotoUtil.onPhotoFromPick(this, data.getData());
} else if (requestCode == PhotoUtil.PHOTOGRAPH) {
PhotoUtil.onPhotoFromCamera(this);
} else if (requestCode == PhotoUtil.CLIPPING) {
Bitmap bitmap = PhotoUtil.getBitmap(100);
imageView.setImageBitmap(bitmap);
}
}
*/
/*
* 用的fragment的activity调用这个
* 解决fragment不能接到intent问题
*
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
myfragment.onActivityResult(int requestCode, int resultCode, Intent data){};
}
*/
/*
* Appication中写如下代码
*
private static Context context;
public void onCreate(){
super.onCreate();
MyApplication.context = getApplicationContext();
}
public static Context getAppContext() {
return MyApplication.context;
}
*/
} |