포럼 회원으로 등록하신분만 다운로드가 가능합니다. 최대 업로드 가능한 용량은 20MB 입니다.

AudioSystem과 AudioSystem.java를 이용한 JNI 단에서의 연결

 

김재훈 (이솝 임베디드 포럼)

 

1. AudioSystem과 AudioSystem.java를 연결하는 JNI 단에 대해 기술되어 있는 코드는 다음에 위치해 있다.

   frameworks/base/core/jni/android_media_AudioSystem.cpp // 193라인
  

static JNINativeMethod gMethods[] = {
    {"setParameters",        "(Ljava/lang/String;)I", (void *)android_media_AudioSystem_setParameters},
    {"getParameters",        "(Ljava/lang/String;)Ljava/lang/String;", (void *)android_media_AudioSystem_getParameters},
    {"muteMicrophone",      "(Z)I",     (void *)android_media_AudioSystem_muteMicrophone},
    {"isMicrophoneMuted",   "()Z",      (void *)android_media_AudioSystem_isMicrophoneMuted},
    {"isMusicActive",       "()Z",      (void *)android_media_AudioSystem_isMusicActive},
    {"setDeviceConnectionState", "(IILjava/lang/String;)I", (void *)android_media_AudioSystem_setDeviceConnectionState},
    {"getDeviceConnectionState", "(ILjava/lang/String;)I",  (void *)android_media_AudioSystem_getDeviceConnectionState},
    {"setPhoneState",       "(I)I",     (void *)android_media_AudioSystem_setPhoneState},
    {"setRingerMode",       "(II)I",    (void *)android_media_AudioSystem_setRingerMode},
    {"setForceUse",         "(II)I",    (void *)android_media_AudioSystem_setForceUse},
    {"getForceUse",         "(I)I",     (void *)android_media_AudioSystem_getForceUse},
    {"initStreamVolume",    "(III)I",   (void *)android_media_AudioSystem_initStreamVolume},
    {"setStreamVolumeIndex","(II)I",    (void *)android_media_AudioSystem_setStreamVolumeIndex},
    {"getStreamVolumeIndex","(I)I",     (void *)android_media_AudioSystem_getStreamVolumeIndex}
};

2. 위는 JNINativeMethod gMethods[]의 데이터는 C언어단과 JAVA 단을 매핑 시켜주기 위한 테이블이며,

     다음의 형식을 띄고 있다.

    {"setParameters",        "(Ljava/lang/String;)I", (void *)android_media_AudioSystem_setParameters},
    [ C언어 함수 ]            ([자료형])리턴형        JAVA의 함수, "_"는 JAVA에서 "."으로 변환되어 사용되며,
    android_media_AudioSystem_setParameters는 android.media.AudioSystem.setParameters로 JAVA에서 사용된다.
   
3. 앞의 JNINativeMethod gMethods[] 다음과 같이 registerNativeMethods(); 함수를 통하여, JNI로 등록하게 된다.

 

const char* const kClassPathName = "android/media/AudioSystem";

int register_android_media_AudioSystem(JNIEnv *env)
{
    AudioSystem::setErrorCallback(android_media_AudioSystem_error_callback);
   
    return AndroidRuntime::registerNativeMethods(env,
                "android/media/AudioSystem", gMethods, NELEM(gMethods));

}

profile

인생은 연극이고 세상은 무대이다!

이솝 임베디드 포럼 운영 및 비즈니스와 관련된 것 이외에 E-Mail이나 메신저 및 휴대폰 등을 통한 개인적인 질문 및 답변은 받지 않습니다. 문의 사항은 이솝 임베디드 포럼 게시판을 이용해 주시면 감사하겠습니다.

엮인글 :
http://www.aesop.or.kr/index.php?mid=Board_Documents_Android_Frameworks&document_srl=34866&act=trackback&key=715

물고기

2011.06.27 19:59:30
*.50.21.24

좋은 자료 감사합니다^^

List of Articles
번호 제목 글쓴이 날짜 조회 수sort
84 Android 2.3 GingerBread Multimedia Framework 분석 - 1 [26] 고도리 2011-05-23 58430
83 [안드로이드 책] Input관련 간단자료 및 PhoneWindowManager 연동 file [2] 고도리 2011-08-02 54824
82 [Android 분석 및 포팅] Binder의 동작원리 - #2 IPC/RPC file 고도리 2011-06-30 41069
81 Android Initialization Process 최종환 2009-04-09 24674
80 OpenGL ES와 Android [3] 이제현 2009-04-18 22880
79 [참고] Android wifi howto - 아직 테스트는 다 못했습니다. file [10] 고도리 2009-09-22 21764
78 Android용 root filesystem으로 cramfs 구성 할 때의 주의사항 [7] 김영문 2009-04-09 21420
77 Android에서의 Linux Network 환경 설정 방법 [1] 김재훈 2009-04-21 20638
76 S3C6410 target으로의 Android porting에 대하여(1) [3] 고현철 2009-04-23 20171
75 [번역] Android Camera Framework 번역 file [7] 고도리 2009-09-10 19698
74 Android make옵션 [3] 2009-07-16 19502
73 Android 2.x AudioFlinger와 HAL의 연결 구조 분석 [2] JhoonKim 2010-04-08 19379
72 Android Debug Bridge(ADB) 사용 가이드 김재훈 2009-04-09 18931
71 Android audioflinger 분석자료 입니다. file [11] 고현철 2009-07-30 18840
70 android를 6410에 포팅하면서... [7] 전병환 2009-04-10 18257
69 PV와 Android [5] 이제현 2009-04-19 18197
68 [번역] Android Opencore Multimedia Framework 번역본 file [7] 고도리 2009-08-25 17668
67 Android 윈도우에서 git로 소스 받기.. [3] 2009-07-14 17057
66 Android 부팅 및 초기화 절차 김재훈 2009-04-09 17033
65 Android OpenCore 모임추진 ? [8] 장석원 2009-08-07 16024

사용자 로그인