기본 콘텐츠로 건너뛰기

11월, 2021의 게시물 표시

안드로이드 앱 만들기 : 구글맵 활용 하기, 제주 맛집 리스트 (2)

원본출처: 티스토리 바로가기 앱을 만들면서 지도가 필요한 경우 카카오맵도 해 봤고, 구글맵도 구현해 보기는 했다. 카카오맵을 사용하면 나름 카카오의 지원(?)을 받아 이런 저런 것들을 해 볼 수 있다.     우선 좋은 점은 카카오가 지원하는 다른 서비스들과 연동이 수월하다. 하다 못해 카카오 내비를 호출해서 바로 길찾기를 지원받을 수 있으니... 다만, onestore 에 앱을 등록하는 것이 번거롭다(?) 여러번 시도를 했는데, 어떤 방법으로 앱을 검증 하는 지는 모르겠으나, 번번히 실패 ... 그래서 구글맵으로 수정앱을 등록해보니, 한번에 패스~   그래서 일단 구글맵에 지도를 표현해 보도록 하겠다.  일단 기본적으로 구현이 수월한 방법... android studio 에서 new - acitivity - gallery 를 선택하면 ...   액티비티 선택 여러 종류의 activity 가 있는데, 그 중에서 지도가 들어있는 maps 을 선택하면 기본적인 설정은 android studio 가 해 준다.   그 다음은 manifest 파일에 meta 정보를 설정하는 것이 나온다. meta에 google-api-key 을 설정해 주어야 하는데,  <application android:allowBackup="true" android:icon="@mipmap/ic_info_logo" android:label="@string/app_name" android:roundIcon="@mipmap/ic_info_logo_round" android:supportsRtl="true" android:theme="@style/Theme.OpdGang1127"> <meta-data ...

안드로이드 앱 만들기 : 스피너 ? spinner ? 콤보 ? 따라하기

원본출처: 티스토리 바로가기 화면을 만들다 보면 간혹 뭔가를 선택해야 하는 경우가 발생하게 된다. 그럴 때 콤보라고 쓰고 스피너라고 읽는 layout item에 대한 이야기를 잠시해 두고 넣어가고자 한다.  이유는 간혹 작업을 하면서 사용하게 되는데, 나도 인간인지라 깜빡깜빡해서 사용할 때마다 찾아봐야 한다는 것이다. ㅋ~   일단 화면에 spinner 을 넣는다  <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:weightSum="30" tools:context=".MainActivity"> <Spinner android:id="@+id/spAclass" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="2" /> <EditText android:id="@+id...

안드로이드 앱 만들기 : 제주 맛집 리스트 (1)

원본출처: 티스토리 바로가기 재외 제주인 : 제주도를 떠나 사는 제주사람. 나도 그중에 한 명... 떠난 지 하도 오래되어 이제는 제주도를 가도 내가 모르는 곳에 온 것 같고, 그래서 주변에 어딜 가보고 싶어도 잘 알 수 없는 현실이 되었다.  그래서 찾아보기로 했다. 주변에 가고 싶은 곳이 어디에 있는 가?    현실은 제주도가 아닌 이곳에서 어떻게 그걸 다 찾을 것인가? ㅋㅋㅋ 그래도 다행(?)인 것은 인터넷을 서핑하다 보면 다양한 사람들이 방문한 다양한 방문 기록들이 차고 넘쳐난다는 것이다.    https://billcoreapython.tistory.com/40   파이썬으로 제주의 맛집을 찾아서 (3) 오늘은 정리되고 있는 자료를 타인(?)들과 공유하기 위해서... Firebase 의 Realtime Database 에 저장을 해 보도록 하겠다. import requests import sqlite3 import firebase_admin from firebase_admin import c.. billcoreapython.tistory.com 옆집(?)에 포스팅 한 것처럼... 맛집을 찾아 기록해 주는 글들은 많다. 그것들은 어떻게 정리할 것인가?  그것이 고민인 것이지...   정리된 자료를 받아서 이제 하나의 로컬 데이터를 구성해 보도록 하겠다.  저 글에서는 수집된 정보가 firebase 의 realtime database에 기록되어 있으니 그것을 받아서 내가 보고 싶은 자료로 만들어 보는 것이다.    먼저 기록된 데이터의 구조를 볼까 ? 제주맛집 정보 샘플 이런 자료들이 여러 개 수집되어 있고, 매일처럼 갱신된 자료를 수집하고 있다. 이것들을 어떻게 활용할 것인지? 생각을 해 보자.   먼저 카테고리를 분해(?) 해서 구분을 조회 기준을 만든다.  ...

안드로이드 앱 만들기 FireBase 와의 연동 설계서

원본출처: 티스토리 바로가기 github.com/e2com/covid19Exam 이번 기술할 이야기는 Firebase 의 realtime database 와의 연동에 대한 이야기를 적어 보고자 한다. 새롭다... 이런 것도 있다는 것이...   일단... firebase 가 뭐지 ? 구글이 제공하는 모바일 플랫폼 이라고 되어 있다... 다만, 지금은 사용량이 작아서 비용을 내고 있지는 않지만, 사용량이 많아지다 보면 비용을 청구할 것 같다.  결제계정을 만들고 비용을 지불할 카드 등록은 되어 있다. (가급적이면 paypal 같은 다른 계정을 통해서 우회 등록을 해 두는 방법이 나중에 좀 유리하지 않을 까 하는 생각이 있고, 혹시나 모르게 결제를 해 갈지 모르기 때문에 카드사에는 외국에서 온라인/오프라인 결제는 방지하도록 설정을 해 두었다.)   firebase.google.com/?gclid=EAIaIQobChMIz6Dk_4PP7QIVTtiWCh3YzwfrEAAYASAAEgIvGvD_BwE   Firebase Firebase는 고품질 앱을 빠르게 개발하고 비즈니스를 성장시키는 데 도움이 되는 Google의 모바일 플랫폼입니다. firebase.google.com   다음... 사용하기 위한 방법을 찾아 보자...   firebase.google.com/docs/android/setup   Android 프로젝트에 Firebase 추가 기본 요건 Android 스튜디오를 설치하거나 최신 버전으로 업데이트합니다. 프로젝트가 다음 요구사항을 충족하는지 확인합니다. API 수준 16(Jelly Bean) 이상 타겟팅 Gradle 4.1 이상 사용 다음 버전 요 firebase.google.com 저 설명을 잘 읽어보면 안드로이드을 위한 설정을 하는 방법들이 나와 있다.  사용자 등록 부터, 계정의 API KE...

안드로이드 앱 만들기 Android Studio Update ... Bumblebee

원본출처: 티스토리 바로가기 What's New in Bumblebee ... 새로운 버전에는 무엇이 ?   Unified Gradle test runner    Depending on whether you run your tests from Android Studio or from the command line using the Android Gradle plugin, such as on your continuous integration server, you might see different test results, such as tests passing using one runner and failing on another. That's because each implements a different version of the Android instrumented test runner.   To resolve this issue, Android Studio Bumblebee now also uses Gradle’s Android instrumented test runner when running your tests....

안드로이드 앱 만들기 bottomnavigationview 의 기능 구현 등등

원본출처: 티스토리 바로가기 bottomnavigationview 을 구현하다가 클릭을 했을 때 버튼이 적용 되지 않는 상황이 발생 했다. 왜 ? 무엇 떄문에 이런 상황이 벌어지는 것인가 ?    bottomnavigationview 원래 메뉴를 클릭할 때 마다 선택한 메뉴가 옮겨져 가야 하는 것인데... 도대체 왜 ?   bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { Log.e(TAG, "onNavigationItemSelected=" + item.getItemId()) ; switch (item.getItemId()) { case R.id.menu_search: Log.d(TAG, "onNavigationItemSelected") ; getSupportFragmentManager().beginTransaction() .replace(R.id.main_layout, boardSelectFragment).commitNow() ; return true ; case R.id.menu_chatlist: getSupportFragmentManager().beginT...

안드로이드 앱 만들기 Firebase 의 인증 기능 활용

원본출처: 티스토리 바로가기 앱을 만들면서 사용자 인증을 하는 경우 여러 가지의 인증 기능을 이용할 수 있을 것 같다.  그러다가 오늘의 이야기를 하게 된 이유는    https://stackoverflow.com/questions/47619229/google-sign-in-failed-com-google-android-gms-common-api-apiexception-10   Google sign in failed com.google.android.gms.common.api.ApiException: 10: So I'm Stuck on this frustrating issue. I am quite new to Google Auth on Firebase but I done everything the firebase docs instructed in how to integrate the Google SignIn Auth, yet I'm still receiv... stackoverflow.com   이런 것과 같이 APIException 10 에러를 만났다는 것 때문이다. 이런 경우에는 어떻게 할 것인가?   https://firebase.google.com/docs/auth/android/account-linking?hl=ko     Android에서 계정에 여러 인증 제공업체 연결하기  |  Firebase Google은 흑인 공동체를 위한 인종적 평등을 추구하기 위해 노력하고 있습니다. 자세히 알아보기 의견 보내기 Android에서 계정에 여러 인증 제공업체 연결하기 인증 제공업체의 사용자 인증 정보 firebase.google.com   가이드 북이 말해 주는 것은 여러 가지 인증을 할 수 있다고 되어 있지만, 실제 만들고 있는 앱에서 오류가 발생하고 있다면... 난 어떻게 해결...

안드로이드 앱 만들기 Firebase FCM 으로 메시지 전송하기

원본출처: 티스토리 바로가기 Fcm 으로 메시지를 수신하는 예제들은 많이 찾아 볼 수 있으나, 보내는 건 ? 그것도 안드로이드 앱으로 그런 예제는 없는 것 같아서 정리를 해 보겠다. 다만, 전체를 다 정리하는 것이 아니라 꼭 필요한 부분만...   MainActivity 에 아래 함수를 넣고 앱이 실행 되는 동안에 처리를 하자.       - 목적은 allDevices 라는 것은 나중에 메시지 전송을 할 때 사용할 Topic 이다.        subscribeToTopoc 을 이용해서 내가 구동하는 메시지중에서 해당 Topic 으로 전송되는 것을 구독(?)할 수 있도록 등록을 해 두는 것이다.     - 두번째 목적은 getToken 함수를 이용해서 특정앱에게만 메시지를 보내고자 할 떄 token 값으로 구분 하여 메시지 수신자를 지정하기 위함이다. public void onRegistryToken() { FirebaseMessaging.getInstance().subscribeToTopic("allDevices") .addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { Log.e(TAG, "allDevices subscribed ..."); } }) .addOnFailureListener(new OnFailureListener() { ...

안드로이드 앱 만들기 : Recycleview 을 구현하다 벌어지는 흔한 실수

원본출처: 티스토리 바로가기 Recycleview 을 사용하다보니, RecycleAdapter 을 구성해서 화면을 구현 하게 된다.  당연한... 잠깐 소스를 볼까 ?   <잘못된 예시> @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); binding = ActivityChatRoomBinding.inflate(getLayoutInflater()); setContentView(binding.getRoot()); setSupportActionBar(binding.mytoolBar); sp = getSharedPreferences(getPackageName(), MODE_PRIVATE); chatMsgModels = new ArrayList<>(); chatRoom = FirebaseDatabase.getInstance().getReference(chatRoomKey); ..... adapter = new ChatAdapter(chatMsgModels, userEmail); binding.rv.setLayoutManager(new LinearLayoutManager(ChatRoomActivity.this)); binding.rv.setAdapter(adapter); chatRoom.orderByChild("crt_dt").startAfter(now).addChildEventListener(new ChildEventListener() { @Override public void onChildAdded(@No...