Android의 Canvas에 그려보자 : 유용한 그래픽스 클래스와 기능들

원문 : https://medium.com/over-engineering/android-canvas-drawing-useful-graphics-classes-operations-2803e435e848 안드로이드 캔버스에 뭔가 그리는건 상당히 힘든 작업입니다. 많은 클래스와 개념들이 뭔가 그릴 때 이해를 돕기 위해 존재 합니다. 만약 이전 포스트를 읽지 않았다면꼭 먼저 참고해보시기 바랍니다. 이 포스트에서는 안드로이드 프레임워크에 포함되어있고 캔버스를 사용할 때 유용한 몇몇 클래스들에 대해서 알아 보겠습니다. Rect / RectF top, left, right, bottom 이 4가지 더보기…

Android의 Canvas에 그려보자 : 선, 도형 그리고 그림까지!?

원문 : https://medium.com/over-engineering/getting-started-with-drawing-on-the-android-canvas-621cf512f4c7 안드로이드 Canvas 클래스에 빠지면 당신이 몰랐던 수퍼파워매직한 일들을 할 수 있습니다. 마음속에 있는 도형, 선, 그리고 그림까지 다 그릴수 있는게 상상이 되시나요?  안드로이드 캔버스가 도와줄거에요. 안드로이드 캔버스는 뭘까요? Canvas는 안드로이드 플랫폼에 포함되어있는 클래스로써 2차원적인 오브젝트를 화면에 그리는 것을 돕습니다.  Canvas라는 것이 안드로이드에서 등장한 새로운 개념은 아닙니다. 안드로이드 Canvas는 더보기…

안드로이드에서의 HEIF/HEIC 포맷

HEIF란? HEIF(High Efficiency Image Format)는MPEG에서 개발된 이미지 포맷으로 HEIC (High Efficiency Image Container)라고도 불립니다..H.265/HEVC코덱을 활용하여 이미지를 저장할 수 있는 별도의 이미지 컨테이너입니다. 즉, HEVC 코덱으로 저장된 비디오의 스틸 이미지를 담아두는 것이죠.  iOS의 라이브포토를 생각하시면 좋을것 같습니다. Android는 P 부터 지원합니다. 특징 컨테이너 형식으로 여러 이미지를 한파일에 보관 가능 iOS 11, 더보기…

Android CameraX 라이브러리 미리보기

CameraX는 Jetpack에 포함된 서포트 라이브러리로 카메라 앱 개발을 쉽게 할 수 있도록 도와 줍니다. 특징 Camera2를 사용하므로 Android 5.0 (API level 21)까지만 지원 유즈케이스 기반으로 설계되어 Preview, Image Processing, Image Capture 유즈 케이스 동시 지원 생명주기를 인식함 장치 호환성 문제 해결함으로 기기별 분기코드 감소 특정 디바이스에 종속되는 Bokeh, HDR 더보기…

안드로이드 카메라 스트림 동시에 여러개 사용하기

안드로이드 카메라 스트림 동시에 여러개 사용하기 이 포스팅은 다음과 같은 내용을 포함합니다. 하나의 카메라로 여러개의 스트림을 동시에 사용하는것 하나의 캡쳐 리퀘스트로 다른 속성을 가진 타겟들을 결합하는것 출력타입, 출력사이즈, 하드웨어 수준을 선택하고 조회하는 방법 SurfaceView와 ImageReader의 Surface를 셋팅하고 사용하는 방법 여러개의 카메라 스트림을 사용하는 사례 카메라를 사용하는 앱은 두개이상의 스트림을 동시에 더보기…

[OpenGL] 12. GLSurfaceView와 Camera2로 카메라 영상 그리기

GLSurfaceView with Camera2 GLSurfaceView로 카메라 영상을 나타내는것은 MediaPlayer로 동영상 플레이어 만드는 법과 비슷합니다. 기본적인 흐름은 이렇습니다. Note:카메라를 사용하기 위해 메니페스트에 해당 퍼미션 사용을 선언하고,  런타임 퍼미션을 체크합니다. 카메라를 열고 프리뷰세션을 만들어 캡쳐리퀘스트를 반복적으로 수행하는것은 이전 포스트인 카메라2에서 확인하실 수 있습니다. 이번 포스트의 핵심은 GLThread에서 생성한 텍스처를 이용하여 Surface를 생성해내는 것입니다. 먼저 Texture를 더보기…

Camera2 Basic 소스 살펴보기

  카메라 Android의 카메라 HAL (Hardware Abstraction Layer)은 Camera 2의 상위 수준의 카메라 프레임 워크 API를 기본 카메라 드라이버 및 하드웨어에 연결합니다. 카메라 서브 시스템은 카메라 파이프 라인 구성 요소에 대한 구현을 포함하는 반면 카메라 HAL은 이러한 구성 요소의 버전을 구현하는 데 사용할 인터페이스를 제공합니다. 구조 다음 그림과 목록은 HAL 더보기…

Vector 이미지 포맷 이해하기

Vector 이미지 포맷 안드로이드 기기는 다양한 화면 크기, 모양 및  밀도로 제공됩니다. 그래서 각 스크린에 맞는 리소스를 준비하는것은 까다롭기 마련이죠. 벡터를 이용한다면 화질손실 없이 화면 밀도에 맞게 크기를 조정할 수 있습니다. 또한 비트맵 대신 벡터 리소스를 사용하면 APK 사이즈가 줄어듭니다 비트맵 이미지와 벡터 이미지의 차이 대부분의 이미지 형식 (png, jpeg, 더보기…

[OpenGL] 11. GLSurfaceView와 MediaPlayer로 동영상 플레이어 만들기

Video Player based on GLSurfaceView 텍스처 있는 사각형 만들기까지 성공했다면, Android OpenGL ES에서 동영상 플레이어를 구현하는 방법자체는 간단합니다. SurfaceTexture에 대한 기본적인 내용을 알고 계시다면 더욱 이해하기 쉽습니다. 쉐이더 코드부터 차근차근 살펴보겠습니다. 버텍스 쉐이더코드는 텍스처 있는 사각형 만들기에 있던 것과 같아 생략합니다.

위의 코드는 프레그먼트 쉐이더 코드 입니다. 달라진점을 보면 GL_OES_EGL_image_external 더보기…

Android의 SurfaceTexture

SurfaceTexture SurfaceTexture 클래스는 Android 3.0에 도입되었습니다. SurfaceView가 Surface와 View의 조합 인 것처럼 SurfaceTexture는 대략적으로 따지자면 Surface와 GLES 텍스처의 조합입니다. SurfaceTexture를 만들 때 BufferQueue를 생성하게됩니다. 새로운 버퍼가 큐에 저장되면 앱은 콜백 (onFrameAvailable ())을 통해 콜백을 받습니다. 이때 updateTexImage()를 호출하게되는데, 이 버퍼는 이전에 보유한 버퍼를 릴리즈하고 대기열에서 새 버퍼를 가져 오며 일부 더보기…