How to use the ARMT system SDK

Article Directory


foreword

Introduce the instructions for using the SDK under the ARMT platform


 1. Environmental introduction

  • Android

System version: Android 11
Android Studio Electric Eel | 2022.1.1

jdk-18.0.2

2. Equipment introduction

3. Use steps

1. Import library

Add the jar package in the dependencies of build.gradle


//ARMT SDK
implementation files('libs/armtsdkapi.jar')

2. Initialize the SDK

To initialize in Activity, you cannot call its method immediately after new DeviceManager(), because initialization takes time, it is recommended to open a thread to operate, otherwise it will freeze.

new Thread(new Runnable() {
    @Override
    public void run() {
        mDeviceManager = new DeviceManager(BaseActivity.this);
    }
}).start();
/**
 * new DeviceManager()后立即使用里面的函数没有效果,因为初始化需要时间.
 * 可以设置服务监听,当服务创建完成时会回调 ,或者延迟调用
 */
//mDeviceManager.setOnServiceConnectedListener(this);

3. API instructions

//全屏
mDeviceManager.forceFullScreen(true);

//获取屏幕背光亮度
mDeviceManager.getBrightness();

//设置屏幕背光亮度
mDeviceManager.setBrightness(b);

//获取屏幕状态, 开启/关闭
mDeviceManager.getDisplayStatus();

//设置屏幕状态
mDeviceManager.setDisplayStatus(true);

//显示导航栏
mDeviceManager.showNavigationBar();

//隐藏导航栏
mDeviceManager.removeNavigationBar();

//显示状态栏
mDeviceManager.showStatusBar();

//隐藏状态栏
mDeviceManager.removeStatusBar();

//声音输出设置   codec:默认,板上codec和喇叭输出  usb:外接usb声卡输出
mDeviceManager.setAudioOutput("codec");

//检测网络是否可用
mDeviceManager.isNetworkConnected();

//网络类型
mDeviceManager.getNetworkType();

//获取IP地址
mDeviceManager.getLocalIpAddress();

//以太网MAC地址
mDeviceManager.getEthernetMacAddress();

//WIFI MAC地址
mDeviceManager.getWifiMacAddress();

//读文件(system权限)  参数需根据需求修改
mDeviceManager.readFile("/sdcard/system/build.prop", 0, 100);

//写文件(system权限)  参数需根据需求修改
mDeviceManager.writeFile("/sdcard/system/build.prop", 0, new byte[0]);

//CPU名字
mDeviceManager.getCpuName();

//当前CPU温度
mDeviceManager.getCpuThermal();

//设备内存
mDeviceManager.getTotalMemory();

//可用内存
mDeviceManager.getMemoryAvail();

//设备名
mDeviceManager.getDeviceName();

//序列号
mDeviceManager.getDeviceSerial();

//内核版本
mDeviceManager.getKernelVersion();

//系统版本
mDeviceManager.getSystemVersion();

//android版本
mDeviceManager.getAndroidVersion();

//关闭系统
mDeviceManager.shutdown(true);

//重启系统
mDeviceManager.reboot(true, "测试重启!");

//系统休眠
mDeviceManager.goToSleep();

//系统唤醒
mDeviceManager.wakeUp();

//静默安装apk
mDeviceManager.installPackage(new File("").getAbsolutePath(), "包名");

//静默安装并重启
mDeviceManager.installPackageLaunch(new File("").getAbsolutePath(), "包名");

//卸载apk   packageName: 包名   keepdata:是否保持app数据
mDeviceManager.uninstallPackage(getPackageName(), false);

 4. Complete code and links

package com.armt.sdktest_armt;

import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

import com.armt.sdktest_armt.displays.PresentationActivity;
import com.armt.sdktest_armt.serialPort.SerialPortActivity;

import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import cn.com.armt.sdk.hardware.SerialPort;

public class MainActivity extends BaseActivity implements MyRecyclerAdapter.OnItemClickListener {

    private RecyclerView recyclerview;
    private MyRecyclerAdapter mAdapter;
    private List<ItemBean> list;

    private TextView tv_show;
    private Random mRandom;
    private boolean isFullScreen = true;
    private boolean displayStatus = true;
    private boolean naviBar = true;
    private boolean statusBar = true;
    private boolean isWakeUp = true;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //初始化Item
        list = initItem();
        tv_show = findViewById(R.id.tv_show);
        recyclerview = findViewById(R.id.recyclerview);
        recyclerview.setLayoutManager(new LinearLayoutManager(this));
        mAdapter = new MyRecyclerAdapter(list, this);
        recyclerview.setAdapter(mAdapter);

        mRandom = new Random();
    }

    /**
     * Item的点击事件
     *
     * @param parent   item View
     * @param position item位置
     */
    @Override
    public void onClick(View parent, int position) {
        tv_show.setText("");//置空
        ItemBean itemBean = list.get(position);
        if (itemBean.getClazz() != null) {
            //跳转到页面
            startActivity(new Intent(this, itemBean.getClazz()));
        } else {
            //当前页面处理
            switch (position) {
                case 0://全屏
                    isFullScreen = !isFullScreen;
                    tv_show.setText("全屏:" + isFullScreen);
                    mDeviceManager.forceFullScreen(isFullScreen);
                    break;
                case 1://获取屏幕背光亮度
                    tv_show.setText("屏幕背光亮度:" + mDeviceManager.getBrightness());
                    break;
                case 2://设置屏幕背光亮度
                    int b = mRandom.nextInt(255 - 1 + 1) + 1;
                    tv_show.setText("设置屏幕亮度值:" + b);
                    mDeviceManager.setBrightness(b);
                    break;
                case 3://获取屏幕状态
                    tv_show.setText("屏幕状态:" + (mDeviceManager.getDisplayStatus() ? "开启" : "关闭"));
                    break;
                case 4://设置屏幕状态
                    displayStatus = !displayStatus;
                    tv_show.setText("设置屏幕:" + displayStatus);
                    mDeviceManager.setDisplayStatus(displayStatus);
                    break;
                case 5://显示|隐藏导航栏
                    naviBar = !naviBar;
                    if (naviBar) {
                        mDeviceManager.showNavigationBar();
                        tv_show.setText("显示导航栏");
                    } else {
                        mDeviceManager.removeNavigationBar();
                        tv_show.setText("隐藏导航栏");
                    }
                    break;
                case 6://显示|隐藏状态栏
                    statusBar = !statusBar;
                    if (statusBar) {
                        mDeviceManager.showStatusBar();
                        tv_show.setText("显示状态栏");
                    } else {
                        mDeviceManager.removeStatusBar();
                        tv_show.setText("隐藏状态栏");
                    }
                    break;
                case 7://声音输出设置
                    //codec:默认,板上codec和喇叭输出  usb:外接usb声卡输出
                    mDeviceManager.setAudioOutput("codec");
                    break;
                case 8://检测网络是否可用
                    tv_show.setText("网络是否可用: " + (mDeviceManager.isNetworkConnected() ? "可用" : "不可用"));
                    break;
                case 9://网络类型
                    tv_show.setText("网络类型:" + mDeviceManager.getNetworkType());
                    break;
                case 10://获取IP地址
                    tv_show.setText("IP: " + mDeviceManager.getLocalIpAddress());
                    break;
                case 11://以太网MAC地址 &WIFI MAC地址
                    tv_show.setText("以太网MAC地址:" + mDeviceManager.getEthernetMacAddress()
                            + "\nWIFI MAC地址:" + mDeviceManager.getWifiMacAddress());
                    break;
                case 12://读文件(system权限)
                    mDeviceManager.readFile("/sdcard/system/build.prop", 0, 100);
                    break;
                case 13://写文件(system权限)
                    mDeviceManager.writeFile("/sdcard/system/build.prop", 0, new byte[100]);
                    break;
                case 14://CPU名字&当前温度
                    tv_show.setText("CPU名字:" + mDeviceManager.getCpuName() + " \nCPU温度:" + mDeviceManager.getCpuThermal());
                    break;
                case 15://设备内存/可用内存
                    tv_show.setText("设备内存/可用内存: " + mDeviceManager.getTotalMemory() + "/" + mDeviceManager.getMemoryAvail());
                    break;
                case 16://设备名&序列号
                    tv_show.setText("设备名:" + mDeviceManager.getDeviceName() + "\n序列号:" + mDeviceManager.getDeviceSerial());
                    break;
                case 17://内核版本
                    tv_show.setText("内核版本:" + mDeviceManager.getKernelVersion());
                    break;
                case 18://系统版本
                    tv_show.setText("系统版本:" + mDeviceManager.getSystemVersion());
                    break;
                case 19://android版本
                    tv_show.setText("android版本:" + mDeviceManager.getAndroidVersion());
                    break;
                case 20://关闭系统
                    mDeviceManager.shutdown(true);
                    break;
                case 21://重启系统
                    mDeviceManager.reboot(true, "测试重启!");
                    break;
                case 23://系统休眠/唤醒
                    isWakeUp = !isWakeUp;
                    if (isWakeUp) {
                        mDeviceManager.wakeUp();
                        tv_show.setText("已唤醒");
                    } else {
                        mDeviceManager.goToSleep();
                        tv_show.setText("已休眠");
                    }
                    break;
                case 24://静默安装apk
                    //静默安装
//                    mDeviceManager.installPackage(new File("").getAbsolutePath(), "包名");
                    //静默安装并重启
//                    mDeviceManager.installPackageLaunch(new File("").getAbsolutePath(), "包名");
                    break;
                case 25://卸载apk
                    //packageName: 包名   keepdata:是否保持app数据
                    mDeviceManager.uninstallPackage(getPackageName(), false);
                    break;
                default:
                    break;
            }
        }
    }

    private List<ItemBean> initItem() {
        List<ItemBean> list = new ArrayList<>();
        list.add(new ItemBean("全屏", null));
        list.add(new ItemBean("获取屏幕背光", null));
        list.add(new ItemBean("设置屏幕背光", null));
        list.add(new ItemBean("获取屏幕状态", null));
        list.add(new ItemBean("设置屏幕状态", null));
        list.add(new ItemBean("隐藏/显示导航栏", null));
        list.add(new ItemBean("隐藏/显示状态栏", null));
        list.add(new ItemBean("声音输出设置", null));
        list.add(new ItemBean("检测网络是否可用", null));
        list.add(new ItemBean("网络类型", null));
        list.add(new ItemBean("IP地址", null));
        list.add(new ItemBean("WIFI&以太网MAC地址", null));
        list.add(new ItemBean("读文件(system权限)", null));
        list.add(new ItemBean("写文件(system权限)", null));
        list.add(new ItemBean("CPU名字&当前温度", null));
        list.add(new ItemBean("设备内存/可用内存", null));
        list.add(new ItemBean("设备名&序列号", null));
        list.add(new ItemBean("内核版本", null));
        list.add(new ItemBean("系统版本", null));
        list.add(new ItemBean("android版本", null));
        list.add(new ItemBean("关闭系统", null));
        list.add(new ItemBean("重启系统", null));
        list.add(new ItemBean("定时开关机", TimerPowerOnOffActivity.class));//包含1.关闭定时开机/关机/重启 2.enableSchedulePower 3.getSchedulePower
        list.add(new ItemBean("系统休眠/唤醒", null));
        list.add(new ItemBean("静默安装apk", null));//24
        list.add(new ItemBean("卸载apk", null));//25
        list.add(new ItemBean("", null));
        list.add(new ItemBean("看门狗", WatchdogActivity.class));
        list.add(new ItemBean("", null));
        list.add(new ItemBean("副屏", PresentationActivity.class));
        list.add(new ItemBean("", null));
        list.add(new ItemBean("串口", SerialPortActivity.class));


        return list;
    }

}

Link:

full source code


Summarize

In APP development, you will encounter many scenarios of reading and controlling devices, and it is much more convenient to have the official API. There are many APIs in the armtsdkapi.jar package that can be called. This article introduces the most basic API usage methods

Guess you like

Origin blog.csdn.net/qaz96801/article/details/130431261