我正在制作一个Android应用程序,需要向谷歌的计算器发送一个数学问题,如1 + 1,我需要得到显示在网络上的结果。我怎样才能在android上实现这个目标?
答案 0 :(得分:1)
一种可能性是为您要计算的等式创建一个URL,然后使用URLConnection打开URL并阅读网页源代码以找到等式的答案。
例如,如果您有等式:
<强> 2 + 2 强>
然后使用Google Chrome计算器计算结果的网址为: https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=2%2B2
您必须在要解决的等式的URL中构造正确的查询。在此URL中,最后的查询具有等式2 + 2:
q = 2%2B2 (其中%2B代表+号)
构建URL后,使用URLConnection打开它并读取源代码。等式的答案将在这个元素中:
<span class="cwcot" id="cwos">4</span>
因此,您可以解析源代码以查找特定的span元素并检索等式的结果。
这可能比你预期的更多,但它是我能想到的唯一解决方案来完成你的要求。此外,这种方法可能容易出错并且可能容易破裂。我会考虑使用不同的方法,例如启动在移动设备上使用计算器应用程序的意图(即使这种方法也存在问题)。
修改强>
这对我有用(它会输出:2 + 2 = 4):
public static void test() {
try {
String source = getUrlSource();
String span = "<span class=\"nobr\"><h2 class=\"r\" style=\"display:inline;font-size:138%\">";
int length = span.length();
int index = source.indexOf(span) + length;
String equation = source.substring(index, source.indexOf("<", index));
System.out.println( "equation: " + equation);
} catch (IOException e) {
e.printStackTrace();
}
}
private static String getUrlSource() throws IOException {
String url = "https://www.google.com/search";
String charset = "UTF-8";
String param1 = "2+2";
String query = String.format("?q=%s", URLEncoder.encode(param1, charset));
HttpsURLConnection urlConn = (HttpsURLConnection)new URL(url + query).openConnection();
urlConn.setRequestProperty("User-Agent", "Mozilla/5.0");
urlConn.setRequestProperty("Accept-Charset", charset);
BufferedReader in = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
String inputLine;
StringBuilder a = new StringBuilder();
while ((inputLine = in.readLine()) != null)
a.append(inputLine);
in.close();
return a.toString();
}