Question

Je dois travailler avec le périphérique HCI d'Android, donc j'essaie d'implémenter un code simple pour obtenir le nombre de périphériques Bluetooth:

...
struct hci_dev_req *dr;

int sk = socket(AF_BLUETOOTH, SOCK_RAW, BTPROTO_HCI);
if (sk < 0)
{
    res = "invalid socket";
    goto end;
}

struct hci_dev_list_req *dl = malloc(HCI_MAX_DEV * sizeof(*dr) + sizeof(*dl));
if (!dl)
{
    res = "not enough memory";
    goto end;
}

memset(dl, 0, HCI_MAX_DEV * sizeof(*dr) + sizeof(*dl));

dl->dev_num = HCI_MAX_DEV;
dr = dl->dev_req;

if (ioctl(sk, HCIGETDEVLIST, (void *) dl) < 0)
{
    res = "unable to get device list";
    goto end;
}

if(dl->dev_num == 0)
{
    res = "device list is empty";
    goto end;
}
...

Ainsi, chaque fois que je reçois le message "La liste des périphériques est vide". Pourquoi peut-il être? Seules les autorisations que j'ai dans le programme les manifestent: Bluetooth et Bluetooth_admin. Et j'exécute l'application en tant qu'utilisateur simple et non comme root.

Tnx.

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top