【鸿蒙开发示例代码】基础数据类型转化示例

示例代码合集地址:

HarmonyOS示例代码-鸿蒙系统示例代码-华为开发者联盟 (huawei.com)

代码工程地址:

NativeDataConversion: 本示例介绍如何使用DevEco Studio创建一个Native C++应用,将ArkTS侧的数据(基础的数据类型)传递到Native侧进行处理并返回结果到ArkTS侧。 (gitee.com)

基础数据类型转化示例

简介

本示例介绍如何使用DevEco Studio创建一个Native C++应用,将ArkTS侧的数据(基础的数据类型)传递到Native侧进行处理并返回结果到ArkTS侧。 界面如下所示:

synchronized_operation

工程目录

├──conversion/src/main/cpp                    // C++ 代码区
│  ├──types
│  │  └──libconversion                        // C++接口导出
│  │     ├──index.d.ts                        
│  │     └──oh-package.josn5                 
│  ├──ArraybufferType.cpp                     // Arraybuffer类型转换
│  ├──ArraybufferType.h                       
│  ├──ArrayType.cpp                           // 数组类型转换
│  ├──ArrayType.h
│  ├──CMakeLists.txt                          // CMake配置文件
│  ├──DateType.txt                            // Date类型转换
│  ├──DateType.h
│  ├──hello.cpp                               // Native模块注册                             
│  ├──NumberType.cpp                          // number类型转换
│  ├──NumberType.h                          
│  ├──ObjectType.cpp                          // Object类型转换
│  ├──ObjectType.h                            
│  ├──StringBoolType.cpp                      // string,bool类型转换
│  └──StringBoolType.h                        
├──conversion/src/main/ets                    // ets 代码区
│  ├──common
│  │  ├──constants  
│  │  │  └──CommonConstants.ets               // 常量定义文件
│  │  └──utils
│  │     └──Logger.ets                        // 日志类
│  ├──conversionability
│  │  └──ConversionAbility.ets       
│  └──pages
│     ├──ArraybufferType.ets                  // Arraybuffer类型转换界面
│     ├──ArrayType.ets                        // 数组类型转换界面
│     ├──DateType.ets                         // Date类型转换页面
│     ├──Index.ets                            // 主页界面
│     ├──NumberType.ets                       // number类型转换界面
│     ├──ObjectType.ets                       // Object类型转换界面
│     ├──StringBoolType.ets                   // string,bool类型转换界面
│     └──Types.ts                             // object接口声明
└──entry/src/main/resources                   // 应用资源目录

相关概念

  • NAPI:NAPI提供的接口名与三方Node.js一致,目前支持部分接口。
  • NAPI中支持的标准库:目前支持标准C库、C++库、OpenSL ES、zlib。

相关权限

不涉及

使用说明

  1. 主页面:点击不同场景进入到不同类型的数据转化实例。
  2. 子页面:
    • 场景一:int类型加法(int类型数据)。主要通过napi_get_value_int32()函数与napi_create_int32()函数、分别获取int型数据和构造int型数据。
    • 场景二:string类型拼接(string类型数据和bool类型数据)。主要通过napi_get_value_string_utf8()、napi_get_value_bool()、以及napi_create_string_utf8()函数实现、与场景一用法类似。
    • 场景三:数组逆序(arr类型数据)。主要使用napi_get_array_length()、napi_create_array_with_length()、napi_get_element()和napi_set_element()函数。与场景一二的区别是先获取数组长度、然后构建相应长度的数组。针对数组的每一项元素值通过napi_get_element()获取、每一项元素赋值时使用napi_set_element()实现。
    • 场景四:arraybuffer求平方(arraybuffer类型数据)。主要使用napi_get_arraybuffer_info()、napi_create_external_arraybuffer()函数。区别在于napi_get_arraybuffer_info()获取的是底层缓冲区指针和指针长度。对于数据的修改需要利用reinterpret_cast将指针转化为uint型指针进行数据修改,修改后还需利用reinterpret_cast将指针转换回viod指针,该指针在napi_create_external_arraybuffer()构造新的arraybuffer时被引用。
    • 场景五:object对象赋值(object类型)。主要使用napi_create_object()、napi_set_named_property()函数、区别在于需要先构造出object对象、然后利用napi_set_named_property()函数对object对象的某个属性进行赋值操作。
    • 场景六:Date类型转换。主要使用napi_create_date()、napi_get_date_value()函数,创建、解析Date类型的对象。

约束与限制

1.本示例仅支持标准系统上运行,支持设备:华为手机。

2.HarmonyOS系统:HarmonyOS NEXT Developer Beta3及以上。

3.DevEco Studio版本:DevEco Studio NEXT Developer Beta3及以上。

4.HarmonyOS SDK版本:HarmonyOS NEXT Developer Beta3 SDK及以上。

鸿蒙系统的开发通常涉及到使用华为提供的开源框架和工具,比如HarmonyOS SDK和DevEco Studio。在开发过程中,有一些基本的步骤和最佳实践被视为必选项: 1. **环境配置**:首先,你需要安装并配置DevEco Studio,这是华为官方的集成开发环境(IDE),支持鸿蒙应用的开发。 ```bash # 下载DevEco Studio https://developer.harmonyos.cdn华为.com/downloads/deveco-studio/ # 安装并启动DevEco Studio ``` 2. **创建项目**:在DevEco Studio中,选择"Create a New Project",选择"HarmonyOS App"作为项目类型。 ```java // 示例代码片段(Java): Project project = new Project(); project.setName("YourApp"); project.setTargetSdkVersion("2.0"); // 使用最新的SDK版本 ``` 3. **添加依赖**:根据你的应用需求,添加必要的模块和库到项目中,如基础模块、UI框架等。 ```xml <!-- build.gradle 文件示例 --> dependencies { implementation 'com.huawei.hms:harmonyos-sdk:latest_version' } ``` 4. **编写代码**:使用HarmonyOS提供的API实现功能,例如数据绑定、UI组件操作等。 ```java // 示例代码片段(触摸事件处理): Button button = findViewById(R.id.your_button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this, "Button clicked!", Toast.LENGTH_SHORT).show(); } }); ``` 5. **编译和运行**:确保代码无误后,使用DevEco Studio进行编译并部署到模拟器或真实设备上测试。 ```bash ./gradlew assembleDebug device connect your_device_ip runAsHarmonyOSApp ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值