Szkielet aplikacji dla telefonów komórkowych w Javie.
Dla NetBeans 7.1.
Aplikacja zawiera MENU komórkowe z wyborem orientacji telefonu (poziom/pion), główną część aplikacji (wyświetlanie obrazka), oraz dodatkowy wątek dla aplikacji wielowątkowych.
Załączono wszelkie przydatne funkcje, m. in. obsługę klawiatury telefonu i ekranu dotykowego, umieszczanie zdjęć PNG, tworzenie telefonicznego MENU.
Do katalogu z plikami źródłowymi należy wgrać obrazek
http://fulara.com/szkola/foto.png
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | import javax.microedition.lcdui.*; import javax.microedition.midlet.MIDlet; public class AplikacjaKomorkowa extends MIDlet implements CommandListener{ private Display display=null; private Form settingsForm; private ChoiceGroup orientacja; private Command exit, go,back=null; final program game=new program(display,settingsForm); public AplikacjaKomorkowa() { settingsForm = new Form("Nazwa formularza"); go = new Command("Start", Command.OK, 1); exit = new Command("Exit", Command.EXIT, 2); settingsForm.append("Tytuł formularza:"); orientacja = new ChoiceGroup("Position (orientacja)",Choice.EXCLUSIVE); orientacja.append("Portrait (pionowa)",null); orientacja.append("Landscape (pozioma)",null); settingsForm.append(orientacja); } protected void startApp() { if (display==null) { display = Display.getDisplay(this); settingsForm.addCommand(go); settingsForm.addCommand(exit); settingsForm.setCommandListener(this); display.setCurrent(settingsForm); } } protected void pauseApp() { //wywoływana przy zawieszeniu watku przez uzytkownika (np. rozmowa tel) } protected void destroyApp(boolean unconditional) { //przy usuwania watku notifyDestroyed(); } public void startGame() { //rozpoczecie watku z gra if (back==null) back = new Command("Back", Command.BACK, 0); game.setParameters(orientacja.isSelected(0) ); game.start(); game.addCommand(back); game.setCommandListener( new CommandListener() //nowy watek ktor nasłuchuje wcisniecia klawisza powrót z gry do menu { public void commandAction(Command c, Displayable s) { String label = c.getLabel(); if (label.equals( "Back")) { game.stop(); display.setCurrent(settingsForm); } } } ); display = Display.getDisplay(this); display.setCurrent(game); } public void commandAction(Command c, Displayable Displayable) { //obsługa przycisków akcji komorki String label = c.getLabel(); if (label.equals("Exit")) destroyApp(false); else if (label.equals("Start")) startGame(); } } |
program.java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 | import javax.microedition.lcdui.*; import javax.microedition.lcdui.game.Sprite; class program extends Canvas implements Runnable { private int szerokosc=240, wysokosc=320; //numer najechanego klawisza 750x600 private Image foto; public boolean pion=true; //polozenie komorki public watek_z_akcja p; //punkty z czasem private Display display; Form settingsForm; public program(Display _display, Form f) { display=_display; settingsForm=f; //formularz powrotu try{ foto = Image.createImage("/foto.png"); }catch(Exception e) {} } public void paint(Graphics g1) { //g1 - ekran - g - bufor Image Image obraz= Image.createImage(szerokosc,wysokosc); Graphics g= obraz.getGraphics(); g.setColor(0xffffff); g.fillRect(0,0,szerokosc,wysokosc); g.drawImage(foto,szerokosc/2,wysokosc/2,Graphics.HCENTER|Graphics.VCENTER); g.setColor(0xffffff); g.drawString("Fingerboard Master ", xx(5), yy(5), 0); if (pion) g1.drawImage(obraz,0,0,0); //komorka pionowo rysuje else g1.drawRegion(obraz,0,0,szerokosc,wysokosc,Sprite.TRANS_ROT90, 0, 0, Graphics.TOP | Graphics.LEFT); } public void setParameters(boolean _pionowa) { pion = _pionowa; } public int xx(int x) { return szerokosc*x/750; } public int yy(int y) { return wysokosc*y/600; } public void init() { if (pion) { szerokosc=getWidth();//szerokosc i wysokosc ektranu komorki wysokosc=getHeight(); } else { szerokosc=getHeight();//szerokosc i wysokosc ektranu komorki wysokosc=getWidth(); } p = new watek_z_akcja(this); p.start(); } public void start() { Thread t = new Thread(this); init(); t.start(); } public void run() { repaint(); } protected void pointerReleased(int x, int y) { //puszczenie dotykowego: repaint(); } ///obsługa wskaźnika touchpad: public void pointerPressed(int x, int y) { //ekran dotykowy System.out.println(x+" "+y); } public void stop() { // p.running=false; p=null; } public void destroy() { // p.running=false; p=null; } protected void keyReleased(int keyCode) { //zwolnienie klawisza repaint(); } protected void keyPressed (int keyCode) { switch(keyCode) { case 0x0063: case KEY_NUM1: // wcisnieto_dzwiek("C"); break; /* case 0x0043: case KEY_NUM2: wcisnieto_dzwiek("C#"); break; case 0x0064: case KEY_NUM3: wcisnieto_dzwiek("D"); break; case 0x0044: case KEY_NUM4: wcisnieto_dzwiek("D#"); break; case 0x0065: case KEY_NUM5: wcisnieto_dzwiek("E"); break; case 0x0066: case KEY_NUM6: wcisnieto_dzwiek("F"); break; case 0x0046: case KEY_NUM7: wcisnieto_dzwiek("F#"); break; case 0x0067: case KEY_NUM8: wcisnieto_dzwiek("G"); break; case 0x0047: case KEY_NUM9: wcisnieto_dzwiek("G#"); break; case 0x0061: case KEY_STAR: wcisnieto_dzwiek("A"); break; case 0x0041: case KEY_NUM0: wcisnieto_dzwiek("A#"); break; case 0x0062: case KEY_POUND: wcisnieto_dzwiek("B"); break;*/ } repaint (); } } |
Dodatkowy wątek:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | import java.util.Date; class watek_z_akcja extends Thread { Date data; program prog; watek_z_akcja(program _prog) { prog=_prog; } public void run() { while (true) // 3,2,1... start { data=new Date(); try{ Thread.sleep(1000);} catch (InterruptedException e){} } } } |
Show Comments