鸿蒙尝试(三)

简介

为国产系统加一把火,华为将会走的更远。android 确实很好,但是鸿蒙需要人支持,也会走向更好。尝试新东西,也能给你一些支持和帮助吧。

其他学习内容

1,intent 。之前写过。两种跳转方式。
这次写返回结果。。
android 里面就有。

启动
private void startEnterThirdAbility() {
        Intent intent = new Intent();
        Set<String> entries = new HashSet<>();
        entries.add(ABILITY_C_ENTITY);
        Operation operation = new Intent.OperationBuilder().withDeviceId("")
            .withAction(ABILITY_C_ACTION)
            .withEntities(entries)
            .build();
        intent.setOperation(operation);
        intent.setParam(Const.ABILITY_PARAMETER_KEY, ABILITY_PARAMETERS);
        startAbilityForResult(intent, ABILITY_C_REQUEST_CODE);
    }
接收到信息
    @Override
    protected void onAbilityResult(int requestCode, int resultCode, Intent resultData) {
        if (resultCode != Const.ABILITY_RESULT_CODE || resultData == null) {
            return;
        }
        String result = resultData.getStringParam(Const.ABILITY_PARAMETER_KEY);
        backValueText.setText(result);
    }

第二个界面放回结果了。

  Intent intent = new Intent();
        intent.setParam(Const.ABILITY_PARAMETER_KEY, ABILITY_B2A_VALUE);
        setResult(Const.ABILITY_RESULT_CODE, intent);

2,其实这样写是不对的。
应该先看Page与AbilitySlice 。这俩为啥在这才写。其他中文文档看起来应该不费劲。
就是现实实践在看理论。
Page 模板(以下简称“Page”)是 FA 唯一支持的模板,用于提供与用户交互的能力。一个 Page 可以由一个或多个 AbilitySlice 构成,AbilitySlice 是指应用的单个页面及其控制逻辑的总和。

当一个 Page 由多个 AbilitySlice 共同构成时,这些 AbilitySlice 页面提供的业务能力应具有高度相关性。例如,新闻浏览功能可以通过一个 Page 来实现,其中包含了两个 AbilitySlice:一个 AbilitySlice 用于展示新闻列表,另一个 AbilitySlice 用于展示新闻详情.
关系图


image.png

page 生命周期


image.png

同一 Page 内导航&&不同 Page 间导航

3,真机调试
3.1,现在开发dev 工具里面申请


image.png

这两个文件。就本地操作就行了。
3.2,在登录华为账号。
添加一个项目,项目里面添加一个应用。


image.png

在最下面有个
image.png

然后添加
image.png

3.3,把这两个证书上传上去。获得 。Release.p7b 这个东西。


image.png

这个两个栏估计会用的更多,以及切换和配置。
3.4 添加设备添加证书


image.png

这俩界面我找了半大天。。。
3.5 UUId这个获取也是很难搞的。


image.png

https://developer.huawei.com/consumer/cn/doc/distribution/app/agc-help-harmonyos-debugapp-manual-0000001177608893
文档
值得一提的是获取uuid是

image.png

image.png

我的失败了。我找了半天是我没有真机。模拟器。搞笑了。
就打了正式包了。
image.png

4,定位获取

 Location location = new Locator(this).getCachedLocation();
            double latitude = location.getLatitude();
            double longitude = location.getLongitude();
            double direction = location.getDirection();

需要权限

requestPermission(SystemPermission.LOCATION, Constants.PERM_LOCATION_REQ_CODE);

5, 鸿蒙里面还有数据加密和解密
2d 人脸识别功能。
6,新的布局方式Fraction。Fraction是基于Ability实现的布局方式,可放置于Ability容器中作为容器界面的一部分,拥有自己的生命周期。通过对Fraction事务的相关操作实现添加、替换、显示、隐藏、入栈出栈等功能。
FractionAbility 、Fraction 这种。

7,NotificationRequest 的使用
也有页面点击跳转。
这块好像就没有通知那一说。android 做的就很头疼。
8,一个 Page 可以由一个或多个 AbilitySlice 构成,AbilitySlice 是指应用的单个页面及其控制逻辑的总和。跨设备迁移支持将 Page 在同一用户的不同设备间迁移,以便支持用户无缝切换的诉求。
9、Ai demo 我从官方demo 中看到里面潜力不少
为应用提供丰富的AI(Artificial Intelligence)能力,支持开箱即用。开发者可以灵活、便捷地选择AI能力,让应用变得更加智能。

  • 二维码生成: 根据开发者给定的字符串信息和二维码图片尺寸,返回相应的二维码图片字节流。调用方可以通过二维码字节流生成二维码图片。

  • 通用文字识别: 通过拍照、扫描等光学输入方式,把各种票据、卡证、表格、报刊、书籍等印刷品文字转化为图像信息,再利用文字识别技术将图像信息转化为计算机等设备可以使用的字符信息的技术。

  • 图像超分辨率: 提供适用于移动终端的1x和3x超分能力;1x超分可以去除图片的压缩噪声,3x超分在有效抑制压缩噪声的同时,提供3倍的边长放大能力。

  • 文档检测校正: 提供了文档翻拍过程的辅助增强功能,包含两个子功能:文档检测和文档校正。

  • 文字图像超分: 文字图像超分辨率可以对包含文字内容的图像进行9倍放大(高宽各放大3倍),同时增强图像内文字的清晰度,称为“文字图像超分辨率”,简称“文字图像超分”。

  • 分词: 对于一段输入文本,可以自动进行分词,同时提供不同的分词粒度。开发者可以根据需要自定义分词粒度。

  • 词性标注: 对于输入的一段文本,自动通过词性标注接口对其进行分词,并为分词结果中的每个单词标注一个正确的词性。词性标注提供不同的分词粒度,开发者可以根据需要自定义分词粒度。

  • 助手类意图识别: 对用户发送给设备的文本消息进行语义分析和意图识别,进而衍生出各种智能的应用场景,使设备更智慧、更智能。

  • IM类意图识别: 利用机器学习技术,针对用户短信或聊天类APP等IM应用的文本消息进行内容分析,并识别出消息内容代表的用户意图。

  • 关键字提取: 可以在大量信息中提取出文本想要表达的核心内容,可以是具有特定意义的实体,如:人名,地点,电影等。也可以是一些基础但是在文本中很关键的词汇。

  • 实体识别: 从自然语言中提取出具有特定意义的实体,并在此基础上完成搜索等一系列相关操作及功能。

  • 语音识别: 将语音文件、实时语音数据流转换为汉字序列,准确率达到90%以上(本地识别95%)。

    10、orm 的处理
    DatabaseHelper helper = new DatabaseHelper(this);

private void initRegisters() {
        OrmContext ormContext = helper.getOrmContext("OrmTestDB", "OrmTestDB.db", BookStore.class);
        ormContext.registerEntityObserver("user", entityOrmObjectObserver);
        ormContext.registerStoreObserver("OrmTestDB", storeOrmObjectObserver);
        ormContext.close();
    }

    private void unRegisters() {
        OrmContext ormContext = helper.getOrmContext("OrmTestDB", "OrmTestDB.db", BookStore.class);
        ormContext.unregisterEntityObserver("user", entityOrmObjectObserver);
        ormContext.unregisterStoreObserver("OrmTestDB", storeOrmObjectObserver);
        ormContext.unregisterContextObserver(ormContext, contextOrmObjectObserver);
        ormContext.close();
    }

获取

  OrmContext ormContext = helper.getOrmContext("OrmTestDB", "OrmTestDB.db", BookStore.class);
        OrmPredicates predicates = ormContext.where(User.class);
        predicates.equalTo("age", 29);
        List<User> users = ormContext.query(predicates);

其它操作基本上都封装好了。
OrmContext实现数据库的升级、备份、删除、恢复,表的增删改查并监听数据变化。
在标准系统上运行。
项目做了一点demo 类的东西

推荐阅读更多精彩内容