diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 526b4c2..a2d7c21 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -13,7 +13,6 @@
-
diff --git a/.idea/misc.xml b/.idea/misc.xml
index b2ae640..8705768 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -3,7 +3,13 @@
diff --git a/app/build.gradle b/app/build.gradle
index 70e6b9e..dbf2bb6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -44,4 +44,13 @@ dependencies {
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
+
+ //Retrofit
+ implementation 'com.squareup.retrofit2:retrofit:2.9.0'
+ implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
+ implementation 'com.squareup.retrofit2:adapter-rxjava2:2.9.0'
+
+ //firebase
+ implementation platform('com.google.firebase:firebase-bom:30.1.0')
+ implementation 'com.google.firebase:firebase-analytics-ktx'
}
\ No newline at end of file
diff --git a/app/google-services.json b/app/google-services.json
new file mode 100644
index 0000000..97eceb8
--- /dev/null
+++ b/app/google-services.json
@@ -0,0 +1,39 @@
+{
+ "project_info": {
+ "project_number": "479150024482",
+ "project_id": "mbtree-7a9b6",
+ "storage_bucket": "mbtree-7a9b6.appspot.com"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:479150024482:android:5913d300515a08e031a77b",
+ "android_client_info": {
+ "package_name": "com.umc.project.mbtree"
+ }
+ },
+ "oauth_client": [
+ {
+ "client_id": "479150024482-s1ef07pjscklju3cd5uvjci4j917ute9.apps.googleusercontent.com",
+ "client_type": 3
+ }
+ ],
+ "api_key": [
+ {
+ "current_key": "AIzaSyC1YTQIMNFcZ9LFJ4tHwPorEjimPIECCKk"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": [
+ {
+ "client_id": "479150024482-s1ef07pjscklju3cd5uvjci4j917ute9.apps.googleusercontent.com",
+ "client_type": 3
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 37e546c..40e764f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -2,6 +2,8 @@
+
+
+
@@ -18,6 +21,8 @@
+
\ No newline at end of file
diff --git a/app/src/main/java/com/umc/project/mbtree/ChatActivity.kt b/app/src/main/java/com/umc/project/mbtree/ChatActivity.kt
new file mode 100644
index 0000000..1ed747f
--- /dev/null
+++ b/app/src/main/java/com/umc/project/mbtree/ChatActivity.kt
@@ -0,0 +1,35 @@
+package com.umc.project.mbtree
+
+import android.os.Bundle
+import android.os.PersistableBundle
+import android.view.LayoutInflater
+import androidx.appcompat.app.AppCompatActivity
+import com.google.firebase.analytics.FirebaseAnalytics
+import com.google.firebase.analytics.ktx.analytics
+import com.google.firebase.analytics.ktx.logEvent
+import com.google.firebase.ktx.Firebase
+import com.umc.project.mbtree.databinding.ActivityChatBinding
+
+class ChatActivity: AppCompatActivity() {
+
+ lateinit var binding: ActivityChatBinding
+ private lateinit var firebaseAnalytics: FirebaseAnalytics
+
+ override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {
+ super.onCreate(savedInstanceState, persistentState)
+ binding = ActivityChatBinding.inflate(layoutInflater)
+
+ binding.ibSend.setOnClickListener{
+
+ }
+ //firebase객체 가져오기
+ firebaseAnalytics = Firebase.analytics
+ //이벤트 로깅
+ firebaseAnalytics.logEvent(FirebaseAnalytics.Event.SELECT_ITEM){
+ param(FirebaseAnalytics.Param.ITEM_ID, 1)
+ param(FirebaseAnalytics.Param.ITEM_NAME, "user1")
+ param(FirebaseAnalytics.Param.CONTENT_TYPE, "")
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/umc/project/mbtree/LetterActivity.kt b/app/src/main/java/com/umc/project/mbtree/LetterActivity.kt
new file mode 100644
index 0000000..cfdcb85
--- /dev/null
+++ b/app/src/main/java/com/umc/project/mbtree/LetterActivity.kt
@@ -0,0 +1,38 @@
+package com.umc.project.mbtree
+
+import android.app.Activity
+import android.content.Intent
+import android.os.Bundle
+import android.os.PersistableBundle
+import android.util.Log
+import android.view.Window
+import androidx.appcompat.app.AppCompatActivity
+import com.umc.project.mbtree.databinding.ActivityLetterBinding
+
+class LetterActivity: Activity() {
+
+ lateinit var binding: ActivityLetterBinding
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ binding = ActivityLetterBinding.inflate(layoutInflater)
+ requestWindowFeature(Window.FEATURE_NO_TITLE)
+ setContentView(binding.root)
+
+ Log.d("LetterAcitivity", "Letter넘어옴")
+ binding.btnOk.setOnClickListener{
+ val intent = Intent(baseContext, MainActivity::class.java)
+ intent.putExtra("content", binding.etPost.toString())
+ setResult(Activity.RESULT_OK, intent)
+ finish()
+ }
+
+ binding.btnCancel.setOnClickListener{
+ val intent = Intent(baseContext, MainActivity::class.java)
+ setResult(RESULT_CANCELED, intent)
+ finish()
+ }
+
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/umc/project/mbtree/LetterDialog.kt b/app/src/main/java/com/umc/project/mbtree/LetterDialog.kt
new file mode 100644
index 0000000..4dc67a1
--- /dev/null
+++ b/app/src/main/java/com/umc/project/mbtree/LetterDialog.kt
@@ -0,0 +1,23 @@
+package com.umc.project.mbtree
+
+import android.app.Dialog
+import android.content.Context
+import android.view.WindowManager
+
+class LetterDialog(context: Context) {
+ private val dialog = Dialog(context)
+
+ fun showDialog(){
+ dialog.setContentView(R.layout.activity_letter)
+ dialog.window!!.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT)
+ dialog.setCanceledOnTouchOutside(true)
+ dialog.setCancelable(true)
+ dialog.show()
+ }
+
+// private lateinit var onClickListener: ButtonClickListener
+//
+// fun setOnClickListener(listener: ButtonClickListener){
+// onClickListener = listener
+// }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/umc/project/mbtree/MainActivity.kt b/app/src/main/java/com/umc/project/mbtree/MainActivity.kt
index 1b7cb64..33e2f28 100644
--- a/app/src/main/java/com/umc/project/mbtree/MainActivity.kt
+++ b/app/src/main/java/com/umc/project/mbtree/MainActivity.kt
@@ -1,5 +1,8 @@
package com.umc.project.mbtree
+import android.app.Activity
+import android.app.Dialog
+import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
@@ -7,12 +10,41 @@ import android.view.MotionEvent
import android.view.View
import android.widget.ImageView
import android.widget.Toast
+import androidx.activity.result.ActivityResultLauncher
+import androidx.activity.result.contract.ActivityResultContracts
+import com.umc.project.mbtree.api.RetrofitInterface
+import com.umc.project.mbtree.api.getRetrofit
import com.umc.project.mbtree.databinding.ActivityMainBinding
+import com.umc.project.mbtree.dto.Post
+import retrofit2.Call
+import retrofit2.Response
class MainActivity : AppCompatActivity() {
- lateinit var binding: ActivityMainBinding
var TAG: String = "MainActivity"
+ lateinit var binding: ActivityMainBinding
+
+ private lateinit var getResult: ActivityResultLauncher
+ private var curX:Float = 0.0F
+ private var curY:Float = 0.0F
+ // PR연습
+
+ val resultLauncher =
+ registerForActivityResult(ActivityResultContracts.StartActivityForResult()){ result->
+ if(result.resultCode == Activity.RESULT_OK){
+ val data:Intent? = result.data
+ val content = data?.getStringExtra("content").toString()
+ Log.d(TAG, "적은 내용: " + content)
+
+ var fruit: ImageView = ImageView(this@MainActivity)
+ fruit.setImageResource(R.drawable.ic_letter)
+ fruit.maxWidth = 10
+ fruit.maxHeight = 10
+ fruit.x = curX
+ fruit.y = curY
+ binding.mainLayout.addView(fruit)
+ }
+ }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -20,10 +52,14 @@ class MainActivity : AppCompatActivity() {
setContentView(binding.root)
binding.ivMainTree.bringToFront()
+ Log.d("레트로핏 테스트", "레트로핏 연결")
+ getPosts()
+
+ //나무에 열매달기
binding.touchView.setOnTouchListener(object: View.OnTouchListener{
override fun onTouch(p0: View?, p1: MotionEvent?): Boolean {
- var curX: Float = p1!!.x
- var curY: Float = p1.y!!
+ curX = p1!!.x
+ curY = p1.y!!
when(p1.action){
//터치가 처음 눌렸을 때
@@ -36,17 +72,33 @@ class MainActivity : AppCompatActivity() {
Toast.makeText(applicationContext, "손 뗌", Toast.LENGTH_SHORT).show()
Log.d(TAG, "마지막 x좌표: " + curX)
Log.d(TAG, "마지막 y좌표" + curY)
- var fruit: ImageView = ImageView(this@MainActivity)
- fruit.setImageResource(R.drawable.ic_fruit)
- fruit.maxWidth = 20
- fruit.maxHeight = 20
- fruit.x = curX
- fruit.y = curY
- binding.mainLayout.addView(fruit)
+
+ val intent = Intent(application, LetterActivity::class.java)
+ resultLauncher.launch(intent)
}
}
return true
}
})
}
+
+ private fun getPosts(){
+ //test: 1번 유저 인덱스 요청
+ val service = getRetrofit().create(RetrofitInterface::class.java)
+// Log.d("레트로핏 테스트", service.get)
+ service.getPosts(1)
+ .enqueue(object: retrofit2.Callback>{
+ override fun onResponse(call: Call>, response: Response>) {
+ Log.d("레트로핏 테스트", "성공")
+ val pList: List = response.body()!!
+ Log.d("레트로핏 테스트", pList.toString())
+ }
+
+ override fun onFailure(call: Call>, t: Throwable) {
+ Log.d("레트로핏 테스트", "실패")
+ Log.d("레트로핏 테스트", t.message.toString())
+ }
+
+ })
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/umc/project/mbtree/api/NetworkModule.kt b/app/src/main/java/com/umc/project/mbtree/api/NetworkModule.kt
new file mode 100644
index 0000000..8633187
--- /dev/null
+++ b/app/src/main/java/com/umc/project/mbtree/api/NetworkModule.kt
@@ -0,0 +1,15 @@
+package com.umc.project.mbtree.api
+
+import retrofit2.Retrofit
+import retrofit2.converter.gson.GsonConverterFactory
+
+const val BASE_URL = "http://52.79.254.180:3306"
+
+fun getRetrofit(): Retrofit {
+ val retrofit = Retrofit.Builder()
+ .baseUrl(BASE_URL)
+ .addConverterFactory(GsonConverterFactory.create())
+ .build()
+
+ return retrofit
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/umc/project/mbtree/api/RetrofitInterface.kt b/app/src/main/java/com/umc/project/mbtree/api/RetrofitInterface.kt
new file mode 100644
index 0000000..bbcf7a5
--- /dev/null
+++ b/app/src/main/java/com/umc/project/mbtree/api/RetrofitInterface.kt
@@ -0,0 +1,14 @@
+package com.umc.project.mbtree.api
+
+import com.umc.project.mbtree.dto.Post
+import retrofit2.Call
+import retrofit2.http.*
+
+interface RetrofitInterface {
+ @POST("/posts")
+ fun createPost(post: Post)
+
+ @GET("/tree")
+ fun getPosts(@Query("useridx")useridx: Int?): Call>
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/umc/project/mbtree/dto/Chat.kt b/app/src/main/java/com/umc/project/mbtree/dto/Chat.kt
new file mode 100644
index 0000000..cb18041
--- /dev/null
+++ b/app/src/main/java/com/umc/project/mbtree/dto/Chat.kt
@@ -0,0 +1,7 @@
+package com.umc.project.mbtree.dto
+
+data class Chat(
+ val name: String,
+ val profileImg: String,
+ val msg: String
+)
diff --git a/app/src/main/java/com/umc/project/mbtree/dto/Post.kt b/app/src/main/java/com/umc/project/mbtree/dto/Post.kt
new file mode 100644
index 0000000..2938f6e
--- /dev/null
+++ b/app/src/main/java/com/umc/project/mbtree/dto/Post.kt
@@ -0,0 +1,12 @@
+package com.umc.project.mbtree.dto
+
+import com.google.gson.annotations.SerializedName
+
+data class Post(
+ @SerializedName("id") var id: Int,
+ @SerializedName("content") var content: String,
+ @SerializedName("xPos") var xPos: Float,
+ @SerializedName("yPos") var yPos: Float,
+ @SerializedName("writerId") var writerId: User,
+ @SerializedName("userId") var userId: User
+)
diff --git a/app/src/main/java/com/umc/project/mbtree/dto/User.kt b/app/src/main/java/com/umc/project/mbtree/dto/User.kt
new file mode 100644
index 0000000..703a361
--- /dev/null
+++ b/app/src/main/java/com/umc/project/mbtree/dto/User.kt
@@ -0,0 +1,10 @@
+package com.umc.project.mbtree.dto
+
+data class User(
+ var id: Int,
+ var email: String,
+ var location: String,
+ var myers: String,
+ var name: String,
+ var user_token: String
+)
diff --git a/app/src/main/res/drawable-v24/background.png b/app/src/main/res/drawable-v24/background.png
new file mode 100644
index 0000000..c756bb9
Binary files /dev/null and b/app/src/main/res/drawable-v24/background.png differ
diff --git a/app/src/main/res/drawable-v24/ic_letter.png b/app/src/main/res/drawable-v24/ic_letter.png
new file mode 100644
index 0000000..30d7002
Binary files /dev/null and b/app/src/main/res/drawable-v24/ic_letter.png differ
diff --git a/app/src/main/res/drawable-v24/ic_tree.png b/app/src/main/res/drawable-v24/ic_tree.png
new file mode 100644
index 0000000..03d23f9
Binary files /dev/null and b/app/src/main/res/drawable-v24/ic_tree.png differ
diff --git a/app/src/main/res/drawable/custom_chat_me.xml b/app/src/main/res/drawable/custom_chat_me.xml
new file mode 100644
index 0000000..4708110
--- /dev/null
+++ b/app/src/main/res/drawable/custom_chat_me.xml
@@ -0,0 +1,12 @@
+
+
+ -
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/dialog_round.xml b/app/src/main/res/drawable/dialog_round.xml
new file mode 100644
index 0000000..d45ae8f
--- /dev/null
+++ b/app/src/main/res/drawable/dialog_round.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_fruit.png b/app/src/main/res/drawable/ic_fruit.png
deleted file mode 100644
index 6cefbd3..0000000
Binary files a/app/src/main/res/drawable/ic_fruit.png and /dev/null differ
diff --git a/app/src/main/res/drawable/ic_tree.png b/app/src/main/res/drawable/ic_tree.png
deleted file mode 100644
index 8adde3e..0000000
Binary files a/app/src/main/res/drawable/ic_tree.png and /dev/null differ
diff --git a/app/src/main/res/layout/activity_chat.xml b/app/src/main/res/layout/activity_chat.xml
new file mode 100644
index 0000000..6310b9a
--- /dev/null
+++ b/app/src/main/res/layout/activity_chat.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_letter.xml b/app/src/main/res/layout/activity_letter.xml
new file mode 100644
index 0000000..b03b931
--- /dev/null
+++ b/app/src/main/res/layout/activity_letter.xml
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 413bd0c..e47413a 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -8,34 +8,38 @@
android:layout_height="match_parent"
tools:context=".MainActivity">
-
+
+
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/custom_dialog.xml b/app/src/main/res/layout/custom_dialog.xml
new file mode 100644
index 0000000..e977132
--- /dev/null
+++ b/app/src/main/res/layout/custom_dialog.xml
@@ -0,0 +1,7 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_my_chat.xml b/app/src/main/res/layout/item_my_chat.xml
new file mode 100644
index 0000000..e2ef1c7
--- /dev/null
+++ b/app/src/main/res/layout/item_my_chat.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index 146f649..4f3e2e7 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -1,6 +1,6 @@
-
+
+
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 84ed49d..e43d5bc 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,4 +1,13 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
+buildscript {
+ repositories {
+ google()
+ }
+ dependencies {
+ classpath 'com.google.gms:google-services:4.3.12'
+ }
+}
+
plugins {
id 'com.android.application' version '7.1.1' apply false
id 'com.android.library' version '7.1.1' apply false