From dbda1eaa3ad6049cd380fc8a48e68e5ccdb7f632 Mon Sep 17 00:00:00 2001 From: cagbal Date: Sat, 7 Jan 2017 02:48:55 +0200 Subject: [PATCH 1/2] Changed API endpoint, Fixes #11 --- .../mimics/MimicColorCaptureFragment.java | 8 +- .../utilities/VisionServiceRestClientNew.java | 117 ++++++++++++++++++ 2 files changed, 121 insertions(+), 4 deletions(-) create mode 100644 Mimicker/app/src/main/java/com/microsoft/mimickeralarm/utilities/VisionServiceRestClientNew.java diff --git a/Mimicker/app/src/main/java/com/microsoft/mimickeralarm/mimics/MimicColorCaptureFragment.java b/Mimicker/app/src/main/java/com/microsoft/mimickeralarm/mimics/MimicColorCaptureFragment.java index dd75965..ed86d38 100644 --- a/Mimicker/app/src/main/java/com/microsoft/mimickeralarm/mimics/MimicColorCaptureFragment.java +++ b/Mimicker/app/src/main/java/com/microsoft/mimickeralarm/mimics/MimicColorCaptureFragment.java @@ -50,7 +50,7 @@ import com.microsoft.mimickeralarm.utilities.Loggable; import com.microsoft.mimickeralarm.utilities.Logger; import com.microsoft.mimickeralarm.utilities.KeyUtilities; -import com.microsoft.projectoxford.vision.VisionServiceRestClient; +import com.microsoft.mimickeralarm.utilities.VisionServiceRestClientNew; import com.microsoft.projectoxford.vision.contract.AnalyzeResult; import java.io.ByteArrayInputStream; @@ -72,7 +72,7 @@ * */ public class MimicColorCaptureFragment extends MimicWithCameraFragment { - private VisionServiceRestClient mVisionServiceRestClient; + private VisionServiceRestClientNew mVisionServiceRestClient; private String mQuestionColorName; private float[] mQuestionColorRangeLower; private float[] mQuestionColorRangeUpper; @@ -89,7 +89,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa Resources resources = getResources(); String subscriptionKey = KeyUtilities.getToken(getActivity(), "vision"); - mVisionServiceRestClient = new VisionServiceRestClient(subscriptionKey); + mVisionServiceRestClient = new VisionServiceRestClientNew(subscriptionKey); String[] questions = resources.getStringArray(R.array.vision_color_questions); TextView instruction = (TextView) view.findViewById(R.id.instruction_text); @@ -196,4 +196,4 @@ private boolean isColorInRange(float[] lowerHsl, float[] upperHsl, float[] query return result; } -} \ No newline at end of file +} diff --git a/Mimicker/app/src/main/java/com/microsoft/mimickeralarm/utilities/VisionServiceRestClientNew.java b/Mimicker/app/src/main/java/com/microsoft/mimickeralarm/utilities/VisionServiceRestClientNew.java new file mode 100644 index 0000000..bfad6f1 --- /dev/null +++ b/Mimicker/app/src/main/java/com/microsoft/mimickeralarm/utilities/VisionServiceRestClientNew.java @@ -0,0 +1,117 @@ +package com.microsoft.mimickeralarm.utilities; + +import android.text.TextUtils; + +import com.google.gson.Gson; +import com.microsoft.projectoxford.vision.VisionServiceClient; +import com.microsoft.projectoxford.vision.contract.AnalyzeResult; +import com.microsoft.projectoxford.vision.contract.OCR; +import com.microsoft.projectoxford.vision.rest.VisionServiceException; +import com.microsoft.projectoxford.vision.rest.WebServiceRequest; + +import org.apache.commons.io.IOUtils; + +import java.io.IOException; +import java.io.InputStream; +import java.util.HashMap; + + +public class VisionServiceRestClientNew implements VisionServiceClient { + private static final String serviceHost = "https://api.projectoxford.ai/vision/v1.0"; + private WebServiceRequest restCall = null; + private Gson gson = new Gson(); + + public VisionServiceRestClientNew(String subscriptKey) { + this.restCall = new WebServiceRequest(subscriptKey); + } + + public AnalyzeResult analyzeImage(String url, String[] visualFeatures) throws VisionServiceException { + HashMap params = new HashMap(); + String features = TextUtils.join(",", visualFeatures); + params.put("visualFeatures", features); + String path = "https://api.projectoxford.ai/vision/v1.0/analyze"; + String uri = WebServiceRequest.getUrl(path, params); + params.clear(); + params.put("url", url); + String json = (String)this.restCall.request(uri, "POST", params, (String)null, false); + AnalyzeResult visualFeature = (AnalyzeResult)this.gson.fromJson(json, AnalyzeResult.class); + return visualFeature; + } + + public AnalyzeResult analyzeImage(InputStream stream, String[] visualFeatures) throws VisionServiceException, IOException { + HashMap params = new HashMap(); + String features = TextUtils.join(",", visualFeatures); + params.put("visualFeatures", features); + String path = "https://api.projectoxford.ai/vision/v1.0/analyze"; + String uri = WebServiceRequest.getUrl(path, params); + params.clear(); + byte[] data = IOUtils.toByteArray(stream); + params.put("data", data); + String json = (String)this.restCall.request(uri, "POST", params, "application/octet-stream", false); + AnalyzeResult visualFeature = (AnalyzeResult)this.gson.fromJson(json, AnalyzeResult.class); + return visualFeature; + } + + public OCR recognizeText(String url, String languageCode, boolean detectOrientation) throws VisionServiceException { + HashMap params = new HashMap(); + params.put("language", languageCode); + params.put("detectOrientation", Boolean.valueOf(detectOrientation)); + String path = "https://api.projectoxford.ai/vision/v1.0/ocr"; + String uri = WebServiceRequest.getUrl(path, params); + params.clear(); + params.put("url", url); + String json = (String)this.restCall.request(uri, "POST", params, (String)null, false); + OCR ocr = (OCR)this.gson.fromJson(json, OCR.class); + return ocr; + } + + public OCR recognizeText(InputStream stream, String languageCode, boolean detectOrientation) throws VisionServiceException, IOException { + HashMap params = new HashMap(); + params.put("language", languageCode); + params.put("detectOrientation", Boolean.valueOf(detectOrientation)); + String path = "https://api.projectoxford.ai/vision/v1.0/ocr"; + String uri = WebServiceRequest.getUrl(path, params); + byte[] data = IOUtils.toByteArray(stream); + params.put("data", data); + String json = (String)this.restCall.request(uri, "POST", params, "application/octet-stream", false); + OCR ocr = (OCR)this.gson.fromJson(json, OCR.class); + return ocr; + } + + public byte[] getThumbnail(int width, int height, boolean smartCropping, String url) throws VisionServiceException, IOException { + HashMap params = new HashMap(); + params.put("width", Integer.valueOf(width)); + params.put("height", Integer.valueOf(height)); + params.put("smartCropping", Boolean.valueOf(smartCropping)); + String path = "https://api.projectoxford.ai/vision/v1.0/thumbnails"; + String uri = WebServiceRequest.getUrl(path, params); + params.clear(); + params.put("url", url); + InputStream is = (InputStream)this.restCall.request(uri, "POST", params, (String)null, true); + byte[] image = IOUtils.toByteArray(is); + if(is != null) { + is.close(); + } + + return image; + } + + public byte[] getThumbnail(int width, int height, boolean smartCropping, InputStream stream) throws VisionServiceException, IOException { + HashMap params = new HashMap(); + params.put("width", Integer.valueOf(width)); + params.put("height", Integer.valueOf(height)); + params.put("smartCropping", Boolean.valueOf(smartCropping)); + String path = "https://api.projectoxford.ai/vision/v1.0/thumbnails"; + String uri = WebServiceRequest.getUrl(path, params); + params.clear(); + byte[] data = IOUtils.toByteArray(stream); + params.put("data", data); + InputStream is = (InputStream)this.restCall.request(uri, "POST", params, "application/octet-stream", true); + byte[] image = IOUtils.toByteArray(is); + if(is != null) { + is.close(); + } + + return image; + } +} From 1333868fe4568d902fde73a5a9ae9fc6c1a8c1d5 Mon Sep 17 00:00:00 2001 From: cagbal Date: Sat, 5 Aug 2017 01:05:49 +0300 Subject: [PATCH 2/2] Renamed from VisionServiceRestClientNew to NewVisionServiceRestClient --- .../mimickeralarm/mimics/MimicColorCaptureFragment.java | 6 +++--- ...ceRestClientNew.java => NewVisionServiceRestClient.java} | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) rename Mimicker/app/src/main/java/com/microsoft/mimickeralarm/utilities/{VisionServiceRestClientNew.java => NewVisionServiceRestClient.java} (97%) diff --git a/Mimicker/app/src/main/java/com/microsoft/mimickeralarm/mimics/MimicColorCaptureFragment.java b/Mimicker/app/src/main/java/com/microsoft/mimickeralarm/mimics/MimicColorCaptureFragment.java index ed86d38..34d2ed5 100644 --- a/Mimicker/app/src/main/java/com/microsoft/mimickeralarm/mimics/MimicColorCaptureFragment.java +++ b/Mimicker/app/src/main/java/com/microsoft/mimickeralarm/mimics/MimicColorCaptureFragment.java @@ -50,7 +50,7 @@ import com.microsoft.mimickeralarm.utilities.Loggable; import com.microsoft.mimickeralarm.utilities.Logger; import com.microsoft.mimickeralarm.utilities.KeyUtilities; -import com.microsoft.mimickeralarm.utilities.VisionServiceRestClientNew; +import com.microsoft.mimickeralarm.utilities.NewVisionServiceRestClient; import com.microsoft.projectoxford.vision.contract.AnalyzeResult; import java.io.ByteArrayInputStream; @@ -72,7 +72,7 @@ * */ public class MimicColorCaptureFragment extends MimicWithCameraFragment { - private VisionServiceRestClientNew mVisionServiceRestClient; + private NewVisionServiceRestClient mVisionServiceRestClient; private String mQuestionColorName; private float[] mQuestionColorRangeLower; private float[] mQuestionColorRangeUpper; @@ -89,7 +89,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa Resources resources = getResources(); String subscriptionKey = KeyUtilities.getToken(getActivity(), "vision"); - mVisionServiceRestClient = new VisionServiceRestClientNew(subscriptionKey); + mVisionServiceRestClient = new NewVisionServiceRestClient(subscriptionKey); String[] questions = resources.getStringArray(R.array.vision_color_questions); TextView instruction = (TextView) view.findViewById(R.id.instruction_text); diff --git a/Mimicker/app/src/main/java/com/microsoft/mimickeralarm/utilities/VisionServiceRestClientNew.java b/Mimicker/app/src/main/java/com/microsoft/mimickeralarm/utilities/NewVisionServiceRestClient.java similarity index 97% rename from Mimicker/app/src/main/java/com/microsoft/mimickeralarm/utilities/VisionServiceRestClientNew.java rename to Mimicker/app/src/main/java/com/microsoft/mimickeralarm/utilities/NewVisionServiceRestClient.java index bfad6f1..ee20f2f 100644 --- a/Mimicker/app/src/main/java/com/microsoft/mimickeralarm/utilities/VisionServiceRestClientNew.java +++ b/Mimicker/app/src/main/java/com/microsoft/mimickeralarm/utilities/NewVisionServiceRestClient.java @@ -16,12 +16,12 @@ import java.util.HashMap; -public class VisionServiceRestClientNew implements VisionServiceClient { +public class NewVisionServiceRestClient implements VisionServiceClient { private static final String serviceHost = "https://api.projectoxford.ai/vision/v1.0"; private WebServiceRequest restCall = null; private Gson gson = new Gson(); - public VisionServiceRestClientNew(String subscriptKey) { + public NewVisionServiceRestClient(String subscriptKey) { this.restCall = new WebServiceRequest(subscriptKey); }