포럼 회원으로 등록하신분만 다운로드가 가능합니다. 최대 업로드 가능한 용량은 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=770

물고기

2011.06.27 19:59:30
*.50.21.24

좋은 자료 감사합니다^^

List of Articles
번호 제목 글쓴이 날짜sort 조회 수
44 Android 폰 가지고 놀기^^ [1] 2009-08-07 10211
43 Android OpenCore 모임추진 ? [8] 장석원 2009-08-07 16001
42 안드로이드 실행 시 미디어 서버 pending 현상 원인 중 한가지 file 박병구 2009-08-22 10810
41 [번역] Android Opencore Multimedia Framework 번역본 file [7] 고도리 2009-08-25 17636
40 삼성 안드로이드폰(갤럭시) 리눅스 커널 소스코드 file [3] 유형목 2009-09-01 15909
39 S3C6410 프로세서용 Andoird Kernel 2.6.29 이식 방법 #1 [2] 김재훈 2009-09-04 15823
38 Android home key is not working(home key 동작 안 할경우 ) [1] 고현철 2009-09-10 10597
37 [번역] Android Camera Framework 번역 file [7] 고도리 2009-09-10 19665
36 [참고] Android wifi howto - 아직 테스트는 다 못했습니다. file [10] 고도리 2009-09-22 21723
35 Dummy Battery 드라이버 입니다. file [3] 관리자 2009-10-10 10263
34 이솝 임베디드 포럼 - 10월 31일 Google Android Seminar 발표 ... file [16] 관리자 2009-10-28 10898
33 Power Management from Linux Kernel to Android file [10] 최종환 2009-11-01 14996
32 Android Battery 부분 조금 정리해 놓은것 file [2] 최종환 2009-11-04 10726
31 누가 Android 에 tslib를 포팅해 놓은듯 합니다. file 최종환 2009-11-11 11062
30 busybox에 대한 질문 [3] 득드로이드 2010-03-24 8881
29 Android 2.x AudioFlinger와 HAL의 연결 구조 분석 [2] JhoonKim 2010-04-08 19343
28 AudioPolicyService와 AudioFlinger 및 HAL의 연결 구조 JhoonKim 2010-04-08 11304
» AudioSystem과 AudioSystem.java를 이용한 JNI 단에서의 연결 [1] JhoonKim 2010-04-14 10872
26 [실습-00] android eclair porting을 위한 ubuntu 설치하기 file [6] 고도리 2010-05-17 12321
25 [실습-01] android 개발환경 세팅과 source download [2] 고도리 2010-05-17 13781

사용자 로그인