Вопрос

Может ли кто -нибудь объяснить мне, почему этот код дает мне всегда только одно устройство Bluetooth, даже если я работаю с двумя галактиками один рядом с другим? Этот код работает на вкладке Samsung Galaxy, и я использую для тестов Samsung Galaxy Gio как с правильной активацией Bluetooth. Если я проверю исследование по умолчанию, это работает ... но не с этим кодом:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    out = new TextView(this);
    setContentView(out);
    // Getting the Bluetooth adapter
    BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
    out.append("\nAdapter: " + adapter);

    // Check for Bluetooth support in the first place
    // Emulator doesn't support Bluetooth and will return null
    if (adapter == null) {
        out.append("\nBluetooth NOT supported. Aborting.");
        return;
    }

    // Starting the device discovery
    out.append("\nStarting discovery...");
    adapter.startDiscovery();
    out.append("\nDone with discovery...");

    // Listing paired devices out.append("\nDevices Paired:");
    Set<BluetoothDevice> devices = adapter.getBondedDevices();
    for (BluetoothDevice device : devices) {
        out.append("\nFound device: " + device);
    }
}
Это было полезно?

Решение

Я думаю, что вы неправильно понимаете то, что делаете.

С одной стороны, назвав это ...

SET DEVICES = ADAPTER.GETBONDEDDEVICES (); для (BluetoothDevice Device: Devices) {out.append (" nfound Device:" + Device); }

... вы ищете уже парные устройства. Если вы получите только один, причина проста, у вас есть только один в паре. Примите во внимание, что это вернет все парные устройства, независимо от того, являются ли они живыми или нет.

С другой стороны, вы начинаете открытие с ...

Adapter.StartDiscovery ();

... однако вы не зарегистрировали вещательный приемник для обработки * bluetoothdevice.action_found * Намерения, которые вы получите с каждым Обнаружение Устройство Bluetooth можно увидеть. Обнаружение это ключ здесь, потому что по умолчанию устройства Android не Обнаружение и они допускают только максимальное время типичных 120 секунд.

Другие советы

Посмотрите на API

http://developer.android.com/reference/android/bluetooth/bluetoothadapter.html#startdiscovery()

StartDiscovery является асинхронным - оно будет сканировать около 12 секунд, а затем получить названия устройств любых адресов, найденных в сканировании. Вы не ждете, пока открытие закончится, поэтому неудивительно, что не все устройства в диапазоне обнаруживаются к тому времени, когда вы проверяете результаты.

Вы говорите out.append("\nAdapter: " + adapter);

Но если вы работаете в Eclipse с XML или IntelliJ

TextView txt;
String text;

....

text += ("Adapter:" +  adapter);
txt.setText(text);

Вы видите ошибку?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top