반응형

안드로이드 52

안드로이드 타이틀바 없애는법

안드로이드 앱을 만들면서 앱 위에 있는 타이틀 바가 거슬릴 때가 있다. 이런 타이틀바를 안드로이드 스튜디오에서 없애는 방법에 대해서 알아보자. 안드로이드 스튜디오의 Manifast파일을 열어보자 그러면 이런 식으로 되어있는데 저 중에서 androud:theme="@style/Theme.Exam" 이라고 되어있는 부분을 android:theme="@style/theme.AppCompat.NoActionBar"라고 바꿔주면 된다. 이렇게 타이틀바가 없어진걸 볼 수 있다.

안드로이드 ViewBinding

ViewBinding이란? 옛~날 옛적 안드로이드에서 코드적으로 뷰에 접근하기 위해선 아래와 같은 방법을 사용해야했다. Button button = (Button)findviewById(R.id.button); 위와 같은 방법을 사용하려면 접근하려는 뷰마다 변수를 선언해주고 접근해야 했는데, 그러면 단순히 뷰가 10개만 되어도 변수가 10개가 늘어나기 때문에 매우매우 불편했다. 하지만 ViewBinding을 사용하게 되면 위와 같은 불편한 점을 한 번에 없애버릴 수 있게 된다. 서론은 여기까지 하고 실제로 ViewBinding을 어떻게 사용하는지에 대해 알아보자. Gradle ViewBinding을 사용하는 방법은 매우 간단한데, 아래처럼 gradle파일에 단 3줄만 넣어주면 된다. buildFeatur..

안드로이드 스튜디오 Github연동하기

매우 많은 수의 개발자들이 사용하고 있는 Github! 이번 글에선 Github와 안드로이드 스튜디오를 연동하고, 코드를 업로드 하는 법에 대해서 알아보도록 하자! GIT 설치와 계정 연결 가장 먼저 Github와 연동하기 위해서 PC에 Git을 설치해주도록 하자. git-scm.com/ Git git-scm.com 그 다음, 안드로이드 스튜디오에서 Setting으로 들어가준 뒤, 검색창에 Git을 검색한다. 그럼 위와 같은 화면으로 갈 수 있는데, 먼저 Test를 눌러서 Git이 정상적으로 설치되었는지 확인하도록 하자. 그 다음 바로 아래의 GitHub로 들어가서 자신의 계정을 연결해주도록 하자. Repo만들기 계정 연결까지 했으면, 다음으로 자신의 코드를 업로드할 Repository를 깃허브에 생성한..

안드로이드에서 Nodejs와 socket.io를 사용해 소켓 통신하기

이번 글에서는 안드로이드에서 Nodejs서버와 socket.io를 사용해 다른 클라이언트와 소켓 통신을 하는 법에 대해서 알아보자. 가장 먼저 해야 할 일은 gradle파일에 의존성을 추가해주는 것이다. dependencies{ implementation('io.socket:socket.io-client:1.0.0') { exclude group: 'org.json', module: 'json' } } 의존성을 추가해줫으면 sync now를 눌러서 적용해준 뒤, Manifest로 이동하자. 서버와 통신하려면 INTERNET퍼미션이 추가하고, Nodejs로 테스트용 서버를 구동시킬 시 주소가 http가 되는데, 안드로이드에서는 http로 된 주소로의 접속을 기본적으로 막아두고 있기 때문에 이를 허용해주어야..

안드로이드 GPS로 현재 내 위치좌표 구하는법(Kotlin)

이번 글에서는 안드로이드에서 현재 내 위치좌표를 알아보는 방법을 알아보자. 먼저, 내 좌표를 구하기 위해서는 ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION권한이필요하다. Manifest파일에 위와 같이 추가해주도록 하자. 다음으로 좌표를 불러올 때 사용할 버튼 하나를 액티비티에 추가해주자 사전 준비가 끝낫다면 본격적으로 좌표를 구해보기 위해 MainActivity로 이동하자. 먼저, 현재 위치를 다른 함수로부터 받아와 Log에 남겨주는 getLocation함수를 만들어보자. private fun getLocation(){ locatioNManager = getSystemService(Context.LOCATION_SERVICE) as LocationManager? var..

스레드(Thread)와 코루틴(Coroutine)의 차이

이 글에서는 스레드와 코루틴의 차이점 대해 간단하게 알아보도록 하자. 먼저, 둘의 차이점을 말하기 전에 둘의 공통점은 프로그램을 만드는 과정에서 '비동기' 작업을 하기 위해서 사용한다는 점이다. 비동기 작업은 어떤 작업을 수행할 때, 이가 끝나는 것을 기다리지 않고 다른 작업을 수행하는 것이고 반대로 동기 작업은 해당 작업이 끝날 때까지 기다린 뒤 다음 작업을 수행하는 것이다. 그런데, 스레드와 코루틴은 근본적으로 큰 차이가 있다. 스레드의 경우 여러 개의 스레드를 사용해서 여러 개의 작업을 '병렬'로 수행하여 비동기적으로 작동한다. 하지만 코루틴의 경우 비동기 작업에 사용되긴 하지만 실제로는 병렬적으로 수행되는 것이 아니고 여러 개의 작업을 잘게 쪼개서 나눠서 작업을 수행하는 방식이다. 그림으로 표현하..

GEOcoder 사용 시 java.io.IOException: grpc failed오류 해결

안드로이드에서 Geocoder를 사용해서 위도, 경도를 주소(서울특별시 xxxx~~)로 바꾸는 과정에서 java.io.IOException: grpc failed에러가 발생해서 해결법을 좀 찾아봤다. 보통 에뮬레이터 사용 시 에러가 발생한다는 글을 많이 발견했는데, 원인은 네트워크 연결이 불안정해서 이런 현상이 발생할 수도 있다는 것이다. 해결법은 간단하게 에뮬레이터에서 인터넷을 Wi-fi가 아닌 LTE(데이터)로 바꿔주었더니 문제가 해결되었다. 또한 try~catch문을 사용해서 에러 발생 시 해당 부분을 재시도 하는 걸로 해결해 볼 수도 있다고 한다. 추가) Geocoder사용 시에 변환하려는 좌표값(위도, 경도)가 소수점 3자리를 넘어가면 이런 현상이 가끔 발생한다는 글도 발견했다. 위의 방법으로 ..

안드로이드에서 AES256알고리즘을 사용하여 암/복호화

이번 글에서는 안드로이드에서 AES256알고리즘으로 메세지를 암호화하는 방법에 대해서 알아보자. AES256은 공통키 암호화 알고리즘으로, 256bit의 공통된 Key를 A와 B가 가지고 있어야 암호화가 가능하다. 이를 위해 따로 gradle에 추가시켜줄 코드는 없으니 바로 코드를 확인해보자. 가장 먼저, A와 B가 사용할 공통키 K를 생성해야한다. 이때 키 교환 과정은 생략하고, 두 사용자가 동일한 K를 공유한다고 가정하자. val keygen = KeyGenerator.getInstance("AES") keygen.init(256) val key: SecretKey = keygen.generateKey() K는 안드로이드의 KeyGenerator를 사용하여 생성하는데, 안드로이드에서는 이 Key가 정..

안드로이드 이미지 업/다운로드(Blob, Nodejs, mysql)

이번 글에서는 안드로이드에서 Nodejs서버에 이미지파일을 업로드하고 파일로 저장하는법, 파일로 저장한 이미지를 mysql 에 Blob형태로 저장하는방법, 이 저장한 이미지를 다시 안드로이드에서 받는 방법에 대해 알아보도록 하자. 이 작업을 위해서 안드로이드쪽에서 따로 필요한 모듈은 없으니 바로 코드로 들어가보도록 하자! 일단 PNG파일을 안드로이드에서 저장하는 방법에 대해서는 생략하도록 하겠다. 또한 Retrofit으로 Nodejs서버와 통신하는 방법도 생략하도록 하겠다. 이부분이 궁금하신 분들은 아래 링크로 가주시길 https://devrunner96.tistory.com/6 retrofit을 사용한 안드로이드와 Node.js간 통신 안드로이드에서 retrofit을 사용해서 Node.js와 통신을 해..

액티비티(Activity)와 프래그먼트(Fragment)

이번 글에서는 Activity와 Fragment에 대해서 알아보자. Activity Activity는 Android의 4대 Component중 하나로 사용자에게 실제로 보이며, 사용자와 상호작용하는 화면을 말한다. Activity는 하나 이상의 View또는 ViewGroup을 반드시 가지고 있어야 하며, 한 번에 하나의 Activity만 Disaplay할 수 있다. 비유를 해보자면, 종이를 끼우는 파일철을 생각해보도록 하자. 파일철에는 여러 장의 종이를 끼워서 보관할 수 있는데, 우리는 한 번에 한 종이의 한 면만 확인할 수 있다. 여기서 이 한 면이 Activity가 되는것이고, 한 면 위에 쓰인 내용들을 View또는 ViewGroup이라고 할 수 있다. Fragment 자 그럼 Fragment는 무엇..

반응형