2013-05-04 6 views
6

может кто-нибудь простыми словами объяснить мне необходимость UUID в примере на Android-телефоне. Я прочитал некоторые статьи об этом, но до сих пор неясно, нужна ли UUID. И теперь позвольте мне объяснить вам сценарий того, что я хочу разработать: Я хочу разработать приложение для Android, чтобы передавать данные, например, «FILE с .xyz extension» с моего телефона на другой телефон через Bluetooth. ЭТО НЕ ВСЕ НЕОБХОДИМО, ЧТО ПОЛУЧАТЕЛЬНЫЙ ТЕЛЕФОН ДОЛЖЕН ИМЕЕТ ПРИМЕНЕНИЕ, ЧТО Я ЕСМЬ ИСПОЛЬЗУЮ. Я просто хочу перенести данные из своего приложения на другой телефон, и это все. Мне все равно, что делает ресивер с данными. Я просто хочу подключиться к устройству в пределах диапазона и передать этот файл с помощью моего приложения Теперь, как мне это сделать? Где здесь находится роль UUID? Я прочитал, что UUID для моего приложения, и как сервер, так и получатель должны знать об этом UUID, чтобы сформировать соединение. Но что, если у получателя нет моего приложения? Он, конечно, не знает мои приложения UUID? то как возможна передача данных? Я просто хочу использовать Bluetooth без конкретного приложения. Здесь, что мое приложение должно делать? Должно ли быть создание серверного сокета/клиентского сокета или что? и почему.Основы внедрения Android для Android

Оценка в простых словах оценена (некоторые статьи если возможно). Я не хочу регулярных ответов с предложениями BluetoothChat. Если вы не понимаете вопрос, пожалуйста, дайте мне знать, я постараюсь быть более конкретным и уточнить его для вас. Основная цель этого вопроса - уточнить использование UUID и передать данные между двумя DEVICES (а не приложениями), используя bluetooth из приложения, работающего на одном телефоне Android.

ответ

5

Даже с Bluetooth вы можете создавать приложения клиент-сервер .. есть BluetoothSocket читать здесь http://developer.android.com/reference/android/bluetooth/BluetoothSocket.html

Теперь, позволяет сказать, что у вас есть два устройства:

  1. Устройство A
  2. устройства B

и предположим, что устройство A отправляет данные на устройство B, вы не сказали, что устройство B также отправляет данные на устройство A, поэтому я просто опишу первый сценарий, когда A отправит B.

Так что в этом случае, поскольку все данные хранятся в устройстве A и вы хотите отправить его на устройство B, оно будет более разумно создать устройство A в качестве Bluetooth-сервера и устройство B в качестве BluetoothClient, который слушает сервер.

Но .. Если вы хотите, оба устройства будут обмениваться данными .. Вы можете сделать одну из них в качестве сервера и для каждого из них создать 2 темы:

  1. тему, которая отправляет данные
  2. нити, что прослушивание данных

так как они могут обмениваться данными ..

Другой вещью .. если вы когда-нибудь программировали постоянный клиент сервер вы заметили метод accept(), который блокируется до тех пор, пока не будет клиент, подключенный к серверу. То же самое с приложением клиент-сервер Bluetooth.

Обобщить:

  1. Одно устройство будет выступать в качестве сервера - так что вам необходимо написать проект сервера и установить
    это на первом устройстве

  2. Второе устройство выступать в роли клиента - так что вам нужно будет написать проект клиента, а установить его на втором устройстве

  3. Не забудьте добавить разрешение Bluetooth в файл манифеста для проектов
    .

  4. Оба проекта нуждаются в том же UUID, что и в вашем вопросе. Простыми словами обеим сторонам нужен UUID, чтобы каждый из них знал, кто они Общайтесь Я думаю, что это больше похоже на порт на обычном клиент-сервере. Я читал где-то, что используется для связи RFC .. как вы, наверное, знаете, что есть
    некоторые протоколы Bluetooth, как RFC, СДП и т.д ..

EDIT: в большинстве телефонов есть процесс спаривания, когда вы хотите отправить данные через Bluethooth. так что если вы не хотите использовать версию клиент-сервер, я думаю, что вы можете сделать это :

  1. Ваше приложение будет искать устройства для подключения. (Процесс спаривания)
  2. После спаривания вы подключены к другому устройству и просто передавать данные

EDIT 2: Вы хотите отправить данные из А в правой? Я объясню более четко ..

Вы правы, когда сказали, что клиент должен знать, кто является сервером, и нужно вставить порт и IP-адрес сервера, это правильно и работает таким образом.

Теперь посмотрим ..

Сервер слушать подключения от клиентов, когда соединение установлено связь начинается .

  1. Клиент запрашивать данные
  2. Сервер обработки запроса клиента и отправить ему соответствующие данные

    Поэтому любые данные, такие как: файлы, базы данных должны быть сохранены на стороне сервера ..

    Теперь в вашем случае файлы, которые вы хотите отправить, находятся на устройстве A, а не на устройстве B, Итак, если устройство A является сервером, он будет прослушивать подключения .. когда устройство B подключается к серверу (устройство A) начинается связь. Устройство B может запрашивать файлы с устройства A .. Кроме того, поскольку устройство A является сервером, он может даже транслировать сообщение .. означает отправить то же сообщение для всех клиентов, которые к нему подключены.

    Но что вы хотите сделать, это отправить файл, даже если устройство b не запросило его, не так ли? Я не понимаю, если вы хотите, чтобы устройство B также отправить файл в устройство A, так что позволяет разделить его
    в сценарии:

  3. только устройство А присылают В: В этом случае, так как файлы расположенный в устройстве A, означает устройство A, данные, Устройство A является сервером, а устройство B является клиентом. Поэтому, когда соединение установлено, вы можете отправить от А до В.

  4. Оба устройства обмена данными: В этом случае оба устройства должны слушать друг друга, но только один из должен действовать в качестве сервера, а другой как клиент. означает, что вам нужно установить serverApp на один из них, а clientApp - на другой. Но каждый из них может отправлять и слушать другие. так что для каждого из вас нужно создать нити, которая справиться с передающими данными и другой поток, который обрабатывает прием данные

+0

нормально .... так что если оба они не знают о том, что UUID, они не могут общаться? – user2056245

+0

Итак, мой вопрос, если мы впервые встретимся завтра, и у меня есть приложение, запущенное на моем устройстве и (очевидно, вы не будете иметь его на своем), и я хочу отправить этот файл «.xyz» вам с помощью bluetooth, I не сможет отправить? – user2056245

+0

Я могу только отправить, если у ВАС есть мое приложение на ВАШЕМ телефоне? – user2056245

1

UUID является универсальным уникальным идентификатором. Если вы хотите подключиться к какой-либо услуге, которую предоставляет bluetooth, вы должны иметь UUID, чтобы сообщить модулю программного обеспечения bluetooth, что он должен инициировать соединение с этой конкретной услугой. В вашем случае для отправки файла из DevA в DevB он должен использовать профиль передачи файлов, и с ним связан определенный uuid, и это определяется Bluetooth SIG, который является авторитетом, который квалифицирует продукты Bluetooth и работает над технологией. Это известно всем устройствам, использующим bluetooth.

Tu коротко расскажет историю, когда DevB получает запрос на входящий запрос с уникальным уникальным устройством uuid, к которому относится конкретная служба DevB, к которой пытается подключиться устройство, и она подключается к этой услуге. Следовательно, если вы хотите отправить файл с DevA на DevB, вам не нужно иметь одно приложение в DevB. Но вам нужно убедиться, что вы используете UUID, который указан для профиля передачи файлов с помощью Bluetooth SIG.

С уважением, Shripathi

Смежные вопросы