1. 程式人生 > >Android常見問題總結(七)

Android常見問題總結(七)

31.如何判斷當前網路型別

想要判斷Android裝置當前的網路型別,我們可以使用ConnectivityManager類

通過ConnectivityManager#getActiveNetworkInfo我們可以獲取NetworkInfo類,它包含了當前網路相關的資訊

我們可以通過NetworkInfo#isAvailable來判斷是否連上了網路

通過NetworkInfo#getType來判斷當前網路是否wifi型別

至於行動網路的型別,我們可以通過NetworkInfo#getSubtype獲取網路的型別,然後通過TelephonyManager#getNetworkClass來判斷當前的網路究竟是那種具體型別(不過這個方法是hide,估計是官方覺得不準確就不公開了,我們可以開啟原始碼把該方法拷貝出來使用)

具體判斷網路型別的程式碼如下:

    public static final String NETWORK_WIFI = "Wifi";
    public static final String NETWORK_2G = "2G";
    public static final String NETWORK_3G = "3G";
    public static final String NETWORK_4G = "4G";
    public static final String NETWORK_OTHER = "Other";
    public static final String NETWORK_NONE = "None";
	
	/**
     * 獲取當前網路型別
     * @param context 上下文
     * @return 網路型別
     *
     * @see #NETWORK_NONE
     * @see #NETWORK_WIFI
     * @see #NETWORK_2G
     * @see #NETWORK_3G
     * @see #NETWORK_4G
     * @see #NETWORK_OTHER
     */
    public static String getNetworkDetailType(Context context) {
        if (context == null) {
            return NETWORK_NONE;
        }
        try {
            ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo info = manager.getActiveNetworkInfo();
            // 判斷是否無網路
            if (info == null || !info.isAvailable()) {
                return NETWORK_NONE;
            }
            // 是否wifi
            if (info.getType() == ConnectivityManager.TYPE_WIFI) {
                return NETWORK_WIFI;
            }
            /**
             * 判斷行動網路型別,可見
             * @see TelephonyManager#getNetworkClass
             */
            switch (info.getSubtype()) {
                case TelephonyManager.NETWORK_TYPE_GPRS:
                case TelephonyManager.NETWORK_TYPE_EDGE:
                case TelephonyManager.NETWORK_TYPE_CDMA:
                case TelephonyManager.NETWORK_TYPE_1xRTT:
                case TelephonyManager.NETWORK_TYPE_IDEN:
                    return NETWORK_2G;
                case TelephonyManager.NETWORK_TYPE_UMTS:
                case TelephonyManager.NETWORK_TYPE_EVDO_0:
                case TelephonyManager.NETWORK_TYPE_EVDO_A:
                case TelephonyManager.NETWORK_TYPE_HSDPA:
                case TelephonyManager.NETWORK_TYPE_HSUPA:
                case TelephonyManager.NETWORK_TYPE_HSPA:
                case TelephonyManager.NETWORK_TYPE_EVDO_B:
                case TelephonyManager.NETWORK_TYPE_EHRPD:
                case TelephonyManager.NETWORK_TYPE_HSPAP:
                    return NETWORK_3G;
                case TelephonyManager.NETWORK_TYPE_LTE:
                    return NETWORK_4G;
                default:
                    return NETWORK_OTHER;
            }
        } catch (Exception e) {
            L.exception(e);
        }
        return NETWORK_NONE;
    }

32.關於Android resources資源的問題

33.adb shell dumpsys 指令使用

該命令用於打印出當前系統資訊,預設打印出裝置中所有service的資訊,可以在命令後面加指定的service name.
有兩種方法可以檢視service list:
  • adb shell dumpsys:輸出資訊的開始部分就是所有執行的service
  • adb shell service list
只要我們在指令後新增對應service name,就能檢視指定service的資訊: adb shell dumpsys activity (檢視activity堆疊相關資訊) adb shell dumpsys display (檢視顯示相關資訊,可以檢視解析度) 其中,有些service還可以帶上額外的引數,我們可以使用 -h 來檢視幫助資訊: adb shell dumpsys activity -h (可以查到top等引數的用法)

相關推薦

Android常見問題總結

31.如何判斷當前網路型別 想要判斷Android裝置當前的網路型別,我們可以使用ConnectivityManager類 通過ConnectivityManager#getActiveNetworkInfo我們可以獲取NetworkInfo類,它包含了當前網路相關的

Android Multimedia框架總結C++中MediaPlayer的C/S架構補充及MediaService介紹

前面一篇主要介紹c++中MediaPlayer的C/S架構中和Client相關部分,並中間穿插了mediaplayerservice的部分。但是對於這塊C/S部分,沒有放大去分析。《Android Multimedia框架總結(四)MediaPlayer中從

WPF Binding相關的一些常見方式總結

沒有Source的Binding, 使用DataContext作繫結源; (實現與案例A一樣的功能): 前端: <Grid> <StackPanel> <Button Name="btnTest" Co

Android進階——效能優化之記憶體洩漏和記憶體抖動的檢測及優化措施總結

上一篇Android進階——效能優化之記憶體管理機制和垃圾回收機制(六)簡述了Java記憶體管理模型、記憶體分配、記憶體回收的機制

設計模式學習總結適配器模式(Adapter)

實現接口 國外 手機 額外 sed ges program ebe 通過   適配器模式主要是通過適配器來實現接口的統一,如要實現國內手機在國外充電,則需要在不同的國家采用不同的適配器來進行兼容!   一、示例展示:   以下例子主要通過給筆記本電腦添加類似手機打電話和發短

Hive總結Hive四種數據導入方式

hive src ive log 技術 mage cnblogs images 四種 Hive總結(七)Hive四種數據導入方式

《Linux高性能服務器編程》學習總結——Linux服務器程序規範

pre for display 設置 同城 忽略 src 普通 hang 第七章 Linux服務器程序規範   服務器程序除了需要網絡通信外,還應該考慮很多其他的細節,而這些細節很多很雜,但又基本是模板式的。1)服務器程序基本都是以後臺形式運行的,沒有控制終端,不

JavaSE學習總結—— 集合

容量 內部排序 earch 生成 極限 然而 oid 小店 遍歷map 目錄 一、為什麽需要集合 二、Java常用集合類型 三、List與ArrayList 3.0、Collection常用方法 3.0.1、添加功能 3.0.2、刪除功能 3.0.3、判斷功能 3.

JVM調優總結-調優方法

圖片 死鎖 ron 詳細信息 ict 時間 最大 bsp 底部 JVM調優工具 Jconsole,jProfile,VisualVM Jconsole : jdk自帶,功能簡單,但是可以在系統有一定負荷的情況下使用。對垃圾回收算法有很詳細的跟蹤。詳細說明參考這裏 JP

python爬蟲知識點總結PyQuery詳解

get 初始化 span 2個 查看 sel docs lin query 官方學習文檔:http://pyquery.readthedocs.io/en/latest/api.html 一、什麽是PyQuery? 答:強大有靈活的網頁解析庫,模仿jQuery實現。如果你覺

Linux基本命令總結

進程管理 完整 自己的 mina 緩沖 共享 roc 占用率 linux 接上篇: 33,Linux中的kill命令用來終止指定的進程(terminate a process)的運行,是Linux下進程管理的常用命令。通常,終止一個前臺進程可以使用Ctrl+C鍵,但是,對於

Android 開發:常用佈局屬性詳解

第一類:屬性值為true或false android:layout_centerHrizontal 水平居中 android:layout_centerVertical 垂直居中 android:layout_centerInparent 相對於父元素完全居中 androi

java基礎學習總結:Cloneable介面和Object的clone()方法

為什麼要克隆 為什麼要使用克隆,這其實反映的是一個很現實的問題,假如我們有一個物件: public class SimpleObject implements Cloneable { private String str; public SimpleObject()

資料庫視訊總結——觸發器

概述 概念: 觸發器是一個在修改指定表中的資料時執行的儲存過程。經常通過建立觸發器來強制實現不同表中的邏輯相關資料的引用完整性或一致性。由於使用者不能繞過觸發器,所以可用它來強制實施複雜的業務規則,以此確保資料的完整性。 優點: 1、自動執行 2、可以通過資料庫中的相關表進行層

Android知識點總結

1、android:layout_weight 屬性的意義 1、權重的值指的是每個部件所佔剩餘空間的大小,該值與同級部件所佔空間大小有關。 2、例如,我們定義一個權重為 2 的 View,另一個 View 的權重是 1,那麼總數就是 3;這時第一個 View 佔據 2/3 的空間,第二個佔據

關於Java基礎的複習總結淺談java API

鳥隨鸞鳳飛騰遠,人伴賢良品自高 API(Application Programming Interface,應用程式程式設計介面)是一些預先定義的函式,目的是提供應用程式與開發人員基於某軟體或硬體得以訪問一組例程的能力,而又無需訪問原始碼,或理解內部工作機制的細節。 一:集合框架和

JAVA面試常問知識總結——Spring

如果一個接有2個不同的實現, 如何Autowire某一個指定的實現?   1、通過增加@Qualifier(實現類的名字): @Autowired @Qualifier("GirlStudentImpl") private Student student;   2、也可以通過@R

Selenium Java Web 自動化實踐總結如何切換同一瀏覽器開啟的多個視窗

瀏覽器每個頁面都有一個標識:控制代碼,Selenium 裡面的內建方法getWindowHandles() 獲取當前控制代碼數。返回一個集合。 // 得到當前視窗的set集合 Set<String> winHandels = driver.getWindowHandles(); //

Android入門筆記

七、工具欄的使用 7.1 工具欄選單的建立 (1)在 res/menu 中建立資源型別為 Menu 且命名同所在佈局檔案保持一致。 (2)在 選單資原始檔中使用 xmlns 標籤定義全新的 app 名稱空間,並在 showAsAction 屬性中使用,這主要是出於相

js及jQuery總結

08.01_jQuery概述 * 是一個輕量級的JavaScript庫 * jQuery的功能: * html元素的獲取 * html元素的操作 * css操作 * 事件函式 * js中的特效和動畫 * DOM的操作 * AJAX * jQuery