Some fixes and improvements

This commit is contained in:
Sylvain Berfini 2012-04-13 10:05:56 +02:00
parent 44c2bc9419
commit 2839b81037
4 changed files with 59 additions and 35 deletions

View file

@ -38,7 +38,6 @@
<activity android:name="org.linphone.LinphoneActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar"
android:screenOrientation="landscape"
android:launchMode="singleTask"
android:windowSoftInputMode="stateAlwaysHidden|adjustResize"
> <!-- android:alwaysRetainTaskState="true" clearTaskOnLaunch="false"-->

View file

@ -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);
}
}

View file

@ -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

View file

@ -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) {