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;
    }
}

重新编译验证,功能生效

相关推荐
2501_944525541 小时前
Flutter for OpenHarmony 个人理财管理App实战 - 支出分析页面
android·开发语言·前端·javascript·flutter
松☆3 小时前
Dart 核心语法精讲:从空安全到流程控制(3)
android·java·开发语言
_李小白4 小时前
【Android 美颜相机】第二十三天:GPUImageDarkenBlendFilter(变暗混合滤镜)
android·数码相机
小天源7 小时前
银河麒麟 V10(x86_64)离线安装 MySQL 8.0
android·mysql·adb·麒麟v10
2501_915921437 小时前
傻瓜式 HTTPS 抓包,简单抓取iOS设备数据
android·网络协议·ios·小程序·https·uni-app·iphone
csj508 小时前
安卓基础之《(20)—高级控件(2)列表类视图》
android
JMchen1238 小时前
Android计算摄影实战:多帧合成、HDR+与夜景算法深度剖析
android·经验分享·数码相机·算法·移动开发·android-studio
恋猫de小郭10 小时前
Flutter 在 Android 出现随机字体裁剪?其实是图层合并时的边界计算问题
android·flutter·ios
2501_9159184110 小时前
把 iOS 性能监控融入日常开发与测试流程的做法
android·ios·小程序·https·uni-app·iphone·webview
benjiangliu11 小时前
LINUX系统-09-程序地址空间
android·java·linux