Java 如何获得ping值

Java 如何获得ping值,java,android,ping,Java,Android,Ping,我正在用Android做一个练习,我想显示ping的值。我遵循现有的答案。事实上,这个人给出的代码没有显示任何信息,我用它来测试函数ping的返回值。我这样调用函数: Toast.makeText(getApplicationContext(), ping("http://www.stackoverflow.com"), Toast.LENGTH_SHORT).show(); 是否有其他类型的代码可以简单地显示ping值 我知道我的代码没有任何其他过程,我只想最终在一个小的文本视图中显示这个结

我正在用Android做一个练习,我想显示ping的值。我遵循现有的答案。事实上,这个人给出的代码没有显示任何信息,我用它来测试函数ping的返回值。我这样调用函数:

Toast.makeText(getApplicationContext(), ping("http://www.stackoverflow.com"), Toast.LENGTH_SHORT).show();
是否有其他类型的代码可以简单地显示ping值

我知道我的代码没有任何其他过程,我只想最终在一个小的文本视图中显示这个结果

这是我的密码

MainActivity.java


发现我的错误:需要使用像8.8.4.4这样的IP地址,而不是像www.google.com这样的域地址。可能需要DNS权限?

请尝试以下操作:

在活动的公共类名称之后

一旦创建:

方法onCreate之后

如果有任何错误,请纠正我!
别忘了进口!etc导入android.widget.Toast

感谢您回答Sparrow_ua,但是如果ping结果没有显示在祝酒辞中,我对您代码的结果有很大的怀疑。您是否在清单中添加了Internet权限?没有,请问我应该添加什么具体权限?请检查此链接,感谢您在loob上共享此链接,但我的问题仍然存在。它是否在ADB日志中打印任何内容?哦,天哪!谢谢你回答Antonin,我很长时间以来一直专注于HTML/CSS,但我想我会回到Android上一段时间,我只是需要这个!:@Zeratops如果这对你有效,请检查答案。谢谢
private String ping(String url) {

    String str = "";

    try {
        Process process = Runtime.getRuntime().exec(
                "/system/bin/ping -c 8 " + url);
        BufferedReader reader = new BufferedReader(new InputStreamReader(
                process.getInputStream()));
        int i;
        char[] buffer = new char[4096];
        StringBuffer output = new StringBuffer();
        while ((i = reader.read(buffer)) > 0)
            output.append(buffer, 0, i);
        reader.close();

        // body.append(output.toString()+"\n");
        str = "ping : " + output.toString();
        // Log.d(TAG, str);
    } catch (IOException e) {
        // body.append("Error\n");
        e.printStackTrace();
    }

    return str;
}

private Button button;
private TextView textView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    textView = (TextView) findViewById(R.id.textView);
    button = (Button) findViewById(R.id.button);

    toggleButton.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            Toast.makeText(getApplicationContext(), ping("http://www.stackoverflow.com"), Toast.LENGTH_SHORT).show();
            });                     
    }); }
yourTextView.setText(ping("http://www.stackoverflow.com"));
// you need to define this value here, you will need it between "voids", "booleans", ...
long timeofping;
// button on click listener
Button clickMyButton = (Button)findViewById(R.id.button);
clickFirstButton.setOnClickListener(new View.OnClickListener() {
    @Override
        public void onClick(View v) {
            // launch the ping process in a separate thread
            // beacuse of the stability of the app
            new Thread(ping).start();
        }
});
// this code runs after the code bellow ("public Runnable ping ...")
void setPingResult(long pingtime) {
    Toast.makeText(getApplicationContext(), timeofping + " milliseconds", Toast.LENGTH_LONG).show();
}



// thread of "ping" process
public Runnable ping = new Runnable() {
        @Override
        public void run() {
            Runtime runtime = Runtime.getRuntime();
            try {
                long a = System.currentTimeMillis() % 1000;
                Process ipProcess = runtime.exec("/system/bin/ping -c 1 8.8.8.8");
                ipProcess.waitFor();
                timeofping = System.currentTimeMillis() % 1000 - a;
            } catch (IOException e)          { e.printStackTrace(); }
            catch (InterruptedException e) { e.printStackTrace(); }

            // update the ping result - we need to call this on the UI thread 
            // because it updates UI elements (TextView)
            runOnUiThread(new Runnable() {
            public void run() {
                setPingResult(timeofping);
            }
        });

    }
}