当前位置: 编程技术>移动开发
本页文章导读:
▪JAVAME学习札记(5) JAVAME学习笔记(5)
如果需要,开发者可以随时调用getKeyStates方法来查询键的状态。getKeyStates()获取游戏的物理键状态。返回值的每个比特位都表示设备上的一个特定的键。如果一个键对应的.........
▪ Zxing审查 Zxing调研
简介 最近的Widget项目用到需要用摄像头来处理条形码,章师兄推荐了ZXing这个开源的项目,于是做一简单的调研。ZXing是一个开源Java类库用于解析多种格式的1D/2D条形码。目.........
▪ JAVAME学习札记(6) JAVAME学习笔记(6)
用于渲染Sprite的原始帧由一个单独的Image对象提供,此Image可以是可变的,也可以是不可变的。如果使用多帧,图像将按照指定的宽度和高度被切割成一系列相同大小的帧.........
[1]JAVAME学习札记(5)
来源: 互联网 发布时间: 2014-02-18
JAVAME学习笔记(5)
如果需要,开发者可以随时调用getKeyStates方法来查询键的状态。getKeyStates()获取游戏的物理键状态。返回值的每个比特位都表示设备上的一个特定的键。如果一个键对应的比特位的值为1,表示该键当前被按下,或者自上次调用此方法后到现在,至少被按下过一次。如果一个键对应的比特位的值为0,表示该键当前未被按下,并且自上次调用此方法后到现在从未被按下过。这种“闭锁行为(latching behavior)”保证一个快速的按键和释放总是能够在游戏循环中被捕获,不管循环有多慢。下面是获取游戏按键的示例:
// 获得键的状态并存储
int keyState = getKeyStates();
if ((keyState & LEFT_KEY) != 0) {
positionX--;
}
else if ((keyState & RIGHT_KEY) != 0) {
positionX++;
}
调用这个方法的副作用是不能及时清除过期的状态。在一个getKeyStates调用后如果紧接着另一个调用,键的当前状态将取决于系统是否已经清除了上一次调用后的结果。
某些设备可能无法直接访问键盘硬件,因此,这个方法可能是通过监视键的按下和释放事件来实现的,这会导致getKeyStates可能滞后于当前物理键的状态,因为时延取决于每个设备的性能。某些设备还可能没有探测多个键同时按下的能力。
请注意,除非GameCanvas当前可见(通过调用Displayable.isShown()方法),否则此方法返回0。一旦GameCanvas变为可见,将初始化所有键为未按下状态(0)。
如果需要,开发者可以随时调用getKeyStates方法来查询键的状态。getKeyStates()获取游戏的物理键状态。返回值的每个比特位都表示设备上的一个特定的键。如果一个键对应的比特位的值为1,表示该键当前被按下,或者自上次调用此方法后到现在,至少被按下过一次。如果一个键对应的比特位的值为0,表示该键当前未被按下,并且自上次调用此方法后到现在从未被按下过。这种“闭锁行为(latching behavior)”保证一个快速的按键和释放总是能够在游戏循环中被捕获,不管循环有多慢。下面是获取游戏按键的示例:
// 获得键的状态并存储
int keyState = getKeyStates();
if ((keyState & LEFT_KEY) != 0) {
positionX--;
}
else if ((keyState & RIGHT_KEY) != 0) {
positionX++;
}
调用这个方法的副作用是不能及时清除过期的状态。在一个getKeyStates调用后如果紧接着另一个调用,键的当前状态将取决于系统是否已经清除了上一次调用后的结果。
某些设备可能无法直接访问键盘硬件,因此,这个方法可能是通过监视键的按下和释放事件来实现的,这会导致getKeyStates可能滞后于当前物理键的状态,因为时延取决于每个设备的性能。某些设备还可能没有探测多个键同时按下的能力。
请注意,除非GameCanvas当前可见(通过调用Displayable.isShown()方法),否则此方法返回0。一旦GameCanvas变为可见,将初始化所有键为未按下状态(0)。
[2] Zxing审查
来源: 互联网 发布时间: 2014-02-18
Zxing调研
简介
最近的Widget项目用到需要用摄像头来处理条形码,章师兄推荐了ZXing这个开源的项目,于是做一简单的调研。
ZXing是一个开源Java类库用于解析多种格式的1D/2D条形码。目标是能够对QR编码、Data Matrix、UPC的1D条形码进行解码。 其提供了多种平台下的客户端包括:J2ME、J2SE和Android。
当前,ZXing主要支持以下条形码:
•UPC-A and UPC-E
•EAN-8 and EAN-13
•Code 39
•Code 128
•QR Code
•Data Matrix ('alpha' quality)
•ITF
首先,在http://code.google.com/p/zxing/上下载到ZXing的应用程序包,解压下载到的程序包后,我们可以看到整个应用程序分为一些组件。如下:
1.core: 核心包,是整个应用的主要组件组成部分。
2.javame: 为JavaME来定制的客户端工具。
3.javase: 为PC端定制的客户端工具。
4.android: 为Android端定制的客户端工具。
5.androidtest: Android测试应用程序,里面有在其它程序中使用此应用的示例。
基本测试
ZXing程序的运行需要我们使用Ant去打包编译之后才可。在这里,我主要调研了在PC端,在WTK上及android上的运行。
1.PC端使用Java应用程序调试
首先,Build一下core与javase两个包,如下:
编译完毕后,我们来运行程序,如下:
运行后会弹出一个文件选择器,我们选取事先准备好的一张条形码图后,可以看出,对于给出的条形码图,程序将其读出到图片下的一个标签中。
2.在NOKIA N82上程序调试
首先,我们得保证我们的机器已经安装了WTK。之后,我们必须下载Proguard (http://proguard.sourceforge.net/downloads.html)到本地,将其中的proguard.jar拷备到WTK的bin目录下,修改zxing根目录下的build.properties文件中的wtk-home属性就可以了(注意,对于windows环境中使用,目录分隔符为两个斜杠)之后可以开始编译:
在编译之后,会在zxing的javame目录下生成一个BarcodeReader.jar与BarcodeReader.jad文件。我们直接双击jad文件就可以在WTK模拟器中使用了。
3.在Android模拟器上程序调试
首先,我们得保证我们机器有有现成的Andorid SDK。同时保证在WTK的bin目录下存在proguard.jar,并在build.properties中配置了wtk-home与android-home属性,之后开始编译程序:
程序编译完成之后,就会在android下的bin目录中生成一个BarcodeScanner-debug.apk程序,我们可以使用Android模拟器为我们提供的adb工具来完成测试。执行:
就会打开Andorid的模拟器并将我们的应用程序安装到Android中,
简介
最近的Widget项目用到需要用摄像头来处理条形码,章师兄推荐了ZXing这个开源的项目,于是做一简单的调研。
ZXing是一个开源Java类库用于解析多种格式的1D/2D条形码。目标是能够对QR编码、Data Matrix、UPC的1D条形码进行解码。 其提供了多种平台下的客户端包括:J2ME、J2SE和Android。
当前,ZXing主要支持以下条形码:
•UPC-A and UPC-E
•EAN-8 and EAN-13
•Code 39
•Code 128
•QR Code
•Data Matrix ('alpha' quality)
•ITF
首先,在http://code.google.com/p/zxing/上下载到ZXing的应用程序包,解压下载到的程序包后,我们可以看到整个应用程序分为一些组件。如下:
1.core: 核心包,是整个应用的主要组件组成部分。
2.javame: 为JavaME来定制的客户端工具。
3.javase: 为PC端定制的客户端工具。
4.android: 为Android端定制的客户端工具。
5.androidtest: Android测试应用程序,里面有在其它程序中使用此应用的示例。
基本测试
ZXing程序的运行需要我们使用Ant去打包编译之后才可。在这里,我主要调研了在PC端,在WTK上及android上的运行。
1.PC端使用Java应用程序调试
首先,Build一下core与javase两个包,如下:
编译完毕后,我们来运行程序,如下:
cd core ant cd ../javase ant
cd .. java -cp javase/javase.jar;core/core.jar com.google.zxing.client.j2se.GUIRunner
运行后会弹出一个文件选择器,我们选取事先准备好的一张条形码图后,可以看出,对于给出的条形码图,程序将其读出到图片下的一个标签中。
2.在NOKIA N82上程序调试
首先,我们得保证我们的机器已经安装了WTK。之后,我们必须下载Proguard (http://proguard.sourceforge.net/downloads.html)到本地,将其中的proguard.jar拷备到WTK的bin目录下,修改zxing根目录下的build.properties文件中的wtk-home属性就可以了(注意,对于windows环境中使用,目录分隔符为两个斜杠)之后可以开始编译:
cd core ant cd ../javame ant
在编译之后,会在zxing的javame目录下生成一个BarcodeReader.jar与BarcodeReader.jad文件。我们直接双击jad文件就可以在WTK模拟器中使用了。
3.在Android模拟器上程序调试
首先,我们得保证我们机器有有现成的Andorid SDK。同时保证在WTK的bin目录下存在proguard.jar,并在build.properties中配置了wtk-home与android-home属性,之后开始编译程序:
cd core ant clean build-no-debug cd ../android ant
程序编译完成之后,就会在android下的bin目录中生成一个BarcodeScanner-debug.apk程序,我们可以使用Android模拟器为我们提供的adb工具来完成测试。执行:
adb install bin/BarcodeReader.apk
就会打开Andorid的模拟器并将我们的应用程序安装到Android中,
1 楼
zhouqing318
2010-07-28
虽然只是官方文档的翻译版本,不过我通过这篇文档找到了zxing,谢谢了哈
2 楼
liggway
2010-09-02
不知道楼主有没有测过Data Matrix ,我使用的android扫描不出来,qr正常
3 楼
新入职
2011-03-15
受用啦
[3] JAVAME学习札记(6)
来源: 互联网 发布时间: 2014-02-18
JAVAME学习笔记(6)
用于渲染Sprite的原始帧由一个单独的Image对象提供,此Image可以是可变的,也可以是不可变的。如果使用多帧,图像将按照指定的宽度和高度被切割成一系列相同大小的帧。正如下图所示,同一序列的帧可以以不同的排列存储,这取决于游戏开发者是否方便开发。
每一帧都被赋予一个唯一的索引号。左上角的帧被赋予索引号0。余下的帧按照行的顺序索引号依次递增(索引号从第一行开始,接着是第二行,以此类推)。getRawFrameCount()方法返回所有原始帧的总数。
6.3.2 帧序列
Sprite的帧序列定义了帧以什么样的顺序来显示。缺省的帧序列就是所有可用帧的顺序排列,因此,帧序列和对应的帧的索引号是一致的。这表示缺省的帧序列的长度和所有原始帧的总数是相等的。例如,如果一个Sprite有4帧,缺省的帧序列为{0, 1, 2, 3}。
可以使用setFrameSequence(int[] sequence)来为Sprite设置帧序列。当调用此方法时,将会复制sequence数组;因此,随后对参数sequence数组进行的任何更改均不会影响Sprite的帧序列。传入null将使Sprite的帧序列重置为缺省值。
开发者必须在帧序列中手动切换当前帧。可以调用setFrame(int),prevFrame()或者nextFrame()方法来完成。注意,这些方法是针对帧序列操作,而不是对帧的索引操作。如果使用缺省的帧序列,那么帧序列的索引和帧的索引是可互换的。
如果愿意,可以为Sprite定义任意的帧序列。帧序列必须至少包含一个元素,并且每个元素都必须是一个有效的帧的索引号。通过定义新的帧序列,开发者可以方便地以任意想要的顺序来显示Sprite的帧;帧可以重复,忽略,或者以相反的顺序显示,等等。
例如,下图显示了一个特定的序列如何被用于动画显示一个蚊子。帧序列被设计为蚊子振动翅膀3次,然后在下次循环前暂停一会儿。
每次调用nextFrame()方法就会更新显示,动画效果如下:
要创建一个静态的Sprite,可以调用public Sprite(Image image),通过提供的图像创建一个新的Sprite。如果要创建动态的Sprite,就必须使用public Sprite(Image image,int frameWidth, int frameHeight)。
帧的大小由frameWidth和frameHeight指定,所有帧的大小必须相等。可以在图像中水平、竖直或以方格形式排列。源图像的宽度必须是帧宽度的整数倍,高度必须是帧高度的整数倍。如果image的宽度或高度不是frameWidth或frameHeight的整数倍,将会抛出IllegalArgumentException异常。
用于渲染Sprite的原始帧由一个单独的Image对象提供,此Image可以是可变的,也可以是不可变的。如果使用多帧,图像将按照指定的宽度和高度被切割成一系列相同大小的帧。正如下图所示,同一序列的帧可以以不同的排列存储,这取决于游戏开发者是否方便开发。
每一帧都被赋予一个唯一的索引号。左上角的帧被赋予索引号0。余下的帧按照行的顺序索引号依次递增(索引号从第一行开始,接着是第二行,以此类推)。getRawFrameCount()方法返回所有原始帧的总数。
6.3.2 帧序列
Sprite的帧序列定义了帧以什么样的顺序来显示。缺省的帧序列就是所有可用帧的顺序排列,因此,帧序列和对应的帧的索引号是一致的。这表示缺省的帧序列的长度和所有原始帧的总数是相等的。例如,如果一个Sprite有4帧,缺省的帧序列为{0, 1, 2, 3}。
可以使用setFrameSequence(int[] sequence)来为Sprite设置帧序列。当调用此方法时,将会复制sequence数组;因此,随后对参数sequence数组进行的任何更改均不会影响Sprite的帧序列。传入null将使Sprite的帧序列重置为缺省值。
开发者必须在帧序列中手动切换当前帧。可以调用setFrame(int),prevFrame()或者nextFrame()方法来完成。注意,这些方法是针对帧序列操作,而不是对帧的索引操作。如果使用缺省的帧序列,那么帧序列的索引和帧的索引是可互换的。
如果愿意,可以为Sprite定义任意的帧序列。帧序列必须至少包含一个元素,并且每个元素都必须是一个有效的帧的索引号。通过定义新的帧序列,开发者可以方便地以任意想要的顺序来显示Sprite的帧;帧可以重复,忽略,或者以相反的顺序显示,等等。
例如,下图显示了一个特定的序列如何被用于动画显示一个蚊子。帧序列被设计为蚊子振动翅膀3次,然后在下次循环前暂停一会儿。
每次调用nextFrame()方法就会更新显示,动画效果如下:
要创建一个静态的Sprite,可以调用public Sprite(Image image),通过提供的图像创建一个新的Sprite。如果要创建动态的Sprite,就必须使用public Sprite(Image image,int frameWidth, int frameHeight)。
帧的大小由frameWidth和frameHeight指定,所有帧的大小必须相等。可以在图像中水平、竖直或以方格形式排列。源图像的宽度必须是帧宽度的整数倍,高度必须是帧高度的整数倍。如果image的宽度或高度不是frameWidth或frameHeight的整数倍,将会抛出IllegalArgumentException异常。
最新技术文章: