일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 데일리코테
- 코딩시험
- AAudio
- C++
- 프로그래머스
- MediaExtractor
- 데일로코테
- CMAKE
- JavaScript
- pyenv
- Cpp
- 코딩테스트
- MediaCodec
- 기술인터뷰
- sdkmanager
- Python
- 개발영어
- 3진수
- 알고리즘
- 코테
- NDK
- 커맨드라인툴
- 일일코테
- Android
- 파이썬설치
- 알고리듬
- 이직
- 안드로이드
- 완주하지못한선수
- 크레인인형뽑기
- Today
- Total
목록개발/안드로이드 (9)
Nomad Engineer
NDK문서를 찾아봐도 딱 내가 찾는 설명을 찾을 수가 없었다. 그래서 Android 코드를 찾아보기로 했다. 참고한 코드는 MediaRecord의 Native 코드. MediaRecorder.java 우선 아래의 코드와 같이 자바의 MediaRecorder 클래스가 초기화 되는 순간에 네이티브 라이브러리를 로드하고 native_init() 라는 네이티브 함수를 호출한다. 그리고 생성자에서 packageName을 얻고 이것을 사용해서 또다른 네이티브 함수인 native_setup(...) 이라는 함수를 호출하는것을 볼 수 있다. class MediaRecorder { // ... static { System.loadLibrary("media_jni"); native_init(); } public Media..
Activity 생성 Activity를 생성한다. NdkLibrary 초기화 CMakeflie.txt에 정의한 이름으로 네이티브 라이브러리를 로드하는 코드를 다음과 같이 추가한다. class NativePlayerActivity : AppCompatActivity() { //... companion object { init { System.loadLibrary("native-lib") } } } NativeMethod 정의 다음과 같이 Native로 호출할 맴버 함수를 정의한다. external fun createEngine() JNI Bridge에 함수 추가하기 extern "C" JNIEXPORT void JNICALL Java_com_your_project_uri_NativeRecordingActi..
이 글은 oboe 의 Hello oboe 가이드를 따라서 만들어 본것입니다. Low latency Audio - 구현 영상 www.youtube.com/watch?v=8vOf_fDtur4
NDK 공식 사이트 developer.android.com/ndk?hl=ko Android NDK | Android Developers C 및 C++와 같은 언어를 사용하여 앱의 네이티브 코드 일부를 구현하는 도구 모음입니다. developer.android.com NDK 프로젝트 추가 및 빌드 공식 사이트 developer.android.com/studio/projects/add-native-code?hl=ko C 및 C++ 코드를 프로젝트에 추가 | Android 개발자 | Android Developers C 및 C++ 코드를 Android 프로젝트에 추가하는 방법을 알아보세요. developer.android.com 각종 NDK 샘플들 모음 github.com/android/ndk-samples ..

절차 SDK가 잘 설치되어 있는지 어디에 설치 되어 있는지 확인 안드로이드 커맨드 라인 툴 설치 및 확인 명령줄에서 ndk 설치 하기 명령줄에서 cmake 설치 명령줄에서 빌드하기 (SDK 를 명령줄에서 다운 받는 방법 작성 해야함) SDK 경로 확인 안드로이드 스튜디오에서 상단 SDK Manager 아이콘을 클릭 하거나, Preference > Appearance & Behavior > System Settings > Android SDK에서 Android SDK Location을 보면 확인 할 수 있음. SDK Manager 안드로이드 SDK Command-line 툴이 설치되어 있는지 반드시 확인해야 한다. (Android SDK Path)/cmdline-tools/(version)/bin/ 디렉터..

필요한 것 NDK 및 CMake 설치 ExternalNativeBuild Gradle 플러그인 설정하기 CMakeLists.txt 파일 정의 하기 Java 코드에서 native 함수 정의 하기 라이브러리 로드 하기 jni를 사용한 cpp 소스 파일 NDK 및 CMake 설치 안드로이드 SDK Manager 에서 NDK와 CMake를 설치 한다. Gradle에 CMake 빌드 종속성 추가 하기 어플리케이션 모듈(기본적으로 app)에 속한 build.gradle 파일에 다음을 추가한다. android { ... defaultConfig { externalNativeBuild { cmake { cppFlags "-std=c++17" } } } ... // CMakeList.txt의 종송석을 추가해 준다. ex..
An AudioTrack instance can operate under two modes: static or streaming. In Streaming mode, the application writes a continuous stream of data to the AudioTrack, using one of the write() methods. These are blocking and return when the data has been transferred from the Java layer to the native layer and queued for playback. write로 Java 레이어 에서 Native 레이어로 전송된 데이터는 정확히 어느 시점에 재생되어 얼마의 시간후에 우리의 귀에 ..
미디어를 파일에서 읽기 MediaExtractor를 사용하여 읽는다. 미디어 재생하기 MediaPlayer 를 사용한다. ExoPlayer 를 사용한다. MediaExtractor, MediaCodec, Surface를 사용하여 재생한다. 네이티브 오픈소스 라이브러리 Oboe 를 사용한다. 네이티브 라이브러리 AAudio와 함께 사용한다. 파일 읽기 및 영상 처리는 어떻게 하는지 아직 모름. 미디어 레코딩하기 Camera2 와 MediaRecorder를 사용한다. MediaCodec를 직접 사용할 수 있을것 같다. 네이티브 코드를 사용하는 방법은 아직 모르겠다. 여러개의 영상을 동시에 재생하기 MediaPlayer를 여러개 사용하기 ExoPlayer 여러개 사용하기 ExoPlayer의 Renderer를 ..