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 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 getServiceNameCandidates() { List 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 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 ? "设置成功" : "设置失败"; } }