From e5f35c6ca4b75ef6ab9d63f0e682c3bdc1afae8d Mon Sep 17 00:00:00 2001 From: it232115 Date: Fri, 14 Jun 2024 11:12:43 +0900 Subject: [PATCH] =?UTF-8?q?=E3=83=BBFirebase=E3=81=8B=E3=82=89=E5=8F=97?= =?UTF-8?q?=E3=81=91=E5=8F=96=E3=81=A3=E3=81=9F=E4=BD=8F=E6=89=80=E3=81=AE?= =?UTF-8?q?=E7=B7=AF=E5=BA=A6=E7=B5=8C=E5=BA=A6=E5=A4=89=E6=8F=9B(?= =?UTF-8?q?=E6=9C=AA=E9=81=94)(=E3=82=A8=E3=83=A9=E3=83=BC=E3=81=AF?= =?UTF-8?q?=E3=81=A7=E3=81=AA=E3=81=84)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 2 +- app/src/main/AndroidManifest.xml | 10 ++-- .../com/example/oplogy/AddressConverter.java | 27 +++++++++ .../example/oplogy/FirestoreReception.java | 26 +-------- .../java/com/example/oplogy/GeoCoding.java | 58 +++++++++++++++++++ .../java/com/example/oplogy/MainActivity.java | 9 ++- .../com/example/oplogy/SetupActivity.java | 4 +- build.gradle | 3 +- 8 files changed, 102 insertions(+), 37 deletions(-) create mode 100644 app/src/main/java/com/example/oplogy/AddressConverter.java create mode 100644 app/src/main/java/com/example/oplogy/GeoCoding.java diff --git a/app/build.gradle b/app/build.gradle index 8f90306..c6040b1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -36,7 +36,7 @@ android { } dependencies { - + implementation 'com.google.maps:google-maps-services:0.15.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'com.google.android.material:material:1.5.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e938999..f968f7b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,7 +2,7 @@ - + 0) { +// // 位置情報(緯度と経度)を返します +// return results[0].geometry.location; +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// // 結果が存在しない場合やエラーが発生した場合は、nullを返します +// return null; +// } +//} \ No newline at end of file diff --git a/app/src/main/java/com/example/oplogy/FirestoreReception.java b/app/src/main/java/com/example/oplogy/FirestoreReception.java index 9f50d67..942409a 100644 --- a/app/src/main/java/com/example/oplogy/FirestoreReception.java +++ b/app/src/main/java/com/example/oplogy/FirestoreReception.java @@ -4,13 +4,11 @@ import android.util.Log; import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.Task; -import com.google.firebase.Timestamp; import com.google.firebase.firestore.CollectionReference; import com.google.firebase.firestore.FirebaseFirestore; import com.google.firebase.firestore.QueryDocumentSnapshot; import com.google.firebase.firestore.QuerySnapshot; -import java.util.List; import java.util.Map; public class FirestoreReception { @@ -35,27 +33,9 @@ public class FirestoreReception { for (QueryDocumentSnapshot document : task.getResult()) { Map data = document.getData(); - // デバッグ用のログ出力 - Log.d("FirestoreReception", "Document ID: " + document.getId()); - Log.d("FirestoreReception", "Data: " + data); - - // ここでデータを取得し、必要に応じて処理を行います -// String parentName = (String) data.get("patronName"); -// String childName = (String) data.get("childName"); -// String studentId = (String) data.get("studentNumber"); -//// Timestamp address = (Timestamp) data.get("address"); -// List firstDay = (List) data.get("firstDay"); -// List secondDay = (List) data.get("secondDay"); -// List thirdDay = (List) data.get("thirdDay"); -// -// // 取得したデータを使って必要な処理を行う -// Log.d("FirestoreReception", "ParentName: " + parentName); -// Log.d("FirestoreReception", "ChildName: " + childName); -// Log.d("FirestoreReception", "StudentNumber: " + studentId); -//// Log.d("FirestoreReception", "Address: " + address.toDate()); -// Log.d("FirestoreReception", "First Day: " + firstDay); -// Log.d("FirestoreReception", "Second Day: " + secondDay); -// Log.d("FirestoreReception", "Third Day: " + thirdDay); + // CreateRootクラスのインスタンスを作成し、dataを引数として渡す + GeoCoding geoCoding = new GeoCoding(); + geoCoding.processData(data); } } else { Log.w("FirestoreReception", "Error getting documents.", task.getException()); diff --git a/app/src/main/java/com/example/oplogy/GeoCoding.java b/app/src/main/java/com/example/oplogy/GeoCoding.java new file mode 100644 index 0000000..7e48c01 --- /dev/null +++ b/app/src/main/java/com/example/oplogy/GeoCoding.java @@ -0,0 +1,58 @@ +package com.example.oplogy; + +import android.util.Log; + +import com.google.android.gms.maps.model.LatLng; +import com.google.firebase.Timestamp; +import com.google.maps.GeoApiContext; +import com.google.maps.GeocodingApi; +import com.google.maps.model.GeocodingResult; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +public class GeoCoding { + private GeoApiContext geoApiContext; + public void processData(Map data) { + + try { + // Google Cloud Platformで作成したAPIキーを設定します + geoApiContext = new GeoApiContext.Builder() + .apiKey("AIzaSyBQ1Ak-I2NL5TP4K59ZI0VgzKk6HNZuusw") + .build(); + //家庭訪問先の住所 + List address = (List) data.get("address"); + //家庭訪問の第一希望日(配列0が希望時間帯のはじめ、配列1がおわり) + List firstDay = (List) data.get("firstDay"); + //出席番号 + Long studentNumber = (Long) data.get("studentNumber"); + // 住所を緯度経度に変換 + LatLng latLng = geocodeAddress(address.get(0)); + + Log.d("FirestoreReception", "address: " + address.get(0)); + Log.d("FirestoreReception", "firstDay: " + firstDay.get(0)); + Log.d("FirestoreReception", "firstDay: " + firstDay.get(1)); + Log.d("FirestoreReception", "studentNumber: " + studentNumber); + + // 緯度経度をLogに出力 + Log.d("緯度経度", "latLng: "+latLng ); + } catch (NullPointerException e) { + Log.e("NullPointerException", "getの中身がnull" + e); + } + } + private LatLng geocodeAddress(String address) { + try { + Log.d("Geocodingtry", "tryに入った"); + GeocodingResult[] results = GeocodingApi.geocode(geoApiContext, address).await(); + Log.d("GeocodingResult", "Results: " + Arrays.toString(results)); + if (results != null && results.length > 0) { + return new LatLng(results[0].geometry.location.lat, results[0].geometry.location.lng); + } + } catch (Exception e) { + Log.e("GeocodingException", "Error geocoding address: " + address, e); + } + return null; + } + +} diff --git a/app/src/main/java/com/example/oplogy/MainActivity.java b/app/src/main/java/com/example/oplogy/MainActivity.java index d7dc725..1910263 100644 --- a/app/src/main/java/com/example/oplogy/MainActivity.java +++ b/app/src/main/java/com/example/oplogy/MainActivity.java @@ -1,18 +1,17 @@ package com.example.oplogy; -import androidx.appcompat.app.AlertDialog; -import androidx.appcompat.app.AppCompatActivity; - import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; -import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; +import androidx.appcompat.app.AlertDialog; +import androidx.appcompat.app.AppCompatActivity; + import com.google.firebase.firestore.FirebaseFirestore; public class MainActivity extends AppCompatActivity implements View.OnClickListener{ @@ -87,7 +86,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe // セットアップのクリック処理 if(view == setUp){ imageSetup.setImageResource(R.drawable.ischecked_uuid); - Intent toSetup = new Intent(MainActivity.this,SetupActivity.class); + Intent toSetup = new Intent(MainActivity.this,SetUpActivity.class); startActivity(toSetup); } diff --git a/app/src/main/java/com/example/oplogy/SetupActivity.java b/app/src/main/java/com/example/oplogy/SetupActivity.java index 13a4902..f775443 100644 --- a/app/src/main/java/com/example/oplogy/SetupActivity.java +++ b/app/src/main/java/com/example/oplogy/SetupActivity.java @@ -4,11 +4,11 @@ import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; -public class SetupActivity extends AppCompatActivity { +public class SetUpActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.setup); + setContentView(R.layout.activity_set_up); } } \ No newline at end of file diff --git a/build.gradle b/build.gradle index d1342f7..e8b1579 100644 --- a/build.gradle +++ b/build.gradle @@ -1,10 +1,11 @@ buildscript { dependencies { classpath 'com.google.gms:google-services:4.3.14' + } }// Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { id 'com.android.application' version '8.0.2' apply false id 'com.android.library' version '8.0.2' apply false id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin' version '2.0.1' apply false -} \ No newline at end of file +}