30 Commits
Author SHA1 Message Date
Ryan Willoughby 24acf29896 [plugin.xml] corrected supported cordova versions 2013-09-26 16:43:13 -07:00
Ryan Willoughby a310fda2d7 delete plugin.xml.generate.php 2013-09-12 15:41:33 -07:00
Ryan Willoughby 8bf3cce073 Use <js-module> in favour of <asset> for the JS
Merge branch 'js_module' of https://github.com/agrieve/BarcodeScanner

Conflicts:
	README.md
	plugin.xml
2013-09-12 15:38:05 -07:00
Ryan Willoughby 2d8701634f [readme] fixed encode syntax typo 2013-09-11 15:03:53 -07:00
Ryan Willoughby 7880bf7b5c [android][0.7.2] remove busted menu items
+ fixes #11
2013-09-11 13:58:26 -07:00
Ryan Willoughby 12a31b76b0 [0.7.1] upped version 2013-09-10 16:12:46 -07:00
Ryan Willoughby a2857ba5f8 [README] fix typo 2013-09-10 15:38:49 -07:00
Ryan Willoughby f046f651ce Merge branch 'ios_warnings' of https://github.com/agrieve/BarcodeScanner into agrive-ios_warnings 2013-09-10 13:48:35 -07:00
Andrew Grieve 6ad6dafc11 Use <js-module> in favour of <asset> for the JS.
This bumps the version to 1.0 since it's a non-backwards compatible
change.
2013-09-05 15:13:13 -04:00
Andrew Grieve 14d63e35ac Fix plugin for iOS on Cordova 3.0 by disabling ARC and using newer plugin signature. 2013-09-05 15:12:15 -04:00
Andrew Grieve d901977064 Fix some compile warnings on iOS 2013-09-05 11:13:36 -04:00
Ryan Willoughby 7094cc6eda [0.7.0] upped version 2013-08-15 11:25:20 -07:00
Eccenux fc3dcd56d1 Cordova 2.8
Based on http://wiki.apache.org/cordova/DeprecationPolicy
2013-08-05 14:29:56 +02:00
Eccenux 50a2f8bf52 minor
spaces instead of tabs, re-added missing license.
2013-08-05 14:17:05 +02:00
Eccenux 8966e5207f Merge remote-tracking branch 'upstream/master'
Conflicts (resolved):
	plugin.xml
	src/android/README.md
2013-07-30 21:00:14 +02:00
Eccenux 8fa142ca9d ident 2013-07-29 14:39:35 +02:00
Eccenux 6fd905a8e6 Encode object access fix. 2013-07-29 14:38:23 +02:00
Eccenux 32880fc1fa 3.0 fixed README.md 2013-07-25 18:06:59 +02:00
Eccenux 903b02f142 typo 2013-07-25 17:50:03 +02:00
Eccenux 6fdac151eb Fix for https://issues.apache.org/jira/browse/CB-4379 2013-07-25 16:15:09 +02:00
Eccenux c84bf0e66d Changes for crodova 3.0
Updates based mostly on:
http://simonmacdonald.blogspot.fr/2013/06/why-dont-my-plugins-work-in-phonegap.html
2013-07-24 18:41:40 +02:00
Eccenux e728d33155 PG 3.0 changes 2013-07-24 15:01:50 +02:00
Ryan Willoughby 1242c55142 [readme] correct ios supported formats 2013-07-18 15:15:03 -07:00
Ryan Willoughby 3b1ad506b2 [readme] plugman not pluginstall 2013-07-18 14:43:29 -07:00
Eccenux 5833a1fa9e Merge branch 'master' of https://github.com/Eccenux/BarcodeScanner 2013-07-08 19:47:01 +02:00
Eccenux 9ed602fdac app_name fix 2013-07-08 19:43:24 +02:00
Eccenux 06b05fc6c9 Update README.md
minor
2013-07-08 19:14:18 +02:00
Eccenux 2f86c728e5 minor refactoring ;-) 2013-07-08 19:09:45 +02:00
Eccenux 01a74e4c6c plugin spec. update 2013-07-06 13:49:50 +02:00
Eccenux cf2be813cb Update to 4.3.1 2013-07-04 20:29:22 +02:00
10 changed files with 357 additions and 553 deletions
+5 -10
View File
@@ -5,10 +5,8 @@ Cross-platform BarcodeScanner for Cordova / PhoneGap.
Follows the [Cordova Plugin spec](https://github.com/apache/cordova-plugman/blob/master/plugin_spec.md), so that it works with [Plugman](https://github.com/apache/cordova-plugman).
This plugin leverages Cordova/PhoneGap's [require/define functionality used for plugins](http://simonmacdonald.blogspot.ca/2012/08/so-you-wanna-write-phonegap-200-android.html).
Note: the Android source for this project includes an Android Library Project.
pluginstall currently doesn't support Library Project refs, so its been
plugman currently doesn't support Library Project refs, so its been
prebuilt as a jar library. Any updates to the Library Project should be
committed with an updated jar.
@@ -42,15 +40,14 @@ The following barcode types are currently supported:
* EAN_8
* EAN_13
* CODE_128
* CODE_3
* CODE_39
* ITF
`success` and `fail` are callback functions. Success is passed an object with data, type and cancelled properties. Data is the text representation of the barcode data, type is the type of barcode detected and cancelled is whether or not the user cancelled the scan.
A full example could be:
```
var scanner = cordova.require("cordova/plugin/BarcodeScanner");
scanner.scan(
cordova.plugins.barcodeScanner.scan(
function (result) {
alert("We got a barcode\n" +
"Result: " + result.text + "\n" +
@@ -75,9 +72,7 @@ Supported encoding types:
```
A full example could be:
var scanner = cordova.require("cordova/plugin/BarcodeScanner");
scanner.encode(BarcodeScanner.Encode.TEXT_TYPE, "http://www.nytimes.com", function(success) {
cordova.plugins.barcodeScanner.encode(BarcodeScanner.Encode.TEXT_TYPE, "http://www.nytimes.com", function(success) {
alert("encode success: " + success);
}, function(fail) {
alert("encoding failed: " + fail);
+231 -227
View File
@@ -1,34 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?><plugin xmlns="http://www.phonegap.com/ns/plugins/1.0"
xmlns:android="http://schemas.android.com/apk/res/android"
id="com.phonegap.plugins.barcodescanner"
version="0.6.0">
version="1.0.1">
<name>BarcodeScanner</name>
<description>Scans Barcodes.</description>
<license>MIT</license>
<engines>
<engine name="cordova" version=">=2.0.0" />
<engine name="cordova" version=">=3.0.0" />
</engines>
<asset src="www/barcodescanner.js" target="barcodescanner.js" />
<license>MIT</license>
<js-module src="www/barcodescanner.js" name="BarcodeScanner">
<clobbers target="cordova.plugins.barcodeScanner" />
</js-module>
<!-- ios -->
<platform name="ios">
<plugins-plist key="BarcodeScanner" string="CDVBarcodeScanner" />
<!-- Cordova >= 2.3 -->
<config-file target="config.xml" parent="plugins">
<plugin name="BarcodeScanner" value="CDVBarcodeScanner"/>
<!-- Cordova >= 2.8 -->
<config-file target="config.xml" parent="/*">
<feature name="BarcodeScanner">
<param name="ios-package" value="CDVBarcodeScanner" />
</feature>
</config-file>
<resource-file src="src/ios/scannerOverlay.xib" />
<resource-file src="src/ios/scannerOverlay.xib" />
<header-file src="src/ios/zxing-all-in-one.h" />
<source-file src="src/ios/CDVBarcodeScanner.mm" />
<source-file src="src/ios/CDVBarcodeScanner.mm" compiler-flags="-fno-objc-arc" />
<source-file src="src/ios/zxing-all-in-one.cpp" />
<framework src="libiconv.dylib" />
@@ -44,237 +44,241 @@
<!--
<source-file src="R.java" target-dir="src/com/google/zxing/client/android" />
-->
<!--
<config-file target="res/xml/plugins.xml" parent="/plugins">
<plugin name="BarcodeScanner" value="com.phonegap.plugins.barcodescanner.BarcodeScanner"/>
</config-file>
-->
<config-file target="res/xml/config.xml" parent="plugins">
<plugin name="BarcodeScanner" value="com.phonegap.plugins.barcodescanner.BarcodeScanner"/>
<config-file target="res/xml/config.xml" parent="/*">
<feature name="BarcodeScanner">
<param name="android-package" value="com.phonegap.plugins.barcodescanner.BarcodeScanner" />
</feature>
</config-file>
<config-file target="AndroidManifest.xml" parent="/manifest/application">
<activity
android:name="com.google.zxing.client.android.CaptureActivity"
android:screenOrientation="landscape"
android:clearTaskOnLaunch="true"
android:configChanges="orientation|keyboardHidden"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:windowSoftInputMode="stateAlwaysHidden"
android:exported="false">
<intent-filter>
<action android:name="com.phonegap.plugins.barcodescanner.SCAN"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<activity android:name="com.google.zxing.client.android.encode.EncodeActivity" android:label="@string/share_name">
<intent-filter>
<action android:name="com.phonegap.plugins.barcodescanner.ENCODE"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<activity android:name="com.google.zxing.client.android.HelpActivity" android:label="@string/share_name">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<activity
android:name="com.google.zxing.client.android.CaptureActivity"
android:screenOrientation="landscape"
android:clearTaskOnLaunch="true"
android:configChanges="orientation|keyboardHidden"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:windowSoftInputMode="stateAlwaysHidden"
android:exported="false">
<intent-filter>
<action android:name="com.phonegap.plugins.barcodescanner.SCAN"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<activity android:name="com.google.zxing.client.android.encode.EncodeActivity" android:label="@string/share_name">
<intent-filter>
<action android:name="com.phonegap.plugins.barcodescanner.ENCODE"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<activity android:name="com.google.zxing.client.android.HelpActivity" android:label="@string/share_name">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
</config-file>
<config-file target="AndroidManifest.xml" parent="/manifest">
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<!-- Not required to allow users to work around this -->
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<!-- Not required to allow users to work around this -->
<uses-feature android:name="android.hardware.camera" android:required="false" />
</config-file>
<source-file src="src/android/com.google.zxing.client.android.captureactivity.jar" target-dir="libs"/>
<!--
LibraryProject/res/*.*
search: (src/android/LibraryProject/(.+?)/[^/]+)$
replace: <source-file src="$1" target-dir="$2"/>
-->
<source-file src="src/android/LibraryProject/res/drawable/launcher_icon.png" target-dir="res/drawable"/>
<source-file src="src/android/LibraryProject/res/drawable/share_via_barcode.png" target-dir="res/drawable"/>
<source-file src="src/android/LibraryProject/res/drawable/shopper_icon.png" target-dir="res/drawable"/>
<source-file src="src/android/LibraryProject/res/drawable-hdpi/launcher_icon.png" target-dir="res/drawable-hdpi"/>
<source-file src="src/android/LibraryProject/res/drawable-hdpi/shopper_icon.png" target-dir="res/drawable-hdpi"/>
<source-file src="src/android/LibraryProject/res/drawable-xhdpi/launcher_icon.png" target-dir="res/drawable-xhdpi"/>
<source-file src="src/android/LibraryProject/res/drawable-xxhdpi/launcher_icon.png" target-dir="res/drawable-xxhdpi"/>
<source-file src="src/android/LibraryProject/res/layout/bookmark_picker_list_item.xml" target-dir="res/layout"/>
<source-file src="src/android/LibraryProject/res/layout/capture.xml" target-dir="res/layout"/>
<source-file src="src/android/LibraryProject/res/layout/encode.xml" target-dir="res/layout"/>
<source-file src="src/android/LibraryProject/res/layout/help.xml" target-dir="res/layout"/>
<source-file src="src/android/LibraryProject/res/layout/history_list_item.xml" target-dir="res/layout"/>
<source-file src="src/android/LibraryProject/res/layout/search_book_contents.xml" target-dir="res/layout"/>
<source-file src="src/android/LibraryProject/res/layout/search_book_contents_header.xml" target-dir="res/layout"/>
<source-file src="src/android/LibraryProject/res/layout/search_book_contents_list_item.xml" target-dir="res/layout"/>
<source-file src="src/android/LibraryProject/res/layout/share.xml" target-dir="res/layout"/>
<source-file src="src/android/LibraryProject/res/layout-land/encode.xml" target-dir="res/layout-land"/>
<source-file src="src/android/LibraryProject/res/layout-land/share.xml" target-dir="res/layout-land"/>
<source-file src="src/android/LibraryProject/res/layout-ldpi/capture.xml" target-dir="res/layout-ldpi"/>
<source-file src="src/android/LibraryProject/res/menu/capture.xml" target-dir="res/menu"/>
<source-file src="src/android/LibraryProject/res/menu/encode.xml" target-dir="res/menu"/>
<source-file src="src/android/LibraryProject/res/menu/history.xml" target-dir="res/menu"/>
<source-file src="src/android/LibraryProject/res/raw/beep.ogg" target-dir="res/raw"/>
<source-file src="src/android/LibraryProject/res/values/arrays.xml" target-dir="res/values"/>
<source-file src="src/android/LibraryProject/res/values/colors.xml" target-dir="res/values"/>
<source-file src="src/android/LibraryProject/res/values/dimens.xml" target-dir="res/values"/>
<source-file src="src/android/LibraryProject/res/values/ids.xml" target-dir="res/values"/>
<source-file src="src/android/LibraryProject/res/values-ar/strings.xml" target-dir="res/values-ar"/>
<source-file src="src/android/LibraryProject/res/values-bg/strings.xml" target-dir="res/values-bg"/>
<source-file src="src/android/LibraryProject/res/values-ca/strings.xml" target-dir="res/values-ca"/>
<source-file src="src/android/LibraryProject/res/values-cs/strings.xml" target-dir="res/values-cs"/>
<source-file src="src/android/LibraryProject/res/values-da/strings.xml" target-dir="res/values-da"/>
<source-file src="src/android/LibraryProject/res/values-de/strings.xml" target-dir="res/values-de"/>
<source-file src="src/android/LibraryProject/res/values-el/strings.xml" target-dir="res/values-el"/>
<source-file src="src/android/LibraryProject/res/values-es/strings.xml" target-dir="res/values-es"/>
<source-file src="src/android/LibraryProject/res/values-eu/strings.xml" target-dir="res/values-eu"/>
<source-file src="src/android/LibraryProject/res/values-fi/strings.xml" target-dir="res/values-fi"/>
<source-file src="src/android/LibraryProject/res/values-fr/strings.xml" target-dir="res/values-fr"/>
<source-file src="src/android/LibraryProject/res/values-he/strings.xml" target-dir="res/values-he"/>
<source-file src="src/android/LibraryProject/res/values-hi/strings.xml" target-dir="res/values-hi"/>
<source-file src="src/android/LibraryProject/res/values-hu/strings.xml" target-dir="res/values-hu"/>
<source-file src="src/android/LibraryProject/res/values-id/strings.xml" target-dir="res/values-id"/>
<source-file src="src/android/LibraryProject/res/values-it/strings.xml" target-dir="res/values-it"/>
<source-file src="src/android/LibraryProject/res/values-iw/strings.xml" target-dir="res/values-iw"/>
<source-file src="src/android/LibraryProject/res/values-ja/strings.xml" target-dir="res/values-ja"/>
<source-file src="src/android/LibraryProject/res/values-ko/strings.xml" target-dir="res/values-ko"/>
<source-file src="src/android/LibraryProject/res/values-nl/strings.xml" target-dir="res/values-nl"/>
<source-file src="src/android/LibraryProject/res/values-pl/strings.xml" target-dir="res/values-pl"/>
<source-file src="src/android/LibraryProject/res/values-pt/strings.xml" target-dir="res/values-pt"/>
<source-file src="src/android/LibraryProject/res/values-ru/strings.xml" target-dir="res/values-ru"/>
<source-file src="src/android/LibraryProject/res/values-sk/strings.xml" target-dir="res/values-sk"/>
<source-file src="src/android/LibraryProject/res/values-sl/strings.xml" target-dir="res/values-sl"/>
<source-file src="src/android/LibraryProject/res/values-sv/strings.xml" target-dir="res/values-sv"/>
<source-file src="src/android/LibraryProject/res/values-tr/strings.xml" target-dir="res/values-tr"/>
<source-file src="src/android/LibraryProject/res/values-zh-rCN/strings.xml" target-dir="res/values-zh-rCN"/>
<source-file src="src/android/LibraryProject/res/values-zh-rTW/strings.xml" target-dir="res/values-zh-rTW"/>
<source-file src="src/android/LibraryProject/res/xml/preferences.xml" target-dir="res/xml"/>
<!--
LibraryProject/res/*.*
search: (src/android/LibraryProject/(.+?)/[^/]+)$
replace: <source-file src="$1" target-dir="$2"/>
-->
<source-file src="src/android/LibraryProject/res/drawable/launcher_icon.png" target-dir="res/drawable"/>
<source-file src="src/android/LibraryProject/res/drawable/share_via_barcode.png" target-dir="res/drawable"/>
<source-file src="src/android/LibraryProject/res/drawable/shopper_icon.png" target-dir="res/drawable"/>
<source-file src="src/android/LibraryProject/res/drawable-hdpi/launcher_icon.png" target-dir="res/drawable-hdpi"/>
<source-file src="src/android/LibraryProject/res/drawable-hdpi/shopper_icon.png" target-dir="res/drawable-hdpi"/>
<source-file src="src/android/LibraryProject/res/drawable-xhdpi/launcher_icon.png" target-dir="res/drawable-xhdpi"/>
<source-file src="src/android/LibraryProject/res/drawable-xxhdpi/launcher_icon.png" target-dir="res/drawable-xxhdpi"/>
<source-file src="src/android/LibraryProject/res/layout/bookmark_picker_list_item.xml" target-dir="res/layout"/>
<source-file src="src/android/LibraryProject/res/layout/capture.xml" target-dir="res/layout"/>
<source-file src="src/android/LibraryProject/res/layout/encode.xml" target-dir="res/layout"/>
<source-file src="src/android/LibraryProject/res/layout/help.xml" target-dir="res/layout"/>
<source-file src="src/android/LibraryProject/res/layout/history_list_item.xml" target-dir="res/layout"/>
<source-file src="src/android/LibraryProject/res/layout/search_book_contents.xml" target-dir="res/layout"/>
<source-file src="src/android/LibraryProject/res/layout/search_book_contents_header.xml" target-dir="res/layout"/>
<source-file src="src/android/LibraryProject/res/layout/search_book_contents_list_item.xml" target-dir="res/layout"/>
<source-file src="src/android/LibraryProject/res/layout/share.xml" target-dir="res/layout"/>
<source-file src="src/android/LibraryProject/res/layout-land/encode.xml" target-dir="res/layout-land"/>
<source-file src="src/android/LibraryProject/res/layout-land/share.xml" target-dir="res/layout-land"/>
<source-file src="src/android/LibraryProject/res/layout-ldpi/capture.xml" target-dir="res/layout-ldpi"/>
<source-file src="src/android/LibraryProject/res/menu/capture.xml" target-dir="res/menu"/>
<source-file src="src/android/LibraryProject/res/menu/encode.xml" target-dir="res/menu"/>
<source-file src="src/android/LibraryProject/res/menu/history.xml" target-dir="res/menu"/>
<source-file src="src/android/LibraryProject/res/raw/beep.ogg" target-dir="res/raw"/>
<source-file src="src/android/LibraryProject/res/values/arrays.xml" target-dir="res/values"/>
<source-file src="src/android/LibraryProject/res/values/colors.xml" target-dir="res/values"/>
<source-file src="src/android/LibraryProject/res/values/dimens.xml" target-dir="res/values"/>
<source-file src="src/android/LibraryProject/res/values/ids.xml" target-dir="res/values"/>
<source-file src="src/android/LibraryProject/res/values-ar/strings.xml" target-dir="res/values-ar"/>
<source-file src="src/android/LibraryProject/res/values-bg/strings.xml" target-dir="res/values-bg"/>
<source-file src="src/android/LibraryProject/res/values-ca/strings.xml" target-dir="res/values-ca"/>
<source-file src="src/android/LibraryProject/res/values-cs/strings.xml" target-dir="res/values-cs"/>
<source-file src="src/android/LibraryProject/res/values-da/strings.xml" target-dir="res/values-da"/>
<source-file src="src/android/LibraryProject/res/values-de/strings.xml" target-dir="res/values-de"/>
<source-file src="src/android/LibraryProject/res/values-el/strings.xml" target-dir="res/values-el"/>
<source-file src="src/android/LibraryProject/res/values-es/strings.xml" target-dir="res/values-es"/>
<source-file src="src/android/LibraryProject/res/values-eu/strings.xml" target-dir="res/values-eu"/>
<source-file src="src/android/LibraryProject/res/values-fi/strings.xml" target-dir="res/values-fi"/>
<source-file src="src/android/LibraryProject/res/values-fr/strings.xml" target-dir="res/values-fr"/>
<source-file src="src/android/LibraryProject/res/values-he/strings.xml" target-dir="res/values-he"/>
<source-file src="src/android/LibraryProject/res/values-hi/strings.xml" target-dir="res/values-hi"/>
<source-file src="src/android/LibraryProject/res/values-hu/strings.xml" target-dir="res/values-hu"/>
<source-file src="src/android/LibraryProject/res/values-id/strings.xml" target-dir="res/values-id"/>
<source-file src="src/android/LibraryProject/res/values-it/strings.xml" target-dir="res/values-it"/>
<source-file src="src/android/LibraryProject/res/values-iw/strings.xml" target-dir="res/values-iw"/>
<source-file src="src/android/LibraryProject/res/values-ja/strings.xml" target-dir="res/values-ja"/>
<source-file src="src/android/LibraryProject/res/values-ko/strings.xml" target-dir="res/values-ko"/>
<source-file src="src/android/LibraryProject/res/values-nl/strings.xml" target-dir="res/values-nl"/>
<source-file src="src/android/LibraryProject/res/values-pl/strings.xml" target-dir="res/values-pl"/>
<source-file src="src/android/LibraryProject/res/values-pt/strings.xml" target-dir="res/values-pt"/>
<source-file src="src/android/LibraryProject/res/values-ru/strings.xml" target-dir="res/values-ru"/>
<source-file src="src/android/LibraryProject/res/values-sk/strings.xml" target-dir="res/values-sk"/>
<source-file src="src/android/LibraryProject/res/values-sl/strings.xml" target-dir="res/values-sl"/>
<source-file src="src/android/LibraryProject/res/values-sv/strings.xml" target-dir="res/values-sv"/>
<source-file src="src/android/LibraryProject/res/values-tr/strings.xml" target-dir="res/values-tr"/>
<source-file src="src/android/LibraryProject/res/values-zh-rCN/strings.xml" target-dir="res/values-zh-rCN"/>
<source-file src="src/android/LibraryProject/res/values-zh-rTW/strings.xml" target-dir="res/values-zh-rTW"/>
<source-file src="src/android/LibraryProject/res/xml/preferences.xml" target-dir="res/xml"/>
<!-- plugman cannot merge - prepare manual merge -->
<!-- plugman cannot merge - prepare manual merge -->
<config-file target="res/values/strings.xml" parent="/resources">
<string name="app_picker_name">Applications</string>
<string name="bookmark_picker_name">Bookmarks</string>
<string name="button_add_calendar">Add to calendar</string>
<string name="button_add_contact">Add contact</string>
<string name="button_back">Back</string>
<string name="button_book_search">Book Search</string>
<string name="button_cancel">Cancel</string>
<string name="button_custom_product_search">Custom search</string>
<string name="button_dial">Dial number</string>
<string name="button_done">Done</string>
<string name="button_email">Send email</string>
<string name="button_get_directions">Get directions</string>
<string name="button_google_shopper">Shopper</string>
<string name="button_mms">Send MMS</string>
<string name="button_ok">OK</string>
<string name="button_open_browser">Open browser</string>
<string name="button_product_search">Product Search</string>
<string name="button_search_book_contents">Search contents</string>
<string name="button_share_app">Application</string>
<string name="button_share_bookmark">Bookmark</string>
<string name="button_share_by_email">Share via email</string>
<string name="button_share_by_sms">Share via SMS</string>
<string name="button_share_clipboard">Clipboard</string>
<string name="button_share_contact">Contact</string>
<string name="button_show_map">Show map</string>
<string name="button_sms">Send SMS</string>
<string name="button_web_search">Web search</string>
<string name="button_wifi">Connect to Network</string>
<string name="contents_contact">Contact info</string>
<string name="contents_email">Email address</string>
<string name="contents_location">Geographic coordinates</string>
<string name="contents_phone">Phone number</string>
<string name="contents_sms">SMS address</string>
<string name="contents_text">Plain text</string>
<string name="history_clear_text">Clear history</string>
<string name="history_clear_one_history_text">Clear</string>
<string name="history_email_title">Barcode Scanner history</string>
<string name="history_empty">Empty</string>
<string name="history_empty_detail">No barcode scans have been recorded</string>
<string name="history_send">Send history</string>
<string name="history_title">History</string>
<string name="menu_encode_mecard">Use MECARD</string>
<string name="menu_encode_vcard">Use vCard</string>
<string name="menu_help">Help</string>
<string name="menu_history">History</string>
<string name="menu_share">Share</string>
<string name="msg_bulk_mode_scanned">Bulk mode: barcode scanned and saved</string>
<string name="msg_camera_framework_bug">Sorry, the Android camera encountered a problem. You may need to restart the device.</string>
<string name="msg_default_format">Format</string>
<string name="msg_default_meta">Metadata</string>
<string name="msg_default_mms_subject">Hi</string>
<string name="msg_default_status">Place a barcode inside the viewfinder rectangle to scan it.</string>
<string name="msg_default_time">Time</string>
<string name="msg_default_type">Type</string>
<string name="msg_encode_contents_failed">Could not encode a barcode from the data provided.</string>
<string name="msg_google_books">Google Books</string>
<string name="msg_google_product">Google Product Search</string>
<string name="msg_google_shopper_missing">Google Shopper is not installed</string>
<string name="msg_install_google_shopper">Google Shopper combines barcode scanning with online and local prices, reviews and more without opening the browser. Would you like to try it?</string>
<string name="msg_intent_failed">Sorry, the requested application could not be launched. The barcode contents may be invalid.</string>
<string name="msg_redirect">Redirect</string>
<string name="msg_sbc_book_not_searchable">Sorry, this book is not searchable.</string>
<string name="msg_sbc_failed">Sorry, the search encountered a problem.</string>
<string name="msg_sbc_no_page_returned">No page returned</string>
<string name="msg_sbc_page">Page</string>
<string name="msg_sbc_results">Results</string>
<string name="msg_sbc_searching_book">Searching book\u2026</string>
<string name="msg_sbc_snippet_unavailable">Snippet not available</string>
<string name="msg_sbc_unknown_page">Unknown page</string>
<string name="msg_share_explanation">You can share data by displaying a barcode on your screen and scanning it with another phone.</string>
<string name="msg_share_subject_line">Here are the contents of a barcode I scanned</string>
<string name="msg_share_text">Or type some text and press Enter</string>
<string name="msg_sure">Are you sure?</string>
<string name="msg_unmount_usb">Sorry, the SD card is not accessible.</string>
<string name="preferences_actions_title">When a barcode is found\u2026</string>
<string name="preferences_auto_focus_title">Use auto focus</string>
<string name="preferences_bulk_mode_summary">Scan and save many barcodes continuously</string>
<string name="preferences_bulk_mode_title">Bulk scan mode</string>
<string name="preferences_copy_to_clipboard_title">Copy to clipboard</string>
<string name="preferences_custom_product_search_summary" formatted="false">Substitutions: %s = contents, %f = format, %t = type</string>
<string name="preferences_custom_product_search_title">Custom search URL</string>
<string name="preferences_decode_1D_title">1D barcodes</string>
<string name="preferences_decode_Data_Matrix_title">Data Matrix</string>
<string name="preferences_decode_QR_title">QR Codes</string>
<string name="preferences_device_bug_workarounds_title">Device Bug Workarounds</string>
<string name="preferences_disable_continuous_focus_summary">Use only standard focus mode</string>
<string name="preferences_disable_continuous_focus_title">No continuous focus</string>
<string name="preferences_disable_exposure_title">No exposure</string>
<string name="preferences_front_light_summary">Improves scanning in low light on some phones, but may cause glare. Does not work on all phones.</string>
<string name="preferences_front_light_title">Use front light</string>
<string name="preferences_general_title">General settings</string>
<string name="preferences_name">Settings</string>
<string name="preferences_play_beep_title">Beep</string>
<string name="preferences_remember_duplicates_summary">Store multiple scans of the same barcode in History</string>
<string name="preferences_remember_duplicates_title">Remember duplicates</string>
<string name="preferences_result_title">Result settings</string>
<string name="preferences_scanning_title">When scanning for barcodes, decode\u2026</string>
<string name="preferences_search_country">Search country</string>
<string name="preferences_try_bsplus">Try Barcode Scanner+</string>
<string name="preferences_try_bsplus_summary">Enhanced with new features and interface</string>
<string name="preferences_supplemental_summary">Try to retrieve more information about the barcode contents</string>
<string name="preferences_supplemental_title">Retrieve more info</string>
<string name="preferences_vibrate_title">Vibrate</string>
<string name="result_address_book">Found contact info</string>
<string name="result_calendar">Found calendar event</string>
<string name="result_email_address">Found email address</string>
<string name="result_geo">Found geographic coordinates</string>
<string name="result_isbn">Found book</string>
<string name="result_product">Found product</string>
<string name="result_sms">Found SMS address</string>
<string name="result_tel">Found phone number</string>
<string name="result_text">Found plain text</string>
<string name="result_uri">Found URL</string>
<string name="result_wifi">Found WLAN Configuration</string>
<string name="sbc_name">Google Book Search</string>
<string name="share_name">Share via barcode</string>
<string name="wifi_changing_network">Requesting connection to network\u2026</string>
<string name="wifi_ssid_label">Network Name</string>
<string name="wifi_type_label">Type</string>
<string name="app_picker_name">Applications</string>
<string name="bookmark_picker_name">Bookmarks</string>
<string name="button_add_calendar">Add to calendar</string>
<string name="button_add_contact">Add contact</string>
<string name="button_back">Back</string>
<string name="button_book_search">Book Search</string>
<string name="button_cancel">Cancel</string>
<string name="button_custom_product_search">Custom search</string>
<string name="button_dial">Dial number</string>
<string name="button_done">Done</string>
<string name="button_email">Send email</string>
<string name="button_get_directions">Get directions</string>
<string name="button_google_shopper">Shopper</string>
<string name="button_mms">Send MMS</string>
<string name="button_ok">OK</string>
<string name="button_open_browser">Open browser</string>
<string name="button_product_search">Product Search</string>
<string name="button_search_book_contents">Search contents</string>
<string name="button_share_app">Application</string>
<string name="button_share_bookmark">Bookmark</string>
<string name="button_share_by_email">Share via email</string>
<string name="button_share_by_sms">Share via SMS</string>
<string name="button_share_clipboard">Clipboard</string>
<string name="button_share_contact">Contact</string>
<string name="button_show_map">Show map</string>
<string name="button_sms">Send SMS</string>
<string name="button_web_search">Web search</string>
<string name="button_wifi">Connect to Network</string>
<string name="contents_contact">Contact info</string>
<string name="contents_email">Email address</string>
<string name="contents_location">Geographic coordinates</string>
<string name="contents_phone">Phone number</string>
<string name="contents_sms">SMS address</string>
<string name="contents_text">Plain text</string>
<string name="history_clear_text">Clear history</string>
<string name="history_clear_one_history_text">Clear</string>
<string name="history_email_title">Barcode Scanner history</string>
<string name="history_empty">Empty</string>
<string name="history_empty_detail">No barcode scans have been recorded</string>
<string name="history_send">Send history</string>
<string name="history_title">History</string>
<string name="menu_encode_mecard">Use MECARD</string>
<string name="menu_encode_vcard">Use vCard</string>
<string name="menu_help">Help</string>
<string name="menu_history">History</string>
<string name="menu_share">Share</string>
<string name="msg_bulk_mode_scanned">Bulk mode: barcode scanned and saved</string>
<string name="msg_camera_framework_bug">Sorry, the Android camera encountered a problem. You may need to restart the device.</string>
<string name="msg_default_format">Format</string>
<string name="msg_default_meta">Metadata</string>
<string name="msg_default_mms_subject">Hi</string>
<string name="msg_default_status">Place a barcode inside the viewfinder rectangle to scan it.</string>
<string name="msg_default_time">Time</string>
<string name="msg_default_type">Type</string>
<string name="msg_encode_contents_failed">Could not encode a barcode from the data provided.</string>
<string name="msg_google_books">Google Books</string>
<string name="msg_google_product">Google Product Search</string>
<string name="msg_google_shopper_missing">Google Shopper is not installed</string>
<string name="msg_install_google_shopper">Google Shopper combines barcode scanning with online and local prices, reviews and more without opening the browser. Would you like to try it?</string>
<string name="msg_intent_failed">Sorry, the requested application could not be launched. The barcode contents may be invalid.</string>
<string name="msg_redirect">Redirect</string>
<string name="msg_sbc_book_not_searchable">Sorry, this book is not searchable.</string>
<string name="msg_sbc_failed">Sorry, the search encountered a problem.</string>
<string name="msg_sbc_no_page_returned">No page returned</string>
<string name="msg_sbc_page">Page</string>
<string name="msg_sbc_results">Results</string>
<string name="msg_sbc_searching_book">Searching book\u2026</string>
<string name="msg_sbc_snippet_unavailable">Snippet not available</string>
<string name="msg_sbc_unknown_page">Unknown page</string>
<string name="msg_share_explanation">You can share data by displaying a barcode on your screen and scanning it with another phone.</string>
<string name="msg_share_subject_line">Here are the contents of a barcode I scanned</string>
<string name="msg_share_text">Or type some text and press Enter</string>
<string name="msg_sure">Are you sure?</string>
<string name="msg_unmount_usb">Sorry, the SD card is not accessible.</string>
<string name="preferences_actions_title">When a barcode is found\u2026</string>
<string name="preferences_auto_focus_title">Use auto focus</string>
<string name="preferences_bulk_mode_summary">Scan and save many barcodes continuously</string>
<string name="preferences_bulk_mode_title">Bulk scan mode</string>
<string name="preferences_copy_to_clipboard_title">Copy to clipboard</string>
<string name="preferences_custom_product_search_summary" formatted="false">Substitutions: %s = contents, %f = format, %t = type</string>
<string name="preferences_custom_product_search_title">Custom search URL</string>
<string name="preferences_decode_1D_title">1D barcodes</string>
<string name="preferences_decode_Data_Matrix_title">Data Matrix</string>
<string name="preferences_decode_QR_title">QR Codes</string>
<string name="preferences_device_bug_workarounds_title">Device Bug Workarounds</string>
<string name="preferences_disable_continuous_focus_summary">Use only standard focus mode</string>
<string name="preferences_disable_continuous_focus_title">No continuous focus</string>
<string name="preferences_disable_exposure_title">No exposure</string>
<string name="preferences_front_light_summary">Improves scanning in low light on some phones, but may cause glare. Does not work on all phones.</string>
<string name="preferences_front_light_title">Use front light</string>
<string name="preferences_general_title">General settings</string>
<string name="preferences_name">Settings</string>
<string name="preferences_play_beep_title">Beep</string>
<string name="preferences_remember_duplicates_summary">Store multiple scans of the same barcode in History</string>
<string name="preferences_remember_duplicates_title">Remember duplicates</string>
<string name="preferences_result_title">Result settings</string>
<string name="preferences_scanning_title">When scanning for barcodes, decode\u2026</string>
<string name="preferences_search_country">Search country</string>
<string name="preferences_try_bsplus">Try Barcode Scanner+</string>
<string name="preferences_try_bsplus_summary">Enhanced with new features and interface</string>
<string name="preferences_supplemental_summary">Try to retrieve more information about the barcode contents</string>
<string name="preferences_supplemental_title">Retrieve more info</string>
<string name="preferences_vibrate_title">Vibrate</string>
<string name="result_address_book">Found contact info</string>
<string name="result_calendar">Found calendar event</string>
<string name="result_email_address">Found email address</string>
<string name="result_geo">Found geographic coordinates</string>
<string name="result_isbn">Found book</string>
<string name="result_product">Found product</string>
<string name="result_sms">Found SMS address</string>
<string name="result_tel">Found phone number</string>
<string name="result_text">Found plain text</string>
<string name="result_uri">Found URL</string>
<string name="result_wifi">Found WLAN Configuration</string>
<string name="sbc_name">Google Book Search</string>
<string name="share_name">Share via barcode</string>
<string name="wifi_changing_network">Requesting connection to network\u2026</string>
<string name="wifi_ssid_label">Network Name</string>
<string name="wifi_type_label">Type</string>
</config-file>
</platform>
</plugin>
-216
View File
@@ -1,216 +0,0 @@
<?php
class PluginHelper {
public $basePath = 'src/android/LibraryProject/';
private function perror($msg)
{
file_put_contents('php://stderr', $msg, FILE_APPEND);
}
/**
* Get contents of an XML file.
*
* @param string $xmlFilePath The XML file path relative to $this->basePath.
* @param string $parent Parent element from which to get children.
* @param array $options
* <li>ident - ident chanracters.
* <li>ignorePattern - pattern that will be matched to XML.
* @return string
*/
public function getXml($xmlFilePath, $parent, $options=array())
{
if (!isset($options['indent']))
{
$options['indent'] = "";
}
$contents = "";
$filePath = $this->basePath . $xmlFilePath;
if (!file_exists($filePath))
{
$this->perror("File $filePath does not exist");
return $contents;
}
$xml = file_get_contents($this->basePath . $xmlFilePath);
$document = new SimpleXMLElement($xml);
$els = $document->xpath($parent);
if (!empty($els))
{
$rootNode = $els[0];
foreach ($rootNode->children() as $child)
{
$childContent = $child->asXML();
if (isset($options['ignorePattern']) && preg_match($options['ignorePattern'], $childContent))
{
$this->perror("\nignored $childContent");
continue;
}
$contents .= "\n" . $options['indent'] . $childContent;
}
$contents = ltrim ($contents) . "\n";
return $contents;
}
else
{
$this->perror("Path $parent not found in $xmlFilePath");
return $contents;
}
}
/**
* Generate source-file tags to copy all resources from given dir.
*
* @param type $dir Dir path relative to $this->basePath.
* @param array $options
* <li>ident - ident chanracters.
*/
public function sourceFiles($dir, $options=array())
{
//ob_end_clean();
if (!isset($options['indent']))
{
$options['indent'] = "";
}
$path = $this->basePath . $dir;
$it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path));
while($it->valid())
{
if (!$it->isDot())
{
$filename = strtr($it->key(), '\\', '/');
if (isset($options['ignorePattern']) && preg_match($options['ignorePattern'], $filename))
{
$this->perror("\nignored $filename");
$it->next();
continue;
}
$targetDir = preg_replace('#.+LibraryProject/(.+?)/[^/]+$#', '$1', $filename);
echo "\n{$options['indent']}<source-file src=\"$filename\" target-dir=\"$targetDir\"/>";
}
$it->next();
}
echo "\n";
//exit;
}
}
// init
$pluginHelper = new PluginHelper();
ob_start();
echo '<?xml version="1.0" encoding="UTF-8"?>';
?>
<plugin xmlns="http://www.phonegap.com/ns/plugins/1.0"
xmlns:android="http://schemas.android.com/apk/res/android"
id="com.phonegap.plugins.barcodescanner"
version="0.5.3">
<name>BarcodeScanner</name>
<description>Scans Barcodes.</description>
<engines>
<engine name="cordova" version=">=2.0.0" />
</engines>
<asset src="www/barcodescanner.js" target="barcodescanner.js" />
<!-- ios -->
<platform name="ios">
<plugins-plist key="BarcodeScanner" string="CDVBarcodeScanner" />
<!-- Cordova >= 2.3 -->
<config-file target="config.xml" parent="plugins">
<plugin name="BarcodeScanner" value="CDVBarcodeScanner"/>
</config-file>
<resource-file src="src/ios/scannerOverlay.xib" />
<header-file src="src/ios/zxing-all-in-one.h" />
<source-file src="src/ios/CDVBarcodeScanner.mm" />
<source-file src="src/ios/zxing-all-in-one.cpp" />
<framework src="libiconv.dylib" />
<framework src="AVFoundation.framework" />
<framework src="AssetsLibrary.framework" />
<framework src="CoreVideo.framework" />
</platform>
<!-- android -->
<platform name="android">
<source-file src="src/android/com/phonegap/plugins/barcodescanner/BarcodeScanner.java" target-dir="src/com/phonegap/plugins/barcodescanner" />
<!--
<source-file src="R.java" target-dir="src/com/google/zxing/client/android" />
-->
<config-file target="res/xml/plugins.xml" parent="/plugins">
<plugin name="BarcodeScanner" value="com.phonegap.plugins.barcodescanner.BarcodeScanner"/>
</config-file>
<config-file target="res/xml/config.xml" parent="plugins">
<plugin name="BarcodeScanner" value="com.phonegap.plugins.barcodescanner.BarcodeScanner"/>
</config-file>
<config-file target="AndroidManifest.xml" parent="/manifest/application">
<activity
android:name="com.google.zxing.client.android.CaptureActivity"
android:screenOrientation="landscape"
android:clearTaskOnLaunch="true"
android:configChanges="orientation|keyboardHidden"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:windowSoftInputMode="stateAlwaysHidden"
android:exported="false">
<intent-filter>
<action android:name="com.phonegap.plugins.barcodescanner.SCAN"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<activity android:name="com.google.zxing.client.android.encode.EncodeActivity" android:label="@string/share_name">
<intent-filter>
<action android:name="com.phonegap.plugins.barcodescanner.ENCODE"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<activity android:name="com.google.zxing.client.android.HelpActivity" android:label="@string/share_name">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
</config-file>
<config-file target="AndroidManifest.xml" parent="/manifest">
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<!-- Not required to allow users to work around this -->
<uses-feature android:name="android.hardware.camera" android:required="false" />
</config-file>
<source-file src="src/android/com.google.zxing.client.android.captureactivity.jar" target-dir="libs"/>
<!--
LibraryProject/res/*.*
search: (src/android/LibraryProject/(.+?)/[^/]+)$
replace: <source-file src="$1" target-dir="$2"/>
-->
<?
$pluginHelper->sourceFiles("res", array('indent'=>"\t\t", 'ignorePattern' => '#values/strings.xml#'));
?>
<!-- plugman cannot merge - prepare manual merge -->
<config-file target="res/values/strings.xml" parent="/resources">
<?=$pluginHelper->getXml('res/values/strings.xml', "/resources", array('ignorePattern' => '/name="(app_name|menu_settings)"/', 'indent' => "\t\t\t"))?>
</config-file>
</platform>
</plugin>
<?php
$pluginText = ob_get_clean();
file_put_contents("plugin.xml", $pluginText);
?>
@@ -15,20 +15,5 @@
limitations under the License.
-->
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_share"
android:title="@string/menu_share"
android:icon="@android:drawable/ic_menu_share"
android:orderInCategory="1"/>
<item android:id="@+id/menu_history"
android:title="@string/menu_history"
android:icon="@android:drawable/ic_menu_recent_history"
android:orderInCategory="2"/>
<item android:id="@+id/menu_settings"
android:title="@string/menu_settings"
android:icon="@android:drawable/ic_menu_preferences"
android:orderInCategory="3"/>
<item android:id="@+id/menu_help"
android:title="@string/menu_help"
android:icon="@android:drawable/ic_menu_help"
android:orderInCategory="4"/>
<!-- removed nonfunctional menu - see file history to retrieve -->
</menu>
@@ -15,12 +15,5 @@
limitations under the License.
-->
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_share"
android:title="@string/menu_share"
android:icon="@android:drawable/ic_menu_share"
android:orderInCategory="1"/>
<item android:id="@+id/menu_encode"
android:title="@string/menu_encode_vcard"
android:icon="@android:drawable/ic_menu_sort_alphabetically"
android:orderInCategory="2"/>
<!-- removed nonfunctional menu - see file history to retrieve -->
</menu>
+15 -3
View File
@@ -63,17 +63,29 @@ Workflow for creating and building example project with the plugin:
1. Create and build example project:
```
cordova create hello com.example.hello "Hello World"
cordova create hello com.example.hello "HelloWorld"
cd hello
cordova platform add android
cordova build
```
Warning! White space characters are not allowed in app name (and any other that cannot be used in an activity or class name). See: https://issues.apache.org/jira/browse/CB-4148
Note. If you wish to remove Android platform (to e.g. generate it with your www assests) you will need to remove "platforms\android" and "merges\android\".
2. Copy plugin files to "hello\plugins\barcodescanner\".
2. Copy plugin files to "hello\plugins\com.phonegap.plugins.barcodescanner\". You can simply download from github:
```
git clone https://github.com/wildabeast/BarcodeScanner.git plugins\com.phonegap.plugins.barcodescanner
```
3. Install the plugin (current dir. being "hello"):
```
plugman --plugins_dir plugins --plugin barcodescanner --platform android --project platforms\android
plugman --plugins_dir plugins --plugin com.phonegap.plugins.barcodescanner --platform android --project platforms\android
plugman install --plugins_dir plugins --plugin com.phonegap.plugins.barcodescanner --platform android --project platforms\android
```
Note. To manually remove plugin you need to re-create plugins\android.json (and remove changes done by the plugin - you can simply remove whole platform as described in first step and re-create).
4. Build & deploy Android project with whatever Android IDE (or ANT + ADK tools).
Note. Plugin sub-dir (here "com.phonegap.plugins.barcodescanner") need to be the same as the plugin ID only since PhoneGap 3.0.
@@ -4,8 +4,8 @@
*
* Copyright (c) Matt Kane 2010
* Copyright (c) 2011, IBM Corporation
* Copyright (c) 2013, Maciej Nux Jaros
*/
package com.phonegap.plugins.barcodescanner;
import org.json.JSONArray;
@@ -16,13 +16,18 @@ import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import org.apache.cordova.api.Plugin;
import org.apache.cordova.api.PluginResult;
import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.PluginResult;
/**
* This calls out to the ZXing barcode reader and returns the result.
*
* @sa https://github.com/apache/cordova-android/blob/master/framework/src/org/apache/cordova/CordovaPlugin.java
*/
public class BarcodeScanner extends Plugin {
public class BarcodeScanner extends CordovaPlugin {
public static final int REQUEST_CODE = 0x0ba7c0de;
private static final String SCAN = "scan";
private static final String ENCODE = "encode";
private static final String CANCELLED = "cancelled";
@@ -39,9 +44,9 @@ public class BarcodeScanner extends Plugin {
private static final String PHONE_TYPE = "PHONE_TYPE";
private static final String SMS_TYPE = "SMS_TYPE";
public static final int REQUEST_CODE = 0x0ba7c0de;
private static final String LOG_TAG = "BarcodeScanner";
public String callback;
private CallbackContext callbackContext;
/**
* Constructor.
@@ -50,15 +55,24 @@ public class BarcodeScanner extends Plugin {
}
/**
* Executes the request and returns PluginResult.
* Executes the request.
*
* @param action The action to execute.
* @param args JSONArray of arguments for the plugin.
* @param callbackId The callback id used when calling back into JavaScript.
* @return A PluginResult object with a status and message.
* This method is called from the WebView thread. To do a non-trivial amount of work, use:
* cordova.getThreadPool().execute(runnable);
*
* To run on the UI thread, use:
* cordova.getActivity().runOnUiThread(runnable);
*
* @param action The action to execute.
* @param args The exec() arguments.
* @param callbackContext The callback context used when calling back into JavaScript.
* @return Whether the action was valid.
*
* @sa https://github.com/apache/cordova-android/blob/master/framework/src/org/apache/cordova/CordovaPlugin.java
*/
public PluginResult execute(String action, JSONArray args, String callbackId) {
this.callback = callbackId;
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) {
this.callbackContext = callbackContext;
if (action.equals(ENCODE)) {
JSONObject obj = args.optJSONObject(0);
@@ -72,25 +86,23 @@ public class BarcodeScanner extends Plugin {
}
if (data == null) {
return new PluginResult(PluginResult.Status.ERROR, "User did not specify data to encode");
callbackContext.error("User did not specify data to encode");
return true;
}
encode(type, data);
} else {
return new PluginResult(PluginResult.Status.ERROR, "User did not specify data to encode");
callbackContext.error("User did not specify data to encode");
return true;
}
}
else if (action.equals(SCAN)) {
} else if (action.equals(SCAN)) {
scan();
} else {
return new PluginResult(PluginResult.Status.INVALID_ACTION);
return false;
}
PluginResult r = new PluginResult(PluginResult.Status.NO_RESULT);
r.setKeepCallback(true);
return r;
return true;
}
/**
* Starts an intent to scan and decode a barcode.
*/
@@ -98,17 +110,18 @@ public class BarcodeScanner extends Plugin {
Intent intentScan = new Intent(SCAN_INTENT);
intentScan.addCategory(Intent.CATEGORY_DEFAULT);
this.cordova.startActivityForResult((Plugin) this, intentScan, REQUEST_CODE);
this.cordova.startActivityForResult((CordovaPlugin) this, intentScan, REQUEST_CODE);
}
/**
* Called when the barcode scanner intent completes
* Called when the barcode scanner intent completes.
*
* @param requestCode The request code originally supplied to startActivityForResult(),
* allowing you to identify who this result came from.
* @param resultCode The integer result code returned by the child activity through its setResult().
* @param intent An Intent, which can return result data to the caller (various data can be attached to Intent "extras").
* @param requestCode The request code originally supplied to startActivityForResult(),
* allowing you to identify who this result came from.
* @param resultCode The integer result code returned by the child activity through its setResult().
* @param intent An Intent, which can return result data to the caller (various data can be attached to Intent "extras").
*/
@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == REQUEST_CODE) {
if (resultCode == Activity.RESULT_OK) {
@@ -117,30 +130,34 @@ public class BarcodeScanner extends Plugin {
obj.put(TEXT, intent.getStringExtra("SCAN_RESULT"));
obj.put(FORMAT, intent.getStringExtra("SCAN_RESULT_FORMAT"));
obj.put(CANCELLED, false);
} catch(JSONException e) {
//Log.d(LOG_TAG, "This should never happen");
} catch (JSONException e) {
Log.d(LOG_TAG, "This should never happen");
}
this.success(new PluginResult(PluginResult.Status.OK, obj), this.callback);
//this.success(new PluginResult(PluginResult.Status.OK, obj), this.callback);
this.callbackContext.success(obj);
} else if (resultCode == Activity.RESULT_CANCELED) {
JSONObject obj = new JSONObject();
try {
obj.put(TEXT, "");
obj.put(FORMAT, "");
obj.put(CANCELLED, true);
} catch(JSONException e) {
//Log.d(LOG_TAG, "This should never happen");
} catch (JSONException e) {
Log.d(LOG_TAG, "This should never happen");
}
this.success(new PluginResult(PluginResult.Status.OK, obj), this.callback);
//this.success(new PluginResult(PluginResult.Status.OK, obj), this.callback);
this.callbackContext.success(obj);
} else {
this.error(new PluginResult(PluginResult.Status.ERROR), this.callback);
//this.error(new PluginResult(PluginResult.Status.ERROR), this.callback);
this.callbackContext.error("Unexpected error");
}
}
}
/**
* Initiates a barcode encode.
* @param data The data to encode in the bar code
* @param data2
*
* @param type Endoiding type.
* @param data The data to encode in the bar code.
*/
public void encode(String type, String data) {
Intent intentEncode = new Intent(ENCODE_INTENT);
@@ -149,4 +166,4 @@ public class BarcodeScanner extends Plugin {
this.cordova.getActivity().startActivity(intentEncode);
}
}
}
+9 -9
View File
@@ -46,8 +46,8 @@
//------------------------------------------------------------------------------
@interface CDVBarcodeScanner : CDVPlugin {}
- (NSString*)isScanNotPossible;
- (void)scan:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options;
- (void)encode:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options;
- (void)scan:(CDVInvokedUrlCommand*)command;
- (void)encode:(CDVInvokedUrlCommand*)command;
- (void)returnSuccess:(NSString*)scannedText format:(NSString*)format cancelled:(BOOL)cancelled callback:(NSString*)callback;
- (void)returnError:(NSString*)message callback:(NSString*)callback;
@end
@@ -120,18 +120,18 @@
}
//--------------------------------------------------------------------------
- (void)scan:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options {
- (void)scan:(CDVInvokedUrlCommand*)command {
CDVbcsProcessor* processor;
NSString* callback;
NSString* capabilityError;
callback = [arguments objectAtIndex:0];
callback = command.callbackId;
// We allow the user to define an alternate xib file for loading the overlay.
NSString *overlayXib = nil;
if ( [arguments count] == 2 )
if ( [command.arguments count] >= 1 )
{
overlayXib = [arguments objectAtIndex:1];
overlayXib = [command.arguments objectAtIndex:0];
}
capabilityError = [self isScanNotPossible];
@@ -152,8 +152,8 @@
}
//--------------------------------------------------------------------------
- (void)encode:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options {
[self returnError:@"encode function not supported" callback:[arguments objectAtIndex:0]];
- (void)encode:(CDVInvokedUrlCommand*)command {
[self returnError:@"encode function not supported" callback:command.callbackId];
}
//--------------------------------------------------------------------------
@@ -855,4 +855,4 @@ parentViewController:(UIViewController*)parentViewController
[super willAnimateRotationToInterfaceOrientation:orientation duration:duration];
}
@end
@end
+3 -3
View File
@@ -1940,7 +1940,7 @@ GreyscaleLuminanceSource::GreyscaleLuminanceSource(unsigned char* greyData, int
unsigned char* GreyscaleLuminanceSource::getRow(int y, unsigned char* row) {
if (y < 0 || y >= this->getHeight()) {
throw IllegalArgumentException("Requested row is outside the image: " + y);
throw IllegalArgumentException("Requested row is outside the image.");
}
int width = getWidth();
// TODO(flyashi): determine if row has enough size.
@@ -2017,7 +2017,7 @@ GreyscaleRotatedLuminanceSource::GreyscaleRotatedLuminanceSource(unsigned char*
// The API asks for rows, but we're rotated, so we return columns.
unsigned char* GreyscaleRotatedLuminanceSource::getRow(int y, unsigned char* row) {
if (y < 0 || y >= getHeight()) {
throw IllegalArgumentException("Requested row is outside the image: " + y);
throw IllegalArgumentException("Requested row is outside the image");
}
int width = getWidth();
if (row == NULL) {
@@ -10309,7 +10309,7 @@ namespace {
int secondThirdBytes = bits.readBits(16);
return ((firstByte & 0x1F) << 16) | secondThirdBytes;
}
throw IllegalArgumentException("Bad ECI bits starting with byte " + firstByte);
throw IllegalArgumentException("Bad ECI bits starting with byte ");
}
}
+37 -23
View File
@@ -7,40 +7,54 @@
*/
cordova.define("cordova/plugin/BarcodeScanner",
function (require, exports, module) {
var exec = require("cordova/exec");
var BarcodeScanner = function () {
/**
* Constructor.
*
* @returns {BarcodeScanner}
*/
function BarcodeScanner() {
/**
* Encoding constants.
*
* @type Object
*/
this.Encode = {
TEXT_TYPE: "TEXT_TYPE",
EMAIL_TYPE: "EMAIL_TYPE",
PHONE_TYPE: "PHONE_TYPE",
SMS_TYPE: "SMS_TYPE"
// CONTACT_TYPE: "CONTACT_TYPE", // TODO: not implemented, requires passing a Bundle class from Javascript to Java
// LOCATION_TYPE: "LOCATION_TYPE" // TODO: not implemented, requires passing a Bundle class from Javascript to Java
};
};
//-------------------------------------------------------------------
BarcodeScanner.Encode = {
TEXT_TYPE: "TEXT_TYPE",
EMAIL_TYPE: "EMAIL_TYPE",
PHONE_TYPE: "PHONE_TYPE",
SMS_TYPE: "SMS_TYPE",
// CONTACT_TYPE: "CONTACT_TYPE", // TODO: not implemented, requires passing a Bundle class from Javascript to Java
// LOCATION_TYPE: "LOCATION_TYPE" // TODO: not implemented, requires passing a Bundle class from Javascript to Java
};
//-------------------------------------------------------------------
/**
* Read code from scanner.
*
* @param {Function} successCallback This function will recieve a result object: {
* text : '12345-mock', // The code that was scanned.
* format : 'FORMAT_NAME', // Code format.
* cancelled : true/false, // Was canceled.
* }
* @param {Function} errorCallback
*/
BarcodeScanner.prototype.scan = function (successCallback, errorCallback) {
if (errorCallback == null) {
errorCallback = function () {
}
};
}
if (typeof errorCallback != "function") {
console.log("BarcodeScanner.scan failure: failure parameter not a function");
return
return;
}
if (typeof successCallback != "function") {
console.log("BarcodeScanner.scan failure: success callback parameter must be a function");
return
return;
}
exec(successCallback, errorCallback, 'BarcodeScanner', 'scan', []);
@@ -50,17 +64,17 @@ cordova.define("cordova/plugin/BarcodeScanner",
BarcodeScanner.prototype.encode = function (type, data, successCallback, errorCallback, options) {
if (errorCallback == null) {
errorCallback = function () {
}
};
}
if (typeof errorCallback != "function") {
console.log("BarcodeScanner.encode failure: failure parameter not a function");
return
return;
}
if (typeof successCallback != "function") {
console.log("BarcodeScanner.encode failure: success callback parameter must be a function");
return
return;
}
exec(successCallback, errorCallback, 'BarcodeScanner', 'encode', [
@@ -70,4 +84,4 @@ cordova.define("cordova/plugin/BarcodeScanner",
var barcodeScanner = new BarcodeScanner();
module.exports = barcodeScanner;
});