Check initialized and Changed logic of IP connect state check.
authorJaehong Jo <jaehong.jo@samsung.com>
Mon, 6 Feb 2017 10:14:48 +0000 (19:14 +0900)
committerAshok Babu Channa <ashok.channa@samsung.com>
Mon, 13 Feb 2017 07:03:32 +0000 (07:03 +0000)
getNetworkInfo was deprecated in API level 23.
So changed to getActiveNetworkInfo() API.

Change-Id: I72942758ecf3576d79bb889f168569a24967b1dd
Signed-off-by: Jaehong Jo <jaehong.jo@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/17069
Tested-by: jenkins-iotivity <jenkins@iotivity.org>
Reviewed-by: jihwan seo <jihwan.seo@samsung.com>
Reviewed-by: Ashok Babu Channa <ashok.channa@samsung.com>
java/iotivity-android/src/main/java/org/iotivity/ca/CaBtPairingInterface.java
java/iotivity-android/src/main/java/org/iotivity/ca/CaEdrInterface.java
java/iotivity-android/src/main/java/org/iotivity/ca/CaIpInterface.java
java/iotivity-android/src/main/java/org/iotivity/ca/CaLeClientInterface.java

index e06d574..5811afd 100644 (file)
@@ -29,12 +29,16 @@ import android.content.IntentFilter;
 
 public class CaBtPairingInterface {
     private static Context mContext;
+    private static volatile boolean isBtInitialized = false;
 
     private CaBtPairingInterface(Context context) {
         synchronized(CaBtPairingInterface.class) {
             mContext = context;
         }
-        registerIntentFilter();
+        if (!isBtInitialized) {
+            registerIntentFilter();
+            isBtInitialized = true;
+        }
     }
 
     private static IntentFilter registerIntentFilter() {
@@ -47,7 +51,10 @@ public class CaBtPairingInterface {
     }
 
     public static void destroyEdrInterface() {
-        mContext.unregisterReceiver(mReceiver);
+        if (isBtInitialized) {
+            mContext.unregisterReceiver(mReceiver);
+            isBtInitialized = false;
+        }
     }
 
     private native static void oicEdrStateChangedCallback(int state);
index aaf8bc6..067dbf3 100644 (file)
@@ -30,12 +30,16 @@ import android.util.Log;
 
 public class CaEdrInterface {
     private static Context mContext;
+    private static volatile boolean isEdrInitialized = false;
 
     private CaEdrInterface(Context context) {
         synchronized(CaEdrInterface.class) {
             mContext = context;
         }
-        registerIntentFilter();
+        if (!isEdrInitialized) {
+            registerIntentFilter();
+            isEdrInitialized = true;
+        }
     }
 
     private static IntentFilter registerIntentFilter() {
@@ -48,7 +52,10 @@ public class CaEdrInterface {
     }
 
     public static void destroyEdrInterface() {
-        mContext.unregisterReceiver(mReceiver);
+        if (isEdrInitialized) {
+            mContext.unregisterReceiver(mReceiver);
+            isEdrInitialized = false;
+        }
     }
 
     // Network Monitor
index a747953..be00712 100644 (file)
@@ -26,87 +26,52 @@ import android.content.Intent;
 import android.content.IntentFilter;\r
 import android.net.ConnectivityManager;\r
 import android.net.NetworkInfo;\r
-import android.net.wifi.WifiManager;\r
 import android.util.Log;\r
 \r
 public class CaIpInterface {\r
     private static Context mContext;\r
-\r
-    public enum WifiAPState{\r
-        WIFI_AP_STATE_DISABLING (10),\r
-        WIFI_AP_STATE_DISABLED (11),\r
-        WIFI_AP_STATE_ENABLING (12),\r
-        WIFI_AP_STATE_ENABLED (13),\r
-        WIFI_AP_STATE_FAILED (14)\r
-        ; // semicolon needed when fields / methods follow\r
-\r
-\r
-        private final int apstate;\r
-\r
-        WifiAPState(int apstate)\r
-        {\r
-            this.apstate = apstate;\r
-        }\r
-        public int getIntValue() {\r
-           return this.apstate;\r
-        }\r
-    }\r
+    private static volatile boolean isIpInitialized = false;\r
+    private static String TAG          = "OIC_IP_CB_INTERFACE";\r
 \r
     private CaIpInterface(Context context) {\r
         synchronized(CaIpInterface.class) {\r
             mContext = context;\r
         }\r
-        registerIpStateReceiver();\r
+        if (!isIpInitialized) {\r
+            registerIpStateReceiver();\r
+            isIpInitialized = true;\r
+        }\r
     }\r
 \r
     private void registerIpStateReceiver() {\r
         IntentFilter intentFilter = new IntentFilter();\r
-        intentFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);\r
         intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);\r
-        intentFilter.addAction("android.net.wifi.WIFI_AP_STATE_CHANGED");\r
 \r
         mContext.registerReceiver(mReceiver, intentFilter);\r
     }\r
 \r
     public static void destroyIpInterface() {\r
-        mContext.unregisterReceiver(mReceiver);\r
+        if (isIpInitialized) {\r
+            mContext.unregisterReceiver(mReceiver);\r
+            isIpInitialized = false;\r
+        }\r
     }\r
 \r
     private static BroadcastReceiver mReceiver = new BroadcastReceiver() {\r
         @Override\r
         public void onReceive(Context context, Intent intent) {\r
             if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {\r
-                ConnectivityManager manager = (ConnectivityManager)\r
-                        mContext.getSystemService(Context.CONNECTIVITY_SERVICE);\r
-                NetworkInfo wifiInfo = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);\r
-                NetworkInfo mobileInfo = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);\r
-\r
-                if (mobileInfo != null && mobileInfo.isConnected() || wifiInfo.isConnected()) {\r
+                NetworkInfo activeNetwork = ((ConnectivityManager) mContext\r
+                        .getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();\r
+                if (activeNetwork != null && activeNetwork.isConnected()) {\r
+                    Log.d(TAG, "CONNECTIVITY_ACTION - activeNetwork: "\r
+                            + activeNetwork.getTypeName());\r
                     caIpStateEnabled();\r
                 } else {\r
+                    Log.d(TAG, "CONNECTIVITY_ACTION - activeNetwork: NONE");\r
                     caIpStateDisabled();\r
                 }\r
             }\r
-\r
-            if (intent.getAction().equals("android.net.wifi.WIFI_AP_STATE_CHANGED")) {\r
-                if (intent.getIntExtra("wifi_state",\r
-                    WifiAPState.WIFI_AP_STATE_DISABLED.getIntValue())\r
-                    == WifiAPState.WIFI_AP_STATE_DISABLED.getIntValue())\r
-                {\r
-                    caIpStateDisabled();\r
-                }else if(intent.getIntExtra("wifi_state",\r
-                    WifiAPState.WIFI_AP_STATE_DISABLED.getIntValue())\r
-                    == WifiAPState.WIFI_AP_STATE_ENABLED.getIntValue())\r
-                {\r
-                    try {\r
-                        Thread.sleep(1000);\r
-                    } catch (InterruptedException e) {\r
-                        // TODO Auto-generated catch block\r
-                        e.printStackTrace();\r
-                    }\r
-                    caIpStateEnabled();\r
-                }\r
-           }\r
         }\r
     };\r
 \r
index 3984992..c3f5262 100644 (file)
@@ -43,6 +43,7 @@ public class CaLeClientInterface {
     private static String SERVICE_UUID = "ADE3D529-C784-4F63-A987-EB69F70EE816";
     private static String TAG          = "OIC_LE_CB_INTERFACE";
     private static Context mContext;
+    private static volatile boolean isLeClientInitialized = false;
 
     private CaLeClientInterface(Context context) {
         caLeRegisterLeScanCallback(mLeScanCallback);
@@ -50,7 +51,10 @@ public class CaLeClientInterface {
         synchronized(CaLeClientInterface.class) {
             mContext = context;
         }
-        registerIntentFilter();
+        if (!isLeClientInitialized) {
+            registerIntentFilter();
+            isLeClientInitialized = true;
+        }
     }
 
 
@@ -72,7 +76,10 @@ public class CaLeClientInterface {
     }
 
     public static void destroyLeInterface() {
-        mContext.unregisterReceiver(mReceiver);
+        if (isLeClientInitialized) {
+            mContext.unregisterReceiver(mReceiver);
+            isLeClientInitialized = false;
+        }
     }
 
     private native static void caLeRegisterLeScanCallback(BluetoothAdapter.LeScanCallback callback);