Fixed current CallParams not copied.
Fixed not always sending static image on camera muted. Improved organization of preference activity.
This commit is contained in:
parent
1d7b076475
commit
720a8aa7a9
8 changed files with 122 additions and 48 deletions
|
@ -1,5 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="pref_video">Video</string>
|
||||
<string name="pref_preferences">Preferences</string>
|
||||
<string name="pref_video_codec_h263_title">H263</string>
|
||||
<string name="pref_video_codec_h263_key">pref_video_codec_h263_key</string>
|
||||
<string name="pref_video_codec_mpeg4_title">MPEG4</string>
|
||||
|
|
|
@ -1,50 +1,117 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
|
||||
<PreferenceCategory android:title="@string/pref_sipaccount">
|
||||
<EditTextPreference android:title="@string/pref_username"
|
||||
android:key="@string/pref_username_key"></EditTextPreference>
|
||||
|
||||
<EditTextPreference android:title="@string/pref_passwd"
|
||||
android:key="@string/pref_passwd_key" android:password="true"></EditTextPreference>
|
||||
|
||||
<EditTextPreference android:title="@string/pref_domain"
|
||||
android:key="@string/pref_domain_key"></EditTextPreference>
|
||||
|
||||
<EditTextPreference android:title="@string/pref_proxy"
|
||||
android:key="@string/pref_proxy_key"></EditTextPreference>
|
||||
<CheckBoxPreference android:enabled="true" android:selectable="true" android:key="@string/pref_enable_outbound_proxy_key" android:title="@string/pref_enable_outbound_proxy"></CheckBoxPreference>
|
||||
|
||||
<CheckBoxPreference android:enabled="true"
|
||||
android:selectable="true" android:key="@string/pref_enable_outbound_proxy_key"
|
||||
android:title="@string/pref_enable_outbound_proxy"></CheckBoxPreference>
|
||||
</PreferenceCategory>
|
||||
<PreferenceCategory android:title="@string/pref_advanced">
|
||||
<EditTextPreference android:title="@string/pref_stun_server" android:key="@string/pref_stun_server_key"></EditTextPreference>
|
||||
<PreferenceScreen android:title="@string/pref_codecs" android:key="@string/pref_codecs_key">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<PreferenceCategory android:title="@string/pref_preferences">
|
||||
<CheckBoxPreference android:title="@string/pref_autostart"
|
||||
android:key="@string/pref_autostart_key" android:defaultValue="false"></CheckBoxPreference>
|
||||
|
||||
<CheckBoxPreference android:defaultValue="true"
|
||||
android:title="@string/pref_video_enable_title" android:key="@string/pref_video_enable_key" />
|
||||
|
||||
<CheckBoxPreference android:title="@string/pref_handle_outcall"
|
||||
android:key="@string/pref_handle_outcall_key" android:summary="@string/pref_handle_outcall_summarry"></CheckBoxPreference>
|
||||
|
||||
<EditTextPreference android:title="@string/pref_stun_server"
|
||||
android:key="@string/pref_stun_server_key"></EditTextPreference>
|
||||
</PreferenceCategory>
|
||||
|
||||
|
||||
|
||||
|
||||
<PreferenceCategory android:title="@string/pref_audio">
|
||||
<PreferenceScreen android:title="@string/pref_codecs"
|
||||
android:key="@string/pref_codecs_key">
|
||||
<CheckBoxPreference android:key="@string/pref_codec_speex16_key"
|
||||
android:title="@string/pref_codec_speex16" android:defaultValue="true" android:enabled="false"></CheckBoxPreference>
|
||||
android:title="@string/pref_codec_speex16" android:defaultValue="true"
|
||||
android:enabled="false"></CheckBoxPreference>
|
||||
<CheckBoxPreference android:key="@string/pref_codec_speex8_key"
|
||||
android:title="@string/pref_codec_speex8" android:defaultValue="true"></CheckBoxPreference>
|
||||
<CheckBoxPreference android:key="@string/pref_codec_ilbc_key" android:title="@string/pref_codec_ilbc" android:enabled="false" android:shouldDisableView="true" android:defaultValue="true" android:summary="@string/pref_ilbc_summary"></CheckBoxPreference>
|
||||
<CheckBoxPreference android:key="@string/pref_codec_ilbc_key"
|
||||
android:title="@string/pref_codec_ilbc" android:enabled="false"
|
||||
android:shouldDisableView="true" android:defaultValue="true"
|
||||
android:summary="@string/pref_ilbc_summary"></CheckBoxPreference>
|
||||
<CheckBoxPreference android:key="@string/pref_codec_gsm_key"
|
||||
android:title="@string/pref_codec_gsm" android:defaultValue="true"></CheckBoxPreference>
|
||||
<CheckBoxPreference android:key="@string/pref_codec_pcmu_key"
|
||||
android:title="@string/pref_codec_pcmu" android:defaultValue="true"></CheckBoxPreference>
|
||||
<CheckBoxPreference android:key="@string/pref_codec_pcma_key"
|
||||
android:title="@string/pref_codec_pcma" android:defaultValue="true"></CheckBoxPreference>
|
||||
</PreferenceScreen><CheckBoxPreference android:title="@string/pref_autostart" android:key="@string/pref_autostart_key" android:defaultValue="false"></CheckBoxPreference>
|
||||
<CheckBoxPreference android:title="@string/pref_handle_outcall" android:key="@string/pref_handle_outcall_key" android:summary="@string/pref_handle_outcall_summarry"></CheckBoxPreference><CheckBoxPreference android:key="@string/pref_echo_cancellation_key" android:title="@string/pref_echo_cancellation" android:summary="@string/pref_echo_cancellation_summary"></CheckBoxPreference><EditTextPreference android:title="@string/pref_prefix"
|
||||
android:key="@string/pref_prefix_key"></EditTextPreference>
|
||||
|
||||
<CheckBoxPreference android:key="@string/pref_escape_plus_key" android:title="@string/pref_escape_plus"></CheckBoxPreference><CheckBoxPreference android:key="@string/pref_debug_key"
|
||||
android:title="@string/pref_debug" android:enabled="true"></CheckBoxPreference>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<CheckBoxPreference android:defaultValue="true" android:title="@string/pref_video_enable_title" android:key="@string/pref_video_enable_key" />
|
||||
<PreferenceScreen android:title="@string/pref_video_settings_title" android:dependency="@string/pref_video_enable_key" android:shouldDisableView="true"><CheckBoxPreference android:key="@string/pref_video_initiate_call_with_video_key" android:defaultValue="false" android:title="@string/pref_video_initiate_call_with_video_title" android:summary="@string/pref_video_initiate_call_with_video" android:dependency="@string/pref_video_enable_key"></CheckBoxPreference>
|
||||
<CheckBoxPreference android:key="@string/pref_video_automatically_share_my_video_key" android:title="@string/pref_video_automatically_share_my_video_title" android:defaultValue="false" android:summary="@string/pref_video_automatically_share_my_video" android:dependency="@string/pref_video_enable_key"></CheckBoxPreference>
|
||||
|
||||
</PreferenceScreen>
|
||||
<PreferenceScreen android:dependency="@string/pref_video_enable_key" android:shouldDisableView="true" android:key="@string/pref_video_codecs_key" android:title="@string/pref_video_codecs_title"><CheckBoxPreference android:key="@string/pref_video_codec_h264_key" android:title="@string/pref_video_codec_h264_title" android:defaultValue="true"></CheckBoxPreference>
|
||||
<CheckBoxPreference android:key="@string/pref_video_codec_mpeg4_key" android:title="@string/pref_video_codec_mpeg4_title" android:defaultValue="true"></CheckBoxPreference>
|
||||
<CheckBoxPreference android:key="@string/pref_video_codec_h263_key" android:title="@string/pref_video_codec_h263_title" android:enabled="false" android:defaultValue="false" android:selectable="false"></CheckBoxPreference>
|
||||
|
||||
<CheckBoxPreference android:key="@string/pref_echo_cancellation_key"
|
||||
android:title="@string/pref_echo_cancellation" android:summary="@string/pref_echo_cancellation_summary"></CheckBoxPreference>
|
||||
</PreferenceCategory>
|
||||
|
||||
|
||||
|
||||
|
||||
<PreferenceCategory android:title="@string/pref_video" android:dependency="@string/pref_video_enable_key" android:shouldDisableView="true">
|
||||
<PreferenceScreen android:dependency="@string/pref_video_enable_key"
|
||||
android:shouldDisableView="true" android:key="@string/pref_video_codecs_key"
|
||||
android:title="@string/pref_video_codecs_title">
|
||||
<CheckBoxPreference android:key="@string/pref_video_codec_h264_key"
|
||||
android:title="@string/pref_video_codec_h264_title"
|
||||
android:defaultValue="true"></CheckBoxPreference>
|
||||
<CheckBoxPreference android:key="@string/pref_video_codec_mpeg4_key"
|
||||
android:title="@string/pref_video_codec_mpeg4_title"
|
||||
android:defaultValue="true"></CheckBoxPreference>
|
||||
<CheckBoxPreference android:key="@string/pref_video_codec_h263_key"
|
||||
android:title="@string/pref_video_codec_h263_title" android:enabled="false"
|
||||
android:defaultValue="false" android:selectable="false"></CheckBoxPreference>
|
||||
</PreferenceScreen>
|
||||
|
||||
<PreferenceScreen android:title="@string/pref_video_settings_title"
|
||||
android:dependency="@string/pref_video_enable_key"
|
||||
android:shouldDisableView="true">
|
||||
<CheckBoxPreference android:key="@string/pref_video_initiate_call_with_video_key"
|
||||
android:defaultValue="false"
|
||||
android:title="@string/pref_video_initiate_call_with_video_title"
|
||||
android:summary="@string/pref_video_initiate_call_with_video"
|
||||
android:dependency="@string/pref_video_enable_key"></CheckBoxPreference>
|
||||
<CheckBoxPreference
|
||||
android:key="@string/pref_video_automatically_share_my_video_key"
|
||||
android:title="@string/pref_video_automatically_share_my_video_title"
|
||||
android:defaultValue="false"
|
||||
android:summary="@string/pref_video_automatically_share_my_video"
|
||||
android:dependency="@string/pref_video_enable_key"></CheckBoxPreference>
|
||||
</PreferenceScreen>
|
||||
</PreferenceCategory>
|
||||
|
||||
|
||||
|
||||
|
||||
<PreferenceCategory android:title="@string/pref_advanced">
|
||||
<EditTextPreference android:title="@string/pref_prefix"
|
||||
android:key="@string/pref_prefix_key"></EditTextPreference>
|
||||
|
||||
<CheckBoxPreference android:key="@string/pref_escape_plus_key"
|
||||
android:title="@string/pref_escape_plus"></CheckBoxPreference>
|
||||
|
||||
<CheckBoxPreference android:key="@string/pref_debug_key"
|
||||
android:title="@string/pref_debug" android:enabled="true"></CheckBoxPreference>
|
||||
</PreferenceCategory>
|
||||
|
||||
</PreferenceScreen>
|
||||
|
|
|
@ -88,7 +88,7 @@ public class BandwidthManager {
|
|||
|
||||
if (lc.isIncall()) {
|
||||
LinphoneCall lCall = lc.getCurrentCall();
|
||||
LinphoneCallParams params = lCall.getCurrentParamsReadOnly().copy();
|
||||
LinphoneCallParams params = lCall.getCurrentParamsCopy();
|
||||
|
||||
// Update video parm if
|
||||
if (newProfile == LOW_BANDWIDTH) {
|
||||
|
|
|
@ -169,7 +169,7 @@ public class DialerActivity extends Activity implements LinphoneCoreListener {
|
|||
public void onClick(View v) {
|
||||
LinphoneCore lLinphoneCore = LinphoneService.instance().getLinphoneCore();
|
||||
LinphoneCall lCall = lLinphoneCore.getCurrentCall();
|
||||
LinphoneCallParams params = lCall.getCurrentParamsReadOnly();
|
||||
LinphoneCallParams params = lCall.getCurrentParamsCopy();
|
||||
if (params.getVideoEnabled()) {
|
||||
// In video call; going back to video call activity
|
||||
startVideoView(VIDEO_VIEW_ACTIVITY);
|
||||
|
@ -470,7 +470,7 @@ public class DialerActivity extends Activity implements LinphoneCoreListener {
|
|||
} else if (state == LinphoneCall.State.CallEnd) {
|
||||
exitCallMode();
|
||||
} else if (state == LinphoneCall.State.StreamsRunning) {
|
||||
if (LinphoneService.instance().getLinphoneCore().getCurrentCall().getCurrentParamsReadOnly().getVideoEnabled()) {
|
||||
if (LinphoneService.instance().getLinphoneCore().getCurrentCall().getCurrentParamsCopy().getVideoEnabled()) {
|
||||
if (!VideoCallActivity.launched) {
|
||||
startVideoView(VIDEO_VIEW_ACTIVITY);
|
||||
}
|
||||
|
@ -598,7 +598,7 @@ public class DialerActivity extends Activity implements LinphoneCoreListener {
|
|||
lAddress.setDisplayName(mDisplayName);
|
||||
|
||||
try {
|
||||
LinphoneCallParams lParams = lLinphoneCore.createDefaultCallParameters().copy();
|
||||
LinphoneCallParams lParams = lLinphoneCore.createDefaultCallParameters();
|
||||
boolean prefVideoEnable = mPref.getBoolean(getString(R.string.pref_video_enable_key), false);
|
||||
boolean prefInitiateWithVideo = mPref.getBoolean(getString(R.string.pref_video_initiate_call_with_video_key), false);
|
||||
|
||||
|
|
|
@ -53,6 +53,8 @@ public class VideoCallActivity extends Activity {
|
|||
recordManager = AndroidCameraRecordManager.getInstance();
|
||||
recordManager.setSurfaceView(mVideoCaptureView, rotation);
|
||||
mVideoCaptureView.setZOrderOnTop(true);
|
||||
|
||||
if (!recordManager.isMuted()) sendStaticImage(false);
|
||||
}
|
||||
|
||||
|
||||
|
@ -85,16 +87,24 @@ public class VideoCallActivity extends Activity {
|
|||
return true;
|
||||
}
|
||||
|
||||
private void sendStaticImage(boolean send) {
|
||||
LinphoneCore lc = LinphoneService.instance().getLinphoneCore();
|
||||
if (lc.isIncall()) {
|
||||
lc.getCurrentCall().enableCamera(!send);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case R.id.videocall_menu_back_to_dialer:
|
||||
if (!recordManager.isMuted()) sendStaticImage(true);
|
||||
finish();
|
||||
break;
|
||||
case R.id.videocall_menu_change_resolution:
|
||||
BandwidthManager manager = BandwidthManager.getInstance();
|
||||
manager.setUserRestriction(!manager.isUserRestriction());
|
||||
sendStaticImage(recordManager.isMuted());
|
||||
rewriteChangeResolutionItem(item);
|
||||
break;
|
||||
case R.id.videocall_menu_terminate_call:
|
||||
|
@ -106,10 +116,7 @@ public class VideoCallActivity extends Activity {
|
|||
break;
|
||||
case R.id.videocall_menu_toggle_camera:
|
||||
recordManager.toggleMute();
|
||||
LinphoneCore lc = LinphoneService.instance().getLinphoneCore();
|
||||
if (lc.isIncall()) {
|
||||
lc.getCurrentCall().enableCamera(!recordManager.isMuted());
|
||||
}
|
||||
sendStaticImage(recordManager.isMuted());
|
||||
rewriteToggleCameraItem(item);
|
||||
break;
|
||||
default:
|
||||
|
|
|
@ -29,7 +29,7 @@ class LinphoneCallImpl implements LinphoneCall {
|
|||
private native boolean isIncoming(long nativePtr);
|
||||
native private long getRemoteAddress(long nativePtr);
|
||||
native private int getState(long nativePtr);
|
||||
private native long getCurrentParams(long nativePtr);
|
||||
private native long getCurrentParamsCopy(long nativePtr);
|
||||
private native void enableCamera(long nativePtr, boolean enabled);
|
||||
|
||||
protected LinphoneCallImpl(long aNativePtr) {
|
||||
|
@ -61,11 +61,8 @@ class LinphoneCallImpl implements LinphoneCall {
|
|||
public State getState() {
|
||||
return LinphoneCall.State.fromInt(getState(nativePtr));
|
||||
}
|
||||
public LinphoneCallParams getCurrentParamsReadOnly() {
|
||||
return new LinphoneCallParamsImpl(getCurrentParams(nativePtr));
|
||||
}
|
||||
public LinphoneCallParams getCurrentParamsReadWrite() {
|
||||
return getCurrentParamsReadOnly().copy();
|
||||
public LinphoneCallParams getCurrentParamsCopy() {
|
||||
return new LinphoneCallParamsImpl(getCurrentParamsCopy(nativePtr));
|
||||
}
|
||||
|
||||
public void enableCamera(boolean enabled) {
|
||||
|
|
|
@ -27,7 +27,7 @@ public class LinphoneCallParamsImpl implements LinphoneCallParams {
|
|||
|
||||
private native void enableVideo(long nativePtr, boolean b);
|
||||
private native boolean getVideoEnabled(long nativePtr);
|
||||
private native long copy(long nativePtr);
|
||||
private native void destroy(long nativePtr);
|
||||
|
||||
|
||||
public boolean getVideoEnabled() {
|
||||
|
@ -38,8 +38,9 @@ public class LinphoneCallParamsImpl implements LinphoneCallParams {
|
|||
enableVideo(nativePtr, b);
|
||||
}
|
||||
|
||||
public LinphoneCallParams copy() {
|
||||
return new LinphoneCallParamsImpl(copy(nativePtr));
|
||||
@Override
|
||||
protected void finalize() throws Throwable {
|
||||
destroy(nativePtr);
|
||||
super.finalize();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit 8b3112cca81a31e4b35b0c4e9e7c6217fefb5c4c
|
||||
Subproject commit 9fc45b990045768c65a346e5b41a37ab8087d0b5
|
Loading…
Reference in a new issue