Разработка сайта для Вашего бизнеса. Веб дизайн. Дизайн логотипа, фирменного стиля, рекламная фотография . Комплексный рекламный креатив.

Ralex. We do the work.
На рынке с 1999го года. Средняя ценовая категория. Ориентация на эффективность решений.
Ознакомтесь с нашим портфолио
Узнайте больше о услугах
Свяжитесь с нами:
E-mail: [email protected]
Tel: (044) 587 - 84 - 78
Custom web design & дизайн и разработка сайта "под ключ"
Креативный, эффективный дизайн. Система управления сайтом (СУС).
Custom flexible разработка систем электронной коммерции
Система e-commerce разрабатывается под индивидуальные потребности. Гибкая функциональность.
Search Engine Optimzation & оптимизация под поисковые системы (SEO)
Постоянная оптимизация и мониторинг сайта в поисковых системах. Достигаем результата быстро и эффективно
Custom logo design & дизайн логотипа и фирменного стиля
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.
профессиональная рекламная фотография
креативно, смело, качественно
Custom logo design & рекламный креатив. дизайн рекламы
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.

Технологія автоматичної адаптації режиму роботи мобільних телефонів до умов середовища з використанням Bluetooth і сервера Serendipity

  1. Що таке Bluetooth?
  2. Малюнок 1. Многоточечная мережу піконет
  3. Малюнок 2. Сервер Serendipity і підключений до нього пристрій мобільного зв'язку
  4. Використання програми сервера Serendipity
  5. Лістинг 1. Створення Bluetooth-сервісу і з'єднання з сервером
  6. Лістинг 2. Встановлення контролю над клієнтом
  7. Лістинг 3. Читання даних профілю клієнтського пристрою з мережевого Bluetooth-з'єднання
  8. Лістинг 4. Оповіщення клієнта
  9. Лістинг 5. Закриття з'єднання Notifier
  10. Реалізація програми клієнта
  11. Лістинг 6. Ініціалізація клієнта і отримання реєстраційних даних
  12. Лістинг 7. Запис деталей профілю в мережу
  13. Лістинг 8. Читання даних профілю клієнта
  14. Лістинг 9. Закриття клієнтського з'єднання
  15. Використання Bluetooth і сервера Serendipity для зміни профілю користувача: приблизний сценарій
  16. Малюнок 3. Блок-схема зразкового сценарію
  17. Конфігурація провідних і підлеглих пристроїв і формування локальної мережі піконет
  18. Перевірка и зміна профільніх установок ведучого и підлеглого прістроїв
  19. Висновок
  20. Ресурси для скачування

Наша взаимовыгодная связь https://banwar.org/

Сучасне програмне забезпечення допомагає звести до мінімуму кількість випадків відволікання уваги в приміщеннях громадського користування

Мобільні телефони роблять нас більш доступними і гнучкими: люди більше не прив'язані до одного місця для розмов по стаціонарної лінії. Така мобільність не може не привести до підвищення отвлекаемости і збільшення випадків необхідності вступати в спілкування. Наприклад, дзвінок мобільного телефону може перешкодити груповий і громадської діяльності в класі, на зборах або в кіно. Як правило, це відбувається тому, що користувач забуває поміняти режим роботи свого телефону відповідно до ситуації. Затримки, пов'язані з несвоєчасними дзвінками на зустрічах, можуть викликати незручності, почуття збентеження у власника телефону.

У цій статті ми пропонуємо рішення, яке допоможе автоматично поміняти режим роботи вашого мобільного телефону відповідно до контексту. Це досягається за допомогою технології Bluetooth і сервера Serendipity. Перші два розділи містять загальні відомості про ці дві технології. Третій розділ містить приклад застосування цієї технології разом з принциповою схемою функціонування і детальним поясненням.

Що таке Bluetooth?

Існує кілька способів зв'язку між електронними пристроями, наприклад:

  • вбудовані кабелі
  • електропроводка
  • Кабелі мережі Ethernet
  • Wi-Fi
  • інфрачервоні сигнали

Різні електронні пристрої (комп'ютери, ноутбуки, музичні системи, мобільні телефони, кишенькові комп'ютери, принтери і т. Д.), З'єднані цими способами, складають сукупність електронних систем.

Bluetooth є ще одним способом між цими пристроями. Назва Bluetooth отримала технологія, заснована на коротких радіохвилях, які замінюють дроти, що сполучають переносні або стаціонарні електронні пристрої. Bluetooth є різновидом персональних бездротових мереж (WPAN), відомих також як специфікація IEEE 802.15.1. Bluetooth створює можливості для зв'язку та обміну інформацією між електронними пристроями на невеликій відстані з використанням безпечної, дешевої, всюди доступною радіочастоти. Основні характеристики цієї технології - це стійкість, невисока складність, низьке енергоспоживання і вартість.

Головні переваги Bluetooth - це відсутність проводів, дешевизна і автоматична робота. Існують інші способи уникнути використання проводів, наприклад використання інфрачервоного випромінювання. Зв'язок на основі ІК хвиль досить надійна і недорога, але має цілий ряд недоліків. По-перше, ІЧ-випромінювання передається тільки по прямій лінії. Наприклад, пульти дистанційного керування для телевізорів або DVD-програвачів, що працюють на ІЧ-випромінюванні, необхідно направляти на пристрій для того, щоб проводити будь-які дії. Другий недолік - це те, що ця технологія майже завжди пов'язує тільки два пристрої. Ви можете надіслати дані зі свого настільного комп'ютера на ноутбук за допомогою інфрачервоного випромінювання, але одночасно відіслати їх на ваш кишеньковий комп'ютер неможливо. Bluetooth створювався, щоб вирішити проблеми, що виникають з використанням інфрачервоного випромінювання.

Створена для роботи в насиченою різними хвилями середовищі технологія Bluetooth використовує швидке розпізнавання і стрибкоподібне зміна частоти, щоб зробити з'єднання стійким. Пристрої Bluetooth працюють на частоті 2,4 ГГц, яка відноситься до доступного всюди, безліцензійний діапазону частот ISM. (ISM розшифровується як industrial - промисловий, scientific - науковий і medical - медичний.). Робочий діапазон розділений на канали по 1 МГц, по кожному з яких передаються сигнали на швидкості 1 Мбіт / с. Після передачі кожного пакета пристрій зв'язку перенастраивается на іншу частоту, перескакуючи з одного каналу на інший. Таким чином, в разі збою при передачі пакета по одному каналу, повторна передача піде по іншому каналу. Якщо пристрої повинні поміняти частоту після кожної передачі, вони всі повинні використовувати строго встановлений діапазон.

Пристрої Bluetooth можуть працювати в двох різних режимах: ведучий пристрій (master) і підлеглий пристрій (slave). Сукупність підлеглих пристроїв, що працюють разом з одним провідним пристроєм, називається піконет. Кожен пристрій Bluetooth має унікальний Bluetooth-адреса і тактову частоту. Підлеглий пристрій використовує адресу і тактову частоту ведучого пристрою при обчисленні стрибкоподібно змінюється частоти. Коли підлеглий пристрій зв'язується з ведучим, його інформують його адресу і тактова частота. Це служить для підтримки синхронізації всіх пристроїв піконет з провідним пристроєм.

Провідний пристрій контролює, як загальна доступна частота розподіляється між підлеглими пристроями, визначаючи, коли і як часто зв'язуватися з кожним з них. Кількість тимчасових інтервалів, які виділяються кожному пристрою, залежить від потреб передачі даних. Система розподілу тимчасових інтервалів між кількома пристроями називається мультиплексной передачею з тимчасовим поділом каналів. Підлеглі пристрої в мережі піконет пов'язані тільки з провідним пристроєм. Як такого зв'язку між самими підлеглими пристроями немає. Це відображено на малюнку 1 . Для більш детальної інформації про роботу Bluetooth дивіться ресурси .

Малюнок 1. Многоточечная мережу піконет
Сучасне програмне забезпечення допомагає звести до мінімуму кількість випадків відволікання уваги в приміщеннях громадського користування   Мобільні телефони роблять нас більш доступними і гнучкими: люди більше не прив'язані до одного місця для розмов по стаціонарної лінії

сервер Serendipity

Serendipity (див. ресурси для більш детальної інформації) складається з центрального сервера, що містить інформацію про різні профілях користувачів, пристроїв мобільного зв'язку і т. д., що знаходяться поблизу. Ці профілі зберігаються в базі даних. Сервер Serendipity також збирає і підтримує дані про граничні величинах і схемою навантаження, яка визначає подібні дані. Сервер Serendipity є пристроєм, який дозволяє двом різним апаратам, які перебувають в зоні дії сервера Bluetooth, зв'язуватися один з одним.

Малюнок 2. Сервер Serendipity і підключений до нього пристрій мобільного зв'язку

Сервер Serendipity і мобільний телефон з включеним Bluetooth зв'язуються за допомогою Connected Limited Device Configuration (CLDC), пов'язаної з Mobile Information Device Profile (MIDP). CLDC і MIDP разом складають середу виконання Java ™ для сучасних пристроїв мобільного зв'язку з обмеженими ресурсами, такими як телефони та кишенькові комунікатори початкового рівня. У цих пристроях Виконавча Java повинна бути встановлена ​​на ПЗУ під час виробництва. Зазвичай виробники телефонних апаратів створюють оптимальну CLDC і MIDP для своїх пристроїв.

CLDC визначає базовий набір прикладних програмних інтерфейсів і віртуальну машину для пристроїв з обмеженими ресурсами. Нові можливості, що надаються специфікацією CLDC, можуть бути знайдені в пакеті Java на javax.microedition. *. Деякі з можливостей специфікації CLDC відсутні в платформі Java 2 Platform, версії для пристроїв мобільного зв'язку Mobile Edition (J2ME); ці можливості можуть бути знайдені в пакеті java. *.

MIDP надає основні прикладні функції, які потрібні для мобільних додатків, включаючи користувальницький інтерфейс, зв'язок з мережею, зберігання локальних даних і управління життєвим циклом. Всі вони упаковані як стандартна Виконавча Java і набір прикладних інтерфейсів технології Java. Цей набір інтерфейсів, наданий MIDP, доступний на платформах Microsoft Windows®, Linux® і Solaris / SPARC.

Більш детальна інформація про MIDP і CLDC доступна в розділі ресурси .

Існує безліч програм, які використовують MIDP. Одне з них - BlueAware,, яке працює у фоновому режимі Bluetooth телефонів. Це скануючий додаток використовує єдині в своєму роді ідентифікаційні номери Bluetooth identifier (BTID), які мобільні телефони, що мають можливості організації персональної мережі на основі Bluetooth, передають при запиті.

У журналі найближчій зони BlueAware записує і ставить тимчасові мітки всіх BTID, з якими вона зустрічається. Якщо це додаток виявляє пристрій, який не було останнім часом записано в журналі найближчій зони, воно автоматично посилає виявлений BTID на сервер Serendipity. Можлива також автономна робота пристрою BlueAware, яке займається пошуком мобільних телефонів оснащених Bluetooth в найближчій зоні і коригує дані сервера Serendipity.

Сервер Serendipity має Bluetooth додаток, яке збирає дані про профіль пристроїв мобільного зв'язку підключених до нього користувачів. Після збору цієї інформації додаток запитує свою базу даних і вираховує метрику подібності (similarity metric). Вона використовується для визначення найбільш часто використовуваного профілю пристроями в мережі. Після визначення цього профілю додаток посилає попереджувальний сигнал будь-якого заново виявленому пристрою. Користувач цього пристрою може або прийняти, або відхилити запит на оновлення.

Використання програми сервера Serendipity

Серверний додаток Bluetooth, що працює на сервері Serendipity намагається розпізнати віддалені підключення і відповісти відповідно. Серверний додаток робить наступні кроки:

  1. Створює сервіс для сервера Bluetooth і повертає канал Bluetooth, який сервер може використовувати для розпізнавання вхідних з'єднань.
  2. Чекає, поки клієнт не прийме запит на з'єднання.
  3. Зчитує дані з мережевих підключень Bluetooth.
  4. Записує дані на мережеві підключення Bluetooth.
  5. Закриває з'єднання з мережею Bluetooth.

Розглянемо деякі фрагменти коду, які реалізують кожну з цих ступенів по черзі.

Кожен Bluetooth-сервіс і сервісний атрибут має свій власний універсальний ідентифікаційний номер - universally unique identifier (UUID). Для створення UUID, використовуйте команду uuidgen -t, якщо ви працюєте в Linux, або uuidgen, якщо ви працюєте в Windows. Утиліта uuidgen включає дефіси в створеному UUID; вам необхідно видалити дефіси, щоб використовувати його. Все це відбувається в лістингу 1 .

Лістинг 1. Створення Bluetooth-сервісу і з'єднання з сервером

... private static final String btServiceName = "BlueAware"; ... // Bluetooth Service UUID. private static final String btServiceUUID = "2076b461600146592241225576cA6bf9"; private UUID BTSERVICEUUID_UUID = new UUID (btServiceUUID, false); ... // Define the server connection URL String connURL = "btspp: // localhost:" + BTSERVICEUUID_UUID.toString () + ";" + name = "+ btServiceName; ... // Create a server connection. StreamConnectionNotifier streamConnectionNotifier = (StreamConnectionNotifier) ​​Connector.open (connURL); ...

Далі вам потрібно почекати входить клієнта і почати контролювати з'єднання з ним, як це показано в лістингу 2 .

Лістинг 2. Встановлення контролю над клієнтом

... StreamConnection conn = streamConnectionNotifier.acceptAndOpen (); RemoteDevice rd = RemoteDevice.getRemoteDevice (conn); System.out.println ( "New client connection ..." + rd.getFriendlyName (false)); ...

Сервер Serendipity вираховує найбільш часто використовуваний профіль після вираховування метрики подібності (similarity metric). Щоб її розрахувати, запускається програма порівняння для аналізу відносної значущості профільних установок. (Ви побачите, як працює програма порівняння більш детально, якщо розглянете приклад сценарію в наступному розділі).

Лістинг 3. Читання даних профілю клієнтського пристрою з мережевого Bluetooth-з'єднання

... // Read input message, in this example a String with the current device profile name. DataInputStream dataIn = conn.openDataInputStream (); String sClientProfile = dataIn.readUTF (); ...

Якщо найбільш часто використовуваний профіль відрізняється від того, який використовує в даний момент клієнтський пристрій, сервер повинен повідомити про це клієнта. В лістингу 4 ланцюжок відповідає зміненим імені профілю.

Лістинг 4. Оповіщення клієнта

... DataOutputStream dataOut = conn.openDataOutputStream (); dataOut.writeUTF (notificationMessage); ...

І нарешті вам необхідно закрити Notifier з'єднання, як це показано в лістингу 5 .

Лістинг 5. Закриття з'єднання Notifier

... streamConnectionNotifier.close (); ...

Реалізація програми клієнта

Bluetooth-додаток клієнта, яке працює у фоновому режимі в пристрої мобільного зв'язку, ініціює з'єднання з віддаленим Bluetooth-сервером для відправки профільних установок. Додаток клієнта здійснює наступні кроки:

  1. Запитує з'єднання з сервером Bluetooth за певною адресою, наприклад, 00: 0a: 4f: 00: 0a: a5. Адреса пристрою Bluetooth є фіксованим, надрукованим на самому пристрої. Він може запитуватися з настройки управління пристроєм. Ця електронна адреса унікальний для кожного пристрою. Якщо Bluetooth адреса пристрою, з яким встановлюється з'єднання, вже відомий, процес виявлення його може бути пропущений.
  2. Записує дані профілю пристрою для встановлення з'єднання з мережею Bluetooth.
  3. Зчитує оновлені дані про профіль пристрою (при наявності таких) з підключення до мережі Bluetooth.

Давайте подивимося, як ця логіка відображена в коді.

По-перше, вам необхідно ініціювати клієнта і отримати реєстраційні дані для даного пристрою зі списку виявлених сервісів, як це показано в лістингу 6 . (Цей крок відповідає кроку 3, зображеному на малюнку 3 .)

Лістинг 6. Ініціалізація клієнта і отримання реєстраційних даних

... private LocalDevice localDevice = null; // local Bluetooth Manager private DiscoveryAgent discoveryAgent = null; // discovery agent ... public void btInit () throws BluetoothStateException {// Retrieve the local device to get to the Bluetooth Manager localDevice = LocalDevice.getLocalDevice (); // Clients retrieve the discovery agent discoveryAgent = localDevice.getDiscoveryAgent (); } .... // Get the service record for the service of interest (BlueAware). ServiceRecord serverServiceRec = (ServiceRecord) discoveredServices.elementAt (i);

Для отримання повідомлень про виявлення від DiscoveryAgent, додаток клієнта повинно використовувати інтерфейс DiscoveryListener і його чотири зворотних виклику після виявлення: deviceDiscovered (), inquiryCompleted (), servicesDiscovered (), і serviceSearchCompleted ().

Далі вам потрібно записати деталі клієнтського профілю в комунікаційну мережу Bluetooth, як це показано в лістингу 7 . У нашому прикладі ми не використовуємо системи захисту. Однак необхідно встановити мітки для перевірки автентичності та кодування, коли запитується безпечне з'єднання. Для більш детальної інформації про забезпечення безпеки при роботі з Bluetooth, див. ресурси .

Лістинг 7. Запис деталей профілю в мережу

... // Get the service's connection URL String connURL = serverServiceRec.getConnectionURL (ServiceRecord.NOAUTHENTICATE_NOENCRYPT, false); // Open connection StreamConnection clientStreamConnection = (StreamConnection) Connector.open (connURL); // Write out the data to be communicated to the server. DataOutputStream dataout = clientStreamConnection.openDataOutputStream (); dataout.writeUTF (messageOut); ...

Далі ви зчитуєте дані про профіль клієнтського апарату в тому випадку, якщо їх необхідно оновити, як це показано в лістингу 8 .

Лістинг 8. Читання даних профілю клієнта

... DataInputStream dataIn = clientStreamConnection.openDataInputStream (); String sUpdatedProfile = dataIn.readUTF (); ...

Нарешті, ви закриваєте з'єднання з клієнтом, як це показано в лістингу 9 .

Лістинг 9. Закриття клієнтського з'єднання

... clientStreamConnection.close (); ...

Для отримання більш детальної інформації щодо реалізації коду клієнта і сервера Bluetooth за допомогою Java API, див. ресурси .

Використання Bluetooth і сервера Serendipity для зміни профілю користувача: приблизний сценарій

Ви ознайомилися з кодом, який показує, як можуть використовувати сервер Serendipity і пристрій мобільного зв'язку, оснащене Bluetooth. Тепер подивіться, як додаток, описане вище, працює на практиці. Ми проаналізуємо ситуацію, в якій сервер Serendipity використовується для введення однакового профілю на декількох пристроях мобільного зв'язку в залі засідань. малюнок 3 являє собою блок-схему, що описує, що відбувається в зразковому сценарії.

Малюнок 3. Блок-схема зразкового сценарію

Давайте більш детально розглянемо, як це відбувається.

Конфігурація провідних і підлеглих пристроїв і формування локальної мережі піконет

Сервер Serendipity розташовується всередині кімнати, в якій відбувається зустріч. Він працює як ведучий пристрій всередині Bluetooth-піконет.

У сервері Serendipity зберігається заданий профіль мобільного телефону. Профіль цього містить параметри налаштувань, наприклад рінгтони, мелодії абонентів, сигнали повідомлень, режим вібродзвінка, беззвучний і звуковий режими, установки часу і дати, будильника, гучності дзвінка і т. Д. Наприклад, перед тим, як увійти в зал засідань, користувач може захотіти змінити параметри, включити режим вібродзвоника або беззвучний, встановити новий час або дату, тимчасову зону, вимкнути сигнал будильника чи повідомлення. Заздалегідь заданий профіль мобільного телефону на сервері Serendipity може містити всю цю інформацію.

На початку зборів, скажімо ділової зустрічі, сервер Serendipity готовий реєструвати підлеглі пристрою. Як тільки учасник зустрічі входить в зал з включеним Bluetooth на мобільному телефоні, його реєструють, і пристрій стає частиною мережі.

Перевірка и зміна профільніх установок ведучого и підлеглого прістроїв

После формирование мережі піконет, сервер Serendipity запітує Параметри профілю пристрою шкірного підлеглого пристрою. Сервер перевіряє відповідність профілю шкірного пристрою завдань профілем. Если такой відповідності немає, корістувачеві надсілається запит про зміну профілю. Цей запит может буті або Прийнято, або відхилено. Коли користувач пріймає запит, сервер підвіщує Цінність заданого профілю. Если користувач відхіляє запит про зміну профілю, растет відносна Цінність профілю его мобільного телефону. Сервер Serendipity визначає найбільш широко застосовуються параметри профілю виходячи з їх відносної цінності.

Через регулярні проміжки часу сервер Serendipity передає найбільш часто використовувані параметри профілю на пристрої з іншими установками. Сервер Serendipity може визначити схильність користувача до курсу пропонованим параметрам профілю, після того, як проаналізує історію відмов і прийнять запитів. Якщо користувач відхилив попередні запити про зміну профілю, сервер може виключити його зі списку на подальші запити. Це дуже зручно, тому що користувачів більше не відволікають запити про зміни.

Уявіть собі, що на зустріч прийшли семеро запрошених. Всі вони мають мобільні телефони з активованою функцією Bluetooth, зареєстровані на сервері Serendipity. Цей сервер має заданий профіль з беззвучним режимом, відносна цінність якого, скажімо, 2 (щоб підкреслити, що це краща установка).

Запрошений 1 входить в зал засідань з мобільним телефоном, у якого включений звук. Сервер Serendipity надсилає запит про включення беззвучний режим. Запрошений 1 приймає цей запит, і на його телефоні включається беззвучний режим. Таким чином, на сервері Serendipity відносна цінність беззвучний режим 3, а режиму з включеним звуком 0.

Тепер запрошені 2 і 3 входять в зал засідань з мобільними телефонами, у яких включений звук. Вони обидва відхиляють прохання про зміну профілю. Таким чином, на сервері Serendipity відносна цінність беззвучний режим стає 3 і 2 для звукового.

Далі, припустимо, що запрошені 4 і 5 прийшли на зустріч з мобільними телефонами, у яких включений звук, і вони обидва відхиляють прохання про зміну режиму на беззвучний. На той час, як всі п'ятеро запрошених прийшли на зустріч, на сервері Serendipity відносна цінність беззвучний режим стає 3 і 4 для звукового.

Тепер сервер Serendipity знову посилає запит про зміну режиму першому запрошеному, так як тепер найбільш широко застосовуваний профіль відрізняється від того, який працює на його пристрої. Уявімо, що запрошений 1 відхиляє запит про зміну профілю в цей раз. Але на сервері Serendipity відносна цінність беззвучний режим залишається 3 і 4 для звукового.

Тепер, коли запрошений 6 входить в зал засідань з мобільним телефоном, на якому включений беззвучний режим, він отримує запит про перехід на режим зі звуком. Він відхиляє цей запит. Таким чином, на сервері Serendipity відносна цінність беззвучний режим 4 і звукового теж 4. Далі, коли запрошений 7 входить в зал засідань з мобільним телефоном, у якого включений звук, він отримує запит про включення беззвучний режим. Він приймає цей запит. Тепер на сервері Serendipity відносна цінність беззвучний режим стає 5, а режиму зі звуком 4.

Цей приклад заснований на найбільш часто використаних режимах роботи мобільних телефонів. В інших випадках заданий профіль пристрою мобільний зв'язку може бути змінений після відмови користувачів змінювати профілі роботи своїх мобільних телефонів. Тобто, коли будь-який із запрошених входить в зал, надсилається запит від сервера Serendipity про зміну профілю мобільного телефону на беззвучний.

Висновок

У цій статті ми спробували пояснити, як змінити режим роботи пристрою мобільного зв'язку з використанням Bluetooth і сервера Serendipity. Приклад, наведений у статті, служить для ілюстрації обговорюваного алгоритму. Може існувати безліч комбінацій і безліч інших алгоритмів і варіантів розрахунків. Ми намагалися не продемонструвати, як сервер Serendipity прораховує найбільш часто використовуваний режим, а проілюструвати одним з таких прикладів, як змінюється режим роботи мобільного телефону.

Ресурси для скачування

Схожі тими

Підпішіть мене на ПОВІДОМЛЕННЯ до коментарів

Що таке Bluetooth?
Що таке Bluetooth?
Категории
  • Биология
  • Математика
  • Краеведению
  • Лечебная
  • Наука
  • Физике
  • Природоведение
  • Информатика
  • Новости

  • Новости
    https://banwar.org/
    Наша взаимовыгодная связь https://banwar.org/. Запустив новый сайт, "Пари Матч" обещает своим клиентам незабываемый опыт и возможность выиграть крупные суммы.


    Наши клиенты
    Клиенты

    Быстрая связь

    Тел.: (044) 587-84-78
    E-mail: [email protected]

    Имя:
    E-mail:
    Телефон:
    Вопрос\Комментарий: