मूल जवाब के लिए धन्यवाद, यहाँ कुछ चीजें मैं जब पाए जाते हैं कार्यान्वित करना जो किसी और की मदद कर सकता है।
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);
}
}
धन्यवाद दयालु! @Maverick! – gumuruh
यह काम करता प्रतीत होता है, लेकिन कुछ कैशिंग मुद्दों भी दिखते हैं (यानी कनेक्टेड डिवाइसों का हमेशा पुराना नाम होता है)। अगर कोई इस मुद्दे पर आता है तो फोन ब्लूटूथ सेटिंग्स में जाता है और डिवाइस को देखता है, यह मेरे लिए कैश साफ़ करना प्रतीत होता है –