कृपया कोई समस्या का पता लगाने में मेरी मदद करें..मैं ब्लूटूथडिवाइस ऑब्जेक्ट को SharedPrefrences में संग्रहीत करना चाहता हूं ताकि अगली बार जब मैं ऐप खोलूं तो फिर से पारिंग डिवाइस का चयन करने की आवश्यकता न हो। इसके लिए मुझे करना होगा इस ब्लूटूथडिवाइस ऑब्जेक्ट को स्ट्रिंग वैरिएबल में कनवर्ट करें और फिर इसे SharedPrefrence में स्टोर करें जिसके लिए मैंने इसका उपयोग किया है

Gson gson = new Gson();
String json = gson.toJson(selectedDevice,BluetoothDevice.class) ;

जहां चयनितडिवाइस ब्लूटूथडिवाइस वर्ग का एक ऑब्जेक्ट है। लेकिन कोड चलाने के बाद मुझे जोंस वैरिएबल में {} ब्रेसिज़ मिला। क्या किसी को अंदाजा हो सकता है कि ऐसा क्यों हो रहा है।

0
Bisht Lalit 25 सितंबर 2020, 10:12

2 जवाब

सबसे बढ़िया उत्तर

android.bluetooth.BluetoothDevice में लगभग सभी गुण static final हैं। तो, ये गुण एक उदाहरण पर निर्भर नहीं हैं।

एक address गुण उपलब्ध है और आवृत्ति चर पर निर्भर करता है। आप इस address संपत्ति को getAddress() का उपयोग करके अपनी साझा-प्राथमिकताओं में सहेज सकते हैं।

यदि ब्लूटूथ सक्षम है, तो आप getName() के साथ डिवाइस का नाम भी प्राप्त कर सकते हैं।

तो, मेरा सुझाव है कि आप अपनी साझा-वरीयताओं में कुछ इस तरह से सहेज लें;

class BluetoothDeviceInformation {

    String address;
    String name;

    @RequiresPermission(Manifest.permission.BLUETOOTH)
    public BluetoothDeviceInformation (
        BluetoothDevice device
    ) {
        this.address = device.getAddress();
        this.name = device.getName();
    }
}

आप इस उदाहरण का उपयोग करके बना सकते हैं:

BluetoothDeviceInformation deviceInformation = 
    new BluetoothDeviceInformation(selectedBluetoothDevice);

getType(), getAlias() आदि जैसी अन्य विधियां भी हैं। यदि आपको उनकी जानकारी चाहिए, तो बस उन्हें अपनी BluetoothDeviceInformation कक्षा में जोड़ें।

1
rupinderjeet 25 सितंबर 2020, 11:12

मान लें कि आप https का जिक्र कर रहे हैं: //android.googlesource.com/platform/frameworks/base/+/master/core/java/android/bluetooth/BluetoothDevice.java, इसमें स्थिर फ़ील्ड हैं लेकिन,

जावा सीरियलाइजेशन केवल ऑब्जेक्ट के गैर-स्थैतिक और गैर-क्षणिक क्षेत्रों को क्रमबद्ध करता है

दस्तावेज़

लेकिन अगर आपको वास्तव में इसकी आवश्यकता है तो आप कोशिश कर सकते हैं:

BluetoothDevice selectedDevice = new BluetoothDevice();
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.excludeFieldsWithModifiers(java.lang.reflect.Modifier.TRANSIENT);
Gson gson = gsonBuilder.create();
String json = gson.toJson(selectedDevice, BluetoothDevice.class);
0
Aleem Raja 25 सितंबर 2020, 11:00