就是用JNI调用啊,楼主看看JNI的知识,其实也不是很难的

解决方案 »

  1.   

    android 上层是通过java实现,但framework层大部分都是c++代码,你可以随便找个android源码中的实现,看它调用的jni代码即可知道怎么调用
      

  2.   

    这个都是一样的啊,自己ndk-build出来的so跟直接下载的so都是库文件,直接使用loadLibrary("libName");就可以了,只有你说的包名这个跟android API一样,都需要指定
      

  3.   

    其实C和C++都可以的,先用c写一个,然后改成C++试一下就知道了,给你个例子:http://blog.csdn.net/zy1235678/article/details/27700589
      

  4.   

    我现在已经用JNI写好了。
    1.用C++写了一个动态库,用NDK-Build编译生成了一个libRelay.so(用arm-linux-g++编译并在我的开发板上调试通过)
           这个库使用open("/dev/mem",O_RDWR)和mmap映射了一块物理内存区域,用来访问GPIO
    2. 用JNI写了一个动态库,用NDK-Build编译生成了一个libJRelay.so
          这个库直接用dlopen("Relay",RTLD_LAZY)调用C++的动态库
    3.创建了一个RelayTest的android应用程序,调用JNI库 在调试信息中可以看到调用函数的过程,但在open("/dev/mem")这个地方异常了,errno=13
    这个是否是应用程序权限的问题?要如何设置?
      

  5.   

    我现在用adb shell连接到模拟器上,将/dev/mem文件的权限改为666(rw-rw-rw)后,
    open("/dev/mem",O_RDWR | O_SYNC)返回-1,errno=1
    errcode=1好像是参数错误的提示。太怪异了