From 99934709fe36c32a171d434d70404e49b1a83d9f Mon Sep 17 00:00:00 2001 From: RHenigan Date: Tue, 24 Mar 2020 10:58:15 -0400 Subject: Update Exceptions and integrate to lockscrnManager --- .../lockscreen/LockScreenDeviceIconManager.java | 75 ++++++++++++++-------- .../managers/lockscreen/LockScreenManager.java | 10 ++- 2 files changed, 56 insertions(+), 29 deletions(-) (limited to 'android/sdl_android/src') diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/lockscreen/LockScreenDeviceIconManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/lockscreen/LockScreenDeviceIconManager.java index 71bdb77c5..e00a50db2 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/lockscreen/LockScreenDeviceIconManager.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/lockscreen/LockScreenDeviceIconManager.java @@ -12,6 +12,7 @@ import org.json.JSONObject; import java.io.ByteArrayOutputStream; import java.io.File; +import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.Date; @@ -24,49 +25,67 @@ public class LockScreenDeviceIconManager { this.context = context; } - boolean updateCachedImage(String iconIUrl) throws JSONException { + boolean updateCachedImage(String iconIUrl) { SharedPreferences sharedPref = this.context.getSharedPreferences("sdl", Context.MODE_PRIVATE); String iconParameters = sharedPref.getString(iconIUrl, null); if(iconParameters == null) { return true; } else { - JSONObject jsonObject = new JSONObject(iconParameters); - long lastUpdatedTime = (long) jsonObject.get("lastUpdatedTime"); - long currentTime = System.currentTimeMillis(); - - long timeDifference = currentTime - lastUpdatedTime; - long daysBetweenLastUpdate = timeDifference / (1000 * 60 * 60 * 24); - - return daysBetweenLastUpdate >= 30; + JSONObject jsonObject = null; + try { + jsonObject = new JSONObject(iconParameters); + long lastUpdatedTime = 0; + lastUpdatedTime = (long) jsonObject.get("lastUpdatedTime"); + long currentTime = System.currentTimeMillis(); + + long timeDifference = currentTime - lastUpdatedTime; + long daysBetweenLastUpdate = timeDifference / (1000 * 60 * 60 * 24); + + return daysBetweenLastUpdate >= 30; + + } catch (JSONException e) { + e.printStackTrace(); + return true; + } } } - void saveFileToCache(Bitmap icon, String iconUrl) throws IOException, JSONException { + void saveFileToCache(Bitmap icon, String iconUrl) { File f = new File(this.context.getCacheDir(), iconUrl); - f.createNewFile(); - - ByteArrayOutputStream bos = new ByteArrayOutputStream(); - icon.compress(Bitmap.CompressFormat.PNG, 0 /*ignored for PNG*/, bos); - byte[] bitmapdata = bos.toByteArray(); - - FileOutputStream fos = new FileOutputStream(f); - fos.write(bitmapdata); - fos.flush(); - fos.close(); - - JSONObject iconParams = buildDeviceIconParameters(f.getAbsolutePath()); - writeDeviceIconParametersToSystemPreferences(iconUrl, iconParams); + try { + f.createNewFile(); + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + icon.compress(Bitmap.CompressFormat.PNG, 0 /*ignored for PNG*/, bos); + byte[] bitmapdata = bos.toByteArray(); + + FileOutputStream fos = null; + fos = new FileOutputStream(f); + fos.write(bitmapdata); + fos.flush(); + fos.close(); + JSONObject iconParams; + + iconParams = buildDeviceIconParameters(f.getAbsolutePath()); + writeDeviceIconParametersToSystemPreferences(iconUrl, iconParams); + } catch (Exception e) { + e.printStackTrace(); + } } - Bitmap getFileFromCache(String iconUrl) throws JSONException { + Bitmap getFileFromCache(String iconUrl) { SharedPreferences sharedPref = this.context.getSharedPreferences("sdl", Context.MODE_PRIVATE); String iconParameters = sharedPref.getString(iconUrl, null); if (iconParameters != null) { - JSONObject jsonObject = new JSONObject("storedUrl"); - String storedUrl = jsonObject.getString("storedUrl"); - Bitmap bitmap = BitmapFactory.decodeFile(storedUrl); - return bitmap; + JSONObject jsonObject = null; + try { + jsonObject = new JSONObject("storedUrl"); + String storedUrl = jsonObject.getString("storedUrl"); + return BitmapFactory.decodeFile(storedUrl); + } catch (JSONException e) { + e.printStackTrace(); + return null; + } } else { return null; } diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/lockscreen/LockScreenManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/lockscreen/LockScreenManager.java index 30ed1b575..f5b7c5520 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/lockscreen/LockScreenManager.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/lockscreen/LockScreenManager.java @@ -82,11 +82,14 @@ public class LockScreenManager extends BaseSubManager { private boolean mLockScreenHasBeenDismissed, lockscreenDismissReceiverRegistered, receivedFirstDDNotification; private String mLockscreenWarningMsg; private BroadcastReceiver mLockscreenDismissedReceiver; + private LockScreenDeviceIconManager mLockScreenDeviceIconManager; public LockScreenManager(LockScreenConfig lockScreenConfig, Context context, ISdl internalInterface){ super(internalInterface); this.context = new WeakReference<>(context); + this.mLockScreenDeviceIconManager = new LockScreenDeviceIconManager(context); + // set initial class variables hmiLevel = HMILevel.HMI_NONE; @@ -376,7 +379,12 @@ public class LockScreenManager extends BaseSubManager { @Override public void run(){ try{ - deviceLogo = AndroidTools.downloadImage(url); + if(mLockScreenDeviceIconManager.updateCachedImage(url)) { + deviceLogo = AndroidTools.downloadImage(url); + mLockScreenDeviceIconManager.saveFileToCache(deviceLogo, url); + } else { + deviceLogo = mLockScreenDeviceIconManager.getFileFromCache(url); + } Intent intent = new Intent(SDLLockScreenActivity.LOCKSCREEN_DEVICE_LOGO_DOWNLOADED); intent.putExtra(SDLLockScreenActivity.LOCKSCREEN_DEVICE_LOGO_EXTRA, deviceLogoEnabled); intent.putExtra(SDLLockScreenActivity.LOCKSCREEN_DEVICE_LOGO_BITMAP, deviceLogo); -- cgit v1.2.1