2007年10月10日 星期三

Eclipse HotKey

把Eclipse覺得好用的HotKey列出來:

程式碼自動排版:Ctrl+Shift+F
└如果從另一地方複製的程式排版有問題時,可以透過此熱鍵進行自動排板。

編譯程式:Ctrl+B
└快速編譯目前project的程式

快速執行程式:Ctrl + F11
└快速執行目前project的程式

將選取的文字註解:Ctrl+/
└當用滑鼠選起的文字加上此熱鍵可以快速註解,很適合debug。

Template:Alt + /
└加快撰寫程式的速度,如當使用for+Alt + /時,會馬上將for迴圈的程式結構自動填上。如需要增加Template可以從Windows→Preferences...→Java→Editor→Template進行設定。

2007年10月7日 星期日

Serial Port Monitor相關軟體

最近又要開始接觸RFID相關的研究,發現Windows內建的超級終端機不大方便,用來解析16進位的資料並不好用,所以就搜尋網路上可以用的serial port軟體。

以下列了幾個不錯的監控軟體:

Free Serial Port Monitor
└ 提供免費版,但要全功能需要花錢註冊。

Advanced Serial Port Monitor
└
Advanced Serial Port

Access Port
└ 提供免費版,也有支援繁體中文喔。(推薦)
Access Port

Hinet hiChannel 無畫面問題

  因為新住的地方沒有電視的關係,所以都必需要透過網路的方式收看電視新聞,因為使用Hinet的ADSL也有免費的電視可看,所以就選擇使用hiChannel來收看,發現竟然無畫面有聲音,更新了Flash、Media Player也都沒有用,後來發現必需要設定Media Player裡面的設定,才可以正常收看。

進入Media Player→選項→效能→視訊加速(進階)

勾選"使用重疊"(藍框部份)
確定後,再重開一次就可以正常收看嘍。

2007年10月3日 星期三

J2ME開發相關資源

Forum Nokia Java Code and Exmple
└Nokia所提供的J2ME上開發的一些範例

MMAPI Support
└MMAPI在Nokia各手機支援多媒體的程度

Java ME Device Table
└查詢目前支援J2ME的手機所提供哪些profile

Eclipse
└開發Java的好工具

EclipseME
└開發J2ME的工具(plugin)

2007年10月1日 星期一

有關J2ME與Camera

最近在整理與評估J2ME與Symbian C++對於camera的支援程度,感覺還蠻多東西要survey的。

最近幾年新增的J2ME JSR,並找了之後camera會使用到的JSR

JSR-135 MMAPI (Mobile Media API)

JSR-234 高階多媒體補充AMMS (Advanced Multimedia Supplements)

JSR 226 延展性2D 向量圖應用程式 (Scalable 2D Vector Graphics API for J2ME)

目前確定的在MMAPI上N95目前可順利執行,且抓圖也正常。

JSR-234與JSR-226在N95上確定支援,似乎只有S60 3nd FP1的手機才支援(N80不支援)。不過也發現Sun也有提供J2ME Device Table讓使用者查詢手機支援JSR的程度。

Nokia N95支援的JSR Profile
CLDC 1.1 (basic)
MIDP 2.0
(basic)
M3DAPI 1.0
Scalable 2D Vector Graphics
MMAPI / JSR 135
Web Services
Bluetooth
Adv Multimedia Supp / JSR 234
Nokia UI API
SATSA
Location API
PDA Optional
WMA 2.0 / JSR 205
SIP API
JTWI
Nokia官方網站也有詳細N95的規格。

MMAPI抓取內置相機的方式
//利用Player去抓取內置相機路徑
Player player = Manager.createPlayer( "capture://video" );
※注意:如果要進行拍照, 且要輸出為jpeg格式時, 必需要將"capture://video"改為"capture://devcam0"才可正常在MIDlet上正確顯示
//初始化
player.realize();
//抓取Video control
VideoControl videoControl = (VideoControl) ( player.getControl("VideoControl") );
//設定Display mode
videoControl.initDisplayMode( VideoControl.USE_DIRECT_VIDEO, this );
//設定video顯示位置
videoControl.setDisplayLocation(x, y);
//設定video顯示大小
videoControl.setDisplaySize( Width, Height );

使用MMAPI錄音
//建立手機內置錄音的資料來源(DataSource)
Player p = Manager.createPlayer("capture://audio");
p.realize();
RecordControl rc = (RecordControl)p.getControl("RecordControl");
//設定儲存位置
rc.setRecordLocation("file:/tmp/audio.wav");
rc.startRecord(); //開始紀錄
p.start(); //錄音五秒
Thread.currentThread().sleep(5000);
p.stop(); //停止
rc.stopRecord(); //停止紀錄
rc.commit(); //完成
使用MMAPI拍一張照片
//從camera抓取一張照片, 如果傳入值設定為null時, 抓取格式為系統預設值.
byte[] pngImage = videoControl.getSnapshot( null );

也可以把null替換成下列格式,抓取所想要的圖片格式
encoding=gray8&width=160&height=120
encoding=jpeg&quality=80&progressive=true&type=jfif
(progressive JPEG with quality 80 in jfif format)
encoding=jpeg&type=exif
(JPEG in exif format)
encoding=png&colors=rgb888
(24 bits/pixel PNG)
encoding=rgb888
(raw 24-bit rgb image)
encoding=rgb&colors=rgb888
(raw 24-bit rgb image)

//example
byte[] pngImage = videoControl.getSnapshot( "encoding=png&colors=rgb888 " );

//最後再將取得的data建立成image, 並draw出來
Image image = Image.createImage(pngImage, 0, pngImage.length);
g.drawImage(image, 0 , 0 , 0);
以上階為程式片段。