diff --git a/res/drawable/micro_off.xml b/res/drawable/micro_off.xml
index eca25c40f..8a260ceaf 100644
--- a/res/drawable/micro_off.xml
+++ b/res/drawable/micro_off.xml
@@ -2,6 +2,8 @@
+
diff --git a/res/drawable/micro_off_disabled.png b/res/drawable/micro_off_disabled.png
new file mode 100644
index 000000000..39f55197e
Binary files /dev/null and b/res/drawable/micro_off_disabled.png differ
diff --git a/res/drawable/micro_on.xml b/res/drawable/micro_on.xml
index cd823c397..396c876b4 100644
--- a/res/drawable/micro_on.xml
+++ b/res/drawable/micro_on.xml
@@ -2,6 +2,8 @@
+
diff --git a/res/drawable/micro_on_disabled.png b/res/drawable/micro_on_disabled.png
new file mode 100644
index 000000000..87fee6aa1
Binary files /dev/null and b/res/drawable/micro_on_disabled.png differ
diff --git a/res/drawable/options_default.png b/res/drawable/options_default.png
new file mode 100644
index 000000000..2a2c832e6
Binary files /dev/null and b/res/drawable/options_default.png differ
diff --git a/res/drawable/options_disabled.png b/res/drawable/options_disabled.png
new file mode 100644
index 000000000..3f5a32482
Binary files /dev/null and b/res/drawable/options_disabled.png differ
diff --git a/res/drawable/options_over.png b/res/drawable/options_over.png
new file mode 100644
index 000000000..4c33e642b
Binary files /dev/null and b/res/drawable/options_over.png differ
diff --git a/res/drawable/speaker_off.xml b/res/drawable/speaker_off.xml
index cd145c177..125cebfe2 100644
--- a/res/drawable/speaker_off.xml
+++ b/res/drawable/speaker_off.xml
@@ -2,6 +2,8 @@
+
diff --git a/res/drawable/speaker_off_disabled.png b/res/drawable/speaker_off_disabled.png
new file mode 100644
index 000000000..cb5a1dcf7
Binary files /dev/null and b/res/drawable/speaker_off_disabled.png differ
diff --git a/res/drawable/speaker_on.xml b/res/drawable/speaker_on.xml
index 19f98e8d3..b1e7ce119 100644
--- a/res/drawable/speaker_on.xml
+++ b/res/drawable/speaker_on.xml
@@ -2,6 +2,8 @@
+
diff --git a/res/drawable/speaker_on_disabled.png b/res/drawable/speaker_on_disabled.png
new file mode 100644
index 000000000..a07dc1f5c
Binary files /dev/null and b/res/drawable/speaker_on_disabled.png differ
diff --git a/res/drawable/video_off.xml b/res/drawable/video_off.xml
index 871dfe38a..ded805ba2 100644
--- a/res/drawable/video_off.xml
+++ b/res/drawable/video_off.xml
@@ -2,6 +2,8 @@
+
diff --git a/res/drawable/video_off_disabled.png b/res/drawable/video_off_disabled.png
new file mode 100644
index 000000000..d9806305d
Binary files /dev/null and b/res/drawable/video_off_disabled.png differ
diff --git a/res/drawable/video_on.xml b/res/drawable/video_on.xml
index 9fd258697..851cef5ef 100644
--- a/res/drawable/video_on.xml
+++ b/res/drawable/video_on.xml
@@ -2,6 +2,8 @@
+
diff --git a/res/drawable/video_on_disabled.png b/res/drawable/video_on_disabled.png
new file mode 100644
index 000000000..02a1cc236
Binary files /dev/null and b/res/drawable/video_on_disabled.png differ
diff --git a/res/layout/incall.xml b/res/layout/incall.xml
index 6dfdd11be..0223622f0 100644
--- a/res/layout/incall.xml
+++ b/res/layout/incall.xml
@@ -56,7 +56,7 @@
android:id="@+id/micro"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:src="@drawable/micro_off"
+ android:src="@drawable/micro_on"
android:scaleType="fitXY"
android:layout_weight="0.25"/>
diff --git a/src/org/linphone/InCallActivity.java b/src/org/linphone/InCallActivity.java
index 86cad3d85..21e1db2a1 100644
--- a/src/org/linphone/InCallActivity.java
+++ b/src/org/linphone/InCallActivity.java
@@ -61,7 +61,7 @@ public class InCallActivity extends FragmentActivity implements
private StatusFragment status;
private AudioCallFragment audioCallFragment;
private VideoCallFragment videoCallFragment;
- private boolean isSpeakerEnabled, isMicMuted, isVideoEnabled;
+ private boolean isSpeakerEnabled = false, isMicMuted = false, isVideoEnabled = false;
private LinearLayout mControlsLayout;
static final boolean isInstanciated() {
@@ -82,10 +82,6 @@ public class InCallActivity extends FragmentActivity implements
if (savedInstanceState != null) {
return;
}
-
- isSpeakerEnabled = LinphoneManager.getInstance().isSpeakerOn();
- isMicMuted = LinphoneManager.getLc().isMicMuted();
- isVideoEnabled = getIntent().getBooleanExtra("VideoEnabled", false);
initUI();
Fragment callFragment;
@@ -108,33 +104,61 @@ public class InCallActivity extends FragmentActivity implements
private void initUI() {
video = (ImageView) findViewById(R.id.video);
video.setOnClickListener(this);
+ video.setEnabled(false);
micro = (ImageView) findViewById(R.id.micro);
micro.setOnClickListener(this);
+ micro.setEnabled(false);
speaker = (ImageView) findViewById(R.id.speaker);
speaker.setOnClickListener(this);
+ speaker.setEnabled(false);
addCall = (ImageView) findViewById(R.id.addCall);
addCall.setOnClickListener(this);
+ addCall.setEnabled(false);
pause = (ImageView) findViewById(R.id.pause);
pause.setOnClickListener(this);
+ pause.setEnabled(false);
hangUp = (ImageView) findViewById(R.id.hangUp);
hangUp.setOnClickListener(this);
dialer = (ImageView) findViewById(R.id.dialer);
dialer.setOnClickListener(this);
+ dialer.setEnabled(false);
switchCamera = (ImageView) findViewById(R.id.switchCamera);
switchCamera.setOnClickListener(this);
mControlsLayout = (LinearLayout) findViewById(R.id.menu);
-
- if (isVideoEnabled) {
- video.setImageResource(R.drawable.video_off);
- }
- if (isSpeakerEnabled) {
- speaker.setImageResource(R.drawable.speaker_off_over);
- }
- if (isMicMuted) {
- micro.setImageResource(R.drawable.micro_on);
- }
+ }
+
+ private void enableAndRefreshInCallActions() {
+ mHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ video.setEnabled(true);
+ micro.setEnabled(true);
+ speaker.setEnabled(true);
+ addCall.setEnabled(true);
+ pause.setEnabled(true);
+ dialer.setEnabled(true);
+
+ if (isVideoEnabled) {
+ video.setImageResource(R.drawable.video_on);
+ } else {
+ video.setImageResource(R.drawable.video_off);
+ }
+
+ if (isSpeakerEnabled) {
+ speaker.setImageResource(R.drawable.speaker_on);
+ } else {
+ speaker.setImageResource(R.drawable.speaker_off);
+ }
+
+ if (isMicMuted) {
+ micro.setImageResource(R.drawable.micro_off);
+ } else {
+ micro.setImageResource(R.drawable.micro_on);
+ }
+ }
+ });
}
public void updateStatusFragment(StatusFragment statusFragment) {
@@ -216,7 +240,11 @@ public class InCallActivity extends FragmentActivity implements
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragmentContainer, audioCallFragment);
- transaction.commit();
+ try {
+ transaction.commitAllowingStateLoss();
+ } catch (Exception e) {
+ transaction.commit();
+ }
}
private void replaceFragmentAudioByVideo() {
@@ -225,7 +253,11 @@ public class InCallActivity extends FragmentActivity implements
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragmentContainer, videoCallFragment);
- transaction.commitAllowingStateLoss();
+ try {
+ transaction.commitAllowingStateLoss();
+ } catch (Exception e) {
+ transaction.commit();
+ }
}
private void toogleMicro() {
@@ -233,9 +265,9 @@ public class InCallActivity extends FragmentActivity implements
isMicMuted = !isMicMuted;
lc.muteMic(isMicMuted);
if (isMicMuted) {
- micro.setImageResource(R.drawable.micro_on);
- } else {
micro.setImageResource(R.drawable.micro_off);
+ } else {
+ micro.setImageResource(R.drawable.micro_on);
}
}
@@ -243,10 +275,10 @@ public class InCallActivity extends FragmentActivity implements
isSpeakerEnabled = !isSpeakerEnabled;
if (isSpeakerEnabled) {
LinphoneManager.getInstance().routeAudioToSpeaker();
- speaker.setImageResource(R.drawable.speaker_off);
+ speaker.setImageResource(R.drawable.speaker_on);
} else {
LinphoneManager.getInstance().routeAudioToReceiver();
- speaker.setImageResource(R.drawable.speaker_on);
+ speaker.setImageResource(R.drawable.speaker_off);
}
}
@@ -369,12 +401,16 @@ public class InCallActivity extends FragmentActivity implements
finish();
}
- if (state == State.StreamsRunning) {
+ if (state == State.StreamsRunning) {
boolean isVideoEnabledInCall = call.getCurrentParamsCopy().getVideoEnabled();
if (isVideoEnabledInCall != isVideoEnabled) {
isVideoEnabled = isVideoEnabledInCall;
switchVideo(isVideoEnabled);
}
+
+ isMicMuted = LinphoneManager.getLc().isMicMuted();
+ isSpeakerEnabled = LinphoneManager.getLc().isSpeakerEnabled();
+ enableAndRefreshInCallActions();
}
}