2011-12-04 24 views
11

मैं जानता हूँ कि यह इस सवाल Display Android Bluetooth Device Nameएंड्रॉयड ब्लूटूथ डिवाइस का नाम बदलें

क्या मैं जानने में दिलचस्पी रहा हूँ है का हल में वर्णित के रूप स्थानीय डिवाइस नाम प्राप्त करना संभव है, मैं स्थानीय Buetooth नाम बदल सकते हैं (एक अन्य डिवाइस देखते हैं कि जब मैं डिस्कवरी मोड में हूं) प्रोग्रामैटली। मुझे पता है कि आप इसे हाथ से बदल सकते हैं, लेकिन मैं लेखन और ऐप लिख रहा हूं और मैं नाम बदलना चाहता हूं (एक साधारण ध्वज जोड़ें) ताकि एक ही एप्लीकेशन वाले अन्य डिवाइस स्कैन कर सकें और तुरंत पता चल सके कि फ़ोन भी चल रहा है या नहीं अप्प।

tl; dr: मैं एंड्रॉइड पर ब्लूटूथ डिवाइस नाम कैसे बदल सकता हूं?

उत्तर

20

हाँ आप setName (स्ट्रिंग नाम) का उपयोग कर BluetoothAdapter type.Following की नमूना कोड है अपने डिवाइस का नाम बदल सकते हैं:

private BluetoothAdapter bluetoothAdapter = null; 
    bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 

    void ChangeDeviceName(){ 
        Log.i(LOG, "localdevicename : "+bluetoothAdapter.getName()+" localdeviceAddress : "+bluetoothAdapter.getAddress()); 
        bluetoothAdapter.setName("NewDeviceName"); 
        Log.i(LOG, "localdevicename : "+bluetoothAdapter.getName()+" localdeviceAddress : "+bluetoothAdapter.getAddress()); 
       } 
+0

धन्यवाद दयालु! @Maverick! – gumuruh

+0

यह काम करता प्रतीत होता है, लेकिन कुछ कैशिंग मुद्दों भी दिखते हैं (यानी कनेक्टेड डिवाइसों का हमेशा पुराना नाम होता है)। अगर कोई इस मुद्दे पर आता है तो फोन ब्लूटूथ सेटिंग्स में जाता है और डिवाइस को देखता है, यह मेरे लिए कैश साफ़ करना प्रतीत होता है –

1

मूल जवाब के लिए धन्यवाद, यहाँ कुछ चीजें मैं जब पाए जाते हैं कार्यान्वित करना जो किसी और की मदद कर सकता है।

1) बीटी को सेटनाम() के लिए काम करने के लिए सक्षम होना है।

2) बीटी को सक्षम करने में समय लगता है। अर्थात। आप केवल सक्षम नहीं कर सकते() फिर setName()

3) नाम को "डूबने" में समय लगता है। अर्थात। आप getName() के ठीक बाद getName() को कॉल नहीं कर सकते हैं और नया नाम उम्मीद कर सकते हैं।

तो, यहां कोड का एक स्निपेट है जिसे मैं पृष्ठभूमि में काम करने के लिए एक रननेबल का उपयोग करने के लिए आया था। यह 10 सेकंड के लिए भी समयबद्ध है, इसलिए कोई समस्या होने पर यह हमेशा के लिए नहीं चलेगा।

अंत में, यह चेक पर हमारी शक्ति का हिस्सा है, और हम आम तौर पर बीटी अक्षम (बैटरी के कारण) छोड़ देते हैं। इसलिए, मैं बाद में बीटी को बंद कर देता हूं, आप ऐसा नहीं करना चाहेंगे।

// BT Rename 
// 
final String sNewName = "Syntactics"; 
final BluetoothAdapter myBTAdapter = BluetoothAdapter.getDefaultAdapter(); 
final long lTimeToGiveUp_ms = System.currentTimeMillis() + 10000; 
if (myBTAdapter != null) 
{ 
    String sOldName = myBTAdapter.getName(); 
    if (sOldName.equalsIgnoreCase(sNewName) == false) 
    { 
     final Handler myTimerHandler = new Handler(); 
     myBTAdapter.enable(); 
     myTimerHandler.postDelayed(
       new Runnable() 
       { 
        @Override 
        public void run() 
        { 
         if (myBTAdapter.isEnabled()) 
         { 
          myBTAdapter.setName(sNewName); 
          if (sNewName.equalsIgnoreCase(myBTAdapter.getName())) 
          { 
           Log.i(TAG_MODULE, "Updated BT Name to " + myBTAdapter.getName()); 
           myBTAdapter.disable(); 
          } 
         } 
         if ((sNewName.equalsIgnoreCase(myBTAdapter.getName()) == false) && (System.currentTimeMillis() < lTimeToGiveUp_ms)) 
         { 
          myTimerHandler.postDelayed(this, 500); 
          if (myBTAdapter.isEnabled()) 
           Log.i(TAG_MODULE, "Update BT Name: waiting on BT Enable"); 
          else 
           Log.i(TAG_MODULE, "Update BT Name: waiting for Name (" + sNewName + ") to set in"); 
         } 
        } 
       } , 500); 
    } 
} 
संबंधित मुद्दे