public static HttpURLConnection openUrl(Context context, String urlStr) {
URL urlURL = null;
HttpURLConnection httpConn = null;
try {
urlURL = new URL(urlStr);
// 需要android.permission.ACCESS_NETWORK_STATE
// 在没有网络的情况下,返回值为null。
NetworkInfo networkInfo = ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE))
.getActiveNetworkInfo();
// 如果是使用的运营商网络
if (networkInfo != null) {
if (networkInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
// 获取默认代理主机ip
String host = android.net.Proxy.getDefaultHost();
// 获取端口
int port = android.net.Proxy.getDefaultPort();
if (host != null && port != -1) {
// 封装代理連接主机IP与端口号。
InetSocketAddress inetAddress = new InetSocketAddress(host, port);
// 根据URL链接获取代理类型,本链接适用于TYPE.HTTP
java.net.Proxy.Type proxyType = java.net.Proxy.Type.valueOf(urlURL.getProtocol().toUpperCase());
java.net.Proxy javaProxy = new java.net.Proxy(proxyType, inetAddress);
httpConn = (HttpURLConnection) urlURL.openConnection(javaProxy);
} else {
httpConn = (HttpURLConnection) urlURL.openConnection();
}
} else {
httpConn = (HttpURLConnection) urlURL.openConnection();
}
httpConn.setConnectTimeout(Const.NETWORK_OPEN_TIMEOUT);
httpConn.setReadTimeout(Const.NETWORK_READ_TIMEOUT);
httpConn.setDoInput(true);
} else {
// LogOut.out(this, "No Avaiable Network");
}
} catch (NullPointerException npe) {
npe.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return httpConn;
}
android判断2g|3g网络
可以通过ConnectivityManager获取当前网络连接状态,通过状态值判别当前网络连接
NetworkInfo info = conMan.getActiveNetworkInfo();
if(info !=null && info.getType() == ConnectivityManager.TYPE_MOBILE)
{
// NETWORK_TYPE_EVDO_A是电信3G
//NETWORK_TYPE_EVDO_A是中国电信3G的getNetworkType
//NETWORK_TYPE_CDMA电信2G是CDMA
//移动2G卡 + CMCC + 2//type = NETWORK_TYPE_EDGE
//联通的2G经过测试 China Unicom 1 NETWORK_TYPE_GPRS
if(info.getSubtype() == TelephonyManager.NETWORK_TYPE_GPRS
|| info.getSubtype() == TelephonyManager.NETWORK_TYPE_CDMA
|| info.getSubtype() == TelephonyManager.NETWORK_TYPE_EDGE){
System.out.println("mobile connected");
}
else{
System.out.println("type:"+info.getSubtype());
System.out.println("not mobile");
}
}else
System.out.println("not mobile connected");
通过getType的值可以得到以下2g|3g网络
分享到:
相关推荐
在Android开发中,实现一个高度自适应、左右循环并能自动轮播的图片查看功能,通常我们会使用ViewPager组件。ViewPager是Android SDK中的一个强大的控件,它可以用来展示多个页面,并且用户可以左右滑动切换页面,...
1. **Android判断GPS是否开启和强制帮用户打开GPS**: 这个工具类提供了检查GPS状态以及在需要时引导用户开启GPS的功能。在Android中,定位服务通常依赖于GPS,因此确保其开启对某些应用至关重要。通过调用`...
在Android平台上进行音频处理时,有时需要将不同的音频编码格式转换为其他格式,以便于适应各种设备和网络传输的需求。本话题主要关注如何将G711(包括PCMA和PCMU)、G726以及PCM音频格式转换为AAC编码。AAC...
1. **根据屏幕密度动态设置DP值**:在Android中,DP(Density Independent Pixels)是与设备独立的像素单位,用于保持UI在不同密度屏幕上的一致性。`WidgetUtils`可能包含一个`dpToPx()`方法,将DP转换为像素,以...
NetUtils可能是用来检测网络状态、判断网络类型(WiFi、移动数据等)的工具类。网络状态的检测对于应用的用户体验至关重要,可以避免在网络不稳定时进行不必要的操作。 8. **SPUtils.java**: 这个类一般用于...
- **解决方案**:通过设置`android:scaleType="fitXY"`属性来让ImageView自适应其容器大小,并保持图片原始比例不变。需要注意的是,这种方法可能导致图片在某些情况下被拉伸或压缩,因此需要谨慎使用。 ```xml ...
第13章 Android的网络应用 476 13.1 基于TCP协议的网络通信 477 13.1.1 TCP协议基础 477 13.1.2 使用ServerSocket创建 TCP服务器端 478 13.1.3 使用Socket进行通信 479 13.1.4 加入多线程 483 13.2 ...
开发者可能利用Kotlin的协程(coroutines)来处理游戏中的异步操作,如加载资源、网络通信等,以避免阻塞主线程,保证游戏流畅运行。 在游戏架构方面,雷电小游戏可能采用了MVC(Model-View-Controller)或者更现代...
HLS的核心特性是动态码率自适应技术,这意味着它可以根据当前网络状况来调整视频质量。当网络条件好时,客户端可以选择高分辨率的视频;网络状况不佳时,则自动切换到低分辨率视频,以保证视频播放的流畅性。 HLS的...
在Android平台上开发一个静态在线考试系统界面...通过这个项目,初学者可以深入理解Android应用的基本架构,掌握界面设计与用户交互的核心技巧,同时也为后续的动态数据加载、网络请求、数据库操作等进阶知识打下基础。
在Android开发领域,瀑布流(Pinterest-like)布局是一种常见的展示方式,它以其独特的多列、自适应屏幕尺寸和逐级加载的特点,深受开发者和设计师喜爱。这个"Android应用源码之android平台仿pinterest瀑布流展现...
1. **创建RecyclerView**:首先,我们需要在XML布局文件中添加一个RecyclerView,并设置相应的属性,如宽度填充父容器,高度根据内容自适应等。 ```xml <androidx.recyclerview.widget.RecyclerView android:id="@...
其中,自适应阈值检测算法用于实时监控网络流量,判断是否存在异常;而基于改进K-means的流量异常模式识别算法则用于构建入侵检测模型,对检测到的异常流量进行深入分析。 改进的K-means算法是关键的创新点,它通过...
通过`android.text.format.DateFormat.is24HourFormat(Context)`方法,开发者可以判断系统当前是12小时制还是24小时制,并根据结果动态调整时间的显示格式。 4. **适配不同设备**:描述中提到,背景图片在实体机上...
在网络管理中,理解并有效利用`ConnectivityManager`是构建智能、自适应的应用程序的关键。它可以确保应用在各种网络环境下都能正常工作,提供良好的用户体验。例如,当检测到无网络连接时,应用可以自动切换到离线...
设置这两个ImageView的宽度为屏幕宽度的一半,高度自适应,以便它们并排显示。还可以添加一个TextView来显示提示信息。 2. **图片资源**: 准备拼合图片的左右两部分,可以是静态资源或者动态生成。确保这两部分在...
这种布局方式模仿了真实世界中瀑布流水的效果,使得屏幕上的元素能够自适应不同尺寸的设备,呈现出层次感和动态美感。 在Android中实现瀑布流式布局,主要涉及到以下几个核心知识点: 1. **自定义View组件**:由于...
它通过将内容按列布局,并让每一列的顶部对齐,形成一种自适应高度的网格效果,使得页面看起来像瀑布一样流淌。 在Android中实现瀑布流布局有多种方式,包括自定义ViewGroup、使用第三方库如...
6. **错误处理和异常捕获**:考虑到可能的网络问题、资源加载失败等情况,需要添加适当的错误处理机制,提供友好的用户反馈。 7. **性能优化**:考虑使用SurfaceView或TextureView来渲染视频,它们提供了更好的性能...