보통 화면의 회전을 처리하는 경우는 화면이 portrait인지 landscape인지 여부이다. 그러나, 나침반처럼 회전방향에 따라 바늘 각도를 다르게 계산해야 하는 경우라면, 4방향의 회전방향을 모두 알아야한다. 여기서는 다루지 않지만 사족을 달자면, 나침반은 화면이 뒤집혀 좌표계가 뒤집히는 경우까지 고려해야 한다. 화면의 현재 회전상태를 알아내는 방법 화면의 회전은 UI영역이고, Activity에서 처리해야 함을 유추할 수 있다. Fragment가 아니라 Activity인 이유는, Fragment가…
[글쓴이:] batmask
Kotlin: 스코프 함수들(Scope functions) let, run, with, apply, also
작년에 작성했던 글인데, 제대로 이해하지 못하고 썻던 글이라, 다시봐도 무슨말인지 모르겠더라. 이제 좀 감이와서 다시 정리해 업데이트 한다. Kotlin만의 특징중 하나로 scope functions 라고 불리는게 있다. ‘let’, ‘run’, ‘with’, ‘apply’, ‘also’ 의 5가지가 그것이다. 객체 생성시, 사용하는 함수들인데, 자체적인 scope를 갖는 코드블럭을 사용해서 scope function이라 불린다. Kotlin 공식문서 참조. 공식문서의 예를 가져와보면 다음과 같다. Person…
Android: Sensor의 사용, Rotation Vector를 이용한 나침반 코어 만들어보기
사실, 안드로이드에서 센서를 이용한 구현을 이전에 해보지 못했다. 이번에 필요한 기회가 생겨서 알아보는 김에 정리를 하기로 마음먹었다. 센서라는게 종류도 많고, 기기마다 달려있는 것도 다르고, 각각 주어지는 데이터도 다르기 때문에 모든걸 다룰 수는 없을거 같고, 기본적으로 안드로이드에서 SensorManager를 통해 센서를 사용하는 방법, 그 중에서 TYPE_ROTATION_VECTOR를 이용해 나침반과 같은걸 만들어 보려한다. 센서의 분류 안드로이드 공식 문서의 센서…
Android : Request Runtime Permissions
안드로이드의 permission은 초기에는 Manifest에 추가만 해주면 해결 됐지만, 보안이 강화되면서 API 23부터 사진을 찍거나 위치정보를 이용하는등의 경우에 런타임으로 요청을 해서 사용자 확인을 받아야 한다. Runtime Permissions는 dangerous permissions라고도 하며, 시스템이나 다른앱에게 영향을 줄 수 있는 영역에 접근할 때 필요하다. runtime 으로 permission을 요청하면 사용자에게 다음과 같은 대화상자가 표시된다. 사용자는 허용/거부를 선택할 수 있고 그에 따라…
Android: onActivityResult()의 대안 RegisterForActivityResult()
외부 Activity를 실행할 때, 이전 방식은 startActivityForResult()를 이용하여 Intent를 날리고 onActivityResult() callback으로 결과를 받아오는 방식이었다. 새롭게 권장하는 방식은 AndroidX 라이브러리의 Activity/Fragment 를 이용하여 RegisterForActivityResult()를 사용하는 방식이다. 정확한 장점을 설명하기에 아직 내 이해도가 부족하지만, 기존 방식이 좀 무식하긴 했다. 인텐트로 외부 액티비티를 실행하고, 뭘 실행했든지 onActivityResult() 하나의 콜백에서 request code로 분류하며 전부 처리해야 했다. 또한, 인텐트…