2

Android 设备名称 == “BlueZ”?

我的问题与这个问题非常相似,我需要知道如何更改BlueZ以显示实际设备名称,即从 build.prop 读取它,而不是显示“BlueZ”

我找到了main.confin external/bluetooth/bluez/src/main.conf(可能有点偏离),它包含关于设备名称的一行,变量设置为“BlueZ”。我尝试将其更改为%dand %h,但两者都没有进行任何更改。我将尝试手动将其设置为设备名称,但我希望此修复可在多个设备上使用。

有任何想法吗?

# Default adaper name
# %h - substituted for hostname
# %d - substituted for adapter id
Name = "Bluez"

我尝试替换上述两个变量,但似乎都没有任何效果。

4

1 回答 1

0

从外部应用程序呢?您可以只构建一个 Android 版本,然后在最后一个状态下运行一个应用程序来更改 Android 设备名称吗?

您可以使用 IBluetooth.aidl -> setName 更改蓝牙名称。

教程可以在这里找到,它进一步引用了这个

简而言之,在 src 中创建一个包 android.bluetooth,在其中复制粘贴 IBluetooth.aidl 和 IBluetoothCallback.aidl(您可以在上一个链接中找到它们)。

在您的代码中,导入包: import android.bluetooth.IBluetooth;

然后实现这个方法来获取蓝牙对象:

@SuppressWarnings("rawtypes")
private IBluetooth getIBluetooth() {
    IBluetooth ibt = null;
    try {
        Class c2 = Class.forName("android.os.ServiceManager");
        Method m2 = c2.getDeclaredMethod("getService", String.class);
        IBinder b = (IBinder) m2.invoke(null, "bluetooth");
        Class c3 = Class.forName("android.bluetooth.IBluetooth");
        Class[] s2 = c3.getDeclaredClasses();
        Class c = s2[0];
        Method m = c.getDeclaredMethod("asInterface", IBinder.class);
        m.setAccessible(true);
        ibt = (IBluetooth) m.invoke(null, b);
    } catch (Exception e) {
        Log.e("flowlab", "Erroraco!!! " + e.getMessage());
    }
    return ibt;
}

然后实例化这个对象:IBluetooth ib =getIBluetooth();

并且可能使用 ib.setName("something");

于 2012-05-11T06:47:40.943 回答