안드로이드 192

웹뷰 shouldOverrideUrlLoading 호출되지 않을 때.

질문 : 웹뷰 처음에 web url 호출할 때 shouldOverrideUrlLoading 이거 호출된 후에 그 다음엔 다음 페이지 같은거 이동될 때 호출 안되는데요 페이지 이동 되면 원래 호출 되야 하지 않나요!? 지인 답변 :웹 구현방식에 따라 다름, 페이지 링크로 새로 이동되면 호출될거고, 내부적으로 라우팅방식 이동이면 호출안될수 있음정확한 답은 아닙니다! 프론트에 물어보니 href로 이동? 그냥 url이 변경 된다고 함 그래서 좀 더 검색 해보다가 doUpdateVisitedHistory 를 발견. 이 방법으로는 History를 확인 할 수 있었다.@Override public void doUpdateVisitedHistory(WebView view, String url, boolean isRel..

안드로이드 2023.04.04

[Android] 통화관련 블루투스 Audio (Audio Control)

통화관련 블루투스 Audio 제대로된 방법이 아닐 수 있습니다 !! 통화 관련 SDK를 이용하고 있고, 블루투스를 이용하여 Audio Control을 해야 하는 상황. 참고로 OS 12이상에서는 BLUETOOTH_CONNECT 권한 필요(연결된 디바이스 가져오려면) 1. 휴대폰의 블루투스가 Enable / Disabled 되어있는지 확인하기 bluetoothAdapter = BluetoothAdapter.getDefaultAdapter() publishEnableBluetooth(bluetoothAdapter?.isEnabled == true) publishEnable함수는 EventBus를 통해 뷰쪽으로 값 전달 하는 함수. 2. 브로드 캐스트 액션 등록 - 블루투스 STATE값 가져오기. val in..

안드로이드 2023.01.06

[Android] 뷰페이저안에 웹뷰안에 뷰페이저

ViewPager안에 WebView안에 ViewPager 뷰페이저 안에 웹뷰 터치 중복 [액티비티 뷰페이저] 안에 [프래그먼트]들 안에 [웹뷰]안에 [배너 페이저]가 있는데 [액티비티 뷰페이저]와 [웹뷰 뷰페이저]가 터치가 중복되는 문제가 생김. ViewPager 내부, webView 가 있는 경우, inApp 에 swipe 아이템 이 있는 경우의 이벤트 처리 - onTouchEvent(ACTION_DOWN) 에서 viewPager 의 paging 을 비활성화 처리 - onOverScrolled (inApp에서 swipe 처리 하지 않는 경우 호출됨) 에서 paging 을 다시 활성화 처리 뷰페이저 컨트롤러 클래스 생성 public interface ViewPagerController { void set..

[Android] Fragment 에서 ActivityResultLauncher 사용시 앱 죽는 문제

ActivityResultLauncher 사용시 앱 죽는 문제 You must ensure the ActivityResultLauncher is registered before calling launch 가 발생하면서 앱이 죽는 이슈가 생겼다. # 상황 뷰페이저 - [홈], [죽는화면], [다른 화면], [다른 화면2] [죽는 화면]에서 첫 진입시 ActivityResultLauncher를 통해 가이드 화면으로 이동 시켜주어야 함. [다른화면2] -> [죽는화면]으로 이동시 앱 죽음. = 아마 [다른화면2] 갔을 때 [죽는화면]이 destroy되고 ActivityResultLauncher가 초기화 되지 않아서 죽는 것 같다. # 해결 onDestroy()에 ActivityResultLauncher 변수를..

Hilt 의존성 주입과 Fragment 문제

Hilt 의존성 주입과 Fragment를 같이 사용한다면 setRetainInstance() 사용하면 안됩니다 setRetainInstance() 를 사용하게되면 구성이 변경되어도 Fragment의 인스턴스가 유지되어 Hilt사용시 생성되는 Hilt_MyFragment.java ->onAttach() -> Preconditions.checkState() 에서 throw 될 수밖에 없습니다. Activity의 바인딩이 완료되기 전에 fragment의 onViewCreated() -> initializeViews() -> RequiredActivity() as ... 가 호출됨 Activity를 바인딩할 때 Inflate 과정에서 fragment를 바인딩하게되는데 이 때 Activity의 바인딩이 끝나지 않..

GoogleCloud Speech (STT)에러

처음 구현했을 때에는 되었는데 갑자기 안된다.. 1. https://stackoverflow.com/questions/64668851/why-the-firestore-isnt-working-on-android-studio io.grpc:grpc-okhttp:1.10.0 → io.grpc:grpc-okhttp:1.32.2 2. google-cloud-speech → google-cloud-speech:1.29.1로 올려봄. 3. gradle library 버전을 바꾸면서 각각 제공하지 않는 메소드가 잇는것 같다… 많이 사용하는 것 같은 버전 적용. https://mvnrepository.com/artifact/com.google.cloud/google-cloud-speech https://mvnreposi..

Google Cloud Speech (STT) 설정

구글 클라우드 무료 체험 신청 https://console.cloud.google.com/getting-started 주소 및 결제 정보 입력하여야 한다. Cloud SDK 설치하기 프로그래밍 라이브러리를 설치하거나 참조하는 부분은 모두 제외한다 하더라도 인증을 받는 용도로 gcloud 커맨드 도구룰 설치해야 합니다. https://cloud.google.com/sdk/ gcloud CLl 설치하기 나는 macOS 64비트 다운받아서 압축을 풀었다. 프로젝트 만들기 구글 Cloud Platform에 신규 프로젝트를 만듭니다. https://console.cloud.google.com/projectselector2/apis/enableflow?apiid=speech.googleapis.com&support..

안드로이드 2022.11.24

SimpleCall (카카오엔터 SDK) & STT문제

1. 안드로이드 내부 API - SpeechRecognizer를 통해 STT테스트를 해보았습니다. 통화중이 아닐 때에는 마이크로 전달한 음성이 제대로 인식이 되는데 통화중일때에는 SpeechRecognizer.ERROR_NO_MATCH라는 에러가 발생합니다. 통화중 아닐 때 계속 내부적으로 입력 받는것을 인식 통화중일 때 onRmsChanged가 한번만 불리면서 몇초 뒤에 onError 7이 떨어집니다. AudioFocus 처음에 통화 연결되면 -2로 AUDIOFOCUS_LOSS_TRANSIENT로 되고 그뒤에 통화를 종료하면 AUDIOFOCUS_REQUEST_GRANTED로 변함. 2. 구글 클라우드 API 이것도 통화중이 아닐 때에는 음성이 제대로 인식 & 인식 끝이 제대로 되는데 통화중일때에는 마이..

ScopeStorage 저장공간에 대한 정의

ScopeStorage 저장공간 정의 안드로이드의 저장소는 크게 내부 저장소(Internal Storage)와 외부 저장소(External Storage)로 나뉩니다. 내부 저장소는 /data/ 아래 경로의 파일들을 의미하고, 외부저장소는 /storage/ 아래 경로의 파일들을 의미합니다. [내부저장소(Scoped 영향 X)] (내부-앱) 가장 기본적으로 /data/data와 /data/user/0 폴더가 존재한다. /data/user/0은 /data/data의 soft-link에 해당한다고 한다. 참조 : 참조링크 내부저장소 file 접근 방법 : getFilesDir().getPath() [Q 이전 외부저장소] (외부-ROOT) -/sdcard(루트경로)/, /storage/ 에 자유롭게 마구잡이로 ..

안드로이드 2022.11.14