Binded audio settings and codecs

This commit is contained in:
Sylvain Berfini 2013-10-14 16:41:36 +02:00
parent 5c898ca323
commit ed25573be2
3 changed files with 86 additions and 79 deletions

View file

@ -54,63 +54,7 @@
<PreferenceCategory
android:title="@string/pref_codecs"
android:key="@string/pref_codecs_key">
<CheckBoxPreference
android:title="@string/pref_codec_opus"
android:key="@string/pref_codec_opus_key"/>
<CheckBoxPreference
android:title="@string/pref_codec_speex16"
android:key="@string/pref_codec_speex16_key"/>
<CheckBoxPreference
android:title="@string/pref_codec_speex8"
android:key="@string/pref_codec_speex8_key"/>
<CheckBoxPreference
android:title="@string/pref_codec_ilbc"
android:key="@string/pref_codec_ilbc_key"
android:summary="@string/pref_ilbc_summary"/>
<CheckBoxPreference
android:title="@string/pref_codec_amr"
android:key="@string/pref_codec_amr_key"/>
<CheckBoxPreference
android:title="@string/pref_codec_g729"
android:key="@string/pref_codec_g729_key"/>
<CheckBoxPreference
android:title="@string/pref_codec_amrwb"
android:key="@string/pref_codec_amrwb_key"/>
<CheckBoxPreference
android:title="@string/pref_codec_gsm"
android:key="@string/pref_codec_gsm_key"/>
<CheckBoxPreference
android:key="@string/pref_codec_g722_key"
android:defaultValue="@bool/pref_codec_g722_default"
android:title="@string/pref_codec_g722"/>
<CheckBoxPreference
android:title="@string/pref_codec_silk8"
android:key="@string/pref_codec_silk8_key"/>
<CheckBoxPreference
android:title="@string/pref_codec_silk16"
android:key="@string/pref_codec_silk16_key"/>
<CheckBoxPreference
android:title="@string/pref_codec_pcmu"
android:key="@string/pref_codec_pcmu_key"/>
<CheckBoxPreference
android:title="@string/pref_codec_pcma"
android:key="@string/pref_codec_pcma_key"/>
</PreferenceCategory>
android:key="@string/pref_codecs_key"/>
</PreferenceScreen>
@ -153,26 +97,7 @@
android:title="@string/pref_video_codecs_title"
android:key="@string/pref_video_codecs_key"
android:dependency="@string/pref_video_enable_key"
android:shouldDisableView="true" >
<CheckBoxPreference
android:title="@string/pref_video_codec_vp8_title"
android:key="@string/pref_video_codec_vp8_key"/>
<CheckBoxPreference
android:title="@string/pref_video_codec_h264_title"
android:key="@string/pref_video_codec_h264_key"/>
<CheckBoxPreference
android:title="@string/pref_video_codec_mpeg4_title"
android:key="@string/pref_video_codec_mpeg4_key"/>
<CheckBoxPreference
android:title="@string/pref_video_codec_h263_title"
android:key="@string/pref_video_codec_h263_key"
android:layout="@layout/hidden"/>
</PreferenceCategory>
android:shouldDisableView="true"/>
</PreferenceScreen>

View file

@ -322,7 +322,13 @@ public class LinphonePreferences {
// End of accounts settings
// Audio settings
public void setEchoCancellation(boolean enable) {
getLc().enableEchoCancellation(enable);
}
public boolean isEchoCancellationEnabled() {
return getLc().isEchoCancellationEnabled();
}
// End of audio settings
// Video settings

View file

@ -11,6 +11,7 @@ import org.linphone.core.LinphoneCore.MediaEncryption;
import org.linphone.core.LinphoneCoreException;
import org.linphone.core.LinphoneCoreFactory;
import org.linphone.core.LinphoneProxyConfig;
import org.linphone.core.PayloadType;
import org.linphone.mediastream.Log;
import org.linphone.mediastream.Version;
import org.linphone.mediastream.video.capture.hwconf.AndroidCameraConfiguration;
@ -54,6 +55,7 @@ public class SettingsFragment extends PreferencesListFragment implements EcCalib
private void initSettings() {
//initAccounts(); Init accounts on Resume instead of on Create to update the account list when coming back from wizard
initAudioSettings();
initNetworkSettings();
initializePreferredVideoSizePreferences((ListPreference) findPreference(getString(R.string.pref_preferred_video_size_key)));
@ -100,6 +102,7 @@ public class SettingsFragment extends PreferencesListFragment implements EcCalib
// Sets listener for each preference to update the matching value in linphonecore
private void setListeners() {
setAudioPreferencesListener();
setNetworkPreferencesListener();
setAdvancedPreferencesListener();
}
@ -375,6 +378,63 @@ public class SettingsFragment extends PreferencesListFragment implements EcCalib
pref.setEntryValues(contents);
}
private void initAudioSettings() {
PreferenceCategory codecs = (PreferenceCategory) findPreference(getString(R.string.pref_codecs_key));
codecs.removeAll();
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
for(final PayloadType pt : lc.getAudioCodecs()) {
CheckBoxPreference codec = new CheckBoxPreference(LinphoneService.instance());
codec.setTitle(pt.getMime());
codec.setSummary(pt.getRate() + " Hz");
codec.setChecked(lc.isPayloadTypeEnabled(pt));
codec.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
boolean enable = (Boolean) newValue;
try {
LinphoneManager.getLcIfManagerNotDestroyedOrNull().enablePayloadType(pt, enable);
} catch (LinphoneCoreException e) {
e.printStackTrace();
}
return true;
}
});
codecs.addPreference(codec);
}
CheckBoxPreference echoCancellation = (CheckBoxPreference) findPreference(getString(R.string.pref_echo_cancellation_key));
echoCancellation.setChecked(mPrefs.isEchoCancellationEnabled());
}
private void setAudioPreferencesListener() {
findPreference(getString(R.string.pref_echo_cancellation_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
boolean enabled = (Boolean) newValue;
mPrefs.setEchoCancellation(enabled);
return true;
}
});
findPreference(getString(R.string.pref_echo_canceller_calibration_key)).setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
synchronized (SettingsFragment.this) {
try {
LinphoneManager.getInstance().startEcCalibration(SettingsFragment.this);
preference.setSummary(R.string.ec_calibrating);
} catch (LinphoneCoreException e) {
Log.w(e, "Cannot calibrate EC");
}
}
return true;
}
});
}
private void initNetworkSettings() {
initMediaEncryptionPreference((ListPreference) findPreference(getString(R.string.pref_media_encryption_key)));
initializeTransportPreferences((ListPreference) findPreference(getString(R.string.pref_transport_key)));
@ -609,8 +669,24 @@ public class SettingsFragment extends PreferencesListFragment implements EcCalib
}
@Override
public void onEcCalibrationStatus(EcCalibratorStatus status, int delayMs) {
public void onEcCalibrationStatus(final EcCalibratorStatus status, final int delayMs) {
mHandler.post(new Runnable() {
public void run() {
CheckBoxPreference echoCancellation = (CheckBoxPreference) findPreference(getString(R.string.pref_echo_cancellation_key));
Preference echoCancellerCalibration = findPreference(getString(R.string.pref_echo_canceller_calibration_key));
if (status == EcCalibratorStatus.DoneNoEcho) {
echoCancellerCalibration.setSummary(R.string.no_echo);
echoCancellation.setChecked(false);
} else if (status == EcCalibratorStatus.Done) {
echoCancellerCalibration.setSummary(String.format(getString(R.string.ec_calibrated), delayMs));
echoCancellation.setChecked(true);
} else if (status == EcCalibratorStatus.Failed) {
echoCancellerCalibration.setSummary(R.string.failed);
echoCancellation.setChecked(true);
}
}
});
}
@Override