본문 바로가기

Android62

ExoPlayer / Player Player란? 'Player' 클래스는 미디어 재생을 관리하고 제어하는 ​​데 핵심적인 역할을 한다. 핵심적인 역할은 다음과 같다. 미디어 제어 : Player는 미디어 재생을 위한 리모컨과 같다. 이를 사용하여 오디오 또는 비디오 콘텐츠의 재생을 시작, 일시 중지, 재개 및 중지한다. Track 관리 : 오디오, 비디오, 텍스트(자막) 등 다양한 트랙을 관리한다. 'Player'를 사용하면 활성화된 트랙을 제어하고 해당 설정을 조정할 수 있다. 미디어 세션 통합 : Jetpack Media3의 Player는 Android 미디어 세션 API와 통합된다. 이는 시스템 미디어 컨트롤과 원활하게 작동하여 사용자가 알림 컨트롤, 잠금 화면 및 기타 외부 인터페이스에서 재생을 제어할 수 있음을 의미한다. 이벤.. 2023. 11. 6.
MPEG-DASH 란 들어가기 전 Adaptive Streaming 은 적응형 스트리밍으로 사용자의 네트워크 상태에 적응해서 스트리밍을 해주는 기술이다. 동영상 콘텐츠를 다양한 해상도로 인코딩해서 저장하고 이를 잘게 잘게쪼개어 저장을 해놨다가 사용자의 네트워크 상황에 따라서 최적의 동영상 콘텐츠 조각을 가져와 스트리밍 해주는 방식입니다. 대표적으로 Youtube가 이러한 방식이다. 통신 상황에 따라서 자동으로 해상도가 좋아졌다 나빠졌다하는걸경험해보셨을 것이다. 이를 이용하면 서비스를 제공하는 서버의 트래픽을 관리할 수 있을 뿐 아니라 사용자는 끊기지 않고 동영상 시청이 가능하게 된다. MPEG-DASH 란 MPEG-DASH는 국제 표준화된 최초의 적응 비트레이트 HTTP 기반 스트리밍 솔루션이다. 이전에는 동영상을 통째로 받.. 2023. 11. 3.
DroidKnights - Jetpack Media3로 좋은 콘텐츠 소비 경험 구현하기 이번 글은 DroidKnights에서 발표한 류기민님의 Jetpack Media3로 좋은 콘텐츠 소비 경험 구현하기를 정리한 글입니다. 이전에는.... 2000년 중 후반쯤, 우리가 동영상을 볼 때 위와 같은 버퍼링표시를 보곤 했었다. 이때는 스트리밍이 고려되지 않은 상태여서 파일을 통째로 전달받아 재생하는 형태였다. 이때는 1%도 되지 않으면 재생이 되지 않았었다... 그랬던 시절을 지나... 2010년에 들어서 모다일 시장이 열려 스트리밍 시장이 확대되었다. 그래서 스트리밍을 위한 국제 표준 기술이 등장하게되는데...!! DASH Dynamic Adaptive Streaming over HTTP ISO 표준으로 개발된 HTTP Adaptive Streaming 의 한종류이다. Adaptive에서 알 .. 2023. 11. 2.
Image Loader info 이번 목차에서는 Image Loader에 대해서 정리하는 글을 적으려 한다. 나는 다양한 SNS앱들의 빠른 이미지 로딩을 보며 어떻게 구현했길래 이미지를 로딩하는 화면을 안정적으로 동작시키는지가 궁금해졌다. 사실 나는 안드로이드 개발을 하면서 Glide, Piccaso, Coil 등등 Third Party 라이브러리만 사용만 해봤지 어떤 프로세스를 가지고 있는지, 이들의 차이점들에 대해서는 깊게 공부하지 않았기에 이번 글에서 정리해볼 예정이다. 이미지 로딩 라이브러리는 무엇인가? https://d2.naver.com/helloworld/429368 위의 블로그를 읽으면 이해가 된다. 그니까 이렇게 엄청나고 귀찮은 단계를 거쳐야하는 것을 처리해준다는 것이다. 위의 블로그에 작성된 엄청나고 귀찮은 .. 2023. 10. 22.
CustomBottomSheet CustomBottomSheet 2023. 10. 14.
디자인 시스템을 담당하며 겪었던 일들 https://yozm.wishket.com/magazine/detail/1846/ 디자인 시스템 구축기: ③타이포그래피와 프로젝트 관리 | 요즘IT 디자인 시스템은 디자인 원칙과 규격, 재사용할 수 있는 UI 패턴과 컴포넌트, 코드를 포괄하는 시스템을 말한다. 디지털 제품 개발 환경에서 이러한 디자인 시스템은 점점 더 중요해지고 있다 yozm.wishket.com https://medium.com/mesmerhq/designing-accessible-text-for-android-variable-font-and-screen-sizes-392fd386aea5 Designing accessible text for Android: variable font and screen sizes Designing An.. 2023. 9. 19.
RecyclerView 안드로이드 개발자라면 당연히 아는 Recyclerview. 나는 사용법에 대해서만 띄엄띄엄 알 뿐, 완벽하게 이해하고 사용하고 있지는 않은 거 같아 이번 블로그를 작성하며 완벽히 알고서 사용해보로록 하자. 이전에는.... 고대의 안드로이드 개발자들은 위와 같은 ListView를 만들 때 ListView라는 라이브러리를 사용했었는데....(필자의 처음 개발할때도 ListView를 사용) 아래와 같은 문제점이 있었다. 뷰 재사용 : 뷰를 재사용하기 위해 복잡한 코드를 작성해야 했고 다른 비슷하지만 획일화 되지 않는 어떠한 패턴을 사용하여 개발하였었다.(당시의 블로그를 가보면 다들 만드는 법이 다 다름) 레이아웃 유연성 : ListView는 세로 스크롤을 지원하는 선형 리스트만을 제공해서 좀더 복잡한 뷰를 그.. 2023. 8. 24.
에러 추척 Firebase Crashlytics Android앱을 개발하여 GooglePlayStore에 배포를 하면 많은 이용자들이 사용하게 되는데 사용자들에게서 에러가 발생하여 앱이 강제로 종료된다고 컴플레인이 들어오곤 한다. 그럴때 나는 분명 잘해서 올렸는데 이놈의 안드로이드는 수많은 기기를 대응해야 하기에 직접 확인해보지 않는 이상 알 수 가없다. 이럴때 사용하는 방법은 파이어 베이스의 크래시리틱스(Crashlytics) 라는 기능이다. 파이어 베이스에서 시키는 데로 설정을 해주고 아래와 같이 Crash 버튼을 만들어 테스트를 해보면 아래와 같이 Crash가 난 위치를 알 수 있다. 소감 : 진짜 옛날 개발자들은 어떻게 CS 처리를 한 것인가 의문이 든다....!!! 2023. 8. 14.
Retrofit에 대해 알아보자. 먼저 글을 작성하기 전 안드로이드 진형에서 가장 많이 사용되는 네트워크 통신 라이브러리는 Retrofit이다. 나는 Retrofit을 사용하는 방법에 대해서만 알지 완전히 쏙쏙 사용하는 방법은 알지 못한다... 그래서 이번에 완벽 정리하는 겸해서 작성해보겠다. Retrofit이란 먼저 GPT 선생에게 물어보자. Retrofit은 Square 사에서 개발한 네트워크 통신 라이브러리로, REST API와 통신하기 위해 사용됩니다. Retrofit은 안드로이드 앱이 REST 기반 웹 서비스와 손쉽게 통신할 수 있게 해주며, 필요한 데이터를 빠르게 얻어오는 데 도움을 줍니다. - Retrofit의 장점은 다음과 같습니다: 1. 통신 코드를 간결하게 작성할 수 있습니다. 2. 비동기와 동기 호출 모두를 지원합니다.. 2023. 8. 12.
MedioPlayer에서 ExoPlayer로 전환하는 이유(1) 나는 오늘 한통의 CS를 받았다. 우리가 제공하는 서비스 중 문장을 따라 말하고 녹음하여 분석하고 자신이 녹음한 내용을 들려주는 기능이 존재한다. 그런데 그간 녹음 했던 파일들이 들리지 않는다는 것 이였다. 나는 당연히 고객이 실수 했거나 기기의 문제일 것이라고 생각했지만 고객은 자신의 기기는 이상이 없으니 알아서 고치라고 으름장을 놓았다. 나는 급하게 서버측에 저장된 녹음파일을 확인했더니 왠걸 잘 저장되었고 해당파일은 IOS나 웹에서는 잘 들이는 것이였다......! 나는 모든 케이스의 시도를 해보았고 다른 기기에서 녹음했을때는 이상없이 잘 작동하기에 기기의 문제가 확실한데 IOS와 웹은 해당 파일의 녹음본이 잘 들린다하니.....진짜......... 고객의 불타는 요구에 겨우 겨우 CX팀에게 부탁하여.. 2023. 8. 11.
네비게이션 실전편 GitHub - tnvnfdla1214/Portfolio Contribute to tnvnfdla1214/Portfolio development by creating an account on GitHub. github.com 이번 포스터에는 그간 네비게이션을 학습한 내용을 바탕으로 예제를 만들어 보았다. 예제의 목표는 1. SAA - 구조 2. 프레그먼트 -> 프레그먼트 이동 3. 바텀네비게이션바를 이용한 화면이동 (JetPack Navigation 사용) 1. SAA - 구조 현재 프로젝트의 구조는 위의 사진과 같다. 먼저 주체가 되는 MainActivity와 MainActivity의 전체 화면을 담당할 MainFragment 이번 예시로 개발된 MainFragment영역에서 replace될 NavBa.. 2023. 8. 7.
Single Activity Architecture(SAA)란? 구글은 2018년 Single Activity에 관련된 주제로 Dev Summit을 열었고 위의 내용은 Jetpack의 Navigation을 활용하여 Single Activity를 사용하라고 권장하였다. 그럼 SAA는 무엇인가? 정의는 간단하다. 하나의 Activity와 여러 개의 Fragment를 사용하여 프로젝트를 설계하는 구조이다. 이는 Navigation component 활용하여 보다 쉽게 구조를 설계할 수 있다. 그렇다면 SAA 구조로 설계하는 것은 어떠한 장점이 있을까? 이는 Acitivity와 Fragment의 차이에 대해 생각해보면 설명이 가능하다. 장점 Activity는 Fragment 보다 무겁기 때문에 메모리나 속도 측면에서 이득이다. Activity보다 유연한 UI 빌드가 가능하다.. 2023. 8. 2.
네비게이션이란 (1) 기존에는 프레그먼트를 전환하기 위해 FragmentManager을 사용해왔다. supportFragmentManager.beginTransaction() replace(R.id.frame_layout, TestFragment()) commit() 그런데 구글에서는 JecPack이 도입된 후 FragmentManager을 사용하지 말고 Navigation을 사용하라고 권장하고 있다. 또한 Single Activity Architecture(SAA)를 제안하며 여러가지 문제가 있을 상황을 최대한 낮추고 가능하면 프레그먼트로 화면을 구성하라고 권장했다. SAA 블로그 글 링크 결론은 화면은 최대한 프래그먼트로 전환하고 화면의 전환은 라이브러리에 맞기라는 뜻이다. Navigation의 3대 컴포넌트 Naviga.. 2023. 8. 2.
하나의 프로젝트에서 여러 다른 버전의 앱을 만들어 보자!(2) - 딥링크, 앱링크 이번 글은 DeepLink에 대해서 알아보도록 하자. DeepLink란 딥링크를 사용하면 유저가 앱과 앱을 오가는게 쉬워진다. 웹과 마찬가지로 앱에서도 링크를 통해 특정 콘텐츠로 이동할 수 있는 기능이다. 채팅, 광고, 푸시 알림 등에서 사용자를 특정 앱 화면으로 바로 연결할 수 있습니다. 예를 들어 우리가 모바일 게임을 사전 등록 했다가 출시 당일이 되면 링크가 날라온다. 해당 링크를 클릭하면 스토어로 이동하게 되는데 만약 앱이 설치한 후 다시 링크를 누르게 되면 바로 해당 게임이 열린다. 그럼 그 링크를 만드는 법과 종류에 대해서 알아보자. URI 스킴(URI Scheme) URI 스킴은 앱을 실행하거나 특정 기능을 실행하기 위해 사용되는 고유한 식별자이다. 우리는 티스토리의 특정 페이지로 이동할때 .. 2023. 7. 19.
딥링크와 앱링크 딥링크란 딥링크를 사용하면 유저가 앱과 앱을 오가는게 쉬워진다. 웹을 보다가, 특정 화면만 유저가 앱으로 봤으면 하는 경우 딥링크가 작동하는데, 이때 유저가 앱을 깔아두었으면 바로 해당화면으로 이동한다. 웹을 서핑하다가 앱으로 보내려고할 때 ... 해당 서비스의 앱이 있다면 - 해당 앱으로 이동한다. 해당 서버스의 앱이 없다면 - 해당하는 store로 이동한다. 이 기능을 가능하게 해주는데 딥 링크이다. 링크의 형태는 앱 스킴(URL 스킴) 혹은 일반적인 https:// 링크 두 가지 형태를 둘다 지원한다. 즉 https://www.example.com 혹은 app://open.my.app 두 형태를 모두 지원한다는 말이다. 또한, 아래 그림처럼 눌렀을 때 필요한 앱을 직접 선택할 수 있도록 한다는 특징.. 2023. 7. 19.