본문 바로가기

개발76

이모지 유니코드로 변환하기 문제 사항이모지는 Surrogate Pair 문자로 16비트 코드 2개로 이루어진 문자다. 때문에 기존 1개로 이루어진 문자처럼 변환할 경우 변환된 문자의 개수가 맞지 않는 현상이 발생한다. 때문에 주소록 앱에서 이모지 이름으로 저장된 경우 이모지로 검색 시 제대로 불러오지 못하는 경우가 생겼고 이 문제를 해결하는 과정에서 얻은 정보를 토대로 이 게시글을 적게 되었다. 구현public static String normalize(String name) { StringBuilder sb = new StringBuilder(); for(int i = 0; i normalize라는 파라미터 name을 유니코드로 변환하는 함수를 구현해 보았다. 코드 분석int codePoint = name.codePo.. 2024. 9. 26.
[Android] Java 클래스에서 Kotlin static 함수를 불러올 때, Non-static method cannot be referenced from a static context 에러 현상 경로:Java 클래스에서 Object 클래스 함수를 불러오려고 하는데, 기존에 불러오던 것 처럼 불러오니 불러오지 못하는 현상이 발생했다.Assert.equals(ParticipantData.DEFAULT_SELF_SUB_ID, subId); 컴파일 에러 발생Non-static method cannot be referenced from a static context   문제의 원인:정적 함수에서 비정적 메서드를 호출하려고 할 때 발생하는데, Assert.equals 메서드는 비정적 함수기 때문에 정적 컨텍스트에서 호출할 수 없다.  해결 방법:Kotlin에서 싱글톤 객체는 자동으로 INSTANCE 필드를 생성하기 때문에 정적 컨텍스트에서 접근할 수 있도록 한다.Assert.INSTANCE.equal.. 2024. 6. 26.
[Android] Framework의 core에 리소스를 추가했으나 불러오지 못하는 현상 SystemUI의 GlobalActionsDialogLite 작업 중 core의 res에 drawable과 string을 추가했으나, 해당 리소스를 불러오지 못하고 빌드 에러가 발생하는 현상을 발견했다. SystemUI는 기본적으로 core의 리소스를 불러와 사용하기 때문에,import com.android.internal.R;packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java - platform/frameworks/base - Git at Googlestring과 drawable을 core 쪽에 추가해 구현했다. 분명 이전 버전 작업(Android 9 ~ 12)과 동일하게 작업했음에도 불구하고, 계속 .. 2024. 6. 24.
[Android] 유선 이어폰 연결 감지 하기 브로드 캐스트 리시버 등록IntentFilter filter = new IntentFilter();filter.addAction(ACTION_HEADSET_PLUG);registerReceiver(receiver, filter);ACTION_HEADSET_PLUG를 등록 브로드 캐스트 리시버 생성private final BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if(intent.getAction().equals(ACTION_HEADSET_PLUG)){ int state = intent.ge.. 2024. 6. 5.