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">
<item android:state_pressed="true"
android:drawable="@drawable/micro_off_over" />
<item android:state_enabled="false"
android:drawable="@drawable/micro_off_disabled" />
<item
android:drawable="@drawable/micro_off_default" />
</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">
<item android:state_pressed="true"
android:drawable="@drawable/micro_on_over" />
<item android:state_enabled="false"
android:drawable="@drawable/micro_on_disabled" />
<item
android:drawable="@drawable/micro_on_default" />
</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">
<item android:state_pressed="true"
android:drawable="@drawable/speaker_off_over" />
<item android:state_enabled="false"
android:drawable="@drawable/speaker_off_disabled" />
<item
android:drawable="@drawable/speaker_off_default" />
</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">
<item android:state_pressed="true"
android:drawable="@drawable/speaker_on_over" />
<item android:state_enabled="false"
android:drawable="@drawable/speaker_on_disabled" />
<item
android:drawable="@drawable/speaker_on_default" />
</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">
<item android:state_pressed="true"
android:drawable="@drawable/video_off_over" />
<item android:state_enabled="false"
android:drawable="@drawable/video_off_disabled" />
<item
android:drawable="@drawable/video_off_default" />
</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">
<item android:state_pressed="true"
android:drawable="@drawable/video_on_over" />
<item android:state_enabled="false"
android:drawable="@drawable/video_on_disabled" />
<item
android:drawable="@drawable/video_on_default" />
</selector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

View file

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

View file

@ -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,34 +104,62 @@ 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);
}
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_off_over);
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) {
status = statusFragment;
@ -216,8 +240,12 @@ public class InCallActivity extends FragmentActivity implements
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragmentContainer, audioCallFragment);
try {
transaction.commitAllowingStateLoss();
} catch (Exception e) {
transaction.commit();
}
}
private void replaceFragmentAudioByVideo() {
switchCamera.setVisibility(View.VISIBLE);
@ -225,7 +253,11 @@ public class InCallActivity extends FragmentActivity implements
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragmentContainer, videoCallFragment);
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);
}
}
@ -375,6 +407,10 @@ public class InCallActivity extends FragmentActivity implements
isVideoEnabled = isVideoEnabledInCall;
switchVideo(isVideoEnabled);
}
isMicMuted = LinphoneManager.getLc().isMicMuted();
isSpeakerEnabled = LinphoneManager.getLc().isSpeakerEnabled();
enableAndRefreshInCallActions();
}
}