반응형

전체 글 38

constraintHeight_percent와 RecyclerView스크롤 이슈

문제상황) 위 아래로 2개의 ConstraintLayout를 적용한뷰가 1:1의 비율을 유지하기 위해 app:layout_constraintHeight_percent = 0.5를 적용한 상태에서 ConstraintLayout안에있는 RecyclerView의 스크롤이 정상적으로 동작하지 않았다.(처음 스크롤시 버벅거림) 원인) constraint전체에 app:layout_constraintHeight_percent를 적용하고 그안에 리사이클러뷰를 사용하면 스크롤이 중복으로 불리는 이슈가 있다. 해결) layout_constraintHeight_percent를 제거하고 다음과 같이 GuildeLine을 사용해 해결 app:layout_constraintGuide_percent="0.5"

업무 2023.11.30

Camera2 API 개념부터 구현까지

- 개념 하나의 안드로이드 디바이스는 여러개의 카메라를 갖고있다. 각각의 카메라는 CameraDevice라 정의된다. CameraDevice는 Raw데이터에서 Preview, Photo, Record 스트림을 동시에 출력하며 Device마다 각기 다른 pipeline을 갖고있다. 이러한 pipeline은 CameraCaptureSession이 갖고있으며 CaptureRequest를 통해 선택된 pipeline으로 CameraDevice로 부터 나온 frame을 전달받는다. CaptureSession이 살아있는동안 수많은 CaptureRequest를 보낼 수 있다. 각각의 CaptureReuqest는 active configuration을 바꿀 수 있고, 파이프라인도 선택 할 수 있다. 구성요소) Cama..

Android 2023.04.06

안드로이드 커스텀 뷰(Custom View)

Android View를 상속받아서 새로운 뷰를 만드는 것 커스텀뷰를 만드는 방법 1. XML에 레이아웃을 직접 만들어 View를 가져오는 방법 - LayoutInflater 혹은 Binding을 이용해 레이아웃 소스를 addView()해서 사용함 class CustomViewTest @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 ) : ConstraintLayout(context, attrs, defStyleAttr) { private val binding = CustomViewTestBinding.inflate(LayoutInflater.from(context), this, t..

카테고리 없음 2022.11.22

Android Paging3 개념정리 및 사용기

Paging 개념 데이터 목록을 일정한 덩어리로 나눠서 제공하는것 한번에 모든데이터를 불러오면 높은 리소스를 사용하기에 페이징 처리를 하게되면 성능, 메모리, 비용 측면에서 매우 효율적이다. Android Jetpack 라이브러리에서 제공하는것으로 Paging3 라이브러리가 있다. 이를 이용하면 사용자가 로드된 데이터의 끝까지 스크롤할 때 RecyclerView 어댑터가 자동으로 데이터를 요청한다. Paging3에 새로 도입된것 Paging3에서 가장 크게 달라진 점은, 기존 Paging2에서 여러가지 방법으로 DataSource 처리를 하던 부분이 PagingSource 하나로 통합 되었다는 점이다. 그 외 내용으론 아래와 같다. - Paging3 라이브러리는 Android 앱 아키텍처를 따르고 Kot..

Android 2022.07.06

Android Room

Room 이란? 안드로이드는 데이터관리시스템으로 SQLite를 사용하는데 그 위에서 사용할 ORM 라이브러리를 룸이라한다. 즉, 안드로이드 로컬 저장장치를 쉽고 편하게 사용할수 있는 라이브러리 ORM? DB테이블을 object로 맵핑시키는것 Room의 구성요소 3가지 1. Entity 하나의 정보 단위 이자 데이터베이스에 저장할 테이블 2. Data Access Object 인터페이스에 메소드를 정의함으로서 데이터베이스를 통해 수행할 작업을 정의한다. 주로 DAO라고함 3. Room Database 사용할 데이터베이스 Room의 사용방법 1. dependancy 추가 implementation("androidx.room:room-runtime:2.4.2") kapt("androidx.room:room-c..

Android 2022.06.15

안드로이드 애니메이션

애니메이션의 종류 Animation클래스 vs Animator클래스 Animation은 Animator의 이전 버전이라 보면된다. 낮은 버전에서는 아직 Animation을 쓰지만 대부분의 앱은 이제 Animator를 쓰는 추세다. ViewPropertyAnimator 특징) 하나의 뷰에서만 애니메이션이 동작하길 원하고 간단한 애니메이션을 만들때 사용 반복적, 순차적, 동시적인 애니메이션 구현 불가 사용) View의 aniamte()메소드를 통해 ViewPropertyAnimator를 return한다. binding.textView.animate() .scaleX(0.5f) .scaleY(0.5f) .setDuration(3000) .withStartAction { } //애니메이션 시작시 .withEnd..

Android 2022.06.08

WebRTC Android 구현

WebRTC란? 소켓을 통해 Peer간 비디오, 음성 및 데이터 전송을 지원해주는 통신 솔루션 API WebRTC는 여러 API를 갖고있으며 그중 RTCPeerConnection을 사용하여 커뮤니케이션한다. * 소켓이란? 프로세스가 네트워크로 데이터를 내보내거나 받기위한 창구 비디오 스트림을 카메라로부터 가져와 뷰에 표시하는 단계) 출처 : https://juyoung-1008.tistory.com/25 1. PeerConnectionFactory생성후 초기화 2. 장치의 카메라를 사용해 카메라에서 이미지/비디오를 가져오는 VideoCapturer인스턴스 생성 3. VideoCapturer로부터 VideoSource생성 4. VideoSource로부터 VideoTrack생성 5. SurfaceViewRe..

Android/WebRTC 2021.11.30

WebRTC와 Mediasoup

개념 WebRTC 는 기본적으로 P2P 프로토콜이다. 1:1 통신의 경우 중간에 서버를 경유할 필요가 없이 직접 Peer 간 연결이 되면 되지만 N:N 통신의 경우 Peer들 간에 Mesh 형태로 트래픽이 발생되고 Peer에서 들어오는 Traffic 을 Mixing 해야 한다. 그래서 P2P의 한쪽 Peer에 Server를 두고, 들어오는 Traffic을 Server에서 Mixing 해서 내보내는 MCU(Multipoint Control Unit) 방식과, Mixing 하지 않고 Traffic을 선별적으로 배분해서 보내주는 SFU(Selective Forwarding Unit) 방식이 있다. 즉, MCU는 수신되는 미디어 영상을 조작하고 전송하지만 SFU는 수신된 미디어를 그대로 포워딩 해준다. 그 중 ..

Android/Mediasoup 2021.11.17

0) Android Graphics architecture

OpenGL을 시작하기전에 안드로이드의 그래픽구조와 요소들을 먼저 파악한다. 이글은 안드로이드 공식 문서와 'Tech Writing의 끝장' 블로그의 글을 참고 하였습니다. 1. BufferQueue 및 Gralloc 안드로이드에서 모든 그래픽 요소들의 중심에는 BufferQueue라는 클래스가 있다. 그래픽 데이터 버퍼들을 생성하는 컴포넌트 ("생산자")와 이 데이터를 받아서 디스플레이 하거나 추가 프로세싱을 하려는 컴포넌트 ("소비자")를 연결시켜주는 것이다. 생산자와 소비자는 서로 다른 프로세스에 존재할 수도 있다. 시스템 전반에 걸쳐 그래픽 데이터 버퍼를 이동시키는 거의 모든 작업들이 BufferQueue를 통해 처리된다. dequeueBuffer()를 호출하여 BufferQueue에서 프리 버퍼..

Android/OpenGL ES 2021.09.28
반응형