1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 小米拨号键键谱曲

小米拨号键键谱曲

时间:2023-04-13 10:17:43

相关推荐

小米拨号键键谱曲

以前在B站看过一个UP主用小米拨号键弹奏千本樱,不过我没有那种音乐天赋,就想了一下使用脚本帮忙

开干!!!

实际还是非常简单的,不要半个小时就完成了,主要是通过B站评论获取曲谱,再通过代码自动生成脚本,使用AutoJS执行。

另外想说,AutoJS的布局分析真是神器,安卓开发没有思路也可以使用它看一下其他应用的布局

public static void main(String[] args) {int space=100;//普通 间隔int enter=500;//回车间隔String path="E:\\IDEA\\MyNewTest2\\src\\main\\resources\\test.txt";//B站评论的乐谱文件String code=buildCode(path,space,enter);setClip(code);System.out.println(code);// pattern=pile("\\((.+?)\\)\\((.+?)\\)");// buildLine(null,"6656787(676)(5)",12);}//复制到剪切板private static void setClip(String code) {Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();clipboard.setContents(new StringSelection(code),null);}//构建脚本代码@SneakyThrowsprivate static String buildCode(String path, int space, int enter) {initMap();pattern=pile("\\((.+?)\\)\\((.+?)\\)");List<String> list = Files.readAllLines(Paths.get(path));StringBuilder builder=new StringBuilder();buildStart(builder);for (String line:list){buildSleep(builder,enter);buildLine(builder,line,space);}return builder.toString();}//构建开始private static void buildStart(StringBuilder builder) {builder.append("let btns=id(\"dialpad_keys_container\").findOne().children();\n");builder.append("let rect=null\n");}//初始化按键映射private static void initMap() {map=new HashMap<>();char[] array = "123456789*0#".toCharArray();for (int i = 0; i < array.length; i++) {map.put(array[i],i);}}private static Map<Character,Integer> map;private static Pattern pattern;// 翻译一行// 支持 ()表示重复 必须同一行 紧接着次数 例如 (676)(5) 重复 676 5次private static void buildLine(StringBuilder builder, String line, int space) {Matcher matcher = pattern.matcher(line);int start=0;int end;while (matcher.find()){end = matcher.start();for (int i = start; i < end; i++) {buildChar(builder,line.charAt(i),space);}int count=Integer.parseInt(matcher.group(2));String group = matcher.group(1);for (int i = 0; i < count; i++) {for (int j = 0; j < group.length(); j++) {buildChar(builder,group.charAt(j),space);}}start = matcher.end();}for (int i = start; i < line.length(); i++) {buildChar(builder,line.charAt(i),space);}}//翻译单个字符private static void buildChar(StringBuilder builder, char key, int space) {if(map.containsKey(key)){builder.append("rect=btns[").append(map.get(key)).append("].bounds();\n");builder.append("click(rect.centerX(),rect.centerY());\n");}buildSleep(builder,space);}//睡眠防止过快private static void buildSleep(StringBuilder builder, int enter) {builder.append("sleep(").append(enter).append(");\n");}

实例乐谱文件(极乐净土)

356565685633565656*89635656568563512386*9*98966666789666556666678966600*66667896665566666789#55666655653353665678767656655653353556 556 5689633556*9666*99989865665633556*9666*99989865665635666**88989*6556**98656689666656*8989**56856*9876566666789666556666678966600*66667896665566666789#5566

执行完毕会自动复制到剪切板,可以直接粘到VSCode上

最后使用F5运行或发送到手机运行OK。

最后想说AutoJS真是个好用的手机脚本工具建议学习安卓的都去了解一下,不学习安卓的也可以了解一下用于手机自动化。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。