Отображение содержимого SCORM в Android

У меня есть собственное приложение на базе Moodle для Android, в котором я должен отображать курсы в формате SCORM в приложении.
Может ли кто-нибудь помочь мне, как это сделать? это...
Курсы загружаются на мой веб-сайт на основе Moodle в формате SCORM.
Веб-служба get_course_contents дает мне URL-адрес, указывающий на файлы курса, как указано здесь
https://github.com/dongsheng/moodle/wiki/WebService:get_course_contents

Как отобразить эти SCORM-файлы в собственном приложении для Android?
Нужно ли мне анализировать файл imsmanifest.xml, получать сведения о пакете SCORM и отображать содержимое HTML5? Или есть другой/лучший способ??

**


**
Обновление:
Я попытался отобразить содержимое пакета SCORM в WebView.
Мой пакет SCORM выглядит следующим образом:
введите здесь описание изображения
Я скопировал этот пакет в папку Assets моего проекта POC.
Мои настройки WebView:

settings.setJavaScriptEnabled(true);
settings.setPluginsEnabled(true);
PluginState state = PluginState.ON;
settings.setPluginState(state);
settings.setAllowFileAccess(true);
settings.setJavaScriptCanOpenWindowsAutomatically(true);
settings.setDatabaseEnabled(true);

String databasePath = this.getApplicationContext()
        .getDir("database", Context.MODE_PRIVATE).getPath();
settings.setDatabasePath(databasePath);
webview.loadUrl("file:///android_asset/ttttt.html");

И мой манифест:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.html5test"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="9"
        android:targetSdkVersion="17" />
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.html5test.MainActivity"
            android:hardwareAccelerated="true"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Но я не получаю требуемых результатов и не могу просмотреть свой SWF....

введите здесь описание изображения

Кроме того, когда я скопировал пакет SCORM на SD-карту устройства и попытался открыть html-файл, он открылся в приложении HTMLViewer и показал пустой белый экран...

введите здесь описание изображения

Может кто-нибудь помочь мне с этим....
Заранее спасибо...


person Zeba    schedule 04.09.2013    source источник


Ответы (4)


  1. Сначала вы должны понять структуру scorm.

  2. Вы можете видеть, что пакет scorm представляет собой zip-файл, содержащий несколько папок и файл манифеста.

  3. Сначала вам нужно разархивировать этот zip-пакет scorm, а затем вам нужно проанализировать этот файл imsmanifest.xml и сохранить два списка, один из которых содержит заголовки, а другие адреса html-файлов, соответствующие этому заголовку.

  4. Я использовал синтаксический анализатор sax2r2 для анализа этого файла манифеста и получил эти два списка массивов, один из которых содержит заголовок и другие адреса файлов html.

  5. Позже вам просто нужно заполнить список ios массивом заголовков, и когда пользователь нажимает на любой заголовок этого списка, получает позицию списка и извлекает адрес html-файлов, соответствующих этому заголовку, из списка массивов адресов.

  6. Сначала вы можете открыть html-файл в веб-просмотре вашего ios, убедитесь, что включены параметры, необходимые для открытия файла scorm html5.

В Android я включил и установил эти значения, это код Java, но он может вам помочь.

WebViewClient webViewClient = new WebViewClient();
    webView.setWebViewClient(webViewClient);
    webView.clearCache(true);
    webView.getSettings().setUseWideViewPort(true);
    webView.setInitialScale(1);
    webView.getSettings().setBuiltInZoomControls(true);
    webView.clearHistory();
    webView.getSettings().setAllowFileAccess(true);
    webView.getSettings().setDomStorageEnabled(true);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setPluginState(WebSettings.PluginState.ON);
    webView.getSettings().setLoadWithOverviewMode(true);
    webView.getSettings().setUseWideViewPort(true);
    webView.getSettings().setPluginState(PluginState.ON);
    webView.loadUrl("file://" + open_scorm.scorm_path
            + open_scorm.scorm_name + "/" + open_scorm.href.get(0));

webView используется для открытия файлов html/html5 в android, и я включил вышеуказанные настройки в android, эти настройки по умолчанию в android, может быть, в ios вам просто нужно загрузить этот html файл, и dnt должен включить все эти значения.

Выше вы можете видеть, что я получаю href.get(0), который является первым файлом html5 scorm.

Проще говоря, вам просто нужно разархивировать scorm, проанализировать файл imsmanifest.xml, получить данные о нем и использовать его для открытия/анализа scorm.

person Murtaza Ashraf    schedule 31.01.2014
comment
Спасибо большое! Ваш ответ был очень полезен для меня. - person Zeba; 31.01.2014
comment
нет проблем, вы можете задать любой вопрос, если у вас возникнут проблемы, у меня есть приложение для Android, которое загружает и анализирует scorm, и можно просмотреть scorm... - person Murtaza Ashraf; 20.03.2014
comment
@MurtazaAshraf: Здравствуйте, у меня есть одно сомнение в файле imsmanifest.xml. Я могу найти адреса HTML-файлов, но я не смог найти их заголовки. Пожалуйста помоги. - person Rohit Chaskar; 24.08.2015
comment
С метками/названиями вы можете проверить манифест для этого. Убедитесь, что вы используете стандартный манифест SCORM. Спасибо - person Murtaza Ashraf; 25.08.2015
comment
@MurtazaAshraf, что, если я хочу отслеживать последнее открытое состояние слайда ppt? и сохранить на следующий раз? не в состоянии этого добиться. что-то вроде мудл плеера. - person Anant Shah; 10.10.2018

Зеба,

Вам необходимо предоставить LMS (Moodle) SCORM API. Этот API (это javascript, который определяет стандартные функции SCORM, такие как LMSInitialize() и LMSFinish()) действует как мост между проигрывателем Android SCORM (клиентом) и LMS (сервер).

В веб-версии Moodle Moodle проверяет версию пакета SCORM, а затем включает соответствующий API для использования в качестве основного API (есть aicc.js.php, scorm_12.js.php< /strong> и scorm_13.js.php).

Возможно, вы захотите расширить эти API для использования в своем приложении для Android. Получив API, вы можете получить содержимое SCORM, вернув URL-адрес файла из функции веб-сервиса.

Каждый файл SCO (например, scormpackage.zip/index.html) имеет свой собственный APIWrapper. Обертка найдет такой LMS API и использует его для подключения к серверной части LMS.

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

person Bogie    schedule 19.03.2014
comment
Я смог получить оболочку API с API внутри, но не смог их использовать. Не могли бы вы рассказать мне, как я могу получить объект API или адаптер API, с помощью которого я могу вызывать эти API? - person Zeba; 19.03.2014
comment
А также как я могу сделать это для автономного режима? - person Zeba; 19.03.2014
comment
Вы можете попробовать создать функцию локального веб-сервиса Moodle, чтобы получить API. Например, повторно внедрите mod/scorm/loaddatamodel.php в функцию вашего веб-сервиса, чтобы вернуть API. Затем вы можете загрузить API в устройство, вызвав эту функцию. Я понятия не имею об автономном режиме. Возможно, вам потребуется создать локальную функцию веб-сервиса, которая предоставит пакет SCORM. Затем он загружается на устройство. Разархивируйте его и откройте файлы локально. - person Bogie; 20.03.2014
comment
@Zeba, если вы хотите создать проигрыватель Android SCORM, вы можете отслеживать Moodle mod/scorm/player.php и другие файлы, от которых он зависит. Когда у вас есть ключ к тому, как Moodle создает проигрыватель, вы можете захотеть реализовать его в Android. В сочетании с локальным веб-сервисом нет ничего невозможного ;-) - person Bogie; 20.03.2014
comment
Мне удалось получить пакет SCORM, загрузить его на устройство и разархивировать, чтобы к нему можно было получить доступ локально. Фактически, я также смог отобразить его содержимое с помощью WebView. У меня есть файл-оболочка API javascripts, в котором есть такие API, как ‹script type=text/javascript› function LMSInitialize(parameter) { } function LMSFinish(parameter) { } и т. д. Мне нужно знать, как получить доступ к этим API? - person Zeba; 20.03.2014
comment
Как я уже говорил, оболочка API в файле SCORM сделает это автоматически, получив доступ к основному API, возвращаемому сервером. Вы можете внедрить этот основной API и использовать его, пока устройство подключено к сети. Если устройство отключается, вы можете переключиться на пользовательский API. Обертка и основной API — это разные вещи. Оболочка внутри файла SCORM запрашивает запрос к основному API. Затем основной API асинхронно перенаправляет этот запрос на сервер. - person Bogie; 21.03.2014

core_course_get_courses

эту функцию вы можете использовать.

person Ashisha Nautiyal    schedule 26.09.2013
comment
Да, @Ashish Nautiyal... Я использую эту функцию, чтобы получить содержимое курса с сервера на основе Moodle.. Но мой вопрос: "Как мне отобразить эти файлы SCORM в моем родном приложении для Android?" - person Zeba; 26.09.2013
comment
приятель Внедрение scorm не так просто. Всего наилучшего :) - person Ashisha Nautiyal; 27.09.2013
comment
Я понял это насчет SCORM :) Но моей главной целью сейчас было просто отобразить содержимое пакета SCORM на устройстве Android. И я, наконец, смог добиться этого, установив флеш-плеер на устройство :) В любом случае спасибо за помощь..... - person Zeba; 01.10.2013
comment
@AshishNautiyal: мне нужно реализовать scorm-плеер для Android. Можете ли вы помочь в предоставлении некоторых ссылок или любых других ссылок, которые помогут мне. Спасибо! - person nibz; 26.11.2013
comment
в родном я думаю, это слишком сложно. Братан, ты можешь проголосовать за мой ответ, если он тебе понравился. Спасибо - person Ashisha Nautiyal; 26.11.2013

Используйте мобильный мудл. Добавляется много функций, работает синхронно с вашим сайтом, имеет версии для Android, IOS и Windows Mobile.

https://docs.moodle.org/31/en/Moodle_Mobile_features

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

Не нужно делать все новое самому. Moodle Mobile уже использует SCORM.

person Jinguo Jiang    schedule 05.07.2016