728x90

전체 글 160

[Android] NDK / JNI (2) - 적용해보기

이번 포스팅에서는 로컬 환경에 NDK를 설치 · 안드로이드 프로젝트에 세팅하고,JNI를 사용하여 C언어로 작성된 코드를 안드로이드 환경에서 호출해본다.      NDK 설치 · 안드로이드 프로젝트에 세팅  ✅ 안드로이드 스튜디오에서 NDK 설치 [Tools] → [SDK Manager]  → [Android SDK] → [SDK Tools] 탭에 진입한다.  그리고 NDK를 찾아서 원하는 버전을 고르고 [Apply] 해준다.위에 적힌 [Android SDK Location]에서 설정된 경로를 확인해줘야 한다.     예제에서는 현시점 가장 최신 버전 28.0.12674087을 설치했다.  설치가 끝나면 [Finish] 눌러준다.      ✅ NDK 설치 확인 아까 말했던 경로를 직접 찾아가면 [ndk] ..

[Android] NDK / JNI (1)

이번 포스팅에서는 NDK와 JNI에 대해 알아본다.      ✅ NDK ? Native Development Kit 의 약자로,Android에서 C · C++ 코드를 사용할 수 있게 해주는 도구 모음이다. 지난 안드로이드에서의 C언어 사용 관련 포스팅에서도 언급했다시피,기기의 성능을 최대한 활용해야하는 컴퓨팅 집약 앱을 개발할 때유용하게 사용할 수 있다며 공식 문서에서 소개되고 있다.    ● 조금 더 세부적인 사용 사례 - 게임 개발- FFmpeg와 같은 라이브러리를 통합하여 비디오 처리- OpenCV와 같은 고성능 라이브러리를 활용한 이미지 처리- 그 외 저수준 언어로 작성된 특화된 알고리즘 적용     ● 구성 요소 - 헤더 파일 : Android API에 대한 헤더 파일 제공- 빌드 도구 : nd..

[Android] 안드로이드 환경에서 C언어 사용 이유? / Java · C 성능 차이점

약 2년 전쯤, 안드로이드 앱을 개발하다가 문득 떠오른 생각이 있었다. 모바일 게임은 어떻게 만드는거지?난 Java를 사용하는데, 나도 모바일 게임을 만들 수 있을까? 그때 당시 가볍게 검색해서 알아낸 답은 C언어로 개발한다는 내용이었다.안드로이드 개발 공식 언어는 Java · Kotlin 인데, 이해하기 힘들었다.  하지만 어느샌가 그 이유와 원리를 공부하게 되었고, 알게된 내용을 정리할 겸 포스팅한다.NDK, JNI 등 막상 관련 내용을 공부해야하는 상황이 닥쳐서 시작하는...       ✅ 안드로이드에서 C언어를 사용하는 케이스 결론부터 이야기하자면,C언어로 Java·Kotlin 보다 좋은 성능을 발휘하는 코드를 작성할 수 있다. 여기서 말하는 좋은 성능이라는 기준은고사양 처리 작업을 더욱 빠른 속..

[Android] libvlc - RTSP 스트리밍 연결

지난 ExoPlayer 포스팅에 이어, 이번엔 libvlc 라이브러리를 가지고 왔다. 해당 라이브러리는 VLC에서 제공하는 외부 라이브러리다.    ✅ VLC (Video LAN Clients) VideoLan Project에서 개발하는 오픈소스 미디어 재생기이며,자체 코덱 내장 및 높은 호환성으로 현존하는 미디어 플레이어 중 최고라 볼 수 있다.  libvlc는 안드로이드 뿐 아니라, 다양한 플러그인을 지원하기에우리가 사용해볼 라이브러리는 libvlc-Android 버전이라 볼 수 있다.  라이브러리 경로는 다음과 같다 ↓ Files · master · VideoLAN / VLC-Android · GitLabVLC for Android, Android TV and ChromeOScode.videolan..

[Android] ExoPlayer - RTSP 스트리밍 연결

안드로이드 Jetpack의 Media3에 포함된ExoPlayer를 사용하여 RTSP 스트리밍을 진행해본다.  공식 문서 ↓ RTSP  |  Android media  |  Android Developers이 페이지는 Cloud Translation API를 통해 번역되었습니다. RTSP 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. ExoPlayer는 실시간 RTSP와 주문형 RTSP를 모두 지원합developer.android.com   연결할 네트워크 스트림 주소는 다음과 같다.rtsp://210.99.70.120:1935/live/cctv048.stream 공공 데이터 포털에서 제공해주는 교통정보 CCTV 스트림 주소다.      ✅ Manifest 권한 추가 And..

[Android] RTSP - 실시간 스트리밍 프로토콜

안드로이드 카테고리 포스팅이라기엔 뭐하지만,안드로이드 환경에서의 RTSP 통신이 최종 목적이기에 이곳에 포스팅한다. RTSP에 대해 알아보자.     ✅ RTSP 란? Real Time Streaming Protocol 의 약자로, 실시간 스트리밍 프로토콜이라 할 수 있다. 스트리밍 미디어 서버를 제어할 목적으로 설계된 네트워크 제어 프로토콜이다.조금 더 자세히 말하면, 종단점들 간에 미디어 세션을 확립하고 제어하기 위해 사용된다.*종단점 : End To End, 서버와 클라이언트라고 생각해볼 수 있다. 즉, 제어가 주 목적이기에 스트리밍 데이터 전송 자체는 RTSP의 역할이 아니다.스트림 전송은 주로 RTP(실시간 전송 프로토콜)를 사용한다.     ✅ RTSP의 stateful 특성  RTSP와 HT..

[Android] 앱에서 카메라로 사진 찍고 갤러리에 저장하기 / 이미지뷰 로드하기

앱에서 카메라로 찍은 사진을 갤러리에 저장까지 해보자. ContentResolver, MediaStore 를 사용하는 방식이다.     ✅ Manifest 파일에 권한 추가 카메라와 갤러리에 접근해야 하기 때문에 권한을 추가해주자. AndroidManifest.xml     ✅ Permission 요청 세팅 이전 포스팅들과 마찬가지로,TedPermission 라이브러리를 활용하여 간편하게 권한을 요청해준다.private fun checkPermission() { TedPermission.create() .setPermissionListener(object : PermissionListener { override fun onPermissionGranted() { openCamera() } ..

[Android] 화면 스크린샷 찍고 갤러리에 저장하기

앱에서 스크린샷을 찍고, 이미지로 갤러리에 저장하는 방법을 알아보자.  비트맵 압축 방식으로 파일을 생성하고,MediaScan을 사용하여 갤러리에 동기화시켜줄 것이다.    ✅ Manifest 파일에 권한 추가 갤러리에 접근해야 하니, 관련 권한을 추가해주자.  AndroidManifest.xml      ✅ Permission 요청 세팅 이전 포스팅과 중복되는 내용이다.TedPermission 라이브러리 활용해서 간단하게 권한을 요청해주자. private fun checkPermission() { TedPermission.create() .setPermissionListener(object : PermissionListener { override fun onPermissionGranted() { ..

728x90