반응형
Notice
Recent Posts
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- mqtt
- Android
- Java8
- 워치
- AWS
- ActivityResult-API
- cloud-firestore
- gradle
- google-login
- Flavors
- Galaxy Watch
- firebase-database
- BottomSheetDialog
- OZViewer
- socket-server
- JNI
- Firebase
- mosquitto
- socket.io
- Dva
- Kotlin
- socket-client
- hung-up
- firebase-storage
- TIZEN
- git-push
- NoSuchMethodError
- ozd
- git
- 오즈뷰어
Archives
- Today
- Total
Hyeyeon blog
[Android] JNI에서 사용되는 문법 정리 본문
반응형
JNI에서 사용되는 문법 정리
1. jbyte[]를 jstring로 변환
jbyte array[] = {48 ,48 , ..}; // byte array jstring result = (*env)->NewStringUTF(env, (char *) array);
2. jbyte[] 크기 구하기
const jbyte array[] = {48, 48, ..}; // byte array int size = sizeof(array);
3. char* 크기 구하기
char * text = {48, 48, ..}; // byte array int size = strlen(text);
4. char[] 크기 구하기
char arr[] = {48, 48, ..}; int size = sizeof(arr);
5. 전역 변수로 byte array를 선언할 경우, 마지막에 '\0' 추가해주어야 함
char arr[] = {48, 48, .., '\0'};
// 배열의 마지막에 '\0'이 없을 경우, 하위의 array들도 함께 출력됨 const jbyte array1 = {50,50}; // string: 22 const jbyte array2 = {57,57}; // string: 99 JNIEXPORT jbyteArray JNICALL Java_com_example_demo_MainActivity_getText(JNIEnv *env, jclass clazz) { jstring text = (*env)->NewStringUTF(env, (char *) array1); // 2299 출력 }
6. 특정 형식으로 문자열 변환하기
#include <stdio.h> #include <stdlib.h> char *buffer = malloc(100); snprintf(buffer, 100, "Hello %s", "JNI"); .. free(buffer); // 사용 후 메모리 해지
7. JNI에서 로그 출력하기
#include <android/log.h> #define LOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, "LOG", __VA_ARGS__) #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG , "LOG", __VA_ARGS__) #define LOGI(...) __android_log_print(ANDROID_LOG_INFO , "LOG", __VA_ARGS__) #define LOGW(...) __android_log_print(ANDROID_LOG_WARN , "LOG", __VA_ARGS__) #define LOGE(...) __android_log_print(ANDROID_LOG_ERROR , "LOG", __VA_ARGS__) JNIEXPORT jbyteArray JNICALL Java_com_example_demo_MainActivity_getText(JNIEnv *env, jclass clazz) { LOGI("Hello %s", "JNI"); // Hello JNI 출력 }
관련 글
728x90
'개발 > Android' 카테고리의 다른 글
[Android] Failed resolution of: Lorg/apache/http/params/BasicHttpParams 해결 (0) | 2021.03.15 |
---|---|
[Android] No matching client for package name '..' 해결 (0) | 2021.02.08 |
[Android] JNI를 이용해 안드로이드에서 c파일 사용하기 (0) | 2021.02.01 |
[Android] Socket.io를 이용하여 소켓 서버와 안드로이드 앱 통신하기 (0) | 2020.12.11 |
[Android] onActivityResult를 대체하는 ActivityResult API (0) | 2020.12.07 |
Comments