Fix incall incons states

This commit is contained in:
Sylvain Berfini 2012-07-06 16:10:55 +02:00
parent 506c56eee0
commit 378cce4d7b
17 changed files with 71 additions and 23 deletions

View file

@ -2,6 +2,8 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" <item android:state_pressed="true"
android:drawable="@drawable/micro_off_over" /> android:drawable="@drawable/micro_off_over" />
<item android:state_enabled="false"
android:drawable="@drawable/micro_off_disabled" />
<item <item
android:drawable="@drawable/micro_off_default" /> android:drawable="@drawable/micro_off_default" />
</selector> </selector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

View file

@ -2,6 +2,8 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" <item android:state_pressed="true"
android:drawable="@drawable/micro_on_over" /> android:drawable="@drawable/micro_on_over" />
<item android:state_enabled="false"
android:drawable="@drawable/micro_on_disabled" />
<item <item
android:drawable="@drawable/micro_on_default" /> android:drawable="@drawable/micro_on_default" />
</selector> </selector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

View file

@ -2,6 +2,8 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" <item android:state_pressed="true"
android:drawable="@drawable/speaker_off_over" /> android:drawable="@drawable/speaker_off_over" />
<item android:state_enabled="false"
android:drawable="@drawable/speaker_off_disabled" />
<item <item
android:drawable="@drawable/speaker_off_default" /> android:drawable="@drawable/speaker_off_default" />
</selector> </selector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

View file

@ -2,6 +2,8 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" <item android:state_pressed="true"
android:drawable="@drawable/speaker_on_over" /> android:drawable="@drawable/speaker_on_over" />
<item android:state_enabled="false"
android:drawable="@drawable/speaker_on_disabled" />
<item <item
android:drawable="@drawable/speaker_on_default" /> android:drawable="@drawable/speaker_on_default" />
</selector> </selector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

View file

@ -2,6 +2,8 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" <item android:state_pressed="true"
android:drawable="@drawable/video_off_over" /> android:drawable="@drawable/video_off_over" />
<item android:state_enabled="false"
android:drawable="@drawable/video_off_disabled" />
<item <item
android:drawable="@drawable/video_off_default" /> android:drawable="@drawable/video_off_default" />
</selector> </selector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

View file

@ -2,6 +2,8 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" <item android:state_pressed="true"
android:drawable="@drawable/video_on_over" /> android:drawable="@drawable/video_on_over" />
<item android:state_enabled="false"
android:drawable="@drawable/video_on_disabled" />
<item <item
android:drawable="@drawable/video_on_default" /> android:drawable="@drawable/video_on_default" />
</selector> </selector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

View file

@ -56,7 +56,7 @@
android:id="@+id/micro" android:id="@+id/micro"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:src="@drawable/micro_off" android:src="@drawable/micro_on"
android:scaleType="fitXY" android:scaleType="fitXY"
android:layout_weight="0.25"/> android:layout_weight="0.25"/>

View file

@ -61,7 +61,7 @@ public class InCallActivity extends FragmentActivity implements
private StatusFragment status; private StatusFragment status;
private AudioCallFragment audioCallFragment; private AudioCallFragment audioCallFragment;
private VideoCallFragment videoCallFragment; private VideoCallFragment videoCallFragment;
private boolean isSpeakerEnabled, isMicMuted, isVideoEnabled; private boolean isSpeakerEnabled = false, isMicMuted = false, isVideoEnabled = false;
private LinearLayout mControlsLayout; private LinearLayout mControlsLayout;
static final boolean isInstanciated() { static final boolean isInstanciated() {
@ -82,10 +82,6 @@ public class InCallActivity extends FragmentActivity implements
if (savedInstanceState != null) { if (savedInstanceState != null) {
return; return;
} }
isSpeakerEnabled = LinphoneManager.getInstance().isSpeakerOn();
isMicMuted = LinphoneManager.getLc().isMicMuted();
isVideoEnabled = getIntent().getBooleanExtra("VideoEnabled", false);
initUI(); initUI();
Fragment callFragment; Fragment callFragment;
@ -108,33 +104,61 @@ public class InCallActivity extends FragmentActivity implements
private void initUI() { private void initUI() {
video = (ImageView) findViewById(R.id.video); video = (ImageView) findViewById(R.id.video);
video.setOnClickListener(this); video.setOnClickListener(this);
video.setEnabled(false);
micro = (ImageView) findViewById(R.id.micro); micro = (ImageView) findViewById(R.id.micro);
micro.setOnClickListener(this); micro.setOnClickListener(this);
micro.setEnabled(false);
speaker = (ImageView) findViewById(R.id.speaker); speaker = (ImageView) findViewById(R.id.speaker);
speaker.setOnClickListener(this); speaker.setOnClickListener(this);
speaker.setEnabled(false);
addCall = (ImageView) findViewById(R.id.addCall); addCall = (ImageView) findViewById(R.id.addCall);
addCall.setOnClickListener(this); addCall.setOnClickListener(this);
addCall.setEnabled(false);
pause = (ImageView) findViewById(R.id.pause); pause = (ImageView) findViewById(R.id.pause);
pause.setOnClickListener(this); pause.setOnClickListener(this);
pause.setEnabled(false);
hangUp = (ImageView) findViewById(R.id.hangUp); hangUp = (ImageView) findViewById(R.id.hangUp);
hangUp.setOnClickListener(this); hangUp.setOnClickListener(this);
dialer = (ImageView) findViewById(R.id.dialer); dialer = (ImageView) findViewById(R.id.dialer);
dialer.setOnClickListener(this); dialer.setOnClickListener(this);
dialer.setEnabled(false);
switchCamera = (ImageView) findViewById(R.id.switchCamera); switchCamera = (ImageView) findViewById(R.id.switchCamera);
switchCamera.setOnClickListener(this); switchCamera.setOnClickListener(this);
mControlsLayout = (LinearLayout) findViewById(R.id.menu); mControlsLayout = (LinearLayout) findViewById(R.id.menu);
}
if (isVideoEnabled) {
video.setImageResource(R.drawable.video_off); private void enableAndRefreshInCallActions() {
} mHandler.post(new Runnable() {
if (isSpeakerEnabled) { @Override
speaker.setImageResource(R.drawable.speaker_off_over); public void run() {
} video.setEnabled(true);
if (isMicMuted) { micro.setEnabled(true);
micro.setImageResource(R.drawable.micro_on); 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) { public void updateStatusFragment(StatusFragment statusFragment) {
@ -216,7 +240,11 @@ public class InCallActivity extends FragmentActivity implements
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragmentContainer, audioCallFragment); transaction.replace(R.id.fragmentContainer, audioCallFragment);
transaction.commit(); try {
transaction.commitAllowingStateLoss();
} catch (Exception e) {
transaction.commit();
}
} }
private void replaceFragmentAudioByVideo() { private void replaceFragmentAudioByVideo() {
@ -225,7 +253,11 @@ public class InCallActivity extends FragmentActivity implements
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragmentContainer, videoCallFragment); transaction.replace(R.id.fragmentContainer, videoCallFragment);
transaction.commitAllowingStateLoss(); try {
transaction.commitAllowingStateLoss();
} catch (Exception e) {
transaction.commit();
}
} }
private void toogleMicro() { private void toogleMicro() {
@ -233,9 +265,9 @@ public class InCallActivity extends FragmentActivity implements
isMicMuted = !isMicMuted; isMicMuted = !isMicMuted;
lc.muteMic(isMicMuted); lc.muteMic(isMicMuted);
if (isMicMuted) { if (isMicMuted) {
micro.setImageResource(R.drawable.micro_on);
} else {
micro.setImageResource(R.drawable.micro_off); 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; isSpeakerEnabled = !isSpeakerEnabled;
if (isSpeakerEnabled) { if (isSpeakerEnabled) {
LinphoneManager.getInstance().routeAudioToSpeaker(); LinphoneManager.getInstance().routeAudioToSpeaker();
speaker.setImageResource(R.drawable.speaker_off); speaker.setImageResource(R.drawable.speaker_on);
} else { } else {
LinphoneManager.getInstance().routeAudioToReceiver(); 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(); finish();
} }
if (state == State.StreamsRunning) { if (state == State.StreamsRunning) {
boolean isVideoEnabledInCall = call.getCurrentParamsCopy().getVideoEnabled(); boolean isVideoEnabledInCall = call.getCurrentParamsCopy().getVideoEnabled();
if (isVideoEnabledInCall != isVideoEnabled) { if (isVideoEnabledInCall != isVideoEnabled) {
isVideoEnabled = isVideoEnabledInCall; isVideoEnabled = isVideoEnabledInCall;
switchVideo(isVideoEnabled); switchVideo(isVideoEnabled);
} }
isMicMuted = LinphoneManager.getLc().isMicMuted();
isSpeakerEnabled = LinphoneManager.getLc().isSpeakerEnabled();
enableAndRefreshInCallActions();
} }
} }