autojs说啥画啥

部署运行你感兴趣的模型镜像

牙叔教程 简单易学

使用场景

你说个词, 我画个画, 目前就是显示一张图片,后期可以自己改成画画的方式来呈现图片

效果展示

在这里插入图片描述

流程图

在这里插入图片描述

autojs版本

8.7.7-0

get知识点

  1. 停止其他脚本
  2. 百度语音识别
  3. 百度通用物体和场景识别高级版
  4. 百度图像主体识别
  5. 爬取百度图片
  6. 编辑距离
  7. 录音
  8. canvas画图片
  9. 按钮触摸事件监听
  10. 申请录音权限, 以及获取申请结果
  11. canvas画图片时, 图片居中
  12. 图片回收
  13. 检查是否有录音权限
  14. python爬虫改为autojs
  15. java方式的post
  16. 音频播放和停止

代码讲解

1. 导入类
importClass(android.content.pm.PackageManager);
importClass("androidx.core.app.ActivityCompat");
importClass(android.media.MediaRecorder);
2. 停止其他脚本
engines.all().map((ScriptEngine) => {
  if (engines.myEngine().toString() !== ScriptEngine.toString()) {
    ScriptEngine.forceStop();
  }
});
3. 导入模块, 主要是百度智能云的api, 包括 语音识别, 通用物体和场景识别, 图片主体识别
let getVoiceText = require("./百度短语音识别");
let 爬取百度图片 = require("./爬取百度图片");
let 编辑距离 = require("./编辑距离");
let 图像识别 = require("./图像识别/图像识别");
4. 初始化文件路径
const voiceFilepath = "/sdcard/1.amr";
files.createWithDirs(voiceFilepath);
const soundFile = new java.io.File(voiceFilepath);
5. 布局, 主要是一个画板和一个录音按钮
ui.layout(
  <vertical gravity="center">
    <text textSize="36sp" w="*" gravity="center" textStyle="bold">
      说啥画啥
    </text>
    <text textSize="24sp" w="*" gravity="center" textStyle="bold">
      牙叔教程 简单易学
    </text>
    <canvas id="board" w="250dp" h="250dp"></canvas>
    <button id="btn" margin="6" textSize="26sp" w="*" h="100dp"></button>
    <horizontal weightSum="2" bg="#888888">
      <button id="play" layout_width="0dp" layout_weight="1" textSize="25sp">
        开始播放
      </button>
      <button id="stop" layout_width="0dp" layout_weight="1" textSize="25sp">
        停止播放
      </button>
    </horizontal>
  </vertical>
);
6. 延迟获取画板宽高
setTimeout(() => {
  bw = ui.board.getWidth();
  bh = ui.board.getHeight();
}, 100);
7. 画板的draw事件
ui.board.on("draw", function (canvas) {
  canvas.drawARGB(255, 127, 127, 127);
  let 最终选择的图片 = getBoardImg();
  if (最终选择的图片) {
    canvas.drawBitmap(最终选择的图片, (bw - iw) / 2, (bh - ih) / 2, paint);
  }
});
8. 音频播放和停止
ui.play.click(function () {
  media.playMusic(soundFile.getAbsolutePath());
});
ui.stop.click(function () {
  media.stopMusic();
});
9. 录音权限及录音按钮的touch监听
let r = checkPermission();
if (!r) {
  toastLog("请授予录音权限");
  ui.emitter.on("request_permission_result", function () {
    log(arguments);
  });
  let permissionName = "RECORD_AUDIO";
  requestPermission(permissionName);
} else {
  log("有录音权限");
  view.setOnTouchListener(function (view, event) {
    switch (event.getAction()) {
      case event.ACTION_DOWN:
        log("ACTION_DOWN");
        record();
        return true;
      case event.ACTION_UP:
        log("ACTION_UP");
        recognizeVoice();
        return true;
    }
    return true;
  });
}
10. 退出时不要忘记释放资源
events.on("exit", function () {
  if (recorder) {
    recorder.stop();
    recorder.release();
    recorder = null;
    media.stopMusic();
  }
});
11. 申请和检查权限
function getImgPathList(dir) {
  var arr = files.listDir(dir);
  arr = arr.map((item) => {
    return files.join(dir, item);
  });
  return arr;
}
12. 申请和检查权限
function requestPermission(permissionName) {
  ActivityCompat.requestPermissions(activity, ["android.permission." + permissionName], 321);
}
function checkPermission() {
  let permissionName = "RECORD_AUDIO";
  let pm = context
    .getPackageManager()
    .checkPermission("android.permission." + permissionName, context.getPackageName());
  if (PackageManager.PERMISSION_GRANTED == pm) {
    return true;
  } else {
    return false;
  }
}

完整源码


参考文章

声明

部分内容来自网络
本教程仅用于学习, 禁止用于其他用途

bilibili

牙叔教程

微信公众号 牙叔教程

在这里插入图片描述

QQ群

747748653
在这里插入图片描述

在这里插入图片描述

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牙叔教程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值