package com.nodka.zysjtest;
|
|
import android.app.ZysjSystemManager;
|
import android.content.Context;
|
|
import java.lang.reflect.Field;
|
import java.util.ArrayList;
|
import java.util.Arrays;
|
import java.util.List;
|
|
public class HotspotActivity extends BaseTestActivity {
|
private static final String SERVICE_NOT_FOUND_MESSAGE = "未获取到 ZysjSystemManager 系统服务";
|
|
private ZysjSystemManager zysjSystemManager;
|
|
@Override
|
protected String getPageTitle() {
|
return "热点控制接口测试";
|
}
|
|
@Override
|
protected List<TestItem> getTestItems() {
|
return Arrays.asList(
|
new TestItem(
|
"设置热点名称",
|
"setWiFiSsid",
|
"ssid:热点名称,建议长度不要大于 32 位。",
|
this::setWiFiSsid,
|
TestItem.InputField.text(
|
"请输入热点名称",
|
"ZYSJ_AP",
|
"ssid")),
|
new TestItem(
|
"设置热点密码",
|
"setWiFiPassword",
|
"password:热点密码,长度需要大于 8 位。",
|
this::setWiFiPassword,
|
TestItem.InputField.text(
|
"请输入热点密码",
|
"12345678",
|
"password")),
|
new TestItem(
|
"控制热点开关",
|
"setWiFiApSW",
|
"enabled:true 表示打开,false 表示关闭。",
|
true,
|
"enabled",
|
true,
|
this::setWiFiApSW),
|
new TestItem(
|
"获取热点开关状态",
|
"getWiFiApSW",
|
"获取当前热点开关状态,无参数。",
|
this::getWiFiApSW)
|
);
|
}
|
|
private ZysjSystemManager zysjSystemManager() {
|
if (zysjSystemManager != null) {
|
return zysjSystemManager;
|
}
|
|
for (String serviceName : getServiceNameCandidates()) {
|
Object service = getSystemService(serviceName);
|
if (service instanceof ZysjSystemManager) {
|
zysjSystemManager = (ZysjSystemManager) service;
|
return zysjSystemManager;
|
}
|
}
|
|
throw new IllegalStateException(SERVICE_NOT_FOUND_MESSAGE);
|
}
|
|
private List<String> getServiceNameCandidates() {
|
List<String> candidates = new ArrayList<>();
|
addContextFieldCandidate(candidates, "ZYSJ_SYSTEM_SERVICE");
|
addContextFieldCandidate(candidates, "ZYSJ_SERVICE");
|
candidates.add("zysj_system");
|
candidates.add("zysj");
|
candidates.add("zysj_system_service");
|
return candidates;
|
}
|
|
private void addContextFieldCandidate(List<String> candidates, String fieldName) {
|
try {
|
Field field = Context.class.getField(fieldName);
|
Object value = field.get(null);
|
if (value instanceof String && !candidates.contains(value)) {
|
candidates.add((String) value);
|
}
|
} catch (NoSuchFieldException ignored) {
|
} catch (IllegalAccessException e) {
|
throw new IllegalStateException("读取 Context." + fieldName + " 失败", e);
|
}
|
}
|
|
private String setWiFiSsid(TestItem item, String[] inputs) {
|
String ssid = requireInput(inputs, 0, "ssid");
|
boolean result = zysjSystemManager().setWiFiSsid(ssid);
|
return "调用成功:setWiFiSsid(" + ssid + ") 返回值:" + result + "," + formatBooleanResult(result);
|
}
|
|
private String setWiFiPassword(TestItem item, String[] inputs) {
|
String password = requireInput(inputs, 0, "password");
|
boolean result = zysjSystemManager().setWiFiPassword(password);
|
return "调用成功:setWiFiPassword(" + password + ") 返回值:" + result + "," + formatBooleanResult(result);
|
}
|
|
private String setWiFiApSW(TestItem item, String[] inputs) {
|
zysjSystemManager().setWiFiApSW(item.switchChecked);
|
return "调用完成:setWiFiApSW(" + item.switchChecked + ") 返回值:void,设置完成";
|
}
|
|
private String getWiFiApSW(TestItem item, String[] inputs) {
|
boolean result = zysjSystemManager().getWiFiApSW();
|
return "调用成功:getWiFiApSW() 返回值:" + result + ",热点" + (result ? "开启" : "关闭");
|
}
|
|
private String requireInput(String[] inputs, int index, String fieldName) {
|
if (index >= inputs.length || inputs[index] == null || inputs[index].trim().isEmpty()) {
|
throw new IllegalArgumentException(fieldName + " 不能为空");
|
}
|
return inputs[index].trim();
|
}
|
|
private String formatBooleanResult(boolean result) {
|
return result ? "设置成功" : "设置失败";
|
}
|
}
|