Мое требование - создать приложение, которое может передавать данные / текст из Tizen Wearable в приложение iOS. Чтобы выполнить это требование, я создал коммуникационную архитектуру BLE, то есть центральную - периферийную. Итак, проблема здесь:
- iOS Central - Tizen Peripharal: в этом Tizen Peripharal зарегистрируйте службу для адаптера и объявите эту же службу для сканирования. Я получил рекламируемую услугу на центральном сервере, но зарегистрированная услуга не принимается на центральной стороне, когда я просматриваю услуги. Вот код:
var adapter2 = tizen.bluetooth.getDefaultAdapter();
var CHAT_SERVICE_UUID = "5BCE9431-6C75-32AB-AFE0-2EC108A30860";
function chatServiceSuccessCb(recordHandler)
{
console.log("Chat service registration succeeds!");
chatServiceHandler = recordHandler;
}
function publishChatService()
{
adapter2.registerRFCOMMServiceByUUID(CHAT_SERVICE_UUID, "Chat service", chatServiceSuccessCb,
function(e)
{
console.log("Could not register service record, Error: " + e.message);
});
}
publishChatService();
var adapter = tizen.bluetooth.getLEAdapter();
var advertiseData = new tizen.BluetoothLEAdvertiseData({
includeName: true,
uuids: [CHAT_SERVICE_UUID]
});
var connectable = true;
adapter.startAdvertise(advertiseData, 'ADVERTISE', function onstate(state) {
console.log('Advertising configured: ' + state);
}, function(error) {
console.log('startAdvertise() failed: ' + error.message);
}, 'LOW_LATENCY', connectable);
- Периферийное устройство iOS - Tizen Central: на этот раз я создал периферийное устройство на стороне iOS, создал ту же службу, рекламировал ее. Рекламируемые данные я получил на стороне Tizen. Я подключаюсь к удаленному устройству, вызывается прослушиватель успешного подключения. Теперь, когда я пытаюсь подключиться к службе, я получаю исключение, то есть исключение, которое не подключено к устройству.
В коде remoteDevice.getService (remoteDevice.uuids [0]) создается исключение, в то время как remoteDevice.addConnectStateChangeListener (onConnectionStateChange); этим слушателям никогда не звонят.
Вот код:
function connectFail(error) {
console.log('Failed to connect to device: ' + error.message);
}
function connectSuccess() {
console.log('Connected to device');
var serviceUUIDs = remoteDevice.uuids;
console.log('total number of services found here are: ' + serviceUUIDs.length);
service = remoteDevice.getService(remoteDevice.uuids[0]);
console.log('flag next step 1');
}
function onerror(e)
{
console.log("Error occurred: " + e.message);
}
function onDeviceFound(device)
{
console.log("Found new device: " + device.name);
var onConnectionStateChange =
{
onconnected: function(device)
{
heartrateVal.innerHTML = 'connected';
console.log("Device " + device.name + " connected");
},
ondisconnected: function(device)
{
console.log("Device " + device.name + " disconnected");
device.removeConnectStateChangeListener(listenerID);
}
};
if (device.name === "aBcD")
{
remoteDevice = device
console.log("Found required device: " + device.name);
listenerID = remoteDevice.addConnectStateChangeListener(onConnectionStateChange);
remoteDevice.connect(connectSuccess, connectFail);
adapter.stopScan();
}
}
var adapter = tizen.bluetooth.getLEAdapter();
var listenerID = null;
adapter.startScan(onDeviceFound, onerror);
Я протестировал свое приложение iOS с другим приложением iOS, а также с приложением Android, которое отлично работает. Но с tizen я сталкиваюсь с этими проблемами. Я не уверен, есть ли проблема в Tizen SDK или Tizen BLE работает иначе, чем iOS и Android.
Примечание. Весь вышеупомянутый код взят из спецификаций Tizen Samples и API. несколько ссылок
https://developer.tizen.org/development/guides/web-application/connectivity-and-wireless/bluetooth
Заранее спасибо.