diff options
author | Joey Grover <joeygrover@gmail.com> | 2019-02-26 13:54:52 -0500 |
---|---|---|
committer | Joey Grover <joeygrover@gmail.com> | 2019-02-26 13:54:52 -0500 |
commit | 3a0813742f5941c2952392860e85907b69ccdb83 (patch) | |
tree | b9404fa76bd57b93fcaf9e05a16e77ac9c84fb39 | |
parent | 756b645d3c3d84d7b0b778ca30268069699d3e64 (diff) | |
download | sdl_android-3a0813742f5941c2952392860e85907b69ccdb83.tar.gz |
Add icon url request type for system request
Needs optimization
3 files changed, 48 insertions, 0 deletions
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java index 5b1d4ac64..aadd9ab22 100644 --- a/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java +++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java @@ -3635,6 +3635,27 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase> msg.getUrl() != null){
lockScreenIconRequest = msg;
}
+ if(msg.getRequestType() == RequestType.ICON_URL){
+ //Download file and send RPC request
+ Thread handleOffBoardTransmissionThread = new Thread(){
+ @Override
+ public void run() {
+ byte[] file = HttpUtils.downloadFile(msg.getUrl());
+ if(file !=null ){
+ SystemRequest systemRequest = new SystemRequest();
+ systemRequest.setFileName(msg.getUrl());
+ systemRequest.setBulkData(file);
+ systemRequest.setRequestType(RequestType.ICON_URL);
+ try {
+ sendRPCRequestPrivate(systemRequest);
+ } catch (SdlException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ };
+ handleOffBoardTransmissionThread.start();
+ }
msg.format(rpcSpecVersion, true);
if (_callbackToUIThread) {
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/RequestType.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/RequestType.java index 75707802e..e6fbab6df 100644 --- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/RequestType.java +++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/RequestType.java @@ -72,6 +72,10 @@ public enum RequestType { * @since SmartDeviceLink 5.0
*/
OEM_SPECIFIC,
+ /**
+ * @since SmartDeviceLink 5.1
+ */
+ ICON_URL,
;
/**
* Convert String to RequestType
diff --git a/sdl_android/src/main/java/com/smartdevicelink/util/HttpUtils.java b/sdl_android/src/main/java/com/smartdevicelink/util/HttpUtils.java index d0752e008..db7be4ac8 100644 --- a/sdl_android/src/main/java/com/smartdevicelink/util/HttpUtils.java +++ b/sdl_android/src/main/java/com/smartdevicelink/util/HttpUtils.java @@ -1,9 +1,12 @@ package com.smartdevicelink.util; import java.io.BufferedInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.io.InputStream; import java.net.URL; import java.net.URLConnection; +import java.nio.ByteBuffer; import android.graphics.Bitmap; import android.graphics.BitmapFactory; @@ -19,4 +22,24 @@ public class HttpUtils{ return result; } + public static byte[] downloadFile(String urlStr){ + try { + URL url = new URL(urlStr); + URLConnection connection = url.openConnection(); + InputStream inputStream = connection.getInputStream(); + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + + int nRead; + byte[] data = new byte[4000]; + + while ((nRead = inputStream.read(data, 0, data.length)) != -1) { + buffer.write(data, 0, nRead); + } + return buffer.toByteArray(); + }catch (Exception e){ + DebugTool.logError("Unable to download file - " + urlStr, e); + return null; + } + } + } |