- Простой клиент-сервер на Android (интернет-мессенджер)
- Делаем сервер
- Клиентская часть
- Create Chat App for Android using GCM Part 1
- Create Chat App for Android Live Demo
- Prerequisite to Create Chat App for Android
- Create Chat App for Android Tutorial
- Creating Database
- Android — PHP/MYSQL
- PHP — MYSQL
- Creating Database
- Creating Tables
- Inserting Values in tables
- PHP — GET and POST methods
- Android — Connecting MYSQL
- Connecting Via Get Method
- Connecting Via Post Method
- Example
- PHP — MYSQL part
- Android Part
- Как работать с MySQL в Android? Часть 1
- Что вам потребуется?
- Шаг 1. Установка WEB-сервера.
- Шаг 2. Создание БД
- Шаг 3. Подключение к MySQL базе с помощью PHP
- Шаг 4. Базовые CRUD операции в PHP
- Запись строки в БД
- Чтение строки с БД
- Получение всех продуктов с БД
- Обновление продукта в БД
- Удаление продукта с БД
Простой клиент-сервер на Android (интернет-мессенджер)
Важно. Все написанное ниже не представляет собой какой либо ценности для профессионалов, но может служит полезным примером для начинающих Android разработчиков! В коде старался все действия комментировать и логировать.
Поехали. Многие мобильные приложения (и не только) используют архитектуру клиент-сервер. Общая схема, думаю, понятна.
Уделим внимание каждому элементу и отметим:
- сервер — представляет собой некую программу, работающую на удаленном компьютере, и реализующую функционал «общения» с приложениями-клиентами (слушает запросы, распознает переданные параметры и значения, корректно отвечает на них);
- клиент — в нашем случае, программа на мобильном устройстве, которая умеет формировать понятный серверу запрос и читать полученный ответ;
- интерфейс взаимодействия — некий формат и способ передачи/получения запросов/ответов обеими сторонами.
Неважно, как реализован любой из этих элементов, все они в любом случае присутствуют. Давайте реализуем примитивный сервер и Android клиент, работающий с ним. Как пример, будем использовать любой популярный мобильный интернет-мессенджер (Viber, ICQ), а приложение условно назовем «интернет-чат».
Схема взаимодействия следующая:
Клиент, установленный на устройстве А, посылает сообщение для клиента, установленного на устройстве Б. И наоборот. Сервер играет роль связующего звена между устройством А и Б… С, Д… и т.д. Также он играет роль «накопителя» сообщений, для их восстановления, на случай удаления на одном из клиентских устройств.
Для хранения сообщений используем SQL БД как на сервере, так и на устройствах-клиентах (в принципе, вся работа клиентов интернет-мессенджеров и сводится к постоянной синхронизации локальной и удаленной БД с сообщениями). Дополнительно, наш интернет-чат будет уметь стартовать вместе с запуском устройства и работать в фоне. Взаимодействие будет происходить путем HTTP запросов и JSON ответов.
Более логично, если синхронизация происходит через порт/сокет, это с одной стороны упрощает задачу (не нужно циклично слать HTTP запросы на проверку новых сообщений, достаточно проверять состояние прослушиваемого сокета), но с другой стороны, это усложняет создание серверной части приложения.
Делаем сервер
Для реализации «сервера», нам нужно зарегистрироваться на любом хостинге, который дает возможность работы с SQL и PHP.
Создаем пустую SQL БД, в ней создаем таблицу.
- author — автор сообщения;
- client — получатель сообщения;
- data — время и дата получения сообщения на сервере;
- text — сообщение.
В двух следующих файлах необходимо изменить переменные, содержащие данные для доступа к БД, на свои, полученные Вами при регистрации Вашего«сервера».
Структура запросов к api:
- обязательный атрибут action — может быть равен select (сервер ответит списком записей из своей БД), insert (сервер добавить новую запись в свою БД), delete (сервер очистит свою БД)
- если action=insert, нам нужно будет передать дополнительные параметры: author (кто написал сообщение), client (кому адресовано сообщение), text (сообщение)
- action=select может содержать дополнительный параметр data, в этом случае ответ сервера содержит не все сообщения из БД, а только те, у которых время создания позднее переданного
Примеры:
- chat.php?action=delete – удалит все записи на сервере
- chat.php?action=insert&author=Jon&client=Smith&text=Hello — добавит на сервере новую запись: автор Jon, получатель Smith, содержание Hello
- chat.php?action=select&data=151351333 — вернет все записи, полученные после переданного времени в long формате
Клиентская часть
Теперь структура Android приложения:
В фоне работает FoneService.java, который, в отдельном потоке, каждые 15 секунд делает запрос на сервер. Если ответ сервера содержит новые сообщения, FoneService.java записывает их в локальную БД и отправляет сообщение ChatActivity.java о необходимости обновить ListView, с сообщениями. ChatActivity.java (если она в этот момент открыта) получает сообщение и обновляет содержимое ListView из локальной БД.
Отправка нового сообщения из ChatActivity.java происходит сразу на сервер, минуя FoneService.java. При этом наше сообщение НЕ записывается в локальную БД! Там оно появится только после получения его назад в виде ответа сервера. Такую реализацию я использовал в связи с важным нюансом работы любого интернет-чата — обязательной группировкой сообщений по времени. Если не использовать группировку по времени, будет нарушена последовательность сообщений. Учитывая, что клиентские приложения просто физически не могут быть синхронизированы с точностью до миллисекунд, а возможно будут работать даже в разных часовых поясах, логичнее всего будет использовать время сервера. Так мы и делаем.
Создавая новое сообщение, мы передаем запросом на сервер: имя автора сообщения, имя получателя сообщения, текст сообщения. Получая эту запись назад, в виде ответа сервера, мы получаем то, что отправляли + четвертый параметр: время получения сообщения сервером.
Источник
Create Chat App for Android using GCM Part 1
Hello friends, in this post I will show you How to Create Chat App for Android using PHP, MySQL and GCM. I have already posted about GCM and Push Notifications in my earlier post as these are very important for creating our chat app. So in this post we will create a simple chat room where many users can interact with each other.
This post was very lengthy so I divided it into two parts.
Create Chat App for Android Live Demo
You can also check this video demonstrating the final app that we will make in this tutorial.
You can also get a live demo of the app that we will be building from below. Just download the apk from the link given and install it to your device. But you need two device to check it.
If you tested the apk and want to know how to code it then lets move ahead.
Prerequisite to Create Chat App for Android
- You should follow the previous Android Push Notification Tutorial using GCM.
- You should also follow the REST API tutorial using SLIM Framework.
- Other than the above mentioned tutorial we will be using PHP and MySQL you need a local server like wamp or xampp for it.
It is highly recommended that you go through the above mentioned tutorial before moving ahead on this Create Chat App for Android Tutorial. So lets begin.
Create Chat App for Android Tutorial
In this post we will create server side APIs and in the next post we will built the android application. I am using WAMP server. You can also use other server’s basically what is needed is PHP and MySQL. So lets start with creating database.
Creating Database
- So as you can see we have two tables one is users and other is messages. To create the above tables just copy the following SQL to your phpmyadmin.
Источник
Android — PHP/MYSQL
In this chapter , we are going to explain, how you can integrate PHP and MYSQL with your android application. This is very useful in case you have a webserver, and you want to access its data on your android application.
MYSQL is used as a database at the webserver and PHP is used to fetch data from the database. Our application will communicate with the PHP page with necessary parameters and PHP will contact MYSQL database and will fetch the result and return the results to us.
PHP — MYSQL
Creating Database
MYSQL database can be created easily using this simple script. The CREATE DATABASE statement creates the database.
Creating Tables
Once database is created, its time to create some tables in the database. The CREATE TABLE statement creates the database.
Inserting Values in tables
When the database and tables are created. Now its time to insert some data into the tables. The Insert Into statement creates the database.
PHP — GET and POST methods
PHP is also used to fetch the record from the mysql database once it is created. In order to fetch record some information must be passed to PHP page regarding what record to be fetched.
The first method to pass information is through GET method in which $_GET command is used. The variables are passed in the url and the record is fetched. Its syntax is given below −
The second method is to use POST method. The only change in the above script is to replace $_GET with $_POST. In Post method, the variables are not passed through URL.
Android — Connecting MYSQL
Connecting Via Get Method
There are two ways to connect to MYSQL via PHP page. The first one is called Get method. We will use HttpGet and HttpClient class to connect. Their syntax is given below −
After that you need to call execute method of HttpClient class and receive it in a HttpResponse object. After that you need to open streams to receive the data.
Connecting Via Post Method
In the Post method, the URLEncoder,URLConnection class will be used. The urlencoder will encode the information of the passing variables. It’s syntax is given below −
The last thing you need to do is to write this data to the link. After writing, you need to open stream to receive the responded data.
Example
The below example is a complete example of connecting your android application with MYSQL database via PHP page. It creates a basic application that allows you to login using GET and POST method.
PHP — MYSQL part
In this example a database with the name of temp has been created at 000webhost.com. In that database, a table has been created with the name of table1. This table has three fields. (Username, Password, Role). The table has only one record which is («admin»,»admin»,»administrator»).
The php page has been given below which takes parameters by post method.
Android Part
To experiment with this example , you need to run this on an actual device on which wifi internet is connected.
Steps | Description |
---|---|
1 | You will use Android studio IDE to create an Android application and name it as PHPMYSQL under a package com.example.phpmysql. |
2 | Modify src/MainActivity.java file to add Activity code. |
3 | Create src/SiginActivity.java file to add PHPMYSQL code. |
4 | Modify layout XML file res/layout/activity_main.xml add any GUI component if required. |
5 | Modify res/values/string.xml file and add necessary string components. |
6 | Modify AndroidManifest.xml to add necessary permissions. |
7 | Run the application and choose a running android device and install the application on it and verify the results. |
Here is the content of src/com.example.phpmysql/MainActivity.java.
Here is the content of src/com.example.phpmysql/SigninActivity.java.
Add the following content to build.gradle and rebuild the whole project.
Here is the content of activity_main.xml.
Here is the content of Strings.xml.
Here is the content of AndroidManifest.xml.
Let’s try to run your PHPMYSQL application. I assume you have connected your actual Android Mobile device with your computer. To run the app from Android studio, open one of your project’s activity files and click Run icon from the tool bar. Before starting your application, Android studio will display following window to select an option where you want to run your Android application.
Select your mobile device as an option and then check your mobile device which will display following screen −
Now just type in your username and password. In my case i am typing admin as username and password. It is shown in the figure −
Now press the Get button and wait a few seconds and response will be downloaded and will be shown to you. In this case, the response is the ROLE that is fetched in case of admin as username and password.It is shown in the figure below −
Now again press the POST button and same result would appear. It is shown in the figure below −
Источник
Как работать с MySQL в Android? Часть 1
На днях мне пришлось подключится к внешней БД MySQL в Android приложении, которое бы использовало ресурсы готового сервиса, так вот в данном уроке я покажу как я это сделал.
В данном уроке мы с вами сделаем простое Android-приложения, который будет вызывать PHP скрипт для выполнения основных CRUD (Create, Read, Update, Delete) операций.
Android приложение будет вызывать PHP скрипт, который будет подключается к базе данных MySQL и выполнить какие то операции.
Что вам потребуется?
1) WEB-сервер для PHP. Будем использовать сборку DenWer.
2) MySQL база данных.
3) Android Emulator.
Шаг 1. Установка WEB-сервера.
Так как мы будем работать со сборкой Denwer, то для начала скачиваем её тут http://www.denwer.ru/
После того как вы его установили и проверили, что он работает, переходим к следующему шагу.
Шаг 2. Создание БД
Так как мы подняли WebServer Denwer в нем уже вшита MySQL база данных, давайте создадим базу и таблицу (products) в ней.
Создание таблиц в БД:
В конце видео создания БД я не зря показал локальный IP, так как я использую виртуальную ОС для удобства. В вашем случае вы будите обращаться к localhost или же 127.0.0.1 .
Шаг 3. Подключение к MySQL базе с помощью PHP
Давайте создадим PHP класс, который будет отвечать за подключение к БД. Основная цель этого класса – открытие и закрытие соединения с БД.
Но, для того что бы подключатся к БД нам нужно где то хранить требуемые параметры для подключения к БД для этого создадим [C:\WebServers\home\devserver.com\www\db_config.php] со следующим содержимым:
А теперь создадим в той же директории файл [C:\WebServers\home\devserver.com\www\db_connect.php] со следующим содержимым:
Шаг 4. Базовые CRUD операции в PHP
В этом уроке я покрываю основные CRUD (Create, Read, Update, Delete) операций для MySQL с помощью PHP.
Запись строки в БД
Создадим в нашем PHP проекте новый файл create_product.php который будет обеспечивать возможность записи продукта в БД.
Для приведенного выше кода JSON ответ будет примерно таким:
Когда POST параметр(ы) отсутствует:
Когда продукт успешно добавлен:
Когда ошибка при добавлении данных в БД:
Чтение строки с БД
Создадим новый PHP файл в нашем проекте и назовем его get_product_details.php со следующим содержанием:
Ответ JSON для вышеупомянутого файла будет следующим.
При успешном получении продукта:
Когда продукт не найден:
Получение всех продуктов с БД
Для того чтобы вывести весь список продуктов на устройство нам нужно получить все продукты с БД.
Создадим get_all_products.php со следующим содержимым:
JSON ответ выше приведенного кода будет таким:
Когда продукт не найден:
Обновление продукта в БД
Создайте файл с именем update_product.php со следующим содержимым:
Ответ JSON выше кода, когда продукт успешно обновлены будет следующим:
Удаление продукта с БД
Последняя операция удаления из базы данных. Создайте новый файл назовите delete_product.php и вставьте следующий код:
Когда продукт удачно будет удален то JSON ответ будет таким:
Когда продукт не найден, то таким:
Теперь наконец-то мы можем приступить к программированию на Android. То что мы описали выше на PHP будем использовать как API слой. И наше приложение будет общаться с MySQL сервером по средством JSON формата и GET, POST запросов.
Источник