- 博客(37)
- 资源 (5)
- 收藏
- 关注

转载 JNI官方规范中文版——如何在JNI中使用己有的C/C++库
JNI的一个使用方式就是编写一些本地方法来使用己有的本地库。本章介绍了一种生成一个包含一系列本地函数的类库的经典的方式。本章首先用一对一映射这种(one-to-one mapping)最直接的方式来写封装类.接下来,我们会介绍一种叫做共享stubs(shared stubs)的技术来简化编写封装类的任务。然后,在本章的最后,我们会讨论怎么样使用peer classes来封装本地数据结构。本
2016-07-07 15:39:47
2173

转载 JNI官方规范中文版——在程序中集成JVM需要注意的JNI特征
我们已经讨论了JNI在写本地代码和向本地应用程序中集成JVM时的特征。本章接下来的部分分介绍其它的JNI特征。8.1 JNI和线程JVM可以做到在相同的地址空间内执行多个线程。由于多个线程可能会在同时共享资源,所以,增加了程序的复杂性。要完全理解本章的东西,你需要对多线程编程比较熟悉,知道怎么样在Java中用多线程访问共享资源。8.1.1 约束限制如果你的本地代码要运行在多个线
2016-07-07 15:38:43
322

转载 JNI官方规范中文版——如何把一个JVM嵌入到本地程序中
本章讲述如何把一个JVM嵌入到你的本地程序当中去。一个JVM可以看作就是一个本地库。本地程序可以链接这个库,然后通过“调用接口”(invocation interface)来加载JVM。实际上,JDK中标准的启动器也就是一段简单的链接了JVM的C代码。启动器解析命令、加载JVM、并通过“调用接口”(invocation interface)运行Java程序。7.1 创建JVM我们用下面这段
2016-07-07 15:37:55
1007

转载 JNI官方规范中文版——如何在JNI中抛出Java异常
很多情况下,本地代码做JNI调用后都要检查是否有错误发生,本章讲的就是怎么样检查错误和处理错误。我重点放在JNI函数调用引发的错误上面。如果一个本地方法中调用了一个JNI函数,它必须遵守下面几个步骤来检查和处理这个JNI函数调用时可能引发的错误。至于其它可能的错误,比如本地代码中调用了一个可能引发错误的系统方法,那只需要按照该系统方法的标准文档中规定的来处理就可以了。6.1 概述我们通
2016-07-07 15:36:48
853

转载 JNI官方规范中文版——如何使用JNI中的global reference和local reference
JNI提供了一些实例和数组类型(jobject、jclass、jstring、jarray等)作为不透明的引用供本地代码使用。本地代码永远不会直接操作引用指向的VM内部的数据内容。要进行这些操作,必须通过使用JNI操作一个不引用来间接操作数据内容。因为只操作引用,你不必担心特定JVM中对象的存储方式等信息。这样的话,你有必要了解一下JNI中的几种不同的引用:1、 JNI支持三种引用:局部引用、
2016-07-07 15:35:55
1565

转载 JNI官方规范中文版——如何访问Java中的字段和方法
现在,你知道了如何通过JNI来访问JVM中的基本类型数据和字符串、数组这样的引用类型数据,下一步就是学习怎么样和JVM中任意对象的字段和方法进行交互。比如从本地代码中调用Java中的方法,也就是通常说的来自本地方法中的callbacks(回调)。我们从进行字段访问和方法回调时需要的JNI函数开始讲解。本章的稍后部分我们会讨论怎么样通过一些cache(缓存)技术来优化这些操作。在最后,我们还会讨
2016-07-07 15:32:03
435

转载 JNI官方规范中文版——基本类型、字符串、数组
开发者使用JNI时最常问到的是Java和C/C++之间如何传递数据,以及数据类型之间如何互相映射。本章我们从整数等基本类型和数组、字符串等普通的对象类型开始讲述。至于如何传递任意对象,我们将在下一章中进行讲述。3.1 一个简单的本地方法JAVA端源代码如下:class Prompt { // native method that prints a prompt and re
2016-07-07 15:30:26
442

转载 JNI官方规范中文版——从一个简单的例子开始
本章通过一个简单的例子来示例如何使用JNI。我们写一个Java程序,并用它调用一个C函数来打印“Hello World!”。2.1 概述图2.1演示了如何使用JAVA程序调用C函数来打印“Hello World!”。这个过程包含下面几步:1、 创建一个类(HelloWorld.java)声明本地方法。2、 使用javac编译源文件HollowWorld.java,产生HelloWo
2016-07-07 15:29:13
363

转载 JNI官方规范中文版——简介
JNI是Java平台的一个重要特征,使用它我们可以重用以前用C/C++写的大量代码。本书既是一个编程指南也是一个JNI手册。本书共包括三部分:1、 第二章通过一个简单的例子介绍了JNI。它的对象是对JNI不熟悉的初学者。2、 3~10章对JNI的特征进行了系统的介绍。我们会举大量的例子来说明JNI的各个特征,这些特征都是JNI中重要且常用的。3、 11~13章是关于JNI的技术规范。可
2016-07-07 15:27:56
401

转载 JNI官方规范中文版——序
这四种情况下你会用到本书:1、 在Java程序中复用以前写过的C/C++代码。2、 自己实现一个java虚拟机3、 学习不同语言如何进行协作,尤其是如何实现垃圾回收和多线程。4、 把一个虚拟机实现整合到用C/C++写的程序中。本书是写给开发者的。JNI在1997年第一次发布,本书总结了SUN工程师和大量开发者两年来积累的经验。本书介绍了JNI的设计思想,对这种思想的理解是使
2016-07-07 15:24:10
404

原创 基于Binder的IPC通讯机制
Android版本:4.4模块:基于Binder的线程间IPC通讯机制简介:binder 是linux提供的一套轻量级的IPC组件框架,Android系统可以被看作是一套C/S架构,而系统的各个功能都通过IPC通讯机制结合在一起,android 启动的时候会注册各种服务到ServiceManager中,在应用层的角度来看可以当作是Client客户端,通过发送请求读取
2014-08-28 17:51:55
766

原创 win7黑苹果安装教程
前言 看了网上诸多安装教程根据自己的理解写的随记 其中有解释不恰当的地方 我水平也不高高手见了忘赐教指正 一 准备工具1懒人版镜像(即.cdr 不要原版) 2硬盘安装助手 将系统镜像写入磁盘工具 3变色龙 用来引导安装系统 4 wowpc.iso 引导工具 镜像写入安装盘后将这个文件添
2014-02-16 19:08:15
2786
原创 Linux 平台使用wpa_supplicant配置连接wifi
简介wpa_supplicant是Linux BSD, Mac OSX和Windows的WPA的服务,支持WPA和WPA2(IEEE 802.11i/RSN),它适用于台式机/笔记本和嵌入式系统,Supplicant是在客户端站中使用的IEEE 802.1X/WPA组件,它使用WPA身份验证器实现秘钥协商,并控制漫游和IEEEE802.11认证/关联的WLAN驱动程序wpa_supplicant被设计成一个在后台运行的"守护进程"程序,并作为控制无线连接的后端组件,wpa_supplicant支持单独
2021-10-23 13:44:32
7438
原创 解决ListView被底部控件遮挡问题
关键点使用相对布局,重点将底部指定到listView下面,并且注意设置权重,亲测有效解决办法android:layout_weight="1"解决前<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res...
2019-05-31 00:09:53
2563
1
转载 TextView属性大全
属性名相关方法描述android:autoLinksetAutoLinkMask(int)控制是否自动查找并转换 URL、邮箱地址等链接为可点击链接.默认值为"none",禁止该属性.android:autoTextsetKeyListener(KeyListener)如果设置,这表示该 TextView 的文本输入法可以自动更正常见拼写错误.
2016-10-27 17:46:43
1551
转载 CPU工作原理
一直以来,总以为CPU内部真是如当年学习《计算机组成原理》时书上所介绍的那样,是各种逻辑门器件的组合。当看到纳米技术时就想,真的可以把那些器件做的那么小么?直到看了Intel CPU制作流程及AMD芯片的制作流程的介绍不禁感慨,原来科技是如此的发达。本文我们以Intel为例对CPU的工作原理做简单介绍,仅仅是简单介绍,那么AMD,ARM,MIPS甚至PowerPC你应该会触类旁通才对。
2015-09-24 20:38:52
597
转载 Android中用Google Map API出现的getLastKnowLocation空指针异常
这个问题困扰我很久,为什么之前用模拟器测试有时可以成功有时却失败,而使用真机测试却从来没有成功,很是郁闷 首先大家应该记得下面一段代码的作用://设置服务商的信息 Criteria criteria =new Criteria(); //提供服务的精度标准 criteria.setAccuracy(Criteria.ACCUR
2014-09-30 16:32:49
592
转载 java识别图片中文字技术
java文字识别程序的关键是寻找一个可以调用的OCR引擎。tesseract-ocr就是一个这样的OCR引擎,在1985年到1995年由HP实验室开发,现在在Google。tesseract-ocr 3.0发布,支持中文。不过tesseract-ocr 3.0不是图形化界面的客户端,别人写的FreeOCR图形化客户端还不支持导入新的 3.0 traineddata。但这标志着,现在有自由的中文OC
2014-09-30 16:31:57
7675
2
转载 Android利用canvas画各种图形(点、直线、弧、圆、椭圆、文字、矩形、多边形、曲线、圆角矩形)
Class OverviewThe Canvas class holds the "draw" calls. To draw something, you need 4 basic components: A Bitmap to hold the pixels, a Canvas to host the draw calls (writing into the bitmap), a drawi
2014-09-30 16:30:53
495
转载 说说JSON和JSONP,也许你会豁然开朗
前言 由于Sencha Touch 2这种开发模式的特性,基本决定了它原生的数据交互行为几乎只能通过AJAX来实现。 当然了,通过调用强大的PhoneGap插件然后打包,你可以实现100%的Socket通讯和本地数据库功能,又或者通过HTML5的WebSocket也可以实现与服务器的通讯和服务端推功能,但这两种方式都有其局限性,前者需要PhoneGap支持,后者要求用户设备必须支持We
2014-09-30 16:29:29
487
转载 SQLite数据库的操作应用
一:在android系统中除了文件和sharedPreferences 可以存储数据外,还可以用SQLite数据库,它是android自带的嵌入式的关系型的数据库,它支持null,Integer,real,text,blod(二进制数据)五种数据类型,但实际运算和保存数据时它可以接受其它数据类型,只是这时候会转换为对应的五种数据类型。 但有一种情况例外:定义为Integer primary key
2014-09-30 16:28:43
668
原创 ListView 显示两列并添加监听(Button 控件除外)
由于项目需要,查阅资料自己做的demo,总共两个类,两个布局文件1.Activitypackage com.example.sqlitelistview;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.
2014-09-30 16:27:32
1816
原创 Android ListView中按钮监听器设置的解决方案
在做安卓应用开发的时候很经常会用到ListView,并且每一个Item里面都会有按钮之类的需要进行事件监听的控件。在给按钮添加OnClickListener的时候,一开始很下意识的会想在ListView的adapter的getView方法中找到每个Button并new一个OnClickListener分配给这个button。但是当数据量很大的时候,new出来这么多个监听器势必会对内存造成一定的压力
2014-09-30 16:26:43
598
转载 串口通讯数据处理算法分析与实现
1,应用背景分析在很多的实际工程应用中,通讯方式通常是RS232、RS485、I2C和SPI等等。这类接口都有一个共同的特点:按照字节流的方式来进行通讯,即每中断一次,表明成功传送或者接收一个字节。还有一些接口传输的是数据块,即一次传送或者接收多个字节,比如CAN、USB和以太网等等。CAN和USB通常一次传输几十个字节,和字节流的方式类似。所不同的是,我们可以利用CAN和USB接口的
2014-09-30 16:24:15
2765
原创 android ndk开发环境搭建(windows环境下)
这里讲解的是android ndk在windows下开发环境搭建的过程1.下载ndk和cygwinndk的下载地址:http://dl.google.com/android/ndk/android-ndk-r8b-windows.zip当前更新到了r8b.cygwin的下载地址:http://cygwin.com/setup.exe2.把ndk解压到一个磁盘里即可3.安装c
2014-09-30 16:24:01
538
转载 图片左右滚动控件(带倒影)——重写Gallery
今天在网上找了些资料,做了一个图片左右滚动的Demo,类似幻灯片播放,同时,图片带倒影效果,运行效果如下图:实现方式是重写Gallery,使用自定义的Gallery来实现这一效果,工程一共三个文件,一个Activity,一个自定义的Gallery,还有就是一个适配器ImageAdapter,直接上代码:ScrollGallery.javapublicclass Scroll
2014-09-30 16:21:26
443
转载 Eclipse 设置单个项目编码以及设置所有项目编码
最近做项目从Eclipse工作空间之外导入了一个项目 但是后来却不能正常运行 发现文件中文注释部分乱码了 于是乎百度 谷歌起来 确实 网友是强大的 我导入的那个项目乱码问题解决了 当时没怎么在意 后来自己做项目的 时候 发现之前自己开发的项目所有都出现了乱码 是不是我只需要针对某一个项目设置编码就行了? 一、对整个工作空间设置默认编码①选择Window -
2014-09-30 16:20:45
1466
转载 GestureDetector类的用法
GestureDetector类定义了许多触摸事件。包括 1.boolean onDoubleTap(MotionEvent e)解释:双击的第二下Touch down时触发 2.boolean onDoubleTapEvent(MotionEvent e)解释:双击的第二下Touch down和up都会触发,可用e.getAction()区分。 3.bool
2014-09-30 16:20:19
442
转载 SQLite数据库增删改查操作
一、使用嵌入式关系型SQLite数据库存储数据在Android平台上,集成了一个嵌入式关系型数据库——SQLite,SQLite3支持NULL、INTEGER、REAL(浮点数字)、TEXT(字符串文本)和BLOB(二进制对象)数据类型,虽然它支持的类型只有五种,但实际上sqlite3也接受varchar(n)、char(n)、decimal(p,s) 等数据类型,只不过在运算或保存时会转成对
2014-09-30 16:19:25
588
转载 Sqlite命令行查看数据库中的内容
Sqlite中的命令行:用sqlite的命令在DOS中查看数据。1. 启动模拟器;2. 启动cmd,进行DOS窗口,输入: C:\Documents and Settings\jun.wang>adb shell //进入模拟器# cd data //转换到存放数据的目录下
2014-09-30 16:18:23
1539
转载 java开发技巧:对jar包进行再次修改
引言 在学习和开发JAVA项目中,我们经常会用到第三方提供的一些jar。使用这些第三方工具包,可以提高我们开发的效率,缩短开发的时间。有的第三方工具,提供详细的使用说明和源代码,有时有的却不提供源代码,使用说明也不是很详细,这对我们使用就非常不方便。 有道是,知其然才知其所以然。有时候,我们必须读取jar里的打包的类。而有时还有可能要对它进行小量修改,使之适用于自己的特殊需求。前期
2014-09-30 16:17:27
3239
转载 android 应用程序异常崩溃捕捉
import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java
2014-09-30 16:15:08
565
转载 android应用开发笔记-xml数据资源使用
android中的资源文件存放在两个文件中:res和assets.assets中主要保存一般的原生文件,如MP3文件,android程序不能直接访问,必须通过AssetManager类以二进制流的形式来读取.而res中的资源可以通过R资源类直接访问.res目录下又有anim、drawable、layout、menu、raw、values和xml文件夹,分别用来保存动画、图片、布局文件、菜单、原生文
2014-09-30 16:15:03
455
转载 android 事件处理机制之requestDisallowInterceptTouchEvent
当手指触摸到屏幕时,系统就会调用相应View的onTouchEvent,并传入一系列的action。当有多个层级的View时,在父层级允许的情况下,这个action会一直向下传递直到遇到最深层的View。所以touch事件最先调用的是最底层View的onTouchEent,如果View的onTouchEvent接收到某个touch action并作了相应处理,最后有两种返回方式return tru
2014-09-30 16:14:09
401
原创 android java-jni 映射数组分析
Andoird 中使用了一种不同传统Java JNI的方式来定义其native的函数。其中很重要的区别是Andorid使用了一种Java 和 C 函数的映射表数组,并在其中描述了函数的参数和返回值。这个数组的类型是JNINativeMethod,定义如下: typedef struct {const char* name;const char* signature;void*
2014-09-30 16:10:45
708
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人