Android/Android 더하기

    Android Shortcut(바로가기)

    shortcut(바로가기)는 앱 아이콘 롱 클릭 시 앱의 특정 작업을 실행하는 바로가도록 해주는 기능입니다. 이러한 바로가기는 지원되는 런처나 어시스턴트(Google 어시스턴트 등)에 표시될 수 있으며 사용자가 앱 내에서 특정 작업을 빠르게 시작할 수 있도록 도와줍니다. 각각의 shortcut은 하나 이상의 Intent를 참조하고 각 Intent는 사용자가 shortcut를 선택할 때 앱에서 특정 작업을 실행합니다. 바로가기로 표시할 수 있는 작업의 예 이메일 앱에서 새로운 이메일 작성하기 매핑 앱에서 사용자를 특정 위치로 이동하기 커뮤니케이션 앱에서 친구에게 메시지 전송하기 미디어 앱에서 TV 프로그램의 다음 에피소드 재생하기 게임 앱에서 마지막 저장 지점 로드하기 음성 명령을 사용하여 음성으로 배달 ..

    Android Kotlin + OpenCV

    1. 최신 OpenCV sdk 다운로드 다운로드 : opencv-4.5.1-android-sdk.zip 2 .OpenCV를 모듈로 추가 File > New > Import Module 메뉴 선택후 압축파일을 푼 경로에서 sdk 디렉토리를 선택한다. OpenCV를 안드로이드 스튜디오 모듈 형태로 추가하는 것이기 때문에 OpenCV SDK 디렉토리를 선택하면 모듈이름이 ‘sdk’로 지정된다. 그냥 써도 상관없지만 필자는 ‘opencv‘로 변경했다. 3. OpenCV 모듈을 app모듈의 의존성으로 추가하기 app 모듈 레벨의 build.gradle에 의존성 추가 dependencies { // OpenCV 4.5.1 implementation project(":opencv") } 4. OpenCV Native..

    Android for 모바일, 태블릿, 키오스크(Mobile, Tablet, Kiosk) px, dpi

    Build 클래스 안드로이드에서 설치된 장비(디바이스)의 정보를 확인하는 방법으로 Build 클래스를 통해 디바이스의 정보를 확인해보겠습니다. 안드로이드 공식 사이트 : https://developer.android.com/reference/android/os/Build 코드로 확인 Log.d("jjslee", "BOARD: " + Build.BOARD) Log.d("jjslee", "SERIAL: " + Build.SERIAL) Log.d("jjslee", "VERSION.RELEASE: " + Build.VERSION.RELEASE) Log.d("jjslee", "MODEL: " + Build.MODEL) Log.d("jjslee", "MANUFACTURER: " + Build.MANUFACTURER..

    메모리 프로파일러를 사용하여 앱의 메모리 사용량 검사

    메모리 누수 메모리 프로파일러 앱의 메모리 사용 현황을 실시간 그래프로 보여주며, 메모리 프로파일러를 사용하여 힙 덤프를 캡처하고, 가비지 컬렉션을 강제 실행하고 메모리 할당을 추적할 수 있습니다. 메모리 프로파일링을 해야하는 이유 Android에서는 관리되는 메모리 환경을 제공합니다. 즉, 앱에서 일부 객체를 더 이상 사용하지 않는다고 판단되면 가비지 컬렉터가 사용되지 않는 메모리를 힙에 돌려보냅니다. Android에서 사용되지 않는 메모리를 찾는 방법은 끊임없이 개선되고 있지만, 모든 Android 버전의 특정 시점에서 시스템이 코드를 일시중지해야 합니다. 대부분의 경우 일시중지를 감지할 수 없습니다. 하지만, 시스템에서 메모리를 수집할 수 있는 것보다 빠르게 앱에서 메모리를 할당하는 경우 컬렉터가 ..

    Transformations LiveData 변형하기

    LiveData 안의 value 값을 업데이트해주기 위해 Transformations는 LiveData를 위한 클래스로써, LiveData를 사용하면서 데이터를 가공하거나, 다른 LiveData를 만들고 싶을 때 Transformations을 사용하면 된다. 관련 함수로는 map()과 switchMap()이 있다. Transformations.map val userLiveData: MutableLiveData = repository.getUser(id) val userNameLiveData: LiveData = Transformations.map(userLiveData) { user -> user.firstName + " " + user.lastName } map의 첫 번째 인자로 LiveData sou..