您的位置:首页 > 汽车 > 时评 > 企业信用信息系统官网_网页制作工具的选择与网站整体风格_引擎优化搜索_国际新闻头条最新消息

企业信用信息系统官网_网页制作工具的选择与网站整体风格_引擎优化搜索_国际新闻头条最新消息

2025/1/20 20:12:18 来源:https://blog.csdn.net/heroismzhu/article/details/144065054  浏览:    关键词:企业信用信息系统官网_网页制作工具的选择与网站整体风格_引擎优化搜索_国际新闻头条最新消息
企业信用信息系统官网_网页制作工具的选择与网站整体风格_引擎优化搜索_国际新闻头条最新消息

1. 在上篇中添加了jni

在com_android_server_HelloUserService.cpp此文件上引用hal接口

#define LOG_TAG "HelloUserService"


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

#include "core_jni_helpers.h"

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

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

//#include<chao/CChao.h>

#include <android/hardware/chao/1.0/IChao.h>
#include <android/hardware/chao/1.0/types.h>


using IChao    = ::android::hardware::chao::V1_0::IChao;
using Status     = ::android::hardware::chao::V1_0::Status;
using Type       = ::android::hardware::chao::V1_0::Type;
using ChaoState       = ::android::hardware::chao::V1_0::ChaoState;

template<typename T>
using Return     = ::android::hardware::Return<T>;


namespace android {


    void processReturn(
            const Return<Status> &ret,
            Type type,
            const ChaoState &state) {
        if (!ret.isOk()) {
            ALOGE("Failed to issue set light command.");
            return;
        }

        switch (static_cast<Status>(ret)) {
            case Status::SUCCESS:
                ALOGE("Light requested success on this device. %d", type);
                break;
            case Status::CHAO_NOT_SUPPORTED:
                ALOGE("Chao parameter not supported on this device: %d",
                      state.chaoRen);
                break;
            case Status::UNKNOWN:
            default:
                ALOGE("Unknown error setting light.");
        }
    }


    void setChao()
    {
        Type type = static_cast<Type>(0);
//    ChaoState chaoState{0,1};    //return unkown
        ChaoState chaoState{1,1};     // return success

        ALOGE("liangchao we will start getting hidl service");
        sp<IChao> hal = IChao::getService();                                 //------------获得服务
        if(hal == NULL){
            ALOGE("liangchao we cant hidl service");
        }else{
            ALOGE("liangchao get Chao service success");
        }
        Return<Status> ret = hal->setChao(type, chaoState);
        processReturn(ret,type,chaoState);

    }


    static jint userSetMic(JNIEnv *env, jobject clazz, int arg)
    {
        setChao();                                                       -----------------------------------引用
        return arg+5;
    }
    static jint userSetSpeaker(JNIEnv *env, jobject clazz, int arg)
    {
        return arg+6;
    }
    static jint userSetLed(JNIEnv *env, jobject clazz, int arg)
    {
        return arg+7;
    }

    static const JNINativeMethod method_table[] = {
            {"native_userSetMic", "(I)I", (void*)userSetMic},
            {"native_userSetSpeaker", "(I)I", (void*)userSetSpeaker},
            {"native_userSetLed", "(I)I", (void*)userSetLed},
    };

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

}

2.android.bp添加库

编译就可以调用hal的相关函数了

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com