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..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.projectoxford.vision.VisionServiceRestClient; +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 VisionServiceRestClient 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 VisionServiceRestClient(subscriptionKey); + mVisionServiceRestClient = new NewVisionServiceRestClient(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/NewVisionServiceRestClient.java b/Mimicker/app/src/main/java/com/microsoft/mimickeralarm/utilities/NewVisionServiceRestClient.java new file mode 100644 index 0000000..ee20f2f --- /dev/null +++ b/Mimicker/app/src/main/java/com/microsoft/mimickeralarm/utilities/NewVisionServiceRestClient.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 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 NewVisionServiceRestClient(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; + } +}