मैं एक ब्लूटूथ स्कैनर एंड्रॉइड एप्लिकेशन स्थापित कर रहा हूं, जहां मैं ब्लूटूथ स्कैनर (इनटेक) और एंड्रॉइड कोड का उपयोग कर एक मोबाइल डिवाइस से कनेक्ट करने का प्रयास कर रहा हूं।

मेरी आवश्यकताएँ: मेरे आवेदन के माध्यम से दोनों उपकरणों को जोड़ो। डिवाइस से कनेक्ट करें। ब्लूटूथ स्कैनर बार कोड से कोड को स्कैन करेगा और मुझे इसे अपने एप्लिकेशन एडिट टेक्स्ट पर प्रदर्शित करना होगा।

सबसे पहले मैं एंड्रॉइड ब्लूटूथ एपीआई का उपयोग करके ब्लूटूथ डिवाइस खोजूंगा।

public final BroadcastReceiver AvailableBlueToothDevicesBroadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {


        final String action = intent.getAction();
        Log.d(TAG, "onReceive: ACTION FOUND.");

        if (action.equals(BluetoothDevice.ACTION_FOUND)) {

            BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
            if (availableDevice == null) {
                availableDevice = new MutableLiveData<BluetoothDevice>();
            }
            availableDevice.setValue(device);

        } else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {

            //Done searching
            if (availableDevice == null) {
                availableDevice = new MutableLiveData<BluetoothDevice>();
            }
            availableDevice.setValue(null);
        }
    }
};

यह उपलब्ध उपकरणों को प्राप्त करने के लिए प्रसारण रिसीवर है।

मैं इसे पंजीकृत करूंगा

IntentFilter discoverDevicesIntent = new IntentFilter(BluetoothDevice.ACTION_FOUND);
                        getContext().registerReceiver(broadcastManager.AvailableBlueToothDevicesBroadcastReceiver, discoverDevicesIntent);  



इससे मुझे आस-पास के ब्लूटूथ डिवाइस की लिस्ट मिल जाएगी। मैं इसे एक Recyclerview में सूचीबद्ध करूंगा। इनमें से किसी भी डिवाइस पर क्लिक करने पर डिवाइस के बीच पेयरिंग करनी होती है। तो उसके लिए मैंने नीचे दिए गए कोड का इस्तेमाल किया है।

private void pairDevice(BluetoothDevice bluetoothDevice){

 if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR2) {                 
                       Log.d(TAG, "Trying to pair with " + 
                       bluetoothDevicebluetoothDevice.getName());
                       bluetoothDevice.createBond();
            }

}

एक बार जब यह कोड निष्पादित हो जाता है तो एक डायलॉग बॉक्स दिखाई देता है, जो डिवाइस के साथ पेयर करने के लिए कहता है। एक बार पेयरिंग पूरी हो जाने के बाद मेरी एक्टिविटी की ऑनडेस्ट्रॉय () जीवनचक्र घटना को कॉल किया जाता है और मेरी गतिविधि को डिफ़ॉल्ट रूप से फिर से बनाया जाता है। यह मेरी गतिविधि में मेरा पिछला डेटा खो देता है। ऐसा न हो कि। लेकिन जोड़ी बनाना सफलता है।

ऐसा तब होता है जब मैं अपने एंड्रॉइड मोबाइल फोन और ब्लूटूथ स्कैनर डिवाइस को कनेक्ट करने का प्रयास करता हूं। लेकिन अगर मैंने दो एंड्रॉइड फोन के बीच जोड़ी बनाने की कोशिश की तो ऑनस्ट्रोय() ईवेंट कॉल नहीं किया जा रहा है। क्या कोई मुझे बता सकता है कि ऐसा क्यों होता है?

0
Silpa Mankurussi 27 अगस्त 2019, 17:55

1 उत्तर

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

कुछ डिवाइस कॉन्फ़िगरेशन रनटाइम के दौरान बदल सकते हैं (जैसे स्क्रीन ओरिएंटेशन, कीबोर्ड उपलब्धता, और जब उपयोगकर्ता मल्टी-विंडो मोड को सक्षम करता है)। जब ऐसा कोई परिवर्तन होता है, तो एंड्रॉइड चल रही गतिविधि को पुनरारंभ करता है ( onDestroy () कहा जाता है, उसके बाद onCreate ())। पुनरारंभ व्यवहार को नए डिवाइस कॉन्फ़िगरेशन से मेल खाने वाले वैकल्पिक संसाधनों के साथ आपके एप्लिकेशन को स्वचालित रूप से पुनः लोड करके आपके एप्लिकेशन को नए कॉन्फ़िगरेशन के अनुकूल बनाने में मदद करने के लिए डिज़ाइन किया गया है।

मेरे मामले में मैं एक ब्लूटूथ स्कैनर से कनेक्ट करने का प्रयास कर रहा था जो एक भौतिक कीबोर्ड के रूप में कार्य करेगा। इसलिए हमें AndroidManifest.xml में गतिविधि में configChanges जोड़ने की आवश्यकता है

android:configChanges="अभिविन्यास|स्क्रीन आकार|कीबोर्ड|कीबोर्डहिडन|नेविगेशन"

लेकिन विन्यास परिवर्तन में अभिविन्यास और स्क्रीन का आकार जरूरी नहीं है। लेकिन अन्य हैं।

अधिक के लिए कृपया देखें: https://developer.android.com/guide/topics/resources/runtime- परिवर्तन

0
Silpa Mankurussi 19 सितंबर 2019, 14:20