谷歌计算器的结果为Android

时间:2014-06-06 01:13:38

标签: android google-chrome calculator

我正在制作一个Android应用程序,需要向谷歌的计算器发送一个数学问题,如1 + 1,我需要得到显示在网络上的结果。我怎样才能在android上实现这个目标?

1 个答案:

答案 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();
}