최근 플러터 SDK를 업그레이드하고 나서 기존에 사용하던 nRF52 DFU 패키지에 문제가 발생하였다. 확인해보려고 해당 패키지 사이트로 접속해보니 더 이상 지원을 안 하고 있는 것으로 보였고 이걸 내가 고쳐 써야 하나 어쩌나 하고 있던 참에 어느 용자(?) 님께서 그 패키지를 찍어(Fork) 서 따로 관리를 해주는 것이 아닌가!!! 그렇게 다른 패키지로 갈아탔고 다행히도 소스코드 수정 없이 그대로 적용이 가능했다. 다만!! 빌드 하는데 아래와 같은 에러를 뿜는 것이 아닌가... 아... 쉽게 가는 게 없네 없어... e: C:\Programs\flutter\.pub-cache\hosted\pub.dartlang.org\nordic_dfu-3.1.0\android\src\main\kotlin\dev\steenbakker\nordicdfu\ResourceUtils.kt: (88, 15): Class 'kotlin.Unit' was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.5.1, expected version is 1.1.15. The class is loaded from C:/Users/chand/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdli...
구글 IO를 둘러보다 보니 코틀린(Kotlin Jetpack Compose)라는 녀석을 보게 되었다. Jetpack Compose | Android Developers Jetpack Compose로 더 빠르게 더 나은 Android 앱 빌드 Jetpack Compose는 네이티브 UI를 빌드하기 위한 Android의 최신 도구 키트입니다. Jetpack Compose는 Android에서 UI 개발을 간소화하고 가속화합니다. 적은 수의 코드, 강력한 도구 및 직관적인 Kotlin API를 사용하여 앱을 빠르고 생동감 있게 구현하세요. 코드 감소 적은 수의 코드로 더 많은 작업을 하고 전체 버그 클래스를 방지할 수 있으므로 코드가 간단하며 유지 관리하기 쉽습니다. 직관적 UI만 설명하면 나머지는 Co... developer.android.com Jetpack Compose basics | Android 개발자 | Android Developers In this codelab, you’ll learn the basics of Compose. developer.android.com https://developer.android.com/jetpack/compose?hl=ko 플러터의 장점인 빠른 업데이트와 코드화된 UI 구성이 그대로 적용되는 것 같다. 아직 베타 버전이지만 이제 코틀린에서도 플러터와 같은 UI 형태를 가질 수 있을 것으로 봐...
구글 안드로이드 공식 예제 코드 중 LocationUpdatesForegroundService 예제 코드를 코틀린(Kotlin)을 변경한 예제 코드이다. chandong83/android_locationupdatesforegroundservice_kotlin Contribute to chandong83/android_locationupdatesforegroundservice_kotlin development by creating an account on GitHub. github.com 해당 코드는 포그라운드 서비스(Foreground Service)를 이용해 위치 업데이트(Location Updates)를 주기적으로 시도하는 예제이다. 예제 코드를 돌려보면 위와 같이 약 5초에 한 번씩 업데이트가 이뤄지는 것을 볼 수 있을 것이다. 이전에 소개한 "Geofence"라는 앱을 앱 종료 이후에도 알림을 받고 싶다면 구글 맵을 켜놔야 하는데 이때 포그라운드 서비스에서 위치 업데이트를 하게 되면 동일한 효과를 줄 수 있다고 한다. 코틀린(Kotlin) - 지오펜스(Geofence) 안드로이드 공식 샘플 코드 코틀린 버전으로 변환한 소스코드 아래의 링크는 안드로이드 location 샘플 예제 중 자바로 작업된 "Geofence" 프로젝트를 코틀... blog.naver.com 자바로 제작된 "Location Updates Foreground...
지오펜싱 만들기 및 모니터링 | Android 개발자 | Android Developers Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요 . Android 개발자 문서 가이드 지오펜싱 만들기 및 모니터링 목차 지오펜싱 모니터링 설정 지오펜싱 만들기 및 추가 지오펜싱 객체 만들기 지오펜싱 및 초기 트리거 지정 지오펜싱 전환을 위한 broadcast receiver 정의 지오펜싱은 현재 위치에 관한 사용자의 인식과 관심 위치에 관한 사용자의 근접성 인식을 결합합니다. 관심 위치를 표시하려면 위도와 경도를 지정합니다. 위치 근접성을 조정... developer.android.com 아래의 링크는 안드로이드 location 샘플 예제 중 자바로 작업된 "Geofence" 프로젝트를 코틀린으로 변경한 것이다. chandong83/location-samples-geofencing-for-kotlin location-samples-geofencing-for-kotlin. Contribute to chandong83/location-samples-geofencing-for-kotlin development by creating an account on GitHub. github.com 원본 소스코드 위치 android/location-samples Multi...
지오펜스(Geofence, Geo fecing 등)라고 하는 기능은 임의의 지역을 지정하면 모바일폰이 지역에 들어왔는지 나갔는지 또는 머물고 있는지를 감지하는 것을 말한다. 특정 지역에 울타리(Fence)를 치고 감시하는 기능이라고 해야 하나? 아무튼 해당 기능을 적용하려고 찾아보니 아래의 링크를 찾을 수 있었다. 해당 링크는 코틀린(Kotlin)으로 제작된 지오펜스의 코드를 설명하는 문서이다. 보통 자바(Java) 코드는 여기저기 상당히 많이 공개가 되어있는데 코틀린(Kotlin) 코드는 적당한 게 별로 보이지 않았다. https://codelabs.developers.google.com/codelabs/advanced-android-kotlin-training-geofencing/#0 Advanced Android in Kotlin 04.2: Adding geofencing to your map 1. Welcome This codelab is part of the Advanced Android in Kotlin course. You'll get the most value out of this course if you work through the codelabs in sequence, but it is not mandatory. All the course codelabs are listed on the Advanced Andro...
코틀린(Kotlin)도 모바일용 멀티플랫폼을 공개했다. 이름은 코틀린 멀티플랫폼 모바일(Kotlin Multiplatform Mobile, 이하 KMM)이다. 아래의 링크는 코틀린 개발사인 젯브레인즈(Jetbrains)의 블로그에 올라온 KMM을 소개하는 글이다. Kotlin Multiplatform Mobile goes Alpha – Kotlin Blog | JetBrains Kotlin Multiplatform Mobile (KMM) is an SDK that allows you to use the same business logic code in both iOS and Android applications. Today KMM goes Alpha, and you can start sharing business logic in blog.jetbrains.com 앞으로 코틀린 언어로 안드로이드(android)와 아이오에스(iOS)를 동시에 개발이 가능해질 것으로 보인다. 다만, 현재까진 UI 구성을 안드로이드 / ios 른 각각 작성하고 내부 비즈니스 로직(함수)들만 코틀린으로 따로 작성해 서로 공유하는 형태라 네이티브 코드는 꼭 필요하다. 이런 점에서 플러터(Flutter)와는 성격이 많이 다른 것 같다. 물론 이제 알파(Alpha) 버전이라 얼마나 달라질진 모르겠다. 아래는 KMM의 공식 문서이다. Kotlin Multiplatf...
지난번 파이썬으로 제작한 Intel Hex to Bin 변환 코드를 코틀린용으로 제작해봤다. 파이썬(Python) - Intel Hex to Bin 변환 소스 코드 Intel Hex file 구조를 Bin 파일로 변환하는 파이썬 소스코드아래의 문서를 기준으로 코드를 작성하였... blog.naver.com 인텔 헥사 포맷은 아래의 링크에서 참고하면 된다. Intel HEX - Wikipedia Wiki Loves Love Photograph your local culture, help Wikipedia and win! Intel HEX From Wikipedia, the free encyclopedia Intel HEX is a file format that conveys binary information in ASCII text form. It is commonly used for programming microcontrollers , EPROMs , and other types of programmable logic ... en.wikipedia.org 소스코드는 다음과 같다. 안드로이드로 작성 전에 먼저 VSCode로 코드를 작성하여 결과를 빠르게 보기 위해 만들어 봤다. import java.io.File // 중간 데이터 보관용 // address : 주소 // data : 데이터 class Memory(val address...
멀티 권한 요청및 처리하는 코틀린 코드이다. 1. 퍼미션추가 - AndroidManifest.xml <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 2. 선언 및 퍼미션 체크 함수 호출 - MainActivity.kt //퍼미션 응답 처리 코드 private val multiplePermissionsCode = 100 //필요한 퍼미션 리스트 //원하는 퍼미션을 이곳에 추가하면 된다. private val requiredPermissions = arrayOf( Manifest.permission.READ_PHONE_STATE, Manifest.permission.ACCESS_COARSE_LOCATION) override fun onCreate(savedInstanceState: Bundle?) { ... ... ... //onCreate함수내에서 퍼미션 체크및 권한 요청 함수 호출 checkPermissions() ... 3. 퍼미션 체크 및 권한 요청 함수 - MainActivity.kt //퍼미션 체크 및 권한 요청 함수 private fun checkPermissions() { //거절되었거나 아직 수락하지 않은 권한...
이전부터 안드로이드 앱을 개발할 때 터치 처리는 아래와 같이 구현하였었다. (비슷하게..) //seekbar 터치 seekBar.setOnTouchListener(object : View.OnTouchListener { override fun onTouch(v: View?, event: MotionEvent?): Boolean { when (event?.action) { MotionEvent.ACTION_DOWN -> { //터치가 눌리면... } } //리턴값이 false면 seekbar 동작 안됨 return true //or false } }) 그런데... 이놈의 IDE가 마음에 안 든다고 lambda 식으로 바꾸라고 한다. 그래서 좀 찾아보니 아래와 같이 바꿔주면 되는 것 같다. //seekbar 터치 //View 변수는 사용 안하니까 _ 로 변경 seekBar.setOnTouchListener { _: View, event:MotionEvent -> when(event.action) { MotionEvent.ACTION_DOWN -> { } } //리턴값은 return 없이 아래와 같이 true // or false } 람다식이 아직 익숙지는 않지만 차차 나아지지 않을까 생각된다. ㅋㅋㅋ
http 형태로 데이터를 서버로부터 전달받을 때 한글이 포함된 부분은 아래와 같이 표시되는 것을 확인하였다. <p>íì¬ì¨ë: 0.00°C</p><p>ì¤ì ì¨ë: 63°C</p><p>ì¶ë ¥: 99%</p></center></div> 원래는 아래와 같이 표시되야 정상이다. <p>현재온도: 0.00°C</p><p>설정온도: 63°C</p><p>출력: 99%</p></center></div> 이때 아래와 같이 변경하면 정상적으로 동작되는 것을 확인하였다. //response 는 String 변수 val utf8String = String(response.toByteArray(Charsets.ISO_8859_1), Charsets.UTF_8) 언제나 문자열 관련 처리는 새롭다... 그나저나... 코 틀린 이거 참 쉽고 좋네 ㅎㅎ