SlideShare a Scribd company logo
ネットワークの切り替えを
感知する方法
potatotips #27 (Android)
ヤマグチケイスケ
自己紹介
• 名前:ヤマグチケイスケ
• Github: ykeisuke
• Qiita: YKEI_mrn
• MAIL: yamagutikeisuke@gmail.com
• 職業:フリーランス
– 出向中:(株)アスクリード
– 出来る事
• サーバー立てる。
• サーバー側でWebAPI書く。
• WebAPIを使ったAndroidアプリ書く
• LPつくる
• CakePHP/Android/iOS
• Illustratorもできる。
条件
• Android5.0以上
目的
• Androidが使っているネットワークの切り替え
を感知することが目的。
• 例えば、WiFi通信からCellular通信に変わった
時とか。
実装(概要)
• Android5.0(APIレベル21)から実装されている、
NetworkRequest.Builderクラスを利用する。
– reference:
https://developer.android.com/intl/ja/reference/a
ndroid/net/NetworkRequest.Builder.html
実装(詳細):1
this.cm = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkRequest.Builder reqBuilder = new NetworkRequest.Builder();
• ConnectivityManagerを作成し、
NetworkRequest.Builderを用意する。
実装(詳細):2
this.cm.registerNetworkCallback(reqBuilder.build(),
new ConnectivityManager.NetworkCallback() {
private String TAG = “CM”;
@Override
public void onCapabilitiesChanged(Network network,
NetworkCapabilities networkCapabilities) {
Log.d(TAG, “onCapabilities networkCapabilities : ”
+ networkCapabilities.toString()
+ “, network : ” + network.toString());
}
// (略)
• イベント通知を受け取る
簡単
TIPS1
『関係のあるイベントのみ感知したい。』
例えば、WANに繋がるCellular通信の場合のみとか
NetworkRequest.Builder reqBuilder = new NetworkRequest.Builder();
reqBuilder.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED);
reqBuilder.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);
• 「new NetworkRequest.Builder」に、「addCapability」と、
「addTransportType」で追加すればよい。
TIPS2
『「addCapability」と「addTransportType」で何が
追加できるのか?』
• 「NetworkCapabilities」で追加できるものは全
部追加できる。
– https://developer.android.com/intl/ja/reference/andr
oid/net/NetworkCapabilities.html
• 例えば、「Cellular通信のみ」や「WiFi通信のみ」
「VPNではない時」など
TIPS3(1)
『どのようなイベントで処理を発火できるか』
• 「ConnectivityManager.NetworkCallback」クラ
ス(API21〜)で定義されている メソッドを使え
る
• この点がAPI21から新たに増えてる(?)
– 調べ切れていない。
TIPS3(2)
• onAvailable
– 準備が出来たとき
• onCapabilitiesChanged
– 接続完了し、ネットワークが変わったあと
• onLinkPropertiesChanged
– LinkPropertiesが変わったあと
• onLosing
– 接続を失ったとき(失ってる時!)
• onLost
– 接続を失ったとき(完全に、接続が切れたとき!)
• (onLosingとonLostの違いは瞬断対策のようです)
ネットワークの切り替えを感知する方法

More Related Content

PDF
Amazon S3を中心とするデータ分析のベストプラクティス
PDF
クラウド&Azure入門 セッション at Microsoft Ignite the Tour Tokyo 2019
PDF
CloudFormation/SAMのススメ
PDF
Cognito、Azure ADと仲良くしてみた
PPTX
Amazon EKS によるスマホゲームのバックエンド運用事例
PDF
Datadog Agent on CloudRunによるGCPトレービリティ向上
PDF
通信と放送の融合を考えるBoF 5
PDF
.NET 7におけるBlazorの新機能
Amazon S3を中心とするデータ分析のベストプラクティス
クラウド&Azure入門 セッション at Microsoft Ignite the Tour Tokyo 2019
CloudFormation/SAMのススメ
Cognito、Azure ADと仲良くしてみた
Amazon EKS によるスマホゲームのバックエンド運用事例
Datadog Agent on CloudRunによるGCPトレービリティ向上
通信と放送の融合を考えるBoF 5
.NET 7におけるBlazorの新機能

What's hot (20)

PDF
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
PPTX
AKS と ACI を組み合わせて使ってみた
PPTX
20211109 JAWS-UG SRE keynotes
PDF
Dockers and kubernetes
PDF
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
PDF
【Unite Tokyo 2019】AWS for Unity Developers
PDF
Dockerfile を書くためのベストプラクティス解説編
PDF
Openshift NGINX Kubernetes (Japanese Webinar)
PDF
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
PPTX
最近のやられアプリを試してみた
PDF
20210317 AWS Black Belt Online Seminar Amazon MQ
PDF
【第17回セキュリティ共有勉強会】WAF導入で見えた脆弱性管理のあれこれ
PPTX
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
PDF
Eclipse plug in development
PDF
Amazon Aurora - Auroraの止まらない進化とその中身
PDF
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
PPTX
openstackの仮想マシンHA機能の現状と今後の方向性
PDF
20200630 AWS Black Belt Online Seminar Amazon Cognito
PPTX
Hadoop -NameNode HAの仕組み-
PDF
PUBG: Battlegrounds 라이브 서비스 EKS 전환 사례 공유 [크래프톤 - 레벨 300] - 발표자: 김정헌, PUBG Dev...
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
AKS と ACI を組み合わせて使ってみた
20211109 JAWS-UG SRE keynotes
Dockers and kubernetes
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
【Unite Tokyo 2019】AWS for Unity Developers
Dockerfile を書くためのベストプラクティス解説編
Openshift NGINX Kubernetes (Japanese Webinar)
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
最近のやられアプリを試してみた
20210317 AWS Black Belt Online Seminar Amazon MQ
【第17回セキュリティ共有勉強会】WAF導入で見えた脆弱性管理のあれこれ
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
Eclipse plug in development
Amazon Aurora - Auroraの止まらない進化とその中身
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
openstackの仮想マシンHA機能の現状と今後の方向性
20200630 AWS Black Belt Online Seminar Amazon Cognito
Hadoop -NameNode HAの仕組み-
PUBG: Battlegrounds 라이브 서비스 EKS 전환 사례 공유 [크래프톤 - 레벨 300] - 발표자: 김정헌, PUBG Dev...
Ad

ネットワークの切り替えを感知する方法

Editor's Notes

  • #3: 自己紹介、 ・アスクリードではWEBを中心に、色々やらせてもらってます。 ・地方創生を掲げている会社です。 ・水谷さんが作ったGoライブラリをサンプルでiOS側で使ったりしました。  →HTTPリクエストをしないやつですが。
  • #4: クライアントからの良い、要望をいただき、Android5(APIレベル21以上!)にしてもらいました!!!