2012-05-29 14 views
6

मैंने देखा कि जब एक जोड़े वाले ब्लूटूथ डिवाइस का नाम बदल जाता है, तो मेरा एंड्रॉइड डिवाइस हमेशा उस नाम परिवर्तन को पंजीकृत नहीं करता है। यह डिवाइस का पुराना नाम प्रदर्शित करना जारी रखता है ... यह अनपेक्षित उपकरणों की समस्या नहीं है, इसलिए मेरा प्राकृतिक अनुमान यह है कि एंड्रॉइड कहीं भी जोड़े गए उपकरणों के नाम कैश करता है।एंड्रॉइड में ब्लूटूथ नाम कैश प्रोग्रामेटिक रूप से कैसे साफ़ करें?

चारों ओर देखने के बाद, मैंने पाया कि अगर मैं डिवाइस को अनपेयर करता हूं और अपने एंड्रॉइड के "ब्लूटूथ शेयर" ऐप में संग्रहीत कैश को मैन्युअल रूप से साफ़ करता हूं, तो यह समस्या दूर हो जाती है। बेशक, डिवाइस को फिर से अपने एंड्रॉइड में जोड़ने के बाद समस्या वापस आ जाएगी।

टीएल; डीआर मैं ब्लूटूथ डिवाइस का नवीनतम नाम हमेशा दिखाने के लिए एंड्रॉइड को कैसे मजबूर करूं?

मैंने "fetchUuidsWithSdp" विधि के बारे में कुछ सुना है, लेकिन मुझे यकीन नहीं है कि इसका उपयोग कैसे करें।

उत्तर

6

हां, fetchUuidsWithSdp() एक अच्छा विचार है क्योंकि getUuids() के विपरीत यह डिवाइस को डिवाइस डिवाइस से कनेक्ट करने का प्रयास करने और इसके बारे में इसकी जानकारी अपडेट करने के लिए मजबूर करता है।

fetchUuidsWithSdp के लिए आधिकारिक समर्थन अभी 4.0.3 में जोड़ा गया था, लेकिन यह प्रतिबिंब का उपयोग कर इससे पहले उपलब्ध था।

public static void startFetch(BluetoothDevice device) { 
    // Need to use reflection prior to API 15 
    Class cl = null; 
    try { 
     cl = Class.forName("android.bluetooth.BluetoothDevice"); 
    } catch(ClassNotFoundException exc) { 
     Log.e(CTAG, "android.bluetooth.BluetoothDevice not found."); 
    } 
    if (null != cl) { 
     Class[] param = {}; 
     Method method = null; 
     try { 
      method = cl.getMethod("fetchUuidsWithSdp", param); 
     } catch(NoSuchMethodException exc) { 
      Log.e(CTAG, "fetchUuidsWithSdp not found."); 
     } 
     if (null != method) { 
      Object[] args = {}; 
      try { 
       method.invoke(device, args); 
      } catch (Exception exc) { 
       Log.e(CTAG, "Failed to invoke fetchUuidsWithSdp method."); 
      }    
     } 
    } 
} 

एक सामान्य रूप से तो android.bluetooth.device.action.UUID के लिए रजिस्टर होगा, लेकिन आप के बजाय नाम बदलने की कार्रवाई के लिए रजिस्टर करने के लिए चाहते हो सकता है।

ध्यान दें कि, यदि आप यूयूआईडी कार्रवाई के लिए पंजीकरण करने का निर्णय लेते हैं, तो इसे एपीआई 15 से पहले "android.bleutooth.device.action.UUID" के रूप में गलत वर्तनी थी (ब्लूटूथ में ई और यू स्वैप किया गया है)।

+0

तुम इतना – user1408996

+0

धन्यवाद इस विधि मेरी ब्लूटूथ अवरोध हटा तो मैं डेटा भेज सकते हैं। पहले बीटी डिवाइस जवाब नहीं देगा। इस कोड को लागू करने के बाद, मैंने साझेदारी हटा दी और फिर इसे फिर से बनाया। मेरे पास ब्लूटूथ प्रिंटर एडाप्टर (चीनी) और एक ईपीएसॉन एलएक्स 300 + II डॉट प्रिंटर है। मैं चालान सूचीबद्ध करता हूँ। तो बहुत धन्यवाद !!! – mihai71

0

पिछले युक्ति है कि मैं कनेक्ट मैं हमेशा एक फ़ाइल में मैक पता बचाने के याद करने के लिए

संबंधित मुद्दे