简介

插件提供二维码扫描功能,一行代码调起扫描界面并返回扫描结果,简单实用。能识别二维码以及各种条形码。

一、插件短链:

http://yyfr.net/q1B

二、工程地址:

https://github.com/apkplug/plugspace/tree/master/ZxingScanPlug

三、宿主配置:(apkplug本身需要的配置不在此列出)

1 权限配置:

<uses-permission android:name="android.permission.CAMERA"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.FLASHLIGHT"/>
<uses-permission android:name="android.permission.INTERNET"/>

2 组件配置:无

3 其他配置:无

四、插件使用

调用url:

apkplug://zxing/rpc/start

通信接口方法:

public void startScan(Action2 callback)

回调返回参数: Boolean:是否成功 String:二维码解码结果

五、示例代码

BundleRPCAgent agent = new BundleRPCAgent(FrameworkFactory.getInstance().getFrame().getSystemBundleContext());
    try {
        IZxingStart iZxingStart = agent.syncCall("apkplug://zxing/rpc/start",IZxingStart.class);
        iZxingStart.startScan(new Action2<Boolean, String>() {
            @Override
            public void call(Boolean aBoolean, String s) {
                Log.e("callback",aBoolean+" "+s);
            }
        });
    } catch (Throwable throwable) {
        throwable.printStackTrace();
    }

六、快速测试

可以通过如下接口一步从短链下载并测试rpc接口,短链为官方提供示例插件demo。

PlugManager.getInstance().getRPCInstanceByShortLink(true,“http://yyfr.net/q1B”, "apkplug://zxing/rpc/start",IZxingStart.class, new OnGetRPCInstanceListener<IZxingStart>() {
        @Override
        public void onDownloadProgress(String s, String s1, long l, long l1) {

            float percent = (float)l/(float) l1;
            Log.e("progress","percent:"+percent)
                      }

        @Override
        public void onInstallSuccess(org.osgi.framework.Bundle bundle) {
            Log.e("install s",bundle.getName());
        }

        @Override
        public void onGetRPCSuccess(IZxingStart t) {
           t.startScan(new Action2<Boolean, String>() {
            @Override
            public void call(Boolean aBoolean, String s) {
                Log.e("callback",aBoolean+" "+s);
            }
        });

        }

        @Override
        public void onFail(String s, String s1) {
            Log.e("fail",s+" "+s1);
        }
    });