不使用hamibot的配置功能,如何为自己的代码写一个UI设置配置界面?有没有例子。

测试脚本 · 11 小时前
第 1 条补充
·
10 小时前

如何获取用户信息,例如用户唯一ID,使用的手机型号等

回答

Hamibot AI
1
· 11 小时前

要在Hamibot中不使用配置功能而自己编写UI设置配置界面,你可以使用UI模块直接构建自定义界面。以下是具体方法和示例:

在脚本最前面必须添加 'ui'; 指令来启用UI模式,然后使用ui.layout()构建界面。Hamibot的UI系统基于Android,你可以使用各种控件来创建设置界面。

下面是一个完整的自定义设置界面示例:

'ui'; // 必须在脚本最前面

// 文档地址 https://docs.hamibot.com/

// 初始化存储设置的对象
var settings = {
  username: "",
  theme: "light",
  notifications: true
};

// 从存储中加载已保存的设置
if (storages.contains('my_settings')) {
  settings = storages.get('my_settings');
}

ui.layout(
  <vertical padding="16">
    <text text="账户设置" textSize="18sp" textColor="#333" margin="0 16 0 8"/>
    <input id="username" hint="请输入用户名" text="{{settings.username}}" margin="0 0 0 16"/>
    
    <text text="主题选择" textSize="18sp" textColor="#333" margin="0 16 0 8"/>
    <radiogroup id="themeGroup" orientation="horizontal" margin="0 0 0 16">
      <radio text="浅色" checked="{{settings.theme === 'light'}}" value="light"/>
      <radio text="深色" checked="{{settings.theme === 'dark'}}" value="dark" margin="16 0 0 0"/>
    </radiogroup>
    
    <checkbox id="notifications" text="启用通知" checked="{{settings.notifications}}" margin="16 16 0 16"/>
    
    <button id="saveBtn" text="保存设置" margin="16 24 16 0" bg="#4CAF50" textColor="#FFF" textSize="16sp"/>
  </vertical>
);

// 保存按钮点击事件
ui.saveBtn.on("click", function() {
  // 获取当前界面值
  settings.username = ui.username.text();
  settings.theme = ui.themeGroup.checkedRadioButton().getValue();
  settings.notifications = ui.notifications.checked();
  
  // 保存到存储
  storages.put('my_settings', settings);
  
  toast("设置已保存");
  
  // 可以在这里添加应用设置的逻辑
  applySettings();
});

// 应用设置的函数
function applySettings() {
  // 这里可以添加应用设置的逻辑
  // 例如根据主题设置更改界面颜色等
  console.log("应用设置:", settings);
}

关键点说明:

  1. 必须在脚本开头添加 'ui'; 指令
  2. 使用storages对象来保存和读取用户设置
  3. UI布局使用XML语法描述,支持各种Android控件
  4. 通过ui.控件id访问界面元素
  5. 使用on("click", function() {...})添加事件处理

注意事项:

  • UI脚本不能包含任何在'ui';之前的代码
  • 避免使用JavaScript保留字作为变量名
  • 所有UI控件属性和方法都基于Android,可以参考Android官方文档
  • 如果需要更复杂的UI,可以组合使用各种布局和控件

这个例子展示了如何创建一个包含文本输入、单选按钮和复选框的设置界面,并实现设置的保存和应用功能。你可以根据实际需求扩展这个界面,添加更多设置选项。


补充回答 1

在Hamibot中,获取设备信息(即你所指的"用户信息")主要通过两种方式:API接口和脚本内设备对象。

通过API获取设备信息

你可以使用以下API获取设备列表或特定设备信息:

// 文档地址 https://docs.hamibot.com/
var res = http.request('https://api.hamibot.com/v1/devices', {
  method: 'GET',
  headers: {
    authorization: '你的令牌(hmp开头)',
  },
});
log(res.body.json());

响应示例:

{
  "count": 1,
  "items": [
    {
      "_id": "a51d237e9af41ecc021c9ff6",
      "online": true,
      "tags": ["tag1", "tag2"],
      "name": "零号机",
      "brand": "Xiaomi",
      "model": "MI 11"
    }
  ]
}
  • _id:设备唯一标识符(相当于设备ID)
  • brand:设备品牌(如Xiaomi)
  • model:设备型号(如MI 11)

要获取特定设备信息,使用:

var res = http.request('https://api.hamibot.com/v1/devices/设备_id', {
  method: 'GET',
  headers: {
    authorization: '你的令牌(hmp开头)',
  },
});

在脚本中直接获取设备信息

在运行中的脚本里,可以直接使用device对象获取设备信息:

// 文档地址 https://docs.hamibot.com/
log("设备品牌: " + device.brand);
log("设备型号: " + device.model);
log("Android ID: " + device.getAndroidId());
log("IMEI: " + device.getIMEI());
log("MAC地址: " + device.getMacAddress());

这些方法能获取到:

  • device.brand:设备品牌
  • device.model:设备型号
  • device.getAndroidId():Android ID(设备唯一标识)
  • device.getIMEI():IMEI号
  • device.getMacAddress():MAC地址

注意:getIMEI()getMacAddress()等方法需要相应权限,部分功能在非root设备上可能受限。设备的唯一标识主要使用API返回的_id或脚本中的device.getAndroidId()

ℹ️ 本回答由 AI 生成,内容仅供参考