Articles of 联网

networking设备发现

对于我的Android应用程序,用户需要连接到将在同一局域网上的某个地方托pipe的服务器。 可以有多台服务器托pipe在同一个LAN上。 为了方便用户,我打算扫描Android设备连接的当前局域网,然后列出所有运行服务器的networking设备,而不是让用户inputIP到计算机手动。 我对networking相当陌生,经过一番search,我发现我将不得不使用多播DNSsearch或UDP广播来检测其他设备。 我还发现了一个名为jmDNS的不错的库,虽然我已经find了很less的文档和示例代码。 难道有人指着我正确的方向,为了节省我浪费的时间(主要是如果我在正确的轨道上)? 我假设我将不得不修改我的服务器有点广播它在那里? 它完全按预期工作,如果我手动inputIP到我的应用程序的configuration页面。 另外,这只需要发现Windows电脑,不知道是否重要。 提前致谢。

如何确定Android的互联网连接?

如何确定Android设备可用的当前互联网连接types? 例如,有没有返回WiFi,3G,没有。

TrafficStats Api android和每日数据使用量的计算

对Android的TrafficStats的两个方法有一个困惑: getUidTxBytes(int uid)和getUidRxBytes(int uid) ,这两个方法返回通过networking传输和接收的这个UID的字节数。但是它的时间单位是多less,是每秒? 如果我想计算每个应用每天传输和接收的数据,我该怎么做。 我有一种方法,将数据存储在SQL中,并不断向数据表中添加数据,这是正确的方法。

Android:在一个服务中使用networking

在Android应用程序的Service类中调用REST WebService会创buildNetworkOnMainThreadException 。 我明白为什么在一个活动中引发这个exception:同步获取networking上的东西是一个非常糟糕的做法,但我很惊讶地发现在一个服务类相同的错误。 所以我的问题是: 在这个特定的情况下,我应该使用StrictMode.setThreadPolicy()来允许这个调用。 (对于那些阅读这个的人,因为他们在一个活动中遇到了这个错误,不要使用StrictMode来隐藏这个错误,使用AsyncTask) – 或者我应该使用一个AsyncTask? 在这种情况下,这里有什么问题? 线程上的服务不是与Activity的线程分开的吗?

Google Cloud Messaging无法在公司networking上的4.1.2设备上使用

我已经实现了一个简单的GCM客户端和服务器。 客户端使用当前的GCM客户端API (不是弃用的帮助程序库 )。 服务器(C#&.NET)遵循相应的服务器准则 (使用HTTP )。 我的服务器在公司域中的一台机器上运行,因此我将客户端设备连接到公司networking内的Wi-Fi接入点,但可以访问Internet。 简而言之,我的问题是在4.3以上的手机上收到的通知是正确的,但在连接到公司Wi-Finetworking时从未在4.1.2手机上收到通知 。 如果我将4.1.2设备连接到我们的公共访客Wi-Finetworking,则会按预期接收到GCM消息,但是应用程序无法连接到公司服务器。 我看到一些迹象表明,当企业networking具有过度保护的防火墙时(例如这里 ),GCM可能会失败。 但是,如果这只是一个防火墙问题,4.3+设备肯定不会收到任何消息? 一些额外的细节 我的testing手机如下: 华硕Nexus 7(4.4.2) 三星Galaxy S4(4.4.2) HTC One(4.3) 三星Galaxy S3(4.1.2) 摩托罗拉Razr HD(4.1.2) 服务器已经从所有五个设备收到有效的注册ID。 在一个15秒钟的计时器上,它发送一条消息给所有五个注册IDS。 响应总是显示5个消息被发送,没有错误并且没有改变的注册ID。 但是,它总是在上面列出的前三个设备上收到,而从来没有在最后两个设备上运行(运行4.1.2)。 当我debugging它们时,广播接收器根本不被调用。 我还validation了所有五个设备: 有Google Play服务4.3.25 没有SIM,因此没有蜂窝数据,并且在相同的WiFinetworking上 有正确的date和时间 已在同一个Gmailtesting帐户中注册 正在运行我的客户端应用程序的相同版本 为其Google帐户启用了所有同步设置

在Android上传和下载率剖析

我试图开发一个Android应用程序来测量我的networking的上传和下载速度,这可能需要运行和configuration文件,每2秒左右。 SpeedTest.net应用程序是一个理想的应用程序,但是,它不是开源的。 而且,我需要它每2秒运行一次。 完成testing需要几秒钟的时间。 我怎样才能做到这一点? 目前我只是下载一个在互联网上发现的小随机.txt文件,并测量size/time-to-download作为衡量下载速度。 但我每次都会得到奇怪的结果。 显然这种方法是行不通的。 更新:下载完成。 有关如何实现上传速度的任何build议?

Android Volley如何处理暂时丢失的networking连接?

如果Android Volley发布请求由于networking丢失而失败,那么Android Volley会在networking连接自动恢复后重试该post。 它会触发所有的请求尝试,等待连接重新build立或只是触发一个错误,并停止? 如果Android Volley在重新build立连接后不重试,似乎我将不得不创build逻辑,以便每当连接丢失时都有一个额外的队列,并且每当连接状态改变时都会重试。

Android:AndroidHttpClient – 如何设置超时?

我已经按照kuester2000的答案的指示,但我的超时设置似乎并没有工作。 try { int timeout = 3000; URL myURL = //some valid URL AndroidHttpClient = AndroidHttpClient.newInstance("name"); HttpGet httpGet = new HttpGet(myURL.toExternalForm()); HttpParams httpParams = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(httpParams, timeout); HttpConnectionParams.setSoTimeout(httpParams, timeout); HttpResponse response = httpClient.execute(httpGet); //… } catch (SocketTimeoutException e) { e.printStackTrace(); } catch (ConnectTimeoutException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } //… […]

如何以编程方式获得链接速度?

我正在从事应用程序,它几乎finnished免除只有一件事:我不知道如何获得链接速度,并将其置于状态栏。我是新来的Java,所以如果有人可以帮助我,我会非常感激。 PS抱歉,糟糕的英语。

无法成功地在adb usb和adb tcp模式之间切换

我有两个设备,从一个支持ADB通过USB和另一个支持ADB通过以太网(TCP),因为它没有WiFi我需要连接它使用以太网接入互联网。 每当我需要在两个设备之间切换,我需要重新启动电脑成功连接adb这是相当恼人的。 我试图切换之间的USB到TCP但失败,所以目前我的解决scheme是每次重新启动PC。 所以,在这里我正在寻找一个更好的解决scheme,这将节省我重新启动我的电脑之间切换USB到TCP或反之亦然模式。 现在,我所面临的问题是如何在USB与tcp之间切换 C:\Users\plalit>adb tcpip 5555 restarting in TCP mode port: 5555 C:\Users\plalit>adb connect 192.168.1.137 not implement C:\Users\plalit>adb connect 192.168.1.137 not implement 另外,我尝试添加端口号 C:\Users\plalit>adb connect 192.168.1.137:5555 not implement 正如你可以看到它说“不实现” ,如果我试图杀死亚行,并重新启动它,那么它给我一个消息如下 C:\Users\plalit>adb kill-server * server not running * 所以,我可以通过USB(一个设备)连接设备,但不能通过tcp连接另一台设备,因为我需要重新启动我的电脑。 我已经试过了, 重新开始eclipse 从任务pipe理器中杀死adb.exe(但没有adb.exe进程) 从eclipse DDMS重新启动adb 有没有人有这样的解决scheme或有任何人遇到这种问题,无论如何解决它。