package com.webshrub.citizencomplaint.androidapp; import android.app.Activity; import android.content.Context; import android.database.Cursor; import android.graphics.Bitmap; import android.location.Geocoder; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.Uri; import android.os.Build; import android.os.Environment; import android.provider.MediaStore; import android.provider.Settings; import android.telephony.TelephonyManager; import android.util.Log; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.text.SimpleDateFormat; import java.util.Date; import static com.webshrub.citizencomplaint.androidapp.CitizenComplaintConstants.MEDIA_TYPE_IMAGE; public class CitizenComplaintUtility { public static Uri getOutputMediaFileUri(int type) { return Uri.fromFile(getOutputMediaFile(type)); } public static Uri getOutputMediaFileUri(File file) { return Uri.fromFile(file); } public static File getOutputMediaFile(int type) { File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "CitizenComplaint"); if (!mediaStorageDir.exists()) { if (!mediaStorageDir.mkdirs()) { Log.d("CitizenComplaint", "failed to create directory"); return null; } } String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); File mediaFile; if (type == CitizenComplaintConstants.MEDIA_TYPE_IMAGE) { mediaFile = new File(mediaStorageDir.getPath() + File.separator + "IMG_" + timeStamp + ".jpg"); } else if (type == CitizenComplaintConstants.MEDIA_TYPE_VIDEO) { mediaFile = new File(mediaStorageDir.getPath() + File.separator + "VID_" + timeStamp + ".mp4"); } else { return null; } return mediaFile; } @SuppressWarnings("deprecation") public static String getAbsoluteFilePath(Activity activity, String inputUriString) { if (inputUriString.startsWith("content://")) { Uri uri = Uri.parse(inputUriString); String[] projection = {MediaStore.Images.Media.DATA}; Cursor cursor = activity.managedQuery(uri, projection, null, null, null); int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); cursor.moveToFirst(); return cursor.getString(column_index); } else { Uri uri = Uri.parse(inputUriString); return uri.getSchemeSpecificPart().substring(2); } } public static String getDeviceIdentifier(Context context) { String deviceIdentifier = null; TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); if (telephonyManager != null) { deviceIdentifier = telephonyManager.getDeviceId(); } if (deviceIdentifier == null || deviceIdentifier.length() == 0) { deviceIdentifier = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID); } return deviceIdentifier; } public static boolean isDeviceOnline(Context context) { ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); return networkInfo != null && networkInfo.isAvailable() && networkInfo.isConnected(); } public static boolean isGeocoderPresent() { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD && Geocoder.isPresent(); } public static String getCompressedImagePath(String inputImagePath, int width, int height) { try { String outputImagePath = getOutputMediaFile(MEDIA_TYPE_IMAGE).getAbsolutePath(); Bitmap outputImage = CitizenComplaintBitmapHelper.decodeFile(inputImagePath, width, height, true); File file = new File(outputImagePath); file.createNewFile(); FileOutputStream fileOutputStream = new FileOutputStream(file); outputImage.compress(Bitmap.CompressFormat.JPEG, 100, fileOutputStream); fileOutputStream.flush(); fileOutputStream.close(); return outputImagePath; } catch (Exception e) { Log.e("Photo Compression", "Photo Compression exception: " + e.getMessage()); e.printStackTrace(); } return null; } public static Uri saveBitmapToFileSystem(Bitmap bitmap) { ByteArrayOutputStream bytes = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes); try { File file = getOutputMediaFile(MEDIA_TYPE_IMAGE); file.createNewFile(); FileOutputStream fileOutputStream = new FileOutputStream(file); fileOutputStream.write(bytes.toByteArray()); fileOutputStream.close(); return getOutputMediaFileUri(file); } catch (Exception e) { Log.e("Photo Save", "Photo Save exception: " + e.getMessage()); e.printStackTrace(); } return null; } }