From 2839b810377f6253e610f8ac70c556f95ff6d611 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Fri, 13 Apr 2012 10:05:56 +0200 Subject: [PATCH] Some fixes and improvements --- AndroidManifest.xml | 1 - src/org/linphone/DialerActivity.java | 77 +++++++++++++++---------- src/org/linphone/LinphoneActivity.java | 6 +- src/org/linphone/VideoCallActivity.java | 10 ++++ 4 files changed, 59 insertions(+), 35 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 73ae15062..a1b05d19f 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -38,7 +38,6 @@ diff --git a/src/org/linphone/DialerActivity.java b/src/org/linphone/DialerActivity.java index ed6a7203a..fb52643ff 100644 --- a/src/org/linphone/DialerActivity.java +++ b/src/org/linphone/DialerActivity.java @@ -28,6 +28,7 @@ import org.linphone.core.LinphoneCore.RegistrationState; import org.linphone.core.LinphoneCoreException; import org.linphone.core.LinphoneProxyConfig; import org.linphone.core.Log; +import org.linphone.mediastream.Version; import org.linphone.mediastream.video.capture.hwconf.AndroidCameraConfiguration; import org.linphone.ui.AddressAware; import org.linphone.ui.AddressText; @@ -40,6 +41,7 @@ import android.app.AlertDialog; import android.app.Dialog; import android.content.Intent; import android.content.SharedPreferences; +import android.content.pm.ActivityInfo; import android.hardware.Camera; import android.hardware.Camera.CameraInfo; import android.net.Uri; @@ -203,6 +205,9 @@ public class DialerActivity extends Activity implements LinphoneGuiListener { } public void onCreate(Bundle savedInstanceState) { + if (Version.isXLargeScreen(this)) { + this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); + } setContentView(R.layout.dialer); mAddress = (AddressText) findViewById(R.id.SipUri); @@ -298,33 +303,37 @@ public class DialerActivity extends Activity implements LinphoneGuiListener { }); } - mBack.setOnClickListener(new OnClickListener() { - public void onClick(View v) { - LinphoneCall call = LinphoneManager.getLc().getCurrentCall(); - if (call.getCurrentParamsCopy().getVideoEnabled()) - LinphoneActivity.instance().startVideoActivity(call, 0); - else - LinphoneActivity.instance().startIncallActivity(); - } - }); + if (mBack != null) { + mBack.setOnClickListener(new OnClickListener() { + public void onClick(View v) { + LinphoneCall call = LinphoneManager.getLc().getCurrentCall(); + if (call.getCurrentParamsCopy().getVideoEnabled()) + LinphoneActivity.instance().startVideoActivity(call, 0); + else + LinphoneActivity.instance().startIncallActivity(); + } + }); + } - mAddCall.setOnClickListener(new OnClickListener() { - public void onClick(View v) { - LinphoneCall call = LinphoneManager.getLc().getCurrentCall(); - if (call != null && !call.isInConference()) { - LinphoneManager.getLc().pauseCall(call); - } else { - LinphoneManager.getLc().leaveConference(); + if (mAddCall != null) { + mAddCall.setOnClickListener(new OnClickListener() { + public void onClick(View v) { + LinphoneCall call = LinphoneManager.getLc().getCurrentCall(); + if (call != null && !call.isInConference()) { + LinphoneManager.getLc().pauseCall(call); + } else { + LinphoneManager.getLc().leaveConference(); + } + + try { + LinphoneManager.getLc().invite(mAddress.getText().toString()); + } catch (LinphoneCoreException e) { + Log.e(e); + Toast.makeText(DialerActivity.this, R.string.error_adding_new_call, Toast.LENGTH_LONG).show(); + } } - - try { - LinphoneManager.getLc().invite(mAddress.getText().toString()); - } catch (LinphoneCoreException e) { - Log.e(e); - Toast.makeText(DialerActivity.this, R.string.error_adding_new_call, Toast.LENGTH_LONG).show(); - } - } - }); + }); + } } private void checkIfOutgoingCallIntentReceived() { @@ -462,10 +471,11 @@ public class DialerActivity extends Activity implements LinphoneGuiListener { public void onCallStateChanged(LinphoneCall call, State s, String m) { if (mVideoCaptureView != null && mCamera == null && !LinphoneManager.getLc().isIncall()) { - mInCallControls.setVisibility(View.GONE); + if (mInCallControls != null) + mInCallControls.setVisibility(View.GONE); mCall.setVisibility(View.VISIBLE); - if (AndroidCameraConfiguration.hasSeveralCameras()) + if (AndroidCameraConfiguration.hasSeveralCameras() && mSwitchCamera != null) mSwitchCamera.setVisibility(View.VISIBLE); mCamera = Camera.open(mCurrentCameraId); @@ -494,9 +504,11 @@ public class DialerActivity extends Activity implements LinphoneGuiListener { super.onResume(); - mInCallControls.setVisibility(View.GONE); + if (mInCallControls != null) + mInCallControls.setVisibility(View.GONE); mCall.setVisibility(View.VISIBLE); - if (AndroidCameraConfiguration.hasSeveralCameras()) + + if (AndroidCameraConfiguration.hasSeveralCameras() && mSwitchCamera != null) mSwitchCamera.setVisibility(View.VISIBLE); if (mVideoCaptureView != null && mCamera == null && !LinphoneManager.getLc().isIncall()) @@ -506,9 +518,12 @@ public class DialerActivity extends Activity implements LinphoneGuiListener { mCamera.startPreview(); } else if (LinphoneManager.getLc().isIncall()) { - mInCallControls.setVisibility(View.VISIBLE); + if (mInCallControls != null) + mInCallControls.setVisibility(View.VISIBLE); mCall.setVisibility(View.GONE); - mSwitchCamera.setVisibility(View.INVISIBLE); + + if (mSwitchCamera != null) + mSwitchCamera.setVisibility(View.INVISIBLE); } } diff --git a/src/org/linphone/LinphoneActivity.java b/src/org/linphone/LinphoneActivity.java index d47dc937d..579ab9078 100644 --- a/src/org/linphone/LinphoneActivity.java +++ b/src/org/linphone/LinphoneActivity.java @@ -23,10 +23,10 @@ import static android.content.Intent.ACTION_MAIN; import org.linphone.LinphoneSimpleListener.LinphoneOnCallStateChangedListener; import org.linphone.core.LinphoneCall; -import org.linphone.core.LinphoneCore; -import org.linphone.core.Log; import org.linphone.core.LinphoneCall.State; +import org.linphone.core.LinphoneCore; import org.linphone.core.LinphoneCore.RegistrationState; +import org.linphone.core.Log; import org.linphone.mediastream.Version; import android.app.AlertDialog; @@ -46,10 +46,10 @@ import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.OrientationEventListener; +import android.widget.TabHost.TabSpec; import android.widget.TabWidget; import android.widget.TextView; import android.widget.Toast; -import android.widget.TabHost.TabSpec; public class LinphoneActivity extends TabActivity implements ContactPicked , LinphoneOnCallStateChangedListener diff --git a/src/org/linphone/VideoCallActivity.java b/src/org/linphone/VideoCallActivity.java index 4dec1712b..969093b34 100755 --- a/src/org/linphone/VideoCallActivity.java +++ b/src/org/linphone/VideoCallActivity.java @@ -77,6 +77,7 @@ public class VideoCallActivity extends Activity implements LinphoneOnCallStateCh AndroidVideoWindowImpl androidVideoWindowImpl; private Runnable mCallQualityUpdater, mControls; private LinearLayout mControlsLayout; + private boolean shouldRestartVideoOnResume = false; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -256,6 +257,11 @@ public class VideoCallActivity extends Activity implements LinphoneOnCallStateCh if (mControlsLayout != null) mControlsLayout.setVisibility(View.GONE); + + if (shouldRestartVideoOnResume) { + LinphoneManager.getLc().getCurrentCall().enableCamera(true); + shouldRestartVideoOnResume = false; + } } public boolean onKeyDown(int keyCode, KeyEvent event) { @@ -278,6 +284,10 @@ public class VideoCallActivity extends Activity implements LinphoneOnCallStateCh LinphoneManager.removeListener(this); if (isFinishing()) { videoCall = null; // release reference + } else { + // Send NoWebcam since Android 4.0 can't get the video from the webcam if the activity is not in foreground + shouldRestartVideoOnResume = true; + LinphoneManager.getLc().getCurrentCall().enableCamera(false); } launched=false; synchronized (androidVideoWindowImpl) {