KhadasApi 接口使用说明

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();