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