- // TODO make sure we do not start two threads at once
- private class SnapshotThread extends Thread {
- public void run() {
- try {
- player.stop();
- byte[] snapshot = videoControl.getSnapshot(null);
- Image capturedImage = Image.createImage(snapshot, 0, snapshot.length);
- MonochromeBitmapSource source = new LCDUIImageMonochromeBitmapSource(capturedImage);
- Reader reader = new MultiFormatReader();
- Result result = reader.decode(source);
- showAlert("Barcode detected", result.getText());
- } catch (ReaderException re) {
- showError(re);
- } catch (MediaException me) {
- showError(me);
- } catch (Throwable t) {
- showError(t);
- } finally {
- try {
- player.start();
- } catch (MediaException me) {
- // continue?
- showError(me);
- }
- }
-
+ void handleDecodedText(Result theResult) {
+ ParsedResult result = ResultParser.parseResult(theResult);
+ 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.getNumber(), smsResult.getSMSURI());
+ } else if (type.equals(ParsedResultType.PRODUCT)) {
+ ProductParsedResult productResult = (ProductParsedResult) result;
+ String uri = "http://www.upcdatabase.com/item.asp?upc=" + productResult.getNormalizedProductID();
+ 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());