From 20ad24fe08bc485ccc629b0c552976f3b7ca089b Mon Sep 17 00:00:00 2001 From: "bg.chun" Date: Thu, 29 Dec 2016 08:53:50 +0900 Subject: [PATCH] [IOT-1714]Add wifi.p2p connection status changed intent receiver Add "android.net.wifi.p2p.CONNECTION_STATE_CHANGE" to intentFilter to receive wifi-p2p connection changed event. Change-Id: Id660870b11723df727c99ba7062fe8425772b714 Signed-off-by: bg.chun Reviewed-on: https://gerrit.iotivity.org/gerrit/16005 Tested-by: jenkins-iotivity Reviewed-by: jihwan seo Reviewed-by: Jaehong Jo Reviewed-by: Dan Mihai Reviewed-by: Ashok Babu Channa --- .../main/java/org/iotivity/ca/CaIpInterface.java | 248 +++++++++++---------- 1 file changed, 132 insertions(+), 116 deletions(-) diff --git a/java/iotivity-android/src/main/java/org/iotivity/ca/CaIpInterface.java b/java/iotivity-android/src/main/java/org/iotivity/ca/CaIpInterface.java index a747953..bec42d4 100644 --- a/java/iotivity-android/src/main/java/org/iotivity/ca/CaIpInterface.java +++ b/java/iotivity-android/src/main/java/org/iotivity/ca/CaIpInterface.java @@ -1,116 +1,132 @@ -/****************************************************************** - * - * Copyright 2014 Samsung Electronics All Rights Reserved. - * - * - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ******************************************************************/ - -package org.iotivity.ca; - -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; -import android.net.ConnectivityManager; -import android.net.NetworkInfo; -import android.net.wifi.WifiManager; -import android.util.Log; - -public class CaIpInterface { - private static Context mContext; - - public enum WifiAPState{ - WIFI_AP_STATE_DISABLING (10), - WIFI_AP_STATE_DISABLED (11), - WIFI_AP_STATE_ENABLING (12), - WIFI_AP_STATE_ENABLED (13), - WIFI_AP_STATE_FAILED (14) - ; // semicolon needed when fields / methods follow - - - private final int apstate; - - WifiAPState(int apstate) - { - this.apstate = apstate; - } - public int getIntValue() { - return this.apstate; - } - } - - private CaIpInterface(Context context) { - synchronized(CaIpInterface.class) { - mContext = context; - } - registerIpStateReceiver(); - } - - private void registerIpStateReceiver() { - IntentFilter intentFilter = new IntentFilter(); - intentFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION); - intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); - intentFilter.addAction("android.net.wifi.WIFI_AP_STATE_CHANGED"); - - mContext.registerReceiver(mReceiver, intentFilter); - } - - public static void destroyIpInterface() { - mContext.unregisterReceiver(mReceiver); - } - - private static BroadcastReceiver mReceiver = new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) { - ConnectivityManager manager = (ConnectivityManager) - mContext.getSystemService(Context.CONNECTIVITY_SERVICE); - NetworkInfo wifiInfo = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); - NetworkInfo mobileInfo = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); - - if (mobileInfo != null && mobileInfo.isConnected() || wifiInfo.isConnected()) { - caIpStateEnabled(); - } else { - caIpStateDisabled(); - } - } - - if (intent.getAction().equals("android.net.wifi.WIFI_AP_STATE_CHANGED")) { - if (intent.getIntExtra("wifi_state", - WifiAPState.WIFI_AP_STATE_DISABLED.getIntValue()) - == WifiAPState.WIFI_AP_STATE_DISABLED.getIntValue()) - { - caIpStateDisabled(); - }else if(intent.getIntExtra("wifi_state", - WifiAPState.WIFI_AP_STATE_DISABLED.getIntValue()) - == WifiAPState.WIFI_AP_STATE_ENABLED.getIntValue()) - { - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - caIpStateEnabled(); - } - } - } - }; - - private native static void caIpStateEnabled(); - - private native static void caIpStateDisabled(); -} +/****************************************************************** + * + * Copyright 2014 Samsung Electronics All Rights Reserved. + * + * + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************/ + +package org.iotivity.ca; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; +import android.net.wifi.WifiManager; +import android.net.wifi.p2p.WifiP2pManager; +import android.util.Log; + +public class CaIpInterface { + private static Context mContext; + + public enum WifiAPState{ + WIFI_AP_STATE_DISABLING (10), + WIFI_AP_STATE_DISABLED (11), + WIFI_AP_STATE_ENABLING (12), + WIFI_AP_STATE_ENABLED (13), + WIFI_AP_STATE_FAILED (14) + ; // semicolon needed when fields / methods follow + + + private final int apstate; + + WifiAPState(int apstate) + { + this.apstate = apstate; + } + public int getIntValue() { + return this.apstate; + } + } + + private CaIpInterface(Context context) { + synchronized(CaIpInterface.class) { + mContext = context; + } + registerIpStateReceiver(); + } + + private void registerIpStateReceiver() { + IntentFilter intentFilter = new IntentFilter(); + intentFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION); + intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); + intentFilter.addAction("android.net.wifi.WIFI_AP_STATE_CHANGED"); + intentFilter.addAction("android.net.wifi.p2p.CONNECTION_STATE_CHANGE"); + + mContext.registerReceiver(mReceiver, intentFilter); + } + + public static void destroyIpInterface() { + mContext.unregisterReceiver(mReceiver); + } + + private static BroadcastReceiver mReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) { + ConnectivityManager manager = (ConnectivityManager) + mContext.getSystemService(Context.CONNECTIVITY_SERVICE); + NetworkInfo wifiInfo = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); + NetworkInfo mobileInfo = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); + + if (mobileInfo != null && mobileInfo.isConnected() || wifiInfo.isConnected()) { + caIpStateEnabled(); + } else { + caIpStateDisabled(); + } + } + + if (intent.getAction().equals("android.net.wifi.WIFI_AP_STATE_CHANGED")) { + if (intent.getIntExtra("wifi_state", + WifiAPState.WIFI_AP_STATE_DISABLED.getIntValue()) + == WifiAPState.WIFI_AP_STATE_DISABLED.getIntValue()) + { + caIpStateDisabled(); + }else if(intent.getIntExtra("wifi_state", + WifiAPState.WIFI_AP_STATE_DISABLED.getIntValue()) + == WifiAPState.WIFI_AP_STATE_ENABLED.getIntValue()) + { + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + caIpStateEnabled(); + } + } + + if (intent.getAction().equals("android.net.wifi.p2p.CONNECTION_STATE_CHANGE")) + { + NetworkInfo p2pInfo = intent.getParcelableExtra(WifiP2pManager.EXTRA_NETWORK_INFO); + + if (p2pInfo != null && p2pInfo.isConnected()) + { + caIpStateEnabled(); + } + else + { + caIpStateDisabled(); + } + } + } + }; + + private native static void caIpStateEnabled(); + + private native static void caIpStateDisabled(); +} -- 2.7.4