IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 【荣耀开发者服务平台—百亿曝光扶持等你来】智慧服务安卓卡片接入指南 -> 正文阅读

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

荣耀开发者服务平台(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 {
    @Override
    public 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样式1
            SizeF(531f,136f) to unfoldViewHorTwoForLauncher, //桌面横屏展开4*2样式2
            SizeF(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"

?

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-09-21 00:40:22  更:2022-09-21 00:43:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 5:31:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码