`

android 判断自适应网络设置

阅读更多
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实现图片轮播(高度自适应,左右循环,自动轮播)

    在Android开发中,实现一个高度自适应、左右循环并能自动轮播的图片查看功能,通常我们会使用ViewPager组件。ViewPager是Android SDK中的一个强大的控件,它可以用来展示多个页面,并且用户可以左右滑动切换页面,...

    android好用的utils集合

    1. **Android判断GPS是否开启和强制帮用户打开GPS**: 这个工具类提供了检查GPS状态以及在需要时引导用户开启GPS的功能。在Android中,定位服务通常依赖于GPS,因此确保其开启对某些应用至关重要。通过调用`...

    Android G711(PCMA/PCMU)、G726、PCM音频转码到AAC

    在Android平台上进行音频处理时,有时需要将不同的音频编码格式转换为其他格式,以便于适应各种设备和网络传输的需求。本话题主要关注如何将G711(包括PCMA和PCMU)、G726以及PCM音频格式转换为AAC编码。AAC...

    android纯代码适配工具类

    1. **根据屏幕密度动态设置DP值**:在Android中,DP(Density Independent Pixels)是与设备独立的像素单位,用于保持UI在不同密度屏幕上的一致性。`WidgetUtils`可能包含一个`dpToPx()`方法,将DP转换为像素,以...

    Android常用类库

    NetUtils可能是用来检测网络状态、判断网络类型(WiFi、移动数据等)的工具类。网络状态的检测对于应用的用户体验至关重要,可以避免在网络不稳定时进行不必要的操作。 8. **SPUtils.java**: 这个类一般用于...

    Android_程序员必须知道的_53_个知识点

    - **解决方案**:通过设置`android:scaleType="fitXY"`属性来让ImageView自适应其容器大小,并保持图片原始比例不变。需要注意的是,这种方法可能导致图片在某些情况下被拉伸或压缩,因此需要谨慎使用。 ```xml ...

    疯狂Android讲义源码

     第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 ...

    android版的雷电小游戏

    开发者可能利用Kotlin的协程(coroutines)来处理游戏中的异步操作,如加载资源、网络通信等,以避免阻塞主线程,保证游戏流畅运行。 在游戏架构方面,雷电小游戏可能采用了MVC(Model-View-Controller)或者更现代...

    android 流媒体(streaming)之HLS介绍

    HLS的核心特性是动态码率自适应技术,这意味着它可以根据当前网络状况来调整视频质量。当网络条件好时,客户端可以选择高分辨率的视频;网络状况不佳时,则自动切换到低分辨率视频,以保证视频播放的流畅性。 HLS的...

    android制作静态在线考试系统界面,适合初学者学习界面

    在Android平台上开发一个静态在线考试系统界面...通过这个项目,初学者可以深入理解Android应用的基本架构,掌握界面设计与用户交互的核心技巧,同时也为后续的动态数据加载、网络请求、数据库操作等进阶知识打下基础。

    Android应用源码之android平台仿pinterest瀑布流展现方式实现.zip

    在Android开发领域,瀑布流(Pinterest-like)布局是一种常见的展示方式,它以其独特的多列、自适应屏幕尺寸和逐级加载的特点,深受开发者和设计师喜爱。这个"Android应用源码之android平台仿pinterest瀑布流展现...

    Android 瀑布流布局源码

    1. **创建RecyclerView**:首先,我们需要在XML布局文件中添加一个RecyclerView,并设置相应的属性,如宽度填充父容器,高度根据内容自适应等。 ```xml <androidx.recyclerview.widget.RecyclerView android:id="@...

    基于改进聚类算法的Android平台入侵检测的研究与应用.pdf

    其中,自适应阈值检测算法用于实时监控网络流量,判断是否存在异常;而基于改进K-means的流量异常模式识别算法则用于构建入侵检测模型,对检测到的异常流量进行深入分析。 改进的K-means算法是关键的创新点,它通过...

    数字时钟-android4.0.3

    通过`android.text.format.DateFormat.is24HourFormat(Context)`方法,开发者可以判断系统当前是12小时制还是24小时制,并根据结果动态调整时间的显示格式。 4. **适配不同设备**:描述中提到,背景图片在实体机上...

    网络管理ConnectivityManage

    在网络管理中,理解并有效利用`ConnectivityManager`是构建智能、自适应的应用程序的关键。它可以确保应用在各种网络环境下都能正常工作,提供良好的用户体验。例如,当检测到无网络连接时,应用可以自动切换到离线...

    [Android实例] 拖动滑块进行图片拼合验证方式的实现

    设置这两个ImageView的宽度为屏幕宽度的一半,高度自适应,以便它们并排显示。还可以添加一个TextView来显示提示信息。 2. **图片资源**: 准备拼合图片的左右两部分,可以是静态资源或者动态生成。确保这两部分在...

    Android 自定义瀑布流式布局

    这种布局方式模仿了真实世界中瀑布流水的效果,使得屏幕上的元素能够自适应不同尺寸的设备,呈现出层次感和动态美感。 在Android中实现瀑布流式布局,主要涉及到以下几个核心知识点: 1. **自定义View组件**:由于...

    android 瀑布流代码

    它通过将内容按列布局,并让每一列的顶部对齐,形成一种自适应高度的网格效果,使得页面看起来像瀑布一样流淌。 在Android中实现瀑布流布局有多种方式,包括自定义ViewGroup、使用第三方库如...

    Android 列表视频

    6. **错误处理和异常捕获**:考虑到可能的网络问题、资源加载失败等情况,需要添加适当的错误处理机制,提供友好的用户反馈。 7. **性能优化**:考虑使用SurfaceView或TextureView来渲染视频,它们提供了更好的性能...

Global site tag (gtag.js) - Google Analytics