開源框架推薦:網速監聽—facebook/network-connection-class

前言#

昨天發生了一點小插曲,首次使用litepal(數據庫框架)竟然沒有建表,結果最后發現原因是:之前是afinal,版本號為1,現在使用litepal,如果數據庫的名稱一樣,不提升版本號 是無法建表的,在這里也是提醒同樣使用litepal的朋友,別跟我犯同樣的錯誤。

這也是要臨近下班的時間了,準備給大家推薦一款很使用的開源框架:Facebook開源的network-connection-class,檢測手機的網絡情況。

https://github.com/facebook/network-connection-class/

正文#

公司項目想要添加一個功能:根據用戶手機的網速播放不同清晰度的視頻。這個在現在的各大視頻站實在是太常見了,根據網絡情況自動匹配清晰度對應的視頻,也可以讓用戶自己去切換,是個不錯的用戶體驗。

要實現這樣的功能首先要需要當前的網絡情況才行,首先看看如何使用network-connection-class:

1、依賴compile 'com.facebook.network.connectionclass:connectionclass:1.0.1'

2、定義網絡變化的監聽Listener

public interface ConnectionClassStateChangeListener {
  public void onBandwidthStateChange(ConnectionQuality bandwidthState);
}

其中bandwidthState就是當前的網絡情況,在sdk中會把網速分為幾個類型:

public enum ConnectionQuality {
  /**
   * Bandwidth under 150 kbps.
   */
  POOR,
  /**
   * Bandwidth between 150 and 550 kbps.
   */
  MODERATE,
  /**
   * Bandwidth between 550 and 2000 kbps.
   */
  GOOD,
  /**
   * EXCELLENT - Bandwidth over 2000 kbps.
   */
  EXCELLENT,
  /**
   * Placeholder for unknown bandwidth. This is the initial value and will stay at this value
   * if a bandwidth cannot be accurately found.
   */
  UNKNOWN
}

要注意的就是 UNKNOWN,注釋已經寫得很清楚, UNKNOWN是默認值直到沒有精確的找到網絡。

你也可以主動去查詢當前的網絡情況:

ConnectionQuality cq = ConnectionClassManager.getInstance().getCurrentBandwidthQuality();

3、設置監聽的時機

ConnectionClassManager.getInstance().register(mListener);

跟廣播類似,有注冊就一定需要解綁,千萬不要忘了。

4、開始采集網速和停止采集網速

DeviceBandwidthSampler.getInstance().startSampling();
// Do some downloading tasks
DeviceBandwidthSampler.getInstance().stopSampling();

注冊了監聽,并不會馬上就能得到網絡的情況,需要去開啟采集,并且開啟后去做一些網絡操作,例如下載,在不需要采集手機網速的時候去關閉采集。掌握好恰當的時機,對于手機的消耗肯定是有好處的。

以我最開始的功能為例,我可以把需求分幾個階段:

1、先設置一個播放路徑,等到有網速結果回調的時候立刻去設置對應的路徑并seek到指定的位置。
2、如果網絡變差,我可以提示用戶是否要切換到低分辨率的視頻。
3、等視頻播放結束,關閉網速檢測。

如果你有下載過什么,并且知道下載了多長,也可以直接去計算當前的網絡情況:

ConnectionClassManager.addBandwidth(bandwidth, time);

如果網絡有變化,會直接回調設置的listener。

總結#

ok,是不是非常的簡單,又了解了一個新的框架,以后遇到這種跟網絡有關的需求,就不用蛋疼了。

下班了,拜拜。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容