依赖Android AAR的Cordova插件制作

Cordova利用web view,让开发者可以使用HTML,JavaScript和CSS来编写移动应用。GitHub有很多的学习资源。这里分享下如何把Android AAR文件打包到Cordova插件中。

配置

  • Android Studio 2.2.3
  • Gradle 2.14.1
  • Cordova 6.5.0
  • Dynamsoft Barcode Reader for Android 4.2

Cordova Android工程

初始化工程:

cordova create simplebarcode com.dynamsoft.simplebarcode SimpleBarcode

添加Android平台:

cd simplebarcode
cordova platform add android --save

simplebarcode\platforms\android\assets\www\index.html中添加一个按钮:

<body>
        <div class="app">
            <div id="deviceready">
                <button id="scan">scan barcode</button>
            </div>
        </div>
        <script type="text/javascript" src="cordova.js"></script>
        <script type="text/javascript" src="js/index.js"></script>
    </body>

编译运行程序:

cordova android

依赖Android AAR文件的Cordova插件

学习phonegap-plugin-barcodescanner的源码, Cordova插件的目录结构如下:

- src/
  - android/
    - *.java
    - *.aar
    - *.gradle
- www/
    - *.js
- plugin.xml

我准备集成DynamsoftBarcodeReader.aar和dbr.aar到Cordova插件中。因此需要做一些修改。

打开src\android\com\phonegap\plugins\barcodescanner\BarcodeScanner.java,在scan函数中调用Activity:

public void scan(final JSONArray args) {
 
        final CordovaPlugin that = this;
 
        cordova.getThreadPool().execute(new Runnable() {
            public void run() {
 
                Intent intentScan = new Intent(that.cordova.getActivity().getBaseContext(), DBR.class);
                intentScan.setAction("com.dynamsoft.dbr");
 
                // avoid calling other phonegap apps
                intentScan.setPackage(that.cordova.getActivity().getApplicationContext().getPackageName());
 
                that.cordova.startActivityForResult(that, intentScan, REQUEST_CODE);
            }
        });
    }

把aar文件添加到gradle文件中:

dependencies {
    compile 'com.android.support:support-v4:+'
    compile(name:'dbr', ext:'aar')
    compile(name:'DynamsoftBarcodeReader', ext:'aar')
}

在plugin.xml中添加权限,配置资源:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<plugin xmlns="http://www.phonegap.com/ns/plugins/1.0" xmlns:android="http://schemas.android.com/apk/res/android" id="phonegap-plugin-barcodescanner" version="6.0.5">
  <name>BarcodeScanner</name>
  <description>Use Dynamsoft Barcode Reader plugin to scan different types of barcodes.</description>
  <license>MIT</license>
  <engines>
    <engine name="cordova" version=">=3.0.0"/>
  </engines>
  <js-module src="www/barcodescanner.js" name="BarcodeScanner">
    <clobbers target="cordova.plugins.barcodeScanner"/>
  </js-module>
  <platform name="android">
    <source-file src="src/android/com/phonegap/plugins/barcodescanner/BarcodeScanner.java" target-dir="src/com/phonegap/plugins/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.dynamsoft.demo.dynamsoftbarcodereaderdemo.DBR" android:clearTaskOnLaunch="true" android:configChanges="orientation|keyboardHidden|screenSize" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:windowSoftInputMode="stateAlwaysHidden" android:exported="false" />
    </config-file>
    <config-file target="AndroidManifest.xml" parent="/manifest">
      <uses-permission android:name="android.permission.CAMERA"/>
      <uses-permission android:name="android.permission.FLASHLIGHT"/>
      <uses-feature android:name="android.hardware.camera" android:required="true"/>
    </config-file>
    <framework src="src/android/barcodescanner.gradle" custom="true" type="gradleReference"/>
    <resource-file src="src/android/dbr.aar" target="libs/dbr.aar"/>
    <resource-file src="src/android/DynamsoftBarcodeReader.aar" target="libs/DynamsoftBarcodeReader.aar"/>
    <dependency id="cordova-plugin-compat" version="^1.0.0"/>
  </platform>
</plugin>

把插件添加到Cordova工程中:

cordova plugin add <plugin folder>

simplebarcode\platforms\android\assets\www\js\index.js中添加按钮触发事件:

onDeviceReady: function() {
        document.getElementById("scan").onclick = function() {
                        cordova.plugins.barcodeScanner.scan(
                                                            function (result) {
                                                            alert("We got a barcode\n" +
                                                                  "Result: " + result.text + "\n" +
                                                                  "Format: " + result.format + "\n" +
                                                                  "Cancelled: " + result.cancelled);
                                                            },
                                                            function (error) {
                                                            alert("Scanning failed: " + error);
                                                            },
                                                            {
                                                            "preferFrontCamera" : false, // iOS and Android
                                                            "showFlipCameraButton" : true, // iOS and Android
                                                            }
                                                            );
                    }
        this.receivedEvent('deviceready');
    },

编译运行app:

cordova plugin android barcode

cordova barcode reader result

源码

https://github.com/dynamsoft-dbr/cordova-plugin-android-barcode

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值