您的位置:首页 > 移动开发 > Android开发

Android Framework GPS

2015-06-16 11:03 369 查看
1. Code snippet

Path: frameworks\base\services\jni\com_android_server_location_GpsLocationProvider.cpp 

static void location_callback(GpsLocation* location)
{
JNIEnv* env = AndroidRuntime::getJNIEnv();
env->CallVoidMethod(mCallbacksObj, method_reportLocation, location->flags,
(jdouble)location->latitude, (jdouble)location->longitude,
(jdouble)location->altitude,
(jfloat)location->speed, (jfloat)location->bearing,
(jfloat)location->accuracy, (jlong)location->timestamp);
checkAndClearExceptionFromCallback(env, __FUNCTION__);
}


2. class JNIEnv / method

2.1 class JNIEnv

    definition in file development\ndk\platforms\android-3\include\jni.h

2.2 method CallVoidMethod

    调用方法:

   (*env)->CallVoidMethod(env, obj, mid, depth);// CallStaticIntMethod(...)调用静态方法 

   使用CallVoidMethod方法调用方法。参数的意义:

   env-->JNIEnv

   obj-->通过本地方法穿过来的jobject

   mid-->要调用的MethodID(即第二步获得的MethodID)
   depth-->方法需要的参数(对应方法的需求,添加相应的参数)

2.3 获取MethodID:

    jmethodID mid = (*env)->GetMethodID(env, cls, "callback", "(I)V"); //GetStaticMethodID(…),获取静态方法的ID使用GetMethdoID方法获取你要使用的方法的MethdoID  

其参数的意义:

env-->JNIEnv

cls-->第一步获取的jclass

"callback"-->要调用的方法名

"(I)V"-->方法的Signature, 签名同JNI规则。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android frameworks