Skip to content

设备 (Device)

6.7.0 源码校对

本页已按 AutoJs6 6.7.0 (ed3eb10e88db5a8425fd94bdddefa4176e5e1c94) 对照以下源码路径校对:

  • app/src/main/java/org/autojs/autojs/runtime/ScriptRuntime.kt
  • app/src/main/java/org/autojs/autojs/runtime/api/augment/device/Device.kt
  • app/src/main/java/org/autojs/autojs/runtime/api/Device.java

运行时中 device / $device 由 augment 注入. 基础 Device.java 提供设备信息、屏幕、亮度、音量、电池、内存、唤醒 / 熄屏、震动、方向、网络和部分硬件标识读取能力; augment 层补充当前 AutoJs6 运行时便捷函数.

当前 augment 公开函数包括 summary, digest, vibrate, isScreenOff, isScreenPortrait, isScreenLandscape, getIpAddress, getIpv6Address, getGatewayAddress, 网络状态检查, getSharedDeviceId, 指针位置相关函数. getter 包括 width, height, rotation, orientation, density.

vibrate 支持毫秒数、摩斯字符串、震动时间数组等形式; 两参数形式可表达字符串选项、关闭 / 持续时间或数组 pattern 的 repeat/off 参数.

亮度、音量、指针位置等系统设置相关能力受 Android 权限和系统版本限制. Android API 23+ 不能再通过私有 Settings.System 字段直接修改指针位置, 当前实现改由 PointerLocationTool 处理.

device模块提供了与设备有关的信息与操作, 例如获取设备宽高, 内存使用率, IMEI, 调整设备亮度、音量等.

此模块的部分函数, 例如调整音量, 需要"修改系统设置"的权限. 如果没有该权限, 会抛出SecurityException并跳转到权限设置界面.

device.width

  • {number}

设备屏幕分辨率宽度. 例如1080.

device.height

  • {number}

设备屏幕分辨率高度. 例如1920.

device.buildId

  • {string}

Either a changelist number, or a label like "M4-rc20".

修订版本号, 或者诸如"M4-rc20"的标识.

device.broad

  • {string}

The name of the underlying board, like "goldfish".

设备的主板(?)型号.

device.brand

  • {string}

The consumer-visible brand with which the product/hardware will be associated, if any.

与产品或硬件相关的厂商品牌, 如"Xiaomi", "Huawei"等.

device.device

  • {string}

The name of the industrial design.

设备在工业设计中的名称.

device.model

  • {string}

The end-user-visible name for the end product.

设备型号.

device.product

  • {string}

The name of the overall product.

整个产品的名称.

device.bootloader

  • {string}

The system bootloader version number.

设备Bootloader的版本.

device.hardware

  • {string}

The name of the hardware (from the kernel command line or /proc).

设备的硬件名称(来自内核命令行或者/proc).

device.fingerprint

  • {string}

A string that uniquely identifies this build. Do not attempt to parse this value.

构建(build)的唯一标识码.

device.serial

  • {string}

A hardware serial number, if available. Alphanumeric only, case-insensitive.

硬件序列号.

device.sdkInt

  • {number}

The user-visible SDK version of the framework; its possible values are defined in Build.VERSION_CODES.

安卓系统API版本. 例如安卓4.4的sdkInt为19.

device.incremental

  • {string}

The internal value used by the underlying source control to represent this build. E.g., a perforce changelist number or a git hash.

device.release

  • {string}

The user-visible version string. E.g., "1.0" or "3.4b5".

Android系统版本号. 例如"5.0", "7.1.1".

device.baseOS

  • {string}

The base OS build the product is based on.

device.securityPatch

  • {string}

The user-visible security patch level.

安全补丁程序级别.

device.codename

  • {string}

The current development codename, or the string "REL" if this is a release build.

开发代号, 例如发行版是"REL".

device.getIMEI()

  • {string}

返回设备的IMEI.

device.getAndroidId()

  • {string}

返回设备的Android ID.

Android ID为一个用16进制字符串表示的64位整数, 在设备第一次使用时随机生成, 之后不会更改, 除非恢复出厂设置.

device.getMacAddress()

  • {string}

返回设备的Mac地址. 该函数需要在有WLAN连接的情况下才能获取, 否则会返回null.

可能的后续修改:未来可能增加有root权限的情况下通过root权限获取, 从而在没有WLAN连接的情况下也能返回正确的Mac地址, 因此请勿使用此函数判断WLAN连接.

device.getBrightness()

  • {number}

返回当前的(手动)亮度. 范围为0~255.

device.getBrightnessMode()

  • {number}

返回当前亮度模式, 0为手动亮度, 1为自动亮度.

device.setBrightness(b)

  • b {number} 亮度, 范围0~255

设置当前手动亮度. 如果当前是自动亮度模式, 该函数不会影响屏幕的亮度.

此函数需要"修改系统设置"的权限. 如果没有该权限, 会抛出SecurityException并跳转到权限设置界面.

device.setBrightnessMode(mode)

  • mode {number} 亮度模式, 0为手动亮度, 1为自动亮度

设置当前亮度模式.

此函数需要"修改系统设置"的权限. 如果没有该权限, 会抛出SecurityException并跳转到权限设置界面.

device.getMusicVolume()

  • {number} 整数值

返回当前媒体音量.

device.getNotificationVolume()

  • {number} 整数值

返回当前通知音量.

device.getAlarmVolume()

  • {number} 整数值

返回当前闹钟音量.

device.getMusicMaxVolume()

  • {number} 整数值

返回媒体音量的最大值.

device.getNotificationMaxVolume()

  • {number} 整数值

返回通知音量的最大值.

device.getAlarmMaxVolume()

  • {number} 整数值

返回闹钟音量的最大值.

device.setMusicVolume(volume)

  • volume {number} 音量

设置当前媒体音量.

此函数需要"修改系统设置"的权限. 如果没有该权限, 会抛出SecurityException并跳转到权限设置界面.

device.setNotificationVolume(volume)

  • volume {number} 音量

设置当前通知音量.

此函数需要"修改系统设置"的权限. 如果没有该权限, 会抛出SecurityException并跳转到权限设置界面.

device.setAlarmVolume(volume)

  • volume {number} 音量

设置当前闹钟音量.

此函数需要"修改系统设置"的权限. 如果没有该权限, 会抛出SecurityException并跳转到权限设置界面.

device.getBattery()

  • {number} 0.0~100.0的浮点数

返回当前电量百分比.

device.isCharging()

  • {boolean}

返回设备是否正在充电.

device.getTotalMem()

  • {number}

返回设备内存总量, 单位字节(B). 1MB = 1024 * 1024B.

device.getAvailMem()

  • {number}

返回设备当前可用的内存, 单位字节(B).

device.isScreenOn()

  • 返回 {boolean}

返回设备屏幕是否是亮着的. 如果屏幕亮着, 返回true; 否则返回false.

需要注意的是, 类似于vivo xplay系列的息屏时钟不属于"屏幕亮着"的情况, 虽然屏幕确实亮着但只能显示时钟而且不可交互, 此时isScreenOn()也会返回false.

device.wakeUp()

唤醒设备. 包括唤醒设备CPU、屏幕等. 可以用来点亮屏幕.

device.wakeUpIfNeeded()

如果屏幕没有点亮, 则唤醒设备.

device.keepScreenOn([timeout])

  • timeout {number} 屏幕保持常亮的时间, 单位毫秒. 如果不加此参数, 则一直保持屏幕常亮.

保持屏幕常亮.

此函数无法阻止用户使用锁屏键等正常关闭屏幕, 只能使得设备在无人操作的情况下保持屏幕常亮;同时, 如果此函数调用时屏幕没有点亮, 则会唤醒屏幕.

在某些设备上, 如果不加参数timeout, 只能在Auto.js的界面保持屏幕常亮, 在其他界面会自动失效, 这是因为设备的省电策略造成的. 因此, 建议使用比较长的时长来代替"一直保持屏幕常亮"的功能, 例如device.keepScreenOn(3600 * 1000).

可以使用device.cancelKeepingAwake()来取消屏幕常亮.

//一直保持屏幕常亮
device.keepScreenOn()

device.keepScreenDim([timeout])

  • timeout {number} 屏幕保持常亮的时间, 单位毫秒. 如果不加此参数, 则一直保持屏幕常亮.

保持屏幕常亮, 但允许屏幕变暗来节省电量. 此函数可以用于定时脚本唤醒屏幕操作, 不需要用户观看屏幕, 可以让屏幕变暗来节省电量.

此函数无法阻止用户使用锁屏键等正常关闭屏幕, 只能使得设备在无人操作的情况下保持屏幕常亮;同时, 如果此函数调用时屏幕没有点亮, 则会唤醒屏幕.

可以使用device.cancelKeepingAwake()来取消屏幕常亮.

device.cancelKeepingAwake()

取消设备保持唤醒状态. 用于取消device.keepScreenOn(), device.keepScreenDim()等函数设置的屏幕常亮.

device.vibrate(millis)

  • millis {number} 振动时间, 单位毫秒

使设备振动一段时间.

//振动两秒
device.vibrate(2000);

device.cancelVibration()

如果设备处于振动状态, 则取消振动.

AutoJs6 应用文档