본문 바로가기

안드로이드44

[안드로이드] Admob 앱 추가 등록 및 설정 방법 (앱ID 생성) Admob에 내 앱을 등록하는 것은 구글플레이나 앱스토어에 등록한 앱이 등록되어 있지 않아도 가능하다. 앱에 광고를 붙이는 절차는 대략 아래와 같은 것 같다. 1. Admob에 앱을 임의로 등록해두고, 2. 해당 앱의 광고 단위(배너 광고 등)를 생성하고, 3. 앱에 해당 광고를 탑재하고 4. 구글플레이, 앱스토어 등에 앱을 올리고 5. Admob에서 스토어에 올라간 앱을 연결해준다. 이번 글에서는 위의 항목중 아래 내용을 정리한다. 1번 "Admob에 앱을 등록하는 방법"과 5번 "스토어에 등록한 앱을 연결하는 방법" 상세한 화면은 시기에 따라 다를 수 있다. # Admob 앱 등록 1. 앱 추가 처음이라면 "앱" 메뉴에서 "첫 번째 앱 추가" 버튼을 누른다. 기존에 만든 앱이 있는 경우라면 "앱" 메.. 2021. 7. 24.
[안드로이드 kotlin] Admob 앱 배너 광고 넣는 방법( + 테스트광고) 이 글에서는 안드로이드 앱에 아래와 같은 배너 광고 삽입하는 방법을 정리한다. # 안드로이드 Adbmob 광고 삽입 방법(요약 버전) 1. build.gradle에 모바일광고SDK추가 2. Manifest.XML에 광고설정 추가 3. 레이아웃.XML에 AdView 추가 4. Kotlin 코드에서 AdView에 광고 띄우기 위와 같은 간단한 작업만으로 광고 노출이 가능하다. 테스트 광고를 노출할 경우에는 Admon에 가입하지 않아도, 구글에서 제공해주는 테스트용 ID를 사용하면 된다. 실제 구글플레이에 앱을 올릴 때는 Admon 가입후, 앱 ID 및 광고단위 ID를 생성하여 교체해주면 된다. Admob에 앱을 생성하는 방법은 아래글 참고 [안드로이드] Admob 앱 추가 등록 및 설정 방법 Admob에서 .. 2021. 7. 23.
[안드로이드 Kotlin] JSON 파일 저장 및 파싱 방법: JSONArray, JSONObject 안드로이드 개발시, DB를 쓰자니 좀 작고, Preference 를 쓰자니 좀 큰 데이터들이 있다. 이럴 때 JSON이나 XML파일 등으로 안드로이드 앱 내부에 저장해두고 사용할 때가 있다. 이번 글에서는 JSON 파일을 안드로이드 앱 내부에 저장해두고, 불러와서 파싱하는 방법을 정리한다. # JSON 파일 저장 방법 1. assets 디렉토리 생성 - app > src > main 경로에 assets 폴더(디렉터리)를 만든다. - 안드로이드 스튜디오 환경에서는 project 보기 모드로 전환해서 디렉토리를 생성하면 더 쉽다. 2. json 파일 저장 - assets 경로에 .json 파일을 저장한다. (복사 붙여넣기를 해도 되고, 직접 생성해도 된다) # JSON 파일 로드 및 파싱 방법 1. asse.. 2021. 7. 21.
[안드로이드 kotlin] Fragment에서 Context 사용 방법: findViewById, runOnUiThread, Toast 등 보통 액티비티에서 Fragment 를 띄우는 경우, 액티비티 내부에서 사용할 수 있었던 메서드들이 Fragment에선 사용할 수 없는 경우가 많다. 또한 파라미터로 Context를 받는 메서드들도 어떻게 사용해야할지 난감할 수 있다. Fragment클래스는 Context를 상속 받지 않기 때문에 발생하는 일이다. 즉, 일반적인 방법으로는 Fragment 내부에서 아래의 메서드들을 사용하기가 어렵다. 1. Context 에 정의된 메서드 - findViewById, runOnUIThread, getApplicationContext , getSystemService, startActivity 등 2. Context를 파라미터(매개변수)로 받는 메서드 - Toast 등 # Framgment에서 Context .. 2021. 7. 21.
[안드로이드 Kotlin] Fragment 에서 뷰바인딩(View Binding) 사용 방법 이 글은 Kotlin 언어로 안드로이드 앱 개발 시, Fragment에서 뷰바인딩(View Binding)을 설정하고 사용하는 방법에 대해 정리한다. 뷰바인딩을 설정하는 방법과 Activity에서 사용하는 방법은 아래 글을 참고하자. [안드로이드 Kotlin] 뷰바인딩(View Binding) 설정 및 사용 방법 build.gradle 파일에 뷰바인딩 설정을 했다고 가정하고,(위 글 참고) Fragment 에서 뷰바인딩을 구현한 코드 전문이다. class FragmentTest : Fragment() { override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? .. 2021. 7. 20.
[안드로이드] RadioGroup의 RadioButton 가운데/비율 정렬 배치 방법 RadioGroup 내에서 Radio버튼을 정렬하는 다양한 방법을 정리한다. 기본적으로 RadioGroup은 LinearLayout 이라고 보고 배치하면 된다. 아래 코드는 모두 레아아웃XML 파일에 정의하는 내용이다. RadioGroup의 layout_width 속성값을 match_parent나 고정값을 주고 시작해야 한다. (wrap_content인 경우 원하는대로 배치가 잘 되지 않을 가능성이 있다) 1. RadioButton 수직 배치 방법(디폴트) RadioGroup의 orientation속성을 vertical로 주면 RadioGroup 내에서 수직으로 배치된다. 디폴트이기 때문에 따로 설정하지 않아도 수직으로 정렬된다. android:orientation="vertical" 2. RadioBu.. 2021. 7. 20.
[안드로이드 Kotlin] 뷰바인딩(View Binding) 설정 및 사용 방법 # 뷰바인딩이란? 원래 레이아웃 XML파일에 정의된 View에 접근하는 방법은 findViewById()메서드를 활용하는 것이었다. 이후 코틀린이 도입되면서 '코틀린 익스텐션'을 통해 쉽게 뷰를 다룰 수 있었다. 그러나 이제는 "뷰 바인딩"이 코틀린 익스텐션을 대체한다. 뷰 바인딩은 코틀린 환경의 안드로이드에서 뷰에 접근하는 새로운 방식이다. (물론 findViewById는 여전히 쓸 수 있다) # 뷰바인딩 설정 방법 1. build.gradle(Module:...) 파일 선택 2. android > buildTypes 항목에 buildFeatures { viewBinding true } 설정 추가 3. Sync Now 클릭 # 뷰바인딩 사용 방법 1. 레이아웃XML파일 생성 2. 바인딩 초기화 3. r.. 2021. 7. 19.
[안드로이드] ANR(Application Not Responding) 개념과 해결 방법 # ANR이란? Activity에서 사용자 이벤트가 발생하고 5초 이내에 처리하지 못할 경우 안드로이드 시스템이 액티비티를 강제 종료하는 것을 Application Not Responding이라고 한다. 주로 오래 걸리는 작업 결과를 이용해 화면 UI를 수정하려고 할 때 발생하며, 특히 네트워크가 안 좋은 환경에서 통신을 수행할 때 자주 발생한다. # ANR 해결방법? 오래 걸릴 가능성이 있는 작업은 Activity에서 처리하지 말고, 별도의 스레드를 만들어서 병렬로 처리하는 것이다. 이렇게하면 데이터 수신 등의 오래걸리는 작업은 별도의 스레드에서 돌아가므로 액티비티는 사용자 이벤트에 5초 이내에 반응할 수 있게 되어 ANR이 발생하지 않게 된다. # 안드로이드의 스레드(Thread) 개발자가 신경써야할.. 2021. 7. 18.
[안드로이드 Java/Kotlin] 시스템 효과음 재생 방법: Ringtone # 안드로이드 제공 기본 시스템 효과음 재생방법 1. 효과음 식별자(URI) 취득 종류별 효과음을 식별할 URI 객체를 취득한다. - Java: RingtoneManager.getDefaultUri(RingtoneManager.효과음상수값) - Kotlin: RingtoneManager.getDefaultUri(RingtoneManager.효과음상수값); * 상수값 종류 - RingtoneManager.TYPE_NOTIFICATION : 알림 - RingtoneManager.TYPE_ALARM: 알람 - RingtoneManager.TYPE_RINGTONE: 전화수신음 근데 TYPE_ALARM, TYPE_RINGTONE은 보통 엄청 길기 때문에 쓸 일이 별로 없다. 2. Ringstone 객체 생성 ur.. 2021. 7. 15.