2022年度 FinClip 扩展SDK推荐!

2022年,FinClip 团队进行了24个产品迭代,为了丰富FinClip 的平台能力,除了核心SDK之外,我们还为开发者们提供了扩展SDK,扩展SDK是一个依赖核心SDK的库,里面提供了核心SDK中所没有的各种小程序API。

官方希望通过丰富的扩展SDK库可以帮助开发者减少开发工作,把更多的精力用到实现业务上。那本期,小编就为大家推荐扩展SDK库中8个功能稳定又实用的SDK!(更多详细内容请点击

以下分享以Android SDK 文件为例,您可登录 资源下载中心下载 Android SDK 文件,扩展 SDK 也处于在所下载的压缩包中。

1、WeChatSDK

微信SDK的快捷接入,提供调起微信通过微信小程序获得登录、用户信息、手机号、支付的能力。

集成方式:

implementation 'com.finogeeks.mop:wechat:x.y.z'

并在项目的build.gradle文件中(如app/build.gradle)添加您在微信开放平台申请的微信APPID:

android {
    // ..其它配置省略
    defaultConfig {
    // ..其它配置省略
    resValue "string", "wechat_sdk_app_id", "您的微信SDKAPPID"
    }
}

WeChatSDK相关api概览

2、MapSDK

支持Map组件及位置API。 其依赖于核心SDK,做为地图、位置功能的补充。 其中提供的地图、定位能力依赖于第三方地图、定位SDK。支持高德地图/高德定位、百度地图/百度定位、谷歌地图/谷歌定位三种组合情况使用。集成文档请参照「小程序SDK-Android SDK-Android 集成-6. MapSDK」

Map SDK 相关api概览

3、蓝牙SDK

使用蓝牙接口需要单独集成蓝牙SDK,集成后接口即可生效,无需配置。

集成方式:

implementation 'com.finogeeks.mop:bluetooth:x.y.z'

蓝牙SDK相关api概览

4、声网SDK

使用声网相关的接口需要单独集成声网SDK,集成后接口即可生效,无需配置。

集成方式:

implementation 'com.finogeeks.mop:agora:x.y.z'

若您使用导入aar的方式接入声网SDK,需要额外添加声网依赖:

implementation 'io.agora.rtc:full-sdk:3.5.0'

声网SDK相关api概览

5、WebRTCSDK

使用WebRTC相关的接口需要单独集成WebRTCSDK,集成后接口即可生效,无需配置。

集成方式:

implementation 'com.finogeeks.mop:webrtc:x.y.z'

若您使用导入aar的方式接入WebRTCSDK,需要额外添加WebRTC依赖:

implementation 'org.webrtc:google-webrtc:1.0.32006'

WebRTC SDK相关api概览

6、联系人SDK

使用联系人相关的接口需要单独集成联系人SDK,集成后接口即可生效,无需配置。

集成方式:

implementation 'com.finogeeks.mop:contact:x.y.z'

联系人SDK相关api概览

7、剪贴板SDK

使用剪贴板相关的接口需要单独集成剪贴板SDK,集成后接口即可生效,无需配置。

集成方式:

implementation 'com.finogeeks.mop:clipboard:x.y.z'

剪贴板SDK相关api概览

8、Media SDK

video组件的边下边播需要集成此SDK才能实现。

集成方式:

android {
    packagingOptions {
        doNotStrip "*/arm64-v8a/libijkffmpeg.so"
        doNotStrip "*/arm64-v8a/libijkplayer.so"
        doNotStrip "*/arm64-v8a/libijksdl.so"

        doNotStrip "*/armeabi/libijkffmpeg.so"
        doNotStrip "*/armeabi/libijkplayer.so"
        doNotStrip "*/armeabi/libijksdl.so"

        doNotStrip "*/armeabi-v7a/libijkffmpeg.so"
        doNotStrip "*/armeabi-v7a/libijkplayer.so"
        doNotStrip "*/armeabi-v7a/libijksdl.so"

        doNotStrip "*/x86/libijkffmpeg.so"
        doNotStrip "*/x86/libijkplayer.so"
        doNotStrip "*/x86/libijksdl.so"

        doNotStrip "*/x86_64/libijkffmpeg.so"
        doNotStrip "*/x86_64/libijkplayer.so"
        doNotStrip "*/x86_64/libijksdl.so"
    }
}


dependencies {
    implementation 'com.finogeeks.mop:media:x.y.z' //x.y.z须替换为具体的版本号
    implementation 'tv.danmaku.ijk.media:ijkplayer-java:0.8.8'
}

在proguard-rules.pro文件中添加混淆规则:

# Media SDK
-keep public class com.finogeeks.finclip.plugins.media.player.ijk.FinIjkMediaPlayerFactory {
    public <init>();
}
-keep class com.finogeeks.finclip.plugins.media.player.ijk.IjkMediaPlayerOptionsApplier {
    public static <fields>;
    public static <methods>;
}
-keep class com.finogeeks.finclip.plugins.media.player.ijk.IjkMediaPlayerOptionsApplier$Applier {*;}
-keep class com.finogeeks.finclip.plugins.media.player.ijk.IjkMediaPlayerOptionsApplier$Options {*;}

#ijkplayer
-keep class tv.danmaku.ijk.media.player.** {*;}
-keep class tv.danmaku.ijk.media.player.IjkMediaPlayer{*;}
-keep class tv.danmaku.ijk.media.player.ffmpeg.FFmpegApi{*;}

集成Media SDK后,video组件的播放器实现,会从系统方案MediaPlayer自动切换到IjkMediaPlayer方案,无需做其他操作。

Media SDK的相关API

由于IjkMediaPlayer的配置项非常多,每个App的需求又不同,所以Media SDK将配置功能暴露给App开发者来调用。

class SampleApplication : MultiDexApplication() {

    override fun onCreate() {
        super.onCreate()
        IjkMediaPlayerOptionsApplier.setIjkMediaPlayerOptionsApplier(this) {
            it.setOption(
                IjkMediaPlayer.OPT_CATEGORY_PLAYER,
                "start-on-prepared",
                0
            ) // 禁止自动开始播放,由上层去控制

            it.setOption(
                IjkMediaPlayer.OPT_CATEGORY_PLAYER,
                "max-buffer-size",
                (1024 * 24).toLong()
            ) // 最大缓冲大小,单位kb

            it.setOption(
                IjkMediaPlayer.OPT_CATEGORY_PLAYER,
                "packet-buffering",
                0L
            ) // 如此设置,才会在及时停止加载状态显示

            it.setOption(
                IjkMediaPlayer.OPT_CATEGORY_PLAYER,
                "enable-accurate-seek",
                1
            ) // 设置为精准seek
        }
        // 其他初始化代码……
    }
}

同时如上代码片段中的配置,是Media SDK的默认配置项,App开发者可以按照自己的需要制定相关的配置。

本文转载于网络 如有侵权请联系删除

相关文章

  • [spring guides]网关入门

    原文目的构建一个springcloud的网关实现简单demo使用Hystrixspringcloud-hystrix简介它是Netflix公司出的,2018年11月17发布了最后一个版本后,就转到了维护阶段,因为功能上已经满足他们的需求。现在他们内部新的系统使用resilience4j来实现Hystrix的功能。分布式系统中,服务之间存在非常多的相互依赖,当某个依赖项出现不可用的情况(这个是无法避免的)的时候,Hystrix会提供一个fallback的方法,快速返回结果(虽然是错误的),来避免错误整个系统出现一连串级联的调用报错之类的。顺道提一下,他通过命令模式来实现,也就是说把具体方法的执行交给了命令实现对象。一个简单demo//首先通过继承HystrixCommand<String>来定义一个返回String的Command。 publicclassHelloFailureCommandextendsHystrixCommand<String>{ //一般给命令起个名字 privateStringname; publicHelloFailureComman

  • 即生瑜,何生亮 — MAC 地址与 IP 地址

    阅读本文大概需要6分钟原文|http://sina.lt/gpqN在教计算机网络课程中,经常会碰到这样的问题,为什么需要两个地址:一个是MAC(物理地址),另一个是IP地址。各种解释都有,基本上一个观点就是一个是物理地址,一个是逻辑地址。然而,这样的解释太抽象,什么是物理,什么是逻辑。这些抽象的表述会让人无法理解到其本质。下面我就谈谈这个问题。要想说明这个问题,首先得说说计算机网络的目标是什么。计算机网络的根本目标就是将数据从一点传送到另外一点。听起来很简单,但是里面包含的意思很多。例如,两个点之间是在同一个网络还是跨网络连接的,如何才能将数据正确的传送到对方,如果出现错误怎么办等等。为了说明问题的本质,我们首先将问题简化:假设两点在一个网络内。在这种情况下,只需要MAC地址就可以了。例如通过交换机将多台电脑组成一个网络,为了找到对方,必须通过一个地址来标识。就像寄快递一样,如果没有地址,快递员是无法将快递送到对方的所在地的。这就是我们所说的MAC地址。当A点要将数据传递给B点时,会在数据的首部添加B的MAC地址,即目标地址。当然在首部中也有源地址,即发送方的MAC地址,还有其它一些信

  • 展望2019年|微软、Oculus、Magic Leap……这些主流厂商的新机要露面啦!

    天气逐渐转凉,VR硬件市场呢?正文共2788字9图;预计阅读时间12分钟回顾2018年的VR行业,自年初HTC发布了迭代版VivePro之后,多款VR头显新品或迭代版本也相继走入大众的视线,比如联想MirageSolo、OculusGo、小怪兽2、以及OculusQuest等。这些VR产品,也成为了2018年VR硬件市场的主要代表。 HTCVivePro 慢慢的,日子即将临近年底,秋风萧索,温度也在越来越低。虽然2018年VR硬件的数量很占优势,但代表性硬件还是不多。这低温仿佛就像是今年的VR硬件市场一样,不温不火。不过,小编从多方消息了解到,在即将到来的2019年,几大主流VR/AR厂商在硬件上都将会有新动作,包括Oculus、微软、联想等,想必会为未来VR/AR市场带来一阵暖流。以下为具体信息。Oculus: 取消“Rift2”,将推出更亲民的“RiftS”上周,小编曾报道过“RiftS”的相关信息。详情可戳:传Facebook取消“Rift2”,将于2019年推出“RiftS”Facebook取消提供高舒适性与高性能体验的“Rift2”后,转而将重点放在了更亲民的硬件设备“Rif

  • 前 CIA 情报官员被怀疑将 CIA 代码上传到个人网站

    据外媒Motherboard报道,此前前美国中央情报局(CIA)情报官员JoshuaSchulte被怀疑将机密信息泄露给维基解密。近日Schulte被怀疑将CIA代码上传到一个与他的真实姓名相关的个人网站。多年来,该网站对互联网上的任何用户都是可用的,并且托管该网站的服务器在针对他的儿童色情案件中被政府查处。去年,美国联邦调查局(FBI)突击检查了JoshuaSchulte的曼哈顿公寓,搜查令显然与他将CIA的“Vault7”文件泄露给维基解密有关。但他没有被控机密信息处理不当;相反,FBI在其个人电脑上的加密上发现了超过10,000张儿童色情图片。外媒DailyBeast周三报道称,Schulte在2013年向其GitHub账户发布了CIA代码片段(称为OSBProjectWizard),然后将其发布到维基解密。美国执法机构官员指出还查获了一个托管一个名为“TheCrypt”的的。Crypt是Schulte用来存储文件的一系列开放目录。由InternetArchive的WaybackMachine托管的TheCrypt版本显示,Schulte在2014年2月至少向该网站上传了5个Pr

  • 远程桌面漏洞利用与分析

    [TOC]1.远程代码执行|CVE-2019-0708描述:北京时间2019年5月15日,Windows再次被曝出一个破坏力巨大的高危远程漏洞CVE-2019-0708。 危害:漏洞的触发无需用户交互(极大提高成功概率),攻击者一旦成功利用该漏洞,便可以在目标系统上执行任意代码,包括获取敏感信息、执行远程代码、发起拒绝服务攻击等等攻击行为,还能与挖矿蠕虫与勒索蠕虫病毒联合利用攻击;由于该漏洞是预身份认证,且不需要用户交互,可以在不需要用户干预的情况下远程执行任意代码。这就意味着利用该漏洞可制作成自动化、大规模、无条件攻击的蠕虫,并会迅速像野火一样蔓延至整个网络,最终将可能导致当年“永恒之蓝”漏洞武器造成的WannaCry勒索蠕虫病毒攻击的再度重演。影响范围:Windows7WindowsServer2008R2WindowsServer2008Windows2003WindowsXP漏洞监测:360VulcanTeamWindows远程桌面协议漏洞的检测程序 #下载的脚本放入msf对应的目录之下,之后msfconle下reload_all MSF模块:https://github.co

  • Redis源码剖析之字典(dict)

    Dict在redis中是最为核心的一个数据结构,因为它承载了redis里的所有数据,你可以简单粗暴的认为redis就是一个大的dict,里面存储的所有的key-value。 redis中dict的本质其实就是一个hashtable,所以它也需要考虑所有hashtable所有的问题,如何组织K-V、如何处理hash冲突、扩容策略及扩容方式……。实际上Redis中hashtable的实现方式就是普通的hashtable,但Redis创新的引入了渐进式hash以减小hashtable扩容是对性能带来的影响,接下来我们就来看看redis中hashtable的具体实现。 Redis中Dict的实现 dict的定义在dict.h中,其各个字段及其含义如下: typedefstructdict{ dictType*type;//dictType结构的指针,封装了很多数据操作的函数指针,使得dict能处理任意数据类型(类似面向对象语言的interface,可以重载其方法) void*privdata;//一个私有数据指针(privdata),由调用者在创建dict的时候传进来。 dicththt[2]

  • 【转】

    vscodemaven项目报错xxxisnotontheclasspath..   vscode中创建maven项目,将指定文件夹作为sourcepaths 使用vscode搭建web项目,配置好maven环境之后产生以下问题在src目录下新建java文件夹,在该文件夹下新建java文件,报错:xxxisnotontheclasspath…   解决办法:在项目目录下的pom.xml中的标签中添加指定sourcepath   <build> <finalName>learn</finalName> <sourceDirectory>src/main</sourceDirectory> …… </build>复制   转自:https://blog.csdn.net/weixin_44678951/article/details/118091011   为毛vscode会出现这种问题捏,都什么年代了,还不给解决了?

  • 折腾docker安装笔记

    最近尝试把netcore迁移到docker,然后在本地虚拟机尝试装下发现yum安装好复杂于是记录下 1、7.2centos的ios装虚拟机 2、修改网络配置文件查看网络地址然后xshell连接参考 http://blog.csdn.net/qq_31382921/article/details/52174626 3、尝试使用yum-yupdate强制将7.2升级到7.3 4、安装epel -> yuminstall-y epel-release 5、安装docker->千万不要用yuminstalldocker千万不要用!!! 5.1、请参考官方文档 安装docker-ce 文档 https://docs.docker.com/engine/installation/linux/centos/ 大体步骤如下: 11.设置安装源 2 3sudoyuminstall-yyum-utils 4 5sudoyum-config-manager\ 6--add-repo\ 7https://download.do

  • elementui Checkbox label值与所需要显示的值不一致

    elementui的Checkbox组件在多选框组的情况下,想要传给后端的值与所想要展示的值不一致时,如: <el-checkbox-groupv-model="checkboxGroup2"size="mini"disabled> <el-checkboxlabel="备选项1"border></el-checkbox> <el-checkboxlabel="备选项2"border></el-checkbox> </el-checkbox-group> 复制 后端所需要的是id值,可将需要展示的值用插值表达式放在el-checkbox标签中,改为: <el-checkbox-groupv-model="checkboxGroup2"size="mini"disabled> <el-checkboxlabel="id1"border>备选项1</el-checkbox> <el-checkboxlabel="id2"border>备选项2</el-checkbo

  • VC++ 网络编程总结(一)

    1、套接字编程原理       一个完整的网间通信进程需要由两个进程组成,并且只能用同一种高层协议。也就是说,不可能通信的一段用TCP,而另一端用UDP。一个完整的网络信息需要一个五元组来标识:协议、本地地址、本地端口号、远端地址、远端端口号。1.1Client/Server通信模型       在客户端/服务器模式中我们将请求服务的一方成为客户,将提供某种服务的一方称为服务器(Server)      一个服务程序通常在一个众所周知的地址监听对服务的请求,也就是说服务进程一直处于休眠状态,直到一个客户对这个服务的地址提出了连接请求。在这个时刻,服务程序被“惊醒”,并且为客户提供服务----对客户的请求做出适当的反应。虽然基于链接的服务是设计客户机/服务器应用程序时的标准,但有些服务也是可以通过无连接的接口提供的。      &n

  • js加减乘除在线计算器代码

    js加减乘除在线计算器代码 在线演示本地下载

  • 开发细节(二)

    1.利用AutoLayout整体排列控件 下面的代码演示了一个控件如何在其父容器中垂直水平居中: UIView*box=[[UIViewalloc]initWithFrame:CGRectMake(50,50,200,150)]; box.backgroundColor=[UIColorgrayColor]; [self.viewaddSubview:box]; UIButton*button=[UIButtonbuttonWithType:UIButtonTypeRoundedRect]; [buttonsetTitle:@"abutton"forState:UIControlStateNormal]; [buttonsizeToFit]; button.translatesAutoresizingMaskIntoConstraints=NO; [boxaddSubview:button]; NSMutableArray*array=[[NSMutableArrayalloc]init]; [arrayaddObjectsFromArray:[NSLayoutConstrai

  • 02_Kafka单节点实践

    1、实践场景   开始前的准备条件: 1)确认各个节点的jdk版本,将jdk升级到和kafka配套的版本(解压既完成安装,修改/etc/profile下的JAVA_HOME,source/etc/profile,重启后jdk生效)   2、单节点kafka实践 1) 启动zookeeper集群 各个节点上启动zookeeper进程#bin/zkServer.shstart 启动后,查看各个节点的zookeeper状态(leader,followeretc)#bin/zkServer.shstatus   2)配置kafka的zk集群 配置文件:config/zookeeper.properties 配置要点:zookeeper中snapshot数据的存放地址,和zookeeper集群中的配置保持一致   3)配置本节点上要启动的broker 配置文件:config/server.properties配置要点:           br

  • 2-1、EXCEL2013中的公式基础

      有些事现在不做,一辈子都不会做了

  • PM、RD、QA、OP、CM、EPG 英文缩写是什么意思?

    1、PM:ProductManager,产品经理,又称品牌经理。举凡产品从创意到上市,所有相关的研发、调研、生产、编预算、广告、促销活动等等,都由产品经理掌控。 2、RD:ResearchandDevelopmentengineer,研发工程师,对某种不存在的事物进行系统的研究和开发并具有一定经验的专业工作者,或者对已经存在的事物进行改进以达到优化目的的专业工作者。 3、QA:QualityAssurance,品质保证。QA的主要职责就是质量保证工作。 4、OP:Operator,操作员,管理员。   5、CM:ConfigurationManagement配置管理,配置管理(ConfigurationManagement,CM)是通过技术或行政手段对软件产品及其开发过程和生命周期进行控制、规范的一系列措施。配置管理的目标是记录软件产品的演化过程,确保软件开发者在软件生命周期中各个阶段都能得到精确的产品配置。   6、EPG:过程改进小组,是指决策层面的LEADER组成的委员会,它对项目的目标产生影响,但又不是具体执行人员.它是由与项目相关的不同部门组成的小组。 &

  • SVN重新设置用户名和密码

     

  • StringBuilder与StringBuffer的区别

    相信大家看到过很多比较String和StringBuffer区别的文章,也明白这两者的区别,然而自从Java5.0发布以后,我们的比较列表上将多出一个对象了,这就是StringBuilder类。String类是不可变类,任何对String的改变都会引发新的String对象的生成;而StringBuffer则是可变类,任何对它所指代的字符串的改变都不会产生新的对象,可变和不可变类这一对对象已经齐全了,那么为什么还要引入新的StringBuilder类干吗?相信大家都有此疑问,我也如此。下面,我们就来看看引入该类的原因。      为什么会出现那么多比较String和StringBuffer的文章?      原因在于当改变字符串内容时,采用StringBuffer能获得更好的性能。既然是为了获得更好的性能,那么采用StringBuffer能够获得最好的性能吗?      答案是NO!     &nbs

  • 论日志的重要性

    日志已经成为我的除了代码外的第二个神器了!也许代码和日志,是软件的双子星座!   代码的重要性,我想无需多言。 但是日志的重要性,其实很多人并没意识到。   当然,很多人的神器可能是gdb、windbg、lsof、strace等等调试工具。 说实话,这些工具,我会简单使用。 有时我会想,可能我太依赖于日志了,导致对这些工具不熟。 但是有时想,如果能把一种工具用到极致,未尝不好。 能解决问题是正道! 而日志不仅仅是解决问题!   让我认识到日志的重要性,还是09年进去的一家数字电视公司。 当时还是菜鸟级,只是经常看到同事解决问题,首先看日志,通过VPN共享。 感觉效率非常棒!   没多久去了一家安防公司,这家公司动不动就出差! 去现场解决问题! 奇怪的是,很少有人讨论日志。   后面我自己负责重构了两个产品,一个工具和一个服务器。 从第一个工具开始,我就着手日志的设计! 效果让我觉得很好!   到后来的服务器,我对自己要求更高! 日志的文件大小、级别、打印频率等等严格控制, 而且必须提炼出关键字! 每每出问题,先看error级别

  • 前端词云图

    自定义图形的词云图(echarts) 代码如下: <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <title>词云图</title>     //引用.js文件     <script src="./echarts.js"></script>     <script src="./echarts-wordcloud.js"></script> </head> <body>     //div显示     <div&

  • 微信公众号&lt;wx-open-launch-weapp&gt;开放按钮在安卓能显示ios不行的解决方案

    在需要引入的页面初始化加载函数中放入下面代码 //动态加载jweixin-1.6.0.js解决ios问题 constoScript=document.createElement('script') oScript.type='text/javascript' oScript.src='https://res2.wx.qq.com/open/js/jweixin-1.6.0.js' document.body.appendChild(oScript) 复制 参考链接:https://blog.csdn.net/CherryCola_zjl/article/details/111165702

  • IdentityServer4部署到服务器,配置证书问题

       dotnet应用用IdentityServer4做了登陆的功能,本地运行没有问题,部署到服务器上面就出现上面的问题,打开服务器的日志记录开关,获取到下面的异常信息。原来是     通过分析日志信息,发现报错的原因是因为IdentityServer4的加密签名导致的。 IS4中如果token的类型是JWT,则需要使用RS256算法生成非对称签名,这意味着必须使用私钥来签名JWTtoken,并且必须使用对应的公钥来验证token签名,即验证token是否有效。使用RS256可以保证IS4服务端是JWT的唯一签名者,因为IS4服务端是唯一拥有私钥的一方,前提是私钥不会被泄露。所以我们需要一个证书为我们提供私钥和公钥。在开发环境可以利用IS4的AddDeveloperSigningCredential方法生成RSA文件,RSA文件为我们提供私钥和公钥,但是RSA文件不够安全,打开文件可以直接看到公钥和私钥,在生产环境我们一般会生成证书来提供私钥和公钥。使用OpenSSL生成证书的方式如下: 1、安装OpenSSL工具,官网下载地址:http

相关推荐

推荐阅读