使用附近连接 API 时蓝牙设备名称发生变化

问题描述 投票:0回答:1

我尝试了下面的代码。

public class NearbyConnectionUI extends HanSystemUI {
private ConnectionsClient mConnectionsClient;

private void startAdvertising(){
        mConnectionsClient
                .startAdvertising(
                        Settings.Secure.getString(mContext.getContentResolver(), "bluetooth_name"),
                        BuildConfig.APPLICATION_ID, // serviceID
                        new ConnectionLifecycleCallback() {

                            @Override
                            public void onConnectionInitiated(@NonNull String endpointID, @NonNull ConnectionInfo connectionInfo) {
                                Log.d(TAG, "onConnectionInitiated: endpointID : " + endpointID + "endpointName : " + connectionInfo.getEndpointName());

                                mNearbyConfirmDlg.setDeviceName(connectionInfo.getEndpointName());
                                mNearbyConfirmDlg.setConnectionConfirmInterface(result -> {
                                    if ("ok".equals(result)) {
                                        acceptConnection(endpointID);
                                    } else {

                                    }
                                });

                                mNearbyConfirmDlg.show();
                            }

                            @Override
                            public void onConnectionResult(@NonNull String endpointID, @NonNull ConnectionResolution connectionsResult) {
                                Log.d(TAG, "onConnectionResult: endpointID : " + endpointID + ", result : " + connectionsResult.getStatus().getStatusCode());
                                if (connectionsResult.getStatus().isSuccess()) {

                                }
                            }

                            @Override
                            public void onDisconnected(@NonNull String endpointID) {
                                Log.d(TAG, "onDisconnected: endpointID : " + endpointID);
                            }
                        },
                        new AdvertisingOptions.Builder().setStrategy(Strategy.P2P_STAR).build()
                )
                .addOnSuccessListener(
                        unusedResult ->
                                Log.d(TAG, "advertising success. endpointName : " +
                                        Settings.Global.getString(mContext.getContentResolver(), Settings.Global.DEVICE_NAME))
                )
                .addOnFailureListener(
                        exception ->
                                Log.d(TAG, "advertising fail. exception : " + exception.getMessage())
                );
}
}

我在蓝牙设置中将设备名称设置为“jaeHyun”。 当我运行广告时,蓝牙设置中其他设备上显示的名称将更改为随机字符串。例如“ISUEdvDFSAFEIOWFFD”。 当我运行 stopAdvertising() 时,集名称将正确显示。 我想设置它,以便即使我运行 startAdvertising(),它也显示为我设置的“我的设备”。

android google-nearby google-nearby-connections
1个回答
0
投票

这是由于通过蓝牙进行广告造成的。您可以将 #setLowPower() 设置为 true,这样广告仅通过 BLE 执行,并且 BT 名称不受影响。

© www.soinside.com 2019 - 2024. All rights reserved.