aspose file tools*
The moose likes Java Micro Edition and the fly likes Problem in integrating zxing to j2me for nokia mobile paltform Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Spring in Action this week in the Spring forum!
JavaRanch » Java Forums » Mobile » Java Micro Edition
Bookmark "Problem in integrating zxing to j2me for nokia mobile paltform" Watch "Problem in integrating zxing to j2me for nokia mobile paltform" New topic
Author

Problem in integrating zxing to j2me for nokia mobile paltform

Ashish Nayal
Greenhorn

Joined: Jul 26, 2010
Posts: 2
I am developing a 2d barcode scanner using zxing library on j2me for nokia mobile paltform using Nokia SDK 1.1 for java.

When I run the ZXing MIDlet in the emulator I am getting this message:ZXing MIDlet running.nothing to display.

But it is not displaying the menu that it supposed to display.

I am new to J2ME,so please help me out.

Menu.java


final class Menu extends List implements CommandListener {

private final ZXingMIDlet zXingMIDlet;
private final Command cancelCommand;
private final Command barcodeCommand;


Menu(ZXingMIDlet parent, String title, String item) {
super(title, IMPLICIT); // Set the title of the form
zXingMIDlet = parent;
// Build the UI components
cancelCommand = new Command("Cancel", Command.CANCEL, 0);
barcodeCommand = new Command(item, Command.ITEM, 0);
addCommand(cancelCommand);
addCommand(barcodeCommand);
setCommandListener(this);
}


public String getSelectedString() {
String result = "";
if (getSelectedIndex() != -1) {
result = getString(getSelectedIndex());
}
return result;
}

public void clear() {
while (size() != 0) {
delete(0);
}
}


public void commandAction(Command command, Displayable displayable) {
if (command == cancelCommand) {
Display.getDisplay(zXingMIDlet).setCurrent(zXingMIDlet.getCanvas());
} else if (command == barcodeCommand || command == SELECT_COMMAND) {
if (getSelectedIndex() != -1) {
zXingMIDlet.itemRequest();
}
}
}

}

ZXingMIDlet.java

public final class ZXingMIDlet extends MIDlet {

private static final int ALERT_TIMEOUT_MS = 5 * 1000;

private Canvas canvas;
private Player player;
private VideoControl videoControl;
private Alert confirmation;
private Alert alert;
private Menu history;
private Vector resultHistory;

Displayable getCanvas() {
return canvas;
}

Player getPlayer() {
return player;
}

VideoControl getVideoControl() {
return videoControl;
}

static MultimediaManager buildMultimediaManager() {
return new AdvancedMultimediaManager();
// Comment line above / uncomment below to make the basic version
// return new DefaultMultimediaManager();
}

protected void startApp() throws MIDletStateChangeException {

try {

Image image = Image.createImage("/res/zxing-icon.png");
Displayable splash = new SplashThread(this, 2000, image);
Display.getDisplay(this).setCurrent(splash);

resultHistory = new Vector(5);
System.out.println("hello--------------");
history = new Menu(this, "Scan History", "Use");
System.out.println("hi--------------");
player = createPlayer();
player.realize();
MultimediaManager multimediaManager = buildMultimediaManager();
multimediaManager.setZoom(player);
multimediaManager.setExposure(player);
multimediaManager.setFlash(player);
videoControl = (VideoControl) player.getControl("VideoControl");
canvas = new VideoCanvas(this);
canvas.setFullScreenMode(true);
videoControl.initDisplayMode(VideoControl.USE_DIRECT_VIDEO, canvas);
videoControl.setDisplayLocation(0, 0);
videoControl.setDisplaySize(canvas.getWidth(), canvas.getHeight());
System.out.println("bye--------------");
} catch (IOException ioe) {
throw new MIDletStateChangeException(ioe.toString());
} catch (MediaException me) {
throw new MIDletStateChangeException(me.toString());
}

// Set up one confirmation and alert object to re-use
confirmation = new Alert(null);
confirmation.setType(AlertType.CONFIRMATION);
confirmation.setTimeout(ALERT_TIMEOUT_MS);
Command yes = new Command("Yes", Command.OK, 1);
confirmation.addCommand(yes);
Command no = new Command("No", Command.CANCEL, 1);
confirmation.addCommand(no);
alert = new Alert(null);
alert.setTimeout(ALERT_TIMEOUT_MS);
}

void splashDone() {
try {
videoControl.setVisible(true);
player.start();
} catch (MediaException me) {
showError(me);
}
Display.getDisplay(this).setCurrent(canvas);
}

private static Player createPlayer() throws IOException, MediaException {

Player player = null;
String platform = System.getProperty("microedition.platform");
if (platform != null && platform.indexOf("Nokia") >= 0) {
try {
player = Manager.createPlayer("capture://image");
} catch (MediaException me) {
// if this fails, just continue with capture://video
} catch (NullPointerException npe) {
} catch (Error e) {

}
}
if (player == null) {
try {
player = Manager.createPlayer("capture://video");
} catch (NullPointerException npe) {

throw new MediaException("Image/video capture not supported on this phone");
}
}
return player;
}

protected void pauseApp() {
if (player != null) {
try {
player.stop();
} catch (MediaException me) {
// continue?
showError(me);
}
}
}

protected void destroyApp(boolean unconditional) {
if (player != null) {
videoControl = null;
try {
player.stop();
} catch (MediaException me) {
// continue
}
player.deallocate();
player.close();
player = null;
}
}

void stop() {
destroyApp(false);
notifyDestroyed();
}

void historyRequest() {
Display.getDisplay(this).setCurrent(history);
}


private void showOpenURL(String title, String display, final String uri) {
confirmation.setTitle(title);
confirmation.setString(display);
CommandListener listener = new CommandListener() {
public void commandAction(Command command, Displayable displayable) {
if (command.getCommandType() == Command.OK) {
try {
platformRequest(uri);
} catch (ConnectionNotFoundException cnfe) {
showError(cnfe);
} finally {
stop();
}
} else {
// cancel
Display.getDisplay(ZXingMIDlet.this).setCurrent(getCanvas());
}
}
};
confirmation.setCommandListener(listener);
showAlert(confirmation);
}

private void showAlert(String title, String text) {
alert.setTitle(title);
alert.setString(text);
alert.setType(AlertType.INFO);
showAlert(alert);
}

void showError(Throwable t) {
String message = t.getMessage();
if (message != null && message.length() > 0) {
showError(message);
} else {
showError(t.toString());
}
}

void showError(String message) {
alert.setTitle("Error");
alert.setString(message);
alert.setType(AlertType.ERROR);
showAlert(alert);
}

private void showAlert(Alert alert) {
Display display = Display.getDisplay(this);
display.setCurrent(alert, canvas);
}

void barcodeAction(ParsedResult result) {
ParsedResultType type = result.getType();
if (type.equals(ParsedResultType.URI)) {
String uri = ((URIParsedResult) result).getURI();
showOpenURL("Open Web Page?", uri, uri);
} else if (type.equals(ParsedResultType.EMAIL_ADDRESS)) {
EmailAddressParsedResult emailResult = (EmailAddressParsedResult) result;
showOpenURL("Compose E-mail?", emailResult.getEmailAddress(), emailResult.getMailtoURI());
} else if (type.equals(ParsedResultType.SMS)) {
SMSParsedResult smsResult = (SMSParsedResult) result;
showOpenURL("Compose SMS?", smsResult.getNumbers()[0], smsResult.getSMSURI());
} else if (type.equals(ParsedResultType.PRODUCT)) {
ProductParsedResult productResult = (ProductParsedResult) result;
String uri = "http://www.google.com/m/products?q=" +
productResult.getNormalizedProductID() + "&source=zxing";
showOpenURL("Look Up Barcode Online?", productResult.getProductID(), uri);
} else if (type.equals(ParsedResultType.TEL)) {
TelParsedResult telResult = (TelParsedResult) result;
showOpenURL("Dial Number?", telResult.getNumber(), telResult.getTelURI());
} else {
showAlert("Barcode Detected", result.getDisplayResult());
}
}

void itemRequest() {
ParsedResult result = (ParsedResult) resultHistory.elementAt(history.getSelectedIndex());
barcodeAction(result);
}

void handleDecodedText(Result theResult) {
ParsedResult result = ResultParser.parseResult(theResult);
String resultString = result.toString();
int i = 0;
while (i < resultHistory.size()) {
if (resultString.equals(resultHistory.elementAt(i).toString())) {
break;
}
i++;
}
if (i == resultHistory.size()) {
resultHistory.addElement(result);
history.append(result.getDisplayResult(), null);
}
barcodeAction(result);
}

}
Darryl Burke
Bartender

Joined: May 03, 2008
Posts: 4642
    
    5

Ashish, please BeForthrightWhenCrossPostingToOtherSites
http://www.developer.nokia.com/Community/Discussion/showthread.php?235873-Problem-in-integrating-zxing-to-j2me-for-nokia-mobile-paltform
http://stackoverflow.com/questions/10811139/issue-in-integrating-zxing-to-j2me-for-nokia-mobile-paltform


luck, db
There are no new questions, but there may be new answers.
Ashish Nayal
Greenhorn

Joined: Jul 26, 2010
Posts: 2
I posted this question the other day in http://www.developer.nokia.com/Community/Discussion/showthread.php?235873-Problem-in-integrating-zxing-to-j2me-for-nokia-mobile-paltform
http://stackoverflow.com/questions/10811139/issue-in-integrating-zxing-to-j2me-for-nokia-mobile-paltform

But wasn't able to get a good answer, so now I'm asking here

 
jQuery in Action, 2nd edition
 
subject: Problem in integrating zxing to j2me for nokia mobile paltform