diff options
author | Nivedita Sarkar <nsarkar@codeaurora.org> | 2014-10-18 15:31:13 -0700 |
---|---|---|
committer | Linux Build Service Account <lnxbuild@localhost> | 2014-11-04 08:50:18 -0700 |
commit | 7a9f5adf26360ff58362e60b0af8ca27729a7a87 (patch) | |
tree | c54a375c316291d1feca08a2417546498a568b19 | |
parent | dcb22745f32b18b9061eab3ba3c8392372326229 (diff) | |
download | packages_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
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(); |