From a3c4f5fa7fd88dfd03cec60df32a9ae97053f70e Mon Sep 17 00:00:00 2001
From: Alexandre Lision <alexandre.lision@savoirfairelinux.com>
Date: Tue, 7 Jan 2014 17:22:22 -0500
Subject: [PATCH] * #38141: added wifi receiver during call.

We now have a feedback on wifi strength during a call in application log.
Some testing should be done but it seems reliable.
It should be integrated in the user interface in the future.
---
 AndroidManifest.xml                          |  1 +
 src/org/sflphone/fragments/CallFragment.java | 30 ++++++++++++++++++++
 2 files changed, 31 insertions(+)

diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 9082930c7..624b98067 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -60,6 +60,7 @@ as that of the covered work.
     <uses-permission android:name="android.permission.READ_PROFILE" />
     <uses-permission android:name="android.permission.BLUETOOTH" />
     <uses-permission android:name="android.permission.VIBRATE" />
+    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
     <uses-permission android:name="android.permission.WRITE_CALL_LOG" />
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
diff --git a/src/org/sflphone/fragments/CallFragment.java b/src/org/sflphone/fragments/CallFragment.java
index 56cbba16f..0a098f600 100644
--- a/src/org/sflphone/fragments/CallFragment.java
+++ b/src/org/sflphone/fragments/CallFragment.java
@@ -34,6 +34,10 @@ package org.sflphone.fragments;
 import java.util.ArrayList;
 import java.util.Locale;
 
+import android.content.BroadcastReceiver;
+import android.content.IntentFilter;
+import android.net.wifi.WifiInfo;
+import android.net.wifi.WifiManager;
 import org.sflphone.R;
 import org.sflphone.model.Attractor;
 import org.sflphone.model.Bubble;
@@ -104,6 +108,16 @@ public class CallFragment extends Fragment implements Callback {
     private Bitmap call_icon;
 
     TransferDFragment editName;
+    private WifiManager wifiManager;
+    private BroadcastReceiver wifiReceiver = new BroadcastReceiver() {
+
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            WifiInfo info = wifiManager.getConnectionInfo();
+            Log.i(TAG, "Level of wifi " +info.getRssi());
+        }
+
+    };
 
     @Override
     public void onCreate(Bundle savedBundle) {
@@ -123,7 +137,21 @@ public class CallFragment extends Fragment implements Callback {
         if (wakeLock != null && !wakeLock.isHeld()) {
             wakeLock.acquire();
         }
+    }
+
+    private void initializeWiFiListener(){
+        Log.i(TAG, "executing initializeWiFiListener");
+
+        String connectivity_context = Context.WIFI_SERVICE;
+        wifiManager = (WifiManager) getActivity().getSystemService(connectivity_context);
+
+        if(!wifiManager.isWifiEnabled()){
+            if(wifiManager.getWifiState() != WifiManager.WIFI_STATE_ENABLING){
+                wifiManager.setWifiEnabled(true);
+            }
+        }
 
+        getActivity().registerReceiver(wifiReceiver, new IntentFilter(WifiManager.RSSI_CHANGED_ACTION));
     }
 
     /**
@@ -211,11 +239,13 @@ public class CallFragment extends Fragment implements Callback {
     @Override
     public void onResume() {
         super.onResume();
+        initializeWiFiListener();
     }
 
     @Override
     public void onPause() {
         super.onPause();
+        getActivity().unregisterReceiver(wifiReceiver);
         if (wakeLock != null && wakeLock.isHeld()) {
             wakeLock.release();
         }
-- 
GitLab