Skip to content

Commit 57a9523

Browse files
committed
Fixed connection issues with bluetooth.
1 parent 65bc1be commit 57a9523

File tree

6 files changed

+64
-3
lines changed

6 files changed

+64
-3
lines changed

Android/res/values/preferences_keys.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ This file is used to store the preferences keys so that it's accessible and modi
1919
<string name="pref_server_ip_key" translatable="false">pref_server_ip</string>
2020
<string name="pref_server_port_key" translatable="false">pref_server_port</string>
2121
<string name="pref_udp_server_port_key" translatable="false">pref_udp_server_port</string>
22+
<string name="pref_bluetooth_device_name_key" translatable="false">pref_bluetooth_device_name</string>
2223
<string name="pref_bluetooth_device_address_key" translatable="false">pref_bluetooth_device_address</string>
2324
<string name="pref_vehicle_type_key" translatable="false">pref_vehicle_type</string>
2425
<string name="pref_rc_quickmode_right_key" translatable="false">pref_rc_quickmode_right</string>

Android/res/values/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -422,6 +422,7 @@
422422
<!-- BLuetooth -->
423423
<string name="pref_bluetooth">BLUETOOTH CONNECTION</string>
424424
<string name="pref_bluetooth_device_address">Bluetooth device</string>
425+
<string name="pref_forget_bluetooth_device_title">Forget %s device</string>
425426
<string name="pref_forget_bluetooth_device_address">Forget default device</string>
426427
<string name="pref_forget_bluetooth_device_address_confirm">Are you sure?</string>
427428
<string name="pref_bluetooth_forget">Forget</string>
@@ -529,5 +530,6 @@
529530
<string name="label_select_all">select all</string>
530531
<string name="guided_scan_roi_set_message">Targeting selected location.</string>
531532
<string name="mode_follow_guided_scan">Vehicle follows the user while remaining locked on a point of interest. Long click on the map to select the point of interest.</string>
533+
<string name="pref_no_saved_bluetooth_device_title">No saved bluetooth device.</string>
532534

533535
</resources>

Android/src/org/droidplanner/android/activities/helpers/BluetoothDevicesActivity.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,8 +135,8 @@ public void onItemClick(AdapterView<?> parent, View view, int position, long id)
135135
// so the bluetooth client can retrieve it on connection.
136136
final Context context = getApplicationContext();
137137
DroidPlannerPrefs mAppPrefs = new DroidPlannerPrefs(context);
138-
mAppPrefs.setBluetoothDeviceAddress(device.getAddress() + ";" + device.getName());
139-
138+
mAppPrefs.setBluetoothDeviceName(device.getName());
139+
mAppPrefs.setBluetoothDeviceAddress(device.getAddress());
140140

141141
// Toggle the drone connection
142142
DroidPlannerApp.connectToDrone(context);

Android/src/org/droidplanner/android/dialogs/ClearBTDialogPreference.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,14 @@
88

99
public class ClearBTDialogPreference extends DialogPreference {
1010

11+
public interface OnResultListener {
12+
void onResult(boolean result);
13+
}
14+
1115
private DroidPlannerPrefs mAppPrefs;
1216

17+
private OnResultListener listener;
18+
1319
public ClearBTDialogPreference(Context context, AttributeSet attrs) {
1420
super(context, attrs);
1521
mAppPrefs = new DroidPlannerPrefs(context.getApplicationContext());
@@ -21,6 +27,13 @@ protected void onDialogClosed(boolean positiveResult) {
2127
if (positiveResult) {
2228
mAppPrefs.setBluetoothDeviceAddress("");
2329
}
30+
31+
if(listener != null)
32+
listener.onResult(positiveResult);
2433
}
2534

35+
public void setOnResultListener(OnResultListener listener){
36+
this.listener = listener;
37+
}
38+
2639
}

Android/src/org/droidplanner/android/fragments/SettingsFragment.java

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import android.preference.PreferenceCategory;
2020
import android.preference.PreferenceFragment;
2121
import android.support.v4.content.LocalBroadcastManager;
22+
import android.text.TextUtils;
2223
import android.util.Log;
2324
import android.widget.Toast;
2425

@@ -35,6 +36,7 @@
3536
import org.droidplanner.android.DroidPlannerApp;
3637
import org.droidplanner.android.R;
3738
import org.droidplanner.android.activities.helpers.MapPreferencesActivity;
39+
import org.droidplanner.android.dialogs.ClearBTDialogPreference;
3840
import org.droidplanner.android.maps.providers.DPMapProvider;
3941
import org.droidplanner.android.utils.Utils;
4042
import org.droidplanner.android.utils.analytics.GAUtils;
@@ -229,6 +231,7 @@ public boolean onPreferenceChange(Preference preference, Object newValue) {
229231
setupConnectionPreferences();
230232
setupAdvancedMenuToggle();
231233
setupUnitSystemPreferences();
234+
setupBluetoothDevicePreferences();
232235
}
233236

234237
private void setupAdvancedMenuToggle(){
@@ -298,6 +301,41 @@ public boolean onPreferenceChange(Preference preference, Object newValue) {
298301
}
299302
}
300303

304+
private void setupBluetoothDevicePreferences(){
305+
final ClearBTDialogPreference preference = (ClearBTDialogPreference) findPreference(getString(R.string
306+
.pref_bluetooth_device_address_key));
307+
if(preference != null){
308+
updateBluetoothDevicePreference(preference, dpPrefs.getBluetoothDeviceAddress());
309+
preference.setOnResultListener(new ClearBTDialogPreference.OnResultListener() {
310+
@Override
311+
public void onResult(boolean result) {
312+
if(result){
313+
updateBluetoothDevicePreference(preference, dpPrefs.getBluetoothDeviceAddress());
314+
}
315+
}
316+
});
317+
}
318+
}
319+
320+
private void updateBluetoothDevicePreference(Preference preference, String deviceAddress){
321+
if(TextUtils.isEmpty(deviceAddress)) {
322+
preference.setEnabled(false);
323+
preference.setTitle(R.string.pref_no_saved_bluetooth_device_title);
324+
preference.setSummary("");
325+
}
326+
else{
327+
preference.setEnabled(true);
328+
preference.setSummary(deviceAddress);
329+
330+
final String deviceName = dpPrefs.getBluetoothDeviceName();
331+
if(deviceName != null){
332+
preference.setTitle(getString(R.string.pref_forget_bluetooth_device_title, deviceName));
333+
}
334+
else
335+
preference.setTitle(getString(R.string.pref_forget_bluetooth_device_address));
336+
}
337+
}
338+
301339
private void updateConnectionPreferenceSummary(Preference preference, int connectionType) {
302340
String connectionName;
303341
switch (connectionType) {
@@ -333,7 +371,6 @@ private void initSummaryPerPrefs() {
333371
mDefaultSummaryPrefs.add(getString(R.string.pref_server_port_key));
334372
mDefaultSummaryPrefs.add(getString(R.string.pref_server_ip_key));
335373
mDefaultSummaryPrefs.add(getString(R.string.pref_udp_server_port_key));
336-
mDefaultSummaryPrefs.add(getString(R.string.pref_bluetooth_device_address_key));
337374
mDefaultSummaryPrefs.add(getString(R.string.pref_rc_quickmode_left_key));
338375
mDefaultSummaryPrefs.add(getString(R.string.pref_rc_quickmode_right_key));
339376
}

Android/src/org/droidplanner/android/utils/prefs/DroidPlannerPrefs.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,14 @@ public int getUdpServerPort(){
196196
.pref_udp_server_port_key), DEFAULT_UDP_SERVER_PORT));
197197
}
198198

199+
public String getBluetoothDeviceName(){
200+
return prefs.getString(context.getString(R.string.pref_bluetooth_device_name_key), null);
201+
}
202+
203+
public void setBluetoothDeviceName(String deviceName){
204+
prefs.edit().putString(context.getString(R.string.pref_bluetooth_device_name_key), deviceName).apply();
205+
}
206+
199207
public String getBluetoothDeviceAddress() {
200208
return prefs.getString(context.getString(R.string.pref_bluetooth_device_address_key), null);
201209
}

0 commit comments

Comments
 (0)