Skip to content

01 原生模块

Xiaomi-Yule edited this page Jul 5, 2021 · 6 revisions

miot/Host

扩展程序运行时的宿主环境 所有由宿主APP直接提供给扩展程序的接口均列在这里. 主要包括原生业务页面、本地数据访问、系统提供的能力等 系统的能力主要包括: 音频(audio.js) 文件存储(file.js) 本地KV存储(storage.js) 编解码(crypto.js) 系统基本信息(locale.js) 米家APP提供的能力主要包括: 米家APP提供的UI能力(ui.js)

Export: public
Doc_name: 原生模块
Doc_index: 1
Doc_directory: host
Example

import {Host} from 'miot'

 Host.type // ios/ android/ tv
 Host.isIOS
 Host.isAndroid

 Host.version
 Host.apiLevel
 Host.isDebug


 Host.ui.openDeviceListPage()
 Host.ui.openShopPage(100)

 Host.locale.language
 Host.locale.timezone
 Host.locale.currentTimeMillis.then(time=>{})
 Host.locale.getCurrentCountry().then(country=>{})
 Host.locale.getPlaceMark().then(place=>{})
 Host.locale.getGPS().then(gps=>{})


 Host.file.readFile(path).then(file=>{})
 Host.file.writeFile(path, file).then(ok=>{})

 Host.storage.get(key)
 Host.storage.set(key, value)

miot/Host.displayCutoutTop : int

获取Android 官方提供的打孔屏api提供的打孔屏高度。 ios手机一律返回0.

Kind: static property of miot/Host
Read only: true
Since: 10042


miot/Host.type : string

返回本地环境的类型, ios|android

Kind: static constant of miot/Host


miot/Host.systemInfo : object

系统信息 包含sysVersion 系统版本名称 mobileModel 手机型号

Kind: static constant of miot/Host


miot/Host.isAndroid : boolean

判断是否是 android

Kind: static constant of miot/Host


miot/Host.isIOS : boolean

判断是否 iOS,和上面那个方法二选一即可

Kind: static constant of miot/Host


miot/Host.isPad : boolean

判断是否 Pad大屏设备

Kind: static constant of miot/Host


miot/Host.isIphoneXSeries : boolean

判断是否 iOS 刘海屏 包括iPhoneX系列, iPhoneXS, iPhoneXS Max 系列, iPhone 11系列 Android返回false

Kind: static constant of miot/Host
Since: 10044 在10047 添加对iPhone 12系列的支持


miot/Host.version : string

APP 的版本, 例如"1.0.0"

Kind: static constant of miot/Host


miot/Host.apiLevel : int

APP 的 apiLevel

Kind: static constant of miot/Host


miot/Host.isDebug : boolean

判断是否是调试版本

Kind: static constant of miot/Host
Read only: true


miot/Host.applicationEdition : int

Deprecated

是否是国际版APP 国内版1 国际版2 欧洲版3

Kind: static constant of miot/Host
Read only: true


miot/Host.appConfigEnv : int

获取 米家APP中 我的-->开发者设置-->其他设置, AppConfig接口拉取preview版数据 是否选中的状态 1:表示选中, preview ; 0:表示未选中, release 如果选中,Service.smarthome.getAppConfig 获取的数据为preview版数据, 反之为release版数据

Kind: static constant of miot/Host
Read only: true
Since: 10024


miot/Host.ui

可调起的host业务页面

Kind: static constant of miot/Host
See: module:miot/host/ui


miot/Host.locale

host 的本地化设置, 包括语言,地区,城市等等

Kind: static constant of miot/Host
See: module:miot/host/locale


miot/Host.storage

本地数据存储服务模块

Kind: static constant of miot/Host
See: module:miot/host/storage


miot/Host.file

本地文件服务模块

Kind: static constant of miot/Host
See: module:miot/host/file


miot/Host.audio

音频 播放,录制,转码相关模块

Kind: static constant of miot/Host
See: module:miot/host/audio


miot/Host.crypto

加密解密模块

Kind: static constant of miot/Host
See: module:miot/host/crypto


miot/Host.getWifiInfo() ⇒ [ 'Promise' ].<object>

获取手机wifi信息; 在Android上,从Android 9开始,获取WiFi信息需要申请定位权限,因此插件在调用该接口需要先判断是否有定位权限,没有就提示用户授权;否则就拿不到WiFi信息

Kind: static method of miot/Host
Returns: [ 'Promise' ].<object> - 成功时:{BSSID:xxx, SSID:xxx} 失败时:返回的是错误信息,字符串格式
Example

Host.getWifiInfo()
.then(res => console.log("ssid and bssid = ", res.SSID, res.BSSID))
.catch((error)=>{
  console.log(error)
});

miot/Host.getAppName() ⇒ [ 'Promise' ].<string>

获取APP名称

Kind: static method of miot/Host


miot/Host.getPhoneScreenInfo() ⇒ [ 'Promise' ].<object>

获取Android手机屏幕相关信息(包括状态栏高度)

Kind: static method of miot/Host
Returns: [ 'Promise' ].<object> - 手机屏幕相关信息 {'viewWidth':xxx, 'viewHeight':xxx, 'viewWidthPixel':xxx, 'viewHeightPixel':xxx} viewWidth和viewHeight返回的都是dp值,若想使用px值还得使用PixelRatio.getPixelSizeForLayoutSize方法转化为px值 但是在Pad小窗上时由于修改了scale值,所以转换出来的px值会偏小 所以10056新增两个返回值viewWidthPixel和viewHeightPixel表示当前ReactView的宽高像素值,若想使用px值建议直接使用这两个值,不必再转换dp值
Since: 10012


miot/Host.getCurrentCountry() ⇒

Deprecated

获取当前登陆用户的服务器国家

Kind: static method of miot/Host
Returns: Promise 返回国家编码,如:‘CN’
Since: 10010


miot/Host.getOperatorsInfo() ⇒ Promise

获取手机运营商信息 返回值中: name 运营商名称-与手机语言一致 simOperator 运营商 国家编码(三位)+网络编码 参考 https://en.wikipedia.org/wiki/Mobile_country_code countryCode 运营商国家码,ISO 3166-1 country code

Kind: static method of miot/Host
Returns: Promise - 运营商信息 {'1':{name:'',simOperator:'',,countryCode:''},'2':{...}}
Since: 10021


miot/Host.createBackgroundExecutor(jx, initialProps) ⇒ [ 'Promise' ].<IExecutor>

后台执行文件, 后台最多同时运行三个线程, 超过将销毁最早创建的 executor

Kind: static method of miot/Host
Since: 10002

Param Type Description
jx * 可执行的纯 js 文件, 不使用任何高级语法, 如要使用 es6, 请自行编译通过.
initialProps json 用于脚本初始化的数据, 在jx文件中为 'initialProps' 对象,使用方法参考样例 或者sampleProject中 ‘com.xiaomi.demo/Main/tutorial/JSExecutor.js’

Example

var myexecutor = null;
Host.createBackgroundExecutor(require('./test.jx'), {name1:"testName"})
     .then(executor=>{
         myexecutor = executor;
         executor.execute("myFunc", 1,2,'a')
                 .then(result=>{
                     console.log(result);
                 })
         //支持使用initialProps或者在jx中直接使用
         executor.execute("myFunc2", "initialProps.name1").then(res =>{...})
         //支持使用obj与arr
         executor.execute("SomeObject.myFunc3", {"name":"hello"}, ["a1","a2"]).then(res =>{...})
})
.then(err=>{...})
....
myexecutor&&myexecutor.remove();

miot/Host.phoneHasNfcForAndroid() ⇒ [ 'Promise' ].<json>

Deprecated

android 手机是否有NFC功能

Kind: static method of miot/Host
Returns: [ 'Promise' ].<json> - {hasNfc:true/false}
Since: 10021
Example

Host.phoneHasNfcForAndroid().then((result)=>{
  console.log(result.hasNfc);
}))

miot/Host.connectWifiWithSsid(ssid) ⇒ [ 'Promise' ].<JSON>

android 连接指定ssid得wifi,要求该wifi之前已经连接过 使用此api不需要特别权限

Kind: static method of miot/Host
Since: 10036

Param Description
ssid 需要去掉字串两端的引号。在native层会自己增加""

Example

Host.connectWifiWithSsid().then((result)=>{
  console.log(result);
}))

miot/Host.bindProcessToNetwork(type)

Kind: static method of miot/Host
Since: 10037

Param Description
type 0 for mobile 1 for wifi 2 for null equal to android's bindProcessToNetwork

miot/Host.pageShouldAdapterSoftKeyboard(shouldAdapter) ⇒ [ 'Promise' ].<boolean>

页面有输入框,需要打开软键盘,页面适配软键盘

Kind: static method of miot/Host
Returns: [ 'Promise' ].<boolean> - 设置成功返回true(iOS没有实现这个接口,直接返回true)
Since: 10027 (10050 后开始支持iOS)

Param Type Description
shouldAdapter boolean Android: true: 表示进行适配,建议UI用ScrollView包裹起来,当输入框在屏幕的下半部分时,只会触发ScrollView滚动; false: 整个页面滚动, demo可参考SoftKeyboardAdapterTestDemo.js iOS : true 表示进行适配,整个页面会跟随滑动,false: 表示不进行适配,整个页面不会跟随键盘滑动,默认true (10050 后开始支持iOS)

miot/Host.checkAndroidLocationServerIsOpen() ⇒ [ 'Promise' ].<Object>

检测Android系统位置服务(不同于权限)是否打开 only Android

Kind: static method of miot/Host
Returns: [ 'Promise' ].<Object> - 成功时:{"code":0, "data":{locationServerIsOpen: true/false}} 失败时:{"code":-1, "message":"xxx" }
Since: 10038


miot/Host.getIOSLocationAuthorizationStatus() ⇒ [ 'Promise' ].<Object>

获取iOS定位授权的权限状态 only iOS

Kind: static method of miot/Host
Returns: [ 'Promise' ].<Object> - 成功时:{LocationAuthStatus} 失败时:{"message":"xxx" }
Since: 10038


miot/Host.jumpToThirdpartyApplication(scheme, params, passThrough) ⇒ [ 'Promise' ].<Object>

跳转到其他App

Kind: static method of miot/Host
Since: 10039

Param Type Description
scheme string 其他App的Scheme 如 mihome://plugin
params Object 传给其他App的参数
passThrough Object 从其他App回来时原封不动带回来的参数(部分App支持) 成功时:{"code":0, "data":{// 第三方app返回的数据}} 失败时:{"code":-1, "message":"xxx" }

miot/Host.checkAbilityOfJumpToThirdpartyApplication(scheme) ⇒ [ 'Promise' ].<bool>

判断是否可以跳到其他App

Kind: static method of miot/Host
Result: "code":0, "data":true/false
Since: 10039

Param Type Description
scheme string 跳转其他App时使用的scheme

miot/Host~HostEvent : object

Host事件集合

Kind: inner namespace of miot/Host
Example

import { HostEvent } from 'miot/host';
   const subscription = HostEvent.cellPhoneNetworkStateChanged.addListener(
      (event)=>{
         ...
      }
    )
   ...
   subscription.remove()
   ...

"cellPhoneNetworkStateChanged"

手机网络状态变更事件

Kind: event emitted by HostEvent
Param{object}: 接收到的数据 {networkState: xxx} networkState可取值如下: -1 :DefaultState 0 :网络不可用 1 :蜂窝网络 2G 3G 4G 2 :WiFi网络
Since: 10031
Example

可查看HostEventDemo.js

miot/Host~IExecutor

jx执行器

Kind: inner typedef of miot/Host
Since: 10002
Properties

Name Type Description
isReady boolean 是否可用
isRunning boolean 是否运行中
execute(method, * ...args) - 执行某个函数
remove() 删除

Clone this wiki locally