首页 文章 精选 留言 我的

精选列表

搜索[小程序·云开发],共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.

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

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

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册