1 |
|
|
2 |
|
|
3 |
|
|
4 |
|
|
5 |
|
|
6 |
|
|
7 |
|
|
8 |
|
|
9 |
|
|
10 |
|
|
11 |
|
|
12 |
|
|
13 |
|
|
14 |
|
|
15 |
|
|
16 |
|
|
17 |
|
|
18 |
|
|
19 |
|
package net.sourceforge.subsonic.androidapp.activity; |
20 |
|
|
21 |
|
import java.util.HashMap; |
22 |
|
import java.util.Map; |
23 |
|
|
24 |
|
import android.app.Activity; |
25 |
|
import android.media.audiofx.Equalizer; |
26 |
|
import android.os.Bundle; |
27 |
|
import android.view.ContextMenu; |
28 |
|
import android.view.LayoutInflater; |
29 |
|
import android.view.MenuItem; |
30 |
|
import android.view.View; |
31 |
|
import android.widget.CheckBox; |
32 |
|
import android.widget.CompoundButton; |
33 |
|
import android.widget.LinearLayout; |
34 |
|
import android.widget.SeekBar; |
35 |
|
import android.widget.TextView; |
36 |
|
import net.sourceforge.subsonic.androidapp.R; |
37 |
|
import net.sourceforge.subsonic.androidapp.audiofx.EqualizerController; |
38 |
|
import net.sourceforge.subsonic.androidapp.service.DownloadServiceImpl; |
39 |
|
|
40 |
|
|
41 |
|
|
42 |
|
|
43 |
|
@author |
44 |
|
@version |
45 |
|
|
|
|
| 98,8% |
Uncovered Elements: 1 (83) |
Complexity: 19 |
Complexity Density: 0,32 |
|
46 |
|
public class EqualizerActivity extends Activity { |
47 |
|
|
48 |
|
private static final int MENU_GROUP_PRESET = 100; |
49 |
|
|
50 |
|
private final Map<Short, SeekBar> bars = new HashMap<Short, SeekBar>(); |
51 |
|
private EqualizerController equalizerController; |
52 |
|
private Equalizer equalizer; |
53 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (11) |
Complexity: 1 |
Complexity Density: 0,09 |
|
54 |
2
|
@Override... |
55 |
|
public void onCreate(Bundle bundle) { |
56 |
2
|
super.onCreate(bundle); |
57 |
2
|
setContentView(R.layout.equalizer); |
58 |
2
|
equalizerController = DownloadServiceImpl.getInstance().getEqualizerController(); |
59 |
2
|
equalizer = equalizerController.getEqualizer(); |
60 |
|
|
61 |
2
|
initEqualizer(); |
62 |
|
|
63 |
2
|
final View presetButton = findViewById(R.id.equalizer_preset); |
64 |
2
|
registerForContextMenu(presetButton); |
65 |
2
|
presetButton.setOnClickListener(new View.OnClickListener() { |
|
|
| 100% |
Uncovered Elements: 0 (1) |
Complexity: 1 |
Complexity Density: 1 |
|
66 |
9
|
@Override... |
67 |
|
public void onClick(View view) { |
68 |
9
|
presetButton.showContextMenu(); |
69 |
|
} |
70 |
|
}); |
71 |
|
|
72 |
2
|
CheckBox enabledCheckBox = (CheckBox) findViewById(R.id.equalizer_enabled); |
73 |
2
|
enabledCheckBox.setChecked(equalizer.getEnabled()); |
74 |
2
|
enabledCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { |
|
|
| 100% |
Uncovered Elements: 0 (1) |
Complexity: 1 |
Complexity Density: 1 |
|
75 |
3
|
@Override... |
76 |
|
public void onCheckedChanged(CompoundButton compoundButton, boolean b) { |
77 |
3
|
setEqualizerEnabled(b); |
78 |
|
} |
79 |
|
}); |
80 |
|
} |
81 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (2) |
Complexity: 1 |
Complexity Density: 0,5 |
|
82 |
2
|
@Override... |
83 |
|
protected void onPause() { |
84 |
2
|
super.onPause(); |
85 |
2
|
equalizerController.saveSettings(); |
86 |
|
} |
87 |
|
|
|
|
| 92,9% |
Uncovered Elements: 1 (14) |
Complexity: 4 |
Complexity Density: 0,4 |
|
88 |
9
|
@Override... |
89 |
|
public void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo menuInfo) { |
90 |
9
|
super.onCreateContextMenu(menu, view, menuInfo); |
91 |
|
|
92 |
9
|
short currentPreset; |
93 |
9
|
try { |
94 |
9
|
currentPreset = equalizer.getCurrentPreset(); |
95 |
|
} catch (Exception x) { |
96 |
0
|
currentPreset = -1; |
97 |
|
} |
98 |
|
|
99 |
99
|
for (short preset = 0; preset < equalizer.getNumberOfPresets(); preset++) { |
100 |
90
|
MenuItem menuItem = menu.add(MENU_GROUP_PRESET, preset, preset, equalizer.getPresetName(preset)); |
101 |
90
|
if (preset == currentPreset) { |
102 |
7
|
menuItem.setChecked(true); |
103 |
|
} |
104 |
|
} |
105 |
9
|
menu.setGroupCheckable(MENU_GROUP_PRESET, true, true); |
106 |
|
} |
107 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (4) |
Complexity: 1 |
Complexity Density: 0,25 |
|
108 |
9
|
@Override... |
109 |
|
public boolean onContextItemSelected(MenuItem menuItem) { |
110 |
9
|
short preset = (short) menuItem.getItemId(); |
111 |
9
|
equalizer.usePreset(preset); |
112 |
9
|
updateBars(); |
113 |
9
|
return true; |
114 |
|
} |
115 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (2) |
Complexity: 1 |
Complexity Density: 0,5 |
|
116 |
3
|
private void setEqualizerEnabled(boolean enabled) {... |
117 |
3
|
equalizer.setEnabled(enabled); |
118 |
3
|
updateBars(); |
119 |
|
} |
120 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (6) |
Complexity: 1 |
Complexity Density: 0,17 |
|
121 |
12
|
private void updateBars() {... |
122 |
|
|
123 |
12
|
for (Map.Entry<Short, SeekBar> entry : bars.entrySet()) { |
124 |
60
|
short band = entry.getKey(); |
125 |
60
|
SeekBar bar = entry.getValue(); |
126 |
60
|
bar.setEnabled(equalizer.getEnabled()); |
127 |
60
|
short minEQLevel = equalizer.getBandLevelRange()[0]; |
128 |
60
|
bar.setProgress(equalizer.getBandLevel(band) - minEQLevel); |
129 |
|
} |
130 |
|
} |
131 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (20) |
Complexity: 2 |
Complexity Density: 0,11 |
|
132 |
2
|
private void initEqualizer() {... |
133 |
2
|
LinearLayout layout = (LinearLayout) findViewById(R.id.equalizer_layout); |
134 |
|
|
135 |
2
|
final short minEQLevel = equalizer.getBandLevelRange()[0]; |
136 |
2
|
final short maxEQLevel = equalizer.getBandLevelRange()[1]; |
137 |
|
|
138 |
12
|
for (short i = 0; i < equalizer.getNumberOfBands(); i++) { |
139 |
10
|
final short band = i; |
140 |
|
|
141 |
10
|
View bandBar = LayoutInflater.from(this).inflate(R.layout.equalizer_bar, null); |
142 |
10
|
TextView freqTextView = (TextView) bandBar.findViewById(R.id.equalizer_frequency); |
143 |
10
|
final TextView levelTextView = (TextView) bandBar.findViewById(R.id.equalizer_level); |
144 |
10
|
SeekBar bar = (SeekBar) bandBar.findViewById(R.id.equalizer_bar); |
145 |
|
|
146 |
10
|
freqTextView.setText((equalizer.getCenterFreq(band) / 1000) + " Hz"); |
147 |
|
|
148 |
10
|
bars.put(band, bar); |
149 |
10
|
bar.setMax(maxEQLevel - minEQLevel); |
150 |
10
|
short level = equalizer.getBandLevel(band); |
151 |
10
|
bar.setProgress(level - minEQLevel); |
152 |
10
|
bar.setEnabled(equalizer.getEnabled()); |
153 |
10
|
updateLevelText(levelTextView, level); |
154 |
|
|
155 |
10
|
bar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { |
|
|
| 100% |
Uncovered Elements: 0 (6) |
Complexity: 2 |
Complexity Density: 0,5 |
|
156 |
165
|
@Override... |
157 |
|
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { |
158 |
165
|
short level = (short) (progress + minEQLevel); |
159 |
165
|
if (fromUser) { |
160 |
124
|
equalizer.setBandLevel(band, level); |
161 |
|
} |
162 |
165
|
updateLevelText(levelTextView, level); |
163 |
|
} |
164 |
|
|
|
|
| - |
Uncovered Elements: 0 (0) |
Complexity: 1 |
Complexity Density: - |
|
165 |
8
|
@Override... |
166 |
|
public void onStartTrackingTouch(SeekBar seekBar) { |
167 |
|
} |
168 |
|
|
|
|
| - |
Uncovered Elements: 0 (0) |
Complexity: 1 |
Complexity Density: - |
|
169 |
8
|
@Override... |
170 |
|
public void onStopTrackingTouch(SeekBar seekBar) { |
171 |
|
} |
172 |
|
}); |
173 |
10
|
layout.addView(bandBar); |
174 |
|
} |
175 |
|
} |
176 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (3) |
Complexity: 2 |
Complexity Density: 2 |
|
177 |
175
|
private void updateLevelText(TextView levelTextView, short level) {... |
178 |
175
|
levelTextView.setText((level > 0 ? "+" : "") + level / 100 + " dB"); |
179 |
|
} |
180 |
|
|
181 |
|
} |