【问题标题】:Display SCORM content in Android在 Android 中显示 SCORM 内容
【发布时间】:2016-07-05 20:52:12
【问题描述】:

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

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

**


**
更新:
我现在尝试在 WebView 中显示 SCORM 包内容。
我的 SCORM 包是这样的:

我已将此包复制到我的 POC 项目的 Assets 文件夹中。
我的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 应用程序中打开并显示空白屏幕...

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

【问题讨论】:

    标签: android android-webview moodle scorm


    【解决方案1】:
    1. 首先你必须了解scorm的结构。

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

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

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

    5. 1234563 .
    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。

    【讨论】:

    • 非常感谢!你的回答对我很有用。
    • 没问题,如果你有任何问题,你可以问任何问题,我确实有安卓应用程序正在下载和解析 scorm,并且可以查看 scorm...
    • @MurtazaAshraf :您好,我对 imsmanifest.xml 文件有一个疑问,我可以找到 HTML 文件的地址,但找不到它们的标题。请帮忙。
    • 它带有标签/标题,您可以检查清单。确保您使用的是标准 SCORM 清单。谢谢
    • @MurtazaAshraf 如果我想跟踪 ppt 的最后一张幻灯片打开状态怎么办?并保存以备下次使用?无法实现它。类似于moodle播放器。
    【解决方案2】:

    斑马,

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

    在 Moodle 的 web 版本中,Moodle 检查 SCORM 包的版本,然后包含适当的 API 用作主要 API(有 aicc.js.phpscorm_12.js .phpscorm_13.js.php)。

    您可能希望扩展这些 API 以在您的 Android 应用程序中使用。获得 API 后,您可以通过从 web 服务函数返回文件的 url 来获取 SCORM 内容。

    每个 SCO 文件(例如 scormpackage.zip/index.html)都有自己的 APIWrapper。包装器会找到这样的 LMS API 并使用它连接到 LMS 后端。

    查看adlnet website,了解 SCORM 包如何使用 APIWrapper 来跟踪 SCORM 内容。

    【讨论】:

    • 我已经能够获得包含 API 的 API 包装器,但无法使用它们。您能告诉我如何获取可以调用这些 API 的 API 对象或 API 适配器吗?
    • 还有离线模式怎么办?
    • 你可以尝试创建Moodle本地webservice函数来获取API。例如,在您的 webservice 函数中重新实现 mod/scorm/loaddatamodel.php 以返回 API。然后您可以通过调用此函数将 API 加载到设备中。我不知道离线模式。也许您需要创建将提供 SCORM 包的本地 Web 服务功能。然后将其下载到设备。解压缩并在本地打开文件。
    • @Zeba 如果你想创建 Android SCORM 播放器,你可以追踪 Moodle mod/scorm/player.php 和它依赖的其他文件。一旦你掌握了 Moodle 如何构建播放器的关键,你可能想要在 Android 中实现它的播放器。结合本地网络服务,没有什么是不可能的 ;-)
    • 我已经获得了SCORM包并下载到设备上并解压,这样就可以在本地访问了。事实上,我还能够使用 WebView 显示其内容。我有一个 javascripts API 包装文件,其中包含
    【解决方案3】:

    core_course_get_courses

    这个功能你可以使用。

    【讨论】:

    • 是的@Ashish Nautiyal ...我正在使用该功能从基于moodle的服务器获取课程内容..但我的问题是'如何在我的原生Android应用程序中显示这些SCORM文件?'
    • buddy 实施 scorm 并不是那么容易。一切顺利:)
    • 我发现了关于 SCORM :) 但我现在的主要目的只是在 android 设备上显示 SCORM 包的内容。我终于可以通过在设备上安装 Flash 播放器来实现这一点:) 无论如何感谢您的帮助.....
    • @AshishNautiyal:我需要为 Android 实现一个 scorm 播放器。你能帮忙提供一些链接或任何其他对我有帮助的参考资料吗?谢谢!
    • 在本地我猜它太复杂了。兄弟如果喜欢你可以投票给我的ans。谢谢
    【解决方案4】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-25
      • 2017-02-13
      • 1970-01-01
      • 1970-01-01
      • 2018-03-06
      • 1970-01-01
      • 2019-01-25
      相关资源
      最近更新 更多