Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 20 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
20
Dung lượng
1,03 MB
Nội dung
1 P TRÌNHTRÊN THIT BIDI NG 1. Gii thiu Java và ng dng lp trìnhtrên thit b di ng 1.1 Gii thiu v Java Vào nhng nm 1990, Java c ra i t d án xanh và ban u c xây dng kiim sóat các thí b dân dng và mt s thit b cm tay. Java c xây dng ch yu da trong b công c phát trin (Java Development Kit – JDK) nh là th vin chun trong ó cha trình biên dch, trình thông dch,… ây chính là nn tng cho vic phát trin ng dng Java. Hin nay các nhà phát trin ã xây dng nhiu nhánh mi cho Java nh: J2EE ( Java 2 Platform Enterprise Edition): Phiên bn dành cho máy ch ln vi sc nh x lý và dung lng b nh ln. J2SE ( Java 2 Platform Standard Edition): Phiên bn chun chy trên các máy PC và laptop. J2ME ( Java 2 Platform Micro Edition): là phiên bn rút gn ca Java cho các thit di ng gii hn v b nh và b x lý. 1.2 ng dng lp trìnhtrên thit b di ng bng J2ME c tiêu ca ca J2ME là cho phép ngi lp trình vit các chng trình ng dng ng lp i thit b di ng, không cn quan tâm n phn cng. J2ME c xây dng bng các tng khác nhau giu i vic thc hin phn cng khi nhà phát trin. Sau ây là các tng ca j2ME c xây dng trên CLDC: ng phn cng thit b: ây là thit b di ng vi cu hình phn cng ca nó nh b nh, c x lý. Các thit b di ng khác nhau có th có các b x lý khác nhau vi các mã lnh khác nhau. Mc tiêu ca J2ME là cung cp mt chun cho tt c các lai thit b di ng khác nhau. ng máy o Java: Khi mã ngun Java c biên dch nó c chuyn i thành mã bytecode. Mã bytecode này sau ó c chuyn thành mã ngôn ng máy ca thit b di ng. Tng máy o java bao gm KVM ( K virtual Machine) là b biên dch mã bytecode có nhim v chuyn mã bytecode ca chng trình Java thành ngôn ng máy chy trên thit b di ng. tng này cung p mt s chun hóa cho các thit b di ng ng dng J2ME sau khi ã biên dch có th hat ng trên bt k thit b di ng nào có J2ME KVM. Phn cng thit b Máy o Java u hình CLCD-( Connected Limited Device Configuration) Hin trng MIDP- Mobile Information DeviceProfile Các API khác 2 ng cu hình : ng cu hình ca CLDC nh ngha giao din ngôn ng Java c bn cho phép chng trình java chy trên thit b di ng. ây là mt tp các API nh ngha lõi ca ngôn ng J2ME . Ngi lp trình có th s dng các lp và phng thc ca các API này tuy nhiên các API hu dng hn c cha trong tng hin trng. ng hin trng: Tng này cung cp các API hu dng hn cho ngi lp trình. Mc ích a hin trng là xây trên lp cu hình và cung cp nhiu th vin ng dng hn. MIDP nh ngha các API riêng bit cho thit b di ng. Cng có th có các hin trng và các API khác ngòai MIDP c dùng cho ng dng, cng có th có mt hin trng nh ngha các API cho vic to các ng ng Bluetooth. Hin nay, MIDP có hai phiên bn là MIDP 1.0 và MIDP 2.0 và cung cp: - Các lp và các kiu d liu - tri tng Display - tr Form và giao din ngi dùng - tr Timer và Alert - tr Record Management System( RMS) cho vic lu tr d liu. Các tính nng ni bt ca MIDP 2.0 so vi MIDP 1.0: - Nâng cp tính nng bo mt, h tr giao thc HTTPS, kim sóat vic kt ni máy di ng i server. - Thêm các API h tr Multimedia. - rng các tính nng ca Form 2. MIDlet Các ng dng J2ME c gi là MIDlet ( Mobile Information Device Applet). MIDlet là mt p java m rng ca lp tru tng javax.microedition.midlet.MIDlet và thc thi các phng thc startApp(), pauseApp(), và destroyApp(). an chng trình ti thiu ca 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 Phng thc exMIDlet là hàm constructor . o Phng thc startApp( ) : c gi bi b qun lý ng dng khi MIDlet c khi to hay khi MIDlet tr v trng thái tm dng. o Phng thc pauseApp( ) : c gi bi b qun lý ng dng mi khi ng dng n c tm dng. o Phng thc destroyApp( ): c gi khi thoat khi MIDlet. 3. ha trong J2ME Các lp MIDP cung cp hai mc ha: ha mc thp và ha mc cao. ha mc cao dùng cho vn bn hay form. ha mc thp dùng cho các ng dng games. 3 3.1 ha mc cao ha mc cao là lp con ca lp Screen. Nó cung cp các thành phn nh text box, form, list và alert. 3.1.1 TextBox p Textbox cho phép ngi dùng nhp và san tho vn bn. Ngi lp trình có th nh ngha s ký t ti a, gii hn d liu nhp ( s, mt khu, imail,…) và hiu chnh i dung ca 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à lp hu dng nht ca các lp Sreen bi vì nó cho phép cha nhiu item trên cùng mt 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à mt Screen cha danh sách các la chn, ngi s dng có th tng tác vi List và chn mt hay nhiu 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 ha mc thp ha mc thp là lp con ca lp Canvas. Lp này cung cp các phng thc ha cho phép v lên màn hình hay vào mt m hình cùng vi các phng thc x lý s kin bàn phím. Lp này dùng cho các ng dng trò chi cn u khin v màn hình. Canvas và Graphics là hai lp ch yu ca các hàm API cp thp. Canvas là mt khung cho phép ngi lp trình có th v lên thit b trình bày cng nh vic x lý s kin. Còn lp Graphics cung cp các i tng v. 3.2.1 Lp Canvas p Canvas là mt lp tru tng, ta phi to các canvas ca riêng v trên lp m rng này và lp Canvas cung cp phng thc: - paint (Graphics g) thc hin v lên canvas. - repaint() thc hin v li các hình ã hin th trên màn hình. Mi lp canvas tng nhn s kin ca phím bng cách s dng các phng thc: - void keyPressed (int keyCode): c gi khi mt phím c nhn - void keyReleased( int keyCode): c gi khi mt phím c th. - void keyRepeated( int keyCode): c gi khi mt phím b gi. - int getKeyCode(int gameAction): Ly mt mã phím phn hi li hành ng game xác nh trên thit b - String getKeyName (int keyCode): Ly tên ca phím có giá tr mã phím là keyCode - int getGameAction(int keyCode): Ly mt hành ng game liên quan n mã phím c nhn. - void pointerDragged( int x, int y): c gi khi rê chut n ta x, y mi. - void pointerPressed ( int x, int y) : c gi khi nhn chut ti ta x, y - void pointerReleased ( int x, int y): c gi khi th chut ti ta x, y. 3.2.2 Lp Graphics i tng Graphics có thc s dng v: hình vuông, hình ch nht, cung tròn, ng thng, ký t, nh, vn bn trên i tng Canvas. Các phng thc: - void setColor(int red, int green, int blue) - void drawArc(…): v cung tròn. - void drawRect(…): v hình ch nht - void drawString(…): V chui. - void drawImage(…): vnh. 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 thut bluetooth c dùng truyn thông gia n thai di ng vi n thai di ông, hoc gia n thai di ng và mán tính. Có 3 phng thc truyn thông c cài t trong k thut bluetooth: - OBEX - Object Exchange: dùng chuyn d liu dng file, hình nh. - L2CAP- Logical Link Control and Adaptation Protocol: Dùng chuyn các gói d liu gia client và server. - RFCOMM- Radio Frequency COMMunication: Dùng chuyn các lung d liu n gin. Sun Java cung cp th vin hàm API bluetooth: Bluetooth JSR82 API package và bao gm tt c các phng thc truyn thông nói trên. t ng dng bluetooth bao gm hai phn: server dùng to dch v bluetooth và phn client t ni n server và thc hin truyn thông. Phn server: Mi mt thit b bluetooth bao gm mt i tng thit b cc b mà nó giúp cho vic truyn thông gia các thit b. Trong JSR82 phng thc LocalDevice.getLocalDevice() tr vi tng này. mc kt ni bluetooth phi s dng chui URL bng phng thc Connector.open(URL) và phng thc này tr v lung chuyn d liu StreamConnectionNotifier. dng hai phng thc openOutputStream() hoc openInputStream() gi hoc nhn d liu. 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 Phn Client: to c client s dng các phng thc sau tìm thit b bluetooth và tìm dch vc trên nó: void deviceDiscovered(RemoteDevice btDevice, DeviceClass od) void servicesDiscovered(int transID, ServiceRecord[] records) Sau khi kt ni c thit b bluetooth s dng các phng thc write () và read() gi và nhn d liu. 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 trin ng dng MIDlet 5.1 Chun b các phn mm Eclipse 3.1 Sun Wireless Toolkit EclipseME Plugin for Eclipse 5.2 Cài t c 1: Cài các phn mm 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ìnhtrê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 chng trình lên n thai di ng Sau khi óng gói chng trình s dng trình PC Suite cài t chng trình lên n thai di. t chc lp trình J2ME trên thit b di ng. - ng vi mi k thut lp trình trên thit b di ng xây dng c các an mã J2ME ng ng. Tài liu tham