Разработка мобильных обучающих приложений для Android с использованием веб-сервисов

Автор: Paul Pocatilu
Источник: This work was supported by CNCSIS –UEFISCSU, project number PNII – IDEI 2637/2008
Ключевые слова: мобильное приложение, операционная система Android, веб-сервис

1. Введение

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

Мобильная обучающая система состоит как минимум из следующих компонентов:

  • мобильное обучающее устройство;
  • мобильное обучающее программное обеспечение;
  • мобильный обучающий контент.

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

Действия студентов в рамках системы мобильного обучения [2]:

  • пройти онлайн-курс;
  • сдавать экзамены;
  • отправить отзыв;
  • отправить домашнее задание, проекты.

Преподаватели, участвующие в решениях электронного обучения, включая мобильное обучение, должны:

  • справиться с управлением контентом;
  • подготовить тесты;
  • оценивать тесты, домашние задания, проекты, взятые студентами;
  • отправить отзыв;
  • общаться со студентами (форумы, электронная почта и другие виды сообщений).

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

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

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

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

Преимущества использования этой платформы:

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

Есть также некоторые недостатки:

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

Разработка распределенных мобильных обучающих приложений включает в себя следующие этапы:

  • управление проектами;
  • анализ;
  • дизайн;
  • внедрение;
  • тестирование.

Шаги применяются для разработки программного обеспечения и мобильного контента.

При разработке приложений учитываются результаты, полученные в [5] и [6], связанные с качеством мобильных приложений и систем.

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

Архитектура распределенных мобильных обучающих платформ

Архитектура распределенных мобильных обучающих платформ

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

Мобильное обучающее приложение, разработанное для устройств на базе Android, имеет следующие модули:

  • курсы;
  • тесты;
  • финальные и частичные тесты;
  • обмен сообщениями.

Для администрирования системы разрабатываются специализированные модули, обеспечивающие:

  • контроль пользователя;
  • управление контентом;
  • курсы;
  • тесты;
  • знаки.

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

Связь между клиентом и сервером основана на веб-сервисах. Веб-сервисы XML имеют много преимуществ для разработчиков и пользователей: они используют простые протоколы, а реализация сервисов и клиентов проще, чем другие методы.

Прототип, разработанный до настоящего времени, реализует модуль викторин.

2. Платформа Android

2.1 Операционная система Android

Операционная система Android - это проект, инициированный Google через Альянс Open Handset, в который входят более 30 компаний в сфере ИКТ. Платформа Android - это проект с открытым исходным кодом, позволяющий вносить изменения любому производителю мобильных устройств.

На рисунке 2 изображена архитектура операционной системы Android.

Архитектура Android

Архитектура Android

Операционная система основана на Linux ker-nel версии 2.6.x, который является монолитным ядром. Ядро включает в себя драйверы для аппаратного обеспечения мобильного устройства: экран, клавиатура, камера, USB, Bluetooth и т. Д. Ядро обеспечивает интерфейсное аппаратное обеспечение и управление памятью, процессами и другими ресурсами.

Собственные библиотеки следующего уровня зависят от аппаратной архитектуры мобильного устройства. Эти библиотеки включают поддержку 2D и 3D графики (Single, OpenGL ES), мультимедиа, безопасности, хранилища, просмотра (WebKit) и стандартной библиотеки C [8].

Приложения для Android разрабатываются с использованием языка программирования Ja-va. Приложениям требуется среда для управления их жизненным циклом. Это включает виртуальную машину Java (называемую виртуальной машиной Dalvik) и библиотеки классов Java, которые обеспечивают базовую поддержку приложений (коллекции, управление операциями ввода / вывода и т. Д.). Приложения Android не совместимы с Java ME или Java SE. Приложения оптимизированы для ограничений мобильных устройств.

Интерфейс прикладного программирования позволяет получить доступ к платформе, которая включает компоненты, используемые всеми приложениями Android. Инфраструктура приложения включает компоненты для управления приложениями Android (установка, выполнение), управление окнами и графический интерфейс пользователя, обработка событий и т.д.

Уровень приложений включает в себя предустановленные приложения (управление контактами, телефон, календарь, интернет-браузер) и пользовательские приложения. Приложения основаны на технологиях Java и используют классы, предоставляемые через интерфейс прикладного программирования. Кроме того, есть возможность использовать нативные функции в программах, написанных на языке программирования C / C ++ через NDK (Native Development Kit).

Виджеты, в отличие от приложений, занимают только часть основного экрана дисплея и ассоциируются (Home).

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

2.2 Разработка приложений для Android

Приложения Android разрабатываются с использованием одного или нескольких базовых компонентов [3], [4]:

  • деятельность (базовый класс деятельности);
  • услуги (Услуги базового класса);
  • контент-провайдеры (базовый класс ContentProvider);
  • компоненты, которые получают сообщения и отправляют их во все приложения (базовый класс BroadcastReceiver);
  • сообщения (класс Intent).

Особое значение в разработке приложений имеют ресурсы, обеспечивающие разделение кода интерфейса.

Действия представляют экран, связанный с приложением. Приложение может иметь одно или несколько действий.

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

Контент-провайдеры используются для обмена данными между приложениями. Обмен данными осуществляется с помощью файлов, баз данных или других средств. Альтернативой контент-провайдерам является использование связи между процессами.

Приложения могут реагировать на возникновение событий в системе с помощью классов, полученных из BroadcastReceiver. Они не имеют графического интерфейса, и приложение может иметь несколько компонентов этого типа.

Для активации таких компонентов, как активности, используются асинхронные сообщения, инкапсулированные в объектах типа Intent.

Приложения Android разрабатываются в основном с использованием Eclipse IDE с плагином Android Development-Tools (ADT). Android SDK и эмуляторы необходимы для разработки приложений.

3. Графический интерфейс пользователя

Разработанный прототип состоит из трех видов деятельности:

  • выбор теста;
  • вопрос и ответы;
  • cписок ответов.

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

Главный экран для модуля викторин представлен на рисунке 3. Соответствующее действие - ActTeste, и оно объявлено как основное действие в файле конфигурации AndroidManifest.xml. Когда приложение запускается, список тестов автоматически загружается на этом экране. Список является объектом типа ListView.

Описание элементов списка определяется в файле ресурсов на основе XML. Например, на рисунке 3 для каждого элемента списка была использована следующая структура:

		< TextView xmlns:android="http://schemas.android.com/apk/res/android"
		android:layout_width="fill_parent" 
		android:layout_height="wrap_content" 
		android:padding="10dp" />
		
Экран выбора теста на устройстве Android

Экран выбора теста на устройстве Android

Чтобы начать новое действие, используется Intent. Все действия должны быть объявлены в файле AndroidManifest.xml:

		< activity android:name=".ActTeste" /> 
		< activity android:name=".ActIntreb"/> 
		< activity android:name=".ActRasp"/> 
		

Если действия не объявлены в Android-Manifest.xml, при выполнении кода возникнет исключение времени выполнения.

Все доступные тесты загружаются из базы данных, хранящейся на стороне сервера. Для этого начального действия используется выделенный метод веб-службы.

Главное меню включает в себя пункты, которые позволяют:

  • Войти / Выйти из приложения;
  • Выйти из приложения;
  • Просмотр версии приложения.

Параметры главного меню добавляются при вызове метода onCreateOptionsMenu:

		public boolean onCreateOptionsMenu(Menu menu) 
		{
		menu.add(0, LOGIN, 0, "Login");
		menu.add(0, LOGOUT, 1, "Logout");
		menu.add(0,IESIRE, 2,"Iesire");
		menu.add(0,DESPRE, 3,"Despre");
		return true;
		}
		

Когда пользователь выбирает пункт меню, вызывается функция onOptionsItemSelected. Например, когда пользователь хочет выйти из приложения, выполняется код, связанный с меткой IESIRE:

		public boolean onOptionsItemSelected (MenuItem item) 
		{
		switch (item.getItemId()) 
		{
		//... 
		case IESIRE:
		android.os.Process.killProcess (android.os.Process.myPid()); 
		return true; 
		}
		return false; 
		}
		

Следующий код используется для отображения действия, связанного с вопросами и ответами, на основе интерфейса Adapterview.OnItemClickListener:

		 public void onItemClick(AdapterView parent,View item,int position,long id);
		{
		Intent intent = new Intent(ActTeste.this, ActIntreb.class); 
		//add parameters 
		intent.putExtra("idTest", position + 1); 
		//launch selected test 
		startActivity(intent); 
		}
		

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

Экран вопросов, как показано на устройстве Android

Экран вопросов, как показано на устройстве Android

На вопросы есть только один правильный ответ. Студент может последовательно переходить от одного вопроса к другому. Некоторые пункты меню отключены для первого или последнего вопроса:

		public boolean onPrepareOptionsMe-nu(Menu menu)  
		{
		if (idIntrebareCurenta == 
		numarIntrebari) 
		menu.setGroupEnabled( 
		ActIntreb.INAINTE, false); 
		else 
		menu.setGroupEnabled( 
		ActIntreb.INAINTE, true); 
		//… 
		}
		

Чтобы передать сложные объекты из активности в другой, им необходимо реализовать интерфейс android.os.Parcelable с помощью методов descriptionContents и writeTo-Parcel.

Например, класс Intrebare, представляющий вопрос, реализует метод write-ToParcel следующим образом:

		public void writeToParcel (Parcel hand, int flags)
		{
		dest.writeInt (idIntrebare);
		dest.writeString (text);
		dest.writeStringArray (var);
		}
		

Класс должен включать статическое поле с именем CREATOR:

		public static final Plot-blue.Creator <Вопрос> CREATOR =
		новый Parcel-blue.Creator <Запрос> ()
		{
		...
		}
		

В конце студент может просмотреть ответы и отправить их на сервер, чтобы отслеживать ход выполнения.

Списки проверки ответов, как показано на устройстве Android

Списки проверки ответов, как показано на устройстве Android

Студент имеет возможность просмотреть ответы и рассчитать ее или его балл.

Поскольку ответы хранятся в HashMap, а вопросы нужно показывать отсортированными по коду вопроса, класс Intrebare реализует интерфейс Comparable .

4. Веб-сервисы

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

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

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

Если возникает исключение, метод возвращает отрицательное значение.

Следующий код является примером метода, используемого в этом веб-сервисе:

		[WebMethod] 
		public int GetNumarIntrebariTest(int idTest) 
		{
		OleDbConnection conn = new OleDbConnection(connString + 
		Context.Request.PhysicalApplicationPath + dbString); 
		OleDbCommand cmd = new OleDbCommand(); 
		cmd.Connection = conn; 
		cmd.CommandText = "SELECT COUNT(*) FROM Grile WHERE id_test = " + idTest; 
		int nrIntrebari = -1; 
		try 
		{
		conn.Open(); 
		nrIntrebari = (int)cmd.ExecuteScalar(); 
		}
		catch (Exception ex) 
		{
		nrIntrebari = -1; 
		}
		Finally {
		conn.Close();
		}
		return nrIntrebari; 
		}
		

Веб-сервисы используются сторонней библиотекой, распространяемой как бесплатный источник kSOAP2, оптимизированной для Android.

Библиотеки должны быть добавлены в проект, чтобы их можно было использовать. Эта библиотека основана на архитектуре SOAP, и нет необходимости создавать прокси / заглушку для вызова методов веб-служб.

Конверт SOAP создается с использованием класса Soap-SerializationEnvelope (с указанием версии SOAP), а детали запроса добавляются в тело конверта (с использованием класса SoapOb-ject).

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

Функция getIntrebare используется для доступа к веб-службе и для вызова определенного метода, используемого для получения указанного вопроса. Исходный код функции:

		public static Intrebare getIntrebare(int idTest, int idIntrebare) 
		{
		Intrebare intrebare = new Intrebare(); 
		try 
		{
		SoapObject request = new SoapObject(NAMESPACE, GET_INTREBARE); 
		// add paramaters and values 
		request.addProperty("idTest", idTest); 
		request.addProperty("idIntrebare", idIntrebare); 
		SoapSerializationEnvelope envelope = 
		new SoapSerializationEnvelope(SoapEnvelope.VER11); 
		envelope.dotNet = true; 
		envelope.setOutputSoapObject(request); 
		HttpTransportSE androidHttpTransport = 
		new HttpTransportSE(URL_WS); 
		android HttpTransport.call(NAMESPACE + GET_INTREBARE, envelope); 
		SoapObject result = (SoapObject) envelope.getResponse(); 
		//question initialization 
		intrebare.setIdIntrebare(Integer.parseInt(result.getProperty( 
		"IdIntrebare").toString())); 
		intrebare.setText(result.getProperty("Text").toString()); 
		SoapObject variante = (SoapObject) result.getProperty("Var"); 
		for (int i = 0; i < Intrebare.VARIANTE; i++) 
		intrebare.setVarianta(i, 
		variante.getProperty(i).toString()); 
		}
		catch (Exception e) 
		{ 
		e.printStackTrace();
		intrebare = null; 
		return intrebare; 
		}
		return intrebare;
		}
		

Веб-сервисы используются сторонней библиотекой, распространяемой как бесплатный источник kSOAP2, оптимизированной для Android.

  • NAMESPACE = "http://tempuri.org/"; - пространство имен веб-сервисов; в этом примере используется пространство имен по умолчанию;
  • URL_WS = "http: //server/Service.asmx"; - URL веб-службы;
  • GET_INTREBARE = "GetIntrebare"; - Имя метода веб-сервиса;
  • idTest, idIntrebare - параметры, используемые методом GetIntrebare.

Использование неправильных значений для этих параметров приведет к сбою вызова метода веб-службы.

Все функции, используемые для доступа к веб-сервису, включены в класс, чтобы быть доступными из любой точки пакета. Это пример использования этого веб-метода:

		intrebare = AccesSW.getIntrebare 
		(idTest, idIntrebareCurenta);
		

Для использования веб-сервисов приложению необходимо специальное разрешение. Разрешения хранятся в файле AndroidManifest.xml. Для этого мобильного приложения необходимо добавить следующую строку:

		< uses-permission andro-id:name="android.permission.INTERNET" >
		< / uses-permission >
		

В этом прототипе все данные хранятся в памяти во время выполнения программы. Все загруженные вопросы и предоставленные ответы сохраняются в заказе для снижения затрат, связанных с передачей данных через беспроводные сети:

		Vector intrebari = new Vector(); 
		Hashtable raspunsuri = new Hashtable
		(Raspuns>();
		

Для будущих версий будут приняты во внимание следующие методы:

  • локальные файлы;
  • файлы недвижимости;
  • локальные базы данных.

5. Проблемы безопасности

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

В таблице 1 представлены некоторые проблемы безопасности, касающиеся мобильных обучающих решений, основанных на [7].


Проблемы безопасности приложений m-learning

Таблица 1. Проблемы безопасности приложений m-learning


Этими проблемами можно управлять с помощью нескольких методов и техник, таких как:

  • разные уровни аутентификации;
  • управление паролями;
  • шифрование данных;
  • услуги определения местоположения.

Каждое из действий из Таблицы 1 требует определенной степени безопасности, в зависимости от важности и чувствительности данных.

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

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

Тесты и управление контентом предъявляют средние требования к безопасности, поскольку манипулируемые данными менее чувствительны.

Управление обратной связью и обмен сообщениями для этих систем не использует конфиденциальные данные.

Минимальное требование - использовать аутентификацию через пользователей и пароли.

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

Тестирование приложений должно включать несколько тестов безопасности.

6. Выводы

Разработка мобильных приложений - задача не из легких. Существует множество платформ и технологий на выбор. Ресурсы Mobile устройств ограничены. Пользовательский опыт работы с мобильными устройствами и программным обеспечением различен.

Использование веб-сервисов для мобильных приложений обучения помогает процессу разработки, обеспечивая стандартизированный способ связи между мобильными клиентами и серверами. Есть также недостатки, которые необходимо уменьшить или устранить:

  • объем данных (оптимизация);
  • безопасность (обнаружение и устранение дыр в безопасности);
  • сериализация данных для нестандартных и сложных объектов (рефакторинг).

Что касается представленного мобильного приложения, рассматриваются следующие направления развития:

  • новые функциональные возможности;
  • улучшение интерфейса;
  • внедрение модулей курсов и тестов;
  • управление пользователями;
  • интеграция модулей, чтобы обеспечить основу для работающего приложения m-learning.

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

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

  1. D. S. Metcalf II and J. M. De Marco, mLearning: Mobile Learning and Perfor-mance in the Palm of Your Hand, HRD Press, Inc., 2006.
  2. P. Pocatilu, F. Alecu and M. Vetrici, Measuring the Efficiency of Cloud Com-puting for E-learning Systems, WSEAS TRANSACTIONS on COMPUTERS, Issue 1, Volume 9, January 2010, pp. 42-51.
  3. E. Burnette, Hello, Android: Introducing Google’s Mobile Development Platform, 2nd Edition, The Pragmatic Bookshelf, 2009.
  4. R. Meier, Professional Android 2 Appli-cation Development, Wiley Publishing, Inc., 2010.
  5. C. Ciurea, "A Metrics Approach for Col-laborative Systems," Informatica Econo-mica, vol. 13, no. 2/2009, pp. 41-49.
  6. C. Boja, L Batagan, “Analysis of M-Learning Applications Quality,” WSEAS TRANSACTIONS on COMPUTERS, Issue 4, Vol. 8, May 2009, ISSN 1109-2750, pp. 767-777.
  7. F. Alecu, P. Pocatilu and S. Capisizu, WiMAX Security Issues in E-Learning Systems, Proc. of 2nd International Con-ference on Security for IT & C in Journal of Information Technology and Commu-nication Security, Bucharest, November 2009, pp. 45-52.
  8. The Developer's Guide | Android Develop-ers [Online]. Available at: http://developer.android.com/guide/index.html