replace : iotivity -> iotivity-sec
[platform/upstream/iotivity.git] / android / android_api / base / src / main / java / org / iotivity / ca / CaIpInterface.java
index a747953..e2da3ec 100644 (file)
-/******************************************************************\r
- *\r
- * Copyright 2014 Samsung Electronics All Rights Reserved.\r
- *\r
- *\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- *      http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- *\r
- ******************************************************************/\r
-\r
-package org.iotivity.ca;\r
-\r
-import android.content.BroadcastReceiver;\r
-import android.content.Context;\r
-import android.content.Intent;\r
-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
-\r
-    private CaIpInterface(Context context) {\r
-        synchronized(CaIpInterface.class) {\r
-            mContext = context;\r
-        }\r
-        registerIpStateReceiver();\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
-    }\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
-                    caIpStateEnabled();\r
-                } else {\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
-    private native static void caIpStateEnabled();\r
-\r
-    private native static void caIpStateDisabled();\r
-}\r
+/******************************************************************
+ *
+ * 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;
+    private static volatile boolean isIpInitialized = false;
+    private static String TAG          = "OIC_IP_CB_INTERFACE";
+
+    private CaIpInterface(Context context) {
+        synchronized(CaIpInterface.class) {
+            mContext = context;
+        }
+        if (!isIpInitialized) {
+            registerIpStateReceiver();
+            isIpInitialized = true;
+        }
+    }
+
+    private void registerIpStateReceiver() {
+        IntentFilter intentFilter = new IntentFilter();
+        intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
+        intentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
+
+        mContext.registerReceiver(mReceiver, intentFilter);
+    }
+
+    public static void destroyIpInterface() {
+        if (isIpInitialized) {
+            mContext.unregisterReceiver(mReceiver);
+            isIpInitialized = false;
+        }
+    }
+
+    private static BroadcastReceiver mReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            String action = intent.getAction();
+            if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
+                NetworkInfo activeNetwork = ((ConnectivityManager) mContext
+                        .getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
+                if (activeNetwork != null) {
+                    Log.d(TAG, "CONNECTIVITY_ACTION - activeNetwork: "
+                        + activeNetwork.getTypeName()
+                        + " isConnected: " + activeNetwork.isConnected());
+                    caIpStateEnabled();
+                } else {
+                    Log.d(TAG, "CONNECTIVITY_ACTION - activeNetwork: NONE");
+                    caIpStateDisabled();
+                }
+            } else if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
+                NetworkInfo netInfo = (NetworkInfo) intent
+                        .getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
+                if (ConnectivityManager.TYPE_WIFI == netInfo.getType()) {
+                    NetworkInfo.State netState = netInfo.getState();
+                    if (NetworkInfo.State.CONNECTED == netState) {
+                        Log.d(TAG, "NETWORK_STATE_CHANGED_ACTION - CONNECTED: TYPE_WIFI");
+                        caIpStateEnabled();
+                    } else if (NetworkInfo.State.DISCONNECTED == netState) {
+                        Log.d(TAG, "NETWORK_STATE_CHANGED_ACTION - DISCONNECTED: TYPE_WIFI");
+                    }
+                }
+            }
+        }
+    };
+
+    private native static void caIpStateEnabled();
+
+    private native static void caIpStateDisabled();
+}