安卓自动化

Auto.JS简介

  Auto.JS是Android平台上的JavaScript自动化工具。它的本质是可执行自己编写的简易Javascript脚本的,尤其可以在开启“无障碍模式”的情况下对其他App进行一些操作的一个Android App,便于进行自动化操作。

项目实现

  通过代码,最大程度的简化安卓主板IO的控制逻辑,根据产品测试需求所开发商显安卓主板intent.setAction广播APP,shell脚本APP,进行安卓主板外设的通讯,用于产线功能调测,降低产线的测试难度。

具体步骤

  使用之前,我们先导入需要用到的安卓的class,以及注册广播。

 1importClass(android.content.IntentFilter);
 2
 3let intent = new Intent();
 4let filter = new IntentFilter();
 5filter.addAction(Intent.ACTION_BATTERY_CHANGED);
 6filter.addAction("android.intent.action.Dustin");
 7filter.addAction("com.fise.system.reboot");
 8filter.addAction("echo 1 > /sys/class/fise_gpio5/level");
 9filter.addAction("echo 0 > /sys/class/fise_gpio5/level");
10filter.addAction("echo 1 > /sys/class/fise_gpio6/level");
11filter.addAction("echo 0 > /sys/class/fise_gpio6/level");
12filter.addAction("echo 1 > /sys/class/fise_gpio7/level");
13filter.addAction("echo 0 > /sys/class/fise_gpio7/level");
14filter.addAction(Intent.ACTION_SCREEN_ON);

  以 安卓广播 为例:

1var action = "echo 0 > /sys/class/fise_gpio6/level";
2            app.sendBroadcast({
3                action: action,
4                extras: {
5                    author: "Dustin",
6                },
7            });

  以 安卓shell 为例:

1var result = shell("echo 0 > /sys/class/fise_gpio5/level", false);
2            toast(result);

  UI人机交互部分:

 1ui.layout(
 2    <vertical>
 3        <card padding="10" w="*" h="auto" margin="5 5 5 5" cardCornerRadius="20dp" cardBackgroundColor="#72ffffff" cardElevation="1dp" alpha="0.8" cardCornerRadius="30dp">
 4            <horizontal margin="20 10 20 5" gravity="center" >
 5                <button id="open" text="打开广播" layout_weight="1" style="Widget.AppCompat.Button.Colored" />;
 6                <button id="cq" text="重启" layout_weight="1" style="Widget.AppCompat.Button.Colored" />;
 7                <button id="close" text="关闭广播" layout_weight="1" style="Widget.AppCompat.Button.Colored" />;
 8            </horizontal>
 9        </card>
10        <card padding="10" w="*" h="auto" margin="5 5 5 5" cardCornerRadius="20dp" cardBackgroundColor="#72ffffff" cardElevation="1dp" alpha="0.8" cardCornerRadius="30dp">
11            <horizontal margin="20 10 20 5" gravity="center" >
12                <text text="选择电平:" textColor="black" w="auto" />
13                <spinner id="选择电平7" textStyle="bold" entries="高电平|低电平" spinnerMode="dialog" />
14                <button id="设置GPIO7" text="设置GPIO7" layout_weight="1" style="Widget.AppCompat.Button.Colored" />;
15            </horizontal>
16        </card>
17        <card padding="10" w="*" h="auto" margin="5 5 5 5" cardCornerRadius="20dp" cardBackgroundColor="#72ffffff" cardElevation="1dp" alpha="0.8" cardCornerRadius="30dp">
18            <horizontal margin="20 10 20 5" gravity="center" >
19                <text text="选择电平:" textColor="black" w="auto" />
20                <spinner id="选择电平8" textStyle="bold" entries="高电平|低电平" spinnerMode="dialog" />
21                <button id="设置GPIO8" text="设置GPIO8" layout_weight="1" style="Widget.AppCompat.Button.Colored" />;
22            </horizontal>
23        </card>
24        <card padding="10" w="*" h="auto" margin="5 5 5 5" cardCornerRadius="20dp" cardBackgroundColor="#72ffffff" cardElevation="1dp" alpha="0.8" cardCornerRadius="30dp">
25            <horizontal margin="20 10 20 5" gravity="center" >
26                <text text="选择电平:" textColor="black" w="auto" />
27                <spinner id="选择电平9" textStyle="bold" entries="高电平|低电平" spinnerMode="dialog" />
28                <button id="设置GPIO9" text="设置GPIO9" layout_weight="1" style="Widget.AppCompat.Button.Colored" />;
29            </horizontal>
30        </card>
31    </vertical>
32);

  UI点击事件:

 1ui.设置GPIO9.on("click", () => {
 2    var i = ui.选择电平9.getSelectedItemPosition();
 3    switch (i) {
 4        case 0:
 5            toast("您选择的高电平!");
 6            var action = "echo 1 > /sys/class/fise_gpio7/level";
 7            app.sendBroadcast({
 8                action: action,
 9                extras: {
10                    author: "yashu",
11                },
12            });
13            var result = shell("echo 1 > /sys/class/fise_gpio7/level", false);
14            toast(result);
15            break;
16        case 1:
17            var action = "echo 0 > /sys/class/fise_gpio7/level";
18            app.sendBroadcast({
19                action: action,
20                extras: {
21                    author: "yashu",
22                },
23            });
24            var result = shell("echo 0 > /sys/class/fise_gpio7/level", false);
25            toast(result);
26            toast("您选择的低电平!");
27            break;
28    }
29});

  本文完整源码已上传本人gitee,点击查看

版权