
android
大妞
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
关于jni里面回调的使用
将已经实现的驱动移植到android平台后,需要将通过jni将接口封装。在这个过程中,有的c语言接口是通过回调的方式回传数据的。相当于java是被动调用的。开始的时候,想着使用intent 广播实现,后来想想不对,这是java层的东西,不适用于jni的封装。后来使用interface,接口实现了jni层的回调的封装。public interface testCallBack{pub原创 2012-04-12 12:15:33 · 567 阅读 · 0 评论 -
Jni函数调用Chap2:JNI-百度百科
定义JNI是Java NativeInterface的缩写,中文为JAVA本地调用。从Java1.1开始,Java NativeInterface (JNI)标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了。 使用java与本地已编译的代转载 2012-04-13 09:31:16 · 393 阅读 · 0 评论 -
Chap 4:用javah产生一个.h文件
Java不是完善的,Java的不足除了体现在运行速度上要比传统的C++慢许多之外,Java无法直接造访到操作体系底层(如系统硬件等),为此 Java使用native法子来扩大Java程序的功效。 可以将native法子比作Java程序同C程序的接口,其实现步骤: 1、在Java中声明native()方式,然后编译; 2、用javah发生一个.h文件; 3、写一个转载 2012-04-13 09:34:40 · 381 阅读 · 0 评论 -
Chap5:jni教程
本教程摘自IBM DW,如有转载,请声明!Java 本机接口(Java Native Interface (JNI))是一个本机编程接口,它是 Java 软件开发工具箱(Java SoftwareDevelopment Kit (SDK))的一部分。 JNI 允许 Java代码使用以其它语言(譬如 C和 C++)编写的代码和代码库。Invocation API(JNI转载 2012-04-13 09:38:40 · 599 阅读 · 0 评论 -
Chap7:Jni中C++和Java的参数传递
如何使用JNI的一些基本方法和过程在网上多如牛毛,如果你对Jni不甚了解,不知道Jni是做什么的,如何建立一个基本的jni程序,或许可以参考下面下面这些文章: 利用VC++6.0实现JNI的最简单的例子>入门教程之HelloWorld篇>这些资料的例子中,大多数只是输入一些简单的参数,获取没有参数。而在实际的使用过程中,往往需要对参数进行处理转换。才可以被C/C++程序识别。比转载 2012-04-13 10:20:42 · 448 阅读 · 0 评论 -
Chap12:JNI编程系列之中级篇(上) 本篇将介绍在JNI编程中如何传递参数和返回值。
首先要强调的是,native方法不但可以传递Java的基本类型做参数,还可以传递更复杂的类型,比如String,数组,甚至自定义的类。这一切都可以在jni.h中找到答案。 1. Java基本类型的传递 用过Java的人都知道,Java中的基本类型包括boolean,byte,char,short,int,long,float,double这样几种,如果你用这几种类型做native方转载 2012-04-13 11:05:52 · 448 阅读 · 0 评论 -
Chap14:如何在C/C++中调用Java
Java跨平台的特性使Java越来越受开发人员的欢迎,但也往往会听到不少的抱怨:用Java开发的图形用户窗口界面每次在启动的时候都会跳出一个控制台窗口,这个控制台窗口让本来非常棒的界面失色不少。怎么能够让通过Java开发的GUI程序不弹出Java的控制台窗口呢?其实现在很多流行的开发环境例如JBuilder、Eclipse都是使用纯Java开发的集成环境。这些集成环境启动的时候并不会打开一个命令窗转载 2012-04-13 12:55:19 · 529 阅读 · 0 评论 -
Chap10:在 Windows 中实现 Java 本地方法
本文为在 32位 Windows 平台上实现 Java 本地方法提供了实用的示例、步骤和准则。这些示例包括传递和返回常用的数据类型。本文中的示例使用 Sun Microsystems公司创建的 JavaDevelopmentKit (JDK)版本 1.1.6 和 Java本地接口 (JNI)规范。用 C语言编写的本地代码是用 MicrosoftVisualC++编译器编译生成的。简介本转载 2012-04-13 11:02:00 · 392 阅读 · 0 评论 -
Jni函数调用 Chap1:JNI完全手册
Chap1:JNI完全手册 最近在公司里做了一个手机的项目,需要JAVA程序在发送短信的时候和第三方的短信服务器连接。短信接口是用C++写的。琢磨了三天,大致搞懂了JNI的主体部分。先将心得整理,希望各位朋友少走弯路。 首先引用一篇文章,介绍一个简单的JNI的调用的过程。JAVA以其跨平台的特性深受人们喜爱,而又正由于它的跨平台的目的,使得它和本地机器的各种内部联系变得很少转载 2012-04-13 09:22:40 · 362 阅读 · 0 评论 -
Chap8:如何将java传递过来的jbyteArray转换成C/C++中的BYTE数组
近遇到一个问题,请各位帮忙解决下: 如何将java传递过来的jbyteArray转换成C/C++中的BYTE数组?BYTE为unsigned char类型 这两个我理解应该是相同的吧,强制类型转换好像不启作用,应该如何转换呢?该问题已经关闭:问题已解决,之前代码有问题 jbyte * arrayBody= env->GetByteArrayElem转载 2012-04-13 10:22:45 · 1038 阅读 · 0 评论 -
Chap13:JNI编程系列之高级篇
在本篇中,将会涉及关于JNI编程更深入的话题,包括:在native方法中访问Java类的域和方法,将Java中自定义的类作为参数和返回值传递等等。了解这些内容,将会对JNI编程有更深入的理解,写出的程序也更清晰,易用性更好。1. 在一般的Java类中定义native方法在前两篇的例子中,都是将native方法放在main方法的Java类中,实际上,完全可以在任何类中定义native转载 2012-04-13 12:05:54 · 370 阅读 · 0 评论 -
Chap 3:javah命令帮助信息
D:\Program Files\Java\jdk1.6.0_12\bin>javah用法:javah [选项] 类> 其中 [选项]包括: -help 输出此帮助消息并退出 -classpath 路径> 用于装入类的路径 -bootclasspath 路径>用于装入引导类的路径转载 2012-04-13 09:32:47 · 307 阅读 · 0 评论 -
Chap6: JNI传递返回值
作为主调方的Java源程序TestJNI.java如下。代码清单15-4在Linux平台上调用C函数的例程——TestJNI.java1. public class TestJNI2. {3. static4. {5. System.loadLibrary("testjni");//载入静态库,t转载 2012-04-13 09:43:21 · 575 阅读 · 0 评论 -
Chap5:使用JNI技术实现java程序调用第三方dll(c/c++)文件的功能
JAVA的跨平台的特性深受java程序员们的喜爱,但正是由于它为了实现跨平台的目的,使得它和本地机器的各种内部联系变得很少,大大约束了它的功能,比如与一些硬件设备通信,往往要花费很大的精力去设计流程编写代码去管理设备端口,而且有一些设备厂商提供的硬件接口已经经过一定的封装和处理,不能直接使用java程序通过端口和设备通信,这种情况下就得考虑使用java程序去调用比较擅长同系统打交道的第三方程序,从转载 2012-04-13 10:23:55 · 1100 阅读 · 0 评论 -
Chap11:JNI编程系列之基础篇
JNI编程系列之基础篇 最近干一个活需要从Java调用C++编译的动态链接库,研究了一下JNI,现在将网上搜罗的文档和自己的体会贡献出来。 JNI的做法是:通过在方法前加上关键字native来识别本地方法,然后用本地语言(如C,C++)来实现该方法,并编译成动态链接库,在Java的类中调用该动态链接库,然后就可以像使用Java自己的方法一样使用native方法了。这样做的好处是既具转载 2012-04-13 11:04:07 · 400 阅读 · 0 评论 -
chap 18:JNI在多线程中的应用
引文地址:http://blog.youkuaiyun.com/hust_liuX/archive/2006/12/25/1460486.aspx我在这里将文章整理了一下,重新修改了部分描述和增加了一些重要的说明事项。修改文如下:问题描述:一个java对象通过JNI调用DLL中一个send()函数向服务器发送消息,不等服务器消息到来就立即返回,同时把JNI接口的指针JNIEnv *env(虚拟转载 2012-04-16 08:47:30 · 604 阅读 · 0 评论 -
Chap15:基本JNI调用技术(c/c++与java互调)
一.C/C++调用Java在C/C++中调用Java的方法一般分为五个步骤:初始化虚拟机、获取类、创建类对象、调用方法和退出虚拟机。1. 初始化虚拟机代码如下: JNIEnv *env; JavaVM *jvm; JavaVMInitArgs vm_args; JavaVMOption options[3]; int res;转载 2012-04-16 08:46:53 · 555 阅读 · 0 评论 -
chap 17:当JNI遇到多线程--java对象如何被C++中的多个线程访问?
java中要访问C++代码时,使用JNI是唯一选择.然而,在多线程的情况下,可能出现以下问题:问题描述:一个java对象通过JNI调用DLL中一个send()函数向服务器发送消息,不等服务器消息到来就立即返回.同时把JNI接口的指针JNIEnv *env,和jobject obj保存在DLL中的变量里.一段时间后,DLL中的消息接收线程接收到服务器发来的消息,并试图通过保存过的en转载 2012-04-16 08:47:19 · 1447 阅读 · 0 评论 -
chap 20:使用 Java Native Interface 的最佳实践2
2.正确性缺陷5 大 JNI正确性缺陷包括:· 使用错误的JNIEnv· 未检测异常· 未检测返回值· 未正确使用数组方法· 未正确使用全局引用2.1使用错误的JNIEnv执行本机代码的线程使用JNIEnv发起 JNI方法调用。但是,JNIEnv并不是仅仅用于分派所请求的方法。JNI规范规定每个JNIEnv对于线程来说都是本地的。JVM可以依赖于这一假转载 2012-04-16 08:48:19 · 464 阅读 · 0 评论 -
Chap16:JNI的c代码中,另外一个线程获取 JNIEnv
JNI 中,JNIEnv*指针变量只对当前线程有效。如果是其他的线程,需要先获得 JVM*指针,然后再获得当前线程的JNIEnv*指针。部分示例代码为:/** Invoker.cpp, Invoker.java */#include #include #include "Invoker.h"#include "invoker_include.h"JavaVM *转载 2012-04-16 08:47:09 · 1172 阅读 · 0 评论 -
chap 19:JNI限制(多线程)
JNI限制:There are certain constraints that you must keep in mind when writing nativemethods that are to run in a multithreaded environment. By understanding and programming within these constraints, y转载 2012-04-16 08:47:40 · 1048 阅读 · 0 评论 -
chap 20:使用 Java Native Interface 的最佳实践
JNI 的发展JNI 自从 JDK 1.1 发行版以来一直是 Java 平台的一部分,并且在 JDK 1.2 发行版中得到了扩展。JDK 1.0 发行版包含一个早期的本机方法接口,但是未明确分隔本机代码和Java 代码。在这个接口中,本机代码可以直接进入 JVM 结构,因此无法跨 JVM 实现、平台或者甚至各种 JDK 版本进行移植。使用 JDK 1.0 模型升级含有大量本机代码的应用转载 2012-04-16 08:48:03 · 391 阅读 · 0 评论 -
Chap9:如何编写jni方法(转载)
一、概述:在这篇文章中将会简单介绍如何编制一些简单的JNI 方法。我们都知道JNI方法可以帮助我们调用用C/c++编写的函数,这样如果一项工作已经用C /c++语言实现的话,我们就可以不用花很大的力气再用JAVA语言对这一工作进行再实现,只要编制相应的JNI函数,就可以轻松实现JAVA语言对C /c++函数的调用,从而大大减轻程序开发人员的工作量。 在这个项目中,我转载 2012-04-13 10:51:41 · 429 阅读 · 0 评论 -
jni c本地代码回调java (多线程中,创建java对象时报空指针)未解决
需求:在c回调函数里面,创建一个java对象,并将值传递给java应用使用。void callback(){ JNIEnv *env=NULL; jobject searchResultObj; pVm->AttachCurrentThread(&env,NULL);原创 2012-04-18 13:41:38 · 2095 阅读 · 1 评论 -
c回调数据给java实现
1、测试方法1 在jni的java层,创建一个要传回的对象,并记录在全局变量里面。在c回调里面获取这个对象,并修改值。void callback(){ JNIEnv *env=NULL; pVm->AttachCurrentThread(&env,NULL);原创 2012-04-19 13:24:20 · 843 阅读 · 0 评论 -
InputStream和Reader区别
java.io下面有两个抽象类:InputStream和ReaderInputStream是表示字节输入流的所有类的超类Reader是用于读取字符流的抽象类InputStream提供的是字节流的读取,而非文本读取,这是和Reader类的根本区别。即用Reader读取出来的是char数组或者String ,使用InputStream读取出来的是byte数组。弄清了两个超类的根本区转载 2012-06-06 14:19:18 · 508 阅读 · 0 评论 -
android adb 报错:more than one device or emulator
手机和机器同时连到电脑上。eclipse识别了两个模拟器。通过adb connect连到了机器上,但是adb push文件的时候,会出现more than one device or emulator这个错误。查询adb命令,需要通过-s指定连接的机器名称才可以。搞定adb -s 192.168.25.200:5555 push liba.so /system/l原创 2012-05-04 11:27:38 · 725 阅读 · 0 评论 -
cat /proc/cpuinfo
cat /proc/cpuinfo Processor : ARMv7 Processor rev 2 (v7l)BogoMIPS : 2007.04Features : swp half thumb fastmult vfp edsp vfpv3 vfpv3原创 2012-11-30 11:05:55 · 689 阅读 · 0 评论 -
android 属性信息
cat /system/build.prop # begin build properties# autogenerated by buildinfo.shro.build.id=IML74Kro.build.display.id=full_godbox-eng 4.0.3 IML74K eng.2012原创 2012-11-30 11:04:34 · 1312 阅读 · 0 评论 -
从proc/cmdline中提取信息内核启动参数
root@android:/ # cat /proc/cmdline mem=764M vmalloc=600M console=ttyAMA0,115200 mtddev=blackbox androidboot.console=ttyAMA0 mtdparts=hinand:1024K(fastboot),512K(bootargs),512K(envback),512K(cfg),5原创 2012-11-30 14:16:26 · 5342 阅读 · 0 评论 -
eclipse启动时提示Failed to create java virtual machine
解决办法1:重启就行了。解决办法2:添加vm参数-startupplugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar--launcher.libraryplugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.100.v20110502-produ原创 2012-12-28 08:59:29 · 439 阅读 · 0 评论 -
GBK 转成 utf8
GBK是汉字字符编码,是gb2312的扩充。GBK汉字是从0x8140开始的,unicode是从0x4e02开始的。需要一个转换表,这个很难找。先将gbk转成unicode字符,gbk与unicode对应关系如下:gbk是两个字节的,第一个字节h,第二个字节l GBK/3: 8140-A0FEh的范围是从0x81-0xA0, l范围从0x40-0xFEunicode是从0x原创 2013-01-08 17:14:16 · 1319 阅读 · 0 评论 -
这两天调试代码发现android4.0要求内存对齐
挺奇怪的,报的错误上网查了查就是内存对齐。@@@ ABORTING: INVALID HEAP ADDRESS IN dlfreemalloc分配必须是8字节对齐的才行。这个地方很奇怪。改成4字节都不行。不然free的时候会报bug原创 2013-01-08 17:26:46 · 2776 阅读 · 3 评论 -
hi3716c android4.0 在ubuntu下编译出现问题
external/mesa3d/src/glsl/linker.cpp: In function ‘void assign_varying_locations(gl_shader_program*, gl_shader*, gl_shader*)’:external/mesa3d/src/glsl/linker.cpp:1394:49: error: expected primary-expr原创 2013-01-23 16:49:12 · 517 阅读 · 0 评论 -
又有错误external/gtest/src/../include/gtest/internal/gtest-param-util.h:122:11: error: ‘ptrdiff_t’ does
external/gtest/src/../include/gtest/internal/gtest-param-util.h:122:11: error: ‘ptrdiff_t’ does not name a type#include原创 2013-01-23 17:25:48 · 1692 阅读 · 0 评论 -
<command-line>:0:0: error: "_FORTIFY_SOURCE" redefined [-Werror]
这两天在ubuntu12.04上编译HI3716c android包,发现的如标题的错误。错误打印如下:host C++: obbtool :0:0: error: "_FORTIFY_SOURCE" redefined [-Werror]:0:0: note: this is the location of the previous definitioncc1plus: al原创 2013-01-22 08:50:36 · 5343 阅读 · 0 评论 -
hi3716c android4.0编译错误frameworks/compile/slang/slang_rs_export_foreach.cpp: In static member functio
frameworks/compile/slang/slang_rs_export_foreach.cpp: In static member function ‘static slang::RSExportForEach* slang::RSExportForEach::Create(slang::RSContext*, const clang::FunctionDecl*)’:framewo原创 2013-01-24 10:26:23 · 1640 阅读 · 0 评论 -
android service 学习笔记
部分摘自:http://tech.ddvip.com/2013-01/1357802889188554.htmlhttp://www.cnblogs.com/charley_yang/archive/2011/01/09/1931043.html Service的启动有两种方式:context.startService() 和 context.bindService() con原创 2013-02-02 09:46:00 · 507 阅读 · 1 评论 -
eclipse 链接源代码选中之后,字体设置,找了好久终于找到了。
如图,取消System default选项就行了。原创 2013-02-04 16:17:45 · 472 阅读 · 0 评论 -
adt安装路径https://dl-ssl.google.com/android/eclipse/
adt重新安装,路径如下:https://dl-ssl.google.com/android/eclipse/重新安装插件之后,android sdk manager 正常了。原创 2013-02-05 10:20:49 · 1118 阅读 · 0 评论