본문 바로가기

개발(Development)/Android(안드로이드)62

[안드로이드] ANR(Application Not Responding) 개념과 해결 방법 # ANR이란? Activity에서 사용자 이벤트가 발생하고 5초 이내에 처리하지 못할 경우 안드로이드 시스템이 액티비티를 강제 종료하는 것을 Application Not Responding이라고 한다. 주로 오래 걸리는 작업 결과를 이용해 화면 UI를 수정하려고 할 때 발생하며, 특히 네트워크가 안 좋은 환경에서 통신을 수행할 때 자주 발생한다. # ANR 해결방법? 오래 걸릴 가능성이 있는 작업은 Activity에서 처리하지 말고, 별도의 스레드를 만들어서 병렬로 처리하는 것이다. 이렇게하면 데이터 수신 등의 오래걸리는 작업은 별도의 스레드에서 돌아가므로 액티비티는 사용자 이벤트에 5초 이내에 반응할 수 있게 되어 ANR이 발생하지 않게 된다. # 안드로이드의 스레드(Thread) 개발자가 신경써야할.. 2021. 7. 18.
[안드로이드 Java/Kotlin] 시스템 효과음 재생 방법: Ringtone # 안드로이드 제공 기본 시스템 효과음 재생방법 1. 효과음 식별자(URI) 취득 종류별 효과음을 식별할 URI 객체를 취득한다. - Java: RingtoneManager.getDefaultUri(RingtoneManager.효과음상수값) - Kotlin: RingtoneManager.getDefaultUri(RingtoneManager.효과음상수값); * 상수값 종류 - RingtoneManager.TYPE_NOTIFICATION : 알림 - RingtoneManager.TYPE_ALARM: 알람 - RingtoneManager.TYPE_RINGTONE: 전화수신음 근데 TYPE_ALARM, TYPE_RINGTONE은 보통 엄청 길기 때문에 쓸 일이 별로 없다. 2. Ringstone 객체 생성 ur.. 2021. 7. 15.
[안드로이드 Java/Kotlin]시스템 기본 제공 진동패턴 사용 방법: createPredefined 이 글에서는 안드로이드가 제공하는 기본 진공 패턴 사용 방법을 정리한다. 안드로이드 기본 진동 사용방법과 개발자의 커스텀 진동 패턴 생성방법은 각각 아래 글을 참고 [안드로이드: Java/Kotlin] 진동 실행 구현 방법: Vibrator, VibrationEffect [안드로이드: Java/Kotlin] 커스텀 진동 패턴 및 반복 설정 방법: createWaveform # 안드로이드 기본제공 진동패턴 사용 방법 안드로이드는 자주쓰이는 진동 패턴을 기본으로 제공한다. 아래의 createPredefined()메서드에 effectId 상수값을 설정하여 VibrationEffect 객체를 생성하면 된다. - Java: public static VibrationEffect createPredefined (in.. 2021. 7. 15.
[안드로이드 Java/Kotlin] 커스텀 진동 패턴 및 반복 설정 방법: createWaveform 이 글에서는 개발자의 "사용자 정의 커스텀" 진동의 패턴 설정 및 반복 실행 방법을 정리한다. 안드로이드의 기본(1회) 진동 설정 방법은 아래글을 참고 [안드로이드: Java/Kotlin] 진동 실행 구현 방법: Vibrator, VibrationEffect 안드로이드 시스템 제공 진동패턴 사용방법은 아래글 참고 [안드로이드 Java/Kotlin]시스템 기본 제공 진동패턴 사용 방법: createPredefined 1. permission 추가 ActivityManifest.xml 파일에 진동 퍼미션을 추가한다. - 2. Vibrator 객체 얻어오기 안드로이드가 제공하는 SystemService에서 Vibrator 객체를 얻어온다. - Java: (Vibrator)getSystemService(VIBR.. 2021. 7. 15.
[안드로이드] Button 영어 대문자만 표시될 때 소문자 변경 방법 안드로이드를 개발하다보면, Button의 Text를 분명히 소문자로 영어를 입력했는데, 대문자로만 표시되는 현상이 있다. textStyle의 AllCaps 속성이 디폴트로 설정되어 있어서 그렇다. 해제 방법은 아래와 같다. # 소문자가 표시되도록 하는 방법 #1 Design모드에서 Button이 선택된 상태에서 textAppearance > textStyle 항목의 AllCaps 항목을 체크해제 해준다 # 소문자가 표시되도록 하는 방법 #2 Code모드에서 레이아웃 XML파일에 textAllCap 속성을 false로 설정하는 코드를 추가해 주어도 된다. - android:textAllCaps="false" 이렇게 설정해두면 아래처럼 소문자와 대문자가 내가 작성한대로 잘 표시 된다. 2021. 7. 15.
[안드로이드 Java/Kotlin] 진동 실행 구현 방법: Vibrator, VibrationEffect 진동의 시간과 강도를 설정하여 1회의 진동을 실행 중단 시키는 방법을 정리한다. 진동의 패턴과 반복을 설정하는 방법은 이 글을 참고 # 안드로이드 앱 개발: 진동(Vibrate) 매니페스트에 VIBRATE 퍼미션을 추가해주고, Java/Kotlin 파일에서 진동을 울려주는 코드를 작성하면 된다. 1. 퍼미션 설정 - 대상 파일: AndroidManifest.xml - 추가 권한: * uses-permission 은 manifest 태그의 바로 하위 항목(application과 동일 계위)로 추가하면 된다. 2. 진동 설정 - 대상 파일: MainActivity.java | MainActivity.kt - 작성 코드: 1) SystemService에서 Vibrator 객체를 얻어온다. - Java: (Vi.. 2021. 7. 15.
[안드로이드] 스마트폰 기기 연결/빌드/실행하는 방법 안드로이드 스튜디오에서 앱 개발 시, 가상 AVD가 아닌 실제 스마트폰에 설치하고 실행하는 방법을 정리한다. 1. 스마트폰 드라이버 설치 사용중인 PC환경에 따라 스마트폰 드라이버를 설치해야할 수 있다. (일반적으로 Window컴퓨터는 설치가 필요하며, 맥OS는 설치가 필요 없다.) "제조사명 android usb driver" 등으로 검색해서 설치하면 된다. 이 글 작성 시점 기준으로 삼성 안드로이드 폰은 아래 링크에 있었다. https://developer.samsung.com/mobile/android-usb-driver.html 2. 개발자 옵션 활성화 스마트폰의 설정으로 진입한 후, 아래와 같이 설정한다. 1) 설정 > 휴대전화정보 메뉴진입 2) 빌드번호 6번이상 연속 터치 -> 개발자 옵션 메.. 2021. 7. 15.
[안드로이드] this와 MainActivity.this의 개념, 차이 Android를 개발하다보면 어떤 때는 this를 쓰고, 어떤 때는 MainActivity.this 형태를 사용한다. 심지어 두개를 바꿔서 사용하면 에러가 발생할 때도 있다. 이 둘의 개념과 차이, 그리고 사용법을 정리한다. # Java의 this 1. 메서드 내부에서 사용되면, 클래스가 생성할 본인(인스턴스|객체) 자체를 가르키며, 2. 생성자 함수 내부에서는 this()형태로 사용하여, 오버로딩된 다른 생성자 함수를 호출한다. # 안드로이드의 this와 MainActivity.this 안드로이드에서는 this 외에 MainActivity.this 같이 "클래스명.this" 형태가 종종 사용된다. 예를 들어 버튼을 누르면 액티비티를 띄우는 아래의 코드를 보자. 1. 익명 클래스로 View.Onclick.. 2021. 7. 13.
[안드로이드] LayoutParams(레이아웃 파라미터) 개념과 구조/종류 # 레이아웃 파라미터(LayoutParams)란? 부모 레이아웃 안에서 View(뷰)가 어떻게 배치될지를 정의하는 속성이다. 구글 개발자 사이트의 레퍼런스에는 아래와 같이 기술되어 있다. "LayoutParams are used by views to tell their parents how they want to be laid out." 구체적으로 레이아웃 XML파일에서 앞에 layout_"이 붙는 속성들을 말하며, LayoutParams클래스의 필드값과 매핑된다. 따라서 코드 상에서 LayoutParams객체를 통해 뷰의 레이아웃 파라미터 속성을 다룰 수 있다. 아래의 activity_main.xml 파일에서 andorid:layout_width, andorid:layout_height 가 레이아웃 파.. 2021. 7. 12.