简介

插件使用camera360强大的图片处理sdk实现,可以从图库选择的一张图片然后进行各种特效处理,一行代码即可使用一个丰富的特效处理功能。

一、插件短链:

http://yyfr.net/q1z

二、源码地址:

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

三、宿主配置

1 权限配置

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_LOGS"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

2 组件配置:

3 其他配置:

<meta-data android:name="你在camera360申请的key"/>

四、插件使用

调用url :

apkplug://cam360/rpc/start

传入参数:

distPath:String:把处理好的图片存储在的位置

通信接口方法:

public void start(String distPath, Action2 callback)

回调返回参数: boolean:是否处理成功 string:具体信息

五、调用代码

BundleRPCAgent agent = new BundleRPCAgent(FrameworkFactory.getInstance().getFrame().getSystemBundleContext());
    try {
        ICam360Start iCam360Start = agent.syncCall("apkplug://cam360/rpc/start", ICam360Start.class);
        iCam360Start.start(folderPath, 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/q1z”, "apkplug://cam360/rpc/start", ICam360Start.class, new OnGetRPCInstanceListener<ICam360Start>() {
        @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(ICam360Start t) {
           t.start(folderPath, 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);
        }
    });