5

我有一个基于原生 Android Moodle的应用程序,其中我必须在应用程序中显示SCORM格式的课程。
有人可以帮我解决这个问题吗?
这些课程以 SCORM 格式上传到我的基于 Moodle 的网站。网络服务给了我一个指向课程文件的 url,在这里
指定https://github.com/dongsheng/moodle/wiki/WebService:get_course_contentsget_course_contents

如何在我的原生 Android 应用程序中显示这些 SCORM 文件?
我是否需要解析imsmanifest.xml文件并获取 SCORM 包的详细信息并显示 HTML5 内容?还是有另一种/更好的方法?

**


**
更新:
我现在尝试在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 包复制到设备的 sdcard 并尝试打开 html 文件时,它在 HTMLViewer 应用程序中打开并显示空白屏幕...

在此处输入图像描述

有人可以帮我解决这个问题....
提前谢谢...

4

4 回答 4

3
  1. 首先你必须了解scorm的结构。

  2. 您可以看到 scorm 包是一个 zip 文件,其中包含几个正确的文件夹和一个清单文件。

  3. 首先,您必须解压缩 scorm 的 zip 包,然后必须解析该 imsmanifest.xml 文件并维护两个列表,其中一个包含标题和与该标题对应的 html 文件的其他地址。

  4. 我使用 sax2r2 解析器来解析该清单文件,并得到两个数组列出一个包含 html 文件的标题和其他地址的数组。

  5. 稍后你只需要用titles数组填充你的ios列表,当用户点击该列表的任何标题时,获取列表的位置并从地址数组列表中检索与该标题对应的html文件的地址。

  6. 您可以在 ios 的 webview 中打开 html 文件,确保已启用打开 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 用于在 android 中打开 html/html5 文件,我在 android 中启用了上述设置,这些设置在 android 中是默认的,可能在 ios 中你只需要加载该 html 文件并且 dnt 必须启用所有这些值。

在上面你可以看到我正在检索 href.get(0) 这是 scorm 的第一个 html5 文件。

简单来说,您只需解压缩 scorm ,解析 imsmanifest.xml 文件并获取它的数据并使用它来打开/解析 scorm。

于 2014-01-31T08:01:32.590 回答
2

泽巴,

您需要提供 LMS (Moodle) SCORM API。该 API(它是一个定义标准 SCORM 函数的 javascript,例如LMSInitialize()LMSFinish())充当您的 Android SCORM 播放器(客户端)和 LMS(服务器)之间的桥梁。

In webversion of Moodle, Moodle checks the version of SCORM package and then includes the appropriate API to be used as a main API (there are aicc.js.php, scorm_12.js.php and scorm_13.js.php).

You may want to extend these APIs to be used in your Android application. Once you have the API, you can get the SCORM content by returning the url of the file from a webservice function.

Each SCO files (ex. scormpackage.zip/index.html) have its own APIWrapper. The wrapper will find such LMS API and use it to be connected to the LMS backend.

Look at the adlnet website to see how SCORM packages consumes APIWrapper to keep track of SCORM content.

于 2014-03-19T04:22:09.927 回答
0

core_course_get_courses

你可以使用这个功能。

于 2013-09-26T11:15:51.373 回答
-1

使用移动moodle。正在添加许多功能,它可以与您的网站同步工作,具有适用于 android、IOS 和 windows mobile 的版本。

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

离线工作,但对测验之类的事情有一些限制,只能在与网站联系时得分。

无需自己创造一切新事物。Moodle Mobile 已经在播放 SCORM。

于 2016-07-05T12:47:08.317 回答