package in.srain.cube.photos;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.database.Cursor;
import android.net.Uri;
import android.os.Build;
import android.provider.DocumentsContract;
import android.provider.MediaStore;
import android.view.Gravity;
import android.widget.Toast;
import com.hoollyzhang.hlib.R;
import java.io.File;
import java.util.List;
public class PhotoUtils {
public static boolean isCameraUseAble(Context context) {
PackageManager packageManager = context.getPackageManager();
return packageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA);
}
public static void toCamera(Activity activity, File outputFile, int requestCode) {
if (!isCameraUseAble(activity)) {
Toast.makeText(activity, R.string.cube_photo_no_camera, Toast.LENGTH_LONG).show();
return;
}
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
PackageManager packageManager = activity.getPackageManager();
List<ResolveInfo> resolveInfoList = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
if (resolveInfoList == null && resolveInfoList.size() == 0) {
Toast.makeText(activity, R.string.cube_photo_can_not_use_camera, Toast.LENGTH_LONG).show();
return;
}
Uri imageUri = Uri.fromFile(outputFile);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
activity.startActivityForResult(intent, requestCode);
}
public static void toAlbum(Activity activity, int requestCode) {
try {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
activity.startActivityForResult(intent, requestCode);
} catch (Exception e) {
Toast toast = Toast.makeText(activity, R.string.cube_photo_can_not_open_album, Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
}
}
public static void toCrop(Activity activity, File file, File outputFile, CropOption info, int requestCode) {
Uri uri = Uri.fromFile(file);
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(uri, "image/*");
if (info.outputX >= 0) {
intent.putExtra("outputX", info.outputX);
}
if (info.outputY > 0) {
intent.putExtra("outputY", info.outputY);
}
intent.putExtra("aspectX", info.aspectX);
intent.putExtra("aspectY", info.aspectY);
intent.putExtra("scale", true);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(outputFile));
activity.startActivityForResult(intent, requestCode);
}
@SuppressLint("NewApi")
public static String uriToPath(Context activity, Uri uri) {
if (null == uri) {
return null;
}
String urlStr = uri.toString();
if (urlStr.startsWith("file://")) {
return uri.getPath();
}
Cursor cursor = null;
String idWhere;
String id;
String[] columns = {MediaStore.Images.Media.DATA};
try {
if (Build.VERSION.SDK_INT == 19 && DocumentsContract.isDocumentUri(activity, uri)) {
final String docId = DocumentsContract.getDocumentId(uri);
final String[] split = docId.split(":");
id = split[1];
idWhere = MediaStore.Images.Media._ID + "=?";
cursor = activity.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, idWhere, new String[]{id}, null);
} else {
cursor = activity.getContentResolver().query(uri, columns, null, null, null);
}
if (cursor != null) {
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
if (cursor.moveToFirst()) {
return cursor.getString(column_index);
}
}
} catch (Exception e) {
} finally {
if (cursor != null) {
cursor.close();
}
}
return null;
}
}