분류 전체보기
-
[원격제어 서비스 준비 2-1편] Foreground Service란회사 생활/모바일 원격제어 서비스 2023. 12. 20. 11:49
Webrtc의 화면 공유를 진행하기 위해서는 먼저 유저에게 화면 공유에 대한 동의를 받고 유저에게 현재 화면 공유를 진행하고 있다는 표시를 해줘야 한다. 이때 사용하는 것이 Foreground Service다. Webrtc 사용전 유저에게 화면 공유에 대한 허락을 받은 후 Foreground가 실행되고 있지 않다면 앱에 오류가 걸려서 나가진다. Foreground Service는 Service를 상속받아 구현한다. Service의 전반적인 지식을 알고 넘어가면 좀 더 이해하기 쉬울 것이다. (링크) 포그라운드(foreground) 서비스 : 포그라운드 서비스는 사용자에게 보여줘야 하는 작업을 수행 (오디오 앱 - 노래 재생) 어플리케이션이 종료되어도, 다른 앱 사용중에도 실행되고 있다. (명시적으로 종료..
-
MVC 패턴 예제안드로이드 학습/Android 기술면접 대비 코드 2023. 12. 14. 15:37
참고 예제 링크: 링크 MVC 패턴을 실습해보았습니다. geeksforgeeks 예제를 살펴보면서 MVC에 패턴에 대해 학습했습니다. Observer()가 deprecated 되었다고 나와서 PropertyChangeListener 대체 해주었습니다. Github 주소 : 링크 MainActivity.kt 더보기 class MainActivity : AppCompatActivity(), PropertyChangeListener, View.OnClickListener { // creating object of Model class private var myModel: Model? = null // creating object of Button class private var button1: Button? ..
-
[원격제어 서비스 준비 1-2편] WebSocket 코드회사 생활/모바일 원격제어 서비스 2023. 12. 8. 10:42
WebSocket 설명 보기 : 링크 Github 전체 코드 보기 : 링크 안드로이드에서 WebSocket은 대부분 Okhttp3 라이브러리를 사용하는 것으로 보인다. 그래서 Okhttp3 라이브러리를 사용하는 간단히 예제를 만들어 보았다. AndroidManifest.xml build.gradle implementation("com.squareup.okhttp3:okhttp:4.2.1") WebSocketHelper 클래스 더보기 import android.util.Log import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response import okhttp3.WebSocket import okhttp3.WebSocketListen..
-
[원격제어 서비스 준비 1-1편] WebSocket이란?회사 생활/모바일 원격제어 서비스 2023. 12. 4. 21:12
WebSocket 예제 보러가기 WebSocket을 알기 위해서는 먼저 HTTP에 대한 지식이 있다면 좀더 이해하기 쉬울 것이다. 1. HTTP란 (HyperText Transfer Protocol) >>> 텍스트 기반의 통신 규약으로 인터넷에서 데이터를 주고받을 수 있는 프로토콜이다. (단방향 통신) 사용자가 http가 포함된 url을 통하여 요청(request)을 하면 서버에서는 해당 요청사항에 맞는 결과를 찾아서 사용자에게 응답(response)하는 형태로 동작한다. 특징이라면 요청이 끝나면 연결되있는 것이 아니라 통신이 끊기게 되고 서버는 Client를 기억하지 않는다 (Stateless) Stateless와 Stateful의 의미 : 더보기 Stateless는 클라이언트와 서버 관계에서 서버가 ..
-
안드로이드 화면 공유 및 원격 제어 (WebRTC + Accessibility Service)회사 생활/모바일 원격제어 서비스 2023. 11. 27. 11:02
현재 내가 다니는 회사에서 여러가지 금융 서비스를 제공하고 있는데 그중에 하나가 웹에서 원격으로 모바일 화면을 보고 을 제어하는 서비스를 제공하고 있다. 현재는 회사에서 자체 개발한 서비스가 아닌 'Cobrowse.io'라는 회사의 솔루션을 사용하고 있다. 하지만 현재 회사의 CS팀에서 많이 사용하지는 않지만 매달 약 400달러 정도의 비용이 나가고 있어서 솔루션 업체만큼의 퀄리티는 아니더라도 간단히 대체할수 있는 서비스를 구현하는 업무가 할당되었다. 내가 회사에 입사해서 거의 초창기에 했었던 일이 생각났다. 중간에 안드로이드 정책의 변화에 따라 원격제어를 위해 사용하고 있던 Accessibiltiy Service라는 것이 때문에 앱 출시만으로도 골치 참 아팠었다. (참고: 링크) 그래도 이때는 새로 개..
-
CameraX api 5-2편 : OCR + 여권(MRZ + NFC)회사 생활/여권 NFC (CameraX + OCR + NFC) 2023. 11. 25. 15:30
4편에서 OCR과 5편에서 MRZ부분을 다뤘기 때문에 NFC부분만 다루겠다. 우선 먼저 안드로이드에서 여권 NFC를 하기위해 필요한 라이브러리 부터 불러온다. build.gradle(app) implementation 'org.jmrtd:jmrtd:0.7.18' implementation 'net.sf.scuba:scuba-sc-android:0.0.18' implementation 'com.madgag.spongycastle:prov:1.58.0.0' implementation 'edu.ucar:jj2000:5.2' implementation 'com.github.mhshams:jnbis:1.1.0' 그리고 NFC를 하기위해 필요한 여권번호, 생년월인, 여권만료일자를 가져온다. val intent: I..
-
CameraX api 5-1편 : OCR + 여권(MRZ + NFC)회사 생활/여권 NFC (CameraX + OCR + NFC) 2023. 11. 24. 20:11
CameraX 1편부터 4편까지 학습한 이유는 바로 회사에서 했었던 여권 MRZ 정보와 NFC로 정보 읽어오는 업무가 주어졌기 때문이다. 이번 프로젝트는 여러 오픈소스들과 CameraX API 학습한 내용을 조합해서 새로 만들어봤다. 우선 흐름을 간단히 살펴 보자면 : 1) CameraX API 카메라의 Analysis를 통해 실시간 Image 데이터를 가져온다. 2) Android MLKit을 활용해서 Image 데이터 내에 있는 Text를 OCR을 통해 가져온다. 3) 여권 MRZ라인을 통해 가져온 Text를 사용 가능한 정보로 변환한다. 4) 3번에서 얻어온 정보를 이용해서 여권 NFC를 통해 이미지와 여러 데이터를 가져온다. 앞에 Camera 1편 ~ 4편 내용은 1번 2번을 한 것이고 5편은 3..
-
CameraX api 번외편 : guideline에 따라 이미지 자르기회사 생활/여권 NFC (CameraX + OCR + NFC) 2023. 11. 20. 18:37
더보기 카메라를 사용하면서 camera preview 안에 사각형 모양의 가이드 라인이 있고 가이드 만큼만 잘라서 사용해야 하는 상황을 만났다. 구체적으로 얘기하자면 아래 여권사진에서 mrz라고 하는 부분만 잘라서 해당 문자열을 이용해서 데이터를 추출하고 활용해야 하는 상황을 만났다. 그래서 이미지 자르는 방법을 공부해 봤다. 프로젝트 스크린샷 더보기 하지만 이게 만만치 않다. 그냥 생각 없이 Preview를 전체화면으로 놓으니 Preview화면과 실제 이미지가 저장되는 사진의 영역이 다르다. 그래서 화면을 16:9나 4:3처럼 카메라가 지원하는 비율로 맞춰야 사진이 Preview 영역과 똑같이 나온다. 해결 방법 : 그래서 강제로 16:9를 맞춰줬다. CameraX의 Preview 화면을 xml로 추가..
-
CameraX api 4-2편 : Analysis + OCR + TextGraphic회사 생활/여권 NFC (CameraX + OCR + NFC) 2023. 11. 18. 14:42
4편에서는 CameraX api와 구글 MLKIT을 이용해서 Preview의 실시간 화면과 캡쳐된 화면에서의 Text 화면에서 Text를 불러왔다. 이거는 CameraX api 활용하는 것과는 별로 상관 없지만 화면에 그림이 그려지는 것에 관심이 생겨서 읽어온 화면에서 Text가 그려지는 코드를 만들어 보려고 한다. 4편에서 추가된 코드 : GraphicOverlay.kt 더보기 import android.content.Context import android.content.res.Configuration import android.graphics.Canvas import android.graphics.Color import android.graphics.Paint import android.graphi..