Connexion Bluetooth entre 2 appareils iOS
J'essaie Core Bluetooth cadre introduit dans l'iOS 5.0. Selon le nombre de threads (l'un des nombreux) sur StackOverflow lui-même:
- Core Bluetooth cadre peut être utilisé pour communiquer avec TOUT
le matériel, qui a le Bluetooth Low Energy (4.0) prise en charge matérielle. - Nous pouvons oublier Made For iPhone/iPod (IMF) du programme, si vous êtes
l'aide de Base de la technologie Bluetooth.
J'ai un iPhone 5, iPhone 4S, Android de Google, la Nexus 7 avec moi, et je suis sûr qu'au moins les 2 premiers a le soutien matériel de BLE.
Ma Question est
Bien, j'ai essayé donnée ci-dessous de code sur mon iPhone 4S/iPhone 5, mais il n'a pas de numérisation et de trouver l'iPhone5/iPhone 4S assis à proximité. Je peux confirmer, que les deux appareils avaient bluetooth activé. Le délégué de la méthode didDiscoverPeripheral
jamais appelé.
Quelles pourraient être les raisons? Ai-je raté quelque chose?
C'est mon code (démonté pour un petit projet de test).
ViewController.h
@interface ViewController:UIViewController<CBCentralManagerDelegate, CBPeripheralDelegate{
}
@property (strong, nonatomic) CBCentralManager *mCentralManager;
@end
ViewController.m
@implementation ViewController
@synthesize mCentralManager;
- (void)viewDidLoad{
[super viewDidLoad];
mCentralManager = [[CBCentralManager alloc]initWithDelegate:self queue:nil];
[self scanForPeripherals];
}
- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI {
NSLog(@"Received periferal :%@",peripheral);
}
- (int) scanForPeripherals {
if (self.mCentralManager.state != CBCentralManagerStatePoweredOn)
{
NSLog(@"self.mCentralManagerState : %d",self.mCentralManager.state);
return -1;
}
//Getting here alright.. bluetooth is powered on.
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:NO], CBCentralManagerScanOptionAllowDuplicatesKey, nil];
//Documentation says passind nil as device UUID, scans and finds every peripherals
[self.mCentralManager scanForPeripheralsWithServices:nil options:options];
return 0;
}
@end
Je ne sais rien à propos de l'iPhone, mais la façon dont BLE œuvres, l'un des appareils de diffusion alors que les autres on peut le découvrir. De sorte que vous aurait besoin de deux morceaux de code...
hmm.. après la publication de cette question, j'en suis venu à comprendre.. Maintenant des recherches sur elle.. Semble que ma compréhension de la communication bluetooth est d'amateur.. Il ne semble pas plus facile.. nouveau rien j'ai trouver..
OriginalL'auteur Krishnabhadra | 2012-12-13
Vous devez vous connecter pour publier un commentaire.
Comme spamsink commenté, un appareil doit agir en tant que périphérique, et l'un comme centrale dans l'ordre pour eux de communiquer.
Il y a une grande exemple d'application d'Apple qui le fait. Aussi, découvrez la WWDC 2012 sessions 703 - CoreBluetooth 101 et 705 - Avancé CoreBluetooth pour la grande explication et des exemples de CoreBluetooth cadre de l'utilisation.
Noter également, pour que l'appareil sera périphériques de la mode, il doit être mis à jour pour iOS 6.0 ou version ultérieure.
OriginalL'auteur Filip Radelic
Bien, ma compréhension de la technologie Bluetooth Low Energy (BLE) général était pauvre. Que l'on a accepté la réponse indique, un appareil a à agir en tant que Centrale et l'autre a à agir en tant que périphérique pour une communication.
Un bon exemple de code source pour iOS pour iOS et iOS pour Mac OS BLE de la communication est ici.
Quelques points importants à considérer
entre 2 appareils iOS n'est pas possible.
la communication, au moins un appareil doit être en cours d'exécution sur
iOS 6.0 (et probablement plus tard).
iPhone 4 peut exécuter iOS 5 ,BLE de la communication n'est pas possible.
Bien quelques informations..
OriginalL'auteur Krishnabhadra
si vous appelez scanForPeripherals fonction dans didUpdateState délégué, puis il travaille parce que déléguer ses fonctions ne peut pas revenir.
OriginalL'auteur user4376986