Реализация клиент-серверного интерфейса для приложения «Think it — киноафиша Таганрога» для ОС Android

NovaInfo 33
Опубликовано
Раздел: Технические науки
Просмотров за месяц: 0
CC BY-NC

Аннотация

Целью разработки приложения являлось предоставление пользователю возможности посмотреть киноафишу Таганрога. В статье содержится описание основных этапов реализации клиент-серверного интерфейса для приложения, позволяющего пользователю посмотреть афишу Таганрога, средствами Android Studio

Ключевые слова

ОС ANDROID, КЛИЕНТ-СЕРВЕРНЫЙ ИНТЕРФЕЙС, РАЗРАБОТКА ПРИЛОЖЕНИЙ, СРЕДА РАЗРАБОТКИ ANDROID STUDIO

Текст научной работы

В предыдущих статьях [1, 2] из этой серии было описано проектирование и создание внешнего вида интерфейса. Результат изображен на следующих скриншотах экрана (рисунок 1).

– скриншоты верстки приложения.
Рисунок 1. Скриншоты верстки приложения

Следующая стадия разработки — это получение контента каждой страницы приложения от сервера и обработка нажатия кнопок. Она включает в себя следующие этапы:

1. Разработка серверной части приложения (создание модуля обработки запросов на сервере):

  • Написание функции получения информации о конкретном фильме;
  • Написание функции получения информации о конкретном кинотеатре;
  • Написание функции получения списка всех кинотеатров;
  • Написание функции получения списка всех фильмов;
  • Написание функции получения списка расписания одного кинотеатра;
  • Написание функции получения списка расписания одного фильма.

2. Разработка пользовательской части приложения:

  • Создание браузерного клиента для получения контента с сервера;
  • Создание меню приложения;
  • Обработка события нажатия кнопки назад.

Получаем схему работы нашего приложения:

  1. Делается запрос на сервер;
  2. Сервер обрабатывает запрос и формирует соответствующий контент;
  3. Сервер посылает сгенерированный контент приложению;
  4. Приложение воспроизводит контент.

Самая простая и эффективная реализация предложенной схемы — это организация работы приложения, как браузера, который будет обмениваться информацией с сервером, загружать и показывать нужные страницы. Сервер будет отдавать контент в виде полноценной html-страницы со ссылками на другие страницы.

Перейдем к написанию кода приложения. Открываем файл main.java. В этом файле требуется описать событие создания основного класса. Фрагмент кода показан ниже.

private WebView wv;private String LASTURL = "";Menu myMenu = null;private static final String PREFS_NAME = "MyPrefs";private Boolean imgOn;public void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  this.getWindow().requestFeature(Window.FEATURE_PROGRESS);  setContentView(R.layout.activity_main);  wv = (WebView) findViewById(R.id.wv);  WebSettings webSettings = wv.getSettings();  webSettings.setSavePassword(true);  webSettings.setSaveFormData(true);  webSettings.setJavaScriptEnabled(true);  wv.loadUrl("http://thinkit.ru/kino-v-taganroge/mobile/main-cinema/");

На данном этапе при загрузке приложение будет обращаться к указанному нами адресу. Далее требуется настроить веб клиент. Дописываем следующий код в onCreate

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);final Activity activity = this;wv.setWebChromeClient(new WebChromeClient() {  public void onProgressChanged(WebView view, int progress)  {    activity.setTitle(" "+LASTURL);    activity.setProgress(progress * 100);    if(progress == 100)    activity.setTitle(" "+LASTURL);  }});wv.setWebViewClient(new WebViewClient() {  public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)  {    Toast.makeText(getApplicationContext(), "Error: " + description+ " " + failingUrl, Toast.LENGTH_LONG).show();  }  @Override  public boolean shouldOverrideUrlLoading(WebView view, String url)  {    if (url.indexOf("thinkit")<=0) {      Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));      startActivity(intent);      return true;    }    return false;  }  public void onPageStarted (WebView view, String url, Bitmap favicon) {    LASTURL = url;    view.getSettings().setLoadsImagesAutomatically(true);  }});

Теперь при загрузке приложения будет открываться главный интерфейс с сервера (страница кинотеатров). При переходе по ссылке предыдущее значение ссылки запоминается. Далее опишем событие нажатия кнопки назад.

@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {  if ((keyCode == KeyEvent.KEYCODE_BACK) &amp;&amp; wv.canGoBack()) {    wv.goBack();    return true;  }  return super.onKeyDown(keyCode, event);}

Создаем меню приложения.

@Overridepublic boolean onCreateOptionsMenu(Menu menu){  super.onCreateOptionsMenu(menu);  this.myMenu = menu;  MenuItem item = menu.add(0, 1, 0, "Фильмы");  MenuItem item1 = menu.add(0, 2, 0, "Кинотеатры");  MenuItem item2 = menu.add(0, 3, 0, "Назад");  return true;}

Как видно меню имеет три пункта: «Фильмы», «Кинотеатры», кнопка «Назад». После выполнения данного кода в меню появится три вышеописанных элемента. Требуется описать их действие, что делается в следующем фрагменте кода.

@Overridepublic boolean onOptionsItemSelected(MenuItem item)  { switch (item.getItemId()) {  case 1:   wv.loadUrl("http://thinkit.ru/kino-v-taganroge/mobile/main-film/");   break;  case 3:   if (wv.canGoBack()) {    wv.goBack();   }   break;  case 2:   wv.loadUrl("http://thinkit.ru/kino-v-taganroge/mobile/main-cinema/");   break; } return true;}

Клиентская часть приложения написана. Код работы сервера написан на php. Так как целью данной статьи является создание приложения для android, то код серверной части приведен не будет.

Сделаем выводы. Поставленные задачи выполнены: приложение имеет все запланированные интерфейсы и легко управляется с помощью ссылок, выступая в роли браузера. Пользователь может получить доступ к предыдущей странице как с помощью кнопки назад, так и используя ссылку на странице. Существует небольшое меню для того, чтобы сделать навигацию еще более простой. Каждый интерфейс дает исчерпывающую информацию на свою тему.

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

Минусы текущей реализации заключаются в том, что без доступа в интернет пользователь не сможет пользоваться приложением. Так же уже загруженные страницы при повторном заходе на них обновляются. Данная проблема решается кешированием страниц, что будет реализовано в дальнейшей модификации проекта.

Читайте также

Список литературы

  1. Емельянов А.А., Ляпунова И.А. РАЗРАБОТКА ПРИЛОЖЕНИЯ «THINKIT - КИНОАФИША ТАГАНРОГА» ДЛЯ ОС ANDROID // NovaInfo.Ru (Электронный журнал.) – 2015 г. – № 30; URL: http://novainfo.ru/archive/30/razrabotka-prilozheniya-android-kinoafisha
  2. Емельянов А.А., Емельянова М.В. РАЗРАБОТКА ПРИЛОЖЕНИЯ «THINKIT - КИНОАФИША ТАГАНРОГА» ДЛЯ ОС ANDROID // NovaInfo.Ru (Электронный журнал.) – 2015 г. – № 33; URL: http://novainfo.ru/archive/33/razrabotka-prilozheniya-kinoafisha-dlya-os-android
  3. Учебник для андроид: // habrahabr.ru, URL: http://habrahabr.ru/post/117885/ (дата обращения 15.12.14).
  4. Учебник для андроид: //startandroid.ru/ru/, URL:http://startandroid.ru/ru/uroki/vse-uroki-spiskom/ (дата обращения 15.10.14).

Цитировать

Емельянов, А.А. Реализация клиент-серверного интерфейса для приложения «Think it — киноафиша Таганрога» для ОС Android / А.А. Емельянов, М.В. Емельянова. — Текст : электронный // NovaInfo, 2015. — № 33. — URL: https://novainfo.ru/article/3529 (дата обращения: 23.01.2022).

Поделиться