/** * galaxy inc. * meetup client for android */ package com.galaxy.meetup.client.android; import android.content.ComponentName; import android.content.ContentResolver; import android.content.ContentValues; import android.content.Context; import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.database.Cursor; import android.net.Uri; import android.os.Handler; import android.os.Looper; import android.preference.PreferenceManager; import android.util.Log; import com.galaxy.meetup.client.android.content.EsAccount; import com.galaxy.meetup.client.android.iu.InstantUploadFacade; import com.galaxy.meetup.client.android.service.AndroidNotification; import com.galaxy.meetup.client.android.service.CameraMonitor; import com.galaxy.meetup.client.util.AccountsUtil; import com.galaxy.meetup.client.util.EsLog; /** * * @author sihai * */ public class InstantUpload { private static final String INSTANT_SHARE_PROJECTION[] = { "instant_share_eventid" }; private static final String INSTANT_UPLOAD_PROJECTION[] = { "auto_upload_enabled" }; private static final String PROJECTION_UPLOAD_SIZE[] = { "upload_full_resolution", "full_size_disabled", "quota_limit", "quota_used" }; private static Handler sHandler = new Handler(Looper.getMainLooper()); public static void cancelAllUploads(Context context, EsAccount esaccount) { Uri uri = InstantUploadFacade.UPLOAD_ALL_URI.buildUpon().appendQueryParameter("account", esaccount.getName()).build(); context.getContentResolver().delete(uri, null, null); } public static void enableInstantUpload(Context context, EsAccount esaccount, boolean flag) { ContentResolver contentresolver = context.getContentResolver(); ContentValues contentvalues = new ContentValues(); if(flag) { contentvalues.put("auto_upload_account_name", esaccount.getName()); contentvalues.put("auto_upload_account_type", AccountsUtil.ACCOUNT_TYPE); } int i; if(flag) i = 1; else i = 0; contentvalues.put("auto_upload_enabled", Integer.valueOf(i)); contentresolver.update(InstantUploadFacade.SETTINGS_URI, contentvalues, null, null); if(flag) ensureSyncEnabled(esaccount); startMonitoring(context); } public static void ensureSyncEnabled(EsAccount esaccount) { ContentResolver.setSyncAutomatically(AccountsUtil.newAccount(esaccount.getName()), "com.galaxy.meetup.client.android.iu.EsGalaxyIuProvider", true); } public static String getInstantShareEventId(Context context) { Cursor cursor = null; String s; Uri uri = InstantUploadFacade.SETTINGS_URI; try { cursor = context.getContentResolver().query(uri, INSTANT_SHARE_PROJECTION, null, null, null); s = null; if(cursor == null || !cursor.moveToFirst()) { return null; } return cursor.getString(0); } finally { if(null != cursor) { cursor.close(); } } } public static String getSizeText(Context context, int i) { String s; if(i < 900) { int l = R.string.full_size_megabyte; Object aobj2[] = new Object[1]; aobj2[0] = Integer.valueOf(i); s = context.getString(l, aobj2); } else if(i < 0xe1000) { int k = R.string.full_size_gigabyte; Object aobj1[] = new Object[1]; aobj1[0] = Double.valueOf(Math.max((double)i / 1024D, 1.0D)); s = context.getString(k, aobj1); } else { int j = R.string.full_size_terabyte; Object aobj[] = new Object[1]; aobj[0] = Double.valueOf(Math.max((double)i / 1048576D, 1.0D)); s = context.getString(j, aobj); } return s; } public static boolean isEnabled(Context context) { Cursor cursor = null; Uri uri = InstantUploadFacade.SETTINGS_URI; try { cursor = context.getContentResolver().query(uri, INSTANT_UPLOAD_PROJECTION, null, null, null); if(null != cursor && cursor.moveToFirst()) { return cursor.getInt(0) != 0; } return false; } finally { if(null != cursor) { cursor.close(); } } } public static boolean isInstantShareEnabled(Context context) { boolean flag; if(getInstantShareEventId(context) != null) flag = true; else flag = false; return flag; } public static boolean isSyncEnabled(EsAccount esaccount) { return ContentResolver.getSyncAutomatically(AccountsUtil.newAccount(esaccount.getName()), "com.galaxy.meetup.client.android.iu.EsGalaxyIuProvider"); } public static void setFullResolutionSetting(Context context, boolean flag) { ContentResolver contentresolver = context.getContentResolver(); int i; ContentValues contentvalues; if(flag) i = 1; else i = 0; contentvalues = new ContentValues(); contentvalues.put("upload_full_resolution", Integer.valueOf(i)); contentresolver.update(InstantUploadFacade.SETTINGS_URI, contentvalues, null, null); } public static void setOnBatterySetting(Context context, boolean flag) { ContentResolver contentresolver = context.getContentResolver(); int i; ContentValues contentvalues; if(flag) i = 1; else i = 0; contentvalues = new ContentValues(); contentvalues.put("sync_on_battery", Integer.valueOf(i)); contentresolver.update(InstantUploadFacade.SETTINGS_URI, contentvalues, null, null); } public static void setPhotoWiFiOnlySetting(Context context, boolean flag) { ContentResolver contentresolver = context.getContentResolver(); int i; ContentValues contentvalues; if(flag) i = 1; else i = 0; contentvalues = new ContentValues(); contentvalues.put("sync_on_wifi_only", Integer.valueOf(i)); contentresolver.update(InstantUploadFacade.SETTINGS_URI, contentvalues, null, null); } public static void setRoamingUploadSetting(Context context, boolean flag) { ContentResolver contentresolver = context.getContentResolver(); int i; ContentValues contentvalues; if(flag) i = 1; else i = 0; contentvalues = new ContentValues(); contentvalues.put("sync_on_roaming", Integer.valueOf(i)); contentresolver.update(InstantUploadFacade.SETTINGS_URI, contentvalues, null, null); } public static void setVideoWiFiOnlySetting(Context context, boolean flag) { ContentResolver contentresolver = context.getContentResolver(); int i; ContentValues contentvalues; if(flag) i = 1; else i = 0; contentvalues = new ContentValues(); contentvalues.put("video_upload_wifi_only", Integer.valueOf(i)); contentresolver.update(InstantUploadFacade.SETTINGS_URI, contentvalues, null, null); } public static void showFirstTimeFullSizeNotification(Context context, EsAccount esaccount) { SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(context); if(sharedpreferences.getBoolean("iu.first_time_full_size_shown", false) || null == esaccount) { if(EsLog.isLoggable("iu.InstantUpload", 4)) if(esaccount == null) Log.i("iu.InstantUpload", "No first time; account is null, retry"); else Log.i("iu.InstantUpload", "First time already shown"); return; } // TODO } public static void showOutOfQuotaNotification(Context context, EsAccount esaccount, int i, int j, boolean flag) { boolean flag1 = InstantUploadFacade.isOutOfQuota(i, j); SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(context); if(!flag) { sharedpreferences.edit().putBoolean("iu.received_low_quota", false).putBoolean("iu.received_no_quota", false).commit(); showFirstTimeFullSizeNotification(context, esaccount); AndroidNotification.cancelQuotaNotification(context, esaccount); return; } // TODO } public static void startMonitoring(final Context context) { sHandler.post(new Runnable() { public final void run() { PackageManager packagemanager = context.getPackageManager(); ComponentName componentname = new ComponentName(context.getPackageName(), CameraMonitor.class.getName()); if(packagemanager.getComponentEnabledSetting(componentname) != 1) packagemanager.setComponentEnabledSetting(componentname, 1, 1); CameraMonitor.registerObservers(context.getApplicationContext()); } }); } }