【荣耀开发者服务平台—百亿曝光扶持等你来】智慧服务安卓卡片接入指南

荣耀开发者服务平台(HONOR Developers)是荣耀面向开发者的统一生态入口,通过聚合周边内外部系统,分全球多站点部署,为全球开发者提供业务全生命周期的商业支撑服务。

平台可为软硬件合作伙伴带来三大应用场景服务,包括主动服务的场景化体验智慧服务,智能协同的跨设备互联的智慧生态以及应用与游戏出海服务。同时,荣耀帐号服务、推送服务、运动健康等开放能力和业务也提供了多样化的合作选择。

当前荣耀智慧服务百亿级曝光扶持计划正火热进行中~

一、接入流程

荣耀智慧服务为开发者提供一站式接入服务能力,和全场景、多终端、多入口的AI分发能力,为开发者提高业务推广效率,同时给用户提供便捷、贴心、智能的服务体验。

目前包含四种接入类型:快捷服务、快应用卡片、安卓应用卡片、内容接口卡片,呈现显示包括卡片和图标等,本文将提供安卓卡片(widget卡片)接入指南

 

二、开发指南

1. 前言

本文用于指导开发者如何在荣耀手机上开发应用微件,为了让用户获取最佳应用微件的体验,同时为了让荣耀向用户更好地推荐您的应用微件,您需要遵守本文第二章节所描述的技术规范。

访问荣耀智慧服务平台了解更多:Developer (hihonor.com)

 

2. 技术规范

2.1 遵循Google原生widget开发规范

请参考构建应用微件 | Android 开发者 | Android Developers

 

2.2 在清单中添加应用微件meta-data信息

为了让我们识别您已经开发完成的应用微件,需要在应用的 AndroidManifest.xml文件中对针对您已声明的 AppWidgetProvider 类,新增meta-data信息com.hihonor.widget.type ,代码示例如下:

<receiver android:name="ExampleAppWidgetProvider" ><intent-filter><action android:name="android.appwidget.action.APPWIDGET_UPDATE" /></intent-filter><meta-data android:name="android.appwidget.provider"android:resource="@xml/example_appwidget_info" /><meta-data android:name="com.hihonor.widget.type"android:value="honorcard" />
</receiver>

对于上述代码示例中两组meta-data信息说明如下:

2.2.1 第一组meta-data信息为android原生配置,若需配置仅荣耀设备读取,其他厂商设备不读取卡片信息,可将“android.appwidget.provider”更换为"android.appwidget.honor.provider".

2.2.2 第二组meta-data信息,是为了让荣耀识别您已经开发完成的应用微件,并在荣耀快服务中心等新入口展示卡片。此配置不影响荣耀MagicUI6.0以下的旧版本手机、其他厂商机型手机上卡片的展示。

2.3 集成YOYO建议SDK(可选)

如果您需要使用我们的智慧能力为您推荐您的应用微件,您需要接入YOYO建议SDK,接入方法请与荣耀运营人员了解。

2.4 接收并处理YOYO建议定向广播信息(可选)

如果您的应用微件信息已经在荣耀HISP平台注册,那么YOYO建议会根据智慧场景向您推送定向广播,您可以在您的应用微件收到广播后做相应的动作,例如改变应用微件的显示内容。

定向广播接收处理代码示例如下(JAVA):

public class MyAppWidgetProvider extends AppWidgetProvider {@Overridepublic void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {for (int appWidgetId : appWidgetIds) {Bundle appWidgetOptions = appWidgetManager.getAppWidgetOptions(appWidgetId);if (appWidgetOptions != null) {String host = appWidgetOptions.getString("host", "");if ("HonorYOYO".equals(host)) {// 来自于荣耀YOYO的消息String scene = appWidgetOptions.getString("scene", "");String service = appWidgetOptions.getString("business", "");}}}}
}

广播消息中附加场景信息在intent extras中,内容如下:

字段名类型说明
hostString固定值HonorYOYO 通过该值来区分是否来自于荣耀YOYO的信息
sceneString

场景信息,

枚举值 MusicRoco-音乐推荐,

TakingTaxi-打车,

NewsReco-新闻推荐

businessString

业务意图信息,

枚举值 Music-音乐,

Taxi-出租车,

News-新闻资讯

2.5 卡片中的本地图片设置圆角

在制作卡片时,在使用本地图片填充widget布局中的imageView时,当imageView拥有固定宽高时,示例代码如下(kotlin),仅供参考。

val remoteViews : RemoteViews = .....
val roundedBitmapDrawable = RoundedBitmapDrawableFactory.create(context.resources,BitmapFactory.decodeResource(context.resources, 本地图片资源ID)
)
roundedBitmapDrawable.isCircular = true
val bitmap = Bitmap.createBitmap(roundedBitmapDrawable.intrinsicWidth,roundedBitmapDrawable.intrinsicHeight, Bitmap.Config.ARGB_8888
)
val canvas = Canvas(bitmap)
roundedBitmapDrawable.setBounds(0, 0, canvas.width, canvas.height)
roundedBitmapDrawable.draw(canvas)remoteViews.setImageViewBitmap(布局中的imageView资源ID,bitmap)

当imageView未设置固定宽高,可采用给图片覆盖一个带有圆角的边框的方式来裁切圆角,示例代码如WidgetCardDemo的round_x_stroke_x_foreground.xml文件。

当边框的宽度设置为xdp时,对应的imageView也需设置padding = “xdp”

2.6 荣耀卡片适配PAD及折叠屏

卡片适配基本原则:

均分:保证指定元素与元素之间的间距一致,去适应卡片容器的尺⼨变化;允许定义组件最左端和最右端是否一起均分/指定固定值,若不定义,默认一起参与均分;

左右结构:左侧距离左边固定或左侧水平居中,右侧距离右边固定或右侧水平居中,保证卡片拉伸后显示效果无误。

左右结构、均分:可以往水平/垂直方向拉伸,来适应卡片大小的变化

占比:定义了占比能力的组件,保证指定元素始终在卡片内的某一个比例空间中进行布局。⽔平方向或垂直方向有占比能力,也可均有

拉伸:在布局宽度变化的时候,列表会随宽度变化⽽体现拉伸能力

宫格样式:卡片在pad下,可显示更多的元素。例:手机竖屏,图片可展示3个,相同卡片pad上可展示4个;

缩放:沉浸式背景图可以往⽔平/垂直⽅向拉伸,来适应组件容器的变化,进行自适应撑满容器,不得出现图片拉伸比例等情况。图文列表的图片比例不变,文字根据宽度拉伸

按照荣耀公司卡片适配UX规范,卡片分为纯文本类、图文类、列表类、宫格类。

为了在PAD展示情况下有更好的用户体验效果,所有类型卡片建议至少要实现横向拉伸,宽度通过权重方式设置。

2.7 widget卡片点击跳转指定页面实现

卡片跳转指定页面通过PendingIntent实现,具体实现方式如下(kotlin):

val intent = Intent()intent.setClass(context, Test::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
val pi = PendingIntent.getActivity(context, requestCode, intent,PendingIntent.FLAG_IMMUTABLE)
remoteView.setOnClickPendingIntent(layoutId, pi)

提示:

Test:是需要跳转的页面或路由页面;

layoutId:点击的控件id;

若不同卡片需要跳转不同activity,需设置不同的requestCode。

2.8 深色模式适配

深色模式适配按照原生系统适配方式,在values和values-night分别配置通用模式和深色模式下使用的颜色,在drawable和drawable-night下分别配置通用模式和深色模式使用的资源文件。

2.9 卡片圆角处理

荣耀的widget卡片容器已做圆角处理,大小是16dp,卡片提供方外层四周圆角不用单独设置,卡片内部元素使用圆角还需自行设置。

2.10 折叠屏手机折叠和展开态卡片适配

在安卓S版本关于widget应用小部件新增了响应式布局方案,根据当前widget展示的大小,显示指定的样式具体实现如下(kotlin):

override fun onUpdate(context: Context?, appWidgetManager: AppWidgetManager?, appWidgetIds: IntArray) {for (appWidgetId in appWidgetIds) {val normalView = RemoteViews(context.packageName, R.layout.normal4*2)val unfoldViewForBoard = RemoteViews(context.packageName, R.layout.unfold4*2)val unfoldViewHorOneForLauncher = RemoteViews(context.packageName, R.layout.unfold4*2)val unfoldViewHorTwoForLauncher = RemoteViews(context.packageName, R.layout.unfold4*2)val unfoldViewVertForLauncher = RemoteViews(context.packageName, R.layout.unfold4*2)val viewMapping: Map<SizeF, RemoteViews?> = mapOf (SizeF(320f,152f) to normalView, //正常4*2样式SizeF(460f,142f) to unfoldViewForBoard, //负一屏展开4*2样式SizeF(561f,136f) to unfoldViewHorOneForLauncher, //桌面横屏展开4*2样式1SizeF(531f,136f) to unfoldViewHorTwoForLauncher, //桌面横屏展开4*2样式2SizeF(529f,164f) to unfoldViewForLauncher //桌面竖屏展开4*2样式)val remoteViews = RemoteViews(viewMapping)AppWidgetManager.getInstance(context).updateAppWidget(appWidgetId, remoteViews)}
}

注意:

该方案仅针对Android 12及以上版本有效, 即要求compileSdkVersion = 31

安卓官网地址:https://developer.android.com/guide/topics/appwidgets/layouts

2.11 大字体大显示

为保证所有三方卡片的整体效果一致,建议文字统一使用dp为单位,来禁止文字字体跟随系统设置变化,例如:android:textSize="14dp"

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/39992.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为手机将推鸿蒙os,首发华为鸿蒙OS!荣耀智慧屏8月10日正式发布

IT之家8月9日消息 真正首款搭载华为鸿蒙操作系统的荣耀智慧屏确定要来了&#xff01;就在8月10日正式发布。 在今天下午举行的2019华为开发者大会上&#xff0c;华为余承东宣布推出Harmony OS鸿蒙。这是一款基于微内核的全场景分布式OS。而根据余承东现场的说法&#xff0c;还有…

chatgpt赋能python:颜色Python代码:让你的代码更生动活泼

颜色Python代码&#xff1a;让你的代码更生动活泼 介绍 在日常编程中&#xff0c;大部分时间都是在编写和阅读代码。因此&#xff0c;让代码易于阅读&#xff0c;不仅可以提高开发效率&#xff0c;还可以降低出错的概率。这时候&#xff0c;颜色代码就显得特别重要了。Python…

59、【backtrader股票策略】多资产的配对交易策略(mean reversion - single cluster)

这个策略的思路来自于《151 trading strategies》,本文主要分为四个部分:策略逻辑描述、策略代码、策略绩效、策略简单分析 策略逻辑说明 常见的配对交易策略往往是两个资产的配对交易,涉及到多个资产的配对交易策略很少见,我知道的就一个外汇上的三角套利,绞尽脑瓜想了两…

一文说透所有期权基本交易策略

相比于股票和期货,期权是一种更为复杂也更为灵活的投资工具。利用传统的投资工具,投资者只能通过判断市场的涨跌获取收益,而利用期权,无论是趋势市还是震荡市,几乎在所有的市场预期下,投资者都有相应的策略来捕获盈利并控制风险。本报告将结合不同的市场预期,介绍相应的…

如何加载交易策略EA到MT4/MT5

1、打开MT4/MT5软件 2、首先&#xff0c;必须有一个EA&#xff0c;而且必须是mq4/ex4为扩展名。点击左上角“文件”—“打开数据文件夹”&#xff0c;找到安装路径 3、将EA的ex4或mq4文件放到MT4目录\MQL4\Experts里面&#xff08;本文以名为Demo的EA为例&#xff09; 4、如果…

期货期权最新高频行情数据

期权高频最新行情数据 TAGS: ETF期权、股指期权、商品期权 【亲测可用&#xff0c;包含全市场证券期权及商品期权 1min 数据&#xff08;各期权上市以来至2022.1.1日的行情数据&#xff09;】 详情请见&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1EzLh7rLtdVOrib…

期权专题4:垂直价差期权

关于基本期权的定价代码&#xff0c;见之前的文章&#xff1a; (6条消息) 普通期权定价及代码实现_潘大师爱好者的博客-CSDN博客https://blog.csdn.net/mhmh123789/article/details/130971356 垂直价差期权适用于预期未来会有小幅的波动&#xff0c;牛市价差期权适用于预期小…

期权专题1:普通期权定价

1.理论部分 期权的四种基本交易&#xff1a;买入看涨&#xff0c;买入看跌&#xff0c;卖出看涨&#xff0c;卖出看跌。 假设行权价格为K&#xff0c;标的价格未S,那么四种期内行权价值的表达式如下&#xff1a; 买入看涨&#xff1a;max((S-K),0) 买入看跌&#xff1a;max…

58、【backtrader股票策略】两资产的配对交易策略(pairs trading strategy)

这个策略的思路来自于《151 trading strategies》,本文主要分为四个部分:策略逻辑描述、策略代码、策略绩效、策略简单分析 策略逻辑说明 这个策略的逻辑有些简单,一般而言,配对交易策略属于相对价值策略,通过一定的方法(基于基本面逻辑或者基于统计分析)选择具有相关性…

期权策略

期权策略 protective putscovered callsstraddlespreadcollar protective puts 如果你想投资某种股票&#xff0c;但是投资股票有风险&#xff0c;从理论上来说&#xff0c;你可能损失全部的投资。如果你不愿意承担一定的风险&#xff0c;那么你可以构建protective puts&#…

配对交易之统计套利配对:一个交易策略

我们现在构建一个简单的交易策略。其想法是利用价差的均衡值&#xff08;equilibrium&#xff09;的波动进行交易。我们可以在偏离均衡值时进行交易&#xff0c;并在恢复均衡时解除交易。注意&#xff0c;均衡值就是时间序列的平均值。因此&#xff0c;考虑到价差在平衡值的两个…

金融工程学(十二):期权交易策略及其运用

文章目录 期权交易策略及其运用期权交易头寸及其运用运用期权进行静态套期保值运用期权进行杠杆投资卖空期权进行投机 期权交易策略及其运用标的资产与期权组合价差&#xff08;Spreads&#xff09;垂直价差水平价差 混合期权跨式组合策略勒式组合条式组合带式组合 期权交易策略…

人工智能数据标注案例大全【1】人脸关键点标注

人工智能数据标注案例大全 人工智能大势潮流越来越猛&#xff0c;作为人工智能发展的三大要素之一&#xff0c;数据的作用不可小觑&#xff0c;其中数据采集与数据标注是数据发挥作用的重要方向&#xff0c;我们集合整理了100个人工智能数据标注案例&#xff0c;供大家参考。 …

ai数据标注员主要是做什么?

说起数据标注行业&#xff0c;就不得不提及 AI这个我们近年来这个耳熟能详的名词。其实AI的目的很简单&#xff0c;其可以经过大量的数据分析后&#xff0c;学习人类一部分的感知和认知能力&#xff0c;中国古话讲&#xff0c;书读百遍其义自见。AI也是一样&#xff0c;经过不断…

小白的GPT学习笔记

前言&#xff1a;前一段时间GPT-4刚出来&#xff0c;正巧刷一个知乎老哥的帖子的时候看到了一段话&#xff1a; 我一看&#xff0c;好啊&#xff0c;正好在找科研的机会&#xff0c;这不可能是个机会&#xff08;虽然本人集成电路专业&#xff09;&#xff0c;于是去询问了相关…

脱口秀不 “止” 北上广

在中国&#xff0c;你知道多少脱口秀演员&#xff1f; 很多人可能第一反应&#xff0c;都是“脱口秀大会”中的演员&#xff0c;这个自2017 年开播&#xff0c;至今已播出四季的网综&#xff0c;贡献了无数让人印象深刻的脱口秀演员&#xff0c;从第一季的庞博到第四季的徐致胜…

【AI能否取代设计师】「Stable Diffusion」AI绘画黑科技将告诉你答案

上一篇文章&#xff1a;【AI绘画】我以Midjourney为主学习AI绘画效果咋样&#xff1f;_山楂山楂丸的博客-CSDN博客 目录 前言 一、「Stable Diffusion」 是什么 二、「Stable Diffusion」上手演练 三、竟然还有ChatGPT&#xff1f; 四、「Stable Diffusion」作品展示 五、…

别胡琢磨了,ChatGPT说它不会取代规划师的

导读 昨天的推文《热点 | ChatGPT会抢规划师的饭碗吗&#xff1f;这些职位可能被取代》推出后&#xff0c;收到了读者朋友的建议&#xff0c;说太标题党、文不对题。我们认真反思、痛定思痛&#xff0c;今天认真地和ChatGPT聊了聊&#xff0c;不仅问了它会不会取代规划师&#…

Linux 配置git同步GitHub代码

将ssh key加入GitHub&#xff1a; https://www.cnblogs.com/Fight-go/p/15851321.html 与chatgpt聊&#xff0c;发现&#xff1a; 我本来有一个在Windows下的文件夹&#xff0c;他已经与GitHub仓库同步了&#xff1b;我把整个文件夹复制到Linux里&#xff0c;使用git status查…