我有一个原生的Android Moodle 应用程序,我必须在应用程序中显示 SCORM 格式的课程。
有人可以帮我解决这个问题吗...
课程以SCORM格式上传到我的Moodle网站
get_course_contents
网络服务为我提供了一个指向课程文件的网址,如此处所述
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包复制到设备的SD卡上并尝试打开html文件时,它在HTMLViewer应用程序中打开并显示一个空白的白色屏幕......
有人可以帮我解决这个问题。
提前谢谢......
答案 0 :(得分:3)
首先你必须了解scorm的结构。
您可以看到scorm包是一个包含几个文件夹的zip文件和一个清单文件。
首先你需要解压缩scorm的zip包然后你必须解析那个imsmanifest.xml文件并维护两个列表,其中包含与该标题对应的html文件的标题和其他地址。
我已经使用sax2r2解析器来解析该清单文件,并获得了两个包含标题和html文件的其他地址的数组列表。
稍后你只需要填写带有titles数组的ios列表,当用户点击该列表的任何标题时获取列表的位置并从地址数组列表中检索对应于该标题的html文件的地址
inaly你可以在你的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。
答案 1 :(得分:2)
的Zeba,
您需要提供LMS(Moodle)SCORM API。此API(它是定义标准SCORM函数的javascript,如 LMSInitialize()和 LMSFinish())充当Android SCORM播放器(客户端)和LMS(服务器)。
在Moodle的webversion中,Moodle检查SCORM包的版本,然后包含适当的API作为主API(有 aicc.js.php , scorm_12.js .php 和 scorm_13.js.php )。
您可能希望扩展这些API以在Android应用程序中使用。获得API后,您可以通过从Web服务函数返回文件的URL来获取SCORM内容。
每个SCO文件(例如scormpackage.zip/index.html)都有自己的APIWrapper。包装器将找到这样的LMS API并使用它连接到LMS后端。
查看adlnet website以了解SCORM包如何使用APIWrapper来跟踪SCORM内容。
答案 2 :(得分:0)
core_course_get_courses
你可以使用这个功能。
答案 3 :(得分:-1)
使用移动moodle。正在添加许多功能,它与您的网站同步工作,有Android,IOS和Windows Mobile版本。
https://docs.moodle.org/31/en/Moodle_Mobile_features
离线工作,但对测验这样的事情有一些限制,只能通过与网站联系进行评分。
无需自己创造新鲜事物。 Moodle Mobile已经播放了SCORM。