Articles of 网络

在Android中检测有限的网络连接?

有关如何在Android中检测网络连接的问题有很多。 https://stackoverflow.com/a/4239019/90236提供了非常详细的答案, https://stackoverflow.com/a/8548926/90236显示了识别连接到的网络types的方法。 我们使用类似于以下代码的代码检测网络连接: private boolean isNetworkAvailable() { ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); return activeNetworkInfo != null && activeNetworkInfo.isConnected(); } 这使我们可以警告用户是否处于脱机状态。 但是,它无法帮助我们确定用户是否具有有限的连接。 连接有限的条件导致用户抱怨。 这些包括: 用户连接到家庭wifi网络,但有线调制解调器或Internet服务不可用。 用户在酒店或咖啡店并成功连接到wifi网络,但网络要求他们在获得完全网络访问权限之前登录或同意服务条款。 在这两种情况下,我们的isNetworkAvailable()测试返回true。 操作系统告诉我们我们已连接到网络。 但是,用户没有可用的Internet连接。 有没有一种好方法可以确定用户是否具有完整function的网络连接? 我正在考虑调用轻量级Web服务来validation其连接,并在应用程序未从服务获得有效返回时警告用户。 这有点矫枉过正吗? 还是让别人不得不求助于类似的技巧?

测试互联网连接Android

希望我能做一个测试来validation互联网连接,我不想检查网络状态,因为它只检测我是否在我的设备上激活了互联网,y yo quiero revisar si es posible conectarse a internet。 像ping一样的东西。

Android HttpPost消息不会通过网络发送其有效负载

我正在尝试发送一个简单的字符串作为HttpPost消息的内容。 问题是,HttpPost消息的主体永远不会成为线路。 (说Wireshark捕获)。 标题看起来很好(包括正确计算的Content-Length。 这是代码的样子: String url = “http://1.2.3.4/resource”; HttpClient client = new DefaultHttpClient(); String cmd = “AT+AVLPOS\r\n”; StringEntity se = new StringEntity(cmd); se.setContentType(“text/plain”); HttpPost request = new HttpPost(url); request.setHeader(“Content-Type”,”text/plain”); request.setEntity(se); HttpResponse response = client.execute(request); […] 字符串应该是ASCII编码的,但这是一个细节。 这是WireShark中显示的内容: – >请注意,标有+的行是发送的内容,而 – 是收到的内容。 +POST /resource HTTP/1.1 +Content-Type: text/plain +Content-Length: 11 +Host: 1.2.3.4 +Connection: Keep-Alive +User-Agent: Apache-HttpClient/UNAVAILABLE […]

Android ICMP ping

有没有办法ping主机(标准Android或通过NDK实现),并获得有关响应的详细信息? (时间,ttl,丢失包等。)我在考虑一些具有此function的开源应用程序,但找不到任何… 谢谢

即使互联网不可用,Android networkinfo也会返回true

此代码始终返回true。 按下“登录”按钮时会调用此方法。 我首先尝试连接wifi(在模拟器上)。 它返回true然后我断开了wifi然后尝试了。 它仍然返回true。 public static boolean isNetworkAvailable( Context context) { ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = cm.getActiveNetworkInfo(); // if no network is available networkInfo will be null // otherwise check if we are connected if (networkInfo != null && networkInfo.isConnected()) { State network = networkInfo.getState(); Log.d(“here”, “true”); return (network == NetworkInfo.State.CONNECTED […]

如何从android上的网络运营商获取当前塔位置

我想当前得到塔位置地址,如诺基亚手机显示在主屏幕上的当前塔位置,如手机上显示的运营商名称和塔地址。我想在下面喜欢: SIM操作员姓名 当前塔楼地址 我想在android上离线获取这些细节! 任何人都可以帮助我非常感谢!

无法在同一网络上与Android设备进行ping /通信

我有一个运行CM10.1的nexus 7。 出于某种原因,我无法通过我的笔记本电脑在同一个wifi网络上访问它。 我不能在任何一个方向上ping。 在过去,我只能用一种方式ping。 刚尝试了我的股票HTC感觉并没有同样的问题。 此外,nexus和htc也无法相互接触。 我有其他Android设备的类似问题,在过去我正在开发一个应用程序,我无法建立从Android设备到我的电脑的套接字连接。 一旦我能够成功ping通笔记本电脑,我的设备一切正常。 这不是持久性的,在过去我摆弄他们最终谈论但当时没有一致的解决方案,我从来没有find根本原因。 我已经在2个不同的wifi网络上看到了这一点 不知道这里发生了什么我对网络的理解不是那么深刻。

知道哪些应用程序生成了请求,是否可以监控Android上的HTTP流量?

我被要求制作一个Android应用程序,其中包括必须监视设备上安装的一组应用程序的传入和传出HTTP流量。 我们的想法是必须生成一个日志: App:xxx请求的URL:来自服务器的yyy响应是:zzz等等 我不认为这是可能的,没有定制rom并在那里做一些巫术,但即使是定制rom我也想不到有办法做到这一点,任何人都有建议吗? 谢谢

使用Loaders进行网络请求是不好的做法吗?

我一直在阅读很多关于android的网络操作以及如何正确地进行操作。 文档建议使用Volley,它抽象了制作网络请求的过程: http://developer.android.com/training/volley/simple.html 当我在我的应用程序中使用Retrofit时,我认为最佳做法是使用Loaders,因为它们在方向更改方面表现良好,但我发现: http://www.androiddesignpatterns.com/2012/08/implementing-loaders.html “使用Loader执行网络请求并不是一种很好的做法,因为(1)这意味着您的应用程序将很难使用电池(每次启动Activity时都必须重复从网络轮询新数据,(2)如果不重复进行内容更改,就无法观察网络内容的变化,以及(3)您的应用程序无法脱机工作。“ (1)并不是特别真实,因为你可以在创建活动时恢复加载器。 我不认为我完全理解第(2)点和第(3)点对我来说不是一个问题,因为我的应用无法在线下正常工作。 然而,这再一次引起了我的注意。 “所以我的答案是忘记完全使用Loader / AsyncTask组合并坚持使用服务。服务可以每隔一段时间轮询网络数据并将新数据插入ContentProvider。然后你可以使用CursorLoader来从ContentProvider加载数据,而无需知道数据来自何处。“ 有没有人使用这种方法使用服务来轮询网络并填充ContentProvider? 我不认为它可以与我的应用程序一起正常工作,因为它使用经常请求的RESTful API。 我认为它不会特别有效,但我可能会在这里遗漏一些东西。 抱歉,这个问题很长。 这不是一个确切的问题,但我希望围绕这个主题进行讨论。

使用usb的相机到Android的外部网络摄像头

我想使用usb将外部网络摄像头连接到Android设备用于摄像头。是否有任何连接网络摄像头的可能性,而无需根植设备。请帮助或共享一些库或代码片段。