분류 전체보기
-
Dialog & Custom DialogCompose 2024. 10. 17. 13:02
오늘은 jetpack compose 를 이용하여 다이얼로그 만드는 방법을 알아보고자 한다🙂첫번째로, 기본 다이얼로그이다. 기본 다이얼로그는 AlertDialog 로 만들어야 한다. 기본 다이얼로그1. AlertDialog 의 기본 구조 및 정의다이얼로그를 만들려면 AlertDialog 를 사용해야 하는데, 아래와 같은 구조로 코드를 작성하면 된다. AlertDialog( onDismissRequest = {}, confirmButton = {}, dismissButton = {}, title = {}, text = {}) 여기서 AlertDialog 정의로 들어가보면 아래와 같다.@Composablefun AlertDialog( onDissmissRequest: () -..
-
액티비티간 데이터 전달 - startActivityForResultAndroid 2024. 10. 10. 16:05
이전 화면으로 되돌아올 때 사후처리가 필요한 경우가 있다.그때 필요한 방법은 아래 두가지가 있다.startActivityForResult (전통적인 방법) → deprecated 됨ActivityResultLauncher (최근 권장하는 방법)오늘은 startActivityForResult 의 사용법을 알아보려한다. 해당 방식은 안드로이드 버전1~버전12 까지는 잘 사용됐지만, 안드로이드 11 버전이 나올쯤부터 androidx의 ActivityResultLauncher 가 권장되기 시작했다. 권장되는 방식인 ActivityResultLauncher 을 바로 사용하는 것도 괜찮지만, 기존 startActivityForResult 를 먼저 공부해보고 어떤 점이 불편해서 ActivityResultLaunche..
-
안드로이드 기본 앱 연동하기 - 지도 앱, 전화 앱Android 2024. 10. 3. 09:58
지도 앱 연동하기앱이 만약에 위도와 경도 값을 가지고 있다면 지도 앱을 연동하여 위치를 보여줄 수 있다. 이때도 지도 앱의 액티비티를 실행하기 위해서는 인텐트를 사용하면 된다.val intent = Intent( Intent.ACTION_VIEW, // 액션 문자열 Uri.parse("geo:37.5662952, 126.9779451") // 데이터 정보)startActivity(intent) 두번째 파라미터인 데이터 정보는 URL 로 반드시 geo: 로 시작해야 하고 이어서 위도와 경도를 지정하면 된다.이렇게 하면 해당 위도와 경도에 해당하는 특정 위치를 지도에서 보이게 할 수 있다.전화 앱 연동하기먼저 전화 앱과 연동해 전화를 걸려면 메니페스트에서 퍼미션을 설정해야 한다. 이후 인텐트를 ..
-
안드로이드 기본 앱 연동하기 - 주소록 앱Android 2024. 9. 26. 16:56
주소록 앱 연동하기먼저 주소록 앱 사용에 대한 퍼미션을 메니페스트에서 설정해줘야 한다. 이후, 주소록 앱 화면을 띄울려면 아래와 같은 코드를 작성하면 된다.// 액션 문자열: ACTION_PICK// 데이터: ContactsContract.CommonDataKinds.Phone.CONTENT_URIval intent = Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Phone.CONTENT_URI)requestContactsLauncher.launch(intent) 주소록 목록 화면은 액티비티이기 때문에 인텐트를 이용해 실행해야 한다.데이터 정보에 들어가는 Uri 객체는 상수로, Uri.parse() 함수로 직접 지정해도 되지만, 다음과 같은..
-
안드로이드 기본 앱 연동하기 - 카메라 앱Android 2024. 9. 19. 15:53
카메라 앱을 연동하여 사진을 촬영하고 그 결과를 돌려받는 방법은 2가지가 있다.1. 사진 데이터 가져오기카메라 앱으로 사진을 촬영한 후 파일로 저장하지 않고 데이터만 넘겨주는 방식이다. 사진을 파일로 저장하지 않으므로 쉽게 구현할 수 있지만 넘어오는 사진 데이터의 크기가 작다는 단점이 있다. 암시적 인텐트로 카메라 앱의 사진 촬영 액티비티를 실행한다.val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)requestCameraThumbnailLauncher.launch(intent) 액션 문자열을 MediaStore.ACTION_IMAGE_CAPTURE 로 지정하여 인텐트를 시스템에 전달하면 카메라 앱이 실행된다. 카메라 앱에서 넘어온 사진 데이터는 Activity..
-
서비스 생명주기 - startService/bindServiceAndroid 2024. 9. 12. 19:00
Service 란?서비스는 오래 걸리는 작업을 백그라운드에서 처리할 수 있게 해주는 컴포넌트이다. startService 의 생명주기bindService 의 생명주기startService() vs bindService()startService 같은 경우에는 다음과 같이 도식화 할 수 있다.즉, 백그라운드 작업은 필요해서 서비스를 이용하지만 액티비티와 데이터를 주고받을 일이 없을 때 사용한다. 즉, 상호작용이 필요하지 않을 때는 startService() 를 사용하면 된다. bindService() 는 다음과 같이 도식화할 수 있다.bindService() 는 startService() 와 달리 서비스와 다른 컴포넌트(주로 액티비티) 간의 데이터 전달 등 상호작용이 원활하게 필요할 때 사용하면 된다.
-
안드로이드 기본 앱과 연동하기 - 갤러리 앱Android 2024. 9. 5. 15:16
1. 이미지 데이터 이해하기갤러리 앱을 연동하기 위해서는 이미지에 대한 이해가 필요하다.이미지는 Drawable 객체와 Bitmap 객체로 나뉜다. Drawable 객체 같은 경우는 리소스 이미지를 의미하고, Bitmap 객체 같은 경우에는 파일에서 읽은 이미지나 네트워크에서 내려받은 이미지를 의미한다. Bitmap 객체는 BitmapFactory 를 이용하여 생성되는데, 아이콘처럼 작은 이미지를 불러올 때는 문제가 없지만 카메라로 찍은 사진이나 서버에서 내려받은 이미지 등 크기가 큰 이미지를 불러올 때는 OOM 오류가 발생할 가능성이 높다. 이때 OOM 오류란 이미지 용량이 커 앱의 메모리가 부족해서 발생하는 오류를 말한다. 이를 해결하려면 이미지 용량(크기)를 줄여야 한다.이외에 Glide 나 Pic..
-
브로드캐스트 리시버(Broadcast Receiver)Android 2024. 8. 28. 13:06
정의- 시스템에 부팅 완료와 같은 특정 상황이 발생할 때 (= 이벤트가 발생하면) 실행되는 컴포넌트- 줄여서 리시버라고 함. - 해석하면 '방송 수신기' → 시스템에서 특정 상황이 발생했을 때 이를 받아서 처리하는 수신기인 브로드캐스트 리시버를 앱에 장착한다. 실행 방법안드로이드 4대 컴포넌트 중 하나이므로, 시스템에 인텐트를 전달하여 실행한다. 브로드캐스트 리시버 생성/등록class MyReceiver : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { // 다른 컴포넌트에서 해당 리시버를 실행하려고 인텐트를 시스템에 전달하면, 리시버의 onReceive() 함수가 자동 호출된다. // ..