??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲国产成人精品无码区在线秒播 ,亚洲国产成人久久精品99,亚洲AV无码久久精品成人http://www.tkk7.com/gooogle/category/20855.html <a ><color ="0xFFFFFF">3G 手机开发网</color></a>zh-cnTue, 27 May 2008 20:19:16 GMTTue, 27 May 2008 20:19:16 GMT60探讨J2ME 媒体的实现http://www.tkk7.com/gooogle/archive/2008/05/27/203127.html3G工作?/dc:creator>3G工作?/author>Tue, 27 May 2008 02:11:00 GMThttp://www.tkk7.com/gooogle/archive/2008/05/27/203127.htmlhttp://www.tkk7.com/gooogle/comments/203127.htmlhttp://www.tkk7.com/gooogle/archive/2008/05/27/203127.html#Feedback1http://www.tkk7.com/gooogle/comments/commentRss/203127.htmlhttp://www.tkk7.com/gooogle/services/trackbacks/203127.html作者:wuhua
I间Q?a href="htt://wuhua.3geye.net" target="_blank">htt://wuhua.3geye.net
转蝲请保留上面的信息Q请重知识产品Q谢?/p>

记得以前看过一高手写的文章?/p>

http://www.cnblogs.com/zhengyun_ustc/archive/2006/03/28/j2me_streaming_demo.html

q种思想需要用C个线E去控制视频的播放,感觉思\是好的,不过比较复杂?/p>

上个C拜我结合了上面高手的思\Q自己ȝ了另外一直播攄方式?那就是队列的方式?/p>

我们可以采用一些元数据的描q方式。来指导媒体播放cdQ播攑֐车,已经播放路径Q播N列的。我们的E序只需要解释下q个元数据,q且按照q种元素局的格式来获取媒体播放队列Q最后采用一个线E构造播N列的方式q行播放?/p>

下面看看我是怎么hq这些数据的

<root name="wuhua">
<li url="/video.xml">MTV</li>
<li url="/music.xml">MUSIC</li>
</root>

上面的是一些xml播放列表描述文g?/p>

q段是指定一些参C及一些媒体编码。跟播放队列?/p>

<video name="信乐?-L" desc="about" encode="audio/x-wav" >
    <item>/0.wav</item>
    <item>/1.wav</item>
    <item>/2.wav</item>
    <item>/3.wav</item>
    <item>/4.wav</item>
    <item>/5.wav</item>
    <item>/6.wav</item>
    <item>/7.wav</item>
    <item>/8.wav</item>
    <item>/9.wav</item>
    <item>/10.wav</item>
    <item>/11.wav</item>
    <item>/12.wav</item>
    <item>/13.wav</item>
    <item>/14.wav</item>
    <item>/15.wav</item>
    <item>/16.wav</item>
    <item>/17.wav</item>
    <item>/18.wav</item>
    <item>/19.wav</item>
    <item>/20.wav</item>
    <item>/21.wav</item>
    <item>/22.wav</item>    
</video>

q是一部小电媄的播N?/p>

<video name="一部很单的电媄" desc="about" encode="video/mpeg" >
    <item>/0.mpg</item>
    <item>/1.mpg</item>
    <item>/2.mpg</item>
    <item>/3.mpg</item>
    <item>/4.mpg</item>
    <item>/5.mpg</item>
    <item>/6.mpg</item>
    <item>/7.mpg</item>
    <item>/8.mpg</item>
    <item>/9.mpg</item>
    <item>/10.mpg</item>
    <item>/11.mpg</item>
    <item>/12.mpg</item>
    <item>/13.mpg</item>
    <item>/14.mpg</item>
    <item>/15.mpg</item>
</video>

我基本已l实C上面的流媒体播放方式Q不q在试的过E中发现在播N频,或者视频设备的时候,感觉?/p>

两个Player之间切换有点卡,大概卡那?.1U。暂时还没有惛_解决办法?

有好东西需要跟大家分n。你有好思\吗,大家分n下吧?/p>

PSQ?实现上面的流媒体ҎQ采用了EasyMF 框架



]]>
七个优秀的开源J2ME目http://www.tkk7.com/gooogle/archive/2008/04/10/191876.html3G工作?/dc:creator>3G工作?/author>Thu, 10 Apr 2008 07:20:00 GMThttp://www.tkk7.com/gooogle/archive/2008/04/10/191876.htmlhttp://www.tkk7.com/gooogle/comments/191876.htmlhttp://www.tkk7.com/gooogle/archive/2008/04/10/191876.html#Feedback3http://www.tkk7.com/gooogle/comments/commentRss/191876.htmlhttp://www.tkk7.com/gooogle/services/trackbacks/191876.html

文章出处Q?a >http://www.3geye.net/?3/viewspace-3347

MWT

Micro Window Toolkit(MWT)是一个用于开?a onclick="javascript:tagshow(event, 'J2ME');" href="javascript:;" target="_self">J2ME 用户界面(UI)的工具包。它h友好Q强大,快速,开?/strong> {特性。因为它?灉|"来自 AWTQSwing和SWT。可以用bitmap fonts{来自定义组件。它专门为嵌入式开发而设计和优化。基于LGPL发布?br /> K[Lr%sRI3 目地址Q?a target="_blank">http://j2me-mwt.sourceforge.net/


V4TD6Y.n3?h*H3

1 - J2ME Desktop:
Download theJad andJar or view it withJava WebStart

$? i6_7iPGl3U~3
2 - ELP ~ RPG:
Download theJad andJar or view it withJava WebStart

JZCQYxT3
3 - Progress Bar:
Download theJad andJar or view it withJava WebStart
3GEYEV/[+_Q?"D[ N6i
4 - Messenger Interface:
Download theJad andJar or view it withJava WebStart

J4ME-开源的UI Logger 目

J4ME 是一个J2ME应用E序开发包。它包括一个UI框架Q一个日记框架用于帮助调试因不同品牌手机 的差异而生的问题Q一个蓝牙GPS框架让你能够? 用JSR-179 Location API接口从蓝牙GPS讑֤获取定位信息和一个Javacd其中包含了J2ME中没有的Ҏ比如双精度型数字的计等?br /> a7Oi6k^Z u3 ui.gif logging.gif gps.gif

OpenBaseMovil

3GEYE6ct|I\
BaseMovil是一个J2ME应用E序开发框架。它由多个比较独立类库组成包括:3GEYEJsTH$m"V,m a+y0|K
OpenBaseMovil-coreQ整个框架的底层基础 cdQ它主要提供国际?/strong> 支持、Q务控制、加密、压~、QҎ持、properties文g支持、一个MVC框架、一个事件框架?span style="display: none;">3GEYEXO3L0@C$z M8E
OpenBaseMovil-dbQ一个关pd数据?/strong> 引擎Q其中一个表格存储的数据可上千?span style="display: none;">3GEYE1] m$?/vE|1@
OpenBaseMovil-scriptQ一?a onclick="javascript:tagshow(event, '%BD%C5%B1%BE');" href="javascript:;" target="_self">脚本 引擎?span style="display: none;">3GEYE2\G:rVA7Ez
OpenBaseMovil-uiQ一个UI工具包?br /> C,h~%O2B|3 q个几类库都能够完全集成在一起用?span style="display: none;">3GEYEotaZ5J
OpenBaseMovil.jpg
+m'^1V[1L&Q7L3 http://www.openbasemovil.org/

J2ME 游戏 脚本引擎/J2me game script engine

一个非常小的script脚本引擎Q可以同时在j2me / j2se / c++ platform上面q行3GEYELBXR[-CR
它的目标是用这个脚本引擎便于开发一个更加灵zȝj2me 游戏?br /> (FQ(wY$\NK{ PsW3 q个脚本有点像BASIC

q东西不错,是一个开源的脚本引擎Q大家可以学习里面的思想3GEYE-v r.Ps!_+da[
里面其中带了一个例子,?子棋。感觉挺不错的。这东西在SF也挺z跃的?/p>

http://sourceforge.net/projects/j2megamescript/

例子囄3_200710301619291.jpg

Y!Go

Y!Goq是一个Yahoo Messenger J2ME客户端?/p>

http://ygo.sourceforge.net/

EBookME

EBookME是一个用于把导入的文?a onclick="javascript:tagshow(event, '%CE%C4%BC%FE');" href="javascript:;" target="_self">文g (HTML,DOC,PDF,…)生成J2ME电子书籍格式(JAD,JAR)的JavaE序。生成的电子?/strong> c可以在支持MIDP1.0的手Z阅读?/p>

http://ebookme.sourceforge.net/

jMobileCore

jMobileCore 包是一个强大的工具用来开发J2ME应用E序.jMobileCore提供支持开发简z的Q基于Canvas?a onclick="javascript:tagshow(event, '%CD%BC%D0%CE');" href="javascript:;" target="_self">囑Ş 用户接口Q快速地数据讉KQ可靠地? ?化多U程midlet应用E序。jMobileCore包可工作在Q何支持J2ME (MIDP1.0 和CLDC1.0)的移动电话与PDA讑֤.

http://jmobilecore.sourceforge.net/

q有l典的J2ME-POLISH

http://www.j2mepolish.org

J2ME Polish 2.0

J2ME Polish 2.0 Release Candidate is here!

design example 1

design example 2

design example 3



]]>
修复J2ME Game Script 的bughttp://www.tkk7.com/gooogle/archive/2008/03/30/189583.html3G工作?/dc:creator>3G工作?/author>Sun, 30 Mar 2008 03:46:00 GMThttp://www.tkk7.com/gooogle/archive/2008/03/30/189583.htmlhttp://www.tkk7.com/gooogle/comments/189583.htmlhttp://www.tkk7.com/gooogle/archive/2008/03/30/189583.html#Feedback0http://www.tkk7.com/gooogle/comments/commentRss/189583.htmlhttp://www.tkk7.com/gooogle/services/trackbacks/189583.html

http://www.3geye.net/?3/viewspace-3196


今天在玩开?/strong>的Script的引擎的时候在解释下面script的时候出现问题,3GEYE x _:f i ] J
你知道ؓ什么吗3GEYE9}&`'R$M%\ d Y&a
i = 53GEYE1E ^:p ` u
j = 12323233GEYE M"U z B z O+A ?"w
h = i + j3GEYE'r X%I8P&b+L
println(h)
N ~;A7B U5c x0G \ u33GEYE.h h#n I [ L
抛出q个异常3GEYE a7T m/e v"n j

+`)c,} k3s34 : Illegal statment ,String index out of range: -93GEYE3y!r W R%? m:k m P N
java.lang.StringIndexOutOfBoundsException: String index out of range: -93GEYE v0m F U x)U m
    at java.lang.String.substring(Unknown Source)
@ v&w%U R,M3x.s y3    at gscript.Interpreter.callSub(Interpreter.java:1355)3GEYE A(k4N Q!I J G a C u
    at gscript.Interpreter._sub(Interpreter.java:401)
'_ d.g [ H*I(\ G3    at gscript.Interpreter.callSub(Interpreter.java:1353)
a h z \ f M3    at gscript.Interpreter.start(Interpreter.java:227)
/m/V |,v!d m;@3    at gscript.Interpreter.start(Interpreter.java:198)
L5|"^ E j C3    at ScriptTest.main(ScriptTest.java:12)
(i ]*@ M S \ c,`3a%c3
)N6r H!`+h3
7R W U+h!L1Q(P3后来发现原来是println(h)了一个换行符受?br /> U B g ]4b @ d J!F j5Y3
U z _.s J3现在我修改了下源代码?span style="display: none;">3GEYE P M \ O#c
我修改了下代码后Q这个bug解决?br /> I ^"M T.` e)B N3看原来的代码
@6}/~ v ^ h N X3        for (int i = 0; i < srcBytes.length; i++) {3GEYE [ z&G U$@)q z/s-a,C
            if (srcBytes[i] == 0x0a || i + 1 == srcBytes.length) { // 行结?或?a target="_self">文gl束3GEYE v G |'y d D
                try {3GEYE4U q z i,V0N z W-R
                    String s = new String(line.toByteArray()); // j2me使用
/s d K3?9T U H ^8l \/} ~3                    // String s = new String(line.toByteArray(), "GB2312");
.P f H#K6B U X'e F8R3                    // //j2se使用3GEYE#O e u;Q ])S+p.M e
                    s = s.trim();3GEYE Y,b E ? D L j O
                   
m'j!g } g8| L3                    srcCode[lineCount++] = s;3GEYE C7o u ~-P a
                } catch (Exception ex1) {
#H V p3v M;V V P9|3                }3GEYE N:u t:r ]-t.U
                line.reset();
h p Q&w x3            } else {3GEYE e |6D1f6x y
                line.write(srcBytes[i]);3GEYE R T T ]0h a
            }
b r,d ^.^3        }3GEYE-{ A#x)\3z4| N
3GEYE p Q-g n j y g3z
修改后的代码3GEYE.R p,{%P5s&C4Y

:S$N H8a R g3for (int i = 0; i < srcBytes.length; i++) {
l \ f(L O%} y-Y V$L3            if (srcBytes[i] == 0x0a ) { // 行结?或者文件结?span style="display: none;">3GEYE:[ o Q5_ d1J1^ {
                try {3GEYE!y2~ L m R p B!B
                    String s = new String(line.toByteArray()); // j2me使用
&~$`,Q ` u(A D*u3                    // String s = new String(line.toByteArray(), "GB2312");3GEYE E h0\/| j w X U3V
                    // //j2se使用3GEYE k1}4X S K L
                    s = s.trim();3GEYE3s h T o#{ z b
                    //System.out.println(s);3GEYE u i K&^5_)x6m0S p m*H
                    srcCode[lineCount++] = s;3GEYE g ]&D%d P
                } catch (Exception ex1) {
?%l/{,V { ^ ~ i3                }
@8B J _ W c1\3                line.reset();
8R e J&J p ~ T3            } else {3GEYE+S p p5F D:R N6d M/E&z
                line.write(srcBytes[i]);
M w$n6b(|;n J3                if(i + 1 == srcBytes.length){
$T9Q*C P3O(_0q3                    String s = new String(line.toByteArray()); // j2me使用3GEYE W A4E;c x0V
                    // String s = new String(line.toByteArray(), "GB2312");3GEYE ^ O$]#j/h$C
                    // //j2se使用
U;S U n u9}3                    s = s.trim();
}+^ ? I T q ?3                    s = s.trim();3GEYE } k9A+P Y"x
                    //System.out.println(s);
i [ S$Y!~3                    srcCode[lineCount++] = s;3GEYE l U d I c I
                }3GEYE { k4~ t L
            }
8V | h4Y({9N S v3        }

9U)q9w3v6g V3

]]>
J2ME 游戏脚本引擎/J2me game script engine 研究之一http://www.tkk7.com/gooogle/archive/2008/03/27/188977.html3G工作?/dc:creator>3G工作?/author>Thu, 27 Mar 2008 04:32:00 GMThttp://www.tkk7.com/gooogle/archive/2008/03/27/188977.htmlhttp://www.tkk7.com/gooogle/comments/188977.htmlhttp://www.tkk7.com/gooogle/archive/2008/03/27/188977.html#Feedback0http://www.tkk7.com/gooogle/comments/commentRss/188977.htmlhttp://www.tkk7.com/gooogle/services/trackbacks/188977.htmlhttp://www.3geye.net/?3/viewspace-3187

昨天Q因为工作需要想了解下脚步引擎的实现原理Q下载了一?a href="javascript:;" onclick="javascript:tagshow(event, '%BF%AA%D4%B4');" target="_self">开?/strong>?a href="javascript:;" onclick="javascript:tagshow(event, '%BD%C5%B1%BE');" target="_self">脚本引擎Q研I了下,3GEYE ^9ys.pK^.p;G!s
如果大家需要下载的Q请到我I间Google下,可以发现这个脚本引擎的具体地址?span style="display: none;">3GEYEX6xWl(p Y!Cl)z1^$`
下面我来说下q个脚本引擎的一?a href="javascript:;" onclick="javascript:tagshow(event, '%D0%D4%C4%DC');" target="_self">性能问题?br /> ![n t*w S` m3
%p6mw8VX3Qx;{ K%D5q3首先来看看他是怎么d脚本文g的?span style="display: none;">3GEYE6C~3UC p4d8{
3GEYEQF)A$pt)Q OG a
代码
;wv2zD:bP33GEYE+er GU4vzrz
 InputStream is = new Object().getClass().getResourceAsStream(path);   //j2me使用
0}%j6Ch}V'p3 ByteArrayOutputStream baos = new ByteArrayOutputStream();
MCd,`3n ~'S(|3 int ch = 0;
8|@DzXe:m2^O3    while ( (ch = is.read()) != -1) {3GEYE.fv`!mwn(R
      baos.write(ch);3GEYE$l | B8R"`jO
}3GEYE7{:AKw1ZF4}Kj:T
上面是作者读取脚本文件代码,本h觉得q个代码的效率很低,一个个字符d出来Q速度很慢Q我试了下发现d一个很单的文g需?7毫秒Q在Dell 1420的机器上。这L效率是很可怕的?br /> LpKEZ:^33GEYE:vN|Ou:C1X$^
下面看看我是怎么提高他的性能的?br /> "s'O3K:xW4IZ,Rm,R)I33GEYE(Gh6CO+G`
byte[] buff = new byte[512];3GEYE7u9]xA,?I
            long total = 0;3GEYEQ In|*A[1P
            int count = 0;3GEYE u J?J0d
3GEYEQ%fN X"|9W3JB
            while ((count = is.read(buff)) > 0) {
*@)teb6P)df&e+r3                baos.write(buff, 0, count);3GEYE5`X;C,@g?P6i o
                total += count;3GEYEnM7S+Gp)}$L(JG-m
            }
[]"|L%v8r$~3我是采用了一?12字节的缓冲区去读取这些数据,l过试发现Dell 1420机器上的p?毫秒?span style="display: none;">3GEYEM G U,s4| A$t
快了非常多?br /> /P:B`OX*HKE3不过脚本引擎除了d源文件外Q最重要的核心是解释引擎的速度?span style="display: none;">3GEYE%\ _`K4?#s;Zv

Ee[:?i$Rm3有时间l研I下?span style="display: none;">3GEYEjY-`8MTs




]]>
MIDP2.1规范的新Ҏ?/title><link>http://www.tkk7.com/gooogle/archive/2008/02/26/182128.html</link><dc:creator>3G工作?/dc:creator><author>3G工作?/author><pubDate>Tue, 26 Feb 2008 01:15:00 GMT</pubDate><guid>http://www.tkk7.com/gooogle/archive/2008/02/26/182128.html</guid><wfw:comment>http://www.tkk7.com/gooogle/comments/182128.html</wfw:comment><comments>http://www.tkk7.com/gooogle/archive/2008/02/26/182128.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.tkk7.com/gooogle/comments/commentRss/182128.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/gooogle/services/trackbacks/182128.html</trackback:ping><description><![CDATA[<div id="g4owmcq" class="blog_content"> <p>原文<br /> <a target="_blank">http://www.3geye.net/?3/viewspace-2909</a></p> <p> </p> <p> </p> <p> MIDP 2.1规范最l定E于2006q??6日,是对MIDP2.0规范的补充。和MIDP 2.0规范相比Q主要增加了下列新特性:<br /> <span style="display: none;">i0^~s ?4V8_3</span><span style="display: none;">3GEYEt}jflD+?4Cz</span><br /> 1?一个TextField或一个TextBox的最尺寸(存储定wQ不能少?000个字W?span style="display: none;">3GEYEX(x,P%@H[3s0c ?</span><br /> <span style="display: none;">3GEYEcCs9Y1{</span><br /> 2?LCDUI布局指o必须被遵?span style="display: none;">3GEYE {!h[$f&l</span><br /> <br /> <span style="display: none;">g2O6O.pK] }3</span>3?LayoutManager.insert()Ҏ的行为必M照以下的描述Qinsert(Layer,int)<br /> <span style="display: none;">$t;cV j3d3</span><br /> <span style="display: none;">;zrB)Z(RsG3</span>描述Q?span style="display: none;">3GEYETqC GY</span><br /> <br /> <span style="display: none;">-~0HKrh%qY-^b a"z3</span>Public void insert(javax.microedition.lcdui.game.Layer l,int index)<br /> <span style="display: none;">.S(K,|w)G|3</span><br /> <span style="display: none;">fP z xe4]3</span>插入一个新的Layer对象到LayoutManager在指定的索引?br /> <span style="display: none;">K,do \H8G3</span><span style="display: none;">3GEYE3_u4{2|$D"E</span><br /> 描述Q?br /> <span style="display: none;">:Z }2S(q%n3m3Q3</span><br /> <span style="display: none;">"anp8@aVS]5Uu3</span>? 入一个已l被d到这个LayoutManager的Layer对象{于先用LayoutManager.remove()Ҏ删除它,再用 insert()Ҏd到特定的索引。在LayoutManager.remove()Ҏ被调用前Q抛? IndexOutOfBoundsException的情况被?span style="display: none;">3GEYE|a]dN~D</span><br /> <br /> <span style="display: none;">LJTR}:g V1l3</span>参数Q?span style="display: none;">3GEYEX2Y/JKr1mPGJ</span><br /> <br /> <span style="display: none;">f,{8a#j/ay3</span>LQ被插入的Layer对象<br /> <span style="display: none;">l/h3NH8x'[3</span><br /> <span style="display: none;">;g@-`*D&~G3</span>IndexQ在被添加的新的Layer对象的烦引?span style="display: none;">3GEYE Q.Z2[)eb0G</span><br /> <span style="display: none;">3GEYE2Ad n'H+r2aHa</span><br /> 抛出Q?span style="display: none;">3GEYER? W8}#CKX#B2{:F`$Fa</span><br /> <span style="display: none;">3GEYE%k%|K{}` aZo9[</span><br /> NullPointerExceptionQ如果Layer对象为null<br /> <span style="display: none;">)hSiA*L\!PV3</span><span style="display: none;">3GEYEvVJ-\f\9U2_m([({</span><br /> IndexOutOfBoundsExceptionQ? 如果索引值小?。如果烦引值大于已l被d到LayoutManager中的Layer对象的数量且Layer对象不能被添加到q个 LayoutManager中。如果烦引值大于已l被d到LayoutManager中的Layer对象的数量且Layer对象已经被添加到q个 LayoutManager?br /> <span style="display: none;">^D f&WC3</span><span style="display: none;">3GEYE)wn y%?)cP]_</span><br /> 4?一个带有item Command对象且表C模式是Item.PLAIN的StringTtem对象必须L被作为添加了Command对象且表C模式是Item.HYPERLINK的StringTtem对象的方式显C?br /> <span style="display: none;">3N2T!^mWI~A [3</span><br /> <span style="display: none;">y\nG Q(\3</span>5? 许多的MIDP LUDUI囑փlg能包含文本(换句话说Q一个字母数字字W)Q那被显C给用户。这些组件的例子是List, TextBox , Alert , StringItem ,Form和Item。一个实现常帔R要截断这些可见的文本因ؓ不能适合被给的UIlg的指定空间。在q种情况下,一个实现必M用一个适当的可视化指示 Q例如一个省略符P来指C用P文本被截断。实际的W号或被用来昄截断的文本的W号以来于当前设备选择的区域设|。然而,可视化指C应该和用在讑֤? 地的UI的指CZ致?span style="display: none;">3GEYE!_Ka5s^ s.Y m</span><br /> <span style="display: none;">3GEYE3T Ab|g7X b</span><br /> 6?Canvas的触怺件必被支持Q如?u><strong><span style="color: #0000ff;"><a href="javascript:;" target="_self" onclick="javascript:tagshow(event, '%BB%F9%B4%A1');"><u><strong>基础</strong></u></a></span></strong></u>g支持q个特色。在q种情况下,Canvas.hasPointerEvents()Ҏ应该Lq回true?span style="display: none;">3GEYE k K W1l(U d@ ?3L5e</span><br /> <span style="display: none;">3GEYES"apZ!X%km</span><br /> 7?Canvas的触摸拖曳事件必被支持Q如果基g支持q个特色。在q种情况下,Canvas.hasPointerEvents()Ҏ应该Lq回true?span style="display: none;">3GEYElG-RuZ*n ~W7}</span><br /> <span style="display: none;">3GEYE5V9frZ Vvr5B M+y%k</span><br /> 8?Canvas的重复事件必被支持。在q种情况下,Canvas.hasRepeatEvents()Ҏ应该Lq回true?br /> <span style="display: none;">-K+j W5su$[9w3</span><br /> <span style="display: none;"> n5~1C t3\3</span>9?双缓冲图像必被支持。在q种情况下,Canvas.isDoubleBuffered()Ҏ应该Lq回true?br /> <span style="display: none;">1gx6jh7L3</span><br /> <span style="display: none;">0k ZgA$~rNt3</span>10?不同的文本输入模式的可用性(例如Q预a输入和仅仅是数字的输入)应该?u><strong><span style="color: #0000ff;"><a href="javascript:;" target="_self" onclick="javascript:tagshow(event, 'Java');"><u><strong>Java</strong></u></a></span></strong></u>和本地的<a href="javascript:;" target="_self" onclick="javascript:tagshow(event, '%D3%A6%D3%C3%B3%CC%D0%F2');"><u><strong>应用E序</strong></u></a>怸致。这意味着Q例如,如果预言输入文本模式在本地应用程序中可用Q那也应该在Java应用E序中可用?br /> <span style="display: none;">.B+| [ac+D a5@{3</span><span style="display: none;">3GEYE#_!i}9R:m#q O</span><br /> 11? Image对象的创建(不管格式Q必至支持:寸{于Q屏q宽度)乘以Q屏q高度)乘以Q以字节为单位的颜色深度Q或262144比特Q?28× 128×16比特Q?2KBQ,无论哪一个更大。注意,一个Image对象的内在表现应该保持至每个象?6字节的颜?透明度数?br /> <span style="display: none;"> yHK[!S:B\Kio3</span><span style="display: none;">3GEYE3BH4c(Bt8L7v|m0^2f</span><br /> 12?每一个包括在字符串值的通过System.getProperty(“microedition.commports”)Ҏq回的串行端口名字必d获取通过javax.microedition.io.CommConnection接口<br /> <span style="display: none;">}&[%}EM^3</span><span style="display: none;">3GEYEZ;V@WYf*y4c$z@a</span><br /> 12?在每个协议,AllowedSender域必d配适当的输入事件的地址域。地址域的使用和语法和语意以来于协议。然而,地址和过滤器必须被比较通过_的字W串匚wQ在那里Q字W串被一个接着一个字W的比较Q字W需要正地匚w通过两个通配W?span style="display: none;">3GEYEl?#gi1iKQ</span><br /> <br /> <span style="display: none;">1d#g+d!j6|+^v3</span>13? 以下地网l通信协议必须被支持,提供了以下Java ME接口的实玎ͼjavax.microedition.io.SockerConnection , javax.microedition.io.SecureConnection, javax.microedition.io.HttpsConnection<span style="display: none;">3GEYEA3t(f2[ P7BO2gR</span><br /> <br /> <span style="display: none;">!}5W!lT%Xi|"s5\'Z4_3</span>14?javax.microedition.io.HttpsConnection和javax.microedition.io.SecureConnection必须支持SSLv3协议Q其它的Q例如TLS,WTLS也许被支持?br /> <span style="display: none;">"{(UfSv&u Bx3</span><br /> <span style="display: none;">;\,Y|3l?3mM1[3</span>15?应用E序描述W应该包含MIDlet-Permissions<span style="display: none;">3GEYEt$sV*zh</span><br /> <br /> <span style="display: none;">{9Mu%FrK3</span>16? 以下的JAD/manifest文g属性被定义来支持指定预期的q行时执行环境:Runtime-Execution-EnvironmentQ这是一? 可选的属性,指出了应用程序必ȝq行时执行环境。这个属性也许有值MIDP.CLDC.如果MIDlet suite不指定属性,隐含的默认值是MIDP.CLDC。当值是MIDP.CLDCQ实现的行ؓ必须坚持在以下显C的更多的细节描q。这个属性值的附加 D在将来定义?a href="javascript:;" target="_self" onclick="javascript:tagshow(event, '%CA%D6%BB%FA');"><u><strong>手机</strong></u></a>实现必须支持q个属性。当值是MIDP.CLDCQ实现的行ؓ必须坚持以下要求Q?、支持API和API行ؓQ以及基虚拟机,必须 ZCLDC1.1规范?、手机实C怺选一C用Java ME的CDC规范。然而,如果CDC被用作基<a href="javascript:;" target="_self" onclick="javascript:tagshow(event, '%C5%E4%D6%C3');"><u><strong>配置</strong></u></a>Q运行在q个q_端的应用程序必ȝ见一个语义学和功能上{于CLDC1.1q_的环境。CDC特定 的API或者CDC特定行ؓ必须不能被暴露给应用E序或应用程序开发者?、当一个应用程序定义了Runtime-Execution- Environment属性|应用E序必须也定义一个CLDCq_在MicroEdition-Configuration属性g?、如果一个应? E序定义了不被实现支持的Runtime-Execution-Environment属性值或MicroEdition-Configuration? 性|应用E序不能被安装。所有的手机实现必须支持MIDP.CLDC值对于Runtime-Execution-Environment属性?span style="display: none;">3GEYEa/YjP!{Btk</span><br /> <span style="display: none;">3GEYE f4H'l#`#yg</span><br /> 17?用户使用OTA下蝲安装之后Q实现必LC用h否启动MIDlet<span style="display: none;">3GEYEl h(ViR(?"co</span><br /> <span style="display: none;">3GEYEWTN9oz"[r\s*A</span><br /> 18?实现必须允许MIDlet创徏最ؓ10个的U程<span style="display: none;">3GEYE ^8?(\y,u m/Uh'G</span><br /> <br /> <span style="display: none;">(y&H+fl NzZ3</span>19?支持臛_512个属?br /> <span style="display: none;">5gz1l0cD&MR3</span><br /> <span style="display: none;">UU+D-w9G-B3</span>20?支持MIDlet suite包含1?个MIDlet<span style="display: none;">3GEYE;y:F"FX[*z</span><br /> <span style="display: none;">3GEYEw)tq/PiyqfDV</span><br /> 21?每个MIDlet suite的RMS臛_保证64K的空_在内存够的情况?br /> <span style="display: none;">+lum3ku'o:]B v3</span><br /> <span style="display: none;">g2x/[-t B3</span>22?每个MIDlet suite臛_可以创徏10个独立记录存?br /> <span style="display: none;">l:l'W9N ~ x3</span><span style="display: none;">3GEYE[5z/k"e&i5O T6E</span><br /> 23?MIDP的MMAPI的子集必遵守MMAPI1.1或以后版?br /> <span style="display: none;">4Yge4@F#[ j[U3</span><span style="display: none;">3GEYE4^%C/S x,ps}</span><br /> 24?MicroEdition.profilespȝ属性不能包含相同profile的不同的版本<br /> <span style="display: none;">{7b9veC3</span><span style="display: none;">3GEYE ?` _C"K?0r</span><br /> 25?Image对象中ISO/IEC JPEG和JFIF被支?br /> <span style="display: none;">~Z3FT.Lxpo/p3</span><br /> <span style="display: none;">]0Vu$V"O3@3</span>26?支持载入深度?????6?2位的PNG格式<span style="display: none;">3GEYE6P[z9Eg8V,U+u{3F</span><br /> <span style="display: none;">3GEYE)|7B~G nI9mS }HFG</span><br /> 27?TextBox和TextField的约束TextField.EMAILDDR和TextField.URL必须允许相同的字W被输入如同被允许输入在TextField.ANYU束?br /> <span style="display: none;">fp|8N(\X3</span><span style="display: none;">3GEYE2a"h;Gah w</span><br /> 28?适合的设备必d现基于时间的推注册,如果没有其它的安全机制基于时间的推注册不需要被昑ּ的用L许可 </p> </div><img src ="http://www.tkk7.com/gooogle/aggbug/182128.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/gooogle/" target="_blank">3G工作?/a> 2008-02-26 09:15 <a href="http://www.tkk7.com/gooogle/archive/2008/02/26/182128.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于炚w字库在J2ME的实现?http://www.tkk7.com/gooogle/archive/2008/02/16/180179.html3G工作?/dc:creator>3G工作?/author>Sat, 16 Feb 2008 04:51:00 GMThttp://www.tkk7.com/gooogle/archive/2008/02/16/180179.htmlhttp://www.tkk7.com/gooogle/comments/180179.htmlhttp://www.tkk7.com/gooogle/archive/2008/02/16/180179.html#Feedback4http://www.tkk7.com/gooogle/comments/commentRss/180179.htmlhttp://www.tkk7.com/gooogle/services/trackbacks/180179.html

 

http://www.3geye.net/?3/viewspace-2837

关于炚w字库在J2ME的实现?br /> 最q在学习C的过E中无意发现了点阵字库的东西。整理了下,在J2ME实现了下相关的算法?br /> 下面是DOS的一D话
对于使用量的汉字图形程序,完全没有必要带巨大的汉字库来q行Q?br /> 只要内存允许Q你可以把汉字字模直接定义ؓ数组的信息存储在EXE?br /> 仉。通过q个工具Q你可以把单个字模信息直接取出来Q然后在源代
码中_脓。该工具的强大在于不仅可以生?2×12?6×16宋体q些
存在于DOS字库的字模,而且可以生成16×16楷体、黑体甚臌定义?br /> 体的字模Q而且可以提供6U字模大供您选择q即旉览效果!对
用少量汉字的囑Ş~程能够提供极大方便?br />
相对于绘制这些字体的J2ME函数是:
首先Q我们要通过工具来生成点阵字库的GB2312字模Q然后在囑փ中绘制出来,下面我给Z些字体的字模Q?br /> 废话说Q具体看例子吧。有啥不明白Q或者需要探讨的Q到wuhua.3geye.net。上面有我的联系方式?br />
import javax.microedition.midlet.*;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Display;

public class FontMIDlet extends MIDlet {
public FontMIDlet() {
}


protected void destroyApp(boolean _boolean) throws
MIDletStateChangeException {
}


protected void pauseApp() {
}

protected void startApp() throws MIDletStateChangeException {
Display.getDisplay(this).setCurrent(new FontCanvas());
}

char yi12[] = {
/* 以下?'Q? ?12炚w宋体 字模Q?4 byte */
0x00, 0x00, 0x0C, 0x00, 0x1C, 0x00, 0x3C, 0x00,
0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00,
0x0C, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00,
};

char er12[] = {
/* 以下?'Q? ?12炚w宋体 字模Q?4 byte */
0x00, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x03, 0x00,
0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00,
0x63, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00,
};

char dian12[] = {
/* 以下?'? ?12炚w宋体 字模Q?4 byte */
0x04, 0x00, 0x07, 0xC0, 0x04, 0x00, 0x04, 0x00,
0x3F, 0x80, 0x20, 0x80, 0x20, 0x80, 0x3F, 0x80,
0x00, 0x00, 0x49, 0x40, 0xC9, 0x20, 0x00, 0x00,
};

char zhen12[] = {
/* 以下?'? ?12炚w宋体 字模Q?4 byte */
0xF2, 0x00, 0x9F, 0xE0, 0x92, 0x00, 0xA5, 0x00,
0xA5, 0x00, 0x97, 0xE0, 0x91, 0x00, 0xB1, 0x00,
0x8F, 0xE0, 0x81, 0x00, 0x81, 0x00, 0x00, 0x00,
};

char song16[] = {
/* 以下?'? ?16炚w宋体 字模Q?2 byte */
0x02, 0x00, 0x01, 0x00, 0x7F, 0xFE, 0x41, 0x04,
0x81, 0x08, 0x01, 0x00, 0x7F, 0xFC, 0x03, 0x80,
0x05, 0x80, 0x05, 0x40, 0x09, 0x20, 0x11, 0x10,
0x21, 0x0E, 0x41, 0x04, 0x01, 0x00, 0x00, 0x00,
};

char ti16[] = {
/* 以下?'? ?16炚w宋体 字模Q?2 byte */
0x10, 0x40, 0x18, 0x40, 0x10, 0x40, 0x20, 0x40,
0x37, 0xFC, 0x60, 0xC0, 0xA0, 0xE0, 0x21, 0x60,
0x21, 0x50, 0x22, 0x48, 0x24, 0x4E, 0x2B, 0xF4,
0x20, 0x40, 0x20, 0x40, 0x20, 0x40, 0x00, 0x00,
};

char zi24[] = {
/* 以下?'? ?24炚w隶书 字模Q?2 byte */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x18, 0x00, 0x08, 0x1C, 0x10,
0x1F, 0xFF, 0xF0, 0x18, 0x00, 0x30, 0x18, 0xFF,
0x10, 0x09, 0xC3, 0x90, 0x00, 0x3C, 0x00, 0x00,
0x1C, 0x00, 0x3F, 0xFF, 0xFE, 0x7E, 0x0C, 0xFE,
0x00, 0x1C, 0x04, 0x00, 0x1C, 0x00, 0x04, 0x3C,
0x00, 0x03, 0xF8, 0x00, 0x00, 0xE0, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};

char mo24[] = {
/* 以下?'? ?24炚w楷体_GB2312 字模Q?2 byte */
0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x02, 0x00,
0x30, 0x03, 0x0C, 0x20, 0x03, 0x04, 0x3C, 0x02,
0x07, 0xE0, 0x02, 0x1C, 0x40, 0x02, 0x00, 0x40,
0x03, 0xC0, 0x70, 0x7E, 0x1F, 0x98, 0x02, 0x08,
0x10, 0x06, 0x0F, 0x90, 0x07, 0x88, 0x10, 0x0A,
0xCB, 0xE0, 0x1A, 0x05, 0x00, 0x12, 0x01, 0x1E,
0x22, 0x0F, 0xFE, 0x42, 0x32, 0x80, 0x02, 0x02,
0x40, 0x02, 0x04, 0x60, 0x02, 0x0C, 0x30, 0x02,
0x18, 0x1C, 0x02, 0x20, 0x0F, 0x02, 0x00, 0x00,
};

char guan48[] = {
/* 以下?'? ?48炚w黑体 字模Q?88 byte */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x03, 0xC0, 0x38, 0x00,
0x03, 0x00, 0x03, 0xC0, 0x38, 0x00, 0x07, 0x80,
0x03, 0xC0, 0x38, 0x00, 0x07, 0xC0, 0x03, 0xC0,
0x38, 0x00, 0x03, 0xF1, 0xFF, 0xFF, 0xFF, 0xFC,
0x01, 0xF9, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x79,
0xF1, 0xC0, 0x39, 0xFC, 0x00, 0x30, 0x01, 0xC0,
0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0xF0, 0xFF, 0xE0, 0x00, 0x00, 0xFF, 0xF0,
0xFF, 0xE0, 0x00, 0x00, 0xE0, 0x70, 0xE0, 0xE0,
0x0E, 0x00, 0xE0, 0x70, 0xE0, 0xE0, 0x1F, 0x80,
0xE0, 0x70, 0xE0, 0xE0, 0x1F, 0xE0, 0xFF, 0xF0,
0xFF, 0xE0, 0x07, 0xF0, 0xFF, 0xF0, 0xFF, 0xE0,
0x01, 0xF0, 0xFF, 0xF1, 0xFF, 0xE0, 0x00, 0x60,
0x08, 0x07, 0x00, 0x00, 0x00, 0x20, 0x1E, 0x03,
0x80, 0x00, 0x00, 0x00, 0x1E, 0x03, 0x00, 0x00,
0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xF0, 0x00, 0x00,
0x3F, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x3F, 0xFF,
0xFF, 0xF0, 0x00, 0x00, 0x7C, 0x03, 0x80, 0x00,
0x00, 0x20, 0x7C, 0x03, 0x80, 0x00, 0x00, 0x70,
0xFC, 0x03, 0x80, 0x00, 0x00, 0x71, 0xFF, 0xFF,
0xFF, 0xE0, 0x00, 0x73, 0xFF, 0xFF, 0xFF, 0xE0,
0x00, 0xF3, 0xBC, 0x03, 0x80, 0x60, 0x00, 0xE3,
0xBC, 0x03, 0x80, 0x00, 0x01, 0xE1, 0x3C, 0x03,
0x80, 0x00, 0x01, 0xC0, 0x3F, 0xFF, 0xFF, 0xE0,
0x01, 0xC0, 0x3F, 0xFF, 0xFF, 0xE0, 0x03, 0xC0,
0x3F, 0xFF, 0xFF, 0xE0, 0x03, 0x80, 0x3C, 0x03,
0x80, 0x00, 0x07, 0x80, 0x3C, 0x03, 0x80, 0x00,
0x0F, 0x80, 0x3C, 0x03, 0x80, 0x00, 0x0F, 0x00,
0x3F, 0xFF, 0xFF, 0xF8, 0x1F, 0x00, 0x3F, 0xFF,
0xFF, 0xF8, 0x1F, 0x00, 0x3C, 0x00, 0x00, 0x00,
0x06, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};

char guan64[] = {
/* 以下?'? ?64炚wҎ黄草?字模Q?12 byte */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xC0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x03, 0xCF, 0xC0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x1E, 0x07, 0xC0, 0x00,
0x00, 0x00, 0x00, 0x03, 0xF8, 0x07, 0x80, 0x00,
0x00, 0x04, 0x00, 0x03, 0xF8, 0x0F, 0x00, 0x00,
0x00, 0x06, 0x00, 0x03, 0xF0, 0x18, 0x00, 0x00,
0x00, 0x07, 0x00, 0x01, 0xF0, 0x30, 0x00, 0x00,
0x00, 0x07, 0x80, 0x01, 0xF0, 0x00, 0x00, 0x00,
0x00, 0x03, 0xC0, 0x01, 0xF0, 0x00, 0x00, 0x00,
0x00, 0x03, 0xE0, 0x00, 0x00, 0x06, 0x00, 0x00,
0x00, 0x03, 0xF0, 0x00, 0x00, 0x0F, 0xE0, 0x00,
0x00, 0x07, 0xF0, 0x00, 0x00, 0x3F, 0xC0, 0x00,
0x00, 0x07, 0xE0, 0x00, 0x01, 0xFF, 0x00, 0x00,
0x00, 0x0F, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00,
0x00, 0x0C, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x00,
0x00, 0x08, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x00,
0x00, 0x08, 0x00, 0x0F, 0xF0, 0x07, 0xC0, 0x00,
0x00, 0x00, 0x00, 0x3F, 0x40, 0x0F, 0xC0, 0x00,
0x00, 0x00, 0x00, 0x18, 0x80, 0x3F, 0x80, 0x00,
0x00, 0x00, 0x00, 0x01, 0x00, 0x7F, 0x00, 0x00,
0x00, 0x00, 0x00, 0x03, 0x0F, 0xFC, 0x00, 0x00,
0x00, 0x00, 0x00, 0x06, 0x1F, 0xF8, 0x00, 0x00,
0x00, 0x00, 0x00, 0x0E, 0x23, 0xF0, 0x00, 0x00,
0x00, 0x00, 0x00, 0x0E, 0xC3, 0xE0, 0x00, 0x00,
0x00, 0x80, 0x00, 0x1F, 0x87, 0xC0, 0x00, 0x00,
0x00, 0xC0, 0x00, 0x1F, 0x8F, 0x87, 0x80, 0x00,
0x00, 0x70, 0x02, 0x0F, 0x9F, 0x0F, 0x80, 0x00,
0x00, 0x7C, 0x02, 0x0F, 0xBE, 0x1C, 0xE0, 0x00,
0x00, 0x3E, 0x04, 0x07, 0xFC, 0x18, 0xE0, 0x00,
0x00, 0x3E, 0x04, 0x03, 0xF0, 0x1B, 0xC0, 0x00,
0x00, 0x3E, 0x0C, 0x01, 0xE0, 0x1F, 0x80, 0x00,
0x00, 0x1C, 0x08, 0x03, 0xC0, 0x1F, 0x00, 0x00,
0x00, 0x18, 0x18, 0x07, 0x80, 0x7C, 0x00, 0x00,
0x00, 0x18, 0x38, 0x0F, 0x01, 0xFC, 0x00, 0x00,
0x00, 0x18, 0x30, 0x1F, 0x07, 0xDC, 0x00, 0x00,
0x00, 0x30, 0x70, 0x3F, 0x1F, 0x0C, 0x00, 0x00,
0x00, 0x30, 0x70, 0x7B, 0x38, 0x0C, 0x00, 0x00,
0x00, 0x30, 0xE0, 0xF3, 0x60, 0x0C, 0x00, 0x00,
0x00, 0x30, 0xE1, 0xE3, 0x00, 0x0E, 0x00, 0x00,
0x00, 0x71, 0xC3, 0xE3, 0x00, 0x3E, 0x00, 0x00,
0x00, 0x71, 0xC3, 0xC3, 0x00, 0x6E, 0x00, 0x00,
0x00, 0x73, 0x83, 0xC3, 0x00, 0xCE, 0x00, 0x00,
0x00, 0x77, 0x80, 0x07, 0x00, 0x9E, 0x00, 0x00,
0x00, 0x77, 0x80, 0x07, 0x00, 0x9C, 0x00, 0x00,
0x00, 0x7F, 0x00, 0x07, 0x00, 0x9C, 0x00, 0x00,
0x00, 0x7F, 0x00, 0x07, 0x00, 0xBC, 0x00, 0x00,
0x00, 0x7E, 0x00, 0x07, 0x00, 0xFC, 0x00, 0x00,
0x00, 0x7E, 0x00, 0x07, 0x00, 0xFC, 0x00, 0x00,
0x00, 0x7C, 0x00, 0x07, 0x00, 0xFF, 0x00, 0x00,
0x00, 0x7C, 0x00, 0x06, 0x00, 0xDE, 0x00, 0x00,
0x00, 0xFC, 0x00, 0x06, 0x00, 0x5C, 0x00, 0x00,
0x01, 0xF8, 0x00, 0x06, 0x00, 0x78, 0x00, 0x00,
0x00, 0xF8, 0x00, 0x0E, 0x00, 0x78, 0xF8, 0x00,
0x00, 0xF8, 0x00, 0x0E, 0x00, 0xFF, 0xF8, 0x00,
0x00, 0x78, 0x00, 0x0E, 0x01, 0xFF, 0xB0, 0x00,
0x00, 0x70, 0x00, 0x06, 0x01, 0xF0, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};

char matarray16k[] = {
/* 以下?'? ?16炚w楷体_GB2312 字模Q?2 byte */
0x00, 0x00, 0x00, 0x00, 0x08, 0x60, 0x08, 0x00,
0x00, 0x0C, 0x03, 0xF0, 0x18, 0x50, 0x30, 0x90,
0x11, 0x70, 0x11, 0xA8, 0x14, 0x58, 0x18, 0xB0,
0x13, 0x70, 0x04, 0x8C, 0x03, 0x04, 0x00, 0x00,
/* 以下?'E? ?16炚w楷体_GB2312 字模Q?2 byte */
0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0C, 0xFC,
0x3C, 0x88, 0x08, 0x88, 0x0E, 0x70, 0xF8, 0x18,
0x18, 0xE0, 0x1E, 0x20, 0x28, 0xF0, 0xC8, 0x20,
0x08, 0x3E, 0x09, 0xC0, 0x08, 0x00, 0x00, 0x00,
/* 以下?'? ?16炚w楷体_GB2312 字模Q?2 byte */
0x00, 0x00, 0x00, 0x80, 0x00, 0x90, 0x0B, 0xE0,
0x0C, 0x00, 0x0B, 0xF0, 0x08, 0x40, 0x10, 0x80,
0x11, 0xFC, 0x1E, 0x88, 0x20, 0x80, 0x20, 0x80,
0x40, 0x80, 0x80, 0x80, 0x01, 0x80, 0x00, 0x80,
/* 以下?'? ?16炚w楷体_GB2312 字模Q?2 byte */
0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x0F, 0x40,
0x00, 0xC0, 0x10, 0x80, 0x10, 0x80, 0x1F, 0x00,
0x10, 0x00, 0x10, 0x00, 0x10, 0x04, 0x10, 0x04,
0x08, 0x06, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00,
/* 以下?'? ?16炚w楷体_GB2312 字模Q?2 byte */
0x00, 0x00, 0x02, 0x80, 0x04, 0x10, 0x07, 0xE0,
0x0C, 0xE0, 0x17, 0x80, 0x05, 0xC0, 0x06, 0xB0,
0x0B, 0x40, 0x08, 0x9C, 0x1F, 0xE0, 0x23, 0x40,
0x05, 0x30, 0x09, 0x1C, 0x31, 0x00, 0x00, 0x00,
/* 以下?'? ?16炚w楷体_GB2312 字模Q?2 byte */
0x00, 0x00, 0x03, 0x00, 0x01, 0x30, 0x01, 0x10,
0x01, 0x00, 0x01, 0xC0, 0x1E, 0x80, 0x10, 0x90,
0x12, 0x90, 0x1E, 0x60, 0x12, 0x60, 0x22, 0x60,
0x26, 0x92, 0x45, 0x0A, 0x00, 0x06, 0x00, 0x00,
/* 以下?'? ?16炚w楷体_GB2312 字模Q?2 byte */
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00,
0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x11, 0x18,
0x11, 0x0C, 0x21, 0x04, 0x21, 0x00, 0x01, 0x00,
0x07, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 以下?'? ?16炚w楷体_GB2312 字模Q?2 byte */
0x00, 0x00, 0x00, 0x08, 0x03, 0x08, 0x1E, 0x28,
0x0A, 0x48, 0x0F, 0xC8, 0x7A, 0x48, 0x0A, 0x08,
0x12, 0x18, 0x21, 0x08, 0x01, 0x40, 0x07, 0x80,
0x01, 0x00, 0x01, 0xF8, 0x3E, 0x00, 0x00, 0x00,
/* 以下?'? ?16炚w楷体_GB2312 字模Q?2 byte */
0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x11, 0xF0,
0x02, 0x20, 0x04, 0x20, 0x62, 0x40, 0x29, 0x40,
0x10, 0x80, 0x11, 0x40, 0x22, 0x60, 0x64, 0x38,
0x78, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 以下?'? ?16炚w楷体_GB2312 字模Q?2 byte */
0x00, 0x00, 0x01, 0x00, 0x01, 0x10, 0x11, 0xF8,
0x1E, 0x10, 0x20, 0xC0, 0x07, 0xC0, 0x00, 0x80,
0x01, 0x38, 0x1F, 0xC0, 0x20, 0x80, 0x00, 0x80,
0x00, 0x80, 0x00, 0x80, 0x01, 0x80, 0x00, 0x00,
/* 以下?'? ?16炚w楷体_GB2312 字模Q?2 byte */
0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x01, 0xF0,
0x0E, 0x80, 0x08, 0xF0, 0x0B, 0x00, 0x09, 0x40,
0x0A, 0x78, 0x13, 0xC0, 0x10, 0x7E, 0x2F, 0xC0,
0x20, 0x40, 0x40, 0x40, 0x00, 0x40, 0x00, 0x40,
/* 以下?'Q? ?16炚w楷体_GB2312 字模Q?2 byte */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00,
0x10, 0x00, 0x10, 0x00, 0x20, 0x00, 0x00, 0x00,
/* 以下?'? ?16炚w楷体_GB2312 字模Q?2 byte */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE,
0x7F, 0x40, 0x00, 0x20, 0x07, 0x20, 0x19, 0x20,
0x12, 0x20, 0x0E, 0x40, 0x00, 0x40, 0x00, 0x40,
0x00, 0x40, 0x00, 0xC0, 0x00, 0x40, 0x00, 0x00,
/* 以下?'? ?16炚w楷体_GB2312 字模Q?2 byte */
0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x3D, 0x90,
0x24, 0x80, 0x24, 0x70, 0x25, 0x90, 0x25, 0x20,
0x35, 0xE0, 0x24, 0xA0, 0x24, 0xC0, 0x45, 0x42,
0x4E, 0x22, 0x88, 0x3E, 0x00, 0x00, 0x00, 0x00,
/* 以下?'? ?16炚w楷体_GB2312 字模Q?2 byte */
0x00, 0x00, 0x03, 0x00, 0x01, 0x30, 0x1F, 0xC0,
0x00, 0xA0, 0x0F, 0xA0, 0x0A, 0xA0, 0x0F, 0xE0,
0x09, 0x00, 0x03, 0xF8, 0x1E, 0x88, 0x17, 0xC8,
0x14, 0x88, 0x10, 0x70, 0x10, 0x10, 0x00, 0x00,
/* 以下?'? ?16炚w楷体_GB2312 字模Q?2 byte */
0x00, 0x00, 0x02, 0x00, 0x01, 0x80, 0x00, 0x00,
0x00, 0x70, 0x07, 0x80, 0x18, 0x80, 0x01, 0x80,
0x05, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0xC0,
0x38, 0x70, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00,
/* 以下?'? ?16炚w楷体_GB2312 字模Q?2 byte */
0x00, 0x00, 0x08, 0x40, 0x0C, 0x40, 0x08, 0x40,
0x11, 0x40, 0x11, 0xF0, 0x32, 0x40, 0x50, 0x44,
0x91, 0xF8, 0x12, 0x40, 0x10, 0x40, 0x10, 0x40,
0x10, 0x40, 0x10, 0x40, 0x00, 0x00, 0x00, 0x00,
/* 以下?'? ?16炚w楷体_GB2312 字模Q?2 byte */
0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0C, 0x20,
0x08, 0x40, 0x10, 0x48, 0x1E, 0xFC, 0x23, 0x0C,
0x24, 0x8C, 0x3C, 0x48, 0x24, 0x08, 0x24, 0x08,
0x3C, 0x08, 0x00, 0x38, 0x00, 0x18, 0x00, 0x00,
/* 以下?'? ?16炚w楷体_GB2312 字模Q?2 byte */
0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
0x01, 0xE0, 0x0F, 0x00, 0x01, 0x00, 0x01, 0xC0,
0x0E, 0x40, 0x08, 0x80, 0x06, 0x80, 0x01, 0x00,
0x02, 0xC0, 0x0C, 0x78, 0x30, 0x1C, 0x00, 0x00,
/* 以下?'? ?16炚w楷体_GB2312 字模Q?2 byte */
0x00, 0x00, 0x08, 0x20, 0x08, 0x20, 0x08, 0x20,
0x08, 0x70, 0x3C, 0x20, 0x08, 0x3E, 0x0F, 0xD0,
0x08, 0x1C, 0x3B, 0xF0, 0xC9, 0x10, 0x08, 0x90,
0x08, 0x10, 0x18, 0x10, 0x00, 0x30, 0x00, 0x00,
/* 以下?'q? ?16炚w楷体_GB2312 字模Q?2 byte */
0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x11, 0x80,
0x00, 0x00, 0x00, 0x78, 0x27, 0x80, 0x71, 0x80,
0x21, 0x20, 0x22, 0xF0, 0x23, 0x10, 0x20, 0x00,
0x5F, 0x80, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00,
/* 以下?'? ?16炚w楷体_GB2312 字模Q?2 byte */
0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0C, 0x38,
0x10, 0x40, 0x24, 0x00, 0x04, 0x1F, 0x0B, 0xF0,
0x18, 0x10, 0x28, 0x10, 0xC8, 0x10, 0x08, 0x10,
0x08, 0x10, 0x08, 0x70, 0x00, 0x20, 0x00, 0x00,
};


void drawFont(Graphics g) {
int i, j;

drawmat(yi12, g,12, 50, 20, 0xFFFFFF);
drawmat(er12, g,12, 50, 50, 0xFFFFFF);
drawmat(dian12, g,12, 50, 80, 0xFFFFFF);
drawmat(zhen12, g,12, 50, 110, 0xFFFFFF);
drawmat(song16, g,16, 50, 130, 0xFF0000);
drawmat(ti16, g,16, 50, 150, 0xFF0000);
drawmat(zi24, g,24, 50, 180, 0x0000FF);
drawmat(mo24, g,24, 50, 200, 0x00FF00);
drawmat(guan48, g,48, 50, 250, 0x0000FF);
drawmat(guan64, g,64, 50, 300, 0xFF0000);

// for (i = 0; i < 15; i++) {
// drawmat(matarray16k + i*32, g,16, 200 + i * 15, 200, 0xFFFFFF);
// }
// drawmat(matarray16k + 8*32, g,16, 200 + i * 15, 200, 0xFFFFFF);
// drawmat(matarray16k + 9*32,g, 16, 200 + (++i) * 15, 200, 0xFFFFFF);
// drawmat(matarray16k + 10 * 32, g,16, 200 + (++i) * 15, 200, 0xFFFFFF);
// for (i = 18; i < 25; i++) {
// drawmat(matarray16k + (i - 3) * 32, 16, 200 + i * 15, 200, 0xFFFFFF);
// }
}


void drawmat(char[] mat, Graphics g,int matsize, int x, int y, int color)
/*依次Q字模指针、点阵大、v始坐?x,y)、颜?/
{
int i, j, k, n;
n = (matsize - 1) / 8 + 1;
for (j = 0; j < matsize; j++) {
for (i = 0; i < n; i++) {
for (k = 0; k < 8; k++) {
if (!((mat[j * n + i] & (0x80 >> k)) == 0)) /*试?的位则显C?/
{
g.setColor(color);
g.drawLine(x + i * 8 + k, y + j, x + i * 8 + k, y + j);
// putpixel(x + i * 8 + k, y + j, color);
}
//else
// g.setColor(0xFFFFFF);
}
}
}
}


class FontCanvas extends Canvas {
protected void paint(Graphics g) {
g.setColor(0x0);
g.fillRect(0, 0, this.getWidth(), this.getHeight());
drawFont(g);
}
}

}



]]>
关于UIlgQ上下滚动,qx滚动的技术实现探?/title><link>http://www.tkk7.com/gooogle/archive/2007/10/16/153148.html</link><dc:creator>3G工作?/dc:creator><author>3G工作?/author><pubDate>Tue, 16 Oct 2007 00:53:00 GMT</pubDate><guid>http://www.tkk7.com/gooogle/archive/2007/10/16/153148.html</guid><wfw:comment>http://www.tkk7.com/gooogle/comments/153148.html</wfw:comment><comments>http://www.tkk7.com/gooogle/archive/2007/10/16/153148.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.tkk7.com/gooogle/comments/commentRss/153148.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/gooogle/services/trackbacks/153148.html</trackback:ping><description><![CDATA[<div style="margin-left: 15px; margin-top: 5px;"> <strong>关键?</strong> J2ME        </div> <p>文章出处</p> <p>http://www.3geye.net/bbs/thread-268-1-1.html<br /> </p> <p><br /> </p> <p>关于<span class="t_tag">UIlg</span>Q上下滚动,qx滚动?span class="t_tag">技?/span>实现探讨</p> <p>关于UIlgQ上下滚动,qx滚动的技术实现探?/p> <p>在我<span class="t_tag">设计</span>的UI中存在的两个问题一直没有解军_</p> <p>1.是焦点处理机?- q个问题已经在前几天我解决了?/p> <p>2.是上下滚动Q^滑滚动,触摸屏滚动,实现的不是很到。虽然是解决了一部分问题Q但是另外一部分问题又冒出来了?/p> <p>下面我重点老讨个问题。希望大家有什么好的想法也说下。分享下<span class="t_tag">l验</span>Q让我少走弯?/p> <p>现在来看看下面的?/p> <p>假设Q图A ?整个<span class="t_tag">Canvas</span>可以昄的图Q?图B?需要显C的图,</p> <p>我们来看看这适合坐滚动设计吗。看看下面的逻辑。现在假设HA为A的高度, HB为B的高度,ScrollH表示滚动条的高度。进度条的位|ؓScrollYQ?span class="t_tag">pȝ</span>滚动的增量ؓregionY</p> <p>1Q?nbsp; 如果A的高?gt; B的高度,则不需要滚?/p> <p>2Q?nbsp; 如果A的高?/p> <p><strong> </strong></p> <p><strong>下面?span class="t_tag">法</span>比例ScrollH/HA = HA/HB è ScrollH=HA*HA/HBQ?/strong></p> <p><strong>得到当前q度条的位置?ScrollY/HA = regionY/HB è ScrollY=regionY*HA/HB</strong></p> <p><strong> </strong></p> <p><strong>当调用keyPressed事g的时候处理regionY; è downQrgionY -= 30; upQregion += 30Q?/strong></p> <p><strong>然后自动更新ScrollY Q最后调用repaint();</strong></p> <p><strong> </strong></p> <p><strong>上面是算?span class="t_tag">模型</span>Q现在来看下我的具体实现Q希望大家对q个模型多多批评Q看看还有没有更好的法实现?/strong></p> <p><strong>在调式的q程中遇C个很特别的问题,居然<span class="t_tag">public</span> void keyPressed(int keyCode)没有M响应。哈哈,是我DQ原来是采用了print的方法,所以没仔细看,看不到输出。郁闷啊</strong></p> <p><strong> </strong></p> <p><strong>l过试Q此路完全是走的通的Q现在看看代码是怎么实现的,我知识对字符串进行简单的处理实现Q对于更复杂的UIlgQ原理差不错。不q要做下修?/strong></p> <p><strong> <br /> <span class="t_tag">import</span> <span class="t_tag">javax</span>.microedition.lcdui.*;</strong></p> <p><strong>/**<br />  * </strong></p> <p><strong>Title: </strong></p> <strong><br />  *<br />  * </strong> <p><strong>Description: </strong></p> <strong><br />  *<br />  * </strong> <p><strong>Copyright: Copyright (c) 2007</strong></p> <strong><br />  *<br />  * </strong> <p><strong>Company: </strong></p> <strong><br />  *<br />  * @author not attributable<br />  * @version 1.0<br />  */<br /> public class TestCanvas extends Canvas  { </strong> <p><strong>    private <span class="t_tag">String</span> text="兛_于UIlgQ上下滚动,qx滚动的视U技术探讨在我设计的UI中存在的两个问题一直没有解军_1.是焦点处理机?- q个问题已经在前几天我解决了?.是上下滚动Q^滑滚动,触摸屏滚动,实现的不是很到。虽然是解决了一?"+<br />                         "分问题,但是另外一部分问题又冒出来了。下面我重点老讨个问题。希望大家有什么好的想法也说下。分享下l验Q让我少走弯路关于UIlgQ上下滚动, qx滚动的视U技术探讨在我设计的UI中存在的两个问题一直没有解军_1.是焦点处理机?- q个问题已经在前几天我解决了?.是上下滚动Q^滑滚动,触摸屏滚动,实现的不是很到。虽然是解决了一部分问题Q但是另外一部分问题又冒出来了。下? 我重点老讨个问题。希望大家有什么好的想法也说下。分享下l验Q让我少走弯路于UIlgQ上下滚动,qx滚动的视U技术探讨在我设计的UI中存在的? 个问题一直没有解军_1.是焦点处理机?- q个问题已经在前几天我解决了?.是上下滚动Q^滑滚动,触摸屏滚动,实现的不是很到。虽然是解决了一部分问题Q但是另外一部分问题又冒出来了。下? 我重点老讨个问题。希望大家有什么好的想法也说下。分享下l验Q让我少走弯路sdf" +<br />                         "是焦点处理机?- q个问题已经在前几天我解决了?.是上下滚动Q^滑滚动,触摸屏滚动,实现的不是很到。虽然是解决了一部分问题Q但是另外一部分问题又冒出来了。下? 焦点处理机制-- q个问题已经在前几天我解决了?.是上下滚动Q^滑滚动,触摸屏滚动,实现的不是很到。虽然是解决了一部分问题Q但是另外一部分问题又冒出来了。下? 焦点处理机制-- q个问题已经在前几天我解决了?.是上下滚动Q^滑滚动,触摸屏滚动,实现的不是很到。虽然是解决了一部分问题Q但是另外一部分问题又冒出来了。下? 焦点处理机制-- q个问题已经在前几天我解决了?.是上下滚动Q^滑滚动,触摸屏滚动,实现的不是很到。虽然是解决了一部分问题Q但是另外一部分问题又冒出来了。下? 焦点处理机制-- q个问题已经在前几天我解决了?.是上下滚动Q^滑滚动,触摸屏滚动,实现的不是很到。虽然是解决了一部分问题Q但是另外一部分问题又冒出来了。下? 焦点处理机制-- q个问题已经在前几天我解决了?.是上下滚动Q^滑滚动,触摸屏滚动,实现的不是很到。虽然是解决了一部分问题Q但是另外一部分问题又冒出来了。下? 焦点处理机制-- q个问题已经在前几天我解决了?.是上下滚动Q^滑滚动,触摸屏滚动,实现的不是很到。虽然是解决了一部分问题Q但是另外一部分问题又冒出来了。下? 焦点处理机制-- q个问题已经在前几天我解决了?.是上下滚动Q^滑滚动,触摸屏滚动,实现的不是很到。虽然是解决了一部分问题Q但是另外一部分问题又冒出来了。下 ";<br />     private int sreenWidth;<br />     private int sreenHeight;<br />     private int scrollHeight;<br />     private int scrollY;<br />     private int regionY;</strong></p> <p><strong>    private int numHeight;</strong></p> <p><strong>    public TestCanvas() {<br />         try {</strong></p> <p><strong>            this.setFullScreenMode(true);<br />             this.sreenHeight = this.getHeight();<br />             this.sreenWidth = this.getWidth();<br />        }<br />         catch(Exception e) {<br />             e.printStackTrace();<br />         }<br />     }</strong></p> <p><strong> </strong></p> <p><strong> </strong></p> <p><strong>    protected void paint(Graphics g) {<br />         g.setColor(0xFFFFFF);<br />         g.fillRect(0,0,this.sreenWidth, this.sreenHeight);<br />         char[] chars = text.toCharArray();<br />         int h = 0;<br />         int w = 0;<br />         Font font  = g.getFont();<br />         g.setColor(0x00000);<br />         for(int i=0; i<text><br />             if(w > this.sreenWidth - 18){<br />                 h += font.getHeight();<br />                 w = 0;<br />             }<br />             g.drawChar(chars,w, h + this.regionY, Graphics.TOP | Graphics.LEFT);<br />             w += font.charWidth(chars);<br />         }<br />         if(this.numHeight == 0)<br />             this.numHeight = h+font.getHeight();</text></strong></p> <p><strong>        this.scrollHeight = this.sreenHeight * this.sreenHeight/numHeight;<br />         this.scrollY = (-this.regionY)*this.sreenHeight/numHeight;</strong></p> <p><strong>        g.setColor(255);<br />         g.fillRect(this.sreenWidth-6,0, 6, this.sreenHeight);</strong></p> <p><strong>        g.setColor(0xFFFFFF);<br />          g.fillRect(this.sreenWidth-5,this.scrollY, 4, this.scrollHeight);<br />     }</strong></p> <p><strong>     public void keyPressed(int keyCode) {<br />          System.out.println(keyCode);<br />          if(keyCode == -2){<br />              if(this.sreenHeight - this.regionY  > this.numHeight)<br />                  return;<br />              this.regionY -= 30;<br />          }<br />          else if (keyCode == -1){<br />              if(this.regionY>=0)<br />                  return;<br />              this.regionY += 30;<br />          }<br />          this.repaint();<br />      }</strong></p> <strong>} </strong><img src ="http://www.tkk7.com/gooogle/aggbug/153148.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/gooogle/" target="_blank">3G工作?/a> 2007-10-16 08:53 <a href="http://www.tkk7.com/gooogle/archive/2007/10/16/153148.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> 3G视线J2ME 工具?.0.1版本发布?/title><link>http://www.tkk7.com/gooogle/archive/2007/10/07/150814.html</link><dc:creator>3G工作?/dc:creator><author>3G工作?/author><pubDate>Sun, 07 Oct 2007 04:03:00 GMT</pubDate><guid>http://www.tkk7.com/gooogle/archive/2007/10/07/150814.html</guid><wfw:comment>http://www.tkk7.com/gooogle/comments/150814.html</wfw:comment><comments>http://www.tkk7.com/gooogle/archive/2007/10/07/150814.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.tkk7.com/gooogle/comments/commentRss/150814.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/gooogle/services/trackbacks/150814.html</trackback:ping><description><![CDATA[<div style="margin-left: 15px; margin-top: 5px;"> <strong>关键?</strong> J2ME        </div> 自己利用国庆的时_把以前自己做q,实践q的一些想法,整合成了一堆代码跟<span class="t_tag">例子</span>Q我暂且把它们叫?<span 1,="" 2);="">3G视线J2ME 工具?.0.1版本?br /> <br 1,="" 2);="" /> <span 1,="" 2);="">里面的内容包括:<br /> <br /> </span></span> <h3><font size="4">关于我们</font></h3> <ul> <li>3GEye 是由一?span class="t_tag">软g</span>自由职业团队l成Q他们分散不同的地方Q但是却有一个相同的目的--致力于中?span class="t_tag">手机</span>软g<span class="t_tag">开?/span>的普及,3G快要到来了Q我们不惛_落后别h了?span class="t_tag">手机软g</span>开发对于我们这些h来说是个ZQ对爱好手机软g?span class="t_tag">朋友</span>也是个机会,我们得抓住这个机会,来吧Q一起学习手Y件开发吧。不是<span class="t_tag">JAVA</span> MEQ?SYMBAINQWINCEQLINUXq些都不是门槛,能阻挡我们的只有我们自己. </li> <li>wuhua -- 从事J2EE2q_对于JAVA ME来说是个新手Q? </li> <li>Sun -- 从事手机开发多q_在流媒体斚w有比较深ȝ<span class="t_tag">研究</span> </li> <li>Fang_W -- 从事多年企业开发,ҎY件开发情有独? </li> <li> <br /> </li> <li> <br /> </li> <li><br /> </li> </ul> <h3><font size="4">软g版本 0.0.1</font></h3> <h3><font size="4">此Y?span class="t_tag">源代?/span>Q以及相?span class="t_tag">文档</span>版权?G视线所有,转蝲Q以及用作其他用途,h明来?G视线?部分版权归其?span class="t_tag">作?/span>所?/font>?/h3> <br /> <h5><font size="4">版权声明Q此<span class="t_tag">E序</span>包版?G视线所有,部分代码是从<span class="t_tag">|络</span>上收集回来,版权归他们所有,公布出来只是用于学习Q交之用,如需要进行商业开发,必须l过作者的同意Q否则追I法律责仅R?/font></h5> <ul> <h3><span class="t_tag">功能</span>描述:</h3> <li>此包包含了JAVA ME q行手机开发常用工L。里面提供了大量Q实用工P </li> <li>ImageUtil ==> 提供对图像操作工? </li> <li>TextUtil ==> 提供对字W串操作工具 </li> <li>MD5Util ==> 提供对MD5法在JAVA ME的实现类Qƈ提供一个静态方法创建toMD5 得到一个MD5的字W串 </li> <li>MemoryManager ==> <span class="t_tag">内存</span>理Q写的很差,可以考虑采用<span class="t_tag">U程</span>的方式进行内存管?以及采用U程的方式自动执行垃圑֛收了 </li> <li>TimerTaskManager ==> 构徏一个可以执行的TimerTaskQ用程序调用变的简? </li> <li>WMAUtil ==> 提供WMA的常用功? </li> <li>Common ==> 提供目常用Ҏ </li> <li>GraphicsUtil ==> 囑Ş常用功能? </li> <li>DateTime ==> 单的日期Q时间格式化 </li> <li> <br /> </li> <li> <br /> </li> <li><br /> </li> </ul> 如果上面的程序有bugQ我们期待您的加?<a >加入3G视线论坛</a> 一起体验手Y件开发的快乐 <br /> <br /> <br /> <br /> <h5><font size="4">版权声明Q此E序包版?G视线所有,部分代码是从|络上收集回来,版权归他们所有,公布出来只是用于学习Q交之用,如需要进行商业开发,必须l过作者的同意Q否则追I法律责仅R?/font></h5> <ul> <h3><font size="4">功能描述:</font></h3> <li>此包提供对工L?span class="t_tag">api</span>q行试 </li> <li>util包下面的API试可以q行q个包下面的<span class="t_tag">MIDlet</span>E序Q每个MIDletE序对应一个utilQ如果不需要用到MIDletQ则表示不采用extends的方式承MIDletQ用户可以到test目录览源代码。里面有比较详细的代码注? </li> <li>ImageMDIlet ==> 对ImageUtilq行试Q提供图片放大,~小Q透明{功? </li> <li>TextMIDlet ==> 对TextUtilq行试Q提供文本的分割Q显C等功能 </li> <li>MD5Test ==> 提供对MD5q行试Q输入可以看到MD5码的转换 </li> <li>TimerTaskDemo ==> TimerTask的简单例? </li> <li>DrawFontMIDlet ==> 波浪<span class="t_tag">字体</span>的例? </li> <li>ToumingMIDlet ==> 透明的例? </li> <li>GraphicsMIDlet ==> 囑Ş的例? </li> <li>MemoryManagerDemo ==> 内存理的例子,写的不是很好 </li> <li>ArrayListDemo ==> ArrayList的例? </li> <li>CommonDemo ==> Common的例? </li> <li>DateTime ==> DateTime的例? </li> <li>SMSSenderMIDlet ==> 短信发送机 </li> <li>SMSLotteryMIDlet ==> 一个小型彩的实例 </li> <li>HTTPImageClientMIDlet ==> 一个经典的|络下蝲囄的例? </li> <li>StartDemo ==> 使用GameCanvas制作星空<span class="t_tag">效果</span>, 此代码ƈ非原创,只是整理? </li> <li> <br /> </li> <li> <br /> </li> <li><br /> </li> </ul> <font color="blue" size="3">如果上面的程序有bugQ我们期待您的加?/font> <a >加入3G视线论坛</a> 一起体验手Y件开发的快乐 <br /> <br /> 源代码下载到q里<br /> <a >http://www.3geye.net/bbs/thread-223-1-1.html</a><img src ="http://www.tkk7.com/gooogle/aggbug/150814.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/gooogle/" target="_blank">3G工作?/a> 2007-10-07 12:03 <a href="http://www.tkk7.com/gooogle/archive/2007/10/07/150814.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>自己写的内存理工具c,支持单的垃圾回收http://www.tkk7.com/gooogle/archive/2007/10/05/150560.html3G工作?/dc:creator>3G工作?/author>Fri, 05 Oct 2007 07:34:00 GMThttp://www.tkk7.com/gooogle/archive/2007/10/05/150560.htmlhttp://www.tkk7.com/gooogle/comments/150560.htmlhttp://www.tkk7.com/gooogle/archive/2007/10/05/150560.html#Feedback4http://www.tkk7.com/gooogle/comments/commentRss/150560.htmlhttp://www.tkk7.com/gooogle/services/trackbacks/150560.html

自己写的内存理工具c,支持单的垃圾回收

开发J2AVA ME E序最需要关注的是内存的占用Q开发性能高,适配多种机型的Y件不是gҎ的事情,我在国庆旉整理下我的开发思\写了q个c,l大家参考下


package com.gggeye.util;

import java.util.Hashtable;
import java.util.Stack;
import java.util.TimerTask;
import java.util.Vector;

import com.gggeye.demo.Logger;

 

 
 /**
  *  内存理Q工LQ主要是用于目的内存控Ӟ
  *  此类相对重要点,因ؓ涉及到各个方面的内存回收
  *  此类除了提供一些常用的Ҏq行回收外,q还提供一个自动回收的机制Q不q不采用Q自动回收机制是是当
  *  I闲内存于指定内存大小时候,释放内存Q回收的旉?U回收一?lt;br/>
  * 创徏日期 2007-10-1
  * @author wuhua
  * <p><b>MSN </b> gggeye@hotmail.com
  * <p><b>EMAIL</b> gooogledev@gmail.com </p>
  * <p>|站支持 <a >http://www.3geye.net</a></p>
  * <p>|站论坛 <a >http://www.3geye.net/bbs</a></p>
  * <p>wuhua的博?<a >http://wuhua.3geye.net</a></p>
  */
public   class MemoryManager implements Runnable {
   
    /**
     * 释放内存Q当内存于addtionMemory时候,q行垃圾回收Q主动回?br />      * @param addtionMemory
     */
    public final static void release(long addtionMemory) {
        long freeMemory = Runtime.getRuntime().freeMemory();
        //如果I闲的内存小于指定的内存Q则回收
        if(freeMemory<=addtionMemory){
            Logger.println("回收前的内存==>" +MemoryManager.freeMemoryKByte());
            System.gc();
            Logger.println("回收后的内存==>" +MemoryManager.freeMemoryKByte());
        }
    }
   
    /**
     * 释放指定~存对象
     * @param addtionMemory
     * @param cache
     */
    public final static void release(long addtionMemory, Object cache){
        release(addtionMemory);
        if(cache != null){
            if(cache instanceof java.util.Hashtable){
                Hashtable i = (Hashtable)cache;
                i.clear();         
            }else if(cache instanceof java.util.Vector){
                Vector i = (Vector)cache;
                i.removeAllElements();
            }else if(cache instanceof java.util.Stack){
                Stack i = (Stack)cache;
                i.removeAllElements();
            }        
            cache = null;
            System.gc();
        }   
    }
   
    /**
     * 得到pȝI闲内存Q单位是k
     * @return q回I闲内存的大?br />      */
    public final static String freeMemoryKByte(){
        return freeMemoryByte()/1024 + "k";
    }
   
   
    public final static long  freeMemoryByte(){
        return Runtime.getRuntime().freeMemory();
    }
   
   
 

    private static MemoryManager instance ;
    private static TimerTask task;
    /**
     * 自动回收内存机制,此方法,应该在系l第一ơ调用的时候调用,如果重复调用则会抛出异常
     * @param time
     */
    public static void autoGC(long time) throws java.lang.RuntimeException{
        if(instance == null){
            instance  = new MemoryManager();
            task = TimerTaskManager.getInstace().create(instance, time);
        }else
            throw new RuntimeException("GC is starting...");
    }
   
    public static void colse(){
        if(instance != null) instance = null;
        if(task != null){
            task.cancel();
            task = null;
        }
       
    }

    /**
     * 实现对内存的自动化管?br />      */
    public void run() {
        //于12k内存的时候释攑ֆ?br />         release(1200000);
         
    }

}


]]>
使用GameCanvas制作星空效果http://www.tkk7.com/gooogle/archive/2007/09/23/147621.html3G工作?/dc:creator>3G工作?/author>Sun, 23 Sep 2007 13:30:00 GMThttp://www.tkk7.com/gooogle/archive/2007/09/23/147621.htmlhttp://www.tkk7.com/gooogle/comments/147621.htmlhttp://www.tkk7.com/gooogle/archive/2007/09/23/147621.html#Feedback0http://www.tkk7.com/gooogle/comments/commentRss/147621.htmlhttp://www.tkk7.com/gooogle/services/trackbacks/147621.html
MIDP2.0中提供了游戏开发专用的API,比如GameCanvas{类。他们位于javax.microedition.lcdui.game包内。本文介lGameCanvas的基本用方法ƈ实现一U滚动星I的效果。您可以参考Game Canvas Basic获得更详l的信息?

    GameCanvas是Canvas的子c,因此他同L承了Canvascȝ一些特性,比如showNotify()Ҏ会在Canvas被显C在屏幕的时候调用,而hideNotify()会在Canvasd屏幕的时候被调用。我们可以把他们当作{8}来用,用于初始化和销毁资源。比?br />     // When the canvas is shown, start a thread to
    // run the game loop.

    protected void showNotify()
    {
        random = new Random();
        thread = new Thread(this);
        thread.start();
    }
    // When the game canvas is hidden, stop the thread.

    protected void hideNotify()
    {
        thread = null;
    }

在游戏开发中最重要的就是接受用戯发的事g然后重新l制屏幕Q通常我们使用getKeyStates()Ҏ判断哪个键被按下了,然后l制屏幕Q调用flushGraphics()。在GameCanvas中,pȝ事实上已lؓ我们实现了双~冲技术,因此每次我们l制的时候就是在off- screen上绘制的。结束后通过flushGraphics把它复制到屏q上厅R下面是典型的接受事件、处理逻辑、绘制屏q的代码?br />  // Get the Graphics object for the off-screen buffer
Graphics g = getGraphics();

while (true) {
      // Check user input and update positions if necessary
      int keyState = getKeyStates();
      if ((keyState & LEFT_PRESSED) != 0) {
          sprite.move(-1, 0);
      }
      else if ((keyState & RIGHT_PRESSED) != 0) {
          sprite.move(1, 0);
      }

// Clear the background to white
g.setColor(0xFFFFFF);
g.fillRect(0,0,getWidth(), getHeight());

      // Draw the Sprite
      sprite.paint(g);

      // Flush the off-screen buffer
      flushGraphics();
}

    下面开始实现我们滚动星I的效果Q其实设计的思想非常单。我们启动一个线E,使用copyArea()Ҏ把屏q的内容往下复制一个像素的距离。然后绘ȝ一个空白的直线Q随机的在直U上l画点儿Q这Lh像星空一样了。逻辑代码如下Q?br />     // The game loop.

    public void run()
    {
        int w = getWidth();
        int h = getHeight() - 1;
        while (thread == Thread.currentThread())
        {
            // Increment or decrement the scrolling interval
            // based on key presses
            int state = getKeyStates();

            if ((state & DOWN_PRESSED) != 0)
            {
                sleepTime += SLEEP_INCREMENT;
                if (sleepTime > SLEEP_MAX)
                    sleepTime = SLEEP_MAX;
            } else if ((state & UP_PRESSED) != 0)
            {
                sleepTime -= SLEEP_INCREMENT;
                if (sleepTime < 0)
                    sleepTime = 0;
            }

            // Repaint the screen by first scrolling the
            // existing starfield down one and painting in
            // new stars...

            graphics.copyArea(0, 0, w, h, 0, 1, Graphics.TOP | Graphics.LEFT);
            graphics.setColor(0, 0, 0);
            graphics.drawLine(0, 0, w, 0);
            graphics.setColor(255, 255, 255);
            for (int i = 0; i < w; ++i)
            {
                int test = Math.abs(random.nextInt()) % 100;
                if (test < 5)
                {
                    graphics.drawLine(i, 0, i, 0);
                }
            }
            flushGraphics();

            // Now wait...

            try
            {
                Thread.currentThread().sleep(sleepTime);
            } catch (InterruptedException e)
            {
            }
        }
    }

下面l出源代?br /> /*
 * License
 *
 * Copyright 1994-2004 Sun Microsystems, Inc. All Rights Reserved.
 *
 */

import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
import javax.microedition.midlet.*;

public class GameCanvasTest extends MIDlet implements CommandListener
{

    private Display display;

    public static final Command exitCommand = new Command("Exit", Command.EXIT,
            1);

    public GameCanvasTest()
    {
    }

    public void commandAction(Command c, Displayable d)
    {
        if (c == exitCommand)
        {
            exitMIDlet();
        }
    }

    protected void destroyApp(boolean unconditional)
            throws MIDletStateChangeException
    {
        exitMIDlet();
    }

    public void exitMIDlet()
    {
        notifyDestroyed();
    }

    public Display getDisplay()
    {
        return display;
    }

    protected void initMIDlet()
    {
        GameCanvas c = new StarField();
        c.addCommand(exitCommand);
        c.setCommandListener(this);

        getDisplay().setCurrent(c);
    }

    protected void pauseApp()
    {
    }

    protected void startApp() throws MIDletStateChangeException
    {
        if (display == null)
        {
            display = Display.getDisplay(this);
            initMIDlet();
        }
    }
}
/*
 * License
 *
 * Copyright 1994-2004 Sun Microsystems, Inc. All Rights Reserved.
 */

import java.util.Random;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.GameCanvas;

// A simple example of a game canvas that displays
// a scrolling star field. Use the UP and DOWN keys
// to speed up or slow down the rate of scrolling.

public class StarField extends GameCanvas implements Runnable
{

    private static final int SLEEP_INCREMENT = 10;

    private static final int SLEEP_INITIAL = 150;

    private static final int SLEEP_MAX = 300;

    private Graphics graphics;

    private Random random;

    private int sleepTime = SLEEP_INITIAL;

    private volatile Thread thread;

    public StarField()
    {
        super(true);

        graphics = getGraphics();
        graphics.setColor(0, 0, 0);
        graphics.fillRect(0, 0, getWidth(), getHeight());
    }

    // The game loop.

    public void run()
    {
        int w = getWidth();
        int h = getHeight() - 1;
        while (thread == Thread.currentThread())
        {
            // Increment or decrement the scrolling interval
            // based on key presses
            int state = getKeyStates();

            if ((state & DOWN_PRESSED) != 0)
            {
                sleepTime += SLEEP_INCREMENT;
                if (sleepTime > SLEEP_MAX)
                    sleepTime = SLEEP_MAX;
            } else if ((state & UP_PRESSED) != 0)
            {
                sleepTime -= SLEEP_INCREMENT;
                if (sleepTime < 0)
                    sleepTime = 0;
            }

            // Repaint the screen by first scrolling the
            // existing starfield down one and painting in
            // new stars...

            graphics.copyArea(0, 0, w, h, 0, 1, Graphics.TOP | Graphics.LEFT);
            graphics.setColor(0, 0, 0);
            graphics.drawLine(0, 0, w, 0);
            graphics.setColor(255, 255, 255);
            for (int i = 0; i < w; ++i)
            {
                int test = Math.abs(random.nextInt()) % 100;
                if (test < 5)
                {
                    graphics.drawLine(i, 0, i, 0);
                }
            }
            flushGraphics();

            // Now wait...

            try
            {
                Thread.sleep(sleepTime);
            } catch (InterruptedException e)
            {
            }
        }
    }

    // When the canvas is shown, start a thread to
    // run the game loop.

    protected void showNotify()
    {
        random = new Random();
        thread = new Thread(this);
        thread.start();
    }
    // When the game canvas is hidden, stop the thread.

    protected void hideNotify()
    {
        thread = null;
    }
}






]]>
解决 Maximum byte code length (32kB) exceeded问题查看( 0 ) / 评论( 0 ) / 评分( 0 / 0 )http://www.tkk7.com/gooogle/archive/2007/09/19/146431.html3G工作?/dc:creator>3G工作?/author>Wed, 19 Sep 2007 05:12:00 GMThttp://www.tkk7.com/gooogle/archive/2007/09/19/146431.htmlhttp://www.tkk7.com/gooogle/comments/146431.htmlhttp://www.tkk7.com/gooogle/archive/2007/09/19/146431.html#Feedback0http://www.tkk7.com/gooogle/comments/commentRss/146431.htmlhttp://www.tkk7.com/gooogle/services/trackbacks/146431.htmlhttp://www.3geye.net
在设计J2meE序中,如果c过大很Ҏ出?Maximum byte code length (32kB) exceededq样的问题,该怎么解决呢,办法很简单,把这个类 拆成几个类ok了?br /> ?br />


]]>
怎么栯计一ƾ优U的J2ME软g初稿http://www.tkk7.com/gooogle/archive/2007/09/18/146051.html3G工作?/dc:creator>3G工作?/author>Tue, 18 Sep 2007 01:25:00 GMThttp://www.tkk7.com/gooogle/archive/2007/09/18/146051.htmlhttp://www.tkk7.com/gooogle/comments/146051.htmlhttp://www.tkk7.com/gooogle/archive/2007/09/18/146051.html#Feedback1http://www.tkk7.com/gooogle/comments/commentRss/146051.htmlhttp://www.tkk7.com/gooogle/services/trackbacks/146051.html
JAVA MEq个技术出现到现在也有好多q了Q这D|_大家对这Ҏ术的褒贬不一。我们暂且不讨论q些Q我今天拿我做目的经验来说。该怎么栯计一ƾ优U的JAVA ME手机软g。这文章不是纯技术性的文章Q只要稍微做q项目的朋友都是可以看的明白了,里面的观点只是代码自q个h观点。说的不对的地方望大家多多指教?br />
      首先我们来说说J2me的高UUI应用情况?

1Q?游戏Q根本就不采用高UUIQ用到的只是高UI调用本地输入法?br />
2Q?企业应用Q相对要求交互性高Q实时快Q用L面友好的应用来说Q高UUI的应用情况跟游戏查不?br />
3Q?单的例子教程Q更不就拿不出收的手YӞ大部分采用高UUIQ因为高UUI单方便,Ҏ描述?br />
lg所qͼ高UIҎ׃适合现在的企业应用,以及游戏开?br />
q方面的例子有UCWEBQ航家QFadato球客户端,Bobi球x工具QQQpd软gQ在U直播,手机׃软gQMino邮g客户端等{。。。这一pd证明高UI的应用不多。在q些pȝ里面用到最多的是软g的配|,输入法的调用Q错误的提示QAlertQ等

 

JSR规范制定的成功之处?br />
开发手Y件虽然没有开发电脑Y件工作量那么大,但是要考虑到的东西一炚w不比电脑软g,理由如下Q?br />
1Q?g配置q不如电?br />
2Q?操作pȝq于分散

 

JSR是Zq些差异而出现的?br />
用户可以通过查询api来查看自q手机是否之处q样的功能过Q而做出选择?br />
 

上面是废话。下面看看怎么栯计一Ƒ֥软g?br />
1Q?用户界面友好Q一套可定制的UIlg?br />
2Q?用户操作逻辑合理Q专业的{划l织

3Q?一套合理的内存理Q这h可以保证软g的稳定?br />
4Q?适应需求的软gl构模式?br />
5Q?性能斚w一定要好?br />
 

上面是一ƾY件基本的条gQ要惌q个软g被h们广泛解释的话,q需要解决下面的问题Q?br />
1Q?手机型号支持Q尽量匹配多U机型,在不能保证支持全部机型的条g下,最L支持L的手机厂商的手机

2Q?为各个机型定制一些特别的服务Q比如有些手机支持JSR75Q可以考虑保存更多的东西到本机手机上,有些不支持,可可以考虑用RMS{,有些支持媒体cd多点Q手Z也可以ؓq类手机定制多点服务

3Q?一Ƒ֥产品Q必L一个社区想扶持Q所以一个热门的产品C֌是少不了的?br />
4Q?个h感觉Q单机版的Y件不可能取得很大的成功,一定要采用C/S的方式来取得用户对品的_度

5Q?|马也不?天就可以建成的,所以Y件也不是一出来很完美Q所以就要不停的对Y件进行更斎ͼl护工作Q这是最重要的,好Y件的其中之一的标准就是看看这个Y件发展到什么版本了Q版本也高,证明你的软g的生命厉强



]]>
颜色渐变选择条的实现http://www.tkk7.com/gooogle/archive/2007/09/13/144776.html3G工作?/dc:creator>3G工作?/author>Thu, 13 Sep 2007 03:15:00 GMThttp://www.tkk7.com/gooogle/archive/2007/09/13/144776.htmlhttp://www.tkk7.com/gooogle/comments/144776.htmlhttp://www.tkk7.com/gooogle/archive/2007/09/13/144776.html#Feedback3http://www.tkk7.com/gooogle/comments/commentRss/144776.htmlhttp://www.tkk7.com/gooogle/services/trackbacks/144776.html3G视线 -- 专注手机软g开?br />
原文出处http://www.3geye.net/?uid-3-action-viewspace-itemid-111


对于自定义UI的设计,涉及到的工作量是很大的,有时候往往要实CUUI效果而花费大量的旉L考,找\子,然后实践Q运气好的话Q自然OKQ运气不好,那就很惨了。浪Ҏ_q没有效果?br />        不过q好有很多前辈ȝZ一些方法跟代码Q下面就让我们来看下Q?a href="javascript:;" onclick="javascript:tagshow(event, '%D1%D5%C9%AB%BD%A5%B1%E4');" target="_self">颜色渐变效果的实现吧。实践了q么Q感觉就q个代码比较好,颜色渐变的比较^滑。很舒服?br />         下面是效果图



下面是实C码,大家可以参考下Q也许还有更优化的设计呢?/p>

下面代码也是从Intenet来的Q只是修改了下?/p>

/**
     * l制渐变色选择?br />      * @param g
     * @param color
     * @param x
     * @param y
     * @param width
     * @param height
     */
    public final static void drawShadeRect(Graphics g,   int color, int x , int y, int width, int height){
         int[] rgb = getShadeColor(color, width);
         for (int by = y; by < y + 20; by += 4)
              {
                int nTemp = y + 20 - (by - y);
                nTemp = nTemp>4 ? 4:nTemp;
                  g.drawRGB(rgb, 0, width, x, by, width,
                      nTemp, true);
              }
    }
    /**
     * 获取颜色渐变RGB数组Q?br />      * Z获取q个数据Q而又跟CLDC1.0兼容Q导致项目增加了一个Floatc?br />      * DE序变大
     * @param width
     * @return
     */
    public final static int[] getShadeColor(int color , int width){
         int[] rgb;
     
          int shadeWidth = width;
          int nRgbData = shadeWidth * 4;
           
          rgb = new int[nRgbData];
       
          int alpha = -127;
          for (int i = 0; i < shadeWidth; i++)
          {
            alpha = -127 + i;
            //主要法在这里?br />             int col = color | (128 - alpha << 24);
            rgb[i]                  = col;
            rgb[i + shadeWidth    ] = col;
            rgb[i + shadeWidth * 2] = col;
            rgb[i + shadeWidth * 3] = col;               
          }
          return rgb;
    }



׃个静态方法很单的。哈



]]>
素爱K700c & K500C 的按键问?-可能是手拟机的实现问?/title><link>http://www.tkk7.com/gooogle/archive/2007/09/12/144651.html</link><dc:creator>3G工作?/dc:creator><author>3G工作?/author><pubDate>Wed, 12 Sep 2007 15:28:00 GMT</pubDate><guid>http://www.tkk7.com/gooogle/archive/2007/09/12/144651.html</guid><wfw:comment>http://www.tkk7.com/gooogle/comments/144651.html</wfw:comment><comments>http://www.tkk7.com/gooogle/archive/2007/09/12/144651.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.tkk7.com/gooogle/comments/commentRss/144651.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/gooogle/services/trackbacks/144651.html</trackback:ping><description><![CDATA[<br /> <a >3G视线</a> -- 专注手机软g开?br /> <br /> <br /> 原文出处 <a title="3G视线" >3G视线</a> <a >http://www.3geye.net/bbs/viewthread.php?tid=79</a><br /> <br /> 今天处理一个项目的时候,发现我台素爱K700C遇到一个超U奇怪的问题<br /> K700C在采用Canvas 设计Q调用keyPressed(int keyCode)的时候,出现一?br /> Left Right按键的时候没有反应,也打CZ么结果?br /> 应该来说Left=-6QRight= -7才对Q不q按下去却没有Q何放映;<br /> 考虑下是否全屏幕的问题:按照我的思考如?br /> 1.非全屏状态下Q这两个键值是不给Canvas使用?br /> 2.非全屏状态下Q这两个键g留给pȝ使用QCammondQ;<br /> <br /> 不过在全屏的状态下也出C一个问题?br /> 问题如下Q?br /> 1.可能获取Left QRight后,pȝ跛_<br /> 哈哈。终于找到问题所在了。原来是Canvas getKeyName(int keyCode)会抛出异常,而程序没有捕莯个异常,DE序出问题?br /> 其中K500C也有同样的问题?img src ="http://www.tkk7.com/gooogle/aggbug/144651.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/gooogle/" target="_blank">3G工作?/a> 2007-09-12 23:28 <a href="http://www.tkk7.com/gooogle/archive/2007/09/12/144651.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>J2ME Polish 全攻略之理解各个配置参数http://www.tkk7.com/gooogle/archive/2007/09/04/142579.html3G工作?/dc:creator>3G工作?/author>Tue, 04 Sep 2007 04:12:00 GMThttp://www.tkk7.com/gooogle/archive/2007/09/04/142579.htmlhttp://www.tkk7.com/gooogle/comments/142579.htmlhttp://www.tkk7.com/gooogle/archive/2007/09/04/142579.html#Feedback0http://www.tkk7.com/gooogle/comments/commentRss/142579.htmlhttp://www.tkk7.com/gooogle/services/trackbacks/142579.htmlJ2ME Polish 全攻略之理解各个配置参数

前段日子我写?/span> J2ME Polish 全攻略之入门q篇文章。虽然写的不怎么P不过却是带了不少人入门?/span>

现在摘录|上的一D话来描q?/span>J2ME Polish现状

希望开始研I?/span>J2ME-POLISH先有点心理准?/span>

ui的问题多多,特别是他所支持?/span>CSS 没有说明是哪个版本的CSSQ有时让人挺qh的。但?/span>build工具q是不错的?/span>Build script写v来有点不像他文档中说的那么简单。我个h认ؓ新手不易

 从上面的话可以看书,J2ME Polish虽火Q但是要x行v来,相关的入门,深入文档q是比不可以的。由于国人的习惯Q如果有比较好的中文文档Q对他们来说是最好的事情Q?/span>3G视线致力于这些工作,我们不是什么专业的作家Q只是记录下我们工作的经验,供大家一起学?/span>

今天我们看看J2ME Polish的配|文件的关系已经怎么样加入自q东西Q?/span>

比如加入自己的厂家规范,api规范{?/span>

看看J2ME Polish的配|目录结?/span>

安装J2ME Polish打开安装目录可以看到这些文?/span>

apis.xml -- 描述一些常用的讑֤JCP规范支持的库Q比?/span>MMAPI的描q啊{,

custom-css-attributes.xml  -- 可ؓ自己?/span>GUIE序定制CSS样式

custom-devices.xml -- 自定义驱动,补充官方没有提供的驱动?/span>

devices.xml - - 定义所有已知的讑֤Q你可以定义或者修改这些已存在的规范和使用改变q的配置用在您的代码?/span>

groups.xml – 定义驱动l,每一个驱动可以在L一个组下面

vendors.xml - - 可自定义的厂?/span>J2ME规范

 

上面是一些配|的介绍Q要惛_?/span>J2ME Polish?/span>Build的功能,弄得他们的关pL很重要的?/span>

 

下面来定制我们需要的功能吧?/span>

首先我们来定义自q?/span>Apis以及VendorsQ?/span>

Vendors 我们定义一?/span>ID?/span>3Geye?/span>

Apis 定义一?/span> 3Geye/k700

然后?/span>bulid上改下:

<deviceRequirements>

                     <requirement name="Identifier" value="3Geye/k700"/>

</deviceRequirements>

 

W一步:

下面我们现在?/span>Vendors上看?/span>

我们拉到q个文g的底部,复制一?/span>VendorQ然后修改下Q就ok?/span>

 

       <vendor>

              <name>3Geye</name>

              <capability name="JavaConfiguration" value="CLDC/1.0" />

              <features>hasCommandKeyEvents</features>

              <capability name="JavaConfiguration" value="CLDC/1.0" />

              <capability name="keys.CommandKeys" value="21, 22, 23" />

              <capability name="key.LeftSoftKey" value="21" />

              <capability name="key.RightSoftKey" value="22" />

              <capability name="key.MiddleSoftKey" value="23" />

              <capability name="key.ChangeInputModeKey" value="48" />

              <capability name="key.ChangeNumericalAlphaInputModeKey" value="35" />

              <capability name="TextField.charactersKeyStar" value=" " />         

       </vendor>

q个是参?/span>moto修改?/span>

 

W二步:

修改devices

<device

              supportsPolishGui="true" >

              <identifier>3Geye/k700</identifier>

              <features>isVirtual</features>

              <groups>Series60</groups>

              <capability name="OS" value="Symbian"/>

              <capability name="JavaPackage" value="mmapi, wmapi, pdaapi " />

              <capability name="JavaPlatform" value="MIDP/2.0" />

              <capability name="JavaConfiguration" value="CLDC/1.0" />

              <capability name="VideoFormat" value="3gpp" />

              <capability name="SoundFormat" value="midi, amr" />

              <capability name="Bugs" value="dateFieldAcceptsNoNullDate" />

       </device>

q样我们定义了一?/span>3Geye/k700de device了,如果你扩展了apisQ你应该把扩展的ID

填入JavaPackageq个参数里面。我在上面添加了一?/span>pdaapiQ对jsr75的支持?/span>

然后试下?/span>

在这里可可以看到结果了?/span>

  • Ant
  • StdOut
  • Buildfile: build.xml
  • init:
  • j2mepolish:
  • [j2mepolish] J2ME Polish 1.2.4
  • [j2mepolish] Using locale [en]...
  • [j2mepolish] preprocessing for device [3Geye/k700].
  • [j2mepolish] compiling for device [3Geye/k700].
  • [j2mepolish-javac-3Geye/k700] Compiling 3 source files to E:"Company"Project"slide"build"real"3Geye"k700"en"classes
  • [j2mepolish] obfuscating for device [3Geye/k700].
  • [j2mepolish] Starting obfuscation with ProGuard.
  • [j2mepolish] ProGuard, version 3.2
  • [j2mepolish] Preparing output jar [E:"Company"Project"slide"build"real"dest.jar]
  • [j2mepolish] ProGuard has successfully finished obfuscation.
  • [j2mepolish] preverifying for device [3Geye/k700].
  • [j2mepolish] creating JAR file [E:"Company"Project"slide"dist"sysinfo.jar].
  • [j2mepolish] creating JAD file [E:"Company"Project"slide"dist"sysinfo.jad].
  • BUILD SUCCESSFUL
  • Total time: 14 seconds

q些?/span>JBuilder2005试的结果?/span>

在这里我发现J2ME Polish       实不错。以后我会出一些更多关于它的文章,Ll关?/span>

 



]]>
目前国内支持JAVAq_l端详细资料http://www.tkk7.com/gooogle/archive/2007/09/02/142049.html3G工作?/dc:creator>3G工作?/author>Sun, 02 Sep 2007 04:39:00 GMThttp://www.tkk7.com/gooogle/archive/2007/09/02/142049.htmlhttp://www.tkk7.com/gooogle/comments/142049.htmlhttp://www.tkk7.com/gooogle/archive/2007/09/02/142049.html#Feedback0http://www.tkk7.com/gooogle/comments/commentRss/142049.htmlhttp://www.tkk7.com/gooogle/services/trackbacks/142049.html

 目前国内支持JAVAq_l端详细资料Q资料帖Q?br /> http://www.everenter.com/bbs/dispbbs.asp?boardID=5&ID=205

目前国内支持JAVAq_l端详细资料


NOKIA 6610

                              
  
〖规格参数?nbsp;
 
|络频率Q?nbsp;GSM GPRSQ?00/1800/1900MHz 
可选颜Ԍ 黑色、银白色 
寸/体积Q?nbsp;106×45×17.5mm/71cm3 
重 量 Q?nbsp;84 ?nbsp;
屏幕参数Q?nbsp;4096色彩色屏q;128×128象素Q?nbsp;
通话旉Q?nbsp;120-300 分钟 ?nbsp;
待机旉Q?nbsp;150-300 时 ?nbsp;
上市旉Q?nbsp;2002q?1?nbsp;
标准配置Q?nbsp;锂电池、充电器、光盘、收x耛_ 
 
〖主要功能?nbsp; 
 
『时钟』『内|振动』『通话旉提示』『通话记录?nbsp;
『免提通话』『图形菜单』『EFR STK支持?nbsp;

可换外壳Q?nbsp;可更换六U颜色彩壻I黑、红、粉、灰lѝ深褐、黄 
WAP上网Q?nbsp;WAP 1.2.1 
中文输入Q?nbsp;T9 
中文短信Q?nbsp;中文短信息收发。存储最?5个文字短信或25个图片短信,囄预置10个,最多可保存35个^均大ؓ10K的图?nbsp;
多媒体短信: 存储最?2个最?0K的MMS短信 
可选铃壎ͼ 31 ?nbsp;
和u铃声Q?nbsp;4 和uQMIDIQ合成音Q铃壎ͼ预置31?用户自选空?0个) 
话机通讯录: 300?#215;1条,?00?nbsp;
内置游戏Q?nbsp;可下载互动游?nbsp;
动画屏保Q?nbsp;旉?nbsp;

『红外接口?nbsp;『支持E-Mail?nbsp;

无线下蝲Q?nbsp;下蝲铃声、图片、游戏等Q全新合成音铃声可通过MMS接收Q通过WAP或用Nokia C套g 5.0通过互联|从Club Nokia**下蝲 
无线数据通讯Q?nbsp;内置ModemQHSCSDQ这UHSCSD功能可以保证大家使用43.2kbps的速度览互联|) 
支持攉机: 内置立体声调频收xQ环l立体声 
Java扩展Q?nbsp;Java游戏 

『闹钟?nbsp;『计器?nbsp;『定时器?nbsp;『秒表?nbsp;
『自动键盘锁?nbsp;『世界时钟?nbsp;

日历Q?nbsp;最多可?50条备?nbsp;
C本: 最?0条记?nbsp;
日程表: 最多可?50条备?nbsp;
货币换算Q?nbsp;转换器(汇率、气温、重量和其他度量?br />
׃太多内容Q详情请看,里面保护了几十个东西?br /> http://javaeye.5d6d.com/thread-241-1-1.html


]]>
JSR规范Q系l参数测试大?/title><link>http://www.tkk7.com/gooogle/archive/2007/09/02/142042.html</link><dc:creator>3G工作?/dc:creator><author>3G工作?/author><pubDate>Sun, 02 Sep 2007 03:03:00 GMT</pubDate><guid>http://www.tkk7.com/gooogle/archive/2007/09/02/142042.html</guid><wfw:comment>http://www.tkk7.com/gooogle/comments/142042.html</wfw:comment><comments>http://www.tkk7.com/gooogle/archive/2007/09/02/142042.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.tkk7.com/gooogle/comments/commentRss/142042.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/gooogle/services/trackbacks/142042.html</trackback:ping><description><![CDATA[<a >3G视线</a> -- 专注手机软g开?br /> <span style="font-size: 24pt;"><br /> <span style="font-size: 24pt;"><span style="font-size: 14pt;"><strong><span style="color: red;">需要源代码的到q里 <a >http://javaeye.5d6d.com/thread-251-1-1.html</a></span></strong></span></span></span><span style="font-size: 24pt;"><span style="font-size: 14pt;"><strong><span style="color: red;"><a ></a></span></strong></span></span><a ></a><br /> <br /> <font size="3"> 你是否觉得,开发J2MEE序太麻烦呢?<br /> 一.每一个手机,没一个^台都不同QJSR支持不同Q屏q大不同,字体不同Q颜色深度不同,手机内存大小不同QRMS资源理不同QRMS支持大小? 同,Cavans全屏模式不同Q各个厂家有自己扩展的API又不同,WINCEQSybmainQLinuxQ真是所谓的Write OnceQDebug Anywhere. 开发这东西q要匚wN中手机,NU^台。是不是很苦恼啊?br /> ?开发手机程序,最重要的就是网l支持,要设计符合中国国情的无线|络E序也是一个小挑战。?br /> ?其他...?br /> 没关p,我们先来看看JSR规范Q系l参数测试大全,让我们了解这手机到底支持什么先Q然后我们再下手开发?br /> <br /> q个E序能提供的功能有:<br /> 1.JSR规范试Q检查设备对JSR规范的支持,以及版本?br /> 2.Ҏ机屏q,字体Q颜色的?br /> 3.对系l一些参数的查,比如查是否CLDC1.0Q或者是CLDC1.1{等<br /> 4.对图片,声音Q视频支持的格式q行全面的罗列?br /> 5.其他...?br /> <br /> 鉴于很多用户都没有浏览权限,所以我在这里说明下Q需要源代码的同志留下Email。对了,一点,一定要在我论坛上留Q否则的话不l与支持。没办法被逼的<br /> 谢谢合作<br /> <br /> 留了Email在线会发送过ȝ?/font><br /><img src ="http://www.tkk7.com/gooogle/aggbug/142042.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/gooogle/" target="_blank">3G工作?/a> 2007-09-02 11:03 <a href="http://www.tkk7.com/gooogle/archive/2007/09/02/142042.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MIDPV2?规范http://www.tkk7.com/gooogle/archive/2007/09/01/141897.html3G工作?/dc:creator>3G工作?/author>Sat, 01 Sep 2007 04:00:00 GMThttp://www.tkk7.com/gooogle/archive/2007/09/01/141897.htmlhttp://www.tkk7.com/gooogle/comments/141897.htmlhttp://www.tkk7.com/gooogle/archive/2007/09/01/141897.html#Feedback0http://www.tkk7.com/gooogle/comments/commentRss/141897.htmlhttp://www.tkk7.com/gooogle/services/trackbacks/141897.html3G视线 -- 专注手机软g开?br />

MIDPV2?规范Q?br />

一 介:

MIDP v2.0是由JCP(Java Community Process)制订的,该规范的制订是由大约50个公司共同参与设计参见附录一。MIDP v2.0规范设计的目的是定义一体系架构Q相应的APIsQ从而ؓW三方的Ud信息讑֤QMIDs〕应用的开发提供一开攄标准环境?

MIDP v2.0规范是在MIDP v1.0规范的基上设计的Q它保证了同MIDP v1.0的兼Ҏ。即在MIDP v1.0上编写的MIDlets能在MIDP v2.0上执行?

ҎJ2ME定义的体pL构,MIDP被设计在CLDC的基上运行。关于CLDC的资料可以参? http://jcp.org/jsr/detail/30.jsp.虽然MIDP v2.0规范是在CLDC1.0所提供的功能的基础上制订的Q但它仍能运行在CLDC1.1的基上,以及以后的更新版本。但我们希望MIDP v2.0的实现最好在CLDC1.1的基上?

?J2ME 架构Q?

Java?995q发明以来以发生了很大的变化Q从最早的为基于溜览器中运行的Applet的编E,? Servlet/EJB的Server~程Q再到现在的MIDlet为无U信息设备的~程。它已发展成Zؓ开发者提供一端到端编E开发的q_Q即我们常说 ? J2SE/J2EE/J2ME,Java的三个^?fig1)。由于无U编E有其完全不同于传统~程的特D性,比如Q运行设备的多样性,讑֤处理能力? 如服务器和微机,用户界面的差异性等。另外在加上无线技术的飞速发展,使得J2ME的体pL构有者完全不同于J2SE/J2EE的特炏V?

?: Java 的三个^?

J2ME的架构是把我们传l的Java架构Q硬?OS/JVM/APIs/应用加一变化Q变成了Q硬?OS/Configuration/Progile/应用。之所以采用这L架构是由我们上面所谈到的J2ME的特D性有兟?


?: J2ME的架?

J2ME/CLDC/MIDP作ؓJ2ME的一个版本,它是专ؓ无线Ud通讯讑֤说设计的Q在下面我们单介l它的体pL构。从下图中我们可以看刎ͼ

?: CLDC/MIDP架构

1.在CLDC之上有两cAPI:
QMIDP APIs: q些APIs正是MIDP v.0规范所要定义的APIs.
- OEM-specific APIs: MIDP规范所涉及的无UK讯讑֤多种多样Q因此它不可?涉及所有设?的需求。因此这一cȝAPIs是由OEM厂商提供以便讉K特定讑֤的特定功能。但Zq些APIs的应用可能不能在其它的MIDs讑֤上运行?br /> 2.MID应用的种c:
QMIDP: 一个MIDP应用或称为MIDetQ它必需只用MIDP和CLDC规范中所定义的APIs。该cd用能在应是在MID讑֤上最常见的应用?br /> QOEM-specific: 一个OEM-specific的应用会使用一些不在MIDP中定义的PIs(OEM-specific classes) 。这些应用不能在不同的MIDs讑֤上运行?br /> QNative: 一个本地应用指用非Java语言~写的直接运行于讑֤操作pȝ之上的应用。在MIDP规范中不涉及OEM-specific和Native的应用?


?MID v2.0规范所涉及的范_

我们都知道无U信息设备(MIDs〕的功能多种多样。但MIDP规范q不是要对这些设备的所有功能都要加? 定义Qƈ提供APIs~程。相反MIDP v1.0和MIDP v2.0的专家组同意只针Ҏ通用q且成功实施的功能的需求制订相应的APIs。在MIDP v1.0中这些功能包括:

Q?应用的下?br /> Q?应用的生命周?br /> Q?端到端的传输(http)
Q?|络联结
Q?数据库存?br /> Q?计时?br /> Q?用户界面

通过用户对MIDP v1.0的用经验和反馈QMIDP v2.0的专家组在MIDP v1.0 APIs的基上又新加了下面的 APIs:

Q?应用的下载和计费
Q?端到端的安全传输(https)
Q?应用的数字签名和域的安全模式
Q?MIDlet的push注册(server push model)
Q?声音

Z上面所讲的同样的原因,一些功能是不会在MIDP的定义范围内Q这些功能包括:
Q?pȝ层的APIs: MIDP APIs的重Ҏ针对应用的开发者,而不是系l开发。因此一些底层的涉及pȝ接口的APIsQ比如无U信息设备的甉|理Q语音的~码模块属于系l层的APIs而不在MIDP所讨论的范围内?br /> Q?底层的安全:MIDP规范不涉及底层的安全的功能,它只使用CLDC所提供的底层的安全机制?

关于MIDP v2.0的新APIs在本文中我们不加以介l?

?MIDP v2.0的安全机Ӟ

我们知道Java语言作ؓ以种|络~程语言Q它h很多特点来满网l编E的需求,其中最Zh们所z|乐道 的是它的遍写一ơ到处运行,以及它的安全性。特别是它的安全性,从它的发明道现在?q的旉已经为无数的事实所证明。Java语言的安全性,安全机制? 有它发展的过E,下面我们单介l以下Java的安全机制?

1.Java1.0的沙机Ӟ


fig3: Java1.0安全的沙机?


上图所描述的是Java1.0的沙机Ӟ它最早是为在溜览器中q行的Applet所设计。因 Applet的运行代码是通过|络传输到用L机器中,Z防止恶意代码Q该机制把用户应用简单分为本地应用和|络应用(applet)。对|络应用它只 能放问一些安全的 APIs从而保证安全性。但该机制过于简单,无法很好满开发者的需求?

2.Java1.1的可信Q代码的安全机Ӟ


fig4: 可信M码的安全机制
该安全机制只是在Java1.0沙箱安全机制的基上,引入一U新的网l应用,及可信Q的网l应用,但ƈ未对所讉K的资源进行很好的划分。大家从图中可看出,应用要吗受沙qU束Q只能访问有限资源,要么p讉K所有资源?

3.Java1.2/2的域安全机制Q?


Java1.2/2的域安全机制

该安全机刉过配置文g对Java的应用以及访问的资源q行配置Q从而实C一U非常细化的安全机制?

4.MIDP安全机制及其发展Q?

MIDP1.0规范在制订时׃当时的无U网l尚处于发展阶段Q因此在考虑MIDP v1.0的安全机制时没有太多考虑应用在网l传输过E中安全性的讄Q而是把重Ҏ在无U应用在讑֤上的q行q程中的安全性上。因此MIDP1.0规范? q沙q安全机制来提供MIDlet suiteq行时的安全性,该机制保证MIDlet所能调用的APIs不能讉K讑֤的敏感信息和功能。在MIDP2.0安全机制的制订过E中Q专家组采纳 了用户对MIDP v1.0安全机制所提出的意见:?.0版本的安全性太“?#8221;使得很多的无U设备的功能
不能通过MIDP的编E来加以使用。比 如说手机中地址本的讉K{。如果要把这些敏感功能的APIs开放让用户的应用访问,必d入一U新的安全机制。该机制是我们前面所描述? Java1.2/2的域的安全机制。在MIDP v2.0中对不被信Q的MIDlet则只能运行于该沙安全机制中。Q何一UMIDP v2.0的实玎ͼ必需支持非信ȝMIDlet的在MIDs讑֤上的q行?

MIDP2.0引入了信ȝMIDlet的新概念Q对于信ȝMIDlet它能使用一些敏感的和被限制使用 的APIs.当无U信息设备检到一MIDlet sute是可信QӞ则它对APIs的访问由相应的安全域的策略定义。我们将在下面的章节中详悉介l。当验证一MIDlet suite是否能信L发生错误Q则该MIDlet suite必需被拒l?br /> 执行?

5.MIDP2.0的域的安全机Ӟ
非信ȝMIDlet Suites

一非信ȝMIDlet suite是指MIDlet suite的下载源和JAR文g的完整性不能被下蝲的设备所信Q。对于非信Q的MIDlet suite必需只能q行于非信Q的安全域中,在该域中对受保护的APIs或功能不能访问或p备用者确定可以访问或不可以访问。Q何一MIDP1.0? 容的MIDlet suite能在MIDP v2.0的实C用非信Q的模式运行。对于非信Q的MIDlet suites它能讉K它的JAR manifest和application desctiptor文g以及下面的APIs:

Q?javax.microedition.rms
Q?javax.microedition.midlet
Q?javax.microedition.lcdui
Q?javax.microedition.lcdui.game
Q?javax.microedition.media
Q?javax.microedition.media.control
非信d全域对以下APIs或功能的讉K必须qL定可以或不可以:

Q?javax.microedition.io.HttpConnection
Q?javax.microedition.io.HttpsConnection
可信ȝ MIDlet Suite 的安全:

可信ȝ MIDlet Suite 的安全是建立在保护域的机制上。每一保护域定义了该域中的 MIDlet suite 的访问权限。该保护域的定义者可以定义设备怎样认和验证它能信ȝ MIDlet suite q把该域所允许和授权用的受保护的APIs和功能绑定给该MIDlet suite。设备所使用的验证和信QMIDlet suite的机制的定义是分开的,q样有利于h们根据设备,|络Q和商业模式的不同来q行选择。可信Q?MIDlet Suites使用X.509 PKI的签名和验证机制来确定一MIDlet suites的可信Q性?

在MIDP2.0的域的安全机制中Q大家主要回涉及以下概念Q?br /> 保护域: 是MIDlet suite所允许的权限访问的集合
权限讉KQ?是指必须通过授权才能使用?APIs 或功?br /> 信QMIDlet SuiteQ?指该MIDlet suite能通过验证q其JAR文g的完整性能被保证,q能被该讑֤上的某一保护域所信Q?br /> 配置文gQ?一配置文g中包含许多域或别名的定义。每一域由包含所赋于的权限和用户操作所构成?

配置文g的例子:

domain: O= MIDlet Underwriters, Inc. , C=US
allow: javax.microedition.io.HttpConnection
oneshot(oneshot): javax.microedition.io.CommConnection
alias: client_connections javax.microedition.io.SocketConnection, javax.microedition.io.SecureConnection,
javax.microedition.io.HttpConnection,
javax.microedition.io.HttpsConnection
domain: O=Acme Wireless, OU=Software Assurance
allow: client_connections
allow: javax.microedition.io.ServerSocketConnection, javax.microedition.io.UDPDatagramConnection
oneshot(oneshot): javax.microedition.io.CommConnection
domain: allnet
blanket(session): client_connections
oneshot: javax.microedition.io.CommConnection

? ȝQ?

MIDP v2.0是ؓq大的开发者在无线Ud通讯讑֤上提供的一个开攄Javaq_Q它h开放性,通用性,以及比MIDP v1.0更强的安全功能。它是由全球U五十多家厂商所共同制定的,因此ZMIDP v2.0的应用在来回有很广泛的应用前景?

附录一QMIDP v2.0 的专家组:

公司Q?

4thpass Inc, AGEA Corporation, Alcatel, Aplix Corporation, AromaSoft Corp, Baltimore Technologies CELLon France, Distributed Systems Technology Centre, Elata PLC, Esmertec, Espial Group Inc, France Telecom / Orange, Fujitsu Limited, German Aerospace Center (DLR), Institute of Communications and Navigation, Hitachi Ltd./Digital Media Group, In Fusio, J-PhoneEast Co. Ltd, Logica Mobile Networks, Mitsubishi Electric Corp, Mobile Scope AG, Mobilitec, Motorola, NEC Corporation, Nextel Communications Inc, Nokia, NTT DoCoMo, Inc, Omnitel Pronto Italia S.p.A, One 2 One, Openwave Systems
, Inc, Orange (UK), Palm, Philips Consumer Communications, Philips Semiconductors, Research In Motion (RIM), Samsung Electronics Co., Ltd, Sharp Labs, Siemens AG, Siemens ICM, Smart Fusion, Sony Ericsson Mobile Communications, Sun Microsystems, Inc, Symbian Ltd, Telef'nica M'viles Espa'a, Vaultus, Inc, Veloxsoft, Inc, Vodafone Global Platform & Internet Services, Vodafone Group Services Limited, Vodafone Multimedia, Zucotto Wireless,
个hQ?

Fabio Ciucci, Glen Cordrey, Jon Eaves, David Hook, Myank Jain, Neil Katin, Steve Ma, Ravi Reddy Wai Kit Tony Fung



]]>
J2ME Polish 全攻略之入门http://www.tkk7.com/gooogle/archive/2007/08/31/141700.html3G工作?/dc:creator>3G工作?/author>Fri, 31 Aug 2007 05:18:00 GMThttp://www.tkk7.com/gooogle/archive/2007/08/31/141700.htmlhttp://www.tkk7.com/gooogle/comments/141700.htmlhttp://www.tkk7.com/gooogle/archive/2007/08/31/141700.html#Feedback1http://www.tkk7.com/gooogle/comments/commentRss/141700.htmlhttp://www.tkk7.com/gooogle/services/trackbacks/141700.html

爬虫工作?

文章出处 3G视线

q接 : http://javaeye.5d6d.com/thread-234-1-1.html

J2ME Polish 全攻略之入门

在看q篇文章之前Q我希望读者先览漫游 J2ME Polish--比较详细的文?/span>.doc q篇文章

内容?/span>

J2ME Polish现在很火Q很多手Y件开发商都在采用q东西进行二ơ开发。然后很可惜Q网l上关于q方面的中文比较,所以我Ҏ我学习的l过Q整理成文章Q希望对初学着以及爱好者有所帮助?/span>

1Q?span style="font-family: 宋体;">到官?/span>http://www.j2mepolish.org/ 上下载安装包Q现在最新版本是2.0 R4版本Q本人徏议安?/span>1.2.4版本Q因?/span>2.0R4版本可能存在一些不兼容以及一?/span>bug。本人用2.0R4版本的时候,有些例子q不能通过试

q行cmdQ然后输?/span>java –jar D:"J2ME Polish.jar卛_出现提示H口Q然后点下一步,?/span>ok了?/span>

上面的目录结构很清晰?/span>

其中最import是系l引入的包,其中包括一?/span>bulid的包Q以及其他一些,midp{规范包?/span>

Samples 是例子文Ӟ我的版本里面只有两个例子Q一个是menuQ描q的是,采用J2ME Polish GUIQ创建适合各个q_的统一外观的包Q基?/span>CSS设计的。是UI设计的典范,可以具体研究?/span> Sysinfo是一个系l信息的试例子Q涵盖了几乎所有^C?/span>jcp规范支持{测试信息,是我们开发程序中必须要用到的知识?/span>

Doc是文档,此文档暂没有中文。我们学习v来比较吃?/span>

Api?/span>J2ME Polish提供l开发h员用的公共接口

Bin一些可执行文g

其中readme.txt文g,关于目的一些描q?/span>

LICENSE.txt 版权信息,作ؓ商业开发?/span>,一定要看哦

对于目录下的xml文g,基本上都?/span>J2ME Polish的描q文Ӟ很重要的哦。是研究它的最直接的资料,可惜Q我也是刚学习,没有深入M解它

其中groups.xml定义了不同的q_下面的东西,比如s40Q?/span>s60Q?/span>s80Q?/span>390Q等api{?/span>

Vendors.xml定义了厂商的规范Q特性等Q比如键值的定义啊?/span>J2ME Polish处理键g件的时候主要是对这些规范进行预~译Q所以适合很多q_Q厂商?/span>

Devices.xml是对各个q_支持规范E度的描qͼ此文件包含了很多个^台支持描q?/span>

上面的所有配|都是基?/span>xml了。可以自己扩展,apiQ配|,以及q_

三.q行例子MenuQ?/span> SysInfo?/span>

2Q查?/span>bulid.xml文gQ看看它做了些说明手机,让我们的工作q么L愉快

׃?/span>xml文gQ?/span>wordq没有进行格式化Q所以我q里重点介绍下?/span>

<project name="enough-j2mepolish-example" default="j2mepolish">

q段是说Q徏立一?/span>projectQ?/span>默认执行?/span>target?/span>j2mepolish?/span>

<property name="wtk.home" , value="D:"WTK22" />

WTK的安装目?/span>

<property name="polish.home", value="D:"Program Files"J2ME-Polish" />

J2ME Polish 的安装目?/span>

<taskdef name="j2mepolish"

classname="de.enough.polish.ant.PolishTask"

classpath="${polish.home}/import/enough-j2mepolish-build.jar<img0" border="0">{polish.home}/import/jdom.jar<img0" border="0">{polish.home}/import/proguard.jar<img0" border="0">{polish.home}/yguard-lib.jar:${wtk.home}/wtklib/kenv.zip"/>

q个很重要,定义说。执行这?/span>targer?/span> TaskQ这里是指执?/span>de.enough.polish.ant.PolishTaskq个cR具体可以看源代码,看看里面做了些说明手?/span>

<obfuscator name="ProGuard" useDefaultPackage="true" unless="test" >

<!--

You can set additional parameters here, e.g.:

<parameter name="optimize" value="false" />

-->

</obfuscator>

q个用来打包用的Q采?/span>ProGuardh?/span>

其他的自qI?/span>

我们现在来看看,q行build.xml后生成了些什么呢。不看不知道Q一看吓一跻I

?/span>build的文件夹下面Q我发现了好多文Ӟ全部是对于^C同的资源源代码。原来,J2ME-Polish的原理是Q通过ant build的扩展,然后通过自己的一?/span>APIQ把用户的代码{换成对应各个q_的源代码Q然后编译,打包。原理虽然简单,但是q一套却是要花很多功?/span>ide哦。我现在开始有点佩?/span>J2ME Polish的创意了。也难怪,我的ȝ?/span>J2ME Polish是个好东西,好以后l学?/span>J2ME Polish的源代码Ql探讨?/span>

上面的例子是ZJ2ME – Polish GUI的,现在的例子是?/span>importM?/span>J2ME Polish MIDP相关?/span>APIQ这样例子对应需要开发。这个例子更单,按照我刚才所写的Ҏ办即可?/span>

Z介绍下这个例子,q个例子对应开发手Y件来_也是很有用的。里面包含了?/span>JSR规范支持的测试,已经屏幕Q按键等相关的测试,很有用?/span>



]]>
获取ChoiceGroup多选状态下的?/title><link>http://www.tkk7.com/gooogle/archive/2007/08/30/141495.html</link><dc:creator>3G工作?/dc:creator><author>3G工作?/author><pubDate>Thu, 30 Aug 2007 11:35:00 GMT</pubDate><guid>http://www.tkk7.com/gooogle/archive/2007/08/30/141495.html</guid><wfw:comment>http://www.tkk7.com/gooogle/comments/141495.html</wfw:comment><comments>http://www.tkk7.com/gooogle/archive/2007/08/30/141495.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.tkk7.com/gooogle/comments/commentRss/141495.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/gooogle/services/trackbacks/141495.html</trackback:ping><description><![CDATA[<div class="2a8ge2y" id="message430" class="t_msgfont"><font size="3"><a >http://javaeye.5d6d.com/thread-233-1-1.html</a> <br><br>怎么栯取ChoiceGroup多选状态下的值呢Q?br>q我q个做了几个项目的E序员,今天都不知道怎么办了?br>看了api文档不是很清晎ͼq是动手实践下吧?br><br>看代码就知道?br> boolean[] flags = new boolean[this.images.size()];<br><br><br> for(int i=0; i < flags.length; i++){<br> if(flags<em>)<br> this.images.getString(i); //q里得的选中的|感觉操作ȝ?br> } <br></em></font></div> <br><img src ="http://www.tkk7.com/gooogle/aggbug/141495.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/gooogle/" target="_blank">3G工作?/a> 2007-08-30 19:35 <a href="http://www.tkk7.com/gooogle/archive/2007/08/30/141495.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>深入分析J2MEq_MIDP低事g处理机制http://www.tkk7.com/gooogle/archive/2007/08/26/139663.html3G工作?/dc:creator>3G工作?/author>Sun, 26 Aug 2007 15:32:00 GMThttp://www.tkk7.com/gooogle/archive/2007/08/26/139663.htmlhttp://www.tkk7.com/gooogle/comments/139663.htmlhttp://www.tkk7.com/gooogle/archive/2007/08/26/139663.html#Feedback1http://www.tkk7.com/gooogle/comments/commentRss/139663.htmlhttp://www.tkk7.com/gooogle/services/trackbacks/139663.htmlhttp://javaeye.5d6d.com/thread-90-1-1.html

深入分析J2MEq_MIDP低事g处理机制


  通常低事g的处理是Z满游戏开发的需要,因ؓ游戏开发相关的问题非常复杂。因此不在这里进行阐qͼ有兴的朋友可以和我索要相关的游戏开发资料。MIDP定义了如下键值在CanvascdQ?br>  
  KEY_NUM0
  KEY_NUM1
  KEY_NUM2
  KEY_NUM3
  KEY_NUM4
  KEY_NUM5
  KEY_NUM6
  KEY_NUM7
  KEY_NUM8
  KEY_NUM9
  KEY_STAR
  KEY_POUND
  q些都是按键基本|当然有些手机是触摸屏的。事件的传递是通过如下Ҏ来实现的?br>  
  protected void keyPressed(int keyCode)
  protected void keyReleased(int keyCode)
  protected void keyRepeated(int keyCode)
  protected void pointerPressed(int x, int y)
  protected void pointerDragged(int x, int y)
  protected void pointerReleased(int x, int y)
  protected void showNotify()
  protected void hideNotify()
  protected abstract void paint(Graphics g)
  commandAction() method of the CommandListener interface
开发者应该承Canvascȝ同时覆盖相应的方法来实现低事g的处理,低事g的处理是q箋的、串行的Q在前面的事件返回之前后面的事g不会执行Q? 当然也有例外Q你可以参考API doc得到{案。下面是一个例子,它的功能是在屏q上昄Z按下键的键|界面非常单因此没有抓图。代码如下所C:
  
  //LowLevelMIDlet.java
  
  import javax.microedition.lcdui.Display;
  import javax.microedition.midlet.MIDlet;
  import javax.microedition.midlet.MIDletStateChangeException;
  
  /*
  * Created on 2004-6-24
  *
  * TODO To change the template for this generated file go to
  * Window - Preferences - Java - Code Style - Code Templates
  */
  
  /**
  * @author P2800
  *
  * TODO To change the template for this generated type comment go to Window -
  * Preferences - Java - Code Style - Code Templates
  */
  public class LowLevelMIDlet extends MIDlet
  {
  
  private Display display;
  private KeyCanvas keyCanvas;
  
  /*
  * (non-Javadoc)
  *
  * @see javax.microedition.midlet.MIDlet#startApp()
  */
  protected void startApp() throws MIDletStateChangeException
  {
  // TODO Auto-generated method stub
  display = Display.getDisplay(this);
  keyCanvas = new KeyCanvas();
  display.setCurrent(keyCanvas);
  
  }
  
  /*
  * (non-Javadoc)
  *
  * @see javax.microedition.midlet.MIDlet#pauseApp()
  */
  protected void pauseApp()
  {
  // TODO Auto-generated method stub
  
  }
  
  /*
  * (non-Javadoc)
  *
  * @see javax.microedition.midlet.MIDlet#destroyApp(boolean)
  */
  protected void destroyApp(boolean arg0) throws MIDletStateChangeException
  {
  // TODO Auto-generated method stub
  
  }
  
  }
  
  //KeyCanvas.java
  
  import javax.microedition.lcdui.Canvas;
  import javax.microedition.lcdui.Command;
  import javax.microedition.lcdui.CommandListener;
  import javax.microedition.lcdui.Displayable;
  import javax.microedition.lcdui.Graphics;
  
  /*
  * Created on 2004-6-25
  *
  * TODO To change the template for this generated file go to
  * Window - Preferences - Java - Code Style - Code Templates
  */
  
  /**
  * @author P2800
  *
  * TODO To change the template for this generated type comment go to Window -
  * Preferences - Java - Code Style - Code Templates
  */
  public class KeyCanvas extends Canvas implements CommandListener
  {
  private String key = "Press any key";
  
  /*
  * (non-Javadoc)
  *
  * @see javax.microedition.lcdui.Canvas#paint(javax.microedition.lcdui.Graphics)
  */
  protected void paint(Graphics g)
  {
  // TODO Auto-generated method stub
  g.setColor(255, 255, 255);
  g.fillRect(0, 0, getWidth(), getHeight());
  g.setColor(0, 0, 0);
  g.drawString(key, getWidth() / 2, getHeight() / 2, Graphics.TOP
  | Graphics.HCENTER);
  
  }
  
  public void keyPressed(int keyCode)
  {
  key = keyCode + " is pressed";
  repaint();
  }
  
  public void keyReleased(int keyCode)
  {
  key = keyCode + " is released";
  repaint();
  }
  
  /*
  * (non-Javadoc)
  *
  * @see javax.microedition.lcdui.CommandListener#commandAction(javax.microedition.lcdui.Command,
  *   javax.microedition.lcdui.Displayable)
  */
  public void commandAction(Command arg0, Displayable arg1)
  {
  // TODO Auto-generated method stub
  
  }
  
  }





]]>
Pook电子书阅d板块说明与目?/title><link>http://www.tkk7.com/gooogle/archive/2007/08/24/139026.html</link><dc:creator>3G工作?/dc:creator><author>3G工作?/author><pubDate>Fri, 24 Aug 2007 02:02:00 GMT</pubDate><guid>http://www.tkk7.com/gooogle/archive/2007/08/24/139026.html</guid><wfw:comment>http://www.tkk7.com/gooogle/comments/139026.html</wfw:comment><comments>http://www.tkk7.com/gooogle/archive/2007/08/24/139026.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.tkk7.com/gooogle/comments/commentRss/139026.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/gooogle/services/trackbacks/139026.html</trackback:ping><description><![CDATA[Pook电子书阅d板块说明与目?br><a >原文</a><br><br> <font size="3">Pook板块说明Q?br style="color: Blue;">成立q个专版的意图跟成立Wap Explorer览器的意图是一LQ同h希望可以带动3G视线的发展,qؓ手机软g爱好者提供一个自由,愉快的学习环境,<br style="color: Blue;">鉴于现在各大论坛无非都是提问Q入门等一些例子的论坛Q而没有一个完整的目板块q行讨论Q这LҎ_知识的零散造成了不是新手Q还是老手都没有系l的一个学习环境?br style="color: Blue;">我们3G论坛是要打破这个东ѝ?br><br>Pook目来源与我一个未完成的开源项?br><a >手机电子书阅读Y件基本框?/a><br>q个版本实现的功能有Q?br>1.一个相对完整的UI<br>2.d手机目录的功?br>3.阅读器的基本框架<br><br style="color: Red;">未完成的功能Q?br>1.d|络数据<br>2.书签<br>3.自定义目?br>4.d本机文g<br>5.保存文g<br>6.阅读讄{?br><br>q个专版可以学习到的知识有:<br>1.|络<br>2.低UI的设计,事g的处?br>3.d本机文gjsr的学?br>4.协议的设?br><br>协议的设计:<br>提出q个概念是因为,一个电子书Q相Ҏ说是有自q协议的,如果没有自己的一套协议?br>只是去读取文本文件则相对ȝ很多<br>比如Q如果单U读取文本的话,很隑֮玎ͼ目录Q书{理<br>如果有了协议Q我们可以做的事情有1.有目录,2.有书{,3Q可以插入一些图片,甚至是动画,音乐{?br><br style="color: Blue;">上面只是一个简单的xQ还需要大家补?br style="color: Blue;"><br style="color: Blue;">对了q个板块需要招聘版主,有需求的联系我,qq 43686904<br></font> <br><img src ="http://www.tkk7.com/gooogle/aggbug/139026.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/gooogle/" target="_blank">3G工作?/a> 2007-08-24 10:02 <a href="http://www.tkk7.com/gooogle/archive/2007/08/24/139026.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Wap Explorer的核心部?WML解释引擎http://www.tkk7.com/gooogle/archive/2007/08/22/138631.html3G工作?/dc:creator>3G工作?/author>Wed, 22 Aug 2007 07:45:00 GMThttp://www.tkk7.com/gooogle/archive/2007/08/22/138631.htmlhttp://www.tkk7.com/gooogle/comments/138631.htmlhttp://www.tkk7.com/gooogle/archive/2007/08/22/138631.html#Feedback2http://www.tkk7.com/gooogle/comments/commentRss/138631.htmlhttp://www.tkk7.com/gooogle/services/trackbacks/138631.htmlhttp://javaeye.5d6d.com/thread-150-1-1.html

Wap Explorer的核心部?WML解释引擎

今天也够郁闷的,论坛一直上不去Q不q也好,U这下有旉Q把Wap Explorer的核心部件剥d来,l大家一个思\?br>
Wap Explorer的核心部?WML解释引擎?br>
做Wap的最重要的解释解释引擎了Q不是wml QhtmlQ还是经q服务中转的数据也好Q最后来?br style="color: Blue;">手机客户端的时候都是要l过一个解释引擎,说白了就是手机客L可以识别的数据?br style="color: Blue;">据我所知道下面L的Wap手机览器的做法是:
1. oprea mini 是通过服务器中转的?br style="color: Blue;">2. UCWeb 也是通过服务中{Q不q有一部分是解释wml的,特别是解释html的是一定要通过服务器中转?br style="color: Blue;">3. 3GExplorer同上
4. 航vӞ以前主要是解释WMLQ不q最q新版本好像也是通过服务器中?br style="color: Blue;">5. Wap Explorer 全部解释wml引擎?br style="color: Blue;">6. 其他一些非L的浏览器Q基本上也是通过解释wml的,因ؓ他们自己本n没有实力架构服务器吧

下面看看我写的WML解释引擎。下面直接运行WMLParserQ我是采用输出文本的形式来解释的Q至于解释后生成UI以后再慢
慢详说?br style="color: Blue;">需要用到的只是Q以及包Q?kxml

下面是一D|心代?br>
/********************************************************************
 * 目名称                Q?lt;b>j2me学习 J2me Wap Explorer</b>            <br/>
 *
 * Copyright 2005-2006 Wuhua. All rights reserved </br>
 *
 * 本程序只用于学习目的Q不能用于商业目的。如有需要请联系作?br> ********************************************************************/
package org.fox.wap.parser;

import java.io.IOException;
import java.io.Reader;
import java.util.Hashtable;

import javax.microedition.lcdui.Choice;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.TextField;

import org.kxml2.io.KXmlParser;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

/**
 * <b>cdQWmlParser.java</b> </br> ~写日期: 2006-12-29 <br/>
 * E序功能描述QWML的解释器, 采用Kxml解释引擎?lt;br/>
 * 解释{略是,解释多少q制多?<br/>
 * Demo: <br/> Bug: <br/>
 *
 * E序变更日期 Q?lt;br/> 变更作?Q?lt;br/> 变更说明 Q?lt;br/>
 *
 * @author wuhua </br> <a href="mailto:rrq12345@163.com">rrq12345@163.com</a>
 */
public final class WmlParser implements Parser {

    private Hashtable attr = new Hashtable();

    private String url; //记录当前的URL

    /**
     * 当前标记,通过当前标记来创建Wap UI.
     */
    private String currentTag;

    /**
     * 创徏当前Align.
     */
    private String align;

    KXmlParser parser;

    private WmlParser(String url) {
        parser = new KXmlParser();
        this.url = url;

    }

    public static WmlParser getWmlParser(String url) {
        return new WmlParser(url);
    }

    /**
     * 解释wmlQƈ生成一pd的Wap GUI部g?比如遇到<a href="index.wml">首页</a> 则对于的生成一?br>     * HyperLink;
     *
     * @see WAPGUIFactory.createHyperLink(String text, String url, String algin) ;
     * @param in --
     *            通过Net获取InputStream, 或者是本地文g解释WML
     * @return Q- q回一个Vector集,里面包含了,Wap GUI
     * @throws XmlPullParserException Q-
     *             解释出错的时候抛出异?br>     * @throws IOException Q-
     *             d数据的时候抛出异?br>     */
    public final void parser() throws Exception {

        //logger.debug(System.currentTimeMillis());
        ;
        int eventType;

        eventType = parser.getEventType();
        while (eventType != XmlPullParser.END_DOCUMENT) {
            if (eventType == XmlPullParser.START_DOCUMENT) {
            } else if (eventType == XmlPullParser.END_DOCUMENT) {

            } else if (eventType == XmlPullParser.START_TAG) {
                parserStartTagImpl(parser);
            } else if (eventType == XmlPullParser.END_TAG) {
                parserEndTagImpl();
            } else if (eventType == XmlPullParser.TEXT) {
                parserTextImpl(parser);
            }
            eventType = parser.next();
        }
        Runtime.getRuntime().freeMemory();

        //logger.debug(System.currentTimeMillis());
        // return parts;
    }

    public void setInput(Reader reader) throws XmlPullParserException {

        parser.setInput(reader);

    }

    private void parserEndTagImpl() {
        String name = parser.getName();
        if (name.equals(WmlTag.P_TAG) || name.equals(WmlTag.BR_TAG)
                || name.equals(WmlTag.CARD_TAG)) {

            this.parserBrImpl();
        }

    }

    /**
     * 此方法是处理各个标记 但是有一个问题,是会出Cơ标?比如 <a> </a>的时候就会处理两ơbr
     *
     * @param parser
     */
    private void parserTextImpl(KXmlParser parser) {
        parserAlign();
        //logger.debug("Tag = " + currentTag + "  Text = "
        //    + this.parser.getText());
        if (currentTag.equals(WmlTag.P_TAG)) {
            System.out.println("处理 P Tag ");
            //paserStringPart(Style.PLAIN_SMALL, align, true);
        } else if (currentTag.equals(WmlTag.A_TAG)) {
            System.out.println("处理 A Tag ");
            //parserHyperLinkImpl(parser);
        } else if (currentTag.equals(WmlTag.BR_TAG)) {
            System.out.println("处理 BR Tag ");
            //paserStringPart(Style.PLAIN_SMALL, align, true);
        } else if (currentTag.equals(WmlTag.CARD_TAG)) {
            System.out.println("处理 CARD Tag ");
            //parserCardTag(parser);
        } else if (currentTag.equals(WmlTag.BIG_TAG)) {
            System.out.println("处理 BIG Tag ");
            //parserBigTag(parser);
        } else if (currentTag.equals(WmlTag.U_TAG)) {
            System.out.println("处理 U Tag ");
            //parserUTag(parser);
        } else if (currentTag.equals(WmlTag.EM_TAG)) {
            System.out.println("处理 EM Tag ");
            //parserEmTag(parser);
        } else if (currentTag.equals(WmlTag.INPUT_TAG)) {
            System.out.println("处理 INPUT Tag ");
            //parserInputTag();
        } else if (currentTag.equals(WmlTag.SELECT_TAG)) {
            System.out.println("处理 SELECT Tag ");
            //parserSelectTag();
        } else if (currentTag.equals(WmlTag.OPTION_TAG)) {
            System.out.println("处理 OPTION_TAG ");
            //parserOptionTag();
        } else {
            System.out.println("处理 String 内容 ");
            //paserStringPart(Style.PLAIN_SMALL, align, true);
        }

        currentTag = WmlTag.UNKNOW;

    }

    /**
     * 处理囄昄问题,q里要处理图片的相对路径问题
     *
     */
    private void parserImgTag() {

    }

    private void parserOptionTag() {

    }

    /**
     * 处理Select标记
     *
     */
    private void parserSelectTag() {

    }

    /**
     * 处理InputTag
     *
     */
    private void parserInputTag() {

    }

    private void parserEmTag() {

    }

    private void parserUTag() {

    }

    /**
     * 此方法是l制Q大字体时候用的?br>     *
     * @param parser
     */
    private void parserBigTag() {

    }

    private void parserCardTag() {

    }

    /**
     * 处理<br/>标记 比如: -----<br/> <br/> ------ 则创建StringPart("---------")q且设计换行<br/>
     * 换行的实现是QPart.setNextRow(true);
     *
     * @param parser2
     */
    private void parserBrImpl() {

    }

    /**
     * 处理String的显C?paintMainform();q个必须攑֜当textQ或者是UI存在的时候才可以q行更新
     *
     * @param font
     *            TODO
     * @param align
     *            TODO
     * @param nextRow
     *            TODO
     * @param parser2
     */
    private void paserStringPart(Font font, String align, boolean nextRow) {

        attr.clear();
    }

    /**
     * 处理HyperLink,q生成HyperLink控g
     *
     * @param parser
     */
    private void parserHyperLinkImpl(KXmlParser parser) {

        attr.clear();

    }

    private void parserAlign() {

    }

    /**
     * 解释Wap标记,q把属性保存到attr
     *
     * @param parser
     */
    private void parserStartTagImpl(KXmlParser parser) {

    }

    public Object getResult() {
        return null;
    }

}


源代码里面具体可以运行mainc,可以看到结果了
有不明白的地方到q里讨论?br style="color: Red;">




]]>
W一步: Wap Explorer原始资料整理http://www.tkk7.com/gooogle/archive/2007/08/22/138562.html3G工作?/dc:creator>3G工作?/author>Wed, 22 Aug 2007 03:41:00 GMThttp://www.tkk7.com/gooogle/archive/2007/08/22/138562.htmlhttp://www.tkk7.com/gooogle/comments/138562.htmlhttp://www.tkk7.com/gooogle/archive/2007/08/22/138562.html#Feedback4http://www.tkk7.com/gooogle/comments/commentRss/138562.htmlhttp://www.tkk7.com/gooogle/services/trackbacks/138562.html
地址是:http://javaeye.5d6d.com/forum-47-1.html


W一步: Wap Explorer原始资料整理

q个是我设计q个览器的W一步:

昨天完成了一个小E序Q所以今天有比较I闲了,前阵子自p计了j2me的UIQ所以对在一手机d上绘制UI也算是比较有心得的。所以今天突发奇惻I不如自己定制一个wap览器来玩下?br> 自己以前也做qwap|站Q所以也知道它的大概个标{,x通过xml包解释这些标{不难,现在把我的个人想法发到这里来Q希望各位爱好者提供徏议?br> 1Q设计一个可l装的UI以提供对xml解释后的支持。(基本上是采用以前的UI设计方式Q?br> 2Q?采用|站行的xml解释包,对wmlq行解释Q主要构思是采用一?l表q行数据l构的保存?br> 3Qsession机制Q这斚w是个隑ֺQ记得以前设计wap的时Q在试的时候发现有些手机ƈ不支持session。个人想法是在手Z保存一个sessionIdQ然后发送这个IdQƈ时刻保持q个Id与服务器的一致?br> 4Q解释机Ӟ是否是一边解释一ҎC,q是全部下蝲完,解释完在昄Q在技术上的难度来ԌW一个无疑是比较困难的,但是W二个在用户体验斚w存在比较大的~陷?br> 5Q缓存机Ӟ主要隄是记录用L操作Q以及判断服务器内容是否改变Q从而决定是否重C载,q是直接从缓存中获取?br>
以上几点我只对第一Ҏ把握Q第2个估计看下文档就ok了,其他斚w我还没有比较多的认识

W二步:Wap Explorer V1.0 && 手机开发前?
哈哈。我的wap览?.0版本的出来了?br> 解释下功能先
1.调整字体大小
2.调整界面颜色
3.可以定制自己的首c?br> 4.可以览公司很简单的wap面?br> 5.其他

未实现的功能有:
1QWapPage控制问题Q对一些基本的控制未完成。比如数据果多。怎么h览才可以实现分页面?br> 2Q解释复杂页面问题。不能解释一些不规则的wapQ比较包含特D符合,或者其他ؓ见果的。wap面比较要很严}才可以?br> 3Q一些功能ؓ能实玎ͼ比如下蝲囄Q保存图片到本机根保存网,收藏夹,数据攉Q比如记录用L操作习惯Q实现相应的规则Q再者就是,记录表单数据Q用h作记录等Q?br> 4. 数据下蝲q度条未实现?br> 5.。还有很多很多。想到再发上来?br>
设计的Ml构是:
自己实现了一个UI?br> 整体采用MVCl构。具体可参照源代码。我惛_其他的j2me应用也是有参考h值的?br> 联网采用多线E。相信很多用户对于多U程~程印象也是很深ȝ。线E怎么h界面打交道我想也是个很大的学问。我在这个版本的E序中我觉得对这D代码也是有参考h值的?br> 最后是惌ZQ关于j2me的前途问题。j2me出来的时间也久了。但对于商业应用来说是比较少的(Z游戏Q我见过比较成功的应用别上都是一些类型QQ聊天E序。想UCWEB则是一个用kjava写的|页客户端,听过挺多人用的?
像opera公司也出了个mini的wap览器,我下载用了下Q感觉也很一边,特别是这几天地震把光U给搞坏了。所以你用mini来上|也是很慢的。我 估计代码了肯定是做了代理服务器,先把用户h发送到那边的服务器Q然后在发送到客户端,q样对于客户端来说。做的工作就了很多?br> 不管怎么样都好。对于企业应用来说。ƈ不是想sun官方所期待的那栗现在window mobile发展势头很多。它倡导的是׃生活Q对于娱乐方面的功能来说。我想现在能出其左右的是没有的?br> 不过是那个技术,那个体系相对于程序员来说Q意义也不大Q我们只需要把握好基础的东ѝ其他的其实也就没什么了。说白了Q真是一个工兯已。我们现在不~少工具Q只是缺灵感,~少idea?br> 对于{划一个品。创C个品,有时候我们是想不到这么多的。还真的需要有专门的h来做。他可以不懂技术。他只懂需求就行了?br> 昨天根市场部的同事去吃饭。发现做市场也是件很辛苦的事情,他要考虑的事情其实比我们做技术的人更多。压力也更大。都说我们拿不到什么钱Q其实也是有原因 的。我们只需要按照需求来做。比如我们的技术能力达C那个层次。如果我们不x的太? 的话Q我们大可不必思考改怎么做,只需要知道这样做p了。做市场׃同了。他要考虑Q我产品做出来有没有收益Q还要找技术。我q个产品能不能做。一步步 都要设计好需求,变成他要M解用户需求,又要了解技术开发者的需求。。。。。。?

哈哈。说了这么多废话。说话正题了? 对于Wap Explorer V1.0Q大家可以热烈的讨论。希望爱好手机开发的朋友能多交流?br> q有我们攑ּ手脚讨论手机开发的前途j2me也好Qmobile也ŞQ再者就是liunx或者是sysmain{等。能说的都说出来吧?br>
现在暂时不把源代码发布上来,讨论热烈的话Q或者迟点再发几个截图上来。根代码? 大家期待吧。。。。。。。?br>

W三? Wap Explorer 囄预览

前几天说要设计一个Wap览器的Q经q上个礼拜天的设计,基本已经把UI的框架搭建出来了。不q对于wap的Wml解释器还没写Q一来这斚w比较隑ֆQ没有实践过Q二来这几天公司有事情忙。所以就停了下来Q不q趁着今天下午有空Q我发些设计好的截图l大家看?br> 在UI里我实现了对字体的控制已l对皮肤Q所谓的皮肤只是换换颜色而已Q的控制
艑֏惜只能发3个附件?
{1E0DF53D-767F-4C53-93F1-74D307C3E874}0.jpg
描述:
文g大小: 17 KB
看过? 文g被下载或查看 161 ?/font>

{1E0DF53D-767F-4C53-93F1-74D307C3E874}0.jpg
下蝲
{58DB28A3-11CB-4F4A-B864-B9282BF44468}0.jpg
描述:
文g大小: 13 KB
看过? 文g被下载或查看 65 ?/font>

{58DB28A3-11CB-4F4A-B864-B9282BF44468}0.jpg
下蝲
{D1C1BED4-7807-4D6A-A6E5-832166EC8ADA}0.jpg
描述:
文g大小: 10 KB
看过? 文g被下载或查看 59 ?/font>

{D1C1BED4-7807-4D6A-A6E5-832166EC8ADA}0.jpg
下蝲


W?步: Wap Explorer 初步设计源代?br>? J2ME
刚才在我的Q里面讨Z下关于Wap Explorer的开发。里面的朋友我把开发的q程写到blogQ以方便学习与讨论。现在我把我写好的代码公布出来。ƈ说明我的设计l构。(在此说明下,对于里面的UI设计我前面写q很多文章)
一个UI包-Q包括了所有的界面实现接口{,Wap的显CZ主要是通过q个包里面的东西划出来的?br> 里面有两个核心的东西QPartQ-控g接口Q?PanelQ-Form接口?br> 比如链接,TextFielQSoftButton{都是PartQ?弹出H口QFormPanel都是Panel?br> 一个Wap引擎。这部分未实玎ͼ{大家参考。我参考过jxml{开源的东西Q觉得基本上可以实现自己的功能,不过我还是想和大家写一个,一来可以相互学习提高。二来也可以多了解下关于xmlQ这斚w我很菜)?br>
一个网l连接引擎-Q主要是下蝲数据用的?br> 一个RMS包。主要是用来保存用户数据的?br>
对了。在源代码里之看wuhua包下面的p了,其他的都是一些网站找来的代码

q里q有个问题是Q怎么样可以Wap引擎跟UI跟网l连接引擎很好的l合呢?br> 提出一些参考:
1Q一边下载,一边解释,一ҎC(q是最完美的方案,比如firefox是q样Q这样对操作有大量图片资源的时候有很好的体验。我们可以先昄出文字,然后在一边下载图片?br> 2Q全部下载完在解释,昄Q相对与上面的方案来_q是比较Ҏ的。但是显CZ很慢。给用户造成很不好的体验?br>
q有很多的其他要求。。。。。。。?/font>






]]>
整理了下MGtalk的源代码http://www.tkk7.com/gooogle/archive/2007/08/21/138359.html3G工作?/dc:creator>3G工作?/author>Tue, 21 Aug 2007 05:58:00 GMThttp://www.tkk7.com/gooogle/archive/2007/08/21/138359.htmlhttp://www.tkk7.com/gooogle/comments/138359.htmlhttp://www.tkk7.com/gooogle/archive/2007/08/21/138359.html#Feedback0http://www.tkk7.com/gooogle/comments/commentRss/138359.htmlhttp://www.tkk7.com/gooogle/services/trackbacks/138359.htmlxQ我们做无线开发的不就图个3G的到来,可以一展n手吗Q不q要?G真的来了Q你准备好了吗?
Gtalk 你听说过吧,而采用J2me设计的Gtalk你听说过吗?
come on?br>
下面是源代码Q我试了下Q发Cq不能链接到google的服务器Q有旉Q我研究下。发些体会,如果有可能,也想l织下大家开发一个IM工具?br>特别喜欢q样的感?

源代码下?br>


]]>
一个经典的J2ME|络d囄例子http://www.tkk7.com/gooogle/archive/2007/08/20/138074.html3G工作?/dc:creator>3G工作?/author>Mon, 20 Aug 2007 03:37:00 GMThttp://www.tkk7.com/gooogle/archive/2007/08/20/138074.htmlhttp://www.tkk7.com/gooogle/comments/138074.htmlhttp://www.tkk7.com/gooogle/archive/2007/08/20/138074.html#Feedback0http://www.tkk7.com/gooogle/comments/commentRss/138074.htmlhttp://www.tkk7.com/gooogle/services/trackbacks/138074.htmlhttp://javaeye.5d6d.com/thread-133-1-1.html

一个经典的J2ME|络d囄例子

Z推动本论坛的发展Q获取更多的用户Q所以小弟今天花?个小时的旉来构Z一个网站的d|络囄的例子,
里面的知识包括线E,HTTPQ画布等
U程是ؓ了解册取网l图片过慢的时候,l用户友好的提示Q以增强用户友好?br>HTTP是从|络d囄Qƈ把资源{换成可视的图片展C给用户看?br>d的意囑ְ更明显了。显C图片,看看代码Q先看看囄?br>昄提示信息Q图片下载中?br>

下蝲完毕后的囄


下面是源代码拿主要的来说
U程d囄Q读取策略是Q{换byte为可视的ImageQ当Image构徏出来后,重回d
/********************************************************************
* 目名称 Q?lt;b>j2me学习 J2me Wap Explorer</b> <br/>
*
* Copyright 2005-2006 Wuhua. All rights reserved </br>
*
* 本程序只用于学习目的Q不能用于商业目的。如有需要请联系作?br> ********************************************************************/
package org.fox.image;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;

import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;
import javax.microedition.lcdui.Image;

/**
* <b>cdQImageHandler.java</b> </br> ~写日期: 2007-8-17 <br/> E序功能描述Q?<br/> Demo:
* <br/> Bug: <br/>
*
* E序变更日期 Q?lt;br/> 变更作?Q?lt;br/> 变更说明 Q?lt;br/>
*
* @author wuhua </br> <a href="mailto:rrq12345@163.com">rrq12345@163.com</a>
*/
public class ImageHandler implements Runnable {


private HttpConnection c = null;
private InputStream is = null;
private ByteArrayOutputStream baos = new ByteArrayOutputStream();
private Image image = null;
private String iamgeUrl;
private ImageCanvas imageCanvas;
private ImagePart imagePart;

private ImageHandler(String imageUrl,ImagePart imagePart,ImageCanvas imageCanvas){
this.iamgeUrl = imageUrl;
this.imagePart = (ImagePart)imagePart;
this.imageCanvas = imageCanvas;
new Thread(this).start();
}

public static ImageHandler getIamgeHandler(String imageUrl,
ImagePart imagePart,ImageCanvas imageCanvas){
return new ImageHandler(imageUrl,imagePart,imageCanvas);
}
/* 获得|络囄 */
public Image handlerIamge() throws Exception{
byte[] imageData = null;
try {
c = (HttpConnection) Connector.open(iamgeUrl);
is = c.openInputStream();

int ch = 0;
while ((ch = is.read()) != -1) {
baos.write(ch); // d|络囄
}
} catch (IOException ioe) {
throw new IOException("Connect Error");
}

imageData = baos.toByteArray(); // 把图片{换成字节
try {
image = Image.createImage(imageData, 0, imageData.length);
} catch (NullPointerException e) {
throw new NullPointerException("NullPointerException");
} catch (IllegalArgumentException e) {
throw new IllegalArgumentException("IllegalArgumentException");
}

return image;
}

public void run() {
try {
imagePart.setImage(handlerIamge());
imageCanvas.repaint();
} catch (Exception e) {
e.printStackTrace();
}

}
}

最主要的就是这个类了,其他都是一些辅助的Q具体可以参考源代码?br>
我这个工E是在Eclipse + EclipseMe开发的?br>
源代码在原文里面?br>




]]>
SMSLottery--一个打博彩的短信目http://www.tkk7.com/gooogle/archive/2007/08/17/137464.html3G工作?/dc:creator>3G工作?/author>Fri, 17 Aug 2007 01:45:00 GMThttp://www.tkk7.com/gooogle/archive/2007/08/17/137464.htmlhttp://www.tkk7.com/gooogle/comments/137464.htmlhttp://www.tkk7.com/gooogle/archive/2007/08/17/137464.html#Feedback0http://www.tkk7.com/gooogle/comments/commentRss/137464.htmlhttp://www.tkk7.com/gooogle/services/trackbacks/137464.html原文出处Q?a >http://javaeye.5d6d.com/thread-114-1-1.html

前段旉Q有一个好朋友托我帮他开发一个很单的博彩目Q他说先做个单能实现功能的项目给他,然后他拿l他客户Qƈ视图说服他合作。那D|间公司特别忙Q没办法Qؓ了不让朋友失望就在礼?的时候帮他搞了一个,后来׃U种原因Q好像就没了下文?br>我看把目贡献出来供大家学习之用,看看完成一个项目到底需要做些什么准备吧Q希望高手指对{?br>



查看U分{略说明
附g
2007-8-16 16:14
  下蝲ơ数: 3
src.rar (3.98 KB)
 




适中xJ2ME



]]>
短信发送机的实?/title><link>http://www.tkk7.com/gooogle/archive/2007/05/25/120094.html</link><dc:creator>3G工作?/dc:creator><author>3G工作?/author><pubDate>Fri, 25 May 2007 13:32:00 GMT</pubDate><guid>http://www.tkk7.com/gooogle/archive/2007/05/25/120094.html</guid><wfw:comment>http://www.tkk7.com/gooogle/comments/120094.html</wfw:comment><comments>http://www.tkk7.com/gooogle/archive/2007/05/25/120094.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.tkk7.com/gooogle/comments/commentRss/120094.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/gooogle/services/trackbacks/120094.html</trackback:ping><description><![CDATA[q几天由于公司的需要,见到有些同事用手机刷卡,觉得很痛苦?br> 今天早上回来׃生了一个想法,不如用j2me实现一个短信发送机的程序,然后只需要填入几个数字就可以实现短信的自动发送等?br> l过大概2个小时的奋斗Q终于写好了Qƈ且在多部不同品牌的机器运行良好,而且很实用,不过可以有些手机需要数字签名,否则的话Q会不停的提CZ。郁P不过索爱跟三星就可以讄?br> 现在公布源代码跟按照文g<br> 先让大家看个?br>  <br> <br> <div id="2swqyk8" class="code_title">java 代码</div> <div id="q6cmoym" class="dp-highlighter"> <ol start="1" class="dp-j"> <li id="aa2o4ks" class="alt">/******************************************************************** </li> <li id="4oq68og" class=""> * 目名称 Q?strong>j2me学习</strong> <br> </li> <li id="u4e8uwc" class="alt"> * </li> <li id="m88c88y" class=""> * Copyright 2005-2006 Wuhua. All rights reserved </li> <li id="qaks4m4" class="alt"> ********************************************************************/ </li> <li id="agoyy2w" class="">package org.fox.sms; </li> <li id="28ysskm" class="alt"> <br> </li> <li id="608iegg" class="">import java.io.IOException; </li> <li id="k42myau" class="alt"> <br> </li> <li id="iq2askk" class="">import javax.microedition.io.Connector; </li> <li id="yqaumuc" class="alt">import javax.microedition.lcdui.Command; </li> <li id="meyskgi" class="">import javax.microedition.lcdui.CommandListener; </li> <li id="w48wyog" class="alt">import javax.microedition.lcdui.Displayable; </li> <li id="emi2wqg" class="">import javax.microedition.lcdui.Form; </li> <li id="coii444" class="alt">import javax.microedition.lcdui.TextField; </li> <li id="sey442g" class="">import javax.wireless.messaging.MessageConnection; </li> <li id="iak24ku" class="alt">import javax.wireless.messaging.TextMessage; </li> <li id="we2iqya" class=""> <br> </li> <li id="kmgsi2s" class="alt">/** </li> <li id="g4kcu4e" class=""> * <strong>cdQSMSForm.java</strong> <br> </li> <li id="44u4o8q" class="alt"> * ~写日期: 2007-5-25 <br> </li> <li id="66q4iaa" class=""> * E序功能描述Q?<br> </li> <li id="yyacm8m" class="alt"> * Demo: <br> </li> <li id="iuco4q6" class=""> * Bug: <br> </li> <li id="w8suwkm" class="alt"> * </li> <li id="ysksca4" class=""> * E序变更日期 Q?br> </li> <li id="ocwowqe" class="alt"> * 变更作?Q?br> </li> <li id="kmweyii" class=""> * 变更说明 Q?br> </li> <li id="s66wiik" class="alt"> * </li> <li id="2gq444m" class=""> * @author wuhua <br> <a href="mailto://rrq12345@163.com/" _fcksavedurl="mailto:rrq12345@163.com">rrq12345@163.com</a> </li> <li id="ee8ii84" class="alt"> */ </li> <li id="skk4aim" class="">public class SMSForm extends Form </li> <li id="2ssuwwg" class="alt">implements CommandListener, Runnable{ </li> <li id="cm8y88s" class=""> <br> </li> <li id="wmo84uq" class="alt"> Command send = new Command("发?, Command.OK, 1); </li> <li id="8oyog48" class=""> Command back = new Command("q回", Command.BACK, Command.BACK); </li> <li id="mcsk8uw" class="alt"> TextField phone; </li> <li id="oqssmee" class=""> TextField content; </li> <li id="i8m444w" class="alt"> TextField num; </li> <li id="yqaiqa6" class=""> TextField timeOut; </li> <li id="gqqi8i8" class="alt"> TextField text; </li> <li id="iq4wmmu" class=""> String serverPort = "5000";// getAppProperty("serverPort"); </li> <li id="cuu8oqq" class="alt"> int sms; </li> <li id="4weog44" class=""> <br> </li> <li id="ksm4k8c" class="alt"> Menu menu; </li> <li id="q2y8yww" class=""> public SMSForm(Menu m) { </li> <li id="6sick8k" class="alt"> super("短信发送机"); </li> <li id="ksc2ckk" class=""> <br> </li> <li id="gcm28qa" class="alt"> setCommandListener(this); </li> <li id="i8k4yak" class=""> text = new TextField("状?, "{待发送短?, 20, TextField.ANY); </li> <li id="oygac6y" class="alt"> phone = new TextField("L", "XXXX:", 20, TextField.NUMERIC); </li> <li id="gygyskc" class=""> content = new TextField("指o", "777", 10, TextField.NUMERIC); </li> <li id="2qaaai4" class="alt"> num = new TextField("条数", "23", 10, TextField.NUMERIC); </li> <li id="gq6ueo8" class=""> timeOut = new TextField("旉?, "10", 10, TextField.NUMERIC); </li> <li id="mew6usu" class="alt"> this.append(phone); </li> <li id="qii6k48" class=""> this.append(content); </li> <li id="u2moq4y" class="alt"> this.append(num); </li> <li id="iu2iqce" class=""> this.append(timeOut); </li> <li id="2w44e0m" class="alt"> this.append(text); </li> <li id="8mmc4i4" class=""> this.addCommand(send); </li> <li id="ssckucm" class="alt"> this.addCommand(back); </li> <li id="cekwuoe" class=""> this.menu = m; </li> <li id="mmoqaaa" class="alt"> <br> </li> <li id="css48wq" class=""> } </li> <li id="mowowwo" class="alt"> <br> </li> <li id="keme8sm" class=""> public void commandAction(Command c, Displayable arg1) { </li> <li id="808accc" class="alt"> if(c == send){ </li> <li id="km4mowi" class=""> new Thread(this).start(); </li> <li id="4aa4o4q" class="alt"> this.removeCommand(send); </li> <li id="w4kukku" class=""> }else{ </li> <li id="4yy044u" class="alt"> SMSSenderMIDlet.display.setCurrent(menu); </li> <li id="gicu2ku" class=""> } </li> <li id="u4wooo8" class="alt"> <br> </li> <li id="cmw4m8u" class=""> } </li> <li id="4q08k4q" class="alt"> <br> </li> <li id="yya2wqi" class=""> public void run() { </li> <li id="4yiac8u" class="alt"> int num = Integer.parseInt(this.num.getString()); </li> <li id="4giiqaa" class=""> int sleep = Integer.parseInt(this.timeOut.getString()); </li> <li id="ug8cc4u" class="alt"> while(true){ </li> <li id="ws46s2q" class=""> //System.out.println(sleep); </li> <li id="6mwoyo4" class="alt"> if(sms < num){ </li> <li id="2kmwggw" class=""> senderImpl(); </li> <li id="ygoey8q" class="alt"> } </li> <li id="yqa4ykc" class=""> else{ </li> <li id="c2emoy8" class="alt"> <br> </li> <li id="cuu8iu4" class=""> SMSSenderMIDlet.display.setCurrent(menu); </li> <li id="oow4ua4" class="alt"> break; </li> <li id="ck4y4uk" class=""> } </li> <li id="4kk8ga4" class="alt"> try { </li> <li id="cumeyis" class=""> //System.out.println(sleep); </li> <li id="qaik48w" class="alt"> Thread.sleep(sleep*1000); </li> <li id="kckmm28" class=""> //System.out.println(sleep); </li> <li id="6ygqa4m" class="alt"> } catch (InterruptedException e) { </li> <li id="cikk44o" class=""> e.printStackTrace(); </li> <li id="wyy884a" class="alt"> } </li> <li id="a48u8ka" class=""> <br> </li> <li id="ooaasac" class="alt"> } </li> <li id="mkco4uk" class=""> <br> </li> <li id="e4eeyo4" class="alt"> <br> </li> <li id="is846c4" class=""> } </li> <li id="we2wgqg" class="alt"> <br> </li> <li id="goqqq48" class=""> private void senderImpl() { </li> <li id="meewy2w" class="alt"> String addr = "sms://" + phone.getString(); </li> <li id="a2scwue" class=""> System.out.println("发送地址?" + addr); </li> <li id="giaqauu" class="alt"> MessageConnection conn; </li> <li id="84egowy" class=""> try { </li> <li id="kaac2ai" class="alt"> conn = (MessageConnection) Connector.open(addr); </li> <li id="ksue2qs" class=""> TextMessage msg = (TextMessage) conn </li> <li id="qikeygg" class="alt"> .newMessage(MessageConnection.TEXT_MESSAGE); </li> <li id="qi2kkow" class=""> msg.setPayloadText(content.getString()); </li> <li id="qyqacke" class="alt"> conn.send(msg); </li> <li id="iqqaqqq" class=""> conn.close(); </li> <li id="a2aacy4" class="alt"> sms++; </li> <li id="asamo2y" class=""> //text = sms+""; </li> <li id="y4isicq" class="alt"> text.setString("成功发? +this.num.getString() + "W? + sms + "?); </li> <li id="8oiyyoy" class=""> <br> </li> <li id="yy6uwyg" class="alt"> } catch (IOException e) { </li> <li id="0886m4k" class=""> // TODO 自动生成 catch ? </li> <li id="skcs84q" class="alt"> e.printStackTrace(); </li> <li id="ikckwwm" class=""> } </li> <li id="ee6ecuu" class="alt"> } </li> <li id="uuowqgi" class=""> <br> </li> <li id="k0a4ee8" class="alt">} </li> <li id="uc2giss" class=""> <br> </li> <li id="qgq6uyi" class="alt"> <br> </li> <li id="eey24gy" class=""> <br> </li> <li id="u6kug8k" class="alt">/******************************************************************** </li> <li id="y4gyqas" class=""> * 目名称 Q?strong>j2me学习</strong> <br> </li> <li id="6cooaa4" class="alt"> * </li> <li id="gog28sg" class=""> * Copyright 2005-2006 Wuhua. All rights reserved </li> <li id="2eeowo6" class="alt"> ********************************************************************/ </li> <li id="s4mmewy" class="">package org.fox.sms; </li> <li id="meqisas" class="alt"> <br> </li> <li id="mu6woia" class="">import javax.microedition.lcdui.Command; </li> <li id="skcsu4s" class="alt">import javax.microedition.lcdui.CommandListener; </li> <li id="08e8ssc" class="">import javax.microedition.lcdui.Displayable; </li> <li id="ikk88mk" class="alt">import javax.microedition.lcdui.List; </li> <li id="6qqqysg" class=""> <br> </li> <li id="aa8wyoy" class="alt">/** </li> <li id="ssmcewo" class=""> * <strong>cdQMenu.java</strong> <br> </li> <li id="i6qyk4y" class="alt"> * ~写日期: 2007-5-25 <br> </li> <li id="cwgiaqa" class=""> * E序功能描述Q?<br> </li> <li id="uce2yyq" class="alt"> * Demo: <br> </li> <li id="8ygiisi" class=""> * Bug: <br> </li> <li id="gqqa2os" class="alt"> * </li> <li id="4qyseum" class=""> * E序变更日期 Q?br> </li> <li id="4g2ckus" class="alt"> * 变更作?Q?br> </li> <li id="ymwwwgs" class=""> * 变更说明 Q?br> </li> <li id="em4amuw" class="alt"> * </li> <li id="8ascu4k" class=""> * @author wuhua <br> <a href="mailto://rrq12345@163.com/" _fcksavedurl="mailto:rrq12345@163.com">rrq12345@163.com</a> </li> <li id="6qiqi44" class="alt"> */ </li> <li id="6eq4kck" class="">public class Menu extends List implements CommandListener{ </li> <li id="66kkemw" class="alt"> <br> </li> <li id="a4gyyk6" class=""> Command send = new Command("打开发送机", Command.OK, 1); </li> <li id="qsiicue" class="alt"> public Menu(String title, int listType) { </li> <li id="6ccemyw" class=""> super(title, listType); </li> <li id="2o44s4a" class="alt"> <br> </li> <li id="2c4qcuo" class=""> this.append("打开发送机", null); </li> <li id="6q8aaii" class="alt"> this.addCommand(send); </li> <li id="ceo44mk" class=""> this.setCommandListener(this); </li> <li id="8asisuu" class="alt"> } </li> <li id="2oy6mwi" class=""> <br> </li> <li id="c4a4gq4" class="alt"> public void commandAction(Command c, Displayable d) { </li> <li id="6uo4saa" class=""> System.out.println("dfsdfsd"); </li> <li id="euewcuu" class="alt"> if(c == send){ </li> <li id="sc24eo4" class=""> SMSSenderMIDlet.display.setCurrent(new SMSForm(this)); </li> <li id="sy24sk2" class="alt"> }else{ </li> <li id="q2aaukw" class=""> <br> </li> <li id="kc44iqi" class="alt"> } </li> <li id="oeem668" class=""> } </li> <li id="w4e2iia" class="alt"> <br> </li> <li id="mo8yoi8" class="">} </li> <li id="ayqqk64" class="alt"> <br> </li> <li id="cqgik48" class=""> <br> </li> <li id="w2oiq84" class="alt">/******************************************************************** </li> <li id="ecoewg4" class=""> * 目名称 Q?strong>j2me学习</strong> <br> </li> <li id="86c8iig" class="alt"> * </li> <li id="s44ysis" class=""> * Copyright 2005-2006 Wuhua. All rights reserved </li> <li id="k2u4gqa" class="alt"> ********************************************************************/ </li> <li id="yyyy622" class="">package org.fox.sms; </li> <li id="yickekw" class="alt"> <br> </li> <li id="ii4ewo4" class="">import java.io.IOException; </li> <li id="muw6aca" class="alt"> <br> </li> <li id="oygiykk" class="">import javax.microedition.io.Connector; </li> <li id="gwmwmog" class="alt">import javax.microedition.lcdui.Choice; </li> <li id="2eqm4qy" class="">import javax.microedition.lcdui.Display; </li> <li id="u4uooq4" class="alt">import javax.microedition.midlet.MIDlet; </li> <li id="6uoia4w" class="">import javax.microedition.midlet.MIDletStateChangeException; </li> <li id="oqiue2g" class="alt">import javax.wireless.messaging.MessageConnection; </li> <li id="cumm2sc" class=""> <br> </li> <li id="a2mgeey" class="alt">/** </li> <li id="eww848q" class=""> * <strong>cdQSMSSenderMIDlet.java</strong> <br> </li> <li id="4mewwoo" class="alt"> * ~写日期: 2007-5-25 <br> </li> <li id="4wy48kc" class=""> * E序功能描述Q?<br> </li> <li id="yumuk2m" class="alt"> * Demo: <br> </li> <li id="g2wwqqi" class=""> * Bug: <br> </li> <li id="y6eg8mg" class="alt"> * </li> <li id="yqskcmc" class=""> * E序变更日期 Q?br> </li> <li id="0uuyy4a" class="alt"> * 变更作?Q?br> </li> <li id="cew2gg4" class=""> * 变更说明 Q?br> </li> <li id="akk4aao" class="alt"> * </li> <li id="ascww24" class=""> * @author wuhua <br> <a href="mailto://rrq12345@163.com/" _fcksavedurl="mailto:rrq12345@163.com">rrq12345@163.com</a> </li> <li id="aqsc2is" class="alt"> */ </li> <li id="ugamceu" class="">public class SMSSenderMIDlet extends MIDlet { </li> <li id="mowygag" class="alt"> private MessageConnection sconn; </li> <li id="syssm8e" class=""> <br> </li> <li id="sog84aa" class="alt"> public static Display display; </li> <li id="qewe6uo" class=""> public SMSSenderMIDlet() { </li> <li id="ck24ces" class="alt"> <br> </li> <li id="wgwgosk" class=""> <br> </li> <li id="c44oiqk" class="alt"> } </li> <li id="ukcewgo" class=""> <br> </li> <li id="gkcuwoi" class="alt"> protected void destroyApp(boolean arg0) throws MIDletStateChangeException { </li> <li id="kaisia2" class=""> try { </li> <li id="umggq64" class="alt"> sconn.close(); </li> <li id="4u8y4wu" class=""> } catch (IOException e) { </li> <li id="8usuuec" class="alt"> // TODO 自动生成 catch ? </li> <li id="ickw2c4" class=""> e.printStackTrace(); </li> <li id="g4e8www" class="alt"> } </li> <li id="ec2oasa" class=""> <br> </li> <li id="e6s44mm" class="alt"> } </li> <li id="ssas6qg" class=""> <br> </li> <li id="6ke4c4g" class="alt"> protected void pauseApp() { </li> <li id="wkc64gy" class=""> <br> </li> <li id="goo6sw4" class="alt"> <br> </li> <li id="kskm2ac" class=""> } </li> <li id="y28kkmc" class="alt"> <br> </li> <li id="8c8o6cu" class=""> protected void startApp() throws MIDletStateChangeException { </li> <li id="yo6ke8y" class="alt"> String serverPort = "5000"; </li> <li id="gqq88k4" class=""> try { </li> <li id="kukcak6" class="alt"> sconn = (MessageConnection) Connector.open("sms://:" + serverPort); </li> <li id="84i2gmy" class=""> } catch (IOException e) { </li> <li id="4k4qm6o" class="alt"> <br> </li> <li id="c44uuu6" class=""> e.printStackTrace(); </li> <li id="eykccek" class="alt"> } </li> <li id="ioqi2wy" class=""> <br> </li> <li id="c8qk8qi" class="alt"> Menu m = new Menu("短信发送机",Choice.IMPLICIT); </li> <li id="kwiqsya" class=""> display = Display.getDisplay(this); </li> <li id="8ikc42w" class="alt"> display.setCurrent(m); </li> <li id="e44q8uk" class=""> <br> </li> <li id="0o2icks" class="alt"> } </li> <li id="mysccu2" class=""> <br> </li> <li id="ekseeuo" class="alt">} </li> </ol> </div> <br> <br><img src ="http://www.tkk7.com/gooogle/aggbug/120094.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/gooogle/" target="_blank">3G工作?/a> 2007-05-25 21:32 <a href="http://www.tkk7.com/gooogle/archive/2007/05/25/120094.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>重构Wap Explorer 使之可以成ؓ一个商业品?http://www.tkk7.com/gooogle/archive/2007/05/23/119298.html3G工作?/dc:creator>3G工作?/author>Wed, 23 May 2007 00:58:00 GMThttp://www.tkk7.com/gooogle/archive/2007/05/23/119298.htmlhttp://www.tkk7.com/gooogle/comments/119298.htmlhttp://www.tkk7.com/gooogle/archive/2007/05/23/119298.html#Feedback1http://www.tkk7.com/gooogle/comments/commentRss/119298.htmlhttp://www.tkk7.com/gooogle/services/trackbacks/119298.html目的由?/font>

d10月䆾左右Q个人开发了一个球即时YӞ在此构徏的一个uiQ加上一些解释wml的一些项目,军_把两者组合v来,开发一可用的浏览器Q?-- q就是最此的x?/font>

l过大概一个月左右旉实现了下Q然后发布出来,但这个浏览器q不是一个可用的东西?/font>

q个是Z么有q个开发日志的由来Q我惛_接下来的旉里,对它q行二次开发,q行重构?/font>

q篇文章开始的名字是:
重温Wap Explorer之主从wml构徏
x没碰j2me也有好几个月了,很是惛_它,所以就动用了这几天的时间来重新构徏一个主出来,以前Wap Explorer的主完全是构徏一个class,然后在这个class里面d那些控g昄出来的,
q几天我也不停的重构wml解释引擎Q跟wap UI部gQ昨天终于把主页重构完毕Q发个帖出来Q让大家ƣ赏下。也是报答各个|友的关心?br>
现在我把文章的名字变了下Q改?font color="#ff0000">重构Wap Explorer 使之可以成ؓ一个商业品?Q之所以加个?P是因Z个成熟的商业产品q不是想像的那么单?br> 不过有一Ҏ可以肯定的,那就是每天不断的重构Q久了,一些东西就会显现出来,很多不明朗跟不明白的东西都会跑出来,q是一件很有趣的事情?br> 以后我会以开发日志的形式更新q个帖子Q以后的日志׃写到q里了,直接跟帖Q有兴趣的朋友可以在q里讨论Q砸砖?br> 我很希望看到q样的情况发?br>
先看看图片,
然后再看看那些主跟帮助的wml

目开发日?
5?3日,
1Q?昨天q行软g的时候,发现出现了很多问题,1Qwml解释慢了点,2Q打开一些异常的url会出现程序崩溃,3QY件运行久了就会出现内存溢出?
2Q?今天重点解决的是wml解释引擎优化Q网l下载优化等
3Q?恩?
对了。你有没有研Ihttp下蝲速度问题
比如你获取input然后Q读取长度,然后在对长度q行分割Q同时启动线E对那些分割q行下蝲Q这样速度会快很多
4Q?不过如果设计的好的话Q同时启?个线E去d数据到是可以的,特别是读取图片的时候,一定要同时开?个线E去dQ不然的话,慢啊
5Q?关闭所有日志输出可以快很多。比如我打开日志输出输掉是解释一个比较大的wml?U,关闭的话0.8U左叻I不过q个日志的输出,量比较大Q?
6Q?在采用kxml解释引擎的时候,发现kxml下蝲|络数据的时候,会丢失数据包Q所以解释的时候,wml变了形状Q甚x出现异常情况Q导致程序崩溃,所以今天要解决的问题是自己实现下蝲机制Qƈ采用多线E的技术进行下载?
7Q?

5?2日,
8Q?今天重点重构一个下载进度条Q但是这个下载进度条要h性化一炏V怎么做了Q上|去找下有没有这斚w的资?
9Q?下蝲q度条搞定,不过Q很可惜Q设计的不怎么好看。这个问题也解决了,q度条也好看多了

10Q?开始设计Cokie跟缓存功能,设计初期遇C困难Q出现cache死锁问题?
链接支持打电话的功能了
5?1日,
11Q?l箋修正了一些bugQ给字体的标{进行解释?
12Q?今天l字体加了个解释颜色的功能,比如标记<big color=”fff”>Fox</big>可以实C同样式的字体了。哈
13Q?实现了一个打电话的功能,发短信,发彩信的功能
14Q?写了一个help的wml跟main.wml哈哈Q我可以成功的解释这些wmlQ?
15Q?q没实现的功能有inputQselectOption跟img{标?
16Q?重构了一个关于退Z件的方式Q决定采用时间链的Ş式,l一个class传入一个事件代?
17Q?链接支持打电话的功能了

5?0日,
18Q?今天重构了WapPage的设计,虽然主页不够完美Q比如有些标记支持的不好Q但是这个是kxml解释引擎的事情,q有一个解决了问题是可以支持,用户查看状态的问题了,q差一个下载状态的UIQ不q应该很单?
19Q?重构了MainPage的设计,设计成从wml文g中读取数据然后显C出?
20Q?整天惌些东西真的很烦恼
5?9日,
1Q?今天是礼?Q我很开心,昨天晚上回到Ӟ搞定了WapPage的一些重构,不过q差很多Q比如关于浏览下拉页面的时候,一个状态条表示Q用L动作Q下载进度条。等{,今天重点是重构下下来q度状态跟用户事g的完善?
2Q?l前几天搞定Kxml解释wap出错的bug后,昨天晚上有对kxml解释引擎q行?
的重构,使之能解释更多的wml标记Qƈl制出来?
3Q?今天修改了日志输出方式。这h易于调试?
4Q? 今天下午陪女朋友去逛了下街Q广州今天下雨,回来把一些想好了Q但未能实늚做了下,感觉q不错,WapPage重构的差不多了,Kxml解释引擎也差 不多了。现在忙于下载那些wml文gq行本地调试Q还出差一个下载进度条Q本惛_一个ajax常用的进度的Q不q苦于没有gif囄分割Q而我又对gif 不熟悉。哈
5Q?功能修正了许多?
5?8日,
6Q?今天的Q务是重点重构UIQ要求是Q每个UI都能C自己的位|?
7Q?重点重构WapPageq个UIQ之可以管理其他UI部g
5?6日,
1Q?发现了kxml解释引擎在解释wml时候的一个bugQ详l看源代?
2Q?重构了StringPart UIlgQ之可以自动换行。这个功能已l重构完?
3Q?重构WapPage部gQ这个部件很关键Q是把所有的Part UIl装hQ所以说q个部g也是所有Part UI的ManageQ设计的好,可以很容易做好统一理Q事件处理,资源释放跟绘制管理等
4Q?发现了一个很严重的bugQؓ什么我用kxml解释wml的时候,会对一个tag重复的解释两ơ呢。找到问题的所在了Q这个ƈ不是kxml的bugQ而是自己的疏忽,把函数放错了位置。现在问题解决了












Wml代码Q?br>
主页xml 代码
  1. xml version="1.0"?>
  2. >
  3. <wml>
  4. <card id="index" title="饶荣?>
  5. <p align="center"><BIG color="d4df">爬虫工作?lt;!--</span-->BIG><!--</span-->p>

  6. <p align="center"><a > 3g <!--</span-->a><!--</span-->p>
  7. <p align="center"><a > [WAP中国]<!--</span-->a><!--</span-->p>
  8. <p align="center"><a > IZ|?lt;!--</span-->a><!--</span-->p>
  9. <p align="center"><a >Wap帝国<!--</span-->a><!--</span-->p>
  10. <p align="center"><a > 巴掌<!--</span-->a><!--</span-->p>


  11. 此浏览器是我个h一个比较完整的作品Q?lt;br/>
  12. 为此我花了很多心血啊,主要是用来交之用,<br/>
  13. 需要交的朋友跟我联系Q?lt;br/>
  14. 我的qq?3686904 <br/>
  15. q有很多需要完善的地方<br/>

  16. <a href="local://help.wml">》帮?lt;!--</span-->a>
  17. <!--</span-->card> <!--</span-->wml>

xml 代码
  1. xml version="1.0"?>
  2. >
  3. <wml>
  4. <card id="index" title="帮助">
  5. <p align="center"><BIG color="d4df">帮助<!--</span-->BIG><!--</span-->p>



  6. q个览器的功能单,实用Q个人很喜欢他,推荐l大?lt;br/>
  7. 为此我花了很多心血啊,主要是用来交之用,<br/>
  8. 需要交的朋友跟我联系Q?lt;br/>
  9. 我的qq?lt;u color="DDFF">43686904<!--</span-->u> <br/>
  10. 我的电话是:<a href="wtai://wp/mc;13588888888">13588888888<!--</span-->a><br/>
  11. q有很多需要完善的地方<br/>
  12. <a href="local://main.wml">》返回上一U?lt;!--</span-->a>
  13. <!--</span-->card> <!--</span-->wml>

以后的一些文章我会解释我是怎么栯行重构的Q重构的q程是很快乐的。哈

下面q是囄
l箋帖些囑և?br> q个是今天完善了一个下载wml跟解释wml的进度条Q在剙黄色的那个部?
?br>


l箋贴图
下面是打开wap中国|站的截?br>



q个?G门户囄


囄发来发去是q些Q程序开发的工作也还没有l束Q但把程序开发好了,q运行一D|间没有内存溢出的时候,再让大家玩下。哈

1Q?nbsp; 今天重构WMLParserQ之不已mainform耦合。经q?0多分钟的努力l于重构完毕q个斚w的功?/p>

2Q?nbsp; 下面可能要设计一个把wml转换成stringQ用于保存网늚功能Q比如把string保存到rms?/p>

3Q?nbsp; |上看了下,Z整理下手机的各个参数的支持..

4Q?nbsp; l于搞定了系l属性的查看,发现E序q行一D|间后,内存不段上升.实是有内存瓉,得努力改q?/p> 明天跟以后的旉打算设计一个文本解释引擎,是从文本中解释然后再绘制成控gQ主要是用来保存|页



]]>
用j2me设计一个手机电子书阅读软g 部分源代码解?/title><link>http://www.tkk7.com/gooogle/archive/2007/05/08/115837.html</link><dc:creator>3G工作?/dc:creator><author>3G工作?/author><pubDate>Tue, 08 May 2007 01:10:00 GMT</pubDate><guid>http://www.tkk7.com/gooogle/archive/2007/05/08/115837.html</guid><wfw:comment>http://www.tkk7.com/gooogle/comments/115837.html</wfw:comment><comments>http://www.tkk7.com/gooogle/archive/2007/05/08/115837.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.tkk7.com/gooogle/comments/commentRss/115837.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/gooogle/services/trackbacks/115837.html</trackback:ping><description><![CDATA[<div style="margin-left: 15px; margin-top: 5px;"> <strong>关键?</strong> J2ME   JSR 75Q?j2me     </div> <p> l于球目告一D落Q期间学辛苦Q无奈与成长都是可写的? <br> 在此期间我让UI折腾的紧Q甚xl想攑ּQ终I是坚持下来了。想惛_一个小的屏幕上设计一个UI已经是很痛苦的已l事情,何况在pc上设计,真是佩服M那些高手们? <br> 最q,旉比较有空Q所以把UI修改了下Q然后在此基上+jsr75规范做了个电子书阅读软g。等我设计好了以后,打算开源,大家共同学习Q虽然写的不好,各位高手多指教。现在发布一些读取手机目录的Ҏ? <br></p> <div id="uoya248" class="code_title">代码</div> <div id="qccuwwo" class="code_div"> <div id="6kemy44" class="dp-highlighter"> <ol class="dp-xml" start="1"> <li id="qa2uygg" class="alt">package org.pook.file;  </li> <li id="muc6qay" class="">  </li> <li id="ak4i4co" class="alt">import java.io.IOException;  </li> <li id="kce4ska" class="">import java.util.Enumeration;  </li> <li id="ac8c8g4" class="alt">import java.util.Vector;  </li> <li id="2scmwmo" class="">  </li> <li id="8qy8eoa" class="alt">import javax.microedition.io.Connector;  </li> <li id="e2icumy" class="">import javax.microedition.io.file.FileConnection;  </li> <li id="iissu8y" class="alt">import javax.microedition.io.file.FileSystemRegistry;  </li> <li id="swoaus2" class="">  </li> <li id="4mummo4" class="alt">import org.pook.log.Log;  </li> <li id="eeuumem" class="">  </li> <li id="2mwmwi8" class="alt">/**  </li> <li id="cgwo6wu" class=""> * <b>cdQBookFileImpl.java</b> </br>   </li> <li id="mgkkeeu" class="alt"> * ~写日期: 2006-10-12 <br/>  </li> <li id="4m4mu44" class=""> * E序功能描述Q?nbsp;<br/>  </li> <li id="8qck24y" class="alt"> * Demo: <br/>  </li> <li id="24ckceu" class=""> * Bug: <br/>  </li> <li id="iqa2myw" class="alt"> *   </li> <li id="g4seq8m" class=""> * E序变更日期 Q?lt;br/>   </li> <li id="ooiqka2" class="alt"> * 变更作?nbsp;Q?lt;br/>   </li> <li id="2yy68ac" class=""> * 变更说明 Q?lt;br/>  </li> <li id="4cwy4oe" class="alt"> *   </li> <li id="yq2o2se" class=""> * @author wuhua </br> <a href="mailto:rrq12345@163.com">rrq12345@163.com</a>  </li> <li id="mqgsk8s" class="alt"> */  </li> <li id="84woqqm" class="">public class BookFileImpl implements BookFile {  </li> <li id="mqg2w8q" class="alt">    private static Log log = Log.getLog("BookFileImpl");  </li> <li id="moog2oq" class="">      </li> <li id="s2s8gy4" class="alt">    FileConnection conn = null;  </li> <li id="iu2gya8" class="">      </li> <li id="iu4kuuw" class="alt">    BookFileImpl(String url){  </li> <li id="4eoqu4g" class="">        try {  </li> <li id="84s4g44" class="alt">            conn = (FileConnection) Connector.open( url, Connector.READ);  </li> <li id="s2oq4wc" class="">  </li> <li id="6aas44g" class="alt">             </li> <li id="ygaasm8" class="">        }catch( IOException e ){  </li> <li id="2oq8ues" class="alt">            e.printStackTrace();  </li> <li id="cgyysam" class="">        }  </li> <li id="gias68y" class="alt">        catch( SecurityException e ){  </li> <li id="q2umu4o" class="">           e.printStackTrace();  </li> <li id="sckkc2c" class="alt">        }  </li> <li id="imoysqa" class="">  </li> <li id="i6cm28g" class="alt">    }  </li> <li id="aikemeo" class="">      </li> <li id="umwyyqi" class="alt">      </li> <li id="2eo84qa" class="">    public Vector listName() throws IOException {  </li> <li id="4wg8yii" class="alt">           </li> <li id="yi22mme" class="">        Vector vc = null;  </li> <li id="suwwoyk" class="alt">         if( conn.isDirectory() ){  </li> <li id="6oyiy2e" class="">                Enumeration names = conn.list();  </li> <li id="a4sc8ay" class="alt">                vc = new Vector();       </li> <li id="oyi64uk" class="">                while( names.hasMoreElements() ){  </li> <li id="64ooy4y" class="alt">                    vc.addElement(names.nextElement());  </li> <li id="4qaq8yo" class="">                      </li> <li id="cmooikq" class="alt">                }  </li> <li id="iscuwyo" class="">                return vc;  </li> <li id="a2wmmy4" class="alt">            } else {  </li> <li id="c44i4ea" class="">                return null;  </li> <li id="ckceeow" class="alt">          }  </li> <li id="i284umo" class="">    }  </li> <li id="w8oau8m" class="alt">  </li> <li id="u8ew4oe" class="">    public String read() throws IOException {  </li> <li id="awumasu" class="alt">          return null;  </li> <li id="i6c4k8g" class="">    }  </li> <li id="ce6kemy" class="alt">  </li> <li id="6c4yy4a" class="">    public boolean isFile() {  </li> <li id="44k4iaq" class="alt">          </li> <li id="6iak8a4" class="">        if(conn.isDirectory())  </li> <li id="iqakw6o" class="alt">            return false;  </li> <li id="u24ku4e" class="">        else  </li> <li id="6ggiigi" class="alt">            return true;  </li> <li id="goyyqii" class="">    }  </li> <li id="cueaaii" class="alt">  </li> <li id="uc2w8wg" class="">    public String getFilePath() {  </li> <li id="2skmm4w" class="alt">        checkConn();  </li> <li id="y4ic8s4" class="">        return conn.getPath();  </li> <li id="wwoia24" class="alt">    }  </li> <li id="m68wgq8" class="">  </li> <li id="ammgqgy" class="alt">    private void checkConn() {  </li> <li id="k28oass" class="">        if(conn == null)  </li> <li id="uc2am4e" class="alt">            throw new NullPointerException("文g资源不存在!");  </li> <li id="go2ausc" class="">          </li> <li id="ysscu4e" class="alt">    }  </li> <li id="gi4ogo8" class="">  </li> <li id="smmeygo" class="alt">    public String getFileName() {  </li> <li id="mo8ogkk" class="">        checkConn();  </li> <li id="qoikaaa" class="alt">        return conn.getName();  </li> <li id="mg4uc28" class="">    }  </li> <li id="4e4q8y4" class="alt">  </li> <li id="2yaqyaa" class="">    public void close() {  </li> <li id="e4a4e8i" class="alt">        if(conn != null)  </li> <li id="uogy6om" class="">            try {  </li> <li id="wmuwggi" class="alt">                conn.close();  </li> <li id="iasuwy8" class="">            } catch (IOException e) {  </li> <li id="2iac2a4" class="alt">                // TODO 自动生成 catch ?nbsp; </li> <li id="cu4is8u" class="">                e.printStackTrace();  </li> <li id="uwoooii" class="alt">            }  </li> <li id="ewoyyoi" class="">          </li> <li id="2oyikkk" class="alt">    }  </li> <li id="48kmwgy" class="">  </li> <li id="848gikk" class="alt">   </li> </ol> </div> </div> <script>render_code();</script> <div id="ysacy22" class="code_title">代码</div> <div id="6iscskk" class="code_div"> <div id="c24a2wo" class="dp-highlighter"> <ol class="dp-xml" start="1"> <li id="yaa2y4q" class="alt">package org.pook.file;  </li> <li id="24msuwg" class="">  </li> <li id="ey2k8sk" class="alt">import java.util.Enumeration;  </li> <li id="c4gqika" class="">import java.util.Vector;  </li> <li id="auckcwc" class="alt">  </li> <li id="eiimo4w" class="">import javax.microedition.io.file.FileSystemRegistry;  </li> <li id="y48c4as" class="alt">  </li> <li id="uggq8wq" class="">import org.pook.log.Log;  </li> <li id="yimcw6o" class="alt">  </li> <li id="qa4k84s" class="">/**  </li> <li id="qseq42s" class="alt"> * <b>cdQBookFileManager.java</b> </br> ~写日期: 2006-10-12 <br/> E序功能描述Q?nbsp;<br/>  </li> <li id="cog2gya" class=""> * Demo: <br/> Bug: <br/>  </li> <li id="suewe2y" class="alt"> *   </li> <li id="ewy6ke8" class=""> * E序变更日期 Q?lt;br/> 变更作?nbsp;Q?lt;br/> 变更说明 Q?lt;br/>  </li> <li id="wykkuec" class="alt"> *   </li> <li id="m8owgiq" class=""> * @author wuhua </br> <a href="mailto:rrq12345@163.com">rrq12345@163.com</a>  </li> <li id="iq84uke" class="alt"> */  </li> <li id="6i44muu" class="">public class BookFileManager {  </li> <li id="o6iaukw" class="alt">    private static Log log = Log.getLog("BookFileManager");  </li> <li id="skeewkm" class="">    public static boolean available() {  </li> <li id="kuueoey" class="alt">        String version = System  </li> <li id="2kme8u4" class="">                .getProperty("microedition.io.file.FileConnection.version");  </li> <li id="o2k4wuo" class="alt">  </li> <li id="casmgmw" class="">        if (version != null) {  </li> <li id="sm24mgg" class="alt">            return true;  </li> <li id="oy4eqqq" class="">        } else {  </li> <li id="sceeewm" class="alt">            return false;  </li> <li id="g6aamsk" class="">        }  </li> <li id="iuuee2q" class="alt">  </li> <li id="owickkc" class="">    }  </li> <li id="ygas2gs" class="alt">  </li> <li id="eoq2og8" class="">    public static BookFile openBookFile(String url) {  </li> <li id="woyis2a" class="alt">        return new BookFileImpl(url);  </li> <li id="i4uweem" class="">    }  </li> <li id="kasakec" class="alt">      </li> <li id="wgyqq2g" class="">      </li> <li id="62e6i4s" class="alt">       </li> <li id="qggy6mk" class="">  </li> <li id="kogowqo" class="alt">    public static Vector listRoots() {  </li> <li id="emw6i4s" class="">  </li> <li id="k2oo4ka" class="alt">       </li> <li id="6a4acsu" class="">        Vector vc = null;  </li> <li id="cmuckm4" class="alt">  </li> <li id="8keo44w" class="">        Enumeration names = FileSystemRegistry.listRoots();  </li> <li id="sac6o4o" class="alt">           </li> <li id="o4aum4e" class="">        vc = new Vector();  </li> <li id="mqyg6og" class="alt">  </li> <li id="8q4umwu" class="">        while (names.hasMoreElements()) {         </li> <li id="og448oy" class="alt">            vc.addElement(names.nextElement());  </li> <li id="eem64ew" class="">            //log.debug(names.nextElement());  </li> <li id="o6i8gg2" class="alt">        }  </li> <li id="cyyqksu" class="">           </li> <li id="mmoasis" class="alt">        return vc;  </li> <li id="m4woi4a" class="">  </li> <li id="iaumuo6" class="alt">    }  </li> <li id="mgyac4k" class="">  </li> <li id="uyg6uem" class="alt">}  <br></li> </ol> </div> </div> <br><img src ="http://www.tkk7.com/gooogle/aggbug/115837.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/gooogle/" target="_blank">3G工作?/a> 2007-05-08 09:10 <a href="http://www.tkk7.com/gooogle/archive/2007/05/08/115837.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://xxzyyj.com" target="_blank">ɫ߹ۿ</a>| <a href="http://yeyaweiban.com" target="_blank">˳վ߹ۿ</a>| <a href="http://ikybh.com" target="_blank">˾վ߹ۿ</a>| <a href="http://jkc178.com" target="_blank">ڵƵ</a>| <a href="http://7t53.com" target="_blank">˳߲վ</a>| <a href="http://mtspvip.com" target="_blank">þavרavһ</a>| <a href="http://www6661126.com" target="_blank">jjzzjjzz߹ۿ</a>| <a href="http://1444000.com" target="_blank">պ˾Ʒձ</a>| <a href="http://saozib.com" target="_blank">ԺȫƵƵ</a>| <a href="http://zjyxc.com" target="_blank">91þó</a>| <a href="http://gnebs.com" target="_blank">ղƷϵ</a>| <a href="http://yy7699.com" target="_blank">þþƷavĻ</a>| <a href="http://wxzg66.com" target="_blank">ۺ϶</a>| <a href="http://kuaizhuxia.com" target="_blank">Ůƨվ</a>| <a href="http://laochedao.com" target="_blank">þþþѾƷС˵</a>| <a href="http://www48646.com" target="_blank">߹ۿAVƬ</a>| <a href="http://xmjcjc.com" target="_blank">޾Ʒ뼤AV</a>| <a href="http://www-993789.com" target="_blank">18gay̨ͬͬ</a>| <a href="http://hsewx.com" target="_blank">þþƷAVδʮ</a>| <a href="http://79909d.com" target="_blank">һHƬAƵѹۿ</a>| <a href="http://aqd1987.com" target="_blank">ֻˬֳƵ</a>| <a href="http://222941.com" target="_blank">޹˾Ʒþþþþۺ </a>| <a href="http://ylptt.com" target="_blank">պƷרѲ</a>| <a href="http://sjkuaixun.com" target="_blank">þþþùƷ </a>| <a href="http://jj5c.com" target="_blank">Avۺ辫Ʒ</a>| <a href="http://xdxdl.com" target="_blank">99þó˹Ʒ</a>| <a href="http://guoyit.com" target="_blank">һ </a>| <a href="http://zmnhssn.com" target="_blank">www޾Ʒþþձ</a>| <a href="http://baiyifuwu.com" target="_blank">߾Ʒһ</a>| <a href="http://yunyitai.com" target="_blank">avۺ</a>| <a href="http://wwwee2.com" target="_blank">㽶ѿһ</a>| <a href="http://nfrxfarm.com" target="_blank">ѹƵվ</a>| <a href="http://www3ratcom.com" target="_blank">Ļһþ</a>| <a href="http://868664.com" target="_blank">2019ҹ</a>| <a href="http://taoh2510.com" target="_blank">ɫҹƵ</a>| <a href="http://gzqhit.com" target="_blank">ʹA18Ƭ</a>| <a href="http://zddzbp.com" target="_blank">avƷɫҹĻ</a>| <a href="http://meinvtaotu.com" target="_blank">޵һվƵ </a>| <a href="http://359777b.com" target="_blank">99ƷƵ߹ۿ</a>| <a href="http://jlzjjy.com" target="_blank">պѹۿ</a>| <a href="http://33sse.com" target="_blank">þþþ޾Ʒ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>