<string name="title_add_contact">Add Contact?</string>
<string name="title_compose_email">Compose E-mail?</string>
<string name="title_lookup_barcode">Look Up Barcode Online?</string>
+ <string name="title_dial">Dial Number?</string>
</resources>
return R.string.title_compose_email;
} else if (type.equals(ParsedReaderResultType.UPC)) {
return R.string.title_lookup_barcode;
+ } else if (type.equals(ParsedReaderResultType.TEL)) {
+ return R.string.title_dial;
} else {
return R.string.title_barcode_detected;
}
import com.google.zxing.client.result.EmailDoCoMoParsedResult;
import com.google.zxing.client.result.ParsedReaderResult;
import com.google.zxing.client.result.ParsedReaderResultType;
+import com.google.zxing.client.result.TelParsedResult;
import com.google.zxing.client.result.UPCParsedResult;
import com.google.zxing.client.result.URIParsedResult;
import com.google.zxing.client.result.URLTOParsedResult;
intent = new Intent(Intent.SENDTO_ACTION, new ContentURI(emailResult.getEmailAddress()));
} catch (URISyntaxException e) {
}
+ } else if (type.equals(ParsedReaderResultType.TEL)) {
+ TelParsedResult telResult = (TelParsedResult) result;
+ try {
+ intent = new Intent(Intent.DIAL_ACTION, new ContentURI("tel:" + telResult.getNumber()));
+ } catch (URISyntaxException e) {
+ }
//} else if (type.equals(ParsedReaderResultType.GEO)) {
// GeoParsedResult geoResult = (GeoParsedResult) result;
// try {
return result;
} else if ((result = AddressBookAUParsedResult.parse(theResult)) != null) {
return result;
+ } else if ((result = TelParsedResult.parse(theResult)) != null) {
+ return result;
} else if ((result = GeoParsedResult.parse(theResult)) != null) {
return result;
} else if ((result = URLTOParsedResult.parse(theResult)) != null) {
public static final ParsedReaderResultType TEXT = new ParsedReaderResultType("TEXT");
public static final ParsedReaderResultType ANDROID_INTENT = new ParsedReaderResultType("ANDROID_INTENT");
public static final ParsedReaderResultType GEO = new ParsedReaderResultType("GEO");
+ public static final ParsedReaderResultType TEL = new ParsedReaderResultType("TEL");
// TODO later, add the NDEF types to those actually processed by the clients
public static final ParsedReaderResultType NDEF_TEXT = new ParsedReaderResultType("NDEF_TEXT");
public static final ParsedReaderResultType NDEF_URI = new ParsedReaderResultType("NDEF_URI");
--- /dev/null
+/*
+ * Copyright 2008 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.zxing.client.result;
+
+import com.google.zxing.Result;
+
+/**
+ * Represents a "tel:" URI result, which specifies a phone number.
+ *
+ * @author srowen@google.com (Sean Owen)
+ */
+public final class TelParsedResult extends ParsedReaderResult {
+
+ private final String number;
+
+ private TelParsedResult(String number) {
+ super(ParsedReaderResultType.TEL);
+ this.number = number;
+ }
+
+ public static TelParsedResult parse(Result result) {
+ String rawText = result.getText();
+ if (!rawText.startsWith("tel:")) {
+ return null;
+ }
+ // Drop tel, query portion
+ int queryStart = rawText.indexOf('?', 4);
+ if (queryStart < 0) {
+ rawText = rawText.substring(4);
+ } else {
+ rawText = rawText.substring(4, queryStart);
+ }
+ return new TelParsedResult(rawText);
+ }
+
+ public String getNumber() {
+ return number;
+ }
+
+ public String getDisplayResult() {
+ return number;
+ }
+
+}
\ No newline at end of file
package com.google.zxing.client.result;
+import com.google.zxing.BarcodeFormat;
import com.google.zxing.Result;
import junit.framework.TestCase;
}
public void testUPC() {
- doTestResult("123456789012", ParsedReaderResultType.UPC);
- doTestResult("1234567890123", ParsedReaderResultType.UPC);
+ doTestResult("123456789012", ParsedReaderResultType.UPC, BarcodeFormat.UPC_A);
+ doTestResult("1234567890123", ParsedReaderResultType.UPC, BarcodeFormat.UPC_A);
doTestResult("12345678901", ParsedReaderResultType.TEXT);
}
public void testGeo() {
doTestResult("geo:1,2", ParsedReaderResultType.GEO);
doTestResult("geo:1,2,3", ParsedReaderResultType.GEO);
- doTestResult("geo:100.33,-32.3344,3.35", ParsedReaderResultType.GEO);
+ doTestResult("geo:100.33,-32.3344,3.35", ParsedReaderResultType.GEO);
+ doTestResult("geography", ParsedReaderResultType.TEXT);
+ }
+
+ public void testTel() {
+ doTestResult("tel:+15551212", ParsedReaderResultType.TEL);
+ doTestResult("tel:212 555 1212", ParsedReaderResultType.TEL);
+ doTestResult("tel:2125551212", ParsedReaderResultType.TEL);
+ doTestResult("telephone", ParsedReaderResultType.TEXT);
}
private static void doTestResult(String text, ParsedReaderResultType type) {
- Result fakeResult = new Result(text, null, null, null);
+ doTestResult(text, type, null);
+ }
+
+ private static void doTestResult(String text, ParsedReaderResultType type, BarcodeFormat format) {
+ Result fakeResult = new Result(text, null, null, format);
ParsedReaderResult result = ParsedReaderResult.parseReaderResult(fakeResult);
assertNotNull(result);
assertEquals(type, result.getType());
import com.google.zxing.client.result.EmailDoCoMoParsedResult;
import com.google.zxing.client.result.ParsedReaderResult;
import com.google.zxing.client.result.ParsedReaderResultType;
+import com.google.zxing.client.result.TelParsedResult;
import com.google.zxing.client.result.UPCParsedResult;
import com.google.zxing.client.result.URIParsedResult;
import com.google.zxing.client.result.URLTOParsedResult;
String upc = ((UPCParsedResult) result).getUPC();
String uri = "http://www.upcdatabase.com/item.asp?upc=" + upc;
showOpenURL("Look Up Barcode Online?", upc, uri);
+ } else if (type.equals(ParsedReaderResultType.TEL)) {
+ String number = ((TelParsedResult) result).getNumber();
+ showOpenURL("Dial Number?", number, "tel:" + number);
} else {
showAlert("Barcode Detected", result.getDisplayResult());
}