- 浏览: 465192 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
wwwjiandan:
我现在遇到的问题是将Activity设置为非全屏,且andro ...
Android中软键盘弹出时底部菜单上移问题 -
zjhdreams:
求下载链接
Android 9Patch (NinePatch) -
wtjandjay:
受教了 .......
从程序员到项目经理 -
mr_zhang2011:
将博客搬至CSDN -
fyc0109:
为什么我传过去的值, 有的都不对呢, 顺序也是一样的.就是获得 ...
Android Parcelable序列化自定义类集合在Activity间传递
转载 http://www.j2megame.org/index.php/content/view/2331/125.html
Author: 一滴蔚蓝色 | Date: 2010-08-31 | View: 293 | 开发技术 - 程序设计 | Digg: 0
n7610系列
手机屏幕:176*204
大量使用2.0的翻转方法很容易死机(最好用诺基亚自带的翻转方法);
-------------------------------------------------
n78(n73 系列)
据我们老板的推测,打包的时候要注意NAME的奇偶个数。(偶数个字符有时候安装不了)
MOTO
小
C
系列
常见机型:
C650
手机屏幕
:
128*128
游戏
屏幕:
128*116
非全屏屏幕:
128*100
JAVA
联网:
CMWAP
需要代理
字体大小:
17*17
,一行约
7
个中文
字,内置一种字体,任何字体选项均为默认字体
MIDP
:
2.0
CLDC
:
1.0
JAVA
单个容量限制:标准
100K
(实际无限制,小于手机本身内存
)
JAVA
堆栈容量:
800K
特别
1
:支持
MOTO
FUNLIGHT API
特别
2
:支持
MOTO
3D API
特别
3
:开启摄像头、内部文件
访问权限等需要授权
特别
4
:
C650
机型:
setMediaTime
该机型不支持,
playerUpdate
传过来的
player
是副本,所以应该用
equal
而不是
==
。
--------------------------------------------------------------------------------
MOTO C550/C370/E380
系列
手机屏幕:
96*65
游戏屏幕:
96*64
非全屏屏幕:
96*64
JAVA
联网:
CMWAP
需要代理
字体大小:不明,可参考
MOTO C
MIDP
:
1.0
CLDC
:
1.0
JAVA
单个容量限制:
100K
标准(实际不明)
JAVA
堆栈容量:
512K
特别
1
:支持
MOTO
GAME API
,可实现相当于
MIDP2.0
的功能
。
--------------------------------------------------------------------------------
MOTO E398
、
V600
系列
手机屏幕:
176*220
游戏屏幕:
176*204
非全屏屏幕:
176*182
JAVA
联网:
CMWAP
需要代理
字体大小:
17*17
一行约
10
个中文字,内置一种字体,任何字体选项均为默认字体。
MIDP
:
2.0
CLDC
:
1.0
JAVA
单个容量限制:无限制,小于手机本身内存
JAVA
堆栈容量:
800K
特别
1
:
E398
支持
MOTO FUNLIGHT API
特别
2
:支持
MOTO
3D API
特别
3
:开启摄像头、内部文件访问权限等需要授权
特别
4
:
V300
系列,键值正好与
E398
互为相反数,可以归为同一个版本,取键值的判断
其绝对值。
--------------------------------------------------------------------------------
MOTO C975/C980/V980
系列
手机屏幕:
176*220
游戏屏幕:
176*204
非全屏屏幕:
176*182
JAVA
联网:
CMWAP
需要代理
字体大小:内置三种字体
MIDP
:
2.0
CLDC
:
1.1
JAVA
单个容量限制:无限制,小于手机本身内存
JAVA
堆栈容量:
1.5M
特别
1
:支持标准
3D API
特别
2
:支持蓝牙
--------------------------------------------------------------------------------
MOTO E680
系列
手机屏幕:
240*320
游戏屏幕:
240*320
JAVA
联网:
CMWAP
需要代理、直联
字体大小:内置三种字体
MIDP
:
2.0
CLDC
:
1.1
JAVA
单个容量限制:无限制,小于手机本身内存
JAVA
堆栈容量:
1.5M
(预想)
特别
1
:支持标准
3D API
特别
2
:支持蓝牙
特别
3
:
E680
上
5
个空格占一个字符
宽度
特别
4
:
E680
加载代码
是分段加载,尽量避免写超长的方法,否则可能会有延迟。
--------------------------------------------------------------------------------
NOKIA S40 V1
手机屏幕:
128*128
游戏屏幕:
128*128
(
FullCanvas
)
非全屏屏幕:
128*???
JAVA
联网:
CMWAP
直接联
字体大小:三种字体大小,最小字体
12*12
,一行约
10
个中文字
MIDP
:
1.0
CLDC
:
1.0
JAVA
单个容量限制:
64KB
JAVA
堆栈容量:不明
特别
1
:按键会有延迟,中断后原线程
还会在后台继续运行
直到调用
repaint
,内存开销不当会死机
----------------------------------------------------------------------------------
NOKIA S40 V2
手机屏幕:
128*128
游戏屏幕:
128*128
(
FullCanvas
或
setfullscreenmode(ture)
)
非全屏屏幕:
128*???
JAVA
联网:
CMWAP
直接联
字体大小:三种字体大小,最小字体
12*12
,一行约
10
个中文字
MIDP
:
2.0
CLDC
:
1.0
JAVA
单个容量限制:
110~128KB
不等
JAVA
堆栈容量:不明
-------------------------------------------------------------------------------------
NOKIA 6230i
手机屏幕:
128*128
游戏屏幕:
208*208
(这里指分辨率)
JAVA
联网:
CMWAP
直接联
字体大小:不明,可参考
S40
MIDP
:
2.0
CLDC
:
1.0
JAVA
单个容量限制:不明
JAVA
堆栈容量:不明
--------------------------------------------------------------------------------------
NOKIA S60 MIDP1.0
手机屏幕:
176*208
游戏屏幕:
176*208
(
FullCanvas
)
非全屏屏幕:
176*144
JAVA
联网:
CMWAP
直接联
字体大小:不明,一行可显示约
12-13
个中文字
MIDP
:
1.0
(但是可增加多媒体播放
API
)
CLDC
:
1.0
JAVA
单个容量限制:不明
JAVA
堆栈容量:不明
特别
1
:
3650
机型:
setClip
和
drawRegion
搭配不能正确设置
裁减框。
特别
2
:
3650
机型:频繁
I/O
操作会死机,应尽量在游戏初始化时将数据
一次读入。
特别
3
:
N-Gage
机型:在背景缓冲上
setClip
和
drawRegion
搭配完全不能设置裁减框声音播放有问题,建
特别
4
:
N-Gage
机型:声音播放有问题,建议在
I/O
操作等跟系统
底层有关调用之后再播放声音
---------------------------------------------------------------------------------------
NOKIA S60 MIDP2.0
手机屏幕:
176*208
游戏屏幕:
176*208
(
FullCanvas
或
setfullscreenmode(ture)
)
非全屏屏幕:
176*144
JAVA
联网:
CMWAP
直接联
字体大小:不明,一行可显示约
12-13
个中文字
MIDP
:
2.0
CLDC
:
1.0
JAVA
单个容量限制:不明
JAVA
堆栈容量:不明
特别
1
:
6600
机型:调用
readFully
不能按指定字节数读取,
readByte
代替。
特别
2
:
6600
机型:
setClip
和
drawRegion
搭配在欧版
6600
上不能正确设置裁减框,导致绘图错误
特别
3
:
7610
机型:
drawRegion
在这个机型上会拖慢速度,建议使用
Nokia
UI API
上的
drawImage
。
特别
4
:
7610
机型:绘图函数
调用不当会当机。
特别
5
:
6681
机型:频繁
I/O
操作会死机,应尽量在游戏初始化时将数据一次读入。
特别
6
:
6681
机型:使用
2.0
的
drawRegion
会造成内存泄露,尽量减少使用翻转,尤其是画地图时应尽量使用
1.0
的
drawImage
来实现
----------------------------------------------------------------------------------------
索爱
K700C
手机屏幕:
176*220
游戏屏幕:
176*220
(
setfullscreenmode(true)
)
游戏屏幕:
176*208
(
com.nokia.mid.ui.FullCanvas
)
非全屏屏幕:
176*176
(
setfullscreenmode(false)
)
JAVA
联网:
CMWAP
需要代理
字体大小:不明,一行中文字数约
10
个,内置一种字体,任何字体选项均为默认字体。
MIDP
:
2.0
CLDC
:
1.1
JAVA
单个容量限制:
???
JAVA
堆栈容量:
512K
(实际使用中感觉不止)
特别
1
:支持
NOKIA
UI API
,但是
drawpixels(),getpixels()
这
2
个表现差劲不能使用
特别
2
:支持标准
3D
API
特别
3
:单个类文件不能超过
70K(JAR
包压缩后的大小
)
,否则无法加载
------------------------------------------------------------------------------------
波导
S689
手机屏幕:
128*160
游戏屏幕:
128*144
非全屏屏幕:
128*128
(估计)
JAVA
联网:
CMWAP
需要代理
字体大小:不明,
一行约
8
个中文字,内置一种字体
MIDP
:
2.0
CLDC
:
1.0
JAVA
单个容量限制:
200K
JAVA
堆栈容量:
512K
------------------------------------------------------------------------------
阿尔卡特
OT556/557
手机屏幕:
128*160
游戏屏幕:
128*160
非全屏屏幕:
128*129
JAVA
联网:
CMWAP
需要代理
字体大小:
14*14
,一行中文字个数约
8
个,内置一种字体
font(0,0,0)
MIDP
:
2.0
CLDC
:
1.0
JAVA
单个容量限制:
256k
JAVA
堆栈容量:
512K
----------------------------------------------------------------------------------
三星
X108/X608
手机屏幕:
128*128
游戏屏幕:
128*128
(全屏补丁实现)
非全屏屏幕:
128*110
JAVA
联网:
CMWAP
需要代理
字体大小:不明,一行中文字个数不明,内置一种字体
font(0,0,0)
MIDP
:
1.0
CLDC
:
1.0
JAVA
单个容量限制:
???
JAVA
堆栈容量:不明
手机
Java
之怪现象
2008-01-08 21:09
下面记载的都是手机
java
实现中各种奇怪的毛病,
bug
,或者
……
特性,是根据某项目
的开发
经验总结出来的。但是涵盖的手机型号还是有限。因此很有可能某些
“
特性
”
会存在于更多的采用了相同
JVM
(比如平台
相同、生产厂商)的手机上。
JAVA
手机网
[www.cnjm.net
]==
早期
S60
的内存泄漏
==
这个
bug
可以上溯至
2003
年,甚至更早。表现为
java
应用
中如果使用了
Class.getResourceAsStream("
本地文件
")
无法释放其占用的内存,是的,没有任何办法,无论是调用获得的的
InputStream
实例的
close()
或将其设为
null
,甚至显式强制
System.gc ()
,都没有效果。结果就是至少和本地文件同尺寸的内存成为了无法回收的垃圾。这个问题还影响到以
Class.getResourceAsStream ()
为基础的
Image.createImage()
(这个是最要命的,如何能够不使用图片资源
呢!)。
这个
bug
据说在新的
S60
上已经解决
了。但是
Nokia3230
(
4.0526.2ch
)、
Nokia7610
(
6.0525.0ch
)都存在这个问题。对于这些个有问题的机型,在
java
程序
中是无法完美解决这个问题的,只能尽量避免。比如集中、统一载入资源,永不释放(也就是说,尽量控制泄漏的次数)。当然,这会对已有代码造成很大影响。毕竟手机
java
应用是内存受限系统的典型,大多数情况下,珍贵的内存中只保留需要的资源。
==
键盘响应事件
==
在
MIDP1
中,获取
键盘事件只能自己实现
Canvas.keyPressed()
。但是
MotorolaE398
和
SonyEricssonK700c
的实现却很奇怪。表现为左右软键有可能在这个方法中捕获不到。而是否能够成功捕获,取决于
keyPressed()
方法中代码的行数
……
我承认我没彻底搞清楚这其中的玄机。鬼知道
Motorola
和
SonyEricsson
是怎么实现的
JVM
。我只知道把
keyPressed
中的所有代码提取到另外一个函数中,在
keyPressed
只把参数传递给新函数,问题就消失了
……
==
超慢的
drawRegion ==
除了
N-Gage QD
,几乎所有的
NokiaS60
手机都实现了
MIDP2
的支持。
MIDP2
中,最为重要的几个特性之一就是
Graphics.drawRegion
。这个
API
可以方便的将图片旋转、剪切之后画到画布上。
但是,这个
API
在
Nokia3230
、
Nokia7610
等手机上的实际性能表现让人实在不敢恭维。于是,这个最重要的
API
成了摆设
……
没什么怎么办,只能急需延用
MIDP1
的做法,自己实现剪切和旋转,或者像我一样懒,直接要求美工把旋转之后的图片全都做出来
……
JAVA
手机网
[www.cnjm.net
]
==
诡异的内存容量
==
按照官方
Spec
,
Java
在
Nokia3125
上的可用内存(即
Java Heap Size
)为
512k
。但是实际测试的结果是,
Nokia3125
只有
412k
左右的实际内存,相差整整
100k
。不过好在
Nokia3125
并不是种市场保有量很高的型号。但是它是我正在使用的型号
……
==
无法
repaint ==
这个问题只存在于
SonyEricssonK700c
。表现为在
keyPressed()
中调用
repaint()
进行屏幕重画没有任何反映。
JAVA
手机网
[www.cnjm.net
]
解决办法是,在
keyReleased()
中补一个
repaint()……
== UTF8 ==
还是
SonyEricssonK700c
的问题。问题存在于
new String(byte[], charset)
上。也就是说,当获得了某个
byte[]
,并希望用
UTF8
作为字符集将其转换为字符串的时候,使用上述方法在
SonyEricssonK700c
上会出现丢失字符的现象。这个现象很诡异,以至于我目前没有搞清楚什么情况下会丢失字符(我甚至专门写了个测试程序在真机上跑,得出的结论是丢失字符的原因可能会很复杂,简单的拿被丢掉字符附近的一个子串来测没有任何问题)。
幸亏还是有解决办法的。不用
new String
就完了,而要用更加麻烦的办法,比如像我一样,用
ByteArrayInputStream
,外面套
InputStreamReader (bais, "UTF8")
,然后用
StringBuffer
一个一个
char
读进来,最后再
toString()……
==
不可
*
的
copyArea
==
这是
Motorola
机器上的问题,
V3
和
E398
都有。
copyArea
是
Graphics
的作整块屏幕像素
copy
的常用
API
(
2D
动态
背景的游戏几乎是必不可少)。按照
Sun
官方的
Spec
,手机厂商有义务来保证其
API
实现不存在覆盖冲突问题。但是
Motorola
显然做得不够好。在
Motorola
手机上使用这个
API
会随机产生贴图混乱的情况
……
解决办法是自己实现另外一套机制。比如使用另外一张至少和屏幕同样大小的
Image
作为缓冲,用两次
drawImage
来替代
copyArea……
不过这个方法显而易见的缺点是消耗了更多的内存(那可是不小于屏幕尺寸的
Image
啊!)。如果内存实在吃紧,只能退而再求其次,作为缓冲的
Image
继续缩水,
drawImage
的次数继续增加
……
不过这个时候需要自己手工解决覆盖冲突
……
JAVA
手机网
[www.cnjm.net
]
==
无法安静下来的
3220 ==
不知道这个问题是不是在
S40
平台上都有,手里
S40
又支持
MIDI
的手机实在是太少了
……
3220
的一个很明显的特征就是声音大。以至调用了
VolumeControl.setLevel(0)
之后还是有声音,和
Sun
官方的
Spec
完全不符
……
没办法,只能在需要静音的时候,再补一个
VolumeControl.setMute(true)
。
==
永不
ready ==
这是一段手机
java
获取网络
数据的常用代码:
while(InputStream.ready()) {
InputStream.read() }
。
JAVA
手机网
[www.cnjm.net
]
但是经测试,在
Nokia3230
上,这个
ready
永远返回
false……
没办法,如果不改上述代码的话,就自己实现一个继承类吧。
发表评论
文章已被作者锁定,不允许评论。
-
Handler Runnable和Thread之间的区别和联系 应用
2013-10-22 18:12 1355Android开发:Handler Runnable和 ... -
try-catch-finally的用法之finally
2013-10-22 10:43 982关于try-catch-finally的用法我就不多说了。 ... -
Eclipse快捷键大全
2011-06-05 17:28 1090Eclipse快捷键大全(转载) ... -
j2me Http Get和Post请求总结
2011-05-31 17:25 1597一:比较Http get和post区别: java解释,和j ... -
java上下转型
2011-03-09 11:02 1403import java.util.Vector; /** * ... -
自己写的j2meMVC模式
2010-10-15 15:02 1001cotroller 控制类包 model 数据组织类包 v ... -
用MV设计模式写的多媒体实例-MediaSampler
2010-10-15 14:46 1218三个包: mediasampler Midlet包 dat ... -
知识积累-KBOX2
2010-10-14 18:01 1134使用J2ME的MVC2开源框架KBOX http://w ... -
知识积累-EasyMF
2010-10-14 17:46 10982008 - 05 - 20 EasyMF 简易J ... -
J2ME 非常棒的文章推荐
2010-10-14 17:35 1093J2ME 非常棒的文章推荐 ... -
RMSDAO的原理和使用介绍
2010-10-12 17:40 1308备注:文章在附件里 初始化RMSDAO时要直接使用领域对象 ... -
使用BinCompiler将资源文件打包成二进制文件
2010-10-12 17:20 1449转载 http://yarin.iteye.com/bl ... -
手机内存优化文章
2010-10-12 15:57 1513转载http://www.cnjm.net/tech/ ... -
j2me Class.getResourceAsStream()
2010-10-12 15:46 1519J2me Class.getResourceAsStream( ... -
J2ME 本地文件读写
2010-10-12 15:43 1406转载http://www.devdiv.net/viewthr ...
相关推荐
J2ME,全称Java 2 Micro Edition,是Java平台的一个子集,主要用于嵌入式设备和移动设备的开发,如手机、智能电表、家庭自动化设备等。它提供了跨平台的开发环境,使得开发者可以编写一次代码,到处运行。J2ME由两大...
j2me游戏开发j2me游戏开发j2me游戏开发j2me游戏开发j2me游戏开发j2me游戏开发j2me游戏开发
【j2ME游戏开发详解】 Java 2 Micro Edition(j2ME)是Oracle公司推出的用于开发和部署在小型设备、移动设备以及嵌入式系统上的应用程序的平台。它以其轻量级、跨平台的特性,成为了早期手机游戏开发的重要工具。本...
j2me移动开发实战教学视频源代码.rar j2me移动开发实战教学视频源代码.rar j2me移动开发实战教学视频源代码.rar j2me移动开发实战教学视频源代码.rar j2me移动开发实战教学视频源代码.rar
《J2ME游戏开发》是一本专为Java Mobile Edition(J2ME)平台设计的游戏开发指南,中文译本使得国内开发者能更方便地理解和学习这一技术。J2ME是Java平台的一个子集,主要用于移动设备和嵌入式系统,如手机、智能...
J2ME移动开发实战精解教学J2ME移动开发实战精解教学
### 知识点详解:精通J2me嵌入式开发 - 环境配置 #### 一、J2ME概述 J2ME(Java 2 Micro Edition)是Java平台的一个版本,专门针对移动设备和嵌入式系统设计,如手机、PDA、消费电子产品等。它基于Java的核心语言...
教程名称:J2ME移动开发实战教学系列视频教程课程目录:【】1.体系介绍和环境配置(J2ME移动开发实战教学系列视频)【】10.数值运算,字符串处理,时间管理(J2ME移动开发实战教学系列视频)【】11.随机数,集合和...
这个中文开发教程为想要踏入J2ME开发领域的朋友们提供了宝贵的资源,它包含了一个清晰易懂的PDF版本,能够帮助初学者快速上手。 J2ME主要由配置(Configurations)和 profiles(Profile)组成,其中配置定义了设备...
J2ME,全称Java 2 Micro Edition,是Java平台的一个子集,主要用于移动设备、嵌入式设备和消费类电子产品的应用程序开发。这个压缩包文件"j2me游戏开发及其源码.rar"包含了关于J2ME游戏开发的详细资料,非常适合初学...
**J2ME游戏开发(第一版)** Java 2 Micro Edition (J2ME) 是一个为小型设备和嵌入式系统设计的Java平台,它在20世纪末至21世纪初广泛应用于移动电话、PDA和家用电器等设备上的应用程序开发,尤其是游戏领域。J2ME...
**J2ME游戏开发基础知识** Java 2 Micro Edition (J2ME) 是一种Java平台,专为资源有限的设备如移动电话、智能手表和家用电器等设计。在J2ME中进行游戏开发,开发者可以利用其跨平台特性,将游戏移植到各种不同的...
**J2ME游戏开发概述** Java 2 Micro Edition(J2ME)是Java平台的一个子集,主要用于嵌入式设备和移动设备,如早期的智能手机和平板电脑。它提供了丰富的功能,使得开发者能够构建功能丰富的应用程序,特别是游戏。...
J2ME,全称Java 2 Micro Edition,是Java平台的一个子集,主要用于移动设备、嵌入式设备上的应用程序开发,尤其是手机游戏。这个压缩包包含的“J2ME游戏开发资源”是一份宝贵的资料库,对于想要学习或从事J2ME游戏...
**J2ME移动开发视频讲义2入门教程** J2ME,全称为Java 2 Micro Edition,是Java平台的一个子集,专为资源有限的移动设备如手机、PDA等设计。这个“J2ME移动开发视频讲义2入门教程”是由郭克华教授提供的,旨在帮助...
### J2ME的3D开发教程:探索移动设备上的三维世界 #### 引言:步入移动3D开发的殿堂 随着科技的飞跃发展,移动设备的功能早已超越了基本的通讯需求,它们成为了集娱乐、多媒体体验及游戏于一体的综合性平台。其中...
**J2ME游戏开发教程详解** Java 2 Micro Edition(J2ME)是Java平台的一个子集,专门设计用于资源有限的设备,如移动电话、智能手表和家用电器等。在2000年代初,J2ME是移动游戏开发的重要平台,许多经典手机游戏都...
**J2ME程序开发全方位基础讲解汇总** Java 2 Micro Edition (J2ME) 是Java平台的一个子集,主要用于嵌入式系统、移动设备和物联网(IoT)应用的开发,如手机、智能家电和车载信息系统等。本教程将全方位地讲解J2ME...
J2ME,全称Java Micro Edition,是Java平台的一个子集,主要针对嵌入式设备和移动设备的应用开发。这份“J2ME开发文档(全)”提供了从基础到高级的全面学习资源,包含了五个部分,旨在帮助开发者深入理解和熟练掌握...