Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何计算wifi连接持续时间。。。?_Android - Fatal编程技术网

Android 如何计算wifi连接持续时间。。。?

Android 如何计算wifi连接持续时间。。。?,android,Android,我正在创建一个应用程序,我想在其中计算wifi连接持续时间…为此,我使用广播接收器获取连接和断开连接状态………但我没有得到结果 ConnectivityManager conman = (ConnectivityManager) getActivity().getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo info = conman.getNetworkInfo(ConnectivityManager.

我正在创建一个应用程序,我想在其中计算wifi连接持续时间…为此,我使用广播接收器获取连接和断开连接状态………但我没有得到结果

ConnectivityManager conman = (ConnectivityManager) getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo info = conman.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
            State state = info.getState();          

            SharedPreferences prefs = getActivity().getPreferences(0);
            Editor edit = prefs.edit();           

            if(state == NetworkInfo.State.CONNECTED)
            {   

                int hour,minute,sec;
                Time now  = new Time();
                now.setToNow();

                hour = now.hour;
                minute = now.minute;
                sec = now.second;

                String conTime = hour+":"+minute+":"+sec;

                edit.putString("conTime", conTime);
                edit.commit();
                connTime.setText(conTime);
            }
            else if(state == NetworkInfo.State.DISCONNECTED )
            {   
                int hourd,mind,secd;

                Time nowd = new Time();
                nowd.setToNow();

                hourd = nowd.hour;
                mind = nowd.minute;
                secd = nowd.second;

                String dconTime = hourd+":"+mind+":"+secd;
                edit.putString("dconTime", dconTime);
                edit.commit();
                disconnTime.setText(dconTime);

            }

为此,我在我的应用程序中使用了两个文本视图,第一个显示wifi连接的时间,第二个显示断开连接的时间……但每次应用程序启动时,它都显示断开连接的时间……但我不希望这两个文本视图保持空白。。。。在我打开/关闭wifi之前…我该怎么做…

您可以通过检索已连接的系统时间来实现这一点,当其断开连接时,您可以获得该时间实例,减去它将获得总时间,该时间可用于获取日历实例,您可以从中轻松获得小时/分/秒。

//长总持续时间=断开连接的时间-连接的时间


是否有任何理由将开始和结束时间放在首选项中?我想你只对应用程序启动时的信息感兴趣。我正在使用首选项存储wifi断开连接后的计算时间……我的应用程序中有一个按钮,用于打开和关闭wifi……每次都显示文本视图……这是唯一调用
setText()的代码吗
在您的文本视图中?是的,这是唯一的代码…我有另一个文本视图来显示连接后的计算时间和断开连接的时间………感谢您的回复…但使用上述方法,我总是在应用程序启动时断开连接…因为它在应用程序启动时处于断开连接状态,但我不希望应用程序启动时出现断开连接的时间…我怎么做…?它将显示wifi的正常运行时间,您可以用时间替换它(如果您有这样的要求),要显示当前时间,您只需要设置两个不同的对象,这样就不会造成冲突。您的wifi是否打开?当你启动应用程序时?不…我启动应用程序时关闭了wifi,但它仍然显示断开连接的时间…如果你在关闭wifi的情况下启动应用程序,那么很明显,它会显示断开连接的时间,它自己转到“else-if”语句的代码,因为它从android系统获取wifi断开连接事件。
if(state == NetworkInfo.State.CONNECTED){
    long connectedTime = System.currentTimeMillis();
    Calendar cal = Calendar.getInstance();
    cal.setTimeInMillis(connectedTime);
    yourTextView.setText(cal.get(Calendar.HOUR_OF_DAY) + " hours, "+ cal.get(Calendar.MINUTE) + " minutes, "+ cal.get(Calendar.SECOND) + " seconds ");

}
else if(state == NetworkInfo.State.DISCONNECTED ){
    long disconnectedTime = System.currentTimeMillis();
    Calendar cal = Calendar.getInstance();
    cal.setTimeInMillis(disconnectedTime);
    yourTextView.setText(cal.get(Calendar.HOUR_OF_DAY) + " hours, "+ cal.get(Calendar.MINUTE) + " minutes, "+ cal.get(Calendar.SECOND) + " seconds ");
}