하루에 0.01%라도 성장하자
반응형

전체 글 185

안드로이드 AudioManager Stream 별 설명

Android AudioManager에 구성되어 있는 STREAM 채널별 설명은 다음과 같습니다. STREAM_MUSIC: 음악, 오디오 북, 팟캐스트와 같은 미디어 재생에 사용되는 스트림입니다. STREAM_ALARM: 알람에 사용되는 스트림입니다. STREAM_RING: 전화 벨소리에 사용되는 스트림입니다. STREAM_SYSTEM: 시스템 음성, 예를 들어 내비게이션 안내 음성에 사용되는 스트림입니다. STREAM_VOICE_CALL: 음성 통화에 사용되는 스트림입니다. STREAM_DTMF: DTMF 신호에 사용되는 스트림입니다. STREAM_TTS: 음성 합성 음성에 사용되는 스트림입니다. STREAM_ACCESSIBILITY: 접근성 서비스에 사용되는 스트림입니다. STREAM_NOTIFICA..

Develop/Android 2023.07.05

VSCode Recommand Extensions for Flutter

Flutter를 개발하는 툴로 VSCode를 사용하고 있는데, VSCode는 개발을 보다 쉽게 할 수 있도록 많은 Extentions을 제공해준다. Recommand Extensions 1. Dart - Flutter를 개발하기 위한 기본 Extensions 2. Flutter - Flutter를 개발하기 위한 기본 Extensions 3. Awesome Flutter snippet - 빠르게 위젯을 만들 수 있도록 약어를 제공해준다. 4. Pubspec assist - 최신 라이브러리를 받아주고, 해당 Extensions로 5 Dard data class generator - copyWith, toMap등 자주 사용하는 코드를 만들어 줌 6. Error Lens - 에러가 난 코드 옆에 주석처럼 에러 ..

Develop/Flutter 2023.04.25

Firebase Dynamic Link not Working in targetSDKVersion 33

앱 홍보용으로 파이어 베이스 다이나믹 링크를 만들어 QR로 제공하는 중이다. 기능은 단순하게, QR을 스캔하여 클릭하면 앱이 설치되어 있지 않으면 스토어로 이동 앱이 설치되어 있으면 실행 되는 형태. 그런데 Android 12 까지는 정상적으로 실행되는데, Android 13 에서 문제가 발생했다. Android 13 문제 발생 증상 1. 앱이 설치되어 있지 않으면 정상적으로 스토어로 이동됨 2. 앱이 설치되어 있는데 실행되는 로딩바 뜨다가 아무런 동작 하지 않음 - 원래는 앱이 실행되어야 함. 원인을 확인해 보니 Android sdk 33 부터 intentFilter 설정이 필요했다. 이렇게 등록 해주면 된다. host는 파이어베이스에 다이나믹 링크로 만든 링크를 해주고, path로 구분하여 실행할 링..

Develop/Android 2023.04.24

Android AD_ID permission targetSDKVersion 33

어느날 잘 동작하던 앱을 업데이트 해야 하는 상황이라 aab bundle로 말아서 배포하려고 앱을 검토하고 있었다. 구글 콘솔에 앱 심사를 올리려고 앱을 올렸는데 갑자기 AD_ID 이슈가 터졌다. 확인해 보니 targetSDKVersion 33 을 타겟하는 경우 내가 AD_ID를 직접 사용하지 않아도, 내가 사용하려고 하는 외부 SDK에 AD_ID를 사용하게 되면 이걸 명시해야 하는 정책이 생겼더라. 내가 사용하는 SDK중 어떤게 AD_ID를 사용하나 봤더니 애널리틱스... 이건 뺄 수 없는 SDK였기 때문에 해결방법을 찾아봤다. 해결방법 1. AndroidManifest.xml 에 권한 선언하기 2. 구글 콘솔에 앱 콘텐츠 정책 변경 이 방법들은 둘다 해야 하는 방법이 아닌, 둘중 하나만 하면 되는 방..

Develop/Android 2023.04.05

플루터 개발에 필요한 다트(Dart) 문법 및 특징 알아 보기 - 이름 있는 생성자, Mixins

이름 있는 생성자 만들기 late var name; late var age; UserInfo.createUser(required var name, required var age) : this.name = name, this.age = age // 초기화 해줌 void main(){ UserInfo.createUser(name : "DDun", age : 10) // 클래스의 이름 있는 생성자로 초기화 } Mixins 생성자가 없는 클래스 class 를 생성할 때 extends 대신 with를 이용해서 사용한다 class Tall { final double height = 100; } class Human with Tall { Human() } void main(){ var human = Human(); ..

카테고리 없음 2023.02.01

플루터 개발에 필요한 다트(Dart) 문법 및 특징 알아 보기 - Set, List, null check 연산자

Set - 모든 항목이 유니크 해야한다. var tempSet = {1,2,3,4} // 이건 셋 Set tempSet = {1,2,3,4} // 이렇게도 가능 tempSet.add(1) print(tempSet) // 결과는 1,2,3,4 만 나옴. // 나중에 추가된 1은 앞에 선언한 1과 중복되기 때문 // 결론적으로 set은 안에 있는 값이 유니크한 것이 보장된다. Named aguments void printHello( required String msg, required String name){ return "$msg $name" } // 이런식으로 required를 붙여주면 파라미터가 절대 빌 수 없다. void main(){ printHello( msg : "hello", name : "D..

Develop 2023.01.31

플루터 개발에 필요한 다트(Dart) 문법 및 특징 알아 보기

Dart의 특징 Google에서 지원함 이게 제일 중요한 부분 Dart Web, Dart Native로 구분됨 Dart, Flutter는 모두 Google에서 만듦 개발자 친화적 변수의 선언 String 같은 명시적 선언 가능 class 나 전역변수, property에 선언할 때 이렇게 씀 var 와 같은 형식의 선언 가능 함수 or 메소드의 매개변수로 사용할 때 이렇게 씀 dynamic 이라는 것도 있음 알아만 두면 될 듯 별로 어렵지 않음. Null Safety Kotlin 과 동일하게 뒤에 ? 를 붙이면 null을 가질 수 있음. final 을 이용해서 상수 선언을 함 앞에 late를 이용해서 변수를 언언할 때 초기화 해줄 필요가 없음. dart의 const는 compile-time에 알고 있어야 ..

Develop 2023.01.30

RecyclerView No layout manager attached; skipping layout

Android RecyclerView를 사용하는데, 정상적으로 아이템을 바인딩 했는데도 보이지 않는 이슈가 잇었다... 이때 아무래도 내가 Flow를 처음 도입해서 이렇게 어이없는 실수를 했을지도 .. (하! ) No layout manager attached; skipping layout Logcat에는 위와 같은 에러가 발생했고, 이 에러를 보는데는 생각보다 오래 걸렸다... 하 확인해 보니 내가 recyclerView에 레이아웃 매니저를 등록하지 않아서 발생하는 이슈였다.. 이렇게 꼭 레이아웃 매니저를 등록해야 에러가 발생하지 않는다.

Develop/Android 2023.01.02

Android EditText 특수문자 제어, NextFocus, 엔터키 처리

안드로이드 EditText를 사용하면 크게 사용하는 것 중 하나가 특수문자 제어 엔터키 처리 라고 할 수 있다. 특수문자 제어 특수문자의 경우 정규식을 통해서 처리 할 수 있다. /**1. 정규식 패턴 ^[a-z] : 영어 소문자 허용 2. 정규식 패턴 ^[A-Z] : 영어 대문자 허용 3. 정규식 패턴 ^[ㄱ-ㅣ가-힣] : 한글 허용 4. 정규식 패턴 ^[0-9] : 숫자 허용 5. 정규식 패턴 ^[ ] or ^[\\s] : 공백 허용 **/ private val editTextFilter = InputFilter { source, start, end, dest, dstart, dend -> val ps = Pattern.compile("[ㄱ-ㅎㅏ-ㅣ가-힣a-z-A-Z0-9()&_\\s-]+$") if..

Develop/Android 2022.12.26

MAC ADB 설치하기

최근에 PC를 MAC으로 바꾸면서 아주 고통받고 있다. 단순히 sdk를 설치하는 것도 구글링을 해야 할 정도 인데, 매번 헷갈리는 환경변수 설정을 기록해 종종 찾아볼 예정으로 작성한다. 우선 맥에서 많이 필요한 건 해당 폴더의 path 값인데, 이것은 Command + Option + C 로 복사할 수 있다. 이후 터미널 앱을 실행 한뒤 .bash_profile을 찾는다. 없으면 touch .bash_profile 명령어를 이용하여 파일을 만들어 준다. 이후 open -e .bash_profile 로 해당 파일을 열어준다. 이후 export PATH=$PATH:{복사한 값} 형태로 실행하면 환경변수를 선언할 수 있다. 정상적으로 저장 후 닫은 다음 source ~/.bash_profile 입력 하여 .b..

카테고리 없음 2022.11.24
반응형