获得Phonegap中的连接强度

时间:2014-06-27 21:25:48

标签: android cordova phonegap-plugins cordova-plugins

我正在开发一个phonegap应用程序。我想将数据从服务器同步到应用程序中,但它需要良好的连接强度。所以我需要找出连接的连接强度。

有许多互联网文档可以找到使用phonegap的连接类型,但我找不到任何关于连接强度的帮助

有没有办法在phonegap中找到连接强度,我不想使用任何原生平台代码,因为它会在很多平台上工作,所以有没有办法找出连接(2g, 3g,4g,wifi等......)在phonegap强度????

2 个答案:

答案 0 :(得分:3)

没有任何标准的方法在android中找到连接强度,所以我只是使用javascript代码来获得互联网连接的速度,任何平台android,ios或windows phone8等没有问题,没有必要为每个平台开发一个单独的插件。

我只是编写脚本:

    <script>
            var downloadSize = 244736;
            var imageAddr = "http://farm6.static.flickr.com/5035/5802797131_a729dac808_b.jpg" + "?n=" + Math.random();
            var startTime, endTime = 0;
            var download = new Image();

            download.onload = function () {
                endTime = (new Date()).getTime();
                showResults(startTime, endTime, imageAddr, downloadSize);
            }

            startTime = (new Date()).getTime();
            download.src = imageAddr;

        });

        function isConnected(){
            var xhr = new XMLHttpRequest();
            var file = "http://api.androidhive.info/music/images/adele.png";
            var r = Math.round(Math.random() * 10000);
            xhr.open('HEAD', file + "?subins=" + r, false);
            try {
                xhr.send();
                if (xhr.status >= 200 && xhr.status < 304) {
                    return true;
                } else {
                    return false;
                }
            } catch (e) {
                return false;
            }   
        }

        function showResults(startTime, endTime, imageAddr, downloadSize) {
            if(isConnected){
                var duration = (endTime - startTime) / 1000; //Math.round()
                var bitsLoaded = downloadSize * 8;
                var speedBps = (bitsLoaded / duration).toFixed(2);
                var speedKbps = (speedBps / 1024).toFixed(2);
                var finalSpeed = (speedKbps/10);

                if(finalSpeed < 40){
                   // Slow Internet

                } else if(finalSpeed >=40 && finalSpeed < 80){
                   // Avg Internet

                } else if(finalSpeed >= 80){
                  // Fast Internet
                }
            }else{
                //No intenet
            }    
        }
   </script>

答案 1 :(得分:1)

到目前为止,我知道您必须编写自定义插件并处理本机代码。到目前为止,没有任何直接的方法可以获得信号强度。