偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

如何將J2ME API移植到OPhone

移動(dòng)開(kāi)發(fā) 后端
我們將討論一下如何將J2ME API移植到OPhone,希望本文能對(duì)大家有所幫助。

對(duì)于Android的紅火,以及Windows Mobile的跟進(jìn),移動(dòng)OPhone看起來(lái)還像是別人的技術(shù)。不過(guò)如何將J2ME API移植到OPhone,本文就談?wù)撨@些。

中國(guó)擁有世界最龐大的電信客戶群,僅移動(dòng)用戶就達(dá)4億,3G在中國(guó)有最大的市場(chǎng)做后盾,無(wú)論現(xiàn)在的市場(chǎng)發(fā)展如何的困難,3G費(fèi)用的降低是大勢(shì)所趨,不久的將來(lái),必然形成巨大的3G浪潮,3G手機(jī)會(huì)如雨后春筍一般,充滿祖國(guó)大地,如今各大移動(dòng)通信運(yùn)營(yíng)商和移動(dòng)終端開(kāi)發(fā)商都看到廣大的前景,在為3G做最后的準(zhǔn)備。最近作為中國(guó)移動(dòng)業(yè)務(wù)最大的運(yùn)營(yíng)商中國(guó)移動(dòng)公司推出了自己的開(kāi)發(fā)平臺(tái):OPhone OS系統(tǒng)。OPhone OS采用linux2.6內(nèi)核,兼容Android應(yīng)用。

OPhone是中國(guó)移動(dòng)在這次3G浪潮來(lái)臨前打造的主力航空母艦,與中移動(dòng)無(wú)線業(yè)務(wù)平臺(tái)的對(duì)接,OPhone將承載大量3G業(yè)務(wù)應(yīng)用。大量的軟件開(kāi)發(fā)企業(yè)將會(huì)把新的陣地放到移動(dòng)平臺(tái)上來(lái),軟件如:手機(jī)電視、炒股、網(wǎng)游,企業(yè)應(yīng)用MIS,移動(dòng)辦公,都將會(huì)是移動(dòng)設(shè)備發(fā)展的熱點(diǎn),這樣也就需要大量的開(kāi)發(fā)人員,由于手機(jī)開(kāi)發(fā)人員稀少,收入比一般pc開(kāi)發(fā)人員會(huì)更高。由于現(xiàn)在中國(guó)移動(dòng)的大力推廣,如果企業(yè)和創(chuàng)業(yè)者依托mmarket也會(huì)有不錯(cuò)的前景,OPhone作為中國(guó)移動(dòng)大力推廣的戰(zhàn)略平臺(tái)潛力巨大。

Android移植除了硬件外最重要的是Java平臺(tái)之間的移植,目前市面上Java VM主要使用的是Sun公司的Java Micro Edition。而Google Android平臺(tái)采用的是自己開(kāi)發(fā)的Dalvik。如何從過(guò)去J2ME移植到谷歌手機(jī)平臺(tái)呢?

雖然是不同的開(kāi)發(fā)環(huán)境,但是所要實(shí)現(xiàn)的功能都是相近的,因此從功能的角度可以很好的理解OPHONE OS平臺(tái)和J2ME平臺(tái)之間的聯(lián)系和區(qū)別??偨Y(jié)一下,可以發(fā)現(xiàn)從以下四個(gè)方面可以很好的理解兩個(gè)平臺(tái)之間移植。

如果代碼框架寫得好,邏輯部分基本不需要怎么變化,只需要把和平臺(tái)相關(guān)的接口轉(zhuǎn)換一下就可以了。

1)用戶界面

這一點(diǎn)是J2ME移植到Dalvik上最麻煩的地方,Android的圖形類和Sun Jave ME有了很大的不同,同時(shí)m3到m5 SDK上也有更大改變的趨勢(shì),導(dǎo)致了移植時(shí)出現(xiàn)很多需要自己去實(shí)現(xiàn)相關(guān)類,使最終程序的運(yùn)行效率可能會(huì)受影響,真機(jī)沒(méi)有出現(xiàn)的情況下通過(guò)開(kāi)發(fā)板可以適當(dāng)?shù)臏y(cè)試出性能損失。這一點(diǎn)需要花費(fèi)很長(zhǎng)時(shí)間去學(xué)習(xí),也是未來(lái)我們著重需要講解的。

2)數(shù)據(jù)存儲(chǔ)

這方面就顯示出Android 平臺(tái)比Sun Java強(qiáng)大的地方了,Android平臺(tái)附帶了一個(gè)SQLite數(shù)據(jù)庫(kù),和Sun J2ME中的Record Management System (RMS)相比在功能上有了很大的提升,同時(shí)在性能上也會(huì)有不俗的表現(xiàn),在過(guò)去開(kāi)發(fā)J2ME軟件時(shí)一直都采取的是如果數(shù)據(jù)比較簡(jiǎn)單使用自定義的二進(jìn)制格式或XML代替。

3)網(wǎng)絡(luò)數(shù)據(jù)

這部分Android平臺(tái)的做法是import Sun中的I/O讀寫庫(kù)InputStream這樣的類,同時(shí)網(wǎng)絡(luò)相關(guān)的仍然采用Sun的URLConnection類進(jìn)行操作,基本上沒(méi)有變化,移植時(shí)注意下設(shè)備的??臻g簡(jiǎn)單的調(diào)整下就可以了。

4)媒體播放

這部分在Android系統(tǒng)上就有了大幅的改變,官方推薦使用MediaPlayer播放類,該類支持mp3、mid、wav、mp4等常規(guī)媒體格式的播放,相比J2ME中提供的就靈活強(qiáng)大的多。

下面我們一步一步實(shí)現(xiàn)J2ME API在OPHONE OS上的移植。

1、 入口程序MIDlet

學(xué)過(guò)J2ME的開(kāi)發(fā)人員都知道J2ME有一個(gè)主體類MIDlet類,它是程序管理接口,調(diào)用startApp(),進(jìn)入應(yīng)用程序。

同樣,在OPHONE OS平臺(tái)中同樣有一個(gè)主體類Activity,調(diào)用onCreate(savedInstanceState)進(jìn)入某個(gè)交互界面。

下面我們將通過(guò)繼承Activity模擬實(shí)現(xiàn)J2ME中的MIDlet類和方法。

  1. public abstract class MIDlet extends Activity {
  2. public void onCreate(Bundle savedInstanceState) {
  3. super.onCreate(savedInstanceState);
  4. startApp();
  5. }
  6. public abstract void destroyApp(boolean unconditional);
  7. public String getAppProperty(String key) {
  8. return null;
  9. }
  10. public abstract void startApp();
  11. public void notifyDestroyed() {
  12. }
  13. public void notifyPaused() {
  14. }
  15. public void pauseApp() {
  16. }
  17. public void platformRequest(String URL) {
  18. }
  19. public void resumeRequest() {
  20. }
  21. }

2、Canvas

同樣在J2ME中畫板Canvas類與OPhone OS中的View類相似。

 

  1. public abstract class Canvas extends Displayable {
  2. public Canvas(MIDlet context) {
  3. super(context);
  4. }
  5. Graphics g = new Graphics();
  6. public void onDraw(android.graphics.Canvas canvas) {
  7. g.bind(canvas);
  8. paint(g);
  9. }
  10. int getGameAction(int keyCode) {
  11. return 0;
  12. }
  13. int getKeyCode(int gameAction) {
  14. return 0;
  15. }
  16. String getKeyName(int keyCode) {
  17. return "key";
  18. }
  19. boolean hasPointerEvents() {
  20. return true;
  21. }
  22. boolean hasPointerMotionEvents() {
  23. return true;
  24. }
  25. boolean hasRepeatEvents() {
  26. return true;
  27. }
  28. protected void hideNotify() {
  29. }
  30. boolean isDoubleBuffered() {
  31. return true;
  32. }
  33. protected void keyPressed(int keyCode) {
  34. }
  35. protected void keyReleased(int keyCode) {
  36. }
  37. protected void keyRepeated(int keyCode) {
  38. }
  39. protected abstract void paint(Graphics g);
  40. protected void pointerDragged(int x, int y) {
  41. }
  42. protected void pointerPressed(int x, int y) {
  43. }
  44. protected void pointerReleased(int x, int y) {
  45. }
  46. void repaint() {
  47. }
  48. void repaint(int x, int y, int width, int height) {
  49. }
  50. void serviceRepaints() {
  51. }
  52. void setFullScreenMode(boolean mode) {
  53. }
  54. protected void showNotify() {
  55. }
  56. protected void sizeChanged(int w, int h) {
  57. }
  58. }

3、Graphics

J2ME 中的Graphics類和OPhone OS中的paint類相似。在移植中,要用OPhone OS類庫(kù)實(shí)現(xiàn)J2ME中的Graphics類,我們?cè)趯?shí)現(xiàn)的過(guò)程中可以對(duì)Graphics對(duì)象進(jìn)行修飾,通過(guò)整合OPHONE OS 中Canvas并調(diào)類庫(kù)中的Paint類和Color類的方法來(lái)實(shí)現(xiàn)。比如:

  1. Graphics
  2. public class Graphics {
  3. public final static int VCENTER = 0;
  4. public final static int TOP = 1;
  5. public final static int SOLID = 2;
  6. public final static int RIGHT = 3;
  7. public final static int LEFT = 4;
  8. public final static int HCENTER = 5;
  9. public final static int DOTTED = 6;
  10. public final static int BOTTOM = 7;
  11. public final static int BASELINE = 8;
  12. Canvas dist;
  13. private final Paint paint = new Paint();
  14. public void bind(Canvas canvas) {
  15. dist = canvas;
  16. }
  17. public void setColor(int eraseColour) {
  18. }
  19. public void drawImage(Image img, int x, int y, int anchor) {
  20. dist.drawBitmap(img.getTp(), x, y, paint);
  21. }
  22. }}

上面是我們重新定義的Graphics類,在其方法的實(shí)現(xiàn)上,我們調(diào)用了OPHONE OS的一些具體實(shí)現(xiàn)方法,從而用OPhone OS類庫(kù)實(shí)現(xiàn)了J2ME的框架,做到了兩個(gè)平臺(tái)之間很好的移植。

從上面幾個(gè)例子可以看出兩個(gè)平臺(tái)的框架具有很多相似性,這就為兩個(gè)平臺(tái)之間的移植創(chuàng)造了條件。同時(shí)我們也會(huì)看到,兩個(gè)平臺(tái)之間存在一定的差異性,一些在 J2ME中的類和方法無(wú)法通過(guò)直接繼承或者調(diào)用OPhone OS來(lái)實(shí)現(xiàn),這時(shí)候就需要移植人員,自己來(lái)實(shí)現(xiàn)一些相關(guān)的類,這也是移植過(guò)程中需要我們?nèi)ヅ朔睦щy。

【編輯推薦】

  1. 快速上手:Ophone及Android入門教程
  2. Android應(yīng)用程序開(kāi)發(fā)基礎(chǔ):Application組件
  3. Windows Mobile與Android應(yīng)用開(kāi)發(fā)對(duì)比
  4. ExtJS在Android模擬器上的運(yùn)行效果
  5. 中移動(dòng)發(fā)布OPhone SDK 基于Android技術(shù)
責(zé)任編輯:彭凡 來(lái)源: Javaeye
相關(guān)推薦

2010-07-26 10:56:32

J2ME平臺(tái)

2009-03-22 09:38:03

Android移植J2ME

2010-09-29 08:57:04

J2ME前景

2010-09-29 16:20:06

J2MEWeb服務(wù)API

2009-03-26 09:25:14

J2MEJCPJSR

2010-09-29 09:19:39

J2ME開(kāi)發(fā)工具

2010-10-09 15:07:09

J2MEWeb服務(wù)

2009-06-23 11:30:16

RMSJ2ME

2010-09-30 09:56:26

J2ME Polish

2010-09-30 13:28:55

J2ME圖形

2009-06-08 21:34:09

J2EEJ2SEJ2ME

2010-09-29 13:50:31

J2MEJ2SE

2009-07-09 16:06:10

JDK J2EE J2

2011-12-02 10:37:14

JavaJ2ME

2010-09-29 13:37:20

J2MEPIM

2010-09-30 12:53:00

J2MECSS

2010-09-30 13:48:10

J2ME游戲引擎

2010-09-29 13:09:48

OTAJ2ME程序

2010-09-30 11:16:53

J2ME Snake腳

2009-09-04 11:10:51

開(kāi)源J2ME UI庫(kù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)