npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@lastos/localsdk

v7.0.21

Published

localsdk bindings for Node.js

Downloads

233

Readme

简介

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 | 系统音量变化 |