Android 从上到下写一个例子 本地服务

Posted we1less

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 从上到下写一个例子 本地服务相关的知识,希望对你有一定的参考价值。

本文继上一篇文章继续写代码https://blog.csdn.net/we1less/article/details/118825911

此时需要一个本地服务首先将jni文件写好

路径frameworks/base/services/core/jni/com_android_server_GodvService.cpp

#define LOG_TAG "godv"

#include "jni.h"
#include <nativehelper/JNIHelp.h>
#include "android_runtime/AndroidRuntime.h"

#include <utils/misc.h>
#include <utils/Log.h>
#include <hardware/vibrator.h>

#include <inttypes.h>
#include <stdio.h>

namespace android
{

//没用到的形参可以省略
static jint godv_open(JNIEnv*, jobject) {
    ALOGE("godv_open");
    return 0;
}

static jint godv_ioctl(JNIEnv*, jobject, jint which, jint status) {
    ALOGE("godv_ioctl which == %d , status == %d ", which, status);
    return 0;
}

static const JNINativeMethod method_table[] = {
    { "godv_open", "()I", (void*)godv_open },
    { "godv_ioctl", "(II)I", (void*)godv_ioctl }
};

int register_android_server_GodvService(JNIEnv *env)
{
    return jniRegisterNativeMethods(env, "com/android/server/GodvService",
            method_table, NELEM(method_table));
}

};

接下来在frameworks/base/services/core/jni/onload.cpp文件中将本地服务注册

extern "C" jint JNI_OnLoad(JavaVM* vm, void* /* reserved */)
{
    JNIEnv* env = NULL;
    jint result = -1;

    if (vm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) {
        ALOGE("GetEnv failed!");
        return result;
    }
    ALOG_ASSERT(env, "Could not retrieve the env!");

    ...
    register_android_server_GodvService(env);
    register_android_hardware_display_DisplayViewport(env);

    return JNI_VERSION_1_4;
}

修改mk文件

LOCAL_SRC_FILES += \\
    ...
    $(LOCAL_REL_DIR)/com_android_server_GodvService.cpp \\
    $(LOCAL_REL_DIR)/onload.cpp

编译 make -j16 ANDROID_COMPILE_WITH_JACK=false

编译成功后运行app得到log证明本地服务已经成功

09-06 23:33:35.163  3033  3176 D godv    : GodvService::gov_ioctl
09-06 23:33:35.163  3033  3176 E godv    : godv_ioctl which == 0 , status == 1

以上是关于Android 从上到下写一个例子 本地服务的主要内容,如果未能解决你的问题,请参考以下文章

Android 从上到下写一个例子 HAL

Android 从上到下写一个例子

如何在Android中给出从上到下的动画?

Android Camera open 从上到下代码流程

使活动从上到下动画

不分行从上到下打印二叉树