3
3
import androidx .appcompat .app .AppCompatActivity ;
4
4
import androidx .core .app .ActivityCompat ;
5
5
import androidx .core .content .ContextCompat ;
6
+ import androidx .preference .PreferenceManager ;
6
7
7
8
import android .Manifest ;
8
9
import android .annotation .SuppressLint ;
11
12
import android .content .Context ;
12
13
import android .content .Intent ;
13
14
import android .content .IntentFilter ;
15
+ import android .content .SharedPreferences ;
14
16
import android .content .pm .PackageManager ;
15
17
import android .graphics .Color ;
16
18
import android .graphics .PorterDuff ;
21
23
import android .os .Looper ;
22
24
import android .os .Message ;
23
25
import android .os .SystemClock ;
24
- import android .view .ContextMenu ;
25
26
import android .view .KeyEvent ;
26
27
import android .view .Menu ;
27
- import android .view .MenuInflater ;
28
28
import android .view .MenuItem ;
29
29
import android .view .MotionEvent ;
30
30
import android .view .View ;
31
- import android .widget .AdapterView ;
32
31
import android .widget .Button ;
33
- import android .widget .CheckBox ;
34
- import android .widget .CompoundButton ;
35
32
import android .widget .ProgressBar ;
36
- import android .widget .Spinner ;
37
33
import android .widget .TextView ;
38
34
import android .widget .Toast ;
39
35
40
36
import com .radio .codec2talkie .bluetooth .BluetoothConnectActivity ;
41
37
import com .radio .codec2talkie .bluetooth .SocketHandler ;
38
+ import com .radio .codec2talkie .settings .PreferenceKeys ;
42
39
import com .radio .codec2talkie .settings .SettingsActivity ;
43
40
import com .radio .codec2talkie .usb .UsbConnectActivity ;
44
41
import com .radio .codec2talkie .usb .UsbPortHandler ;
45
- import com .ustadmobile .codec2 .Codec2 ;
46
42
47
43
import java .io .IOException ;
48
44
import java .util .LinkedList ;
@@ -57,22 +53,22 @@ public class MainActivity extends AppCompatActivity {
57
53
private final static int REQUEST_PERMISSIONS = 3 ;
58
54
private final static int REQUEST_SETTINGS = 4 ;
59
55
60
- private final static int CODEC2_DEFAULT_MODE = Codec2 .CODEC2_MODE_450 ;
61
- private final static int CODEC2_DEFAULT_MODE_POS = 0 ;
56
+ private final static String CODEC2_DEFAULT_MODE = "MODE_450=10" ;
62
57
63
58
private final String [] _requiredPermissions = new String [] {
64
59
Manifest .permission .BLUETOOTH ,
65
60
Manifest .permission .RECORD_AUDIO
66
61
};
67
62
63
+ SharedPreferences _sharedPreferences ;
64
+
68
65
private boolean _isActive = false ;
69
66
70
67
private TextView _textConnInfo ;
71
68
private TextView _textStatus ;
72
- private Spinner _spinnerCodec2Mode ;
69
+ private TextView _textCodecMode ;
73
70
private ProgressBar _progressRxLevel ;
74
71
private ProgressBar _progressTxLevel ;
75
- private CheckBox _checkBoxLoopback ;
76
72
private Button _btnPtt ;
77
73
78
74
private Codec2Player _codec2Player ;
@@ -84,24 +80,27 @@ protected void onCreate(Bundle savedInstanceState) {
84
80
85
81
_isActive = true ;
86
82
83
+ _sharedPreferences = PreferenceManager .getDefaultSharedPreferences (this );
84
+
87
85
setContentView (R .layout .activity_main );
88
86
89
87
_textConnInfo = findViewById (R .id .textBtName );
90
88
_textStatus = findViewById (R .id .textStatus );
89
+
91
90
_progressRxLevel = findViewById (R .id .progressRxLevel );
92
91
_progressRxLevel .setMax (-Codec2Player .getAudioMinLevel ());
92
+ _progressRxLevel .getProgressDrawable ().setColorFilter (
93
+ new PorterDuffColorFilter (colorFromAudioLevel (Codec2Player .getAudioMinLevel ()), PorterDuff .Mode .SRC_IN ));
94
+
93
95
_progressTxLevel = findViewById (R .id .progressTxLevel );
94
96
_progressTxLevel .setMax (-Codec2Player .getAudioMinLevel ());
97
+ _progressTxLevel .getProgressDrawable ().setColorFilter (
98
+ new PorterDuffColorFilter (colorFromAudioLevel (Codec2Player .getAudioMinLevel ()), PorterDuff .Mode .SRC_IN ));
95
99
96
100
_btnPtt = findViewById (R .id .btnPtt );
97
101
_btnPtt .setOnTouchListener (onBtnPttTouchListener );
98
102
99
- _spinnerCodec2Mode = findViewById (R .id .spinnerCodecMode );
100
- _spinnerCodec2Mode .setSelection (CODEC2_DEFAULT_MODE_POS );
101
- _spinnerCodec2Mode .setOnItemSelectedListener (onCodecModeSelectedListener );
102
-
103
- _checkBoxLoopback = findViewById (R .id .checkBoxLoopback );
104
- _checkBoxLoopback .setOnCheckedChangeListener (onLoopbackCheckedChangeListener );
103
+ _textCodecMode = findViewById (R .id .codecMode );
105
104
106
105
registerReceiver (onBluetoothDisconnected , new IntentFilter (BluetoothDevice .ACTION_ACL_DISCONNECTED ));
107
106
registerReceiver (onUsbDetached , new IntentFilter (UsbManager .ACTION_USB_DEVICE_DETACHED ));
@@ -157,30 +156,6 @@ else if (audioLevel == Codec2Player.getAudioMinLevel())
157
156
return color ;
158
157
}
159
158
160
- private final CompoundButton .OnCheckedChangeListener onLoopbackCheckedChangeListener = new CompoundButton .OnCheckedChangeListener () {
161
- @ Override
162
- public void onCheckedChanged (CompoundButton buttonView , boolean isChecked ) {
163
- if (_codec2Player != null ) {
164
- _codec2Player .setLoopbackMode (isChecked );
165
- }
166
- }
167
- };
168
-
169
- private final AdapterView .OnItemSelectedListener onCodecModeSelectedListener = new AdapterView .OnItemSelectedListener () {
170
- @ Override
171
- public void onItemSelected (AdapterView <?> parent , View view , int position , long id ) {
172
- String selectedCodec = getResources ().getStringArray (R .array .codec2_modes )[position ];
173
- String [] codecNameCodecId = selectedCodec .split ("=" );
174
- if (_codec2Player != null ) {
175
- _codec2Player .setCodecMode (Integer .parseInt (codecNameCodecId [1 ]));
176
- }
177
- }
178
-
179
- @ Override
180
- public void onNothingSelected (AdapterView <?> parent ) {
181
- }
182
- };
183
-
184
159
private final BroadcastReceiver onBluetoothDisconnected = new BroadcastReceiver () {
185
160
@ Override
186
161
public void onReceive (Context context , Intent intent ) {
@@ -286,7 +261,6 @@ public void onRequestPermissionsResult(int requestCode, String[] permissions, in
286
261
public void handleMessage (Message msg ) {
287
262
if (_isActive && msg .what == Codec2Player .PLAYER_DISCONNECT ) {
288
263
_textStatus .setText ("STOP" );
289
- _checkBoxLoopback .setChecked (false );
290
264
Toast .makeText (getBaseContext (), "Disconnected from modem" , Toast .LENGTH_SHORT ).show ();
291
265
startUsbConnectActivity ();
292
266
}
@@ -311,14 +285,28 @@ else if (msg.what == Codec2Player.PLAYER_TX_LEVEL) {
311
285
};
312
286
313
287
private void startPlayer (boolean isUsb ) throws IOException {
314
- _codec2Player = new Codec2Player (onPlayerStateChanged , CODEC2_DEFAULT_MODE );
288
+ String statusMessage = new String ();
289
+
290
+ String codec2ModePref = _sharedPreferences .getString (PreferenceKeys .CODEC2_MODE , CODEC2_DEFAULT_MODE );
291
+ String [] codecNameCodecId = codec2ModePref .split ("=" );
292
+ statusMessage += codecNameCodecId [0 ];
293
+ int codec2Mode = Integer .parseInt (codecNameCodecId [1 ]);
294
+
295
+ boolean isTestMode = _sharedPreferences .getBoolean (PreferenceKeys .CODEC2_TEST_MODE , false );
296
+ if (isTestMode ) {
297
+ statusMessage += ", TEST" ;
298
+ }
299
+
300
+ _codec2Player = new Codec2Player (onPlayerStateChanged , codec2Mode );
315
301
if (isUsb ) {
316
302
_codec2Player .setUsbPort (UsbPortHandler .getPort ());
317
303
} else {
318
304
_codec2Player .setSocket (SocketHandler .getSocket ());
319
305
}
320
- _spinnerCodec2Mode . setSelection ( CODEC2_DEFAULT_MODE_POS );
306
+ _codec2Player . setCodecTestMode ( isTestMode );
321
307
_codec2Player .start ();
308
+
309
+ _textCodecMode .setText (statusMessage );
322
310
}
323
311
324
312
@ Override
0 commit comments