【工具介绍】
JAVA8
Android 手机
Adb 驱动
1.将手机点击到直播界面(在这里我们先打开一张图片);

2.用Adb工具获取当前手机截图,并用adb将截图pull上来
adb shell screencap -p /sdcard/1.png
adb pull /sdcard/1.png .
3.用tessOCR进行图像识别,提取文字;
4.将文字中的问题和答案提取出来;
adb pull /sdcard/1.png .
3.用tessOCR进行图像识别,提取文字;
4.将文字中的问题和答案提取出来;
问题+各个答案count(q&a);
问题 count(q);
答案 count(a);
6.计算匹配值pmi: pmi[i]=count(q&a[i])/(count(q)*count(a[i]))
7.选择pmi值最高的为答案。
【具体操作流程】
1.安卓手机打开USB调试,设置》开发者选项》USB调试
2.电脑与手机USB线连接,确保执行adb devices可以找到设备id
3.打开百万直播

PS:注意程序中的adb驱动目录要更换成自己的目录
我的屏幕是1920*1080,如果是别的分辨率,暂时需要修改一下代代码中的图片参数等。
<java>///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
import com.alibaba.fastjson.JSON;
import entity.cddh.CDEntity;
import entity.cddh.Data;
import entity.cddh.Event;
import exception.CorrectAnswerException;
import exception.NoBeginExcetpion;
import org.junit.jupiter.api.Test;
import utils.Utils;
import java.io.InputStream;
import java.util.Currency;
import java.util.HashMap;
import java.util.Map;
public class CDDHGetQuestion implements GetQuestion {
private static final String questionUrl = "http://htpmsg.jiecaojingxuan.com/msg/current";
private static String formatJson(String json){
return json.replace("\\","").replace("\"[","[").replace("]\"","]");
}
public static Information getQuestionInformation() throws NoBeginExcetpion, CorrectAnswerException {
return new Information(getQuestionStr());
}
public static String getQuestionStr() throws NoBeginExcetpion, CorrectAnswerException {
String qaStr ="";
String questioJson = formatJson(Utils.getResponseByGet(questionUrl));
// 测试方法 注释上面一行 打开 这两行的注释 可 利用本地json数据进行测试。
/* InputStream in = CDDHGetQuestion.class.getResourceAsStream("/json/question1.json");
String questioJson = formatJson(Utils.convertStreamToString(in));*/
CDEntity parse = JSON.parseObject(questioJson, CDEntity.class);
if("no data".equals(parse.getMsg())){
throw new NoBeginExcetpion();
}else if("showAnswer".equals(parse.getData().getEvent().getType())){
Event event = parse.getData().getEvent();
String str = event.getDesc()+"的答案为"+ (event.getCorrectOption()+1) +"."+event.getOptions()[event.getCorrectOption()];
throw new CorrectAnswerException(str);
}else if("成功".equals(parse.getMsg())){
Event event = parse.getData().getEvent();
String desc = event.getDesc().replace(".", "..");
qaStr += desc + "\n";
for(String opt:event.getOptions()){
qaStr += opt+"\n\n";
}
}
return qaStr.substring(0,qaStr.length()-2);
}
@Test
public void test(){
try {
CDDHGetQuestion.getQuestionStr();
} catch (NoBeginExcetpion noBeginExcetpion) {
noBeginExcetpion.printStackTrace();
} catch (CorrectAnswerException e) {
e.printStackTrace();
}
}
}
<java>///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////