В настоящее время я пишу приложение для Android для управления устройствами Bluetooth. Я пытаюсь сохранить от ArrayList<BluetoothDevice>
до SharedPreferences
, используя классы Gson и Json, но когда я пытаюсь запустить этот фрагмент кода на своем телефоне, я не могу получить имя каждого устройства, но могу получить их адреса. Я вижу эту ошибку в журнале Android Monitor (используя Android Studio):
03-28 16:12:51.706 17640-17640/? E/BluetoothDevice: BT не включен. Не удается получить имя удаленного устройства
Я использую собственный класс для управления списком устройств, вот соответствующий код:
public class DeviceList {
private ArrayList<BluetoothDevice> mDeviceList_bt;
private ArrayList<String> mDeviceList_s;
private ArrayAdapter mAdapter;
private String PREFS_NAME;
SharedPreferences mPrefs;
SharedPreferences.Editor mEditor;
private int i = 0;
public DeviceList(Context c, String Prefs_Name){
this.PREFS_NAME = Prefs_Name;
mDeviceList_bt = new ArrayList<BluetoothDevice>();
mDeviceList_s = new ArrayList<String>();
mPrefs = PreferenceManager.getDefaultSharedPreferences(c);
mEditor = mPrefs.edit();
mAdapter = new ArrayAdapter(c, android.R.layout.simple_list_item_1, mDeviceList_s);
}
public void readFromSharedPrefs(){
Gson gson = new Gson();
String json = mPrefs.getString(PREFS_NAME, null);
Type type = new TypeToken<ArrayList<BluetoothDevice>>() {}.getType();
mDeviceList_bt = gson.fromJson(json, type);
for (BluetoothDevice device : mDeviceList_bt) {
mDeviceList_s.add(device.getName() + "\n" + device.getAddress());
}
mAdapter.notifyDataSetChanged();
}
public void saveToSharedPrefs(){
Gson gson = new Gson();
String json = gson.toJson(mDeviceList_bt); // myObject - instance of MyObject
mEditor.putString(PREFS_NAME, json);
mEditor.commit();
}
Например, если я сохраню список с этими тремя устройствами:
DeviceName1
8C:DE:52:FA:96:0A
DeviceName2
00:3E:01:00:47:4E
DeviceName3
8C:DE:52:FA:B5:F0
Я получаю это после того, как прочитал от SharedPreferences
:
null
8C:DE:52:FA:96:0A
null
00:3E:01:00:47:4E
null
8C:DE:52:FA:B5:F0
Любая идея, что я делаю неправильно?
Заранее спасибо!