summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNivedita Sarkar <nsarkar@codeaurora.org>2014-10-18 15:31:13 -0700
committerLinux Build Service Account <lnxbuild@localhost>2014-11-04 08:50:18 -0700
commit7a9f5adf26360ff58362e60b0af8ca27729a7a87 (patch)
treec54a375c316291d1feca08a2417546498a568b19
parentdcb22745f32b18b9061eab3ba3c8392372326229 (diff)
downloadpackages_apps_InCallUI-staging/cm-12.0-caf.tar.gz
packages_apps_InCallUI-staging/cm-12.0-caf.tar.bz2
packages_apps_InCallUI-staging/cm-12.0-caf.zip
Notify listeners of video quality changed event and display message on UIstaging/cm-12.0-caf
- Add methods to notify listeners of type VideoEventListener when video quality changes. - Display a notification on the UI when video quality changes. Change-Id: Ifa86eb78a583f1ad60e4b842af93c8e348b7fd86
-rw-r--r--src/com/android/incallui/InCallVideoCallListener.java10
-rw-r--r--src/com/android/incallui/InCallVideoCallListenerNotifier.java23
-rw-r--r--src/com/android/incallui/VideoCallFragment.java31
-rw-r--r--src/com/android/incallui/VideoCallPresenter.java23
4 files changed, 86 insertions, 1 deletions
diff --git a/src/com/android/incallui/InCallVideoCallListener.java b/src/com/android/incallui/InCallVideoCallListener.java
index 10df01d7..de4eccbc 100644
--- a/src/com/android/incallui/InCallVideoCallListener.java
+++ b/src/com/android/incallui/InCallVideoCallListener.java
@@ -120,6 +120,16 @@ public class InCallVideoCallListener extends VideoCall.Listener {
}
/**
+ * Handles a change to the video quality of the call.
+ *
+ * @param videoQuality The updated video call quality.
+ */
+ @Override
+ public void onVideoQualityChanged(int videoQuality) {
+ InCallVideoCallListenerNotifier.getInstance().videoQualityChanged(mCall, videoQuality);
+ }
+
+ /**
* Handles a change to the call data usage. No implementation as the in-call UI does not
* display data usage.
*
diff --git a/src/com/android/incallui/InCallVideoCallListenerNotifier.java b/src/com/android/incallui/InCallVideoCallListenerNotifier.java
index 90a5e3db..e40507cb 100644
--- a/src/com/android/incallui/InCallVideoCallListenerNotifier.java
+++ b/src/com/android/incallui/InCallVideoCallListenerNotifier.java
@@ -179,6 +179,18 @@ public class InCallVideoCallListenerNotifier {
}
/**
+ * Inform listeners of any change in the video quality of the call
+ *
+ * @param call The call.
+ * @param videoQuality The updated video quality of the call.
+ */
+ public void videoQualityChanged(Call call, int videoQuality) {
+ for (VideoEventListener listener : mVideoEventListeners) {
+ listener.onVideoQualityChanged(call, videoQuality);
+ }
+ }
+
+ /**
* Inform listeners of a change to peer dimensions.
*
* @param call The call.
@@ -243,7 +255,7 @@ public class InCallVideoCallListenerNotifier {
/**
* Listener interface for any class that wants to be notified of video events, including pause
- * and un-pause of peer video.
+ * and un-pause of peer video, video quality changes.
*/
public interface VideoEventListener {
/**
@@ -254,6 +266,15 @@ public class InCallVideoCallListenerNotifier {
* otherwise.
*/
public void onPeerPauseStateChanged(Call call, boolean paused);
+
+ /**
+ * Called when the video quality changes.
+ *
+ * @param call The call whose video quality changes.
+ * @param videoCallQuality - values are QUALITY_HIGH, MEDIUM, LOW and UNKNOWN.
+ */
+ public void onVideoQualityChanged(Call call, int videoCallQuality);
+
}
/**
diff --git a/src/com/android/incallui/VideoCallFragment.java b/src/com/android/incallui/VideoCallFragment.java
index 7c7ae812..6e5b87ff 100644
--- a/src/com/android/incallui/VideoCallFragment.java
+++ b/src/com/android/incallui/VideoCallFragment.java
@@ -30,6 +30,8 @@ import android.view.ViewStub;
import android.view.ViewTreeObserver;
import com.google.common.base.Objects;
+import android.widget.Toast;
+import android.telecom.VideoProfile;
/**
* Fragment containing video calling surfaces.
@@ -542,6 +544,35 @@ public class VideoCallFragment extends BaseFragment<VideoCallPresenter,
}
/**
+ * Displays a message on the UI that the video call quality has changed.
+ *
+ */
+ @Override
+ public void showVideoQualityChanged(int videoQuality) {
+ Log.d(this, "showVideoQualityChanged. Video quality changed to " + videoQuality);
+
+ String videoQualityChangedText = "Video quality changed to ";
+ switch (videoQuality) {
+ case VideoProfile.QUALITY_HIGH:
+ videoQualityChangedText += "High";
+ break;
+ case VideoProfile.QUALITY_MEDIUM:
+ videoQualityChangedText += "Medium";
+ break;
+ case VideoProfile.QUALITY_LOW:
+ videoQualityChangedText += "Low";
+ break;
+ // Both unknown and default should display unknown. Intentional fall through.
+ case VideoProfile.QUALITY_UNKNOWN:
+ default:
+ videoQualityChangedText += "Unknown";
+ break;
+ }
+
+ Toast.makeText(getActivity(), videoQualityChangedText, Toast.LENGTH_SHORT).show();
+ }
+
+ /**
* Cleans up the video telephony surfaces. Used when the presenter indicates a change to an
* audio-only state. Since the surfaces are static, it is important to ensure they are cleaned
* up promptly.
diff --git a/src/com/android/incallui/VideoCallPresenter.java b/src/com/android/incallui/VideoCallPresenter.java
index d1bcdf39..10250d6c 100644
--- a/src/com/android/incallui/VideoCallPresenter.java
+++ b/src/com/android/incallui/VideoCallPresenter.java
@@ -613,6 +613,28 @@ public class VideoCallPresenter extends Presenter<VideoCallPresenter.VideoCallUi
}
/**
+ * Handles any video quality changes in the call.
+ *
+ * @param call The call which experienced a video quality change.
+ * @param videoQuality The new video call quality.
+ */
+ @Override
+ public void onVideoQualityChanged(Call call, int videoQuality) {
+ if (!call.equals(mPrimaryCall)) {
+ return;
+ }
+
+ VideoCallUi ui = getUi();
+ if (ui == null) {
+ Log.e(this, "Error VideoCallUi is null. Return.");
+ return;
+ }
+
+ // Display a video quality changed message on UI.
+ ui.showVideoQualityChanged(videoQuality);
+ }
+
+ /**
* Handles a change to the dimensions of the local camera. Receiving the camera capabilities
* triggers the creation of the video
*
@@ -768,6 +790,7 @@ public class VideoCallPresenter extends Presenter<VideoCallPresenter.VideoCallUi
*/
public interface VideoCallUi extends Ui {
void showVideoUi(boolean show);
+ void showVideoQualityChanged(int videoQuality);
boolean isDisplayVideoSurfaceCreated();
boolean isPreviewVideoSurfaceCreated();
Surface getDisplayVideoSurface();