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;
  }
}


参考文章



声明


部分内容来自网络

本教程仅用于学习, 禁止用于其他用途


相关文章
|
4月前
|
API
AutoJs4.1.0开发心得
AutoJs4.1.0开发心得
30 0
|
4月前
AutoJs4.1.0 部局范围次分析
AutoJs4.1.0 部局范围次分析
23 0
|
XML Android开发 数据格式
autojs一键锁屏
牙叔教程 简单易懂
429 0
|
人工智能 前端开发 Java
autojs非常见函数1
牙叔教程 简单易懂
1535 0
|
Java Android开发
autojs非常见函数2
autojs非常见函数2
881 0
|
Android开发
autojs最近任务多界面
牙叔教程 简单易懂
551 0
|
4月前
|
缓存 Python
最后一次AutoJs超神级代码分享
最后一次AutoJs超神级代码分享
41 0
|
Android开发
autojs提词器
拍短视频 ● 忘词 ● 记不住台词 有了提词器, 就再也不怕忘词儿了
281 0
|
测试技术 Android开发
autojs色卡
牙叔教程 简单易
163 0
|
安全 JavaScript 网络安全
autojs起手式
牙叔教程 简单易懂
262 0