Corrected speaker and mute buttons not correctly handling state.
This commit is contained in:
parent
03568062a5
commit
c2ced898a6
4 changed files with 30 additions and 22 deletions
|
@ -25,13 +25,13 @@
|
|||
android:layout_width="fill_parent"></EditText>
|
||||
<org.linphone.component.ToggleImageButton
|
||||
android:id="@+id/mic_mute_button" android:layout_height="wrap_content"
|
||||
android:layout_width="wrap_content" toggled="@drawable/mic_muted"
|
||||
untoggled="@drawable/mic_active" android:layout_weight="0.5"
|
||||
android:layout_width="wrap_content" android:layout_weight="0.5"
|
||||
checked="@drawable/mic_muted" unchecked="@drawable/mic_active"
|
||||
android:layout_gravity="left|center_vertical" />
|
||||
<org.linphone.component.ToggleImageButton
|
||||
android:id="@+id/speaker_button" android:layout_height="wrap_content"
|
||||
android:layout_width="wrap_content" toggled="@drawable/speaker_32_on"
|
||||
untoggled="@drawable/speaker_32_off" android:layout_weight="0.5"
|
||||
android:layout_width="wrap_content" android:layout_weight="0.5"
|
||||
checked="@drawable/speaker_32_on" unchecked="@drawable/speaker_32_off"
|
||||
android:layout_gravity="right|center_vertical" />
|
||||
</FrameLayout>
|
||||
</LinearLayout>
|
||||
|
|
|
@ -26,11 +26,11 @@
|
|||
></EditText>
|
||||
<org.linphone.component.ToggleImageButton android:id="@+id/mic_mute_button"
|
||||
android:layout_height="wrap_content" android:layout_width="wrap_content"
|
||||
toggled="@drawable/mic_muted" untoggled="@drawable/mic_active"
|
||||
checked="@drawable/mic_muted" unchecked="@drawable/mic_active"
|
||||
android:layout_gravity="left|center_vertical"/>
|
||||
<org.linphone.component.ToggleImageButton android:id="@+id/speaker_button"
|
||||
android:layout_height="wrap_content" android:layout_width="wrap_content"
|
||||
toggled="@drawable/speaker_32_on" untoggled="@drawable/speaker_32_off"
|
||||
checked="@drawable/speaker_32_on" unchecked="@drawable/speaker_32_off"
|
||||
android:layout_gravity="right|center_vertical"/>
|
||||
|
||||
</FrameLayout>
|
||||
|
|
|
@ -249,17 +249,14 @@ public class DialerActivity extends Activity implements LinphoneCoreListener {
|
|||
mInCallControlRow.setVisibility(View.VISIBLE);
|
||||
mAddressLayout.setVisibility(View.GONE);
|
||||
mInCallAddressLayout.setVisibility(View.VISIBLE);
|
||||
mMute.setChecked(!lLinphoneCore.isMicMuted());
|
||||
|
||||
String DisplayName = lLinphoneCore.getRemoteAddress().getDisplayName();
|
||||
if (DisplayName!=null) {
|
||||
mDisplayNameView.setText(DisplayName);
|
||||
} else {
|
||||
mDisplayNameView.setText(lLinphoneCore.getRemoteAddress().getUserName());
|
||||
}
|
||||
if ((Integer.parseInt(Build.VERSION.SDK) <=4 && mAudioManager.getMode() == AudioManager.MODE_NORMAL)
|
||||
|| Integer.parseInt(Build.VERSION.SDK) >4 &&mAudioManager.isSpeakerphoneOn()) {
|
||||
mSpeaker.setChecked(true);
|
||||
}
|
||||
configureMuteButtons();
|
||||
mWakeLock.acquire();
|
||||
}
|
||||
}
|
||||
|
@ -271,9 +268,9 @@ public class DialerActivity extends Activity implements LinphoneCoreListener {
|
|||
public void onCheckedChanged(ToggleImageButton button, boolean isChecked) {
|
||||
LinphoneCore lc = LinphoneService.instance().getLinphoneCore();
|
||||
if (isChecked) {
|
||||
lc.muteMic(false);
|
||||
} else {
|
||||
lc.muteMic(true);
|
||||
} else {
|
||||
lc.muteMic(false);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -497,6 +494,8 @@ public class DialerActivity extends Activity implements LinphoneCoreListener {
|
|||
mDisplayNameView.setText(lc.getRemoteAddress().toString());
|
||||
}
|
||||
}
|
||||
configureMuteButtons();
|
||||
|
||||
if (mSpeaker.isChecked()) {
|
||||
routeAudioToSpeaker();
|
||||
} else {
|
||||
|
@ -504,6 +503,15 @@ public class DialerActivity extends Activity implements LinphoneCoreListener {
|
|||
}
|
||||
setVolumeControlStream(AudioManager.STREAM_VOICE_CALL);
|
||||
}
|
||||
private void configureMuteButtons() {
|
||||
mMute.setChecked(LinphoneService.instance().getLinphoneCore().isMicMuted());
|
||||
if ((Integer.parseInt(Build.VERSION.SDK) <=4 && mAudioManager.getMode() == AudioManager.MODE_NORMAL)
|
||||
|| Integer.parseInt(Build.VERSION.SDK) >4 &&mAudioManager.isSpeakerphoneOn()) {
|
||||
mSpeaker.setChecked(true);
|
||||
} else {
|
||||
mSpeaker.setChecked(false);
|
||||
}
|
||||
}
|
||||
private void exitCallMode() {
|
||||
mCallControlRow.setVisibility(View.VISIBLE);
|
||||
mInCallControlRow.setVisibility(View.GONE);
|
||||
|
@ -512,13 +520,13 @@ public class DialerActivity extends Activity implements LinphoneCoreListener {
|
|||
mCall.setEnabled(true);
|
||||
mHangup.setEnabled(false);
|
||||
setVolumeControlStream(AudioManager.USE_DEFAULT_STREAM_TYPE);
|
||||
mMute.setChecked(true);
|
||||
mSpeaker.setChecked(false);
|
||||
mDecline.setEnabled(false);
|
||||
if (LinphoneService.instance().getLinphoneCore().isVideoEnabled()) {
|
||||
finishActivity(VIDEO_VIEW_ACTIVITY);
|
||||
}
|
||||
if (mWakeLock.isHeld())mWakeLock.release();
|
||||
mSpeaker.setChecked(false);
|
||||
routeAudioToReceiver();
|
||||
}
|
||||
private void routeAudioToSpeaker() {
|
||||
if (Integer.parseInt(Build.VERSION.SDK) <= 4 /*<donut*/) {
|
||||
|
|
|
@ -29,8 +29,8 @@ import android.widget.ImageButton;
|
|||
|
||||
/**
|
||||
* Image button storing a checked state to display alternating drawables.
|
||||
* The "toggled" drawable is displayed when button is down / checked.
|
||||
* The "untoggled" drawable is displayed when button is up / unchecked.
|
||||
* The "checked" drawable is displayed when button is down / checked.
|
||||
* The "unchecked" drawable is displayed when button is up / unchecked.
|
||||
*
|
||||
* @author Guillaume Beraudo
|
||||
*
|
||||
|
@ -38,14 +38,14 @@ import android.widget.ImageButton;
|
|||
public class ToggleImageButton extends ImageButton implements OnClickListener {
|
||||
private static final String namespace = null;
|
||||
private boolean checked;
|
||||
private Drawable on;
|
||||
private Drawable off;
|
||||
private Drawable stateChecked;
|
||||
private Drawable stateUnChecked;
|
||||
private OnCheckedChangeListener onCheckedChangeListener;
|
||||
|
||||
public ToggleImageButton(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
on = getResources().getDrawable(attrs.getAttributeResourceValue(namespace, "toggled", -1));
|
||||
off = getResources().getDrawable(attrs.getAttributeResourceValue(namespace, "untoggled", -1));
|
||||
stateChecked = getResources().getDrawable(attrs.getAttributeResourceValue(namespace, "checked", -1));
|
||||
stateUnChecked = getResources().getDrawable(attrs.getAttributeResourceValue(namespace, "unchecked", -1));
|
||||
setBackgroundColor(Color.TRANSPARENT);
|
||||
|
||||
setOnClickListener(this);
|
||||
|
@ -65,7 +65,7 @@ public class ToggleImageButton extends ImageButton implements OnClickListener {
|
|||
|
||||
|
||||
private void handleCheckChanged() {
|
||||
setImageDrawable(checked?on:off);
|
||||
setImageDrawable(checked?stateChecked:stateUnChecked);
|
||||
requestLayout();
|
||||
invalidate();
|
||||
if (onCheckedChangeListener != null) onCheckedChangeListener.onCheckedChanged(this, checked);
|
||||
|
|
Loading…
Reference in a new issue