<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    路是爬出來的

    #

    設(shè)計(jì)可組裝的j2me UI(二) 一些系統(tǒng)邊緣核心的開發(fā)

    大家都知道。設(shè)計(jì)一個(gè)好的軟件,無非是要求程序穩(wěn)定,可擴(kuò)展,可修改跟可移值。在沒有出現(xiàn)j2me之前,寫手機(jī)程序是一件很痛苦的事情。因?yàn)槟阋槍芏嗟臋C(jī)型進(jìn)行設(shè)計(jì),因此導(dǎo)致了很少人會去涉及。因?yàn)樵O(shè)計(jì)這樣的程序?qū)Τ绦騿T來說是個(gè)挑戰(zhàn)。現(xiàn)在不同了。有了j2me使開放手機(jī)軟件變的容易,而且很快樂。
    定義一個(gè)與平臺無關(guān)的各個(gè)參數(shù)的類,比如把按鍵的鍵值放在這里。這樣以后修改起來就很方便。

    代碼

    代碼

    代碼

    以上是本人經(jīng)過互聯(lián)網(wǎng)學(xué)習(xí),上面的一些代碼出自一些開源的。
    大家可以按照需要修改。共同學(xué)習(xí)。

    posted @ 2006-12-30 09:24 路是爬出來的 閱讀(99) | 評論 (0)編輯 收藏

    設(shè)計(jì)可組裝的j2me UI(四) 時(shí)間控件

           開放過項(xiàng)目的人都知道。用戶的需求是時(shí)刻變化的。我們要做到的只是不斷的去適應(yīng)這種變化。因?yàn)榻o錢的是人家。

           今天這篇文章讓我們來學(xué)習(xí)怎么樣設(shè)計(jì)一個(gè)可以在j2me低級UI上顯示的時(shí)鐘。經(jīng)過前面幾篇文章相信大家都知道我的UI設(shè)計(jì)思路了。我們現(xiàn)在要做的就是設(shè)計(jì)一個(gè)Part(這個(gè)是什么來的,呵呵。如果沒看過我前面文章的朋友們,建議你們先讀下,我想會有好處的。^_^)。

          我的控件思路是這樣的。首先在整個(gè)屏幕中拿出一小塊出來。然后在這一小塊里面繪制顯示時(shí)間(時(shí)間可以是純文字,也可以是圖片等),然后我們實(shí)現(xiàn)Runnable接口,讓它沒秒鐘都刷新一下那一小塊屏幕。是不是很簡單呢。呵呵。下面讓我們來看下具體代碼吧

    java 代碼


     


    1. /******************************************************************** 

    2.  * 

    3.  * 版權(quán)說明,此程序僅供學(xué)習(xí)參考。不能用于商業(yè) 

    4.  * 

    5.  ********************************************************************/  

    6. package org.pook.ui;  

    7.   

    8. import java.util.TimerTask;  

    9.   

    10. import javax.microedition.lcdui.Display;  

    11. import javax.microedition.lcdui.Displayable;  

    12. import javax.microedition.lcdui.Graphics;  

    13.   

    14. import org.pook.file.BookFileManager;  

    15. import org.pook.log.Log;  

    16. import org.pook.ui.core.Platform;  

    17. import org.pook.ui.form.Panel;  

    18. import org.pook.ui.timer.TimerTaskManager;  

    19. import org.pook.ui.util.GraphicsUtil;  

    20. import org.pook.util.DateTime;  

    21.   

    22. /** 

    23.  * 類名:TimerPart.java 

    24.  

    25.  * 編寫日期: 2006-9-29 

    26.  

    27.  * 程序功能描述?? 

    28.  

    29.  * Demo: 

    30.  

    31.  * Bug: 

    32.  

    33.  * 

    34.  * 程序變更日期 

    35.  

    36.  * 變更作??? 

    37.  

    38.  * 變更說明 

    39.  

    40.  * 

    41.  * @author wuhua 

    42. rrq12345@163.com 

    43.  */  

    44. public class TimerPart extends Part implements Runnable{  

    45.   

    46.     Log log = Log.getLog("TimerPart");  

    47.      

    48.     /** 時(shí)間顯示字段     */  

    49.     private static int hour ;  

    50.     private static int minute;  

    51.     private static int second;  

    52.      

    53.     private static String time;  

    54.      

    55.     /** 用于執(zhí)行消失窗口 */  

    56.     protected TimerTask task;  

    57.      

    58.     /** 獲取系統(tǒng)時(shí)間 **/  

    59.     private DateTime dt;  

    60.      

    61.      

    62.      

    63.     private Display display;  

    64.     private Displayable displayable;  

    65.   

    66.     private String h;  

    67.   

    68.     private String m;  

    69.   

    70.     private String s;  

    71.      

    72.     public TimerPart(Display display) {  

    73.         super(Platform.WIDTH - 4504520);  

    74.         dt = new DateTime();  

    75.         hour = dt.hour ;  

    76.         minute = dt.minute ;  

    77.         second = dt.second ;  

    78.    

    79.          time = hour + ":" + minute + ":" + second;  

    80.            

    81.        

    82.         task = TimerTaskManager.getInstace().add(this1000);  

    83.         this.display = display;  

    84.     }  

    85.   

    86.     public void paint(Graphics g) {  

    87.         g.setColor(0x00000);  

    88.         g.drawString(time.toString(), view[X], view[Y], Graphics.TOP |  

    89.                 Graphics.LEFT);  

    90.     //    GraphicsUtil.darwString(g,new Boolean(BookFileManager.available()).toString(), view[X], view[Y]);  

    91.   

    92.     }  

    93.   

    94.     public void onClick(int keyCode) {  

    95.        

    96.     }  

    97.   

    98.     /** 

    99.      * 刷新時(shí)間的方法,每隔1秒鐘刷新???? 

    100.      */  

    101.     public void run() {  

    102.            

    103.          

    104.         //更新時(shí)間  

    105.          updateTime();  

    106.          repaintTime();  

    107.          

    108.     }  

    109.      

    110.     /** 

    111.      * 這里本不應(yīng)該與程序又任何關(guān)聯(lián)的???但考慮到?????? 

    112.      * ??以就先這樣先 

    113.      * 

    114.      */  

    115.     private void repaintTime() {  

    116.         if(display == null)  

    117.             return;  

    118.         displayable = display.getCurrent();  

    119.         if(displayable instanceof Panel){  

    120.             Panel panel = (Panel)displayable;  

    121.             panel.repaintTimer();  

    122.         }  

    123.     }  

    124.   

    125.     /** 

    126.      * 更新時(shí)間,頻率是1?? 

    127.      * 

    128.      */  

    129.     private void updateTime() {  

    130.         second ++ ;  

    131.         if(second == 60){  

    132.             second = 0;  

    133.             minute ++ ;  

    134.         }  

    135.          

    136.         if(minute == 60){  

    137.             minute = 0;  

    138.             hour ++ ;  

    139.         }  

    140.          

    141.         if(hour == 24 && minute == 0){  

    142.             hour = 00;  

    143.         }  

    144.          

    145.         h =   hour<10?("0"+hour):hour + "" ;  

    146.         m =    minute<10?("0"+minute):minute + "";  

    147.         s =   second<10?("0"+second):second + "";  

    148.          

    149.         time = h + ":" + m + ":" + s;  

    150.     }  

    151.   

    152.   

    153.   

    154.   

    155. }  







    具體的詳細(xì)例子在: 手機(jī)電子書閱讀軟件基本框架  wuhua.javaeye.com/admin/show/28821

    看看這圖片:

    posted @ 2006-12-30 09:24 路是爬出來的 閱讀(455) | 評論 (0)編輯 收藏

    25歲男人必讀(轉(zhuǎn))

    1.男人是社會的主體,不管你信或不信.所以男人應(yīng)該有種責(zé)任感.



    2.25歲之前,請記得,愛情通常是假的,或者不是你所想象的那樣純潔和永遠(yuǎn).如果你過了25歲,那么你應(yīng)該懂得這個(gè)道理.





    3.吃飯7成飽最舒服.對待女友最多也請你保持在7成.



    4.30歲之前請愛惜自己的身體,前30年你找病,后30年病找你.如果你過了30歲,你自然也會懂得這個(gè)道理.



    5.事業(yè)遠(yuǎn)比愛情重要.如果說事業(yè)都不能永恒,那么愛情只能算是曇花一現(xiàn).



    6.不要輕易接受追求你的女孩.女追男隔層紗.如果你很容易就陷進(jìn)去,你會發(fā)現(xiàn)你會錯(cuò)過很多東西,失去很多東西.



    7.請你相信,能用錢解決的問題,都不是問題.如果你認(rèn)為錢索王道,有錢有女人,沒錢沒女人,那么.女人不是問題.



    8.請永遠(yuǎn)積極向上.每個(gè)男人都有他可愛的地方,但是不可愛的地方只有不積極面對生活.



    9.不要連續(xù)2次讓同一個(gè)女人傷害.好馬不吃回頭草,是有他道理的.如果認(rèn)真考慮過該分手,那么請不要做任何舍不得的行動.



    10.如果你和你前女友能做朋友,那么你要問自己:為什么?如果分手后還是朋友,那么只有2個(gè)可能:.你們當(dāng)初都只是玩玩而已,沒付出彼此最真的感情.或者:必定有個(gè)人是在默默的付出無怨無悔!



    11.永遠(yuǎn)不要太相信女人在戀愛時(shí)的甜言蜜語.都說女人愛聽甜言蜜語,其實(shí),男人更喜歡.



    12.請不要為自己的相貌或者身高過分擔(dān)心和自卑.人是動物,但是區(qū)別于動物.先天條件并不是阻擋你好好生活的借口.人的心靈遠(yuǎn)勝于相貌,請相信這點(diǎn).如果有人以相貌取人,那么你也沒必要太在意.因?yàn)樗麖哪撤N意義來講,只是只動物.你會跟動物慪氣嗎?



    13.失戀時(shí),只有2種可能,要么你愛她她不愛你,或者相反.那么,當(dāng)你愛的人不再愛你,或者從來沒愛過你時(shí).你沒有遺憾,因?yàn)槟闶サ闹皇且粋€(gè)不愛你的人.



    14.請不要欺騙善良的女孩.這個(gè)世界上,善良的女孩太少.



    15.不能偏激的認(rèn)為金錢萬能,至少,金錢治不好艾滋病.



    16.請一定要有自信.你就是一道風(fēng)景,沒必要在別人風(fēng)景里面仰視.



    17.受到再大的打擊,只要生命還在,請相信每天的太陽都是新的.



    18.愛情永遠(yuǎn)不可能是天平.你想在愛情里幸福就要舍得傷心.



    19.如果你喜歡一個(gè)認(rèn)為別人應(yīng)該對她好的mm,請盡早放棄.沒有人是應(yīng)該對一個(gè)人好的.如果她不明白這個(gè)道理,也就是她根本不懂得珍惜.



    20.不要因?yàn)榧拍?rsquo;找’gf,寂寞男人請要學(xué)會品味寂寞.請記住:即使寂寞,遠(yuǎn)方黑暗的夜空下,一定有人和你一樣,寂寞的人不同,仰望的星空卻是唯一.



    21.任何事沒有永遠(yuǎn).也別問怎樣才能永遠(yuǎn).生活有很多無奈.請盡量充實(shí)自己,充實(shí)生活.請善待生活.



    End.男人有很多無奈,生活很累但是因?yàn)樯畈庞幸饬x.當(dāng)你以為你一無所有時(shí),你至少還有時(shí)間,時(shí)間能撫平一切創(chuàng)傷.所以請不要流淚

    posted @ 2006-12-30 09:24 路是爬出來的 閱讀(124) | 評論 (0)編輯 收藏

    如何預(yù)防電腦輻射(轉(zhuǎn)自j2medev)

    原文出自

    www.j2medev.com/blog/user1/32652/archives/2006/1819.html



    關(guān)于電腦輻射的危害大家一定都很清楚,但恐怕并非每個(gè)人都清楚該怎樣預(yù)防電腦輻射,于是在下轉(zhuǎn)了幾個(gè)帖,考慮到我們整天都坐在電腦面前,為了我們的健康,抽點(diǎn)時(shí)間,關(guān)心一下,相信一定對你有百利而無一害。



    一 防電腦輻射10招

    電腦輻射是不可避免的,但可以減少。以下是一些預(yù)防電腦輻射的方法:



    1.應(yīng)盡可能購買新款的電腦,一般不要使用舊電腦,舊電腦的輻射一般較厲害,在同距離、同類機(jī)型的條件下,一般是新電腦的1-2倍。



    2.注意室內(nèi)通風(fēng)。科學(xué)研究證實(shí),電腦的熒屏能產(chǎn)生一種叫溴化二苯并呋喃的致癌物質(zhì)。所以,放置電腦的房間最好能安裝換氣扇,倘若沒有,上網(wǎng)時(shí)尤其要注意通風(fēng)。



    3.電腦擺放位置很重要。盡量別讓屏幕的背面朝著有人的地方,因?yàn)殡娔X輻射最強(qiáng)的是背面,其次為左右兩側(cè),屏幕的正面反而輻射最弱。



    4.室內(nèi)不要放置閑雜金屬物品,以免形成電磁波的再次發(fā)射。



    5.操作電腦時(shí)最好在顯示屏上安一塊電腦專用濾色板以減輕輻射的危害。



    6.使用電腦時(shí),要調(diào)整好屏幕的亮度,一般來說,屏幕亮度越大,電磁輻射越強(qiáng),反之越小。不過,也不能調(diào)得太暗,以免因亮度太小而影響效果,且易造成眼睛疲勞。



    7.使用電腦時(shí),還要注意與屏幕保持適當(dāng)距離。離屏幕越近,人體所受的電磁輻射越大,因此較好的是距屏幕半米以外。



    8.使用電腦后,臉上會吸附不少電磁輻射的顆粒,因此,要及時(shí)用清水洗臉,這樣將使所受輻射減輕70%以上。



    9.可在電腦桌前放置一盆仙人掌,這樣有助于減少輻射。



    10. 要注意飲食。對于生活緊張而忙碌的人群來說,抵御電腦輻射最簡單的辦法就是在每天上午喝2至3杯的綠茶,吃一個(gè)橘子。茶葉中含有豐富的維生素A原,它被人 體吸收后,能迅速轉(zhuǎn)化為維生素A。維生素A不但能合成視紫紅質(zhì),還能使眼睛在暗光下看東西更清楚,因此,綠茶不但能消除電腦輻射的危害,還能保護(hù)和提高視 力。如果不習(xí)慣喝綠茶,菊花茶同樣也能起著抵抗電腦輻射和調(diào)節(jié)身體功能的作用。



    二 防電腦輻射有妙招

    關(guān)鍵詞語:注意酌情多吃一些胡蘿卜、豆芽、西紅柿、瘦肉、動物肝等富含維生素A、C和蛋白質(zhì)的食物,經(jīng)常喝些綠茶等等。





    使用電腦時(shí),最好在顯示器前配備質(zhì)量較好的防輻射屏。注意酌情多吃一些胡蘿卜、豆芽、西紅柿、瘦肉、動物肝等富含維生素A、C和蛋白質(zhì)的食物,經(jīng)常喝些綠茶等等。





    對于生活緊張而忙碌的人群來說,抵御電腦輻射最簡單的辦法就是在每天上午喝2至3杯的綠茶,吃一個(gè)橘子。茶葉中含有豐富的維生素A原,它被人體吸收后, 能迅速轉(zhuǎn)化為維生素A。維生素A不但能合成視紫紅質(zhì),還能使眼睛在暗光下看東西更清楚,因此,綠茶不但能消除電腦輻射的危害,還能保護(hù)和提高視力。如果不 習(xí)慣喝綠茶,菊花茶同樣也能起著抵抗電腦輻射和調(diào)節(jié)身體功能的作用。





    電腦輻射是不可避免的,但可以減少。首先,應(yīng)盡可能 購買新款的電腦,一般不要使用舊電腦,舊電腦的輻射一般較厲害,在同距離、同類機(jī)型的條件下,一般是新電腦的1-2倍。操作電腦時(shí)最好在顯示屏上安一塊電 腦專用濾色板以減輕輻射的危害,室內(nèi)不要放置閑雜金屬物品,以免形成電磁波的再次發(fā)射。使用電腦時(shí),要調(diào)整好屏幕的亮度,一般來說,屏幕亮度越大,電磁輻 射越強(qiáng),反之越小。不過,也不能調(diào)得太暗,以免因亮度太小而影響效果,且易造成眼睛疲勞。還要注意與屏幕保持適當(dāng)距離。離屏幕越近,人體所受的電磁輻射越 大,因此較好的是距屏幕半米以外。





    電腦使用后,臉上會吸附不少電磁輻射的顆粒,要及時(shí)用清水洗臉,這樣將使所受輻射減輕70%以上。





    仙人掌除了可以攻擊壞人,還有一項(xiàng)好處喔!據(jù)說在計(jì)算機(jī)桌前放置一仙人掌有助于減少輻射。





    常用電腦的人會感到眼睛不適,視力下降,易有疲勞的感覺。常用電腦的人在飲食上應(yīng)注意以下幾方面:





    吃一些對眼睛有益的食品,如雞蛋、魚類、魚肝油、胡蘿卜、菠菜、地瓜、南瓜、枸杞子、菊花、芝麻、蘿卜、動物肝臟等。





    多吃含鈣質(zhì)高的食品,如豆制品、骨頭湯、雞蛋、牛奶、瘦肉、蝦等。





    注意維生素的補(bǔ)充:多吃含有維生素的新鮮水果、蔬菜等。





    注意增強(qiáng)抵抗力:多吃一些增強(qiáng)機(jī)體抗病能力的食物,如香菇、蜂蜜、木耳、海帶、柑桔、大棗等。





    吃一些抗輻射的食品:電腦雖然對人體健康影響較小,但也應(yīng)預(yù)防。飲茶能降低輻射的危害,茶葉中的脂多糖有抗輻射的作用。螺旋藻、沙棘油也具有抗輻射的作用。





    另外,用完電腦應(yīng)洗臉,平時(shí)應(yīng)注意鍛煉身體。





    電腦擺放位置很重要。盡量別讓屏幕的背面朝著有人的地方,因?yàn)殡娔X輻射最強(qiáng)的是背面,其次為左右兩側(cè),屏幕的正面反而輻射最弱。以能看清楚字為準(zhǔn),至少也要50厘米到75厘米的距離,這樣可以減少電磁輻射的傷害。





    注意室內(nèi)通風(fēng):科學(xué)研究證實(shí),電腦的熒屏能產(chǎn)生一種叫溴化二苯并呋喃的致癌物質(zhì)。所以,放置電腦的房間最好能安裝換氣扇,倘若沒有,上網(wǎng)時(shí)尤其要注意通風(fēng)。





    三 如何避免電腦輻射

    電腦在使用過程中,顯示屏?xí)l(fā)出電磁、電離輻射。經(jīng)常在電腦前工作,會使人體皮膚老化,造成皮膚粗糙,甚至還會引起皮膚發(fā)炎等病變。要防止電腦輻射,應(yīng)從以下己方面入手:



    在 選購電腦時(shí),應(yīng)盡可能購買新的保健型綠色電腦,一般不要使用舊電腦,舊電腦的輻射劑量較大,在同距離、同類機(jī)型的條件下,一般是新電腦的1--2倍。操作 電腦時(shí)最好在顯示屏上安一塊電腦專用濾色板以減輕輻射的危害,室內(nèi)不要放置閑雜金屬物品,以免形成電磁波的再次發(fā)射。





    使用電腦時(shí),要調(diào)整好屏幕的亮度,一般來說,屏幕亮度越大,電磁輻射越強(qiáng),反之越小。不過,也不能調(diào)得太暗,以免因亮度太小而影響收視效果,且易造成眼睛疲勞。



    在操作電腦時(shí),要注意與屏幕保持適當(dāng)距離。離屏幕越近,人體所受的電磁輻射越大,因此較好的是距屏幕0.5M以外。





    此外,在操作電腦后,臉上會吸附不少電磁輻射的顆粒,要及時(shí)用清水洗臉,這樣將使所受輻射減輕70%以上。



    四 喝酸奶能減輕電腦輻射



    早晚喝一杯牛奶已經(jīng)成為很多人的好習(xí)慣,可你知道嗎,午飯時(shí)或午飯后喝一杯酸奶,對健康也能起到重要的作用。



    根據(jù)統(tǒng)計(jì)資料顯示,我們每天早餐的熱能供應(yīng)占當(dāng)日總熱能需求的25%-30%,因此,早餐時(shí)喝一杯牛奶能夠有效地補(bǔ)充熱能;晚上臨睡前喝一杯則有助于增加睡眠質(zhì)量,讓你進(jìn)入深度熟睡狀態(tài),還能保證牛奶營養(yǎng)的充分吸收和消化。



    那么,午餐時(shí)喝酸奶有什么好處呢?專家指出,酸奶中含有大量的乳酸、醋酸等有機(jī)酸,它們不僅賦予了酸奶清爽的酸味,還能幫助它形成細(xì)嫩的凝乳,從而抑制 有害微生物的繁殖,同時(shí),使腸道的堿性降低,酸性增加,促進(jìn)胃腸蠕動和消化液的分泌。此外,隨著酸奶的生產(chǎn)技術(shù)、生產(chǎn)工藝不斷進(jìn)步,一些乳品大品牌,如蒙 牛等,已經(jīng)將其酸奶產(chǎn)品中的益生菌由2種變成了4種,這樣不僅酸奶的營養(yǎng)價(jià)值比同類產(chǎn)品有了明顯提高,其幫助消化、抑制有害菌的作用也得到了進(jìn)一步的加 強(qiáng)。



    千萬別小看酸奶的這些作用,這對于那些吃完午餐就坐在電腦前不再活動,容易導(dǎo)致消化不良或脂肪積累的上班族來說,非常有益。同 時(shí),酸奶中的酪氨酸對于緩解心理壓力過大、高度緊張和焦慮而引發(fā)的人體疲憊有很大的幫助。經(jīng)過乳酸菌發(fā)酵,酸奶中的蛋白質(zhì)、肽、氨基酸等顆粒變得微小,游 離酪氨酸的含量大大提高,吸收起來也更容易。午飯時(shí)或午飯后喝一杯酸奶,可以讓上班族放松心情,在整個(gè)下午都精神抖擻,更有利于提高工作效率。



    據(jù)一項(xiàng)最新的研究發(fā)現(xiàn),酸奶還具有減輕輻射損傷、抑制輻射后人的淋巴細(xì)胞數(shù)目下降的作用。動物實(shí)驗(yàn)證明,攝入酸奶后的小鼠對輻射的耐受力增強(qiáng),并減輕了 輻射對免疫系統(tǒng)的損害。對于那些長時(shí)間面對電腦,每時(shí)每刻籠罩在電磁輻射中的上班族來說,利用午飯的時(shí)間喝一杯酸奶,對健康非常有益。



    五 隔離霜是否能隔離電腦輻射?

    這也是許多JM關(guān)心的一個(gè)問題,我個(gè)人的答案是不能的。電腦輻射的大部分屬于低頻輻射,它的波長約為6.5cm,而隔離霜和防曬霜針對的主要是波長0.01-0.40微米的紫外線,,JMS可以自己考慮一下它對于電腦輻射有什么作用。





    但是,隔離霜對電腦使用者是有一定好處的。那是因?yàn)殡娔X除了輻射會對人體造成傷害以外,電腦屏幕的靜電效應(yīng)會吸附大量空氣中的微塵。簡而言之,使用電腦時(shí),我們的皮膚是處在一個(gè)相當(dāng)“臟”的環(huán)境中,使用電腦時(shí)擦隔離霜可以減少灰塵對皮膚的傷害。







    除此以外,我還了解到有一些防輻用品,介紹如下:

    1.備長炭

    就是一種有吸收電磁波功能的竹炭,曾經(jīng)在google上搜過,但可惜只了解到在臺灣和日本有賣,價(jià)格也很貴,要600元左右。

    下面也是從別的地方轉(zhuǎn)過來的:



    竹炭防輻射的原理

    經(jīng)1000 度以上高溫?zé)傻闹裉浚褡痈邷靥炕缶哂袑?dǎo)電性。當(dāng)年愛迪生在尋找燈泡導(dǎo)電材料時(shí),曾使用高溫?zé)频闹裉浚?dāng)成燈泡中導(dǎo)電燈絲。在電器周圍擺放具有導(dǎo)電 性能的竹炭,籍著竹炭的良好導(dǎo)電性能,將周圍電器形成的電磁波引導(dǎo)排除——這種作用就有點(diǎn)像利用避電針來防止打雷時(shí)被雷擊。



    在接觸身體較頻繁的電器(如電視、電腦、微波爐)周邊,擺放竹炭,對電磁波具有某種程度阻隔效果,間接促進(jìn)身體健康。例如在電視等電器前后左右都放上數(shù)根竹炭,或在旁邊置放一整簍(到少1。5公斤)以上竹炭,就可阻隔部分電磁波。



    另外科學(xué)家們正積極研究以竹炭做出[防護(hù)罩],用來罩住電器產(chǎn)生的電磁波。



    2.種植物

    聽說種闊葉型的植物能有效地吸收電磁波,但前提是規(guī)模要達(dá)到熱帶雨林的程度,不太可行



    3.低頻輻射消除器

    是一種像接線板一樣的東西。

    下面是引用廣告里的一句話,估計(jì)有偏頗:

    此產(chǎn)品能在電源供應(yīng)同時(shí),改變電荷運(yùn)動方向,瞬間將主機(jī)、顯示器、鍵盤、鼠標(biāo)、打印機(jī)、掃描儀等產(chǎn)生的有害電磁波輻射經(jīng)由電源零線回路徹底導(dǎo)除。

    posted @ 2006-12-30 09:24 路是爬出來的 閱讀(138) | 評論 (0)編輯 收藏

    設(shè)計(jì)可組裝的j2me UI(五) List

            高級UI中的List控件對于廣大應(yīng)用來說是足夠的。但有些特別需求的功能確不得不自己開發(fā),比如實(shí)現(xiàn)沒一行字體顏色不同,字體樣式不同,還有排版等方面問題時(shí)候則要自己動手實(shí)現(xiàn)一個(gè)了。下面把我在項(xiàng)目中學(xué)習(xí)到得經(jīng)驗(yàn)與大家分享下。

           但是客戶有個(gè)需求,說你這個(gè)List需要翻頁,我要求輸入什么鍵你進(jìn)行上下翻頁。我要求在每一行字體里面包含一些不同顏色得字,根據(jù)XP,好我擁抱需求。所以讓我們來看下怎么修改程序得。

          注意在看這篇文章之錢,請稍微留意下在下得前面幾篇文章。謝謝,^_^

          代碼如下,我會加比較多得注釋



    java 代碼


     


    1. /******************************************************************** 

    2.  *  

    3.  * 版權(quán)說明,此程序僅供學(xué)習(xí)參考。不能用于商業(yè) 

    4.  *  

    5.  ********************************************************************/  

    6. package org.pook.ui;  

    7.   

    8. import java.util.Vector;  

    9.   

    10. import javax.microedition.lcdui.Graphics;  

    11. import javax.microedition.lcdui.Image;  

    12.   

    13. import org.pook.ui.core.Platform;  

    14. import org.pook.ui.util.GraphicsUtil;  

    15.    

    16.   

    17. /** 

    18.  * 類名:List.java 

       
       

    19.  * 編寫日期: 2006-10-14 

       

    20.  * 程序功能描述:實(shí)現(xiàn)Part部件,而獲取可按照自己要求得效果得List

       

    21.  * Demo: 

       

    22.  * Bug: 

       

    23.  *  

    24.  * 程序變更日期 :

       
       

    25.  * 變更作者 :

       
       

    26.  * 變更說明 :

       

    27.  *  

    28.  * @author wuhua 

       
       

    29.  */  

    30. public class List extends Part {  

    31.     Image icon;  

    32.     Vector items;        

    33.     int numOfEls;   

    34.     int paintSize;  

    35.     int space;  

    36.     /** 開始索引 * */  

    37.     private int startIndex;  

    38.     





    39.     public List(Image icon) {  

    40.         super(021, Platform.WIDTH, Platform.HEIGHT - 41);  

    41.         this.icon = icon;  

    42.         items = new Vector();  

    43.            

    44.     }  

    45.    


    46.    /** 主要是根據(jù)屏幕變化而改變各個(gè)StringItem的位置跟當(dāng)前屏幕可以顯示StringItem的大小* */ 


    47.  


    48.     public void changeViewAndSize(){  

    49.         if (Platform.HEIGHT - 20 > view[HEIGHT]) {  

    50.             view[HEIGHT] = Platform.HEIGHT - 41;  

    51.             space = font.getHeight() + 2;  

    52.             paintSize  = view[HEIGHT] / space;  

    53.         }  

    54.     }  

    55.    


    56.     public void append(Vector items){  

    57.         if(items == null)  

    58.             return;  

    59.         this.items = items;  

    60.         this.numOfEls = items.size();  

    61.     }  

    62.   

    63.     public void append(String stringItem){  

    64.         this.items.addElement(stringItem);  

    65.         this.numOfEls = items.size();  

    66.     }  

    67.       

    68.       

    69.     public void insert(String stringItem){  

    70.         this.items.insertElementAt(stringItem,0);  

    71.         this.numOfEls = items.size();  

    72.     }  

    73.       

    74.     public int getSelectIndex(){  

    75.         return this.selectIndex;  

    76.     }  

    77.       

    78.     public String getSelectString(){  

    79.         //System.out.println(this.numOfEls);  

    80.         return (String) this.items.elementAt(selectIndex+startIndex );  

    81.     }  

    82.       

    83.     public void paint(Graphics g) {  

    84.         changeViewAndSize();  

    85.         GraphicsUtil.fillScreen(g, this.bgColor, view[X], view[Y], view[WIDTH], view[HEIGHT]);  

    86.         paintStrings(g);  

    87.     }  

    88.   

    89.     private void paintStrings(Graphics g) {  

    90.       

    91.         if (items.size() == 0)  

    92.             return;  

    93.         int size = this.paintSize > this.numOfEls? this.numOfEls:this.paintSize + startIndex;  

    94.           

    95.         paintSelect(g, view[Y] + space * selectIndex + 2 );  

    96.           

    97.         g.setColor(this.fontColor);  

    98.           

    99.         for(int i =startIndex,j=0; i< size; i++, j++){  

    100.                

    101.             String it = (String) items.elementAt(i);          

    102.               

    103.             if(this.selectIndex == j){  

    104.                 it = (String) items.elementAt(selectIndex+startIndex);  

    105.                 //this.select.paint(view[X], height, view[WIDTH],it.getItemHeight(),g);  

    106.             }else{  

    107.                    

    108.             }  

    109.             GraphicsUtil.darwString(g,it, view[X] + 10, view[Y] + space *j + 2);  

    110.             // 變化的高度  

    111.                

    112.         }    

    113.     }  

    114.     private void paintSelect(Graphics g, int height) {  

    115.         g.setColor(0x909090);  

    116.         g.fillRect(view[X], height, view[WIDTH], space);  

    117.     }  

    118.   

    119.     public void onClick(int keyCode) {  

    120.         keyUpAndDown(keyCode);  

    121.     }  

    122.   

    123.     /** 

    124.      * 內(nèi)部實(shí)現(xiàn)按鈕向上向下時(shí)候的動作,有具體類的keyPress調(diào)用. 

    125.      *  

    126.      * @param keyCode 

    127.      */  

    128.     void keyUpAndDown(int keyCode) {  

    129.         if(this.numOfEls == 0)  

    130.             return;  

    131.         switch (keyCode) {  

    132.       

    133.         case Platform.KEY_UP: {  

    134.             selectIndex--;  

    135.                

    136.          break;  

    137.                 

    138.                

    139.         }  

    140.         case Platform.KEY_DOWN: {  

    141.             selectIndex++;  

    142.                

    143.              break;  

    144.         }  

    145.         }  

    146.         changeSelectIndex();  

    147.     }  

    148.       

    149.     /** 

    150.      * 判斷當(dāng)前選擇條是否到了底部,經(jīng)過用戶的選擇,這些選擇條會不斷的變化

       變化的依據(jù)是當(dāng)selectPosition >=
       

    151.      * viewPart[HEIGHT]*/  

    152.     private void changeSelectIndex(){  

    153.         int num = (this.paintSize < numOfEls)?paintSize:numOfEls;//取可顯示的菜單項(xiàng)數(shù)目  

    154.         if (selectIndex>num-1)  

    155.         {  

    156.             startIndex++;  

    157.             selectIndex=(byte)(num-1);  

    158.         }  

    159.           

    160.         if (selectIndex < 0)  

    161.         {  

    162.             if (startIndex>0)  

    163.             {  

    164.                 selectIndex =0;  

    165.                 startIndex--;  

    166.             }  

    167.             else  

    168.             {  

    169.                 startIndex = numOfEls-num;  

    170.                 selectIndex=num-1;  

    171.             }  

    172.               

    173.         }  

    174.         if (startIndex+ selectIndex > numOfEls -1)  

    175.         {  

    176.             startIndex= 0;  

    177.             selectIndex = 0;  

    178.         }  

    179.     }  

    180.   

    181. }  


    posted @ 2006-12-30 09:24 路是爬出來的 閱讀(150) | 評論 (0)編輯 收藏

    MIDP 2.0安全機(jī)制 與 MIDlet 數(shù)字簽名(轉(zhuǎn)自j2medev)

    本篇文章轉(zhuǎn)自www.j2medev.com/bbs/dispbbs.asp
















    MIDP 2.0安全機(jī)制 與 MIDlet 數(shù)字簽名

     

              本文檔是 WoTrust 根據(jù) Forum Nokia 提供的技術(shù)文檔《MIDP 2.0: Tutorial On Signed MIDlets》翻譯整理的,請同時(shí)參考此英文原文文檔。請用戶在編寫 MIDlet 和簽名 MIdlet 之前閱讀此文檔,以便對 MIDP2.0 的安全機(jī)制有一個(gè)深刻的理解,有助于用戶能用好 MIDlet 代碼簽名證書。


     一、概述


        MIDP2.0 采用了全新的安全機(jī)制,這對于需要調(diào)用一個(gè)敏感的(重要的)函數(shù)和 API 的 MIDlet 開發(fā)者來講是必須了解的,如:網(wǎng)絡(luò)連接 API 、消息 API 和推 (Push) 函數(shù)等,還有一些可選的 MIDP 包也有許多受限制的 API 。


        雖然購買代碼簽名證書需要費(fèi) 用,但簽名 MIDlet 對開發(fā)者來講是收益非淺的,因?yàn)樵S多受保護(hù)的 API 都是需要簽名的,以保護(hù)開發(fā)者和用戶的利益。當(dāng)然,有些應(yīng)用是不需要簽名的,如有些不需要聯(lián)網(wǎng)的僅用到一些圖形 API 的小游戲軟件。但一些重要的應(yīng)用,如:連接網(wǎng)絡(luò)、發(fā)送短消息 ( 短信和彩信 ) 或訪問移動終端 ( 智能手機(jī)、 PDA 等,以下簡稱為手機(jī) ) 上的 PIM( 個(gè)人信息管理 ) 數(shù)據(jù)等等都需要簽名。


        數(shù)字簽名 MIDlet 的好處包括:


        (1) 基于 MIDlet 的安全策略,某些功能是必須簽名才能使用的,而有些功能雖然不簽名也可以使用,但必須要求用戶在使用時(shí)確認(rèn)和修改其安全策略,如:寫用戶數(shù)據(jù)缺省是不允許沒有簽名的 MIDlet 操作的;


        (2) 基于手機(jī)的系統(tǒng)安全和移動網(wǎng)絡(luò)的安全考慮,某些手機(jī)制造商、移動運(yùn)營商等可能拒絕沒有簽名的 MIDlet 在手機(jī)上安裝和運(yùn)行;


        (3) 大大改善用戶體驗(yàn),讓用戶使用方便,使得用戶不會遭遇調(diào)用受保護(hù) API 時(shí)的安全警告的煩惱;


        (4) 出于安全考慮,安裝沒有簽名的 MIDlet 是會有安全警告的,而相反,安裝已經(jīng)簽名的 MIDlet 則不會出現(xiàn)煩人的警告,手機(jī)會自動驗(yàn)證簽名而順利地安裝成功;


        (5) 已經(jīng)簽名的 MIDlet 將使得用戶能改善其低安全策略設(shè)置,提高手機(jī)的安全性;


        (6) 確保已經(jīng)簽名的 MIDlet 不會被非法篡改和非法盜用。


    二、 MIDP 2.0 安全機(jī)制


        MIDP 是一個(gè)開放的平臺,使得任何人都可以為支持 MIDP 的設(shè)備開發(fā)各種應(yīng)用軟件,一般都是移動終端設(shè)備。 MIDlet 套件可以以匿名方式通過網(wǎng)絡(luò)下載,非常方便,但這也會帶來許多安全問題和隱私信息保護(hù)問題,用戶會問: MIDlet 能把用戶的個(gè)人信息發(fā)給不知道的服務(wù)器嗎?會自動產(chǎn)生沒有授權(quán)的呼叫或短消息而給用戶帶來費(fèi)用嗎?惡意軟件會破壞手機(jī)?等等。


         除了 Java 語言的安全特性外, MIDP 還增加了許多安全考慮。 MIDP 2.0 比 MIDP 1.0 增強(qiáng)了安全策略,把 API 分為普通 API 和敏感 API ,如:通過  HTTP 協(xié)議訪問移動網(wǎng)絡(luò),由于會給用戶產(chǎn)生費(fèi)用, 所以被列為 敏感 API 。 MIDlet 2.0 推出了可信任 MIDlet(trusted) 和不可信任 MIDlet(untrusted) 的概念,一個(gè)不可信任 MIDlet 只能訪問有限的 API ,同時(shí)還需要用戶手動確認(rèn)并修改其安全策略;而可信任 MIDlet 則自動繼承系統(tǒng)中的安全策略而獲得訪問許可。


         許可 (Permissions) 用于需要身份認(rèn)證的 敏感 API 。 MIDP 2.0 要求調(diào)用 敏感 API 之前必須獲得必要的許可,這些許可包的命名同 J2SE 許可,如: HTTP 連接許可同樣稱為: javax.microedition.io.Connector.http 。 有關(guān)許可的文檔同意歸類在受保護(hù) API 中。


    2.1 Protection Domains( 保護(hù)域 )


         保護(hù)域是 MIDP 2.0 中一個(gè)非常重要的安全概念,一個(gè)保護(hù)域就是一個(gè)許可集和一種交互模式,這些許可既可以是自己繼承的,也可能是用戶設(shè)置的,前者稱為允許 (allowed) ,而后者稱為用戶允許 (user permission) 。當(dāng)一個(gè) MIDlet 被安裝后,它被分配到一個(gè)指定的保護(hù)域而獲得它的許可和交互模式。


        而用戶允許則需要用戶自己決定是否同意,用戶既拒絕一個(gè)許可,也可以同意。用戶允許有 3 種交互模式: blanket( 普遍適用 ) 、 session( 短期適用 ) 和 oneshot( 本次適用 ) , 普遍適用 模式就是 MIDlet 安裝時(shí)獲得的許可一直有效,除非用戶取消這些許可;而 短期適用 模式則是指第一次調(diào)用 API 時(shí)需要用戶允許,有效期到此 MIDlet 套件運(yùn)行結(jié)束;而 本次適用 模式則在每次調(diào)用 API 時(shí)都要求用戶允許。保護(hù)域?yàn)橛脩粼S可定義了缺省的交互模式。


        一個(gè) MIDlet 套件使用 MIDlet-Permissions MIDlet-Permissions-Opt 屬性來明確地定義其許可,可以是在 JAD 文件中定義,也可以在 manifest 文件中定義。其中: MIDlet-Permissions 定義了 MIDlet 套件中必須具有的許可,而 MIDlet-Permissions-Opt 則定義希望具有的許可。如:一個(gè)應(yīng)用軟件的基本要求是要有 http 連接才能正常工作,同時(shí),也可以使用 https 連接 ( 服務(wù)器部署了 SSL 證書 ) 來增強(qiáng)安全性,但不是必須的,這樣,這個(gè)應(yīng)用軟件的應(yīng)用描述可以是這樣:


            MIDlet-Permissions: javax.microedition.io.Connector.http


            MIDlet-Permissions-Opt: javax.microedition.io.Connector.https


         請注意:一個(gè) MIDlet 所要求的許可必須是安裝時(shí)分配的保護(hù)域所具有的許可的子集。如: Nokia S60 MIDP Emulator Prototype 2.0 (SDK) 有一個(gè)叫做“ minimum ”的域,此域沒有任何許可。所以,如果一個(gè)含有許多許可的已經(jīng)簽名的 MIDlet 如果被安裝到此域,則會安裝失敗,因?yàn)榇擞虿恢С诌@些許可。同樣,如果一個(gè)許可的名稱有拼寫錯(cuò)誤,則一樣會導(dǎo)致安裝失敗,因?yàn)橛蛑袥]有此拼寫錯(cuò)誤的許可。


        MIDP 2.0 為 GSM/UTMS 設(shè)備定義了 4 種保護(hù)域: manufacturer( 設(shè)備制造商 ) , operator( 移動運(yùn)營商 ) , trusted third party( 可信任的第三方 ) , and untrusted( 不受信任域 ) , 除了 untrusted 域外,每個(gè)保護(hù)域都對應(yīng)一組根證書,用于簽名 MIDlet 的簽名證書的根證書必須包含在這些根證書中,使用不同的簽名證書簽名的 MIDlet 將被自動歸類予根證書所屬的保護(hù)域,根證書與保護(hù)域的關(guān)系是:一個(gè)保護(hù)域可以有許多個(gè)根證書,而一個(gè)根證書只能對應(yīng)于一個(gè)保護(hù)域。


        具體來講, manufacturer 域?qū)儆谠O(shè)備制造商,其根證書是設(shè)備制造商自己的根證書;而 operator 域運(yùn)營商,一般使用其 SIM 卡中的根證書;而 trusted third party 域則預(yù)置了全球知名的數(shù)字證書頒發(fā)機(jī)構(gòu) (CA) 的根證書,用于驗(yàn)證由 CA 頒發(fā)的 MIDlet 簽名證書;而 untrusted 域沒有根證書,將用于沒有簽名的 MIDlet 和 MIDP 1.0 。


        Thawte 和 VeriSign 的根證書已經(jīng)預(yù)置在 trusted third party 域 中,其 Java 代碼簽名證書可以用于簽名 MIDlet 。當(dāng)然,用戶也可以選擇使用設(shè)備制造商和移動運(yùn)營商頒發(fā)的證書,只要其根證書已經(jīng)包含在手機(jī)的 4 個(gè)保護(hù)域中。據(jù) WoTrust 了解,大多數(shù)摩托羅拉 (Motorola) 手機(jī)只支持設(shè)備制造商域,所以,只能向 Motorola 申請簽名服務(wù)了。


        請注意:由于 MIDP 2.0 也在不斷地修改和增補(bǔ),所以,可能不用的移動網(wǎng)絡(luò)運(yùn)營商有不同的保護(hù)域和許可,用戶可能需要向移動運(yùn)營商了解詳細(xì)信息。而最簡單的方法是檢查目標(biāo)用戶所使用的手機(jī)的根證書是否有計(jì)劃購買的 MIDlet 簽名證書的根證書。


    2.2 Untrusted MIDlet ( 不受信任的 MIDlet)


        MIDP 2.0 定義了那些 API 是 untrusted 的,這些 Jar 文件的來源和完整性是不能被手機(jī)驗(yàn)證的。但這并不意味著這些 MIDlet 不能被安裝和運(yùn)行,而是運(yùn)行這些 MIDlet 需要用戶人工確認(rèn)允許。而所有 MIDP 1.0 的 MIDlets 都被定義為 untrusted


        untrusted 的 MIDlets 只能調(diào)用一個(gè)不需要許可保護(hù)的 API ,如:

            java.util

            java.lang

            java.io

            javax.microedition.rms

            javax.microedition.midlet

            javax.microedition.lcdui

            javax.microedition.lcdui.game

            javax.microedition.media

            javax.microedition.media.control


         如果 untrusted MIDlet 套件試圖調(diào)用一個(gè)被保護(hù)的 API 而且沒有被人工允許,則會產(chǎn)生一個(gè) SecurityException 而被 MIDlet 按照安全策略處理。請注意: Nokia 的 UI API 是不被保護(hù)的,包括類: com.nokia.mid.sound 和 com.nokia.mid.ui 。


    2.3 Trusted MIDlets ( 可信任的 MIDlets)


         如果手機(jī)能驗(yàn)證 MIDlet 的身份和完整性 ( 也就是已經(jīng)數(shù)字簽名 ) ,則會自動分配一個(gè)合適的保護(hù) 域這種 MIDlet 套件就稱為可信任的 MIDlet 。一個(gè)可信任的 MIDlet 套件所要求的許可將被準(zhǔn)許,只要所屬的保護(hù)域擁有這種許可,假如許可: javax.microedition.io.Connector.http 已經(jīng)在所屬保護(hù)域中是允許的,則 MIDlet 在打開一個(gè) http 連接時(shí)是不需要用戶確認(rèn)的。


        請不要混淆了可信任的 MIDlet 套件和可信任的保護(hù)域的不同,每個(gè)可信任的 MIDlet 套件依據(jù)安全策略被分配到一個(gè)特定的保護(hù)域。


         您需要使用一個(gè)手機(jī)中已經(jīng)預(yù)置的根證書的證書頒發(fā)機(jī)構(gòu)頒發(fā)的代碼簽名證書來簽名 MIDlet ,否則將不能通過身份驗(yàn)證。成功簽名后的 JAD 文件中一定會包含有整個(gè)簽名證書的證書鏈,屬性名稱為: MIDlet-Certificate-1-1 就是您的簽名證書,而 MIDlet-Certificate-1-2 就是 CA 的中級根證書,而 MIDlet-Certificate-1-3 就是 CA 的頂級根證書。同時(shí)還會有一個(gè) MIDlet-Jar-RSA-SHA1 屬性就是 JAR 文件的摘要。


        當(dāng)一個(gè) MIDlet 被下載或被安裝時(shí), MIDlet 應(yīng)用管理器首先會檢查 JAD 文件中是否包含了 MIDlet-Jar-RSA-SHA1 屬 性,如果有,則啟動如下驗(yàn)證過程:首先會讀出 MIDlet-Certificate-1-1 、 MIDlet-Certificate-1-2 和 MIDlet-Certificate-1-3 屬性中的證書,并與已經(jīng)預(yù)置的根證書相比較,如果證書鏈能被根證書驗(yàn)證,則表明開發(fā)者身份已經(jīng)被驗(yàn)證。接著就會使用用戶證書來解密 MIDlet-Jar-RSA-SHA1 屬 性的摘要,再計(jì)算出已經(jīng)下載的 Jar 文件的摘要,比較兩個(gè)摘要是否相等,如果相等,則表明 MIDlet 代碼自簽名后沒有被修改。這樣,既驗(yàn)證了身份又檢查了完整性的 MIDlet 會被分配到所屬根證書所對應(yīng)的保護(hù)域中。但是,如果 MIDlet 中的許可屬性 ( MIDlet-Permissions ) 中有一個(gè)或多個(gè)不屬于所屬的保護(hù)域,則仍然不允許安裝。而如果 MIDlet 中的可選許可屬性 ( MIDlet-Permissions-Opt ) 中有一個(gè)或多個(gè)不屬于所屬的保護(hù)域,會允許安裝。可見,正確設(shè)置許可屬性和可選許可屬性非常重要。


    2.4 Function Groups ( 功能分組 )


         為了簡化用戶管理操作, MIDlet 把一些類似功能分組,這樣,用戶只需對功能組設(shè)置許可即可。如:許可 “Net Access”( 網(wǎng)絡(luò)訪問 ) 組來代替許可 javax.microedition.io.Connector.http ,這對于簡化手機(jī)的交互操作非常有用。


        MIDP 2.0 和 JTWI 定義了如下 7 個(gè)功能組:


        (1) Net Access: 包括所有網(wǎng)絡(luò)連接許可;


        (2) Messaging: 包括所有與發(fā)送和接收短消息 ( 短信和彩信 等 ) 相關(guān)的許可;


        (3) Auto Invocation : 包括與自動啟動 MIDlet 相關(guān)的許可,如: Push Registration


        (4) Local Connectivity : 包括與本地連接相關(guān)的許可,如: IrDA 或 藍(lán)牙;


        (5) Multimedia Recording : 包括與允許錄音、照相、攝像等相關(guān)的許可;


        (6) Read User Data : 包括讀取用戶數(shù)據(jù)相關(guān)的許可,如:通訊錄、日程表等;


        (7) Write User Data : 包括寫用戶數(shù)據(jù)相關(guān)的許可。


        不同的手機(jī)支持不同的功能組,如: Multimedia Recording 就不會包含在沒有攝錄裝置的手機(jī)中。當(dāng)然,也有可能將來會增加更多的功能組。


         功能組也同時(shí)定義了不同的域的不同交互方式,如:在不信任域, “Net Access” ( 網(wǎng)絡(luò)訪問 ) 被設(shè)置為 session( 短期適用 ) 或 denied( 拒絕 ) ,而在可信任域則可以設(shè)置為 oneshot 、 blanket 和 denied 的。


    三、仿真器和手機(jī)的缺省安全設(shè)置


        讓我們來看看具體的使用 Thawte 或 VeriSign 代碼簽名證書簽名后的 MIDlet 在 trusted third party 域中的所有缺省許可,如下圖 1 所示,點(diǎn)擊 NDS 3.0 的“ Config Emulators ”就可以看到仿真器在 trusted third party 域的缺省安全設(shè)置是“ Ask first time ”,即第 1 次使用是需要確認(rèn):


    圖片點(diǎn)擊可在新窗口打開查看


        如下圖 2 所示,您可以下拉所有功能組的許可設(shè)置,如“ Network Access ”就有 4 個(gè)選項(xiàng)可以修改: Ask first time 、 Ask every time 、 Always allowed 和 Not allowed :


    圖片點(diǎn)擊可在新窗口打開查看


         而如下圖 3 所示,在“ Real Life ”模式,也就是實(shí)際手機(jī)的運(yùn)行模式,可以看出:定義的 7 個(gè)功能組都是“ Always allowed ” ( 總是允許 ) ,這就顯示出 MIDlet 簽名對于開發(fā)商來講是多么的重要,將大大方便了用戶的使用,再也不需要用戶操作煩人的系列確認(rèn)了。


    圖片點(diǎn)擊可在新窗口打開查看


    posted @ 2006-12-30 09:24 路是爬出來的 閱讀(111) | 評論 (0)編輯 收藏

    再次貢獻(xiàn)j2meUI設(shè)計(jì)源代碼

             要貢獻(xiàn)就貢獻(xiàn)的徹底,代碼里面很多bug,寫的很亂,請大家見諒。希望大家可以多學(xué)習(xí)交流。

    posted @ 2006-12-30 09:24 路是爬出來的 閱讀(135) | 評論 (0)編輯 收藏

    如何在MIDP中實(shí)現(xiàn)圖片放縮(轉(zhuǎn)自linuxmine)

          設(shè)計(jì)游戲的朋友經(jīng)常會遇到對圖片資源的操作。今天瀏覽web發(fā)現(xiàn)此貼不錯(cuò)。所以抄過這邊來

    原文:www.linuxmine.com/45911.html







    無論在midp1.0還是在 midp2.0中,系統(tǒng)都沒有給我們提供對圖片進(jìn)行伸縮操作的api.但是其實(shí)我們只要在程序代碼中略施小計(jì),就能達(dá)到這個(gè)效果,只是效果要比美術(shù)做出來 的圖片,呵呵,差多啦,同時(shí)也會造成性能損失。伸縮圖片的構(gòu)造原理就是簡單沿x,y軸按比例放縮,比如說我們需要把一張16*16的png圖片轉(zhuǎn)化成一張 32*32的圖片,那么我們可以先對該圖片做一個(gè)水平方向上的拉伸操作,然后再把水平拉伸后的圖片按垂直方向再做一次拉伸操作。做拉伸操作時(shí),比如水平方 向上,我們需要構(gòu)造一張32*16的mutable Image,獲取其Graphics,利用該Graphics,繪制該mutable Graphics的每一列像素,這一列像素就來自于原始圖片中的按比例對應(yīng)的某一列像素。垂直方向上的拉伸操作也是如法炮制。因?yàn)槭且环N按比例的對應(yīng)關(guān) 系,圖像的縮小操作也可按該辦法進(jìn)行。



    效果如下圖所示

     


    原始圖片


     


    圖片放大為全屏幕大小




    圖片縮小為原來的1/4大小




    好了,我們來看代碼

    java 代碼


     


    1. import javax.microedition.lcdui.Graphics;  

    2. import javax.microedition.lcdui.Image;  

    3.   

    4. /** 

    5. * 圖像工具類 

    6. * @author Jagie 

    7. * 

    8. */  

    9.   

    10. public class ImageUtil {  

    11.   

    12. /** 

    13. * 圖像放縮方法 

    14. * @param srcImage 原始的Image對象 

    15. * @param newW 放縮后的Image的寬度 

    16. * @param newH 放縮后的Image的高度 

    17. * @return 放縮后的Image對象 

    18. */  

    19.   

    20. public static final Image scale (Image srcImage, int newW, int newH) {  

    21. int srcW = srcImage.getWidth();  

    22. int srcH = srcImage.getHeight();  

    23. //先做水平方向上的伸縮變換  

    24. Image tmp = Image.createImage(newW, srcH);  

    25. Graphics g = tmp.getGraphics();  

    26.   

    27. for (int x = 0; x < newW; x++) {  

    28. g.setClip(x, 01, srcH);  

    29. //按比例放縮  

    30. g.drawImage(srcImage,x-x*srcWnewW,0,Graphics.LEFT | Graphics.TOP);  

    31.   

    32. }  

    33.   

    34. //再做垂直方向上的伸縮變換  

    35. Image dst = Image.createImage(newW, newH);  

    36. g = dst.getGraphics();  

    37.   

    38. for (int y = 0; y < newH; y++) {  

    39. g.setClip(0, y, newW, 1);  

    40. //按比例放縮  

    41. g.drawImage(tmp,0,y-y*srcHnewH,Graphics.LEFT | Graphics.TOP);  

    42.   

    43. }  

    44.   

    45. return dst;  

    46. }  

    47.   

    48.   

    49. }  

    50.   

    51. 也許有同學(xué)會提出疑問,既然是按x,y方向按等比例放縮,那我寫成這樣豈不是代碼更簡潔:  

    52.   

    53. public static final Image scale2(Image srcImage, int newW, int newH) {  

    54. int srcW = srcImage.getWidth();  

    55. int srcH = srcImage.getHeight();  

    56.   

    57. Image dst=Image.createImage(newW,newH);  

    58. Graphics g=dst.getGraphics();  

    59. for (int x = 0; x < newW; x++) {  

    60. for (int y = 0; y < newH; y++) {  

    61. g.setClip(x, y, 11);  

    62. g.drawImage(srcImage, x-x*srcWnewW, y - y * srcH / newH, Graphics.LEFT  

    63. | Graphics.TOP);  

    64.   

    65. }  

    66.   

    67. }  

    68.   

    69. return dst;  

    70. }  







    這種做法效果上和前者無異,但是并不可取,只要算算它的時(shí)間復(fù)雜度就知道,基本上是前者的平方。在我的機(jī)器上,做一次全屏幕的放縮操作,前者耗時(shí)60ms,而后者耗時(shí)7150ms。







    其實(shí)上面的做法很簡單,以后有需求可以整理成一個(gè)控件,這樣就可以很方便的調(diào)用,與學(xué)習(xí)。

    posted @ 2006-12-30 09:24 路是爬出來的 閱讀(88) | 評論 (0)編輯 收藏

    設(shè)計(jì)可組裝的j2me UI(六) Dialog(對話框)

         摘要:       高級UI提供了一個(gè)Alert的控件可以有彈出對話框的效果。但是大家想不想自己實(shí)現(xiàn)一個(gè)呢。想不想知道sun是如何讓Alert工作的呢?好請看下文     設(shè)計(jì)思想是。建立一個(gè) abstract   class Dialog extends Canvas。下面的事情就讓我們一步步花出來吧。&nbs...  閱讀全文

    posted @ 2006-12-30 09:24 路是爬出來的 閱讀(214) | 評論 (0)編輯 收藏

    切割圖片

          大家在設(shè)計(jì)游戲或者其他應(yīng)用的時(shí)候,很多都要操作圖片。眾所周知。j2me程序不能太大,因?yàn)樗刑嗟南拗啤8脑趺崔k呢,我的應(yīng)用要求大量的圖片。沒關(guān)系,圖片是死的,人是活的。我們始終都是有辦法搞定的。高手們自己寫個(gè)圖片壓縮的算法,我們這些水平一般的人只能踏實(shí)的做自己的事情了。

          1。通過工具壓縮圖片大小。比如把顏色植調(diào)小點(diǎn),這樣不僅效果在手機(jī)上不會差很多,還可以大大的縮小圖片。

          2。把所有的圖片繪制成一張大圖片。然后通過程序來切割它,這樣在操作上面會方便很多。

          下面我們來看看代碼把

      

          

    java 代碼


     


    1. try { 


    2.            //創(chuàng)建源圖片


    3.             source = Image.createImage("/p.png");   

    4.         } catch (IOException e) {  

    5.             log.error(e, "讀取圖片文件錯(cuò)誤");  

    6.             System.exit(0); // 退出程序  

    7. }  



    java 代碼


     


    1. /** 

    2.  * 載入圖片。切割圖片資源 

    3.  */  

    4. public static final void loadImages() { 


    5.     //切割圖片了。只要知道具體的位置,就什么都可以辦到

    6.     MY_BOOK = Image.createImage(source, 63120220);  

    7.     NET_BOOK = Image.createImage(source, 632120220);  

    8.     ABOUT = Image.createImage(source, 556120220);  

    9.     HELP = Image.createImage(source, 17931120220);  

    10.     EXIT =  Image.createImage(source, 1794120220);  

    11.     ARROW = Image.createImage(source, 178571590);  

    12. }  





    程序就這么簡單。詳細(xì)的例子可以看看我共享的關(guān)于電子閱讀的基本框架

    posted @ 2006-12-30 09:24 路是爬出來的 閱讀(151) | 評論 (0)編輯 收藏

    僅列出標(biāo)題
    共5頁: 上一頁 1 2 3 4 5 下一頁 
    主站蜘蛛池模板: 99精品视频在线观看免费| 亚洲aⅴ无码专区在线观看春色 | 91av免费观看| 在线观看H网址免费入口| 114一级毛片免费| 日本不卡免费新一二三区| 亚洲女人被黑人巨大进入| 亚洲av综合色区| 中文字幕乱码亚洲无线三区| 最好2018中文免费视频| 久久精品免费视频观看| 精品国产无限资源免费观看| 国产又黄又爽又猛的免费视频播放| 亚洲片国产一区一级在线观看| 久久综合日韩亚洲精品色| 亚洲精品二三区伊人久久| 免费精品久久久久久中文字幕| a级毛片免费播放| 无人影院手机版在线观看免费 | 四虎成人免费观看在线网址| 伊人婷婷综合缴情亚洲五月| 自怕偷自怕亚洲精品| 亚洲妇女无套内射精| a毛片免费在线观看| 无码人妻久久一区二区三区免费丨| 亚洲成av人片在线观看天堂无码 | 亚洲日韩精品无码一区二区三区| 亚洲成a人片7777| 一级做a免费视频观看网站| 亚洲人成免费电影| 亚洲精品人成无码中文毛片 | 亚洲冬月枫中文字幕在线看| 国产成人亚洲午夜电影| 四虎国产精品永久免费网址 | 亚洲国产精品嫩草影院| CAOPORN国产精品免费视频| 免费鲁丝片一级观看| 久久夜色精品国产嚕嚕亚洲av| 亚洲成在人线aⅴ免费毛片| 最近免费中文字幕mv电影| 亚洲а∨天堂久久精品|