FM: Fix the issue with userband settings
Do not allow user to set the userband settings
less than channel spacing.
CRs-Fixed: 701704
Change-Id: Ib709b99f0ae421c25db108322f32d6a682aebf46
diff --git a/fmapp2/res/values/strings.xml b/fmapp2/res/values/strings.xml
index 7b30e1b..bff5bb8 100644
--- a/fmapp2/res/values/strings.xml
+++ b/fmapp2/res/values/strings.xml
@@ -269,6 +269,6 @@
<string name="band_sweep_choose">Choose Band Sweep Method</string>
<string name="set">Set</string>
<string name="cancel">Cancel</string>
- <string name="user_defind_band_msg">Enter Freq from range 76.0 - 108.0</string>
+ <string name="user_defind_band_msg">Enter Freq from range 76.0 - 108.0 and with min 1 channel spacing</string>
</resources>
diff --git a/fmapp2/src/com/caf/fmradio/Settings.java b/fmapp2/src/com/caf/fmradio/Settings.java
index e82acc3..83df2e1 100644
--- a/fmapp2/src/com/caf/fmradio/Settings.java
+++ b/fmapp2/src/com/caf/fmradio/Settings.java
@@ -252,6 +252,10 @@
String key) {
int mTunedFreq = 0;
boolean bStatus = false;
+ int noOfChannels = 0;
+ int channelSpacing = 0;
+ int preIndex;
+
if (key.equals(REGIONAL_BAND_KEY)) {
int curListIndex = FmSharedPreferences.getCurrentListIndex();
PresetList curList = FmSharedPreferences.getStationList(curListIndex);
@@ -282,9 +286,26 @@
PresetList curList = FmSharedPreferences.getStationList(curListIndex);
String valStr = mChannelSpacingPref.getValue();
int index = 0;
+ preIndex = FmSharedPreferences.getChSpacing();
if(valStr != null) {
index = mChannelSpacingPref.findIndexOfValue(valStr);
}
+ if (index == 0)
+ channelSpacing = 50;
+ else if (index == 1)
+ channelSpacing = 100;
+ else if (index == 2)
+ channelSpacing = 200;
+ noOfChannels = 0;
+ max_freq = FmSharedPreferences.getUpperLimit();
+ min_freq = FmSharedPreferences.getLowerLimit();
+ noOfChannels = (int) (max_freq - min_freq)/channelSpacing;
+ if (noOfChannels < 1) {
+ index = 2 - preIndex;
+ mChannelSpacingPref.setValueIndex(index);
+ Toast.makeText(this, getString(R.string.user_defind_band_msg),
+ Toast.LENGTH_SHORT).show();
+ }
if ((index < 0) || (index >= chSpacingItems.length)) {
index = 0;
mChannelSpacingPref.setValueIndex(0);
@@ -305,9 +326,11 @@
e.printStackTrace();
return;
}
+ noOfChannels = 0;
max_freq = FmSharedPreferences.getUpperLimit();
min_freq = FmSharedPreferences.getLowerLimit();
- if((freq > 0) && (freq < max_freq) && (freq >= 76000)) {
+ noOfChannels = (int) (max_freq - freq)/FmSharedPreferences.getFrequencyStepSize();
+ if((freq > 0) && (freq < max_freq) && (freq >= 76000) && (noOfChannels > 0)) {
FmSharedPreferences.setLowerLimit((int)freq);
sendSettingsChangedIntent(FM_BAND_CHANGED);
setBandSummary(summaryBandItems.length - 1);
@@ -329,9 +352,11 @@
e.printStackTrace();
return;
}
+ noOfChannels = 0;
min_freq = FmSharedPreferences.getLowerLimit();
max_freq = FmSharedPreferences.getUpperLimit();
- if((freq > 0) && (freq > min_freq) && (freq <= 108000)) {
+ noOfChannels = (int) (freq - min_freq)/FmSharedPreferences.getFrequencyStepSize();
+ if((freq > 0) && (freq > min_freq) && (freq <= 108000) && (noOfChannels > 0)) {
FmSharedPreferences.setUpperLimit((int)freq);
sendSettingsChangedIntent(FM_BAND_CHANGED);
setBandSummary(summaryBandItems.length - 1);