package com.integreight.onesheeld.shields.controller.utils;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.hardware.Camera;
import android.provider.MediaStore;
import android.widget.Toast;
import com.integreight.onesheeld.R;
import com.integreight.onesheeld.utils.Log;
import java.io.File;
import java.util.List;
public class CameraUtils {
public static final byte FROM_ONESHEELD_FOLDER = (byte) 0x00;
public static final byte FROM_CAMERA_FOLDER = (byte) 0x01;
public static String CAMERA_CAPTURE_RECEIVER_EVENT_NAME = "camera_capture_event_name";
public static String lastCapturedImagePathFromOneSheeldFolder = "";
private static SharedPreferences sharedPreferences;
private static SharedPreferences.Editor editor;
private static final String sharedPreferencesKey = "LastImage";
public static Camera.Size getBiggestPictureSize(
Camera.Parameters parameters) {
Camera.Size result = null;
for (Camera.Size size : parameters.getSupportedPictureSizes()) {
if (result == null) {
result = size;
} else {
int resultArea = result.width * result.height;
int newArea = size.width * size.height;
if (newArea > resultArea) {
result = size;
}
}
}
return (result);
}
/**
* Check if this device has a camera
*/
public static boolean checkCameraHardware(Context context) {
if (context.getPackageManager().hasSystemFeature(
PackageManager.FEATURE_CAMERA)) {
// this device has a camera
return true;
} else {
// no camera on this device
return false;
}
}
/**
* Check if this device has front camera
*/
public static boolean checkFrontCamera(Context context) {
if (context.getPackageManager().hasSystemFeature(
PackageManager.FEATURE_CAMERA_FRONT)) {
// this device has front camera
return true;
} else {
// no front camera on this device
return false;
}
}
/**
* Check if this device has flash
*/
public static boolean hasFlash(Camera mCamera) {
if (mCamera == null) {
return false;
}
Camera.Parameters parameters = mCamera.getParameters();
if (parameters.getFlashMode() == null) {
return false;
}
List<String> supportedFlashModes = parameters.getSupportedFlashModes();
if (supportedFlashModes == null || supportedFlashModes.isEmpty() || supportedFlashModes.size() == 1 && supportedFlashModes.get(0).equals(Camera.Parameters.FLASH_MODE_OFF)) {
return false;
}
return true;
}
public static String getLastCapturedImagePathFromCameraFolder(
Activity activity) {
final String[] imageColumns = {MediaStore.Images.Media._ID,
MediaStore.Images.Media.DATA};
final String imageOrderBy = MediaStore.Images.Media._ID + " DESC";
Cursor imageCursor = activity.getContentResolver().query(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, imageColumns,
null, null, imageOrderBy);
imageCursor.moveToFirst();
String fullPath = null;
if (imageCursor.getCount() == 0)
return null;
do {
fullPath = imageCursor.getString(imageCursor
.getColumnIndex(MediaStore.Images.Media.DATA));
Log.sysOut("!@!@ " + fullPath);
if (fullPath.contains("DCIM")) {
// --last image from camera --
Log.sysOut(fullPath);
break;
}
} while (imageCursor.moveToNext());
return fullPath;
}
public static String getLastCapturedImagePathFromOneSheeldFolderInMediaStore(
Activity activity) {
final String[] imageColumns = {MediaStore.Images.Media._ID,
MediaStore.Images.Media.DATA};
final String imageOrderBy = MediaStore.Images.Media._ID + " DESC";
Cursor imageCursor = activity.getContentResolver().query(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, imageColumns,
MediaStore.Images.Media.DATA + " like ? ",
new String[]{"%OneSheeld%"}, imageOrderBy);
imageCursor.moveToFirst();
String fullPath = null;
if (imageCursor.getCount() == 0)
return null;
do {
fullPath = imageCursor.getString(imageCursor
.getColumnIndex(MediaStore.Images.Media.DATA));
Log.sysOut("!@!@ " + fullPath);
if (fullPath.contains("OneSheeld")) {
// --last image from camera --
Log.sysOut(fullPath);
break;
}
} while (imageCursor.moveToNext());
return fullPath;
}
public static String getLastCapturedImagePathFromOneSheeldFolder(Activity activity,boolean viewToast) {
sharedPreferences = activity.getSharedPreferences("camera", Context.MODE_PRIVATE);
File tmpImage;
if (lastCapturedImagePathFromOneSheeldFolder != null) {
tmpImage = new File(lastCapturedImagePathFromOneSheeldFolder);
if (tmpImage.exists())
return lastCapturedImagePathFromOneSheeldFolder;
else {
lastCapturedImagePathFromOneSheeldFolder = sharedPreferences.getString(sharedPreferencesKey,"");
tmpImage = new File(lastCapturedImagePathFromOneSheeldFolder);
if (tmpImage.exists())
return lastCapturedImagePathFromOneSheeldFolder;
else
return getLastCapturedImagePathFromOneSheeldFolderInMediaStore(activity);
}
}else{
lastCapturedImagePathFromOneSheeldFolder = sharedPreferences.getString(sharedPreferencesKey,"");
tmpImage = new File(lastCapturedImagePathFromOneSheeldFolder);
if (tmpImage.exists())
return lastCapturedImagePathFromOneSheeldFolder;
}
if (viewToast)
Toast.makeText(activity.getApplicationContext(), R.string.camera_image_not_found_toast,Toast.LENGTH_SHORT).show();
return "";
}
public static void setLastCapturedImagePathFromOneSheeldFolder(String lastCapturedImagePathFromOneSheeldFolder,Activity activity) {
sharedPreferences = activity.getSharedPreferences("camera",Context.MODE_PRIVATE);
if (lastCapturedImagePathFromOneSheeldFolder != null) {
File tmpImage = new File(lastCapturedImagePathFromOneSheeldFolder);
if (tmpImage.exists()) {
CameraUtils.lastCapturedImagePathFromOneSheeldFolder = lastCapturedImagePathFromOneSheeldFolder;
editor = sharedPreferences.edit();
editor.putString(sharedPreferencesKey,lastCapturedImagePathFromOneSheeldFolder);
editor.commit();
}
}
}
}