• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Problem in integrating zxing to j2me for nokia mobile paltform

 
Greenhorn
Posts: 5
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
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);
}

}
 
With a little knowledge, a cast iron skillet is non-stick and lasts a lifetime.
reply
    Bookmark Topic Watch Topic
  • New Topic