7.0.21 • Published 5 years ago

@lastos/localsdk v7.0.21

Weekly downloads
104
License
UNLICENSED
Repository
gitlab
Last release
5 years ago

简介

node-localsdk 是一个用 C++实现的 Node.js 插件,将 Node.js 无法实现的系统底层功能 封装成 API 供 Node.js 调用。目前在三代机和五代机上使用不同的包,三代机是 @lastos/localsdk-x3 ,五代机是 @lastos/localsdk

API 参数及返回值

node-localsdk 目前的所有 API 都是异步 API,每个 API 接受两个参数:

  • 第一个参数是 JSON 字符串,格式为 '{key: value, ...}' ,如果没有参数,必须传递 一个空的 JSON: '{}'
  • 第二个参数为回调函数,当底层接口执行完毕后调用此回调函数。回调函数有两个参数:

    1. 第一个参数是错误信息,当没有错误时,参数值为 undefined 。有错误,格式如下:

      keyvalue 类型说明
      codenumber错误码
      messagestring错误信息

      所有错误码如下:

      code说明
      300001Json Key 无效
      300002Json Value 无效
      300003Json 格式错误
      200001出现标准异常
      200002出现未知异常
      200003Api 执行失败
      200004Api 没有实现
      100001RPC 服务不可用
      100002RPC 服务内部错误
      100003未知错误
    2. 第二个参数是接口返回值。格式如下:

{
    "body": data
}

API 使用例子:

localsdk.api('{}', (err, data) => {
    if (err) {
        console.log(err)
    } else {
        console.log(data)
    }
})

node-localsdk 初始化

在调用 node-localsdk 提供的 API 之前,需要调用 initConfig 。当 initConfig 成功返 回后才能调用其他 API。

initConfig 的参数如下:

keyvalue 类型说明
tempDirstring目录必须存在
logDirstring目录必须存在
appdataDirstring目录必须存在
mciDbPathstringmci 数据库路径
networkAdaptorstring网卡硬件 ID,5 代机不需要

Example:

const sdk = require("@lastos/localsdk-x3")
const config = {
  'tempDir': 'F:/InitConfig',
  'logDir': 'F:/InitConfig',
  'appdataDir': 'F:/InitConfig',
  'mciDbPath': 'F:/InitConfig/mci.db',
  'networkAdaptor': 'XXXXX'
}
localsdk.initConfig(JSON.stringify(config), (error, data) => {})

node-localsdk 事件通知

当底层有事件时,node-localsdk 提供了一个监听对象将事件通知到 js 层。使用方式如下:

const localsdk = require("@lastos/localsdk-x3")
global.notify = new localsdk.NotifyEventCore((name, message) => {
    // process event
})

为了防止对象析构,需要将对象挂到 global 上。

也可以将 Node.js 中的 EventEmitter.emit 传到 NotifyEventCore 中。

const localsdk = require("@lastos/localsdk-x3")
const events = require('events')
const emitter = new events.EventEmitter;

global.notify = new localsdk.NotifyEventCore(emitter.emit.bind(emitter))

emitter.on('event.name', (event) => {
    // process event
})

API

Activity

removeTopmostTask

关闭置顶窗口。

参数 key参数 value 类型说明
forceboolean为 true 时,强制杀死进程

setWindowsAsDesktop

设置桌面窗口

参数 key参数 value 类型说明
hwndnumber窗口的 hwnd

unsetWindowsAsDesktop

设置桌面窗口

参数 key参数 value 类型说明
hwndnumber窗口的 hwnd

isDesktopWindow

设置桌面窗口

参数 key参数 value 类型说明
hwndnumber窗口的 hwnd

返回结果:

结果 key结果 value 类型说明
is_desktop_windowboolean是否是桌面窗口

hideAllTask

最小化所有窗口

showDock

设置 Dock 显示方式

参数 key参数 value 类型说明
statusbooleantrue: 显示,false:隐藏

isDockHide

返回 dock 是否隐藏

返回结果:

结果 key结果 value 类型说明
is_dock_hidebooleanDock 是否隐藏

setWindowToBottom

将窗口置底 | 参数 key | 参数 value 类型 | 说明 | |----------|-----------------|-------------| | hwnd | number | 窗口的 hwnd |

ignoreZorderChangeSync

同步方法

Windows : 在 hookWindowMessage 中监听 WM_WINDOWPOSCHANGING 消息, 并在回调中使用这个方法。

参数为 json 字符串 | 参数 key | 参数 value 类型 | 说明 | |----------|-----------------|------------------------------------| | w_param | TypedArray | hookWindowMessage 回调的第一个参数 | | l_param | TypedArray | hookWindowMessage 回调的第一个参数 |

Expamles:

  win.hookWindowMessage(0x0046, (w_param, l_param) => {
    message = { "w_param": w_param, "l_param": l_param }

    localsdk.ignoreZorderChangeSync(JSON.stringify(message))

  })

Linux :未实现

getTopmostWindowId

返回置顶窗口 ID

返回结果:

结果 key结果 value 类型说明
idnumber置顶窗口 id

RemoveAllTask

关闭所有任务

参数 key参数 value 类型说明
forceboolean为 true 时,强制杀死进程

Application

getAppList

获取 APP 列表

返回结果:

结果 key结果 value 类型说明
applistarray每个元素存储 APP 信息

APP:

key类型说明
namestring名字
packagestring包名
binPathstring二进制路径
paramsstring参数
iconPathstring图标路径
platformstring平台
appidstringAppId

getDefaultAppList

获取指定APP 列表,如果系统中安装了 packages-name 中指定的 APP,返回 APP 的信息。返回结果和 getAppList 相同,

参数 key参数 value 类型说明
packages-namearray包名数组

openApp

打开一个程序

参数:

参数 key参数 value 类型说明
bin-pathstring二进制路径
package-namestring包名
paramsstring启动参数

Channel localsdk-x3

getChannleList

获取通道列表

结果 key结果 value 类型说明
channellistarray每个元素存储 Channel 信息

Channel:

key类型说明
idstring通道 id
typenumber类型
statenumber状态
///  通道类型
enum class InputType {

    ///  外接 PC 模块通道,三代机 SA06 和 PC 都共用这通道
    kPcModule = 0,

    ///  Android 模块通道,用于区分二代机的 SA05 通道
    kAndroidModule = 1,

    ///  HDMI 通道
    kHDMI = 2,

    ///  VGA 通道
    kVGA = 3,

    ///  ATV 通道
    kATV = 4,

    ///  DTV 通道
    kDTV = 5,

    ///  AV 通道
    kAV = 6,

    ///  YPbPr 通道
    kYPBPR = 7,

    ///  TV 系统通道,单 551 时 TV 通道,可理解成单 551 时 top-activity != tv-settings-activity 时候
    kTVModule = 8,
};

///  通道状态
enum class InputState {

    ///  通道无插入
    kUnPlugin = 0,

    ///  通道插入且无信号
    kPlugWithoutSignal = 1,

    ///  通道插入且有信号
    kPlugWithSignal = 2,
};

getCurrentChannel

获取当前通道

结果 key结果 value 类型说明
channelobject存储一个 Channel 信息

Channel:

key类型说明
idstring通道 id
typenumber类型
statenumber状态

selectInputChannel

选择通道

参数 key参数 value 类型说明
channel-idstring通道 id

Info localsdk-x3

getSN

获取设备 SN

结果 key结果 value 类型说明
snstringSN 号

getModuleVersion

获取设备副版本

结果 key结果 value 类型说明
versionstring版本号

getMainVersion

获取主版本号

结果 key结果 value 类型说明
versionstring版本号

Microphone localsdk-x3

microphoneIsMute

麦克风是否静音

参数 key参数 value 类型说明
idstring麦克风 id

结果:

结果 key结果 value 类型说明
mutebooleantrue: 静音, false:非静音

getMicrophoneList

获取麦克风列表

结果 key结果 value 类型说明
microphonesarrayMicrophone

Microphone: 字符串

screenshare localsdk-x3

getSenderList

获取传屏通道列表

返回结果:

结果 key结果 value 类型说明
sendersarraySender

Sender:

keyvalue 类型说明
typenumber发送端类型
namestring发送端名称
idstring发送端 id
///  发送端的类型
enum class SenderType {

    ///  未知类型
    kUnknown = 0,

    ///  Dongle
    kTransmitter = 1,

    ///  Windows 软件传屏
    kWindowsSoftware = 2,

    ///  Mac 软件传屏
    kMacSoftware = 3,

    ///  Android 手机
    kAndroidPhone = 4,

    ///  Android 平板
    kAndroidPad = 5,

    ///  iPhone
    kIPhone = 6,

    ///  iPad
    kIPad = 7,
};

fetchScreen

选择传屏通道

参数 key参数 value 类型说明
idstring传屏通道 id

settings

getWallpaper Windows

获取壁纸

结果 key结果 value 类型说明
wallpaper-pathstring路径

setWallpaper Windows

设置壁纸

参数 key参数 value 类型说明
wallpaper-pathstring路径

resetSystem Linux

重置系统

setExecutionState

使应用程序能够通知系统它正在使用,从而防止系统在应用程序运行时进入睡眠或关闭显示。

参数 key参数 value 类型说明
statenumber路径

state 是一个枚举值

kSystemRequired = 0x00000001;  // 强制系统处于工作状态
kDisplayRequired = 0x00000002; // 禁止显示器关闭
kClear = 0x80000000;            // 清除已经设置的状态
kAll = kSystemRequired | kDisplayRequired // 同时设置

getSystemVolume

返回系统音量

结果 key结果 value 类型说明
volumeint音量

volume => [0, 1] 如果 volume 等于-1 表示获取音量失败

setSystemVolume

设置系统音量

参数 key参数 value 类型说明
volumenumber音量大小

volume => [0, 1]

getSystemMute

返回系统是否静音

结果 key结果 value 类型说明
muteboolean是否静音

setSystemMute

设置系统是否静音

参数 key参数 value 类型说明
muteboolen是否静音

maxhub.localsdk.node.event.setting.SystemVolumeChanged

音量变化事件 | 参数 key | 参数 value 类型 | 说明 | | |----------|-----------------|-----------------------------------|---| | muted | boolen | true: 变为静音; false: 变为非静音 | | | volume | float | 0 - 1, 变化后的音量值 | |

getOffDisplayTime

获取屏幕关闭时间

结果 key结果 value 类型说明
timeint时间,单位 s

返回 0 表示从不关闭 返回 -1 表示获取失败

MCI

mciGetConfig

获取配置

参数 key参数 value 类型说明
modulestring模块名称
keystring
defaul_valuestring默认值

返回结果:

结果 key结果 value 类型说明
valuestring配置值

mciContainsModule

判断是否包括某个模块

参数 key参数 value 类型说明
modulestring模块名称

返回结果:

结果 key结果 value 类型说明
containsbooleantrue: 存在,false:不存在

mciGetResource

获取 MCI 图片资源

参数 key参数 value 类型说明
modulestring模块名称
idstring图片 id

返回结果:

结果 key结果 value 类型说明
resourcestring以 base64 返回资源内容

mciObserve

监听某个键的变化

参数 key参数 value 类型说明
modulestring模块名称
keystring

mciUnObserve

取消监听某个键的变化

参数 key参数 value 类型说明
modulestring模块名称
keystring

USB

getUsbDiskList

获取 usb 列表

返回结果:

结果 key结果 value 类型说明
usb-disk-listarrayUsbDiskInfo 数组

UsbDiskInfo:

key类型说明
usbDiskNamestringusb label
usbDiskPathstring访问路径
remainSizenumber剩余空间
totalSizenumber总空间

事件列表

name说明
maxhub.localsdk.node.event.system.channel.currentChannelChanged通道变化 localsdk-x3
maxhub.localsdk.node.event.system.channel.channelStateChanged通道状态变化 localsdk-x3
maxhub.localsdk.node.event.system.mci.changedmci 改变
maxhub.localsdk.node.event.system.microphone.mute麦克风静音 localsdk-x3 讲台
maxhub.localsdk.node.event.screenshare.senderConnect传屏连接 localsdk-x3
maxhub.localsdk.node.event.screenshare.senderDisconnect传屏断开连接 localsdk-x3
maxhub.localsdk.node.event.system.setting.wallpaperchanged墙纸改变 Windows
maxhub.localsdk.node.event.system.usb.pullinUSB 插入
maxhub.localsdk.node.event.system.usb.pulloutUSB 拔出
maxhub.localsdk.node.event.setting.SystemVolumeChanged系统音量变化
7.0.21

5 years ago

7.0.20

5 years ago

0.0.16

5 years ago

0.0.15

5 years ago

0.0.14

5 years ago

0.0.13

5 years ago

0.0.12

5 years ago

0.0.11

5 years ago

0.0.10

5 years ago

0.0.9

5 years ago

0.0.8

5 years ago

0.0.7

5 years ago

0.0.5

5 years ago

0.0.6

5 years ago

0.0.4

5 years ago

7.0.19

5 years ago

0.0.3

5 years ago

6.1.14

5 years ago

7.0.18

5 years ago

7.0.17

5 years ago

7.0.16

5 years ago

6.1.13

5 years ago

7.0.15

5 years ago

7.0.14

5 years ago

7.0.13

5 years ago

7.0.12

5 years ago

7.0.11

5 years ago

7.0.10

5 years ago

7.0.9

5 years ago

7.0.8

5 years ago

7.0.7

5 years ago

7.0.6

5 years ago

7.0.5

5 years ago

6.1.12

5 years ago

7.0.4

5 years ago

6.1.11

5 years ago

7.0.3

5 years ago

7.0.2

5 years ago

7.0.1

5 years ago

7.0.0

5 years ago

6.1.10

5 years ago

6.1.9

5 years ago

6.1.8

5 years ago

6.1.5

5 years ago

6.1.7

5 years ago

6.1.4

5 years ago

6.1.3

5 years ago

6.1.2

5 years ago

6.1.1

5 years ago

6.1.0

6 years ago

6.0.25

6 years ago

6.0.24

6 years ago

6.0.23

6 years ago

6.0.22

6 years ago

6.0.21

6 years ago

6.0.20

6 years ago

6.0.19

6 years ago

6.0.18

6 years ago

6.0.17

6 years ago

6.0.16

6 years ago

6.0.15

6 years ago

6.0.14

6 years ago

6.0.13

6 years ago

6.0.12

6 years ago

6.0.11

6 years ago

6.0.10

6 years ago

6.0.9

6 years ago

6.0.8

6 years ago

6.0.7

6 years ago

6.0.6

6 years ago

6.0.5

6 years ago

6.0.4

6 years ago

6.0.3

6 years ago

6.0.2

6 years ago

6.0.1

6 years ago

3.6.3

6 years ago

6.0.0

6 years ago

0.6.7

6 years ago

0.6.6

6 years ago

0.5.2

6 years ago

0.5.1

6 years ago

0.5.0

6 years ago

0.6.5

6 years ago

0.6.4

6 years ago

0.6.3

6 years ago

0.6.2

6 years ago

0.6.1

6 years ago

0.6.0

6 years ago

0.2.0

6 years ago

0.1.1

6 years ago

3.3.2

6 years ago

5.6.1

6 years ago

3.6.1

6 years ago

3.6.0

6 years ago

3.3.0

6 years ago

5.0.4

6 years ago

5.0.3

6 years ago

5.0.2

6 years ago

5.0.1

6 years ago

0.3.0

6 years ago

5.0.0

6 years ago

0.0.2

6 years ago

0.0.1

6 years ago