From b28b604bb7250fea7a993695b60e4c4204ec73a4 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 22 May 2019 12:10:19 +0200 Subject: [PATCH] Added setting for video preview --- .../linphone/activities/DialerActivity.java | 40 +++++++++---------- .../QrCodeConfigurationAssistantActivity.java | 13 +++--- .../settings/LinphonePreferences.java | 8 ++++ .../settings/VideoSettingsFragment.java | 22 +++++++++- .../main/res/layout-sw533dp-land/dialer.xml | 1 + app/src/main/res/layout-sw533dp/dialer.xml | 1 + ...assistant_qr_code_remote_configuration.xml | 6 ++- app/src/main/res/layout/settings_video.xml | 6 +++ app/src/main/res/values/strings.xml | 4 +- 9 files changed, 71 insertions(+), 30 deletions(-) diff --git a/app/src/main/java/org/linphone/activities/DialerActivity.java b/app/src/main/java/org/linphone/activities/DialerActivity.java index 17cb43cec..3bc537daf 100644 --- a/app/src/main/java/org/linphone/activities/DialerActivity.java +++ b/app/src/main/java/org/linphone/activities/DialerActivity.java @@ -39,6 +39,7 @@ import org.linphone.core.Call; import org.linphone.core.Core; import org.linphone.core.CoreListenerStub; import org.linphone.core.tools.Log; +import org.linphone.settings.LinphonePreferences; import org.linphone.views.AddressAware; import org.linphone.views.AddressText; import org.linphone.views.CallButton; @@ -188,28 +189,27 @@ public class DialerActivity extends MainActivity implements AddressText.AddressC } private void enableVideoPreviewIfTablet(boolean enable) { - if (isTablet() - && getResources().getBoolean(R.bool.show_camera_preview_on_dialer_on_tablets)) { - Core core = LinphoneManager.getCore(); - if (enable) { - TextureView preview = findViewById(R.id.video_preview); - if (preview != null && core != null) { - preview.setVisibility(View.VISIBLE); - core.setNativePreviewWindowId(preview); - core.enableVideoPreview(true); - ImageView changeCamera = findViewById(R.id.video_preview_change_camera); - if (changeCamera != null && core.getVideoDevicesList().length > 1) { - changeCamera.setVisibility(View.VISIBLE); - changeCamera.setOnClickListener( - new View.OnClickListener() { - @Override - public void onClick(View v) { - LinphoneManager.getCallManager().switchCamera(); - } - }); - } + Core core = LinphoneManager.getCore(); + TextureView preview = findViewById(R.id.video_preview); + if (preview != null && core != null) { + if (enable && isTablet() && LinphonePreferences.instance().isVideoPreviewEnabled()) { + preview.setVisibility(View.VISIBLE); + core.setNativePreviewWindowId(preview); + core.enableVideoPreview(true); + + ImageView changeCamera = findViewById(R.id.video_preview_change_camera); + if (changeCamera != null && core.getVideoDevicesList().length > 1) { + changeCamera.setVisibility(View.VISIBLE); + changeCamera.setOnClickListener( + new View.OnClickListener() { + @Override + public void onClick(View v) { + LinphoneManager.getCallManager().switchCamera(); + } + }); } } else { + preview.setVisibility(View.GONE); core.setNativePreviewWindowId(null); core.enableVideoPreview(false); } diff --git a/app/src/main/java/org/linphone/assistant/QrCodeConfigurationAssistantActivity.java b/app/src/main/java/org/linphone/assistant/QrCodeConfigurationAssistantActivity.java index 5e9276921..720f95b56 100644 --- a/app/src/main/java/org/linphone/assistant/QrCodeConfigurationAssistantActivity.java +++ b/app/src/main/java/org/linphone/assistant/QrCodeConfigurationAssistantActivity.java @@ -71,19 +71,22 @@ public class QrCodeConfigurationAssistantActivity extends AssistantActivity { if (core != null && core.getVideoDevicesList().length > 1) { changeCamera.setVisibility(View.VISIBLE); } + + setBackCamera(); } @Override - protected void onStart() { - super.onStart(); - setBackCamera(); + protected void onResume() { + super.onResume(); + launchQrcodeReader(); } @Override - public void onDestroy() { - super.onDestroy(); + public void onPause() { enableQrcodeReader(false); + + super.onPause(); } private void enableQrcodeReader(boolean enable) { diff --git a/app/src/main/java/org/linphone/settings/LinphonePreferences.java b/app/src/main/java/org/linphone/settings/LinphonePreferences.java index 84b0c2260..bd664c3b3 100644 --- a/app/src/main/java/org/linphone/settings/LinphonePreferences.java +++ b/app/src/main/java/org/linphone/settings/LinphonePreferences.java @@ -1135,4 +1135,12 @@ public class LinphonePreferences { public void setOpenH264CodecDownloadEnabled(boolean enable) { getConfig().setBool("app", "open_h264_download_enabled", enable); } + + public boolean isVideoPreviewEnabled() { + return isVideoEnabled() && getConfig().getBool("app", "video_preview", false); + } + + public void setVideoPreviewEnabled(boolean enabled) { + getConfig().setBool("app", "video_preview", enabled); + } } diff --git a/app/src/main/java/org/linphone/settings/VideoSettingsFragment.java b/app/src/main/java/org/linphone/settings/VideoSettingsFragment.java index c0201d108..282721cab 100644 --- a/app/src/main/java/org/linphone/settings/VideoSettingsFragment.java +++ b/app/src/main/java/org/linphone/settings/VideoSettingsFragment.java @@ -46,7 +46,7 @@ public class VideoSettingsFragment extends SettingsFragment { private View mRootView; private LinphonePreferences mPrefs; - private SwitchSetting mEnable, mAutoInitiate, mAutoAccept, mOverlay; + private SwitchSetting mEnable, mAutoInitiate, mAutoAccept, mOverlay, mVideoPreview; private ListSetting mPreset, mSize, mFps; private TextSetting mBandwidth; private LinearLayout mVideoCodecs; @@ -75,6 +75,8 @@ public class VideoSettingsFragment extends SettingsFragment { private void loadSettings() { mEnable = mRootView.findViewById(R.id.pref_video_enable); + mVideoPreview = mRootView.findViewById(R.id.pref_video_preview); + mAutoInitiate = mRootView.findViewById(R.id.pref_video_initiate_call_with_video); mAutoAccept = mRootView.findViewById(R.id.pref_video_automatically_accept_video); @@ -103,6 +105,7 @@ public class VideoSettingsFragment extends SettingsFragment { public void onBoolValueChanged(boolean newValue) { mPrefs.enableVideo(newValue); if (!newValue) { + mVideoPreview.setChecked(false); mAutoAccept.setChecked(false); mAutoInitiate.setChecked(false); } @@ -110,6 +113,14 @@ public class VideoSettingsFragment extends SettingsFragment { } }); + mVideoPreview.setListener( + new SettingListenerBase() { + @Override + public void onBoolValueChanged(boolean newValue) { + mPrefs.setVideoPreviewEnabled(newValue); + } + }); + mAutoInitiate.setListener( new SettingListenerBase() { @Override @@ -185,6 +196,8 @@ public class VideoSettingsFragment extends SettingsFragment { mEnable.setChecked(mPrefs.isVideoEnabled()); updateVideoSettingsVisibility(mPrefs.isVideoEnabled()); + mVideoPreview.setChecked(mPrefs.isVideoPreviewEnabled()); + mAutoInitiate.setChecked(mPrefs.shouldInitiateVideoCall()); mAutoAccept.setChecked(mPrefs.shouldAutomaticallyAcceptVideoRequests()); @@ -265,6 +278,13 @@ public class VideoSettingsFragment extends SettingsFragment { } private void updateVideoSettingsVisibility(boolean show) { + mVideoPreview.setVisibility( + show + && getResources().getBoolean(R.bool.isTablet) + && getResources() + .getBoolean(R.bool.show_camera_preview_on_dialer_on_tablets) + ? View.VISIBLE + : View.GONE); mAutoInitiate.setVisibility(show ? View.VISIBLE : View.GONE); mAutoAccept.setVisibility(show ? View.VISIBLE : View.GONE); mOverlay.setVisibility(show ? View.VISIBLE : View.GONE); diff --git a/app/src/main/res/layout-sw533dp-land/dialer.xml b/app/src/main/res/layout-sw533dp-land/dialer.xml index 5a4758f06..0a55f797d 100644 --- a/app/src/main/res/layout-sw533dp-land/dialer.xml +++ b/app/src/main/res/layout-sw533dp-land/dialer.xml @@ -14,6 +14,7 @@ android:id="@+id/video_preview" android:layout_width="match_parent" android:layout_height="match_parent" + android:layout_centerInParent="true" android:visibility="gone"/> + android:layout_height="match_parent" + android:background="@color/black_color"> + android:layout_height="match_parent" + android:layout_centerInParent="true"/> + + None Preferences - Enable Video + Enable video Audio @@ -425,7 +425,7 @@ Video preset Preferred video size Preferred FPS - + Display camera preview on dialer Bandwidth limit in kbits/s Codecs