Tài liệu lập trình trên thiết bị di động docx

20 1.6K 15
Tài liệu lập trình trên thiết bị di động docx

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

1 P TRÌNH TRÊN THIT BI DI NG 1. Gii thiu Java và ng dng lp trình trên thit b di ng 1.1 Gii thiu v Java Vào nhng nm 1990, Java c ra i t d án xanh và ban u c xây dng  kiim sóat các thí b dân dng và mt s thit b cm tay. Java c xây dng ch yu da trong b công c phát trin (Java Development Kit – JDK) nh là th vin chun trong ó cha trình biên dch, trình thông dch,… ây chính là nn tng cho vic phát trin ng dng Java. Hin nay các nhà phát trin ã xây dng nhiu nhánh mi cho Java nh: J2EE ( Java 2 Platform Enterprise Edition): Phiên bn dành cho máy ch ln vi sc nh x lý và dung lng b nh ln. J2SE ( Java 2 Platform Standard Edition): Phiên bn chun chy trên các máy PC và laptop. J2ME ( Java 2 Platform Micro Edition): là phiên bn rút gn ca Java cho các thit di ng gii hn v b nh và b x lý. 1.2 ng dng lp trình trên thit b di ng bng J2ME c tiêu ca ca J2ME là cho phép ngi lp trình vit các chng trình ng dng ng lp i thit b di ng, không cn quan tâm n phn cng. J2ME c xây dng bng các tng khác nhau  giu i vic thc hin phn cng khi nhà phát trin. Sau ây là các tng ca j2ME c xây dng trên CLDC: ng phn cng thit b: ây là thit b di ng vi cu hình phn cng ca nó nh b nh, c  x lý. Các thit b di ng khác nhau có th có các b x lý khác nhau vi các mã lnh khác nhau. Mc tiêu ca J2ME là cung cp mt chun cho tt c các lai thit b di ng khác nhau. ng máy o Java: Khi mã ngun Java c biên dch nó c chuyn i thành mã bytecode. Mã bytecode này sau ó c chuyn thành mã ngôn ng máy ca thit b di ng. Tng máy o java bao gm KVM ( K virtual Machine) là b biên dch mã bytecode có nhim v chuyn mã bytecode ca chng trình Java thành ngôn ng máy  chy trên thit b di ng. tng này cung p mt s chun hóa cho các thit b di ng ng dng J2ME sau khi ã biên dch có th hat ng trên bt k thit b di ng nào có J2ME KVM. Phn cng thit b Máy o Java u hình CLCD-( Connected Limited Device Configuration) Hin trng MIDP- Mobile Information DeviceProfile Các API khác 2 ng cu hình : ng cu hình ca CLDC nh ngha giao din ngôn ng Java c bn  cho phép chng trình java chy trên thit b di ng. ây là mt tp các API nh ngha lõi ca ngôn ng J2ME . Ngi lp trình có th s dng các lp và phng thc ca các API này tuy nhiên các API hu dng hn c cha trong tng hin trng. ng hin trng: Tng này cung cp các API hu dng hn cho ngi lp trình. Mc ích a hin trng là xây trên lp cu hình và cung cp nhiu th vin ng dng hn. MIDP nh ngha các API riêng bit cho thit b di ng. Cng có th có các hin trng và các API khác ngòai MIDP c dùng cho ng dng, cng có th có mt hin trng nh ngha các API cho vic to các ng ng Bluetooth. Hin nay, MIDP có hai phiên bn là MIDP 1.0 và MIDP 2.0 và cung cp: - Các lp và các kiu d liu -  tri tng Display -  tr Form và giao din ngi dùng -  tr Timer và Alert -  tr Record Management System( RMS) cho vic lu tr d liu. Các tính nng ni bt ca MIDP 2.0 so vi MIDP 1.0: - Nâng cp tính nng bo mt, h tr giao thc HTTPS, kim sóat vic kt ni máy di ng i server. - Thêm các API h tr Multimedia. -  rng các tính nng ca Form 2. MIDlet Các ng dng J2ME c gi là MIDlet ( Mobile Information Device Applet). MIDlet là mt p java m rng ca lp tru tng javax.microedition.midlet.MIDlet và thc thi các phng thc startApp(), pauseApp(), và destroyApp(). an chng trình ti thiu ca MIDlet: import javax.microedition.midlet.*; public class exMIDlet extend MIDlet { public exMIDlet( ) { } public void startApp( ) { } public void pauseApp( ) { } public void destroyApp( boolean unconditional ) { } } Trong ó : o Phng thc exMIDlet là hàm constructor . o Phng thc startApp( ) : c gi bi b qun lý ng dng khi MIDlet c khi to hay khi MIDlet tr v trng thái tm dng. o Phng thc pauseApp( ) : c gi bi b qun lý ng dng mi khi ng dng n c tm dng. o Phng thc destroyApp( ): c gi khi thoat khi MIDlet. 3.  ha trong J2ME Các lp MIDP cung cp hai mc  ha:  ha mc thp và  ha mc cao.  ha mc cao dùng cho vn bn hay form.  ha mc thp dùng cho các ng dng games. 3 3.1  ha mc cao  ha mc cao là lp con ca lp Screen. Nó cung cp các thành phn nh text box, form, list và alert. 3.1.1 TextBox p Textbox cho phép ngi dùng nhp và san tho vn bn. Ngi lp trình có th nh ngha s ký t ti a, gii hn d liu nhp ( s, mt khu, imail,…) và hiu chnh i dung ca textbox. package Edu.TextBox; import javax.microedition.lcdui.*; import javax.microedition.midlet.*; import javax.microedition.midlet.MIDletStateChangeException; public class TextBoxMIDlet extends MIDlet implements CommandListener { private Display display; private TextBox textBox; private Command quitCommand; public TextBoxMIDlet() { } public void destroyApp(boolean unconditional) { } protected void pauseApp() { } protected void startApp() throws MIDletStateChangeException { display = Display.getDisplay(this); quitCommand = new Command("Thóat",Command.SCREEN,1); textBox=new TextBox("Soan Thao:","",100,0); textBox.addCommand(quitCommand); textBox.setCommandListener(this); display.setCurrent(textBox); } public void commandAction(Command choice, Displayable displayable) { if(choice==quitCommand){ destroyApp(false); notifyDestroyed(); } } } 3.1.2 Form Form là lp hu dng nht ca các lp Sreen bi vì nó cho phép cha nhiu item trên cùng mt màn hình. Các item có th là datafield, TextField, ImageItem. 4 package Edu.Form; import javax.microedition.lcdui.*; import javax.microedition.midlet.*; import javax.microedition.midlet.MIDletStateChangeExceptio n; public class FormMIDlet extends MIDlet implements CommandListener { private Display display; private Form fr; private Command themCommand; private Command quitCommand; public FormMIDlet() { } public void destroyApp(boolean unconditional) { } protected void pauseApp() { } protected void startApp() throws MIDletStateChangeException { display = Display.getDisplay(this); quitCommand = new Command("Thóat",Command.SCREEN,1); themCommand = new Command("Thêm",Command.BACK,1); fr=new Form("Form: "); fr.append("Muc 1"); fr.addCommand(quitCommand); fr.addCommand(themCommand); fr.setCommandListener(this); display.setCurrent(fr); } public void commandAction(Command choice, Displayable displayable) { if(choice==quitCommand){ destroyApp(false); notifyDestroyed(); } if(choice==themCommand){ fr.append("\nMuc moi"); } } } 3.1.3 List p List là mt Screen cha danh sách các la chn, ngi s dng có th tng tác vi List và chn mt hay nhiu item. 5 package Edu.listbox; import javax.microedition.lcdui.*; import javax.microedition.midlet.*; import javax.microedition.midlet.MIDletStateChangeExcepti on; public class listbox extends MIDlet implements CommandListener { private Display display; private List ls; private Command chonCommand; private Command quitCommand; public listbox() { } public void destroyApp(boolean unconditional) { } protected void pauseApp() { } protected void startApp() throws MIDletStateChangeException { display = Display.getDisplay(this); quitCommand = new Command("Thóat",Command.SCREEN,1); chonCommand = new Command("Chon",Command.BACK,1); ls=new List(null, Choice.IMPLICIT, new String[]{ "Muc chon 1", "Muc chon 2", "Muc chon 3" }, new Image[]{null, null, null }); ls.addCommand(quitCommand); ls.addCommand(chonCommand); ls.setCommandListener(this); display.setCurrent(ls); } public void commandAction(Command choice, Displayable displayable) { if(choice==quitCommand){ destroyApp(false); notifyDestroyed(); } if(displayable == ls){ if( choice ==ls.SELECT_COMMAND) { switch( ls.getSelectedIndex()){ case 0: ///// break; case 1: ////// . break; case 2: ////// . break; } } } } } 6 3.2  ha mc thp  ha mc thp là lp con ca lp Canvas. Lp này cung cp các phng thc  ha cho phép v lên màn hình hay vào mt m hình cùng vi các phng thc x lý s kin bàn phím. Lp này dùng cho các ng dng trò chi cn u khin v màn hình. Canvas và Graphics là hai lp ch yu ca các hàm API cp thp. Canvas là mt khung cho phép ngi lp trình có th v lên thit b trình bày cng nh vic x lý s kin. Còn lp Graphics cung cp các i tng  v. 3.2.1 Lp Canvas p Canvas là mt lp tru tng, ta phi to các canvas ca riêng  v trên lp m rng này và lp Canvas cung cp phng thc: - paint (Graphics g)  thc hin v lên canvas. - repaint()  thc hin v li các hình ã hin th trên màn hình. Mi lp canvas tng nhn s kin ca phím bng cách s dng các phng thc: - void keyPressed (int keyCode): c gi khi mt phím c nhn - void keyReleased( int keyCode): c gi khi mt phím c th. - void keyRepeated( int keyCode): c gi khi mt phím b gi. - int getKeyCode(int gameAction): Ly mt mã phím phn hi li hành ng game xác nh trên thit b - String getKeyName (int keyCode): Ly tên ca phím có giá tr mã phím là keyCode - int getGameAction(int keyCode): Ly mt hành ng game liên quan n mã phím c nhn. - void pointerDragged( int x, int y): c gi khi rê chut n ta  x, y mi. - void pointerPressed ( int x, int y) : c gi khi nhn chut ti ta  x, y - void pointerReleased ( int x, int y): c gi khi th chut ti ta  x, y. 3.2.2 Lp Graphics  i tng Graphics có thc s dng  v: hình vuông, hình ch nht, cung tròn, ng thng, ký t, nh, vn bn trên i tng Canvas. Các phng thc: - void setColor(int red, int green, int blue) - void drawArc(…): v cung tròn. - void drawRect(…): v hình ch nht - void drawString(…): V chui. - void drawImage(…): vnh. 7 package Edu.KeyCodes; import javax.microedition.lcdui.*; import javax.microedition.midlet.*; import javax.microedition.midlet. MIDletStateChangeException; public class KeyCodes extends MIDlet { private Display display; private KeyCodeCanvas canvas; public KeyCodes() { display= Display.getDisplay(this); canvas = new KeyCodeCanvas(this); } public void destroyApp(boolean unconditional) { } protected void pauseApp() { } protected void startApp() throws MIDletStateChangeException { display.setCurrent(canvas); } public void exitMIDlet(){ destroyApp(false); notifyDestroyed(); } } class KeyCodeCanvas extends Canvas implements CommandListener{ private Command quitCommand; private KeyCodes midlet; private int x=getWidth()/2, y=getHeight()/2; public KeyCodeCanvas(KeyCodes midlet) { this.midlet= midlet; quitCommand = new Command("Thóat", Command.SCREEN, 1); addCommand(quitCommand); setCommandListener(this); } protected void paint (Graphics g){ g.setColor(255, 255, 255); g.fillRect(0, 0, getWidth(), getHeight()); g.setColor(0, 0, 0); g.drawArc(x, y,30, 30, 0, 360); } public void commandAction (Command c, Displayable d) { if (c== quitCommand){ midlet.exitMIDlet(); } } protected void keyPressed(int keyCode) { if (keyCode == getKeyCode(RIGHT)){ x=x+10; } if (keyCode == getKeyCode(LEFT)){ x=x-10; } if (keyCode == getKeyCode(UP)){ y=y-10; } if (keyCode == getKeyCode(DOWN)){ y=y+10; } repaint(); } } 8 4. p trình Bluetooth  thut bluetooth c dùng  truyn thông gia n thai di ng vi n thai di ông, hoc gia n thai di ng và mán tính. Có 3 phng thc truyn thông c cài t trong k thut bluetooth: - OBEX - Object Exchange: dùng  chuyn d liu dng file, hình nh. - L2CAP- Logical Link Control and Adaptation Protocol: Dùng chuyn các gói d liu gia client và server. - RFCOMM- Radio Frequency COMMunication: Dùng  chuyn các lung d liu n gin. Sun Java cung cp th vin hàm API bluetooth: Bluetooth JSR82 API package và bao gm tt c các phng thc truyn thông nói trên. t ng dng bluetooth bao gm hai phn: server dùng  to dch v bluetooth và phn client t ni n server và thc hin truyn thông. Phn server: Mi mt thit b bluetooth bao gm mt i tng thit b cc b mà nó giúp cho vic truyn thông gia các thit b. Trong JSR82 phng thc LocalDevice.getLocalDevice() tr vi tng này.  mc kt ni bluetooth phi s dng chui URL bng phng thc Connector.open(URL) và phng thc này tr v lung chuyn d liu StreamConnectionNotifier.  dng hai phng thc openOutputStream() hoc openInputStream()  gi hoc nhn d liu. URL c xác nh: URL = "btspp://localhost:" + UUID + ";name=rfcommtest;authorize=true"; Trong ó UUID có th là : OBEX, L2CAP, RFCOMM m_strUrl= "btspp://localhost:" + RFCOMM_UUID + "; name=rfcommtest;authorize=true"; // m_StrmConn = BTFACADE.waitForClient(SERVICE_NBR); try { m_LclDevice = LocalDevice.getLocalDevice(); m_LclDevice.setDiscoverable(DiscoveryAgent.GIAC); m_StrmNotf = (StreamConnectionNotifier)Connector.open(m_strUrl); //Now it will start waiting for the client connection m_StrmConn = m_StrmNotf.acceptAndOpen(); m_bInitServer = true; m_Output = m_StrmConn.openOutputStream(); m_Input = m_StrmConn.openInputStream(); } catch (BluetoothStateException e) { System.err.println( "BluetoothStateException: " + e.getMessage() ); } 9 Phn Client:   to c client s dng các phng thc sau  tìm thit b bluetooth và tìm dch vc  trên nó: void deviceDiscovered(RemoteDevice btDevice, DeviceClass od) void servicesDiscovered(int transID, ServiceRecord[] records) Sau khi kt ni c thit b bluetooth s dng các phng thc write () và read()  gi và nhn d liu. catch (BluetoothStateException e) { System.err.println( "BluetoothStateException: " + e.getMessage() ); } catch (IOException ex) { ex.printStackTrace(); } catch(Exception e) { public void SearchAvailDevices() { try { //First, get the local device and obtain the discovery agent. m_LclDevice = LocalDevice.getLocalDevice(); m_DscrAgent= m_LclDevice.getDiscoveryAgent(); m_DscrAgent.startInquiry(DiscoveryAgent.GIAC,this); } catch (BluetoothStateException ex) { System.out.println("Problem in searching the Bluetooth devices"); ex.printStackTrace(); } } public void deviceDiscovered(RemoteDevice btDevice, DeviceClass cod) { try { // Device information System.out.println("Major Device Class and information : " + cod.getMajorDeviceClass() + " Minor Device Class: " + cod.getMinorDeviceClass()); System.out.println("Bluetooth Address of the device: " + btDevice.getBluetoothAddress()); System.out.println("Friendly Name: " + btDevice.getFriendlyName(true)); // Now its our responsibility to search its services UUID uuidSet[] = new UUID[1]; uuidSet[0] = RFCOMM_UUID; 10 5. Phát trin ng dng MIDlet 5.1 Chun b các phn mm Eclipse 3.1 Sun Wireless Toolkit EclipseME Plugin for Eclipse 5.2 Cài t c 1: Cài các phn mm Eclipse và Wireless Toolkit c 2: Cài t EclipseME plugin int searchID = m_DscrAgent.searchServices(null,uuidSet, btDevice,this); } catch (Exception e) { System.out.println("Device Discovered Error: " + e); } } public void servicesDiscovered(int transID, ServiceRecord[] records) { for (int i = 0; i < records.length; i++) { m_strUrl = records[i].getConnectionURL(ServiceRecord. AUTHENTICATE_ENCRYPT, false); System.out.println(m_strUrl); //we have found our service protocol if(m_strUrl.startsWith("btspp")) { m_bServerFound = true; m_bInitClient=true; break; } } [...]... gói ch ng trình 19 5.4 Cài t ch ng trình lên n th ai di ng Sau khi óng gói ch ng trình s d ng trình PC Suite di ng 6 cài t ch ng trình lên n th ai t lu n - c u ã tìm hi u ki n trúc t ch c l p trình J2ME trên thi t b di ng ng v i m i k thu t l p trình trên thi t b di ng xây d ng c các an mã J2ME ng ng Tài li u tham kh o: 1 2 3 4 http://www.codeguru.com/java http://www.benhui.net http://www.diendantinhoc.org . trình 20 5.4 Cài t chng trình lên n thai di ng Sau khi óng gói chng trình s dng trình PC Suite  cài t chng trình lên n thai di. t chc lp trình J2ME trên thit b di ng. - ng vi mi k thut lp trình trên thit b di ng xây dng c các an mã J2ME ng ng. Tài liu tham

Ngày đăng: 24/12/2013, 04:17

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan