본문 바로가기

안드로이드135

안드로이드 스튜디어 - Java 소스를 Kotlin 소스로 변환하기(Convert) 안드로이드에서 개발한 Java 소스를 Kotlin 소스로 변환하는 기능을 안드로이드 스튜디오에서 제공하고 있습니다. 간단하게 소스를 선택하고 마우스 오른쪽을 클릭하여 팝업에서 "Convert Java File to Kotlin File"을 클릭하면 Java 소스가 Kotlin 소스로 쉽게 변환됩니다. Java 소스 Kotlin으로 변환 된 소스 2021. 10. 1.
안드로이드 코틀린 - google play-services를 이용한 위치정보 얻기 안드로이드의 기본 라이브러리로 위치정보를 얻기 위해서는 상당히 많은 작업이 필요한다. google의 play-services의 라이브러리를 이용하면 조금(?)은 쉽게 위치정보를 얻을 수 있습니다. 위치 정보를 얻기 위해서는 권한(Permission)과 권한 요청을 해야 하는데 아래의 포스트를 참고하세요. https://docko.tistory.com/739 안드로이드 코틀린 - 권한(Permission) 요청 안드로이드에서 위치, 저장소 읽기/쓰기 등을 하기 위해서는 권한이 필요합니다. 앱에서 사용자에게 권한을 요청하는 방법입니다. 1. AndroidManifast.xml에 필요한 권한을 추가합니다. 위치 권한(ACC docko.tistory.com 1. 모듈(app) gradle에 play-servic.. 2021. 9. 27.
안드로이드 코틀린 - 권한(Permission) 요청 안드로이드에서 위치, 저장소 읽기/쓰기 등을 하기 위해서는 권한이 필요합니다. 앱에서 사용자에게 권한을 요청하는 방법입니다. 1. AndroidManifast.xml에 필요한 권한을 추가합니다. 위치 권한(ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION)을 추가했습니다. ... 2. 앱이 실행하면 권한이 부여되지 않으면 요청합니다. class MainActivity : AppCompatActivity() { val MY_PERMISSION_ACCESS_ALL = 100 ... override fun onCreate(savedInstanceState: Bundle?) { ... if(ActivityCompat.checkSelfPermission(this, android.Ma.. 2021. 9. 26.
안드로이드 코틀린 - 뷰바인딩(View Binding) 안드로이드 스튜디오 4.0이상에서의 뷰바인딩하는 방법입니다. findViewById를 사용해서 뷰(View) 객체를 얻는 것보다 상당히 간편합니다. 1. 모듈 gradle에 뷰바인딩 클래스를 생성하도록 설정합니다. android { ... buildFeatures{ viewBinding true } ... } 2. 뷰바인딩 클래스 이름 규칙은 아래와 같이 레이아웃 XML 파일의 이름에 따라 결정됩니다. 레이아웃 XML 뷰바인팅 클래스명 activity_main.xml ActivityMainBinding item_list.xml ItemListBinding 3. 뷰바인딩 객체 사용하기 (1) 멤버 변수로 뷰바인딩 변수를 생성한다. 뷰바인딩 변수는 onCreate 에서 초기화를 하기 위해서 lateinit로.. 2021. 9. 25.
안드로이드 스튜디오 - 자동 임포트(Auto Import) 설정 안드로이드 스튜디오에서 코딩 시 자동으로 임포트(Auto Import)를 설정하는 방법입니다. 임포트를 자동으로 해주므로 코딩 시 귀찮음이 줄어듭니다. 1. File > Settings..메뉴를 클릭합니다. 2. Settings 화면에서 Editor > General > Auto Import를 선택하고, Java 또는 Kotlin에 자동 임포트 설정을 합니다. 아래의 항목을 체크하여 설정합니다. Add unambiguous imports on the fly Optimize imports on the fly(for current project) 3. 자동 임포트 예시입니다. 2021. 9. 11.
안드로이드 코틀린(Kotlin) - 오류 Module was compiled with an incompatible version of Kotlin. 안드로이드 앱 개발을 자바로 하다 늦게 코틀린으로 개발하기 위해서 스터디 중입니다. 처음부터 아래와 같은 컴파일 오류가 발생하고 말았습니다. C:/Users/~~~~/.gradle/caches/transforms-2/files-2.1/73386cfabd81641255b1adb6f916fd20/jetified-kotlin-stdlib-1.5.10.jar! /META-INF/kotlin-stdlib.kotlin_module: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.5.1, expected version is 1.1.16. 구글링 결과 코틀린의 버전을 상향해야 하네요. 안.. 2021. 9. 10.
안드로이드 개발 Java에서 Kotlin으로의 항해 Java로 안드로이드를 개발한지 거의 10년이 되어가고 있습니다. 구글에서 안드로이드 개발언어로 Kotlin을 발표한지도 몇년이 지났습니다. Kotlin이 아닌 Java로만으로 앱을 개발 할 수 있어서 Kotlin에 관심을 갖고 있지 않았습니다. 개인적으로 안드로이드 앱만 개발하고 있어 Kotlin으로 넘어가지 않으려고 했습니다. 주위의 지인들의 프로젝트에 안드로이 앱 개발 시 현재는 Kotlin으로 개발을 한다는 말을 듣게 되었습니다. 늦었지만 지금이라도 Kotlin으로 안드로이드 앱을 개발하기 위해서 스터디를 하려고 합니다. 강좌는 유튜브로 기본 문법을 학습하려고 합니다. https://www.youtube.com/playlist?list=PLQdnHjXZyYadiw5aV3p6DwUdXV2bZuhlN.. 2021. 9. 1.
안드로이드 에뮬레이터 스크린샷과 저장 위치 안드로이드 에뮬레이터에서 스크린샷을 하는 방법과 스크린샷의 저장 위치에 대해서 설명합니다. 뭐 간단하지만 자꾸 스크린샷의 저장 위치 잊어버려서 구글링을 하게 되네요. ㅠㅠ 에뮬레이터의 오른쪽 메뉴에서 카메라를 클릭하면 스크린샷이 저장됩니다. 스크린샷의 저장 위치는 바로 바탕화면이랍니다. 2021. 6. 10.
안드로이드 스튜디오에서 다국어 작업하기 한국어로 개발된 안드로이드 앱에 영어를 추가하려고 합니다. 기본언어가 한국어로 되어있는데 이것을 영어로하고, 한국어를 추가하려고 합니다. 안드로이드 스튜디어의 Translations Editor를 이용하여 언어를 추가하여 다국어 지원을 하는 방법입니다. 1. res/values/string.xml을 엽니다. 2. 상단의 Open Editor를 클릭하여 Translations Editor를 엽니다. 3. Translations Editor에서 한국어를 추가합니다. 4. 다국어 작업을 합니다. - Defalut Value : 영어 - Korean : 한국어 ※ 다국어 테스트는 폰의 언어를 바꾸어서 진행 하시며 됩니다. 2021. 3. 31.
Could not download aapt2-windows.jar (com.android.tools.build:aapt2:3.2.0-4818971): No cached version available for offline mode 아래와 같은 오류가 갑자기 발생해버렸습니다. Could not download aapt2-windows.jar (com.android.tools.build:aapt2:3.2.0-4818971): No cached version available for offline mode Gradle이 Offline Mode로 설정이 되어있어 해당 Jar를 다운로드 할 수 없어서 발생한 오류입니다. [Offline Mode 해제] 1. View > Tool Windows > Gradle 메뉴를 선택합니다. 2. Offline Mode 토글 버튼을 해제로 변경 후 다시 컴파일 합니다. ※ 아래와 같이 Gradle Offline Mode 해제 할 수 있습니다. 2021. 3. 16.
안도로이드 SQLite insert or replace 구현 SQLite에서 Insert와 Update를 함께 처리 할 수 있는 "insert or replace" 문법이 있습니다. SQLite의 "insert or replace"에 대해서는 아래의 링크를 참고하세요. https://docko.tistory.com/entry/SQLite-inert-or-replace%EC%98%A4%EB%9D%BC%ED%81%B4MS-SQL-Merge-%EA%B8%B0%EB%8A%A5 SQLite inert or replace(오라클/MS-SQL Merge 기능) 오라클 또는 MS-SQL의 Merge와 유사한 기능으로 SQLite에서는 insert or replace 기능이 있습니다. 사용법은 Merge보다 간단하지만, 디테일한 적용은 조금 부족합니다. insert or repl.. 2021. 2. 15.
E/RecyclerView: No layout manager attached; skipping layout 아래의 오류는 RecyclerView에 Layout Manager를 설정하지 않아 서 발생합니다. E/RecyclerView: No layout manager attached; skipping layout 아래와 같이 RecyclerView에 layoutManager를 설정하면 됩니다. app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" 2021. 2. 5.
Android resource linking failed(error: unexpected element <queries> found in <manifest>) 갑자기 안드로이드 스튜디오에서 프로젝트를 컴파일하니 아래와 같은 오류가 발생해서 당황했습니다. 구글링을 하니 프로젝트를 클리어 후 재컴파일 해보며 된다는 등의 처리방법이 있는데 그래도 해결하지 못했습니다. [오류] Execution failed for task ':app:processDebugResources'. > Android resource linking failed D:\Project\TVSchedule3\app\build\intermediates\merged_manifests\debug\AndroidManifest.xml:15: AAPT: error: unexpected element found in . [해결] android/build.gradle Android Gradle plugin 버전을.. 2021. 1. 30.
귀하의 앱에서 Google AdMob 광고 게재가 중지되었습니다 귀하의 앱에서 Google AdMob 광고 게재가 중지되었습니다 위와 같은 제목으로 애드몹으로부터 메일을 받았습니다. 해당 앱은 게시를 중지했던 앱인데 몇개월 후가 지난 지금에서야 정책 위반으로 광고 게재를 중지한다고 합니다. 애드몹의 계정이 여러번의 정책 위반을 하게 되면 계정 정지가 될 수도 있다는 불안한 마음 때문에 조치를 하려고 합니다. 그래서 정책 센터에 해당 정책 위반에 대해서 "앱이 게시 중지인데 어떻게 해야 하냐?"고 문의를 했으나 답변에 별다른 내용 없이 정책 위반이라고 다시 메일이 왔습니다. 그래서 이것 저것 구글링을 해보니 광고단위를 삭제하면 된다고 해서 광고 단위를 삭제하고 검토 요청을 하였습니다. 애드몹에서는 앱은 삭제 할 수는 없고, 광고 단위는 삭제 할 수 있는데 방법은 아래와.. 2020. 8. 17.
안드로이드 외부 폰트 Layout XML에 적용하기 안드로이드 앱 개발 시 외부 폰트를 적용하는 방법은 Typeface 객체를 이용하는 방법이 있습니다. 하지만 이 방법은 Layout 디자인에는 표시가 안되기 때문에 디자인 적용을 디버깅에서 확인 해야 하죠. Layout XML에 외부 폰트를 적용하는 방법인데 간단합니다. 1. res(리소스) 하위에 font 디렉토리를 생성하고 외부 폰트를 복사해서 넣습니다. (주의 할 것은 외부 폰트명은 소문자와 "_" 만으로 구성해야 합니다.) 2. Layout XML에 아래와 같이 fontFamily를 지정하면됩니다. 3. 안드로이드 스튜디오 Layout 편집기에서 아래와 같이 확인 할 수 있습니다. 2020. 8. 7.
안드로이드 Action Bar 숨기기, Full Screen을 Style XML로 설정하기 안드로이드 프로젝트를 생성하고, styles.xml에서 Action Bar를 숨기거나 Full Screen을 설정하는 방법입니다. styles.xml 은 아래의 경로에 있습니다. 1. Actin Bar 표시 styles.xml 설정 windowActionBar = true, windowNoTitle = false, windowFullscreen = false 로 설정 2. Actin Bar 숨기기 styles.xml 설정 windowActionBar = false, windowNoTitle = true, windowFullscreen = false 로 설정 3. Full Screen styles.xml 설정 windowFullscreen = true 로 설정 (windowActionBar = true 와.. 2020. 8. 4.
안드로이드 ImageView를 흑백(Gray Scale)으로 표시하기 안드로이드의 ImageView의 이미지를 흑백으로 만드는 방법입니다. 아래의 코드는 ListView의 Adapter에 적용한 예입니다. ImageView ivNationFlag = (ImageView)v.findViewById(R.id.iv_nation_flag); ivNationFlag.setImageResource(NationFlagHelper.getNationFlagRes(quiz.name)); if(isOk){ // 컬러 필터를 제거하여 원본으로 표시 ivNationFlag.setColorFilter(null); }else{ // 컬러 필터를 흑백으로 변경 ColorMatrix matrix = new ColorMatrix(); matrix.setSaturation(0); ColorMatrixCol.. 2020. 7. 12.
android.os.FileUriExposedException: file:///storage/emulated/0/... exposed beyond app through Intent.getData() 안드로이드 프로젝트의 targetSdkVersion이 24이상에서 아래의 소스코드(MIME Type에 따른 앱 연결 화면 오픈)를 실행하면 아래와 같이 오류가 발생합니다. [소스코드] String mergeFilePath = "file:///storage/emulated/0/sql.pdf"; File file = new File(mergeFilePath); Intent target = new Intent(Intent.ACTION_VIEW); target.setDataAndType(Uri.fromFile(file),"application/pdf"); target.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); Intent intent = Intent.createChooser(t.. 2020. 2. 1.
Failed to resolve: support-core-utils & support-compat 요즘 이전에 개발한 안드로이드 프로젝트 컴파일 시 아래와 같은 오류가 발생합니다. ERROR: Failed to resolve: support-core-utils Affected Modules: app ERROR: Failed to resolve: support-compat Affected Modules: app 해결 방법은 App build.gradle의 dependencies에 support-core-utils와 support-compat을 추가해주면 됩니다. dependencies { ... implementation "com.android.support:support-core-utils:26.+" implementation 'com.android.support:support-compat:26.+'.. 2019. 7. 25.
안드로이드 targetSdkVersion 28 인 경우 HTTP 통신 시 오류 해결 방법 안드로이드 앱의 targetSdkVersion이 28 이상에서 HTTP 통신 할 경우 아래와 같은 오류가 발생합니다. E/AndroidRuntime: FATAL EXCEPTION: Thread-9 Process: com.mypackage, PID: 24239 java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/message/HeaderGroup; at net.daum.mf.map.common.net.NetWebClient._getResponse(NetWebClient.java:257) at net.daum.mf.map.common.net.NetWebClient.openContentStream(NetWebClient.java:274.. 2019. 7. 14.
안드로이드X로 프로젝트 마이그레이션 하기 기존 안드로이드 프로젝트를 안드로이드X로 마이그레이션 하는 방법입니다. 즉 Android API 28 미만의 프로젝트를 마이그레이션 하는 것이죠. 올해 8월 쯤에 모든 안드로이드 앱은 안드로이드X로 플레이 스토어에 등록해야 하는 것으로 알고 있습니다. 1. 안드로이드 스튜디오를 최신 버전으로 업데이트 합니다. (최신버전에서는 안드로이드X로 마이그레이션을 할 수 있는 기능이 있습니다.) - 메뉴 Help > Check for update 를 클릭하여 안드로이드 스튜디오를 최신 버전으로 업데이트 합니다. 2. 안드로이드 스튜디어에서 메뉴 Refactor > Migrate to AndroidX... 를 클릭합니다. - 해당 프로젝트는 마이그레이션이 시작됩니다. 3. 아래와 같이 오류가 발생하면 Gradle을 .. 2019. 6. 23.