Могут ли два устройства Android с разными приложениями использовать одну и ту же базу данных SQLite?

Я прочитал этот вопрос и задался вопросом, будет ли то же самое применить к моей ситуации.

Я хочу записать accelerometer значений (x, y и z) с Android телефона на database и получить их с помощью другого приложения на планшете. для отображения графика изменения значений во времени. Это не обязательно должно происходить в режиме реального времени.

Итак, в основном мои вопросы:

1) могут ли два разных приложения на двух разных Android устройствах использовать одну и ту же базу данных SQLite?

и

2) как мне указать IP, чтобы одно приложение на телефоне записывало в указанную базу данных, а другое приложение на планшете читало из той же указанной базы данных?

Я уже могу читать значения Accelerometer и знаю, как создать график, но у меня проблемы с компонентом базы данных моего проекта, поскольку все, с чем я сталкиваюсь, похоже, хранит значения в SD card устройства или в базе данных, которая доступ только к самому устройству и никаким другим приложениям или устройствам.

Я читал об указании статического IP-адреса сначала получив ContentResolver:

ContentResolver cr = getContentResolver(); 

затем адаптируя settings:

Settings.System.putString(cr, Settings.System.WIFI_USE_STATIC_IP, "1"); 
Settings.System.putString(cr, Settings.System.WIFI_STATIC_IP, "6.6.6.6");

а затем включение permissions: WRITE_SETTINGS и WRITE_SECURE_SETTINGS.

но я не уверен, где именно это написать или как правильно использовать.

Пожалуйста, укажите, где я могу найти дополнительную информацию о настройке баз данных SQLite и о том, как их можно использовать двумя разными приложениями на двух разных устройствах Android?

Заранее спасибо.

P.S. Я скоро обновлю этот вопрос, добавив часть своего кода.


person marienke    schedule 21.09.2011    source источник
comment
Не связывайтесь с настройками сети, когда этого можно избежать, ваши пользователи будут ненавидеть вас за это — либо 1) отображать IP-адрес, когда ваше приложение запускается на планшете, и запрашивать его в телефонном приложении, либо 2) использовать что-то полностью автоматическое, например сетевое подключение с нулевой конф. через JmDNS (дополнительная работа)   -  person Philipp Reichart    schedule 21.09.2011


Ответы (2)


могут ли два разных приложения на двух разных устройствах Android использовать одну и ту же базу данных SQLite?

Не более двух веб-серверов, работающих на двух разных континентах, могут использовать одну и ту же базу данных MySQL. Только процессы, запущенные на устройстве с доступом файловой системы к файлу, могут читать и писать в этот файл.

как указать IP-адрес, чтобы одно приложение на телефоне записывало в указанную базу данных, а другое приложение на планшете читало из той же указанной базы данных?

Вы не знаете. Андроид не серверная платформа.

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

Я хочу записать значения акселерометра (x, y и z) с телефона Android в базу данных и получить их с помощью другого приложения на планшете, чтобы отобразить график изменения значений с течением времени. Это не обязательно должно происходить в режиме реального времени.

Следовательно, вам не нужны два устройства для доступа к одной и той же базе данных. Они нужны вам для работы с одними и теми же данными.

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

Или попросите телефон отправить данные на планшет через Bluetooth.

Или, если вы считаете, что безопасность достаточна, сделайте так, чтобы планшет открывал доступ к веб-службе через Wi-Fi, которую использует телефон (хотя это действительно пугает меня, особенно если планшет может подключиться к какой-либо другой сети, например, при перемещении).

Ни телефон, ни планшет не обязательно имеют базу данных, не говоря уже о попытке поделиться ею напрямую.

person CommonsWare    schedule 21.09.2011
comment
Согласен с этим и готовил аналогичный ответ. Что касается веб-сервиса для планшетов, стоит взглянуть на [nanohttpd][1], там есть пример того, как создать подкласс и настроить его. - person Pēteris Caune; 21.09.2011
comment
ОК огромное спасибо. Я говорил с парнем, работающим со мной, и он предложил что-то подобное. Он сказал, что я должен записать значения данных с телефона в xml-файл, а затем отправить xml-файл на планшет по электронной почте/Bluetooth/ftp. Затем планшет может просто использовать файл для создания результирующего графика. Это не потребует базы данных и каких-либо проблем с двумя устройствами, совместно использующими информацию одной базы данных. Спасибо за ваши ответы. - person marienke; 22.09.2011

База данных SQlite является частной для приложения, которое ее создает. Если вы хотите обмениваться данными с другими приложениями, вы можете использовать Content Provider.

person Vijay    schedule 21.09.2011