diff --git a/app/src/main/java/com/pcandriod/kusitms_hackathon_c/presentation/ui/main/MainActivity.kt b/app/src/main/java/com/pcandriod/kusitms_hackathon_c/presentation/ui/main/MainActivity.kt index 5dfd4f3..979fa9f 100644 --- a/app/src/main/java/com/pcandriod/kusitms_hackathon_c/presentation/ui/main/MainActivity.kt +++ b/app/src/main/java/com/pcandriod/kusitms_hackathon_c/presentation/ui/main/MainActivity.kt @@ -1,13 +1,30 @@ package com.pcandriod.kusitms_hackathon_c.presentation.ui.main +import android.content.Context +import android.os.Build import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import android.util.Log +import android.view.inputmethod.InputMethodManager +import com.pcandriod.kusitms_hackathon_c.BuildConfig import com.pcandriod.kusitms_hackathon_c.R +import com.pcandriod.kusitms_hackathon_c.data.data.ResultSearchKeyword +import com.pcandriod.kusitms_hackathon_c.data.remote.service.KakaoAPI import com.pcandriod.kusitms_hackathon_c.databinding.ActivityMainBinding +import retrofit2.Call +import retrofit2.Callback +import retrofit2.Response +import retrofit2.Retrofit +import retrofit2.converter.gson.GsonConverterFactory class MainActivity : AppCompatActivity() { private lateinit var binding: ActivityMainBinding + companion object { + const val BASE_URL = "https://dapi.kakao.com/" + const val API_KEY = "KakaoAK ${BuildConfig.KAKAO_SEARCH_KEY}" // REST API 키 + } + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // setContentView(R.layout.activity_main) @@ -16,5 +33,11 @@ class MainActivity : AppCompatActivity() { val view = binding.root setContentView(view) } + + // 키보드 내리는 메서드 + fun hideKeyboard() { + val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager + imm.hideSoftInputFromWindow(currentFocus?.windowToken, 0) + } } diff --git a/app/src/main/java/com/pcandriod/kusitms_hackathon_c/presentation/ui/main/map/MapFragment.kt b/app/src/main/java/com/pcandriod/kusitms_hackathon_c/presentation/ui/main/map/MapFragment.kt index 104acb9..7254390 100644 --- a/app/src/main/java/com/pcandriod/kusitms_hackathon_c/presentation/ui/main/map/MapFragment.kt +++ b/app/src/main/java/com/pcandriod/kusitms_hackathon_c/presentation/ui/main/map/MapFragment.kt @@ -2,10 +2,12 @@ package com.pcandriod.kusitms_hackathon_c.presentation.ui.main.map import android.os.Bundle import android.os.SystemClock +import android.util.Log import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.SearchView import com.naver.maps.geometry.LatLng import com.naver.maps.map.CameraAnimation import com.naver.maps.map.CameraUpdate @@ -15,8 +17,15 @@ import com.naver.maps.map.NaverMapSdk import com.naver.maps.map.OnMapReadyCallback import com.naver.maps.map.util.FusedLocationSource import com.pcandriod.kusitms_hackathon_c.BuildConfig +import com.pcandriod.kusitms_hackathon_c.data.data.ResultSearchKeyword +import com.pcandriod.kusitms_hackathon_c.data.remote.service.KakaoAPI import com.pcandriod.kusitms_hackathon_c.databinding.FragmentMapBinding import com.pcandriod.kusitms_hackathon_c.presentation.ui.main.MainActivity +import retrofit2.Call +import retrofit2.Callback +import retrofit2.Response +import retrofit2.Retrofit +import retrofit2.converter.gson.GsonConverterFactory class MapFragment : Fragment(), OnMapReadyCallback { @@ -48,6 +57,23 @@ class MapFragment : Fragment(), OnMapReadyCallback { fragmentMapBinding.run { + svPlace.setOnQueryTextListener(object : SearchView.OnQueryTextListener { + override fun onQueryTextSubmit(query: String?): Boolean { + + // 검색 버튼 누를 때 호출 + searchKeyword(query.toString()) + + mainActivity.hideKeyboard() + return true + } + + override fun onQueryTextChange(newText: String?): Boolean { + + // 검색창에서 글자가 변경이 일어날 때마다 호출 + + return true + } + }) } return fragmentMapBinding.root @@ -102,7 +128,7 @@ class MapFragment : Fragment(), OnMapReadyCallback { naverMap.isIndoorEnabled = true // 초기 위치 설정 - val cameraUpdate = CameraUpdate.scrollTo((LatLng(37.631651, 127.077487))).animate( + val cameraUpdate = CameraUpdate.scrollTo((LatLng(37.565669, 127.019452))).animate( CameraAnimation.Easing ) naverMap.moveCamera(cameraUpdate) @@ -121,4 +147,32 @@ class MapFragment : Fragment(), OnMapReadyCallback { // naverMap.locationSource = locationSource } + + // 키워드 검색 함수 + private fun searchKeyword(keyword: String) { + val retrofit = Retrofit.Builder() // Retrofit 구성 + .baseUrl(MainActivity.BASE_URL) + .addConverterFactory(GsonConverterFactory.create()) + .build() + val api = retrofit.create(KakaoAPI::class.java) // 통신 인터페이스를 객체로 생성 + val call = api.getSearchKeyword(MainActivity.API_KEY, keyword) // 검색 조건 입력 + + // API 서버에 요청 + call.enqueue(object: Callback { + override fun onResponse( + call: Call, + response: Response + ) { + // 통신 성공 (검색 결과는 response.body()에 담겨있음) + Log.d("큐커톤", "Raw: ${response.raw()}") + Log.d("큐커톤", "Body: ${response.body()}") + Log.d("큐커톤", "first Body: ${ response.body()!!.documents[0].place_name}") + } + + override fun onFailure(call: Call, t: Throwable) { + // 통신 실패 + Log.w("큐커톤", "통신 실패: ${t.message}") + } + }) + } } \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_map.xml b/app/src/main/res/layout/fragment_map.xml index 17bee33..d790da4 100644 --- a/app/src/main/res/layout/fragment_map.xml +++ b/app/src/main/res/layout/fragment_map.xml @@ -6,6 +6,14 @@ android:orientation="vertical" tools:context=".presentation.ui.main.map.MapFragment"> + +