讓變化成為計劃的一部分

          歡迎大家探討本Blog涉及的所有軟件課題。我的Google Talk ID:zhengyun(at)gmail.com。

          我最希望軟件帶給用戶的感受是:美好的體驗、舒適感、簡約、干凈...

          posts - 32, comments - 8, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          2005年12月27日

          鄭昀@ultrapower

          產品名稱

          產品版本

          Keyword: Mobile RSS Bloglines

          BloglinesMobileBuddy

          1.0.12

           [J2ME] BloglinesMobileBuddy

          (Bloglines手機伴侶)

          開源說明

           

          我的資源:

          http://www.cnblogs.com/Files/zhengyun_ustc/BloglinesMobile-src.rar

          雖然還有這樣那樣的問題,但是作為一個Alpha版本的j2me軟件,能夠在Nokia S60系列手機上運行,這樣已經足夠了,所以先放出源代碼,希望拋磚引玉吸引有志者繼續在此基礎上修改。

          http://www.cnblogs.com/Files/zhengyun_ustc/flickrBuddy.rar

          服務器端的web service已經能夠發布alpha版本了,請在下載。這是一個tomcat+axis搭建環境下的java web service

          提請注意的是,由于本源代碼中包含了bluegammon/jmobilecore/henson.midp.Float/Zohar Melamed’s Jbloglines等開放源代碼庫,所以我也遵循GPL協議,請看后面的“開源版權聲明”。

          http://www.cnblogs.com/Files/zhengyun_ustc/BloglinesMobile-deployed.rar

          Nokia S60系列安裝程序,用數據線傳BloglinesMobile.jar到您的手機上即可安裝。

          測試體驗

          我在Nokia 7610上測試過了,整體視覺效果還是不錯的,而且登錄和閱讀速度還是蠻快的。昨晚上,在手機上竟然踏踏實實把按摩乳的《讓小強真正來一次歷險》和《正面新聞》共計七千七百余字的網志看完了,呵呵,不得不佩服Nokia7610的內存夠大的,竟然還能夠流暢地顯示。

           bloglinesbuddy.myfeeds bloglinesbuddy.getitems

          為什么要為Bloglines制作無線閱讀軟件呢?

          200510月,Web 2.0 Conference最后一天的會議上,Ask Jeeves的一位副董事長公布了旗下Bloglines網站的一些最新數據(PPT格式),這些數據也可以從另一個方面體現出目前RSS的使用狀況。

          - 有超過135萬條Feed至少有一個訂閱者。

          - 14,363Feed的訂閱者超過50人。

          - 437Feed的訂閱者在1000人以上。

          - 60Feed5000人以上訂閱。

          - Slashdot是唯一訂閱者超過50000人的Feed

          Bloglines是目前使用最為廣泛的在線RSS閱讀服務之一,這么多的訂閱者,他們也許需要在無線條件下閱讀Bloglines提供的服務,所以我制作了這款手機程序。

           

          Bloglines 是什么

          Bloglines 是一個全球最搶眼的基于Webblog訂閱跟蹤服務之一,它允許個人對 weblog 和新聞的各種訂閱保持跟蹤,這些訂閱內容以 Really Simple SyndicationRSS)和 Atom 提供的形式交付。

          我每天第一件事情就是打開bloglines,看看我訂閱的21個資料庫有沒有更新他們的blog21個資料庫,是不是少了點?我也曾經看過其他人有過成千上萬個資料庫,不過,我感覺其中80%blog其實不值得逐日跟蹤。

           bloglines.web.keso

          開源版權聲明

          由于我這個版本的 Bloglines Mobile Buddy手機伴侶 也是基于bluegammon/jmobilecore/henson.midp.Float/Zohar Melamed’s Jbloglines基礎上加入我的智慧整合而來的,所以決定遵照GPL協議的大意開放源代碼,您可以自由傳播和修改,在遵照下面的約束條件的前提下:

           

          條件1

          只要你在Bloglines Mobile Buddy每一副本上明顯和恰當地出版版權聲明,保持此許可證的聲明和沒有擔保的聲明完整無損,并和程序一起給每個其他的程序接受者一份許可證的副本,你就可以用任何媒體復制和發布你收到的原始的程序的源代碼。你可以為轉讓副本的實際行動收取一定費用,但必須事先得到鄭昀的同意。

           

          條件2

          你可以修改Bloglines Mobile Buddy程序的一個或幾個副本或程序的任何部分,以此形成基于程序的作品。只要你同時滿足下面的所有條件,你就可以按前面第一款的要求復制和發布這一經過修改的程序或作品。

           

          a

          你必須在修改的文件中附有明確的說明:你修改了這一文件及具體的修改日期。

           

          b

          你必須使你發布或出版的作品(它包含程序的全部或一部分,或包含由程序的全部或部分衍生的作品)允許第三方作為整體按許可證條款免費使用。

           

          c

          如果修改的程序在運行時以交互方式讀取命令,你必須使它在開始進入常規的交互使用方式時打印或顯示聲明:包括適當的版權聲明和沒有擔保的聲明(或者你提供擔保的聲明);用戶可以按此許可證條款重新發布程序的說明;并告訴用戶如何看到這一許可證的副本。(例外的情況:如果原始程序以交互方式工作,它并不打印這樣的聲明,你的基于程序的作品也就不用打印聲明)。

           

          這樣,您就可以自由使用并傳播本源代碼,當然請您原封不動地保留原作者信息。

           

          編寫者

          日期

          關鍵詞

          鄭昀@ultrapower

          2005-12-27

          Mobile

          RSS READER ONLINE

          BLOGLINES

          Java J2ME

          posted @ 2005-12-27 15:34 讓變化成為計劃的一部分 閱讀(622) | 評論 (2)編輯 收藏

          2005年12月26日

          我的個人觀點,不知道對不對(http://community.csdn.net/Expert/topic/4477/4477765.xml?temp=.6836969):
          你所說的KEY_SOFTKEY1,KEY_SOFTKEY2,KEY_SOFTKEY3這幾個定義,應該是Nokia UI API中的FullCanvas定義的吧?
          而MIDP2.0的Canvas規范并沒有定義這幾個。

          請看:
          《Series 60 Developer Platform 2.0: Specification v1.0》,
          Page 77:
          Left soft key, -6, "Left soft key" or left soft-key symbol
          Right soft key, -7, "Right soft key" or right soft-key symbol
          Middle soft key, -5, "Select", "Middle soft key" or similar symbol
          所以我們的Nokia、Samsung和SonyEricsson專有程序中會這么定義:
              /**
               * Key code for the FIRE game action.
               */
              public static final int KEY_FIRE = -5;

              /**
               * Key code for left soft key
               */
              public static final int KEY_SOFT_LEFT = -6;

              /**
               * Key code for right soft key
               */
              public static final int KEY_SOFT_RIGHT = -7;
          在摩托羅拉專有的程序中則這么定義:
              /**
               * Key code for the FIRE game action.
               */
              public static final int KEY_FIRE = 20;

              /**
               * Key code for left soft key
               */
              public static final int KEY_SOFT_LEFT = 21;

              /**
               * Key code for right soft key
               */
              public static final int KEY_SOFT_RIGHT = 22;
          在西門子程序中則這么定義:
              /**
               * Key code for the FIRE game action.
               */
              public static final int KEY_FIRE = -26;

              /**
               * Key code for left soft key
               */
              public static final int KEY_SOFT_LEFT = -1;

              /**
               * Key code for right soft key
               */
              public static final int KEY_SOFT_RIGHT = -4;

          Softkeys并沒有被包含在MIDP2.0的規范中,所以,
          如果你非要在手機上使用這幾個Softkeys,那么請注意手機的差異,你可能需要針對不同款手機分別定義了。

          以下對撥打電話的手機按鍵的定義是在nokia、三星和Motorola(v80/220/300/400/500/600, e398, c650):

          以下內容為程序代碼:

          /**
               * Key code for PHONE_ON key (green button)
               */
              public static final int KEY_PHONE_ON = -10;

          以下這種定義是在西門子:

          以下內容為程序代碼:

          /**
               * Key code for PHONE_ON key (green button)
               */
              public static final int KEY_PHONE_ON = -11;

          以下這種定義是在Motorola platform phones iDEN, T280, T72x, v6x

          以下內容為程序代碼:

          /**
               * Key code for PHONE_ON key (green button)
               */
              public static final int KEY_PHONE_ON = -14;

          posted @ 2005-12-26 15:16 讓變化成為計劃的一部分 閱讀(673) | 評論 (0)編輯 收藏

          2005年12月25日

          源代碼下載:服務器端的web service已經能夠發布alpha版本了,請在http://www.cnblogs.com/Files/zhengyun_ustc/flickrBuddy.rar下載。這是一個tomcat+axis搭建環境下的java web service。

          2005年12月25日晚上:
          今日完成的開發,是點擊前面列出的blog訂閱源標題,則請求bloglines檢索這個特定訂閱的博客登錄條目。
          以彈出式對話框展示文章內容。
          下面演示此j2me軟件:

          第一步,輸入你的bloglines登錄電子郵件地址:

          bloglines.inputusermail ,

          然后輸入你的登錄密碼:

          bloglines.inputpassword 

          然后手機將去bloglines站點檢索你所訂閱的blog源,并將標題和未讀blog條目數顯示在界面上,如下所示:

          bloglinesbuddy.myfeeds

          點擊其中一個blog標題,你可以看到該blog的你尚未讀過的blog文章集合,如下所示:
          bloglinesbuddy.getitems 

          與之對照的blog文章如下所示:
          bloglines.web.solidot 

          更多圖片:
          BloglinesBuddy.mainmenu   
          BloglinesBuddy.about  

          posted @ 2005-12-25 22:55 讓變化成為計劃的一部分 閱讀(402) | 評論 (0)編輯 收藏

          2005年12月25日:
          制作完成了flickrBuddy web service,可以完成對bloglines api的方便調用。手機客戶端則使用kSoap來訪
          問這個flickrBuddy web service來獲得用戶的bloglines訂閱源。
          首先,可以看到你的“my feeds”中列出的blog訂閱源標題以及未讀條目的數目。比如:
          Engadget Simplified Chinese[16]
          旁觀者的奇妙冒險[0]
          未完成 - Incomplete[0]
          王建碩[0]
          車東[Blog^2][0]

          bloglinesbuddy.myfeeds 

          它是利用了http://www.bloglines.com/myblogs這個世界上最大的blog訂閱源服務提供的服務,請看它的界面:

          bloglines.webinterface 

          下面是我的“關于”,呵呵,
          BloglinesBuddy.about

          下一步完成:
          點擊“Engadget Simplified Chinese[16]”的標題菜單,就可以看到未讀的條目全文。

          posted @ 2005-12-25 16:56 讓變化成為計劃的一部分 閱讀(396) | 評論 (0)編輯 收藏

          2005年12月16日

          第一,
          下面的代碼在索愛機型上可以運行,在nokia s60模擬器上也可以運行,唯獨不能在nokia 7610上運行,程序會自動退出:

          new Thread(this, "Menu thread").start();


          必須改寫為

          Thread thread;
          (thread = new Thread(this)).start();

          方能在真機上運行。

          這種程序自動退出的問題,有時候是因為你根本猜想不到的代碼導致的,這時候只能通過二分排除法(不斷地注釋代碼來縮小代碼范圍)來判定了。

          第二,再譬如說,
          你的代碼中有對double的使用,比如這種代碼:

          double alpha = (double)Math.abs(i - m_canvasWidth / 2) /
                                     (double)m_canvasWidth;


          但是,注意一點,CLDC1.1才開始支持Math,“Math functions in java.lang package is available only since CLDC-1.1”。所以,如果你一旦在CLDC1.0的nokia手機上使用,那么,即使你用了try/catch捕獲異常,程序也會自動退出。

          這時候你也不要驚詫。

          第三,
          Thread thread;
                (thread = new Thread(this)).start();代碼可以運行。
          但是Thread thread;
                (thread = new Thread(this, "Menu thread")).start();
          就會導致Nokia真機立即退出。
          同樣,
          Thread thread;
                    (thread = new Thread(new Runnable()
                    {
                      public void run()
                      {
                        m_inputHandler.handleStringInput(input);
                      }
                    }, "inputHandler")).start();
          也會導致立即退出。
          以上雖然模擬器可以運行,但是真機是不允許的。

          posted @ 2005-12-16 14:34 讓變化成為計劃的一部分 閱讀(829) | 評論 (0)編輯 收藏

          2005年12月7日

          Midletinfo

          探索手機

          javaME系統信息的實用工具

          摘要:

          本文檔幫你了解實用工具midletinfo,簡單地說,它發掘了javaME所能得到的大多數系統信息,對試圖將自己的程序在不同款手機上運行的開發者會很有幫助的。

          1背景

           

          1.1. 下載

          下載鏈接:http://jmobilecore.sourceforge.net/midletinfo/index.html

          官方介紹:

          Midletinfo展示以下信息:

          u       系統信息:內存以及j2me屬性;

          u       屏幕信息:分辨率、色彩支持、繪制屬性和按鍵屬性;

          u       字體;

          u       畫布上按鍵對應的值(很有用!)

          u       所支持的連接協議類型;

           

          這些信息對于開發者而言,都非常有用。比如說很多開發者遇到的問題是,按鍵對應的數值,每款手機都不太一致,用midletinfo就很容易幫你確定了。

          源代碼在此:http://jmobilecore.sourceforge.net/midletinfo/src

           

          1.2. 系統信息

          如圖所示:
           systeminfo

          看,編碼類型、cldc類型、midp類型都知道了。

           

          1.3. 屏幕信息

          如圖所示:
          screeninfo 

          是否支持雙緩沖、屏幕大小都知道了。

           

          1.4. 按鍵信息

          如圖所示:

          keyinfo 
          按下哪個鍵,屏幕上就繪制出這個鍵對應的值。

           

          1.5. 連接協議信息

          如圖所示:

          connectioninfo 
          看,手機當前是否支持
          http/tcp/udp/file/sms/cbs/ssl都可以立即知道。

           

          鄭昀@ultrapower

          名稱

          版本

          Keyword: midlet information j2me tool

          midletinfo

          0.9.1

           

          posted @ 2005-12-07 15:30 讓變化成為計劃的一部分 閱讀(621) | 評論 (2)編輯 收藏

          2005年12月1日

               摘要: 另外,還有一篇必讀的文章《Debugging MIDP HTTP Requests,http://developers.sun.com/techtopics/mobility/midp/articles/httpdebug/》,也給出了一份源代碼,http://developers.sun.com/techtopics/mobility/midp/articles/httpdebug/src/ht...  閱讀全文

          posted @ 2005-12-01 18:19 讓變化成為計劃的一部分 閱讀(832) | 評論 (0)編輯 收藏

          2005年11月25日

          不知道大家有否看過“反編譯的西伯利亞攻擊源代碼”的代碼,okay,不知道它的權威性有多大,不過西伯利亞攻擊這個游戲還是有名氣的,也許值得一看。
          它的主引擎就是聲明一個靜態的圖片數組:
          class MainEngine extends FullCanvas
              
          implements Runnable
          {
          。。。。
              
          static Image imgs[];
              
          public static void initImage() {
                
          if (!isLoadImg) {
                  
          if(imgs == null)
                      imgs 
          = new Image[GameData.imgName.length];
                  
          for (int i = 0; i < GameData.imgName.length - 1; i++{
                    
          if (imgs[i] == null{
                      
          try {
                        imgs[i] 
          = Image.createImage("/" + GameData.imgName[i]);
                      }

                      
          catch (Exception ex) {
                        System.out.println(
          "i:"+i);
                        ex.printStackTrace();
                      }

                    }

                    percent 
          = (i * 100/ (GameData.imgName.length - 1);
                    Sib.engine.flushGraphic();
                  }

                  isLoadImg 
          = true;
                }

              }

          而且我搜索了它的5個java文件,它在什么情況下調用System.gc()呢?
          下面三種情況:
          用戶返回游戲時(可能之前去接聽電話了?或者去設置里改參數了?);
          用戶選完飛機后,這可能是一個選項菜單,選飛機時所用到的資源可能以后在游戲中沒必要用,所以及時回收一下;
          顯示過關界面時,這時候有卡的現象,歡喜的用戶也不會在意的。

          除此之外就沒有了。

          Nokia 的文檔Known Issues In The Nokia 6600 MIDP 2.0 Implementation v1.7說:
          2.15.1 Garbage collecting
          Description
          Calling the System.gc() method results in extreme slowness and jamming. In Monty 1.0 VM, garbage
          collection is different and every time System.gc is called, the entire memory is really cleared.
          This is an extremely slow process!
          Solution
          Do not call the System.gc method at all, or call the System.gc() garbage collecting method only
          in non-time-critical situations, such as screen transitions, state transitions, pause states,
          etc. If the System.gc() method is used, it is recommended to add a short delay (~20-50 ms) after
          the method call to ensure the sufficient time for the garbage collection, as in the following

          example
          System.gc();
          Thread.sleep(delay); delay = 20-50 ms

          posted @ 2005-11-25 16:40 讓變化成為計劃的一部分 閱讀(1132) | 評論 (1)編輯 收藏

          2005年11月23日

          [JavaME]手機上如何繪制半透明圖片

          windcao提供了一個CreateAlphaImage方法

          Windcao提供的CreateAlphaImage的意思是這樣的“如果需要半透明可以先在image上畫,然后把這個Image弄成半透明的。最后將Image繪到Canvas上就OK了”。

           他的處理函數如下所示:

          public static Image CreateAlphaImage(int Alphalike 0x88000000,Image src) {
                  
          int w,h;
                  w
          =src.getWidth();
                  h
          =src.getHeight();        
                  
          int len=wh;
                  
          int srcRgb[]=new int[len];
                  
          int dscRgb[]=new int[len];

                  
          try{
                      src.getRGB(srcRgb,
          0,w,0,0,w,h);
                  }

                  
          catch(Exception ex){
                      ex.printStackTrace();
                  }


                  
          for (int i = 0; i  len; i++{
                   
                          dscRgb[i] 
          = srcRgb[i]+Alpha;
                  }

                  Image result
          =Image.createRGBImage(dscRgb,w,h,true);
                  
          return result;
              }

           

          我在工程中用了,有效果,好像也不需要對原始的Image src有什么特殊要求。

          translucenceCustomItem 
           

          可以與

          directlypaintCustomItem  

          做一下對比。

          后者沒有將圖片作CreateAlphaImage處理。所以繪制的圖片覆蓋了原來的文字。

          我是在一個CustomItem擴展類中使用這個半透明圖片的,代碼如下所示:



          public class StringKeyItem extends CustomItem{
          。。。
                
          private static Image m_imageCommand =
              CommandResources.getImage(CommandResources.IMG_COMMAND);
          。。。
                
          public StringKeyItem( 
                 GUIController control,
                 
          int inIndent, String inText )
                 
          {
          。。。
              m_imageCommand 
          = CreateAlphaImage(0x88000000,m_imageCommand);
                 }


          。。。
              
          public void paint( Graphics g, int w, int h )
                  
          {
          。。。
                     
          // draw the text: word-wrap is an exercise for the reader
                      g.drawString( text, 
                          indent 
          * INDENT_MARGIN + FONT_HEIGHT, 0, g.TOP | g.LEFT );
                      
              
          /*
               * 繪制一個半透明的前景圖片,剛好就貼在StringKeyItem的文字上,還可以顯示底色以及文字
               
          */

              g.drawImage(m_imageCommand, 
                      indent 
          * INDENT_MARGIN + FONT_HEIGHT, 0, g.TOP | g.LEFT);
                  }

           

          實踐效果還是不錯的。

          感謝windcao的代碼共享和思路提供!

          posted @ 2005-11-23 16:46 讓變化成為計劃的一部分 閱讀(1168) | 評論 (0)編輯 收藏

          為什么會在HttpConnection訪問遠端服務器時,得到了ArrayIndexOutofBoundException異常呢?
          有這么一種可能:
          遠端服務器雖然完整地響應了數據,但是卻存在兩種隱患:服務器沒有正確地設置HTTP_CONTENT_LENGTH頭域,
          或者設置了但是在傳輸過程中,可能遠端服務器和手機之間的某一代理服務器人為修改,導致
          在手機端,代碼仍試圖按照HTTP_CONTENT_LENGTH的錯誤數值-1去檢索數據,所以得到了這個異常。

          解決辦法:
          一是確定服務器端正確地改寫了HTTP_CONTENT_LENGTH頭域;
          二是針對手機端拿到了HTTP_CONTENT_LENGTH的錯誤數值-1,作相應處理。

          posted @ 2005-11-23 15:32 讓變化成為計劃的一部分 閱讀(714) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 荃湾区| 奉化市| 磴口县| 平远县| 吴忠市| 且末县| 三江| 株洲市| 泗阳县| 双江| 万宁市| 开原市| 台湾省| 虞城县| 左权县| 阳朔县| 荃湾区| 聊城市| 嘉黎县| 满洲里市| 哈巴河县| 翁源县| 铁岭县| 桦南县| 古蔺县| 楚雄市| 清涧县| 通道| 轮台县| 伊宁市| 凤庆县| 渭南市| 普定县| 浏阳市| 自贡市| 兴国县| 磐安县| 连南| 邻水| 郸城县| 台南市|