-/*\r
- * //******************************************************************\r
- * //\r
- * // Copyright 2015 Intel Corporation.\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
+/******************************************************************\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.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
- mContext = context;\r
+ synchronized(CaIpInterface.class) {\r
+ mContext = context;\r
+ }\r
registerIpStateReceiver();\r
}\r
\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.getIntExtra(WifiManager.EXTRA_WIFI_STATE,\r
- WifiManager.WIFI_STATE_UNKNOWN) == WifiManager.WIFI_STATE_DISABLED) {\r
- stateDisabled();\r
- } else if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {\r
+ if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {\r
ConnectivityManager manager = (ConnectivityManager)\r
mContext.getSystemService(Context.CONNECTIVITY_SERVICE);\r
- NetworkInfo nwInfo = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);\r
+ NetworkInfo wifiInfo = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);\r
+ NetworkInfo mobileInfo = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);\r
\r
- if(nwInfo.isConnected()) {\r
- stateEnabled();\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 stateEnabled();\r
+ private native static void caIpStateEnabled();\r
\r
- private native static void stateDisabled();\r
-}
\ No newline at end of file
+ private native static void caIpStateDisabled();\r
+}\r