2012-07-03 10 views
5

Sto cercando di scrivere un'applicazione per iPhone che sarà in grado di controllare radio e lettore CD in auto. Radio e lettore hanno una connessione Bluetooth disponibile.Controllo dispositivo audio Bluetooth con iPhone

Ho iniziato questa domanda per ottenere tutte le informazioni di cui ho bisogno per questo unico posto. Ho poche domande, ma se trovi qualcosa che non ho chiesto per me di iniziare a sviluppare questa applicazione, per favore, fammi sapere.

Ho letto sul profilo AVRCP e il dispositivo Bluetooth in auto supporta AVRCP 1.3, che è abbastanza buono per me, avendo in mente i controlli che possono essere eseguiti in quella versione di protocollo.

Ho letto molto su persone che dicono "il dispositivo Apple può interagire solo l'un l'altro", "il dispositivo Apple non può essere collegato via Bluetooth a un dispositivo non Apple", "il programma MFi è obbligatorio se si vuole farlo "," MFi non è necessaria ", ecc. La mia prima domanda è:

1) È anche possibile associare iPhone (4, 4S) con radio e lettore CD in auto tramite Bluetooth e controllare stazioni radio e musica con qualsiasi versione per iPhone? Se sì, quali sono i limiti per realizzare questo tipo di connessione Bluetooth di successo?

Ci sono anche pochissime informazioni sui ruoli in cui iPhone può funzionare. Per AVRCP ci sono due tipi di ruoli: controller e ruolo di destinazione. Leggendo questo documento: https://developer.apple.com/hardwaredrivers/BluetoothDesignGuidelines.pdf Non ho trovato risposta alla mia seconda domanda:

2) L'iPhone può fungere da controller e inviare tutti i comandi disponibili in AVRCP 1.3 al dispositivo di destinazione (radio e lettore CD)?

Vorrei anche conoscere i framework disponibili per questo particolare problema. So che ce ne sono molti, ma se qualcuno riconosce quello giusto per il mio problema, mi piacerebbe sapere:

3) Quale framework per l'interazione con il dispositivo di destinazione dovrei usare?

Dal punto di vista dello sviluppatore, sono interessato anche alle API disponibili per l'interazione con il dispositivo Bluetooth connesso. Dal momento che sto creando la mia applicazione e assegnando azioni ai pulsanti, all'interno dei metodi assegnati ai pulsanti devo eseguire l'invio di messaggi al dispositivo di destinazione. Quindi la mia prossima domanda è:

4) Qualcuno sa come se c'è un modo per inviare comandi al dispositivo di destinazione (avvio/arresto/pausa/avanti/indietro, ecc.) Come parte di alcune API fornite in XCode, o ogni messaggio che presento ad inviare via Bluetooth al dispositivo di destinazione devo fare in base alla documentazione del protocollo (rendere da solo l'intero messaggio (intestazione, corpo, parte di comando, ecc.)?

AVRCP era il mio pensiero per realizzare questa applicazione. Se ho torto, per favore fatemelo sapere. Bluetooth ha diversi profili e quando il messaggio viene inviato da un dispositivo, per quanto ho capito, il profilo stesso gestisce il messaggio e lo interpreta e lo consegna al dispositivo di destinazione in modo che il dispositivo di destinazione possa capirlo. Non capisco come un messaggio inviato da iPhone a un dispositivo Bluetooth target venga gestito dal momento in cui lo invio dal mio codice Objective-C (o C). Questo è il dubbio principale che ho ed è correlato alla domanda 4 - ho bisogno di creare messaggi non formattati nel formato corretto per inviare comandi AVRCP al dispositivo o posso usare qualche API che riconoscerà quei messaggi come AVRCP (o qualsiasi altro altro tipo) e consegnarlo al dispositivo di destinazione?

Quest'ultima domanda (se suppongo ci sia qualche tipo di risposta positiva a tutti i precedenti) mi preoccupa di più dal punto di vista dello sviluppatore. Quindi, se qualcuno avesse forse esperienza con questo specifico problema, gradirei qualsiasi tipo di risposta o consiglio.

Non vedo l'ora di ricevere le vostre risposte. Spero che inizi la discussione costruttiva e utile su questo argomento e che vengano scritte molte informazioni utili.

Cordiali saluti.

+0

# 1: @javieralog - Grazie per chiarimenti su dispositivi MFi e BT4.0 LE. – uerceg

risposta

5

È possibile farlo utilizzando CoreBluetooth se il dispositivo (lettore CD) è Bluetooth 4.0 LE compliant

+0

Grazie per la risposta rapida. Ho letto che solo l'iPhone 4S supporta i dispositivi compatibili con Bluetooth 4.0 LE e le versioni precedenti no. È vero? E un'altra domanda: se un dispositivo non è compatibile con Bluetooth 4.0 LE, stai dicendo che è IMPOSSIBILE controllarlo con QUALSIASI versione di iPhone nel modo che voglio? Grazie in anticipo. – uerceg

+0

true per la parte iPhone. Non sono sicuro se vero per iPad; Penso che il nuovo iPad sia BT4.0 con la modalità LE – javieralog

+0

stai dicendo che è IMPOSSIBILE controllarlo con QUALSIASI versione di iPhone nel modo che voglio? Sì al di fuori del programma MFi – javieralog

0

Molto probabilmente non sarà in grado di farlo anche se il lettore CD auto ha BLE 4.0.

Con i dispositivi Bluetooth Core funzionano come "Central" (client) o "Peripheral" (server), la periferica "dispone di dati" ed espone servizi con caratteristiche (variabili). Il client centrale (client) legge i dati dalla periferica o sottoscrive le notifiche.

L'unica possibilità è quella di connettersi al lettore CD come periferica (server) e il proprio iPhone come centrale (client). In questo caso il lettore CD deve esporre i servizi che consentono di controllarlo. Per essere onesti non so come si possa fare, dal momento che la centrale (l'iPhone) leggerà i dati e riceverà le notifiche dalla periferica, non viceversa.

Inversione dei ruoli, l'implementazione di iPhone come periferica ha senso, ma non esiste un servizio Bluetooth LE predefinito per il controllo remoto, quindi il lettore CD dell'automobile non sa quale servizio aspettarsi da voi. Potrebbe funzionare utilizzando il servizio HID (Human Interface Device), utilizzato in generale per tastiera e mouse, ma secondo questo post l'HID è vietato da Apple su iOS.