khadas_api_demo code and apk Download or:
Edge:
git clone https://github.com/goenjoy-hlm/khadas_api_demo -b edge
Vim3:
git clone https://github.com/goenjoy-hlm/khadas_api_demo -b vim3
1.su权限运行shell命令
函数:public String execSuCmd(String cmd)
参数:cmd: shell命令
返回:String 输入命令返回值
范例:
getKhadasApi.execSuCmd("cat /data/misc/wifi/WifiConfigStore.xml"); //WifiConfigStore.xml默认权限600
getKhadasApi.execSuCmd("screencap -p /sdcard/screenshot.png"); //screenshot
2.gpio控制
函数:public boolean gpioCrtl(String gpioStr, String direction, int level)
参数:gpioStr gpio描述符
direction in, out, high, low high/low
level 1/0
返回:为true设置成功
范例:
boolean success = getKhadasApi.gpioCtrl("GPIOAO_6","out",1);
3.gpio读值
函数:public int gpioRead(String gpioStr)
参数:gpio
返回:读取失败时返回-1
范例:
int gpioValue = getKhadasApi.gpioRead("GPIOAO_6");
4.i2c读函数
函数:public int i2c_read_byte_data(int bus, int addr, int reg)
参数:bus: 器件挂载的i2c总线 addr: 器件i2c地址 reg: 器件寄存器值
返回:返回读到的寄存器值
范例:
int Value = getKhadasApi().i2c_read_byte_data(4, 0x0e, 0x60);
5.i2c写函数
函数:public int i2c_write_byte_data(int bus, int addr, int reg, int value)
参数:bus: 器件挂载的i2c总线 addr: 器件i2c地址 reg: 器件寄存器值 value: 要设置的值
返回:-1: 失败 0: 成功
范例:
int propertiesValue = getKhadasApi().i2c_write_byte_data(4,0x0e, 0x60, 96);
6.保存系统log
函数:LogcatHelper.getInstance(mContext).start(String path_name)
参数:path_name 目录与文件名(没有对应目录要先建立)
描述:抓取Android层和kernel层的LOG并保存。通过自杀来退出抓LOG。
范例:
LogcatHelper.getInstance(mContext).start("/mnt/sdcard/123.log");
关闭log
android.os.Process.killProcess(android.os.Process.myPid());
7.系统关机
函数:public void shutdown()
范例:
getKhadasApi.shutdown();
8.系统重启
函数:public void reboot()
范例:
getKhadasApi.reboot();
9.系统休眠
函数:public void sleep()
范例:
getKhadasApi.sleep();
10.系统唤醒
函数:public void wakeup()
范例:
getKhadasApi.wakeup();
11.静默安装应用
函数:public boolean silentInstall(String apkPath)
参数:apkPath: apk路径
返回:为true安装成功
范例:
getKhadasApi.silentInstall("/sdcard/xxx.apk");
12.静默卸载应用
函数:public boolean silentUnInstall(String package_name)
参数:package_name: 为需要卸载应用的包名
返回:卸载成功返回true,卸载失败返回false
备注:只支持卸载安装的应用,不支持卸载内置应用
范例:
getKhadasApi.silentUnInstall("com.android.yyy");
13.设置LED模式
函数:public void setLedMode(int type, int mode)
参数:type: 选择哪个灯控制(0,white_led 1,red_led)
mode: 灯状态(0,heartbeat 1,on 2,off)
范例:
getKhadasApi.setLedMode(1,0);
14.获取LED状态
函数:public int getLedMode(int type)
参数:type: 哪个灯
返回:灯状态值
范例:
int mode = getKhadasApi.getLedMode(0);
15.设置风扇模式
函数:public void setFanMode(int mode)
参数:mode: 风扇状态(0,自动 1,一级 2,二级 3,三级 4,四级 5,五级 6,off)
范例:
getKhadasApi.setFanMode(2);
16.获取风扇状态
函数:public int getFanMode()
返回:风扇状态值
范例:
int mode = getKhadasApi.getFanMode();
17.设置Wol模式
函数:public void setWolMode(boolean mode)
参数:mode: Wol状态(0,on 1,off)
范例:
getKhadasApi.setWolMode(0);
18.获取Wol状态
函数:public boolean getWolMode()
返回:Wol状态值
范例:
boolean mode = getKhadasApi.getWolMode();
19.调节屏幕RGB
函数:public void setRgbColor(int mode)
参数:mode: 屏幕RGB颜色状态(0,off 1,标准 2,暧色 3,冷色)
范例:
getKhadasApi.setRgbColor(2);
20.获取屏幕RGB颜色模式
函数:public int getRgbColor()
返回:屏幕RGB颜色模式状态值
范例:
int mode = getKhadasApi.getRgbColor();
21.设置系统时间
函数:public boolean setTime(int year, int month, int day, int hour, int minute, int second)
返回:为true设置成功,为false设置失败
范例:
getKhadasApi.setTime(2020,11,13,15,33,06);
22.本地ota包升级
函数:public void installPackage(String path_name)
描述:将重启进行ota包升级,1,U盘:/udisk/update.zip 2,SD卡:/sdcard/update.zip 3,内部EMMC:/data/update.zip
参数:path_name ota包的绝对路径名
范例:
getKhadasApi.installPackage("/udisk/update.zip"); //U盘
getKhadasApi.installPackage("/sdcard/update.zip"); //SD卡
getKhadasApi.installPackage("/data/update.zip"); //内部EMMC
23.设置HDMI分辨率输出
函数:public void setResolution(String resolution)
参数:resolution: HDMI分辨率字符
范例:
getKhadasApi.setResolution("1080p60hz");
24.关闭或打开最佳分辨率输出
函数:public void switchBestResolution(boolean enable)
参数:enable: 0,off 1,on
范例:
getKhadasApi.switchBestResolution(true);
25.获取当前HDMI分辨率
函数:public String getCurrentResolution()
返回:返回当前HDMI显示的分辨率
范例:
String resolutionValue = getKhadasApi.getCurrentResolution();
26.获取当前HDMI支持的分辨率
函数:public String getValidResolution()
返回:返回当前HDMI支持的分辨率
范例:
String resolutionValue = getKhadasApi.getValidResolution();
27.设置属性整数值
函数:public void setSystemProperties_int(String name, int value)
参数:name: 属性名 value: 设置对应整数值
范例:
getKhadasApi.setSystemProperties_int("persist.sys.test1", 1);
28.获取属性整数值
函数:public int getSystemProperties_int(String name, int value)
参数:name: 属性名 value: 没有对应值默认返回此值
返回:返回属性字符值
范例:
int propertiesValue = getKhadasApi.getSystemProperties_int("persist.sys.test1",0);
29.设置属性字符值
函数:public void setSystemProperties(String name, String val)
参数:name: 属性名 val: 没有对应值默认返回此值
范例:
getKhadasApi.setSystemProperties("persist.sys.test2", "1");
30.获取属性字符值
函数:public String getSystemProperties(String name, String val)
返回:返回属性字符值
范例:
String propertiesval = getKhadasApi.getSystemProperties("persist.sys.test2", "UNKNOWN");
31.录屏幕
函数:public int screenrecord(String path_name, int seconds)
描述:此函数耗时,需要在线程下运行,请参考demo app
参数:path_name: 保存的绝对路径 seconds: 录像几秒
返回:-1: 失败 0: 成功
范例:
int ret = getKhadasApi().screenrecord("/sdcard/demo.mp4",6);
32.系统语言切换
函数:public void switchLanguage(String language, String country)
参数:language: 语言 country: 国家地区
描述:此函数需要系统权限,apk需要签名
1)导入 khadas_api.jks 文件
2)AndroidManifest.xml Import android:sharedUserId=“android.uid.system”
3)build.gradle 添加如下配置:
signingConfigs {
release {
storeFile file("khadas_api.jks")
storePassword 'khadas'
keyAlias 'platform'
keyPassword 'khadas'
}
debug {
storeFile file("khadas_api.jks")
storePassword 'khadas'
keyAlias 'platform'
keyPassword 'khadas'
}
}
范例:
getKhadasApi().switchLanguage("en","US");
33.串口使用
1)导入so库文件
libkhadas_serial_port_jni.so
2)导入头文件
import com.wesion.khadasapi.serialport.SerialPortConfig;
import com.wesion.khadasapi.serialport.SerialPortHelper;
import com.wesion.khadasapi.serialport.SphCmdEntity;
import com.wesion.khadasapi.serialport.SphResultCallback;
3)根据路径和波特率打开串口,并设置回调函数
private boolean openSerialPort(String path,int baudrate){
SerialPortConfig serialPortConfig = new SerialPortConfig();
serialPortConfig.mode = 0;
serialPortConfig.path = path;
serialPortConfig.baudRate = baudrate;
serialPortConfig.dataBits = 8;
serialPortConfig.parity = 'N';
serialPortConfig.stopBits = 1;
// 初始化串口
serialPortHelper = new SerialPortHelper(16);
// 设置串口参数
serialPortHelper.setConfigInfo(serialPortConfig);
// 开启串口
isOpen = serialPortHelper.openDevice();
if(!isOpen){
return false;
}
serialPortHelper.setSphResultCallback(new SphResultCallback() {
@Override
public void onSendData(SphCmdEntity sendCom) {
Log.d(TAG, "send command:" + sendCom.commandsHex);
}
@Override
public void onReceiveData(SphCmdEntity data) {
final String result = data.commandsHex;
Log.d(TAG, "onDataReceived:"+data.commandsHex);
if(data.commandsHex != null && data.commandsHex.trim().length() > 0)
mInfoView.post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
mInfoView.append(result);
}
});
}
@Override
public void onComplete() {
Log.d(TAG, "finish");
}
});
return true;
}
4)向串口发送字符串
String sendTxt = "123456789abcdef0";
serialPortHelper.addCommands(sendTxt);
5)关闭串口
serialPortHelper.closeDevice();