Kitty Опубликовано 1 ноября, 2016 Поделиться Опубликовано 1 ноября, 2016 Подскажите, пожалуйста, как на iOS телефоне проверить при старте программы или включен Bluetooth? И если нет, предложить включить Bluetooth пользователю. Спасибо. Цитата Ссылка на комментарий
0 Rusland Опубликовано 2 ноября, 2016 Поделиться Опубликовано 2 ноября, 2016 17 часов назад, Kitty сказал: Подскажите, пожалуйста, как на iOS телефоне проверить при старте программы или включен Bluetooth Посмотрите TBluetoothManager->CurrentAdapter->State Kitty 1 Цитата Ссылка на комментарий
0 Kitty Опубликовано 2 ноября, 2016 Автор Поделиться Опубликовано 2 ноября, 2016 Спасибо. Посмотрела, что для CurrentAdapter можно также использовать компонент TBluetoothLE. Подскажите, где ошибка? Блютуз на телефоне iPhone 5 включен, а при нажатии на кнопку вижу сообщение OFF: void __fastcall TForm1::FormActivate(TObject *Sender) { BluetoothLE1->Enabled = true; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { if(BluetoothLE1->CurrentAdapter->State == TBluetoothAdapterState::Off) { ShowMessage(L"OFF"); } else { ShowMessage(L"ON"); } } Цитата Ссылка на комментарий
0 Kitty Опубликовано 2 ноября, 2016 Автор Поделиться Опубликовано 2 ноября, 2016 Без компонента тоже OFF... private: // User declarations TBluetoothLEManager * FBluetoothManagerLE; //*** void __fastcall TForm1::FormActivate(TObject *Sender) { FBluetoothManagerLE = TBluetoothLEManager::Current; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { if(FBluetoothManagerLE->CurrentAdapter->State == TBluetoothAdapterState::Off) { ShowMessage(L"OFF"); } else { ShowMessage(L"ON"); } } Цитата Ссылка на комментарий
0 Kitty Опубликовано 3 ноября, 2016 Автор Поделиться Опубликовано 3 ноября, 2016 Похоже, что так работает, правда не известно ли для всех телефонов будет стабильно: if(FBluetoothManagerLE->ConnectionState == TBluetoothConnectionState::Connected) { ShowMessage(L"Connected"); } else { ShowMessage(L"Disconnected"); } Цитата Ссылка на комментарий
0 Vitaldj Опубликовано 3 ноября, 2016 Поделиться Опубликовано 3 ноября, 2016 2 часа назад, Kitty сказал: Похоже, что так работает, правда не известно ли для всех телефонов будет стабильно: if(FBluetoothManagerLE->ConnectionState == TBluetoothConnectionState::Connected) { ShowMessage(L"Connected"); } else { ShowMessage(L"Disconnected"); } А почему нет? Это жа iOs, а не андроид. Там, если завелось для одного, для других будет ок! Kitty 1 Цитата Ссылка на комментарий
0 Kitty Опубликовано 4 ноября, 2016 Автор Поделиться Опубликовано 4 ноября, 2016 (изменено) А еще такой вопрос: Берем стандартный пример и компилируем при выключенном блютуз на устройство ios: C:\Users\Public\Documents\Embarcadero\Studio\18.0\Samples\CPP\Multi-Device Samples\Device Sensors and Services\Bluetooth\BLEScanner В приложении получаем окно, после нажатия кнопки: ErrorBluetooth device not found: discconnected of turned off. Как сделать это сообщение на русском или заменить полностью своим? Изменено 4 ноября, 2016 пользователем Kitty Цитата Ссылка на комментарий
0 Модераторы Равиль Зарипов (ZuBy) Опубликовано 4 ноября, 2016 Модераторы Поделиться Опубликовано 4 ноября, 2016 29 минут назад, Kitty сказал: А еще такой вопрос: Берем стандартный пример и компилируем при выключенном блютуз на устройство ios: C:\Users\Public\Documents\Embarcadero\Studio\18.0\Samples\CPP\Multi-Device Samples\Device Sensors and Services\Bluetooth\BLEScanner В приложении получаем окно, после нажатия кнопки: ErrorBluetooth device not found: discconnected of turned off. Как сделать это сообщение на русском или заменить полностью своим? это нужно искать в исходниках, найдете модуль положите его себе в проект и заменить в нем сообщение на своё Kitty 1 Цитата Ссылка на комментарий
0 Kitty Опубликовано 4 ноября, 2016 Автор Поделиться Опубликовано 4 ноября, 2016 Спасибо. А еще вопрос, на каком этапе и как можно перехватить исключение EBluetoothAdapterException?: http://docwiki.embarcadero.com/Libraries/Berlin/en/System.Bluetooth.TBluetoothManager.CurrentAdapter Цитата Ссылка на комментарий
0 Kitty Опубликовано 4 ноября, 2016 Автор Поделиться Опубликовано 4 ноября, 2016 Избавиться от английского окна, вроде удалось с помощью таймеров, но это предварительная оценка. Пока английского окна не вижу. Вижу информацию понятную пользователю для его дальнейших действий без перезапуска приложения. насколько правильно, не знаю...: void __fastcall TForm1::TimerStartTimer(TObject *Sender) { //через 2 секунды запускаем Beacon1 если Bluetooth включен TimerStart->Enabled = false; //и сразу отключаем таймер Beacon1->Enabled = true; } //--------------------------------------------------------------------------- //проверка включен ли Bluetooth bool __fastcall TForm1::ManagerConnected(void) { if(FBluetoothManagerLE->ConnectionState == TBluetoothConnectionState::Connected) { return true; } else { return false; } } //--------------------------------------------------------------------------- void __fastcall TForm1::FormShow(TObject *Sender) { try { FBluetoothManagerLE = TBluetoothLEManager::Current; if(ManagerConnected()) { //есть Bluetooth TimerStart->Enabled = true;//программа идет по нужному сценарию т.к. Bluetooth включен } else { //нет Bluetooth ShowMessage(L"Включите Bluetooth."); TimerCheckBluetooth->Enabled = true; //проверяем вкл. Bluetooth каждые 10 секунд } } catch (Exception &ex) { ShowMessage(L"Ошибка: " + ex.Message); } } //--------------------------------------------------------------------------- void __fastcall TForm1::TimerCheckBluetoothTimer(TObject *Sender) { if(ManagerConnected()) { //если Bluetooth был включен пользователем уже при включенной программе отключаем таймер проверки Bluetooth TimerCheckBluetooth->Enabled = false; TimerStart->Enabled = true; //и запускаем программу по нужному сценарию т.к. Bluetooth включен } } Цитата Ссылка на комментарий
0 Kitty Опубликовано 5 ноября, 2016 Автор Поделиться Опубликовано 5 ноября, 2016 Все таки этот код не защищает полностью от английского окна... Пользователь может совершит не адекватное действие и тогда английское исключение. Действие: в работающем приложении с включенным блютуз, зайти в настройки телефона и выключить блютуз, после чего вернуться в приложение. Цитата Ссылка на комментарий
Вопрос
Kitty
Подскажите, пожалуйста, как на iOS телефоне проверить при старте программы или включен Bluetooth? И если нет, предложить включить Bluetooth пользователю.
Спасибо.
Ссылка на комментарий
10 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.