하반기 12

[Android Studio] FCM을 이용한 푸시 알림

FCM이란? Firebase Cloud Messaging의 약자로, 구글 클라우드 서버를 사용해 앱에서 서버에 연결하지 않아도 기기의 내부 연결을 통해 메시지를 보낼 수 있는 알림 메시지 서비스이다. 먼저 FCM 서비스를 이용하기 위해서는 Gradle Scripts > build gradle(Module:app) dependencies { } 의 맨 아랫줄에 라이브러리를 추가해 준다 FirebaseMessagingService를 상속받는 .java 파일을 만들고 onMessageReceived 메서드와 onNewToken 메서드를 overide를 해준다. onMessageReceived()는 클라우드 서버에서 메시지를 보냈을 때 자동으로 호출되며, 메서드 안에는 메시지를 수신받았을 때 처리될 내용을 담는..

하반기 2021.12.01

[Android Studio] 다국어 번역 기능

지금 사용할 다국어 기능은 휴대폰 혹은 에뮬레이터의 설정을 변경하였을 시 자동으로 언어가 바뀐것을 인식하여 앱의 언어도 변경하여주는 기능이다. app>src>main>res>values 폴더로 이동하여 strings.xml 파일을 열면, 우측 상단에 Open editor 라는 버튼이 나온다. 해당 버튼을 누르면 다음과 같은 Translations Editor 가 나온다. 일단 언어를 먼저 추가해주어야한다. 좌측 상단 지구 모양 버튼 (Add Locale) 을 클릭하면 언어 추가가 가능하다. 우리는 English(AU)와 Korean을 추가해주었다. 추가를 하면 다음과 같이 우측에 해당 키별 값을 추가 할 수 있도록 생성된다. 이제 키 값을 이곳에 등록해 주면 자동으로 strings파일에 생성을 해준다. ..

하반기 2021.12.01

[Android Studio] QR 코드 리더기

qr 코드를 사용하기 위해 먼저 선언을 해준다. 누르면 qr코드가 나오도록 하는 이미지 버튼과, qrscan기능을 제공하는 IntentIntegrator를 다음과 같이 선언하였다. 이후 oncreata 메소드 내에 qr코드 이미지 버튼에 대한 OnClickListent를 생성해주었다. qr코드 인식 이후 내용은 다음과 같이 onActivityResult를 통해 구현하였다. 인식을 하였을 때, getApplicationContext를 통해서 미리 구현한 qr1.class, qr2.class로 넘어갈 수 있도록 하였다. 여기서 우리는 추가적으로 qr코드 내에 텍스트를 구별하는 기능을 case문을 이용하여 추가하였다. qr코드 내 미리 text를 삽입하여, 해당 텍스트를 case문으로 비교하였고, 그에 해당하..

하반기 2021.12.01

[Android Studio] FrameLayout - GONE, VISIBLE, INVISIBLE

FrameLayout을 이용하여, 레이아웃을 특정 상황에만 보여지도록 구현할 것이다. 먼저 xml에 FrameLayout을 지정을 하고 id를 선언하였다. 또한 기본적으로 처음에 레이아웃을 감출것이기 때문에 android:visibility="gone"으로 설정하였다. onCreate 메소드 내에 frame = (FrameLayout) findViewById(R.id.fragment_container);를 통해 frame을 선언한다. 필요한 부분에 frame.setVisibility();를 이용하였다. setVisibility에서 이용 가능한 것은 GONE, VISIBLE, INVISIBLE인데, GONE은 레이아웃 자체를 날려버리는 것이고, VISIBLE과 INVISIBLE은 레이아웃은 그대로 두고 내..

하반기 2021.10.06

[Android Studio] 네이버 맵 API - 마커/폴리라인

네이버 맵 API 위에 마커와 폴리라인을 띄운다. (지도 띄우기는 하단 게시글 참고) 마커와 폴리라인 완성본은 다음과 같다. 먼저 메인 클래스(implements OnMapReadyCallback) 내부에 마커 변수를 선언하고 초기화한다. 다음으로 setMarker를 이용하여 마커를 커스텀한다. 이곳에서 마커 크기, 원근감, 아이콘 등을 설정할 수 있다. 그 다음 지도 특성을 지정하는 onMapReady 내에서 마커를 띄웠다. 마커를 띄우는데 insert_marker()라는 함수를 임의로 만들어 사용해주었다. 다음은 마커를 삽입하는 insert_marker()함수이다. 마커 삽입은 상황에 따라 switch-case 문을 이용하여 작성하였다. 다음은 모든 마커를 삭제하는 delete_marker()함수이다..

하반기 2021.10.06

[Android Studio] 네비게이션 내 확장 리스트 2

앞선 네이게이션 내 확장 리스트 1에서 말했듯 우리는 확장 리스트뷰를 구현하기 위하여 많은 시도들을 하였다. 오늘은 최종적으로 우리 스토리보드 대로 구현 성공한 내용에 대하여 담겠다. 위 화면과 같이 코스 창을 구현 하였고, 이에 필요한 java파일은 2개, xml파일은 4개이다. 보통 expandable listview를 구현하는데는 총 5개의 파일이 필요하나, 우리는 내비게이션 내 구현하였기 때문에 총 6개의 파일을 사용하였다. (course.java, ExpandableListAdapter.java, course.xml, course_nevi.xml, list_course_group.xml, list_course_item.xml) 일단 기본 화면은 course.java와 course.xml 그리고 ..

하반기 2021.09.29

[Android Studio] 네비게이션 내 확장 리스트 1

다음은 스토리보드 상의 리스트뷰이다. 다음 모습과 유사하게 구현하기 위해 많은 시도를 하였다. 첫번째 시도는 expandable listview를 이용하는 것이다. expandable listview란 확장 리스트뷰라는 뜻으로 해당 버튼을 클릭하면 밑으로 확장창이 나와 서브 메뉴들이 나오는 형태를 구현할 수 있는 리스트뷰이다. https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=javaking75&logNo=220843402180 블로그를 참고하여 구현을 해보았다. 구현을 하였는데 클릭이벤트 및 부모자식 레이아웃 변경(크기 색상 등) 부분은 구현하지 못하였다. 부모 자식 레이아웃 구분을 목표로 다른 방법을 탐색해보았다. 두번째 시도는 ..

하반기 2021.09.16

[Android Studio] 식물 정보 Tab

좌 - 홈 화면 / 중 - 홈의 '식물정보' 클릭 / 우 - 봄 Tab에서 돌단풍 클릭 홈의 '식물정보'에서는 식물원에서의 사계절 식물정보를 얻을 수 있다. 좌 - 홈의 '식물정보' 클릭 / 우 - 식물정보 xml 디자인 먼저 식물정보.xml은 TabHost(TabWidget, FrameLayout)을 이용하였다. FrameLayout 안에는 식물이미지(ImageView), 식물이름(TextView), 식물이 위치한 주제원(TextView)을 하나의 Layout으로 묶어 위의 사진처럼 화면을 구성하였다. 좌 - TabHost xml 기본 구성 코드 / 우 - TabHost java 코드 TabHost는 기본적으로 TabHost > TabWidget > FrameLayout으로 구성되어 있다. TabWid..

하반기 2021.09.12

[Android Studio] View Pager2

스토리 보드의 홈 화면 중 상단의 매달 제공되는 축제의 정보를 View Pager를 이용해서 띄우도록 한다. View Pager란? 하나의 전체 화면에서 다른 전체 화면으로 전환하는 것으로, ViewPager2 객체로 화면을 슬라이드하는 방법을 보여준다. ViewPager2는 ViewPager 라이브러리의 개선된 버전으로, 향상된 기능을 제공하며 다양한 이점을 제공한다. 세로 방향 지원 오른쪽에서 왼쪽 지원 수정 가능한 프래그먼트 컬렉션 DiffUtil 1. build.gradle(Module)에 의존성 추가 implementation 'androidx.viewpager2:viewpager2:1.0.0' (혹시라도 indicator를 사용할 경우, 밑에 implementation 'me.relex:cir..

하반기 2021.09.09