@lastos/localsdk

7.0.21 • Public • Published

简介

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 。有错误,格式如下:

      key value 类型 说明
      code number 错误码
      message string 错误信息

      所有错误码如下:

      code 说明
      300001 Json Key 无效
      300002 Json Value 无效
      300003 Json 格式错误
      200001 出现标准异常
      200002 出现未知异常
      200003 Api 执行失败
      200004 Api 没有实现
      100001 RPC 服务不可用
      100002 RPC 服务内部错误
      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 的参数如下:

key value 类型 说明
tempDir string 目录必须存在
logDir string 目录必须存在
appdataDir string 目录必须存在
mciDbPath string mci 数据库路径
networkAdaptor string 网卡硬件 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 类型 说明
force boolean 为 true 时,强制杀死进程

setWindowsAsDesktop

设置桌面窗口

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

unsetWindowsAsDesktop

设置桌面窗口

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

isDesktopWindow

设置桌面窗口

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

返回结果:

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

hideAllTask

最小化所有窗口

showDock

设置 Dock 显示方式

参数 key 参数 value 类型 说明
status boolean true: 显示,false:隐藏

isDockHide

返回 dock 是否隐藏

返回结果:

结果 key 结果 value 类型 说明
is_dock_hide boolean Dock 是否隐藏

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 类型 说明
id number 置顶窗口 id

RemoveAllTask

关闭所有任务

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

Application

getAppList

获取 APP 列表

返回结果:

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

APP:

key 类型 说明
name string 名字
package string 包名
binPath string 二进制路径
params string 参数
iconPath string 图标路径
platform string 平台
appid string AppId

getDefaultAppList

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

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

openApp

打开一个程序

参数:

参数 key 参数 value 类型 说明
bin-path string 二进制路径
package-name string 包名
params string 启动参数

Channel [localsdk-x3]

getChannleList

获取通道列表

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

Channel:

key 类型 说明
id string 通道 id
type number 类型
state number 状态
///  通道类型
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 类型 说明
channel object 存储一个 Channel 信息

Channel:

key 类型 说明
id string 通道 id
type number 类型
state number 状态

selectInputChannel

选择通道

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

Info [localsdk-x3]

getSN

获取设备 SN

结果 key 结果 value 类型 说明
sn string SN 号

getModuleVersion

获取设备副版本

结果 key 结果 value 类型 说明
version string 版本号

getMainVersion

获取主版本号

结果 key 结果 value 类型 说明
version string 版本号

Microphone [localsdk-x3][讲台]

microphoneIsMute

麦克风是否静音

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

结果:

结果 key 结果 value 类型 说明
mute boolean true: 静音, false:非静音

getMicrophoneList

获取麦克风列表

结果 key 结果 value 类型 说明
microphones array Microphone

Microphone: 字符串

screenshare [localsdk-x3]

getSenderList

获取传屏通道列表

返回结果:

结果 key 结果 value 类型 说明
senders array Sender

Sender:

key value 类型 说明
type number 发送端类型
name string 发送端名称
id string 发送端 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 类型 说明
id string 传屏通道 id

settings

getWallpaper [Windows]

获取壁纸

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

setWallpaper [Windows]

设置壁纸

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

resetSystem [Linux]

重置系统

setExecutionState

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

参数 key 参数 value 类型 说明
state number 路径

state 是一个枚举值

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

getSystemVolume

返回系统音量

结果 key 结果 value 类型 说明
volume int 音量

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

setSystemVolume

设置系统音量

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

volume => [0, 1]

getSystemMute

返回系统是否静音

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

setSystemMute

设置系统是否静音

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

maxhub.localsdk.node.event.setting.SystemVolumeChanged

音量变化事件

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

getOffDisplayTime

获取屏幕关闭时间

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

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

MCI

mciGetConfig

获取配置

参数 key 参数 value 类型 说明
module string 模块名称
key string
defaul_value string 默认值

返回结果:

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

mciContainsModule

判断是否包括某个模块

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

返回结果:

结果 key 结果 value 类型 说明
contains boolean true: 存在,false:不存在

mciGetResource

获取 MCI 图片资源

参数 key 参数 value 类型 说明
module string 模块名称
id string 图片 id

返回结果:

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

mciObserve

监听某个键的变化

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

mciUnObserve

取消监听某个键的变化

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

USB

getUsbDiskList

获取 usb 列表

返回结果:

结果 key 结果 value 类型 说明
usb-disk-list array UsbDiskInfo 数组

UsbDiskInfo:

key 类型 说明
usbDiskName string usb label
usbDiskPath string 访问路径
remainSize number 剩余空间
totalSize number 总空间

事件列表

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.changed mci 改变
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.pullin USB 插入
maxhub.localsdk.node.event.system.usb.pullout USB 拔出
maxhub.localsdk.node.event.setting.SystemVolumeChanged 系统音量变化

Readme

Keywords

Package Sidebar

Install

npm i @lastos/localsdk

Weekly Downloads

5

Version

7.0.21

License

UNLICENSED

Unpacked Size

3.59 MB

Total Files

5

Last publish

Collaborators

  • yang8guang
  • dicklwm
  • chengyong
  • ouxuwen
  • michael4npm
  • yanmin