Skip to content

Instantly share code, notes, and snippets.

@briansalvattore
Created November 4, 2016 05:57
Show Gist options
  • Save briansalvattore/8d2a4a238656fdf4dc9a2bb574a64246 to your computer and use it in GitHub Desktop.
Save briansalvattore/8d2a4a238656fdf4dc9a2bb574a64246 to your computer and use it in GitHub Desktop.
package com.horses.vision.demo;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.google.api.client.extensions.android.http.AndroidHttp;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.gson.GsonFactory;
import com.google.api.services.vision.v1.Vision;
import com.google.api.services.vision.v1.VisionRequestInitializer;
import com.google.api.services.vision.v1.model.AnnotateImageRequest;
import com.google.api.services.vision.v1.model.BatchAnnotateImagesRequest;
import com.google.api.services.vision.v1.model.BatchAnnotateImagesResponse;
import com.google.api.services.vision.v1.model.Feature;
import com.google.api.services.vision.v1.model.Image;
import com.google.firebase.database.FirebaseDatabase;
import java.io.ByteArrayOutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class MainActivity extends AppCompatActivity {
private final String CLOUD_VISION_API_KEY = "AIzaSyCZ--8lMqa7R8dHpDc-YlS6iOs0LJTQeSQ";
private final String TAG = MainActivity.this.getClass().getSimpleName();
private ImageView phrase;
private ImageView human;
private ImageView cat;
private TextView result;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
phrase = (ImageView) findViewById(R.id.phrase);
human = (ImageView) findViewById(R.id.human);
cat = (ImageView) findViewById(R.id.cat);
result = (TextView) findViewById(R.id.response);
phrase.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d(TAG, "Call phrase");
Bitmap bitmap = ((BitmapDrawable) phrase.getDrawable()).getBitmap();
callCloudVision(bitmap);
}
});
human.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d(TAG, "Call human");
Bitmap bitmap = ((BitmapDrawable) human.getDrawable()).getBitmap();
callCloudVision(bitmap);
}
});
cat.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d(TAG, "Call cat");
Bitmap bitmap = ((BitmapDrawable) cat.getDrawable()).getBitmap();
callCloudVision(bitmap);
}
});
}
private void callCloudVision(final Bitmap bitmap){
new AsyncTask<Object, Void, String>() {
@Override
protected String doInBackground(Object... params) {
try {
//Init protocol
HttpTransport httpTransport = AndroidHttp.newCompatibleTransport();
JsonFactory jsonFactory = GsonFactory.getDefaultInstance();
//Instantiate Vision
Vision.Builder builder = new Vision.Builder(httpTransport, jsonFactory, null);
builder.setVisionRequestInitializer(new VisionRequestInitializer(CLOUD_VISION_API_KEY));
Vision vision = builder.build();
//Create request
BatchAnnotateImagesRequest batchAnnotateImagesRequest = new BatchAnnotateImagesRequest();
batchAnnotateImagesRequest.setRequests(new ArrayList<AnnotateImageRequest>() {{
AnnotateImageRequest annotateImageRequest = new AnnotateImageRequest();
Image base64EncodedImage = new Image();
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 90, byteArrayOutputStream);
byte[] imageBytes = byteArrayOutputStream.toByteArray();
base64EncodedImage.encodeContent(imageBytes);
annotateImageRequest.setImage(base64EncodedImage);
annotateImageRequest.setFeatures(new ArrayList<Feature>() {{
Feature labelDetection = new Feature();
//labelDetection.setType("LABEL_DETECTION");
labelDetection.setType("TEXT_DETECTION|");
labelDetection.setMaxResults(10);
add(labelDetection);
}});
add(annotateImageRequest);
}});
//Add properties
Vision.Images.Annotate annotateRequest = vision.images().annotate(batchAnnotateImagesRequest);
annotateRequest.setDisableGZipContent(true);
BatchAnnotateImagesResponse response = annotateRequest.execute();
return response.toString();
}
catch (Exception e) {
Log.e(TAG, "failed to make API request because " + e.toString());
}
return null;
}
@Override
protected void onPostExecute(String response) {
super.onPostExecute(response);
Log.d(TAG, response);
result.setText(response);
FirebaseDatabase fire = FirebaseDatabase.getInstance();
fire.getReference().push().setValue(response);
}
}.execute();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment