首页 文章 精选 留言 我的

精选列表

搜索[小程序·云开发],共10000篇文章
优秀的个人博客,低调大师

快速实现抖音的分享&登录(android)

快速实现抖音分享与第三方登录 准备工作 1、注册抖音的key到抖音开放平台,点击这里查看步骤; 2、集成ShareSDK到Mob官网文档页面查看即可,点击这里查看集成; 业务代码 分享要求: 视频: 1、时长不符合要求,最大不能超过1小时,最小值抖音动态配置; 2、非mp4文件; 3、画幅比例不支持; 4、视频文件不能正常解析; 5、视频文件分辨率过大(最小边小于1100); 图片: 1、宽高小于360; 2、宽高比不符合(需1/2.2<=宽高比<=2.2) 分享类型 参数 参数 参数 分享图片 shareType(SHARE_IMAGE) imagePath(“/sdcard/”) setActivity//适配9.0系统 分享图片 shareType(SHARE_IMAGE) imagePath(“/sdcard/”) setActivity//适配9.0系统 分享多图 shareType(SHARE_IMAGE) imageArray(String[] AVATARS(多个本地图片)) setActivity//适配9.0系统 分享视频 shareType(SHARE_VIDEO) FilePath(“/sdcard/下的视频路径”) setActivity//适配9.0系统 多段视频拼接分享 shareType(SHARE_VIDEO) VideoPathArray(String[] AVATARS(多个本地视频路径)) setActivity//适配9.0系统 注意:目前分享图片只支持本地图片分享,建议直接保存到手机相册路径下分享,否则抖音可能无法找到图片 分享代码 1.自有界面分享 onekeyshare的分享,SDK提供了界面,可以直接调用,不需要自己写界面进行触发,代码如下所示: OnekeyShare oks = new OnekeyShare(); oks.setImagePath("/storage/emulated/0/DCIM/Camera/icon.png");//分享单独图片,图片建议放到相册目录下 // oks.setFilePath(testVideo);//分享单独视频 String[] AVATARS = { imagepath, imagepath2 }; // oks.setImageArray(AVATARS);//分享多图 String[] vedioarray = new String[]{ testVideo, testVideo }; oks.setVideoPathArray(vedioarray);//分享多段视频,自动拼接 oks.setShareContentCustomizeCallback(new ShareContentCustomizeCallback() { @Override public void onShare(Platform platform, cn.sharesdk.framework.Platform.ShareParams paramsToShare) { // TODO Auto-generated method stub if(platform.getName().equals("Douyin")){ paramsToShare.setShareType(Platform.SHARE_IMAGE);//设置抖音分享类型,图片是SHARE_IMAGE;视屏是SHARE_VEDIO } } }); // 启动分享GUI oks.show(MobSDK.getContext()); 2.单独图片分享 Platform douyin = ShareSDK.getPlatform(Douyin.NAME); Platform.ShareParams sp = new Platform.ShareParams(); sp.setImagePath("/storage/emulated/0/DCIM/Camera/icon.png");//暂时只支持本地图 sp.setShareType(Platform.SHARE_IMAGE);//设置分享图片类型 sp.setActivity(this);//android9.0及以上系统需要配置 douyin.setPlatformActionListener (this);//分享回调 douyin.share(sp); 3.多图分享 Platform douyin = ShareSDK.getPlatform(Douyin.NAME); Platform.ShareParams sp = new Platform.ShareParams(); sp.setActivity(this);//适配android9.0 //多图 String[] AVATARS = { "/storage/emulated/0/DCIM/Camera/icon.png", "/storage/emulated/0/Pictures/Instagram/IMG_20181024_145311_121.jpg" }; sp.setImageArray(AVATARS); sp.setShareType(Platform.SHARE_IMAGE); douyin.setPlatformActionListener (this);//分享回调监听 douyin.share(sp); 4.单独视频分享 Platform douyin = ShareSDK.getPlatform(Douyin.NAME); Platform.ShareParams sp = new Platform.ShareParams(); sp.setActivity(this);//适配android9.0 sp.setFilePath(testVideo);//配置视频本地路径 sp.setShareType(Platform.SHARE_VIDEO);//设置分享视频类型 douyin.setPlatformActionListener (this);//设置分享回调监听 douyin.share(sp); 5.多个视频拼接分享 Platform douyin = ShareSDK.getPlatform(Douyin.NAME); Platform.ShareParams sp = new Platform.ShareParams(); sp.setActivity(this); String[] vedioarray = new String[]{ testVideo, testVideo }; sp.setVideoPathArray(vedioarray); sp.setShareType(Platform.SHARE_VIDEO); douyin.setPlatformActionListener (this); douyin.share(sp); 分享效果分享图片: 分享视频: 授权登录 登录后可以返回userid,我们拿到userid可以作为用户登录的唯一标识,进行绑定账户就可以,还可以获取一些用户的头像和昵称信息,这样可以用来显示用户的信息页面中; cn.sharesdk.framework.Platform dylogin = ShareSDK.getPlatform(Douyin.NAME); if(dylogin.isAuthValid()){//判断是否授权过,可以在这里实现自己的逻辑,授权过了可以在这里直接获取用户信息,id等,不需要重复登录验证 dylogin.removeAccount(true);//可以移除授权 // return; } if(dylogin.isClientValid()){//判断手机中是否有抖音客户端,如果存在执行客户端操作,不存在实现web授权 Toast.makeText(MobSDK.getContext(), "抖音客户端", Toast.LENGTH_SHORT).show(); } dylogin.setPlatformActionListener(new PlatformActionListener() { @Override public void onError(Platform arg0, int arg1, Throwable arg2) { // TODO Auto-generated method stub System.out.println("------------失败"+arg2.toString()); arg2.printStackTrace();//打印失败错误码log runOnUiThread(new Runnable() { public void run() { Toast.makeText(MobSDK.getContext(),"失败", Toast.LENGTH_SHORT).show(); System.out.println("----------"); } }); } @Override public void onComplete(Platform arg0, int arg1, HashMap<String, Object> arg2) { // TODO Auto-generated method stub System.out.println("--------Platform----"+arg0.getDb().exportData());//查看授权信息,可以拿到后做后续操作; runOnUiThread(new Runnable() { public void run() { Toast.makeText(MobSDK.getContext(),"成功", Toast.LENGTH_SHORT).show(); System.out.println("----------"); } }); } @Override public void onCancel(Platform arg0, int arg1) { // TODO Auto-generated method stub System.out.println("-------取消"); } }); dylogin.SSOSetting(true);//设置SSO(客户端授权),false为优先客户端授权 ShareSDK.setActivity(this);//适配android9.0 dylogin.showUser(null);//授权并获取授权信息 注意事项:抖音申请的key是绑定包名的,所以绑定的key与app的包名不一致,会返回errcode:-4

优秀的个人博客,低调大师

Java总结 - List实现类Vector&amp;Stack

由于之前 对ArrayList和LinkedList的分析,所以在看Vector和Stack的源码实现就会非常简单 观察上图,我们可以看到本文要说的Stack和Vector是父子关系,我们依旧从源码入手,期望能够对你有帮助,如果本文有理解不对的地方,请及时指正,谢谢您 Vector 我们知道Vector的实现和ArrayList一样,都是底层以数组的方式存储的,但是不同的Vector是线程安全的,这一点我们可以从源码中看出来 定义 @since 1.0 public class Vector<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable {...} 属性

优秀的个人博客,低调大师

Java总结 - List实现类ArrayList&amp;LinkedList

本文是根据源码进行学习的,如果我有什么理解不对的地方请多指正,谢谢您 上面基本就是List集合类的类图关系了,图中省略掉了比如Cloneable等标记接口,那么List分别具体的主要实现类有:ArrayList,Vector,LinkedList,Stack,那么这篇文章会对这四个实现类进行介绍(由于篇幅原因,本文只说到了ArrayList和LinkedList) ArrayList 这是最常用的List的实现类,那么这个类的存储是由数组实现的,如果超过数组规定阀值,那么就会进行自动扩容,自动扩容其实就是将数组数据复制到一个新的更大的数组中以达到扩容的目的,我们来看一下ArrayList的部分属性源码//默认容量,将在添加第一个元素时扩展为 DEFAULT_CAPACITY private static final int DEFAUL

优秀的个人博客,低调大师

SONIC from microsoft&amp;Azure,one project of OCP

github:https://github.com/Azure/SONiC 支持硬件列表:https://github.com/Azure/SONiC/wiki/Supported-Devices-and-Platforms 架构介绍:https://github.com/Azure/SONiC/wiki/Architecture Switch Hardware Switch hardware refers to all the physical components inside the network switch enclosure (chassis). This includes fans, power supplies, status LEDs and network transceivers. In SONiC terminology, these are called “system devices”. Switch Abstraction Interface (SAI) The switch abstraction interface is a standardized C API to the switching ASIC. This API is normally implemented by an SDK specific to the Switch ASIC. More information on SAI is available at theSAI GitHubrepository. SAI Host Adapter The SAI Host Adapter’s role is to provide a mechanism for storing and synchronizing network switch data with the Switch ASIC. This includes initialization, configuration and current status of the switch ASIC. Network Applications Network applications, such as a BGP routing protocol, use the Object Libraries API’s to get and set the state of the SONiC SAI Host Adapter.

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册