使用C/C+访问Android传感器+;应用
有没有一种方法可以通过c/c++应用程序访问android传感器(x、y、z数据)。据我所知,只有通过android应用程序和框架之间的接口JNI才能访问它。 我阅读并尝试将本机应用程序(来自android-ndk-r10d\samples\native活动)构建为可执行文件。我的android.mk如下所示:使用C/C+访问Android传感器+;应用,android,c++,c,android-sensors,Android,C++,C,Android Sensors,有没有一种方法可以通过c/c++应用程序访问android传感器(x、y、z数据)。据我所知,只有通过android应用程序和框架之间的接口JNI才能访问它。 我阅读并尝试将本机应用程序(来自android-ndk-r10d\samples\native活动)构建为可执行文件。我的android.mk如下所示: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := native-activity LOCAL
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := native-activity
LOCAL_SRC_FILES := main.c
LOCAL_LDLIBS := -llog -landroid -lEGL -lGLESv1_CM
LOCAL_STATIC_LIBRARIES := android_native_app_glue
include $(BUILD_EXECUTABLE)
$(call import-module,android/native_app_glue)
我已将本机activity\jni\main.c文件中的android_main更改为main()。但在我将其推送到android文件系统并运行./native activity后,我出现以下错误:
无法链接可执行文件:无法加载所需的库“libandroid.so”
`./native-activity:cause by "libandroid.so" has unexpected e_machine: 3`
我已将libandroid.so从system/lib/移动到本机活动的当前目录
我做错了什么?有没有其他更好的方法可以通过c/c++应用程序访问android传感器数据?大多数android IPC服务实际上都是用Java实现的,因此即使使用“本机活动”,最终也会在过程中包含的Dalvik或android运行时引擎中运行IPC API的粘合代码。您的纯本机可执行文件缺少这一点,因此没有正式的方式与这些资源对话。为什么要运行纯本地程序?无论如何,在生产环境中,在Android设备上没有正常的方法来调用这样的函数-是的,您可以从活动或服务启动它,但是感知到的好处是什么?也就是说,您的实际错误来自于尝试链接为不同体系结构构建的库,而不是您编译的库。即使你克服了这一点,它仍然不起作用(有大量的幕后黑客),但事实上,你正在得到这个错误,这表明你已经在目录之间手动复制系统组件,而不清楚它们之间的关系。