Pusiiiiiiiiiiiing, mungkin kata yang tepat untuk mewakili keadaanku saat ini (ceile..). Yup, sekarang aku lagi pusing bikin project mobile application. Salah satunya ada modul untuk bisa mengambil file dari memori di ponsel, dan ini, bukan satu-satunya permintaan, tapi masih ada 2 lagi yang belum ketemu solusinya.huaaaaaaaaaaaa....
Oke langsung aja ke codingnya, aku dah speechless, hiks..
import java.util.*; import java.io.*; import javax.microedition.io.*; import javax.microedition.io.file.*; import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class FileMidlet extends MIDlet implements CommandListener { private String currDirName; private Command view = new Command("View", Command.ITEM, 1); private Command back = new Command("Back", Command.BACK, 2); private Command exit = new Command("Exit", Command.EXIT, 3); private final static String UP_DIRECTORY = ".."; private final static String MEGA_ROOT = "/"; private final static String SEP_STR = "/"; private final static char SEP = '/'; public FileMidlet() { currDirName = MEGA_ROOT; } public void startApp() { boolean isAPIAvailable = false; if (System.getProperty( "microedition.io.file.FileConnection.version") != null) { isAPIAvailable = true; try { showCurrDir(); } catch (SecurityException e) { } catch (Exception e) { } } else { StringBuffer splashText = new StringBuffer( getAppProperty("MIDlet-Name")).append("\n").append( getAppProperty("MIDlet-Vendor")). append(isAPIAvailable ? "" : "\nFileConnection API not available"); Alert splashScreen = new Alert(null, splashText.toString(), null, AlertType.INFO); splashScreen.setTimeout(3000); Display.getDisplay(this).setCurrent(splashScreen); } } public void pauseApp() { } public void destroyApp(boolean cond) { notifyDestroyed(); } public void commandAction(Command c, Displayable d) { if (c == view) { List curr = (List) d; final String currFile = curr.getString(curr.getSelectedIndex()); new Thread(new Runnable() { public void run() { if (currFile.endsWith(SEP_STR) || currFile.equals(UP_DIRECTORY)) { traverseDirectory(currFile); } else { showFile(currFile); } } }).start(); } else if (c == back) { showCurrDir(); } else if (c == exit) { destroyApp(false); } } void showCurrDir() { Enumeration e; FileConnection currDir = null; List browser; try { if (MEGA_ROOT.equals(currDirName)) { e = FileSystemRegistry.listRoots(); browser = new List(currDirName, List.IMPLICIT); } else { currDir = (FileConnection) Connector.open( "file://localhost/" + currDirName); e = currDir.list(); browser = new List(currDirName, List.IMPLICIT); browser.append(UP_DIRECTORY, null); } while (e.hasMoreElements()) { String fileName = (String) e.nextElement(); if (fileName.charAt(fileName.length() - 1) == SEP) { browser.append(fileName, null); } else { browser.append(fileName, null); } } browser.setSelectCommand(view); browser.addCommand(exit); browser.setCommandListener(this); if (currDir != null) { currDir.close(); } Display.getDisplay(this).setCurrent(browser); } catch (IOException ioe) { } } void traverseDirectory(String fileName) { if (currDirName.equals(MEGA_ROOT)) { if (fileName.equals(UP_DIRECTORY)) { // can not go up from MEGA_ROOT return; } currDirName = fileName; } else if (fileName.equals(UP_DIRECTORY)) { // Go up one directory // TODO use setFileConnection when implemented int i = currDirName.lastIndexOf(SEP, currDirName.length() - 2); if (i != -1) { currDirName = currDirName.substring(0, i + 1); } else { currDirName = MEGA_ROOT; } } else { currDirName = currDirName + fileName; } showCurrDir(); } void showFile(String fileName) { try { FileConnection fc = (FileConnection) Connector.open("file://localhost/" + currDirName + fileName); if (!fc.exists()) { throw new IOException("File does not exists"); } InputStream fis = fc.openInputStream(); byte[] b = new byte[1024]; int length = fis.read(b, 0, 1024); fis.close(); fc.close(); TextBox tb = new TextBox("View File: " + fileName, null, 1024, TextField.ANY | TextField.UNEDITABLE); tb.addCommand(back); tb.addCommand(exit); tb.setCommandListener(this); if (length > 0) { tb.setString(new String(b, 0, length)); } Display.getDisplay(this).setCurrent(tb); } catch (Exception e) { } } } |
Semoga bermanfaat.. ^^
maf k mw nanya.....
BalasHapusbtw kk bangun aplikasi ne pake sofware apa ya...netbeans pa eclipse pa yang lainnya...
reply y/////
ini buatnya pake Netbeans.. :)
BalasHapusjjur k,sya kan msh baru bgd y sama j2me...
BalasHapussya mau buat gauge di netbeans tapi masih bingung dengan codingnya...wlaupun udah search di google ttep aja bingung...
menurut kk,buat gauge di netbeans IDE 7.0 tu mudah pa gak c?
pusiiiiiiiiiiing..~x(
sankyuu!!!!!!!!!!!
ada cara mudah ada cara sulit.
BalasHapusCara mudahnya, tinggal pake class Gauge yang udah disediakan oleh JAVA di netbeans. (coba lihat link ini: http://www.java-tips.org/java-me-tips/midp/how-to-create-a-gauge-tracker.html)
Cara sulitnya pake canvas, seperti contoh program yang ada disini: http://dyahslib.blogspot.com/2010/09/membuat-welcome-screen.html
semoga terbantu.. ^^
terima kasih y kk.....
BalasHapusmou ichido domo arigatou!!!!! :D
do itamashite.. ^^
BalasHapusassalam..
BalasHapusmbk minta pencerahan nya
bagaimana cra nya membuat perhitungan yang menggunakan Huruf dan Angka di j2me?
makasi ya mbk,
wslm
'alaikumussalam,
Hapusmaksudnya perhitungan gimana ya, dengan huruf dan angka itu? :D