顯示具有 J2ME 標籤的文章。 顯示所有文章
顯示具有 J2ME 標籤的文章。 顯示所有文章

2009年2月5日 星期四

Nokia 5800 XpressMusic一樣不支援"CameraControl"

記得一年多前,用N95把玩Camera時,當時研究J2ME對Camera的支援程度
發現AMMS API(JSR-234)在N95中 not support CameraControl
沒想到一年後,JavaTM ME Developer's Library從1.4版升級到3.1..
而AMMS API也更新為1.1版本,很不幸...一樣不支援

原本想說S60 5th版本對J2ME支援會有所突破,看來並非如此。
目前看來對S60 5th版本新增加的部份有
  • Tactile Feedback(震動回饋)
  • Touch UI
看來增加的部份相當少,連螢幕旋轉的功能都沒有!
J2ME能玩的東西越來越少了,感覺Flash Lite慢慢要勝過J2ME嘍....

另外在profile部份,Nokia 5800支援還不少,像Location API及eSWT API感覺都還蠻有趣的,有時間一定要好好研究一下~

Nokia 5800 Specifications

之前提到使用MMAPI設定抓取照片的格式與大小,一開始是直接看Sun's mmapi specifications,後來發現在JavaTM ME Developer's Library當中也有詳細說明支援的程度。
仔細一看才發現,原來Nokia的MMAPI是不支援exif格式.....

如果想改變拍照時格式與大小,可以參考以下範例:
(資料參考JavaTM ME Developer's Library 2.3)
  • videoControl.getSnapshot(null); //如果都不設定預設為png,160x120大小
  • videoControl.getSnapshot("encoding=bmp"); //bmp格式
  • videoControl.getSnapshot("width=80&height=60"); // default PNG
  • videoControl.getSnapshot("encoding=bmp&width=80&height=60")
  • videoControl.getSnapshot("encoding=jpeg&quality=10"); //quality指的是輸出品質10為最高(範圍1~10)
而encoding部份,Nokia支援的格式有png, bmp, gif, jpeg四種格式。

另外之前提到,建立Player時需要device的名稱,而Nokia分為三種:
  • capture://video (for video recording and image capture)
  • capture://devcam0 (for video recording and image capture)
  • capture://devcam1 (second camera, if the device has two cameras, only 3G phone)

2007年10月24日 星期三

Nokia N95 not support "CameraControl"

沒想到Nokia N95竟然不支援CameraControl,都已經支援AMMS了,沒想到只有部份的packages可以正常使用,看來真的要朝Symbain C++邁進了!

AMMS中不支援的packages有:
  • javax.microedition.amms.control.camera

  • javax.microedition.amms.control.imageeffect

  • javax.microedition.amms.control.tuner

詳細資訊

Java ME Developer's Library 1.4

因為無法使用AMMS中camera的packages,導致無法調整J2ME在錄影時的畫質,看來只能使用176x144 15 fps的畫質來進行截取了.....

另外,在撰寫程式時發現,如果直接使用"capture://video"是可行的~
player = Manager.createPlayer("capture://video");
但要調整其編碼方式,如果直接將參數加在後面,在執行程式時會出現exception。例:
player = Manager.createPlayer("capture://video?encoding=3gpp");
or
player = Manager.createPlayer("capture://video?encoding=mp4");
但如果不要使用"capture://video",改為"capture://devcam0"的話就可以更改編碼方式,如下例:
player = Manager.createPlayer("capture://devcam0?encoding=video/mp4");


2007年10月12日 星期五

Samsung and Sun → Java Phone

  10/10時,Samsung和Sun宣怖要合作開發Java Phone與iPhone競爭手機的市場,而且將會比iPhone來的便宜,甚至功能會超越熱賣的iPhone。好奇的是為什麼會與Samsung合作呢?或許是因為Samsung在近幾年在3C產品的技術及創新,不斷的提升的關係吧;不過,根據報導Samsung將提供硬體上的支援,而Sun提供軟體上的技術,期待此合作的產品推出。

  其實Java Phone很早前就提出了(1998年時有提出Java OS與Java CPU),在2006年的JavaOne時,SavaJe這家公司提出了這項產品,或許大家會認為所謂的Java Phone與現在的Java手機game或是軟體有何差異?事實上,差異是很大的,普遍我們看到的Java手機都是在各家公司所研發的OS(Symbian, WinCE等)之上放置所謂的虛擬機器(JVM,手機上也有稱為KVM),而下載的Java遊戲則在此KVM上運行;而SavaJe所提出的Java Phone則擺脫其它的OS,直接將Java VM運行在硬體之上。
(註:SavaJe OS的廣義稱法是SavaJe Mobile Platform,過去手機用的SavaJe OS稱為SavaJe OS Smartphone Edition。)
2006年時JavaOne展示的Java Phone

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月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);
以上階為程式片段。