diff --git a/app/build.gradle b/app/build.gradle
index af39e97..f67748b 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -23,18 +23,31 @@ android {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
- buildTypes.each{
- it.buildConfigField('String','API_KEY','"[ApiKey]"')
- }
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
+
+ packagingOptions {
+ exclude 'META-INF/DEPENDENCIES'
+ exclude 'META-INF/LICENSE'
+ exclude 'META-INF/LICENSE.txt'
+ exclude 'META-INF/license.txt'
+ exclude 'META-INF/NOTICE'
+ exclude 'META-INF/NOTICE.txt'
+ exclude 'META-INF/INDEX.LIST'
+ exclude 'META-INF/notice.txt'
+ exclude 'META-INF/ASL2.0'
+ }
buildFeatures {
viewBinding true
}
+
+ aaptOptions {
+ noCompress "json"
+ }
}
dependencies {
@@ -59,4 +72,11 @@ dependencies {
testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
+
+ implementation platform('com.google.cloud:libraries-bom:20.3.0')
+ implementation 'com.google.cloud:google-cloud-vision'
+ implementation 'io.grpc:grpc-netty-shaded:1.24.0'
+ implementation 'io.grpc:grpc-okhttp:1.24.0'
+
+
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e2d1c4f..3a2aeca 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -13,10 +13,8 @@
android:supportsRtl="true"
android:theme="@style/Theme.RIDProject">
-
-
diff --git a/app/src/main/assets/jsons/test.json b/app/src/main/assets/jsons/test.json
new file mode 100644
index 0000000..402407c
--- /dev/null
+++ b/app/src/main/assets/jsons/test.json
@@ -0,0 +1 @@
+// rid-project-cb50d-5fdfabd30d79.jsoon 파일 내용 복붙하면 됨
\ No newline at end of file
diff --git a/app/src/main/java/com/example/rid_project/repository/DetectTextGcs.java b/app/src/main/java/com/example/rid_project/repository/DetectTextGcs.java
new file mode 100644
index 0000000..c6f40dc
--- /dev/null
+++ b/app/src/main/java/com/example/rid_project/repository/DetectTextGcs.java
@@ -0,0 +1,73 @@
+package com.example.rid_project.repository;
+
+import android.util.Log;
+
+import com.google.api.gax.core.FixedCredentialsProvider;
+import com.google.cloud.vision.v1.AnnotateImageRequest;
+import com.google.cloud.vision.v1.AnnotateImageResponse;
+import com.google.cloud.vision.v1.BatchAnnotateImagesResponse;
+import com.google.cloud.vision.v1.EntityAnnotation;
+import com.google.cloud.vision.v1.Feature;
+import com.google.cloud.vision.v1.Image;
+import com.google.cloud.vision.v1.ImageAnnotatorClient;
+import com.google.cloud.vision.v1.ImageAnnotatorSettings;
+import com.google.cloud.vision.v1.ImageSource;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+public class DetectTextGcs {
+
+ // Detects text in the specified remote image on Google Cloud Storage.
+ public static void detectTextGcs(FixedCredentialsProvider f) throws IOException {
+
+ List requests = new ArrayList<>();
+
+ String gcsPath = "gs://rid_bucket/a.jpg";
+
+
+ ImageSource imgSource = ImageSource.newBuilder().setGcsImageUri(gcsPath).build();
+ Image img = Image.newBuilder().setSource(imgSource).build();
+
+ Feature feat = Feature.newBuilder().setType(Feature.Type.TEXT_DETECTION).build();
+
+ AnnotateImageRequest request =
+ AnnotateImageRequest.newBuilder().addFeatures(feat).setImage(img).build();
+ requests.add(request);
+
+ Log.e("test", "2");
+
+
+ ImageAnnotatorSettings imageAnnotatorSettings = null;
+ ImageAnnotatorClient client = null;
+
+ try {
+
+ imageAnnotatorSettings = ImageAnnotatorSettings.newBuilder()
+ .setCredentialsProvider(f).build();
+ client = ImageAnnotatorClient.create(imageAnnotatorSettings);
+
+ BatchAnnotateImagesResponse response = client.batchAnnotateImages(requests);
+ List responses = response.getResponsesList();
+
+ Log.e("test", "1");
+ for (AnnotateImageResponse res : responses) {
+ if (res.hasError()) {
+ System.out.format("Error: %s%n", res.getError().getMessage());
+ return ;
+ }
+
+ // For full list of available annotations, see http://g.co/cloud/vision/docs
+ for (EntityAnnotation annotation : res.getTextAnnotationsList()) {
+ System.out.format("Text: %s%n", annotation.getDescription());
+ System.out.format("Position : %s%n", annotation.getBoundingPoly());
+ }
+ }
+ }catch (IOException e){
+ e.printStackTrace();
+ }
+
+ }
+
+}
diff --git a/app/src/main/java/com/example/rid_project/ui/activity/MainActivity.java b/app/src/main/java/com/example/rid_project/ui/activity/MainActivity.java
index d0c1685..bd6ae0f 100644
--- a/app/src/main/java/com/example/rid_project/ui/activity/MainActivity.java
+++ b/app/src/main/java/com/example/rid_project/ui/activity/MainActivity.java
@@ -1,7 +1,10 @@
package com.example.rid_project.ui.activity;
import android.content.Intent;
+import android.content.res.AssetFileDescriptor;
+import android.content.res.AssetManager;
import android.os.Bundle;
+import android.util.Log;
import android.widget.FrameLayout;
import android.widget.TextView;
@@ -9,10 +12,18 @@
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
+import com.example.rid_project.repository.DetectTextGcs;
import com.example.rid_project.ui.fragment.BottomNavigationFragment;
import com.example.rid_project.ui.fragment.MainFragment;
import com.example.rid_project.R;
import com.example.rid_project.databinding.ActivityMainBinding;
+import com.google.api.gax.core.FixedCredentialsProvider;
+import com.google.auth.oauth2.GoogleCredentials;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
public class MainActivity extends AppCompatActivity {
private FragmentManager fragmentManager; // 프래그먼트 매니저
@@ -24,6 +35,7 @@ public class MainActivity extends AppCompatActivity {
private FrameLayout fragmentView;
private FragmentTransaction transaction;
private TextView textViewMain;
+ private DetectTextGcs ex;
@Override
@@ -46,5 +58,39 @@ protected void onCreate(Bundle savedInstanceState) {
//textViewMain = fragment_view.findViewById(R.id.textView_main_topBar); // 책장 유저이름 칸
// textViewMain.setText(userName + "의 책장");
+ Log.e("MainActivity","성공");
+ // System.out.format("Position : %s%n", );
+
+ try {
+ launch();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ private void launch() throws IOException {
+ AssetManager am = getAssets();
+ FileInputStream credentialsStream = null;
+
+ try {
+ AssetFileDescriptor fileDescriptor = am.openFd("jsons/test.json");
+ credentialsStream = fileDescriptor.createInputStream();
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ GoogleCredentials credentials = null;
+ try {
+ credentials = GoogleCredentials.fromStream(credentialsStream);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ FixedCredentialsProvider credentialsProvider = FixedCredentialsProvider.create(credentials);
+
+ ex.detectTextGcs(credentialsProvider);
+
}
+
}
diff --git a/app/src/main/java/com/example/rid_project/ui/fragment/ReadTextFragment.java b/app/src/main/java/com/example/rid_project/ui/fragment/ReadTextFragment.java
index e549ff4..40848ee 100644
--- a/app/src/main/java/com/example/rid_project/ui/fragment/ReadTextFragment.java
+++ b/app/src/main/java/com/example/rid_project/ui/fragment/ReadTextFragment.java
@@ -7,19 +7,24 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
-import com.example.rid_project.R;
+import com.example.rid_project.databinding.FragmentReadTextBinding;
public class ReadTextFragment extends Fragment {
+
+ private FragmentReadTextBinding binding;
+
+
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+ binding = FragmentReadTextBinding.inflate(inflater, container, false);
+
+
- View view = inflater.inflate(R.layout.fragment_read_text, container, false); //container <-부모 사이즈를 주고 , false=아직 붙이지 않는다.
- return view;
+ return binding.getRoot();
}
}
diff --git a/app/src/main/res/layout/fragment_read_text.xml b/app/src/main/res/layout/fragment_read_text.xml
index 21e87cd..e6bee01 100644
--- a/app/src/main/res/layout/fragment_read_text.xml
+++ b/app/src/main/res/layout/fragment_read_text.xml
@@ -33,7 +33,7 @@
app:layout_constraintStart_toStartOf="parent" />