Мобильные обучающие приложения разрабатываются с использованием различных технологий и платформ. Каждая реализация имеет специфические характеристики с точки зрения пользовательского интерфейса и содержания и влияет на процесс разработки.
Мобильная обучающая система состоит как минимум из следующих компонентов:
Программное обеспечение, необходимое для процесса мобильного обучения, представляет собой простой мобильный веб-браузер или специальное приложение, которое может быть автономным или клиентским приложением.
Действия студентов в рамках системы мобильного обучения [2]:
Преподаватели, участвующие в решениях электронного обучения, включая мобильное обучение, должны:
Одна из наиболее используемых архитектур для мобильных обучающих приложений - это веб-технология благодаря хорошо известным технологиям.
Обычно автономные мобильные приложения требуют, чтобы весь мобильный обучающий контент хранился в мобильном устройстве.
Распределенные мобильные обучающие приложения (включая веб-приложения) загружают и используют контент, когда им это необходимо.
Распределенные платформы имеют архитектуру, аналогичную веб-платформам, но клиентское приложение представляет собой многофункциональное приложение, а не простой мобильный веб-браузер, и сервер также отличается.
Преимущества использования этой платформы:
Есть также некоторые недостатки:
Разработка распределенных мобильных обучающих приложений включает в себя следующие этапы:
Шаги применяются для разработки программного обеспечения и мобильного контента.
При разработке приложений учитываются результаты, полученные в [5] и [6], связанные с качеством мобильных приложений и систем.
На рисунке 1 изображены компоненты, включенные в распределенную мобильную систему обучения.
Архитектура распределенных мобильных обучающих платформ
Помимо мобильного учебного контента, существуют базы данных, используемые для управления пользователями, сообщениями и другими настройками. Данные, хранящиеся в базах данных, доступны с выделенных серверов.
Мобильное обучающее приложение, разработанное для устройств на базе Android, имеет следующие модули:
Для администрирования системы разрабатываются специализированные модули, обеспечивающие:
Модули написаны независимо, и они разделяют общие данные. Каждый модуль имеет связанный экран, и они запускаются с главного экрана.
Связь между клиентом и сервером основана на веб-сервисах. Веб-сервисы XML имеют много преимуществ для разработчиков и пользователей: они используют простые протоколы, а реализация сервисов и клиентов проще, чем другие методы.
Прототип, разработанный до настоящего времени, реализует модуль викторин.
Операционная система Android - это проект, инициированный Google через Альянс Open Handset, в который входят более 30 компаний в сфере ИКТ. Платформа Android - это проект с открытым исходным кодом, позволяющий вносить изменения любому производителю мобильных устройств.
На рисунке 2 изображена архитектура операционной системы 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 является многозадачной, каждое приложение работает в отдельном потоке.
Приложения Android разрабатываются с использованием одного или нескольких базовых компонентов [3], [4]:
Особое значение в разработке приложений имеют ресурсы, обеспечивающие разделение кода интерфейса.
Действия представляют экран, связанный с приложением. Приложение может иметь одно или несколько действий.
Службы - это подпрограммы, которые работают параллельно с основным потоком и не имеют графического интерфейса. Они позволяют разрабатывать действия в фоновом режиме, не блокируя выполнение основного потока и взаимодействие с таким приложением.
Контент-провайдеры используются для обмена данными между приложениями. Обмен данными осуществляется с помощью файлов, баз данных или других средств. Альтернативой контент-провайдерам является использование связи между процессами.
Приложения могут реагировать на возникновение событий в системе с помощью классов, полученных из BroadcastReceiver. Они не имеют графического интерфейса, и приложение может иметь несколько компонентов этого типа.
Для активации таких компонентов, как активности, используются асинхронные сообщения, инкапсулированные в объектах типа Intent.
Приложения Android разрабатываются в основном с использованием Eclipse IDE с плагином Android Development-Tools (ADT). Android SDK и эмуляторы необходимы для разработки приложений.
Разработанный прототип состоит из трех видов деятельности:
Интерфейс прост и интуитивно понятен, без какой-либо графики и рисунков. Это уменьшит объем памяти, необходимый приложению, и сократит время разработки. Будущие версии будут включать переработанный и дружественный пользовательский интерфейс. Приложение предназначено для мобильных устройств с сенсорным экраном, но не ограничивается ими.
Главный экран для модуля викторин представлен на рисунке 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
Чтобы начать новое действие, используется 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
На вопросы есть только один правильный ответ. Студент может последовательно переходить от одного вопроса к другому. Некоторые пункты меню отключены для первого или последнего вопроса:
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
Студент имеет возможность просмотреть ответы и рассчитать ее или его балл.
Поскольку ответы хранятся в HashMap, а вопросы нужно показывать отсортированными по коду вопроса, класс Intrebare реализует интерфейс Comparable
Веб-служба, используемая этим приложением, была разработана с использованием технологий 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.
Использование неправильных значений для этих параметров приведет к сбою вызова метода веб-службы.
Все функции, используемые для доступа к веб-сервису, включены в класс, чтобы быть доступными из любой точки пакета. Это пример использования этого веб-метода:
intrebare = AccesSW.getIntrebare (idTest, idIntrebareCurenta);
Для использования веб-сервисов приложению необходимо специальное разрешение. Разрешения хранятся в файле AndroidManifest.xml. Для этого мобильного приложения необходимо добавить следующую строку:
< uses-permission andro-id:name="android.permission.INTERNET" > < / uses-permission >
В этом прототипе все данные хранятся в памяти во время выполнения программы. Все загруженные вопросы и предоставленные ответы сохраняются в заказе для снижения затрат, связанных с передачей данных через беспроводные сети:
Vectorintrebari = new Vector Hashtable(); raspunsuri = new Hashtable (Raspuns>();
Для будущих версий будут приняты во внимание следующие методы:
Безопасность распределенных мобильных обучающих приложений очень важна и сложна по сравнению с автономными приложениями. Есть несколько областей, где требования безопасности высоки, и они нуждаются в особом внимании.
В таблице 1 представлены некоторые проблемы безопасности, касающиеся мобильных обучающих решений, основанных на [7].
Таблица 1. Проблемы безопасности приложений m-learning
Этими проблемами можно управлять с помощью нескольких методов и техник, таких как:
Каждое из действий из Таблицы 1 требует определенной степени безопасности, в зависимости от важности и чувствительности данных.
Базы данных с тестами, оценками и пользователями содержат конфиденциальные данные, и им нужно особое внимание.
Требования безопасности для экзаменов, оценки домашних заданий / проектов и управления пользователями очень высоки из-за важности данных и информации, которую они используют.
Тесты и управление контентом предъявляют средние требования к безопасности, поскольку манипулируемые данными менее чувствительны.
Управление обратной связью и обмен сообщениями для этих систем не использует конфиденциальные данные.
Минимальное требование - использовать аутентификацию через пользователей и пароли.
Беспроводную передачу данных можно легко контролировать, поэтому необходимо обеспечить высокий уровень безопасности с помощью специальных стандартов.
Тестирование приложений должно включать несколько тестов безопасности.
Разработка мобильных приложений - задача не из легких. Существует множество платформ и технологий на выбор. Ресурсы Mobile устройств ограничены. Пользовательский опыт работы с мобильными устройствами и программным обеспечением различен.
Использование веб-сервисов для мобильных приложений обучения помогает процессу разработки, обеспечивая стандартизированный способ связи между мобильными клиентами и серверами. Есть также недостатки, которые необходимо уменьшить или устранить:
Что касается представленного мобильного приложения, рассматриваются следующие направления развития:
Этот прототип является частью системы мобильного обучения, которая также будет разработана для других мобильных платформ, чтобы охватить широкий спектр мобильных устройств и пользователей.