Android 设置中增加 OTG 开关以方便调试

Android 设置中增加 OTG 开关以方便调试

在开发工作中我们经常可能需要用到USB调试,然而有些设备默认是在host模式,我们知道host之间是不能互联的,所以如果这时我们想要使用USB调试的话,需要将设备进行host与devices模式之间的切换,将模式由host切到devices,所以这时候如果我们有一个可以控制两种模式切换的 OTG 按钮开关的话,那将会对我们的调试工作十分方便,控制设备host与devices模式之间转换的具体功能代码参考如下:

复制代码
package com.android.settings.accessibility;

import android.content.Context;
import android.provider.Settings;
import android.view.KeyCharacterMap;
import android.view.KeyEvent;
import android.util.Log;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.FileNotFoundException;
import java.io.IOException;

import com.android.settings.Utils;
import com.android.settings.core.TogglePreferenceController;

public class UsbOrOtgPreferenceController extends TogglePreferenceController {
    private final String TAG = "UsbOrOtgPreferenceController";
    private String ON = "1"; // 1
    private String OFF = "0"; // 0
    private static final String GPIO_PATH ="devices_host_ctrl_path";

    public UsbOrOtgPreferenceController(Context context, String preferenceKey) {
        super(context, preferenceKey);
    }

    @Override
    public boolean isChecked() {
        return ON.equals(readFile(GPIO_PATH));
    }

    @Override
    public boolean setChecked(boolean isChecked) {

        if (isChecked) {
            writeFile(ON,GPIO_PATH);
        } else {
            writeFile(OFF,GPIO_PATH);
        }
        return true;
    }

    @Override
    public int getAvailabilityStatus() {
        return AVAILABLE;
    }

    private void writeFile(String commod,String Path) {
        BufferedWriter bufWriter;
        try {
            bufWriter = new BufferedWriter(new FileWriter(Path));
            bufWriter.write(commod);
            bufWriter.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static String readFile(String Path) {
        String result = "0";
	BufferedReader bufReader;
        try {
            bufReader = new BufferedReader(new FileReader(Path));
            String text = bufReader.readLine();
            result = text.trim();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return result;
    }
}

重新编译验证,功能生效

相关推荐
亓才孓1 分钟前
[JDBC]元数据
android
独行soc13 分钟前
2026年渗透测试面试题总结-17(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
金融RPA机器人丨实在智能21 分钟前
Android Studio开发App项目进入AI深水区:实在智能Agent引领无代码交互革命
android·人工智能·ai·android studio
科技块儿22 分钟前
利用IP查询在智慧城市交通信号系统中的应用探索
android·tcp/ip·智慧城市
独行soc1 小时前
2026年渗透测试面试题总结-18(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
王码码20351 小时前
Flutter for OpenHarmony 实战之基础组件:第二十七篇 BottomSheet — 动态底部弹窗与底部栏菜单
android·flutter·harmonyos
2501_915106321 小时前
app 上架过程,安装包准备、证书与描述文件管理、安装测试、上传
android·ios·小程序·https·uni-app·iphone·webview
vistaup2 小时前
OKHTTP 默认构建包含 android 4.4 的TLS 1.2 以及设备时间不对兼容
android·okhttp
常利兵2 小时前
ButterKnife在Android 35 + Gradle 8.+环境下的适配困境与现代化迁移指南
android
撩得Android一次心动2 小时前
Android LiveData 全面解析:使用Java构建响应式UI【源码篇】
android·java·android jetpack·livedata