我对Android和SCORM的问题很少。在这两个方面我都很新,我只花了一个晚上在网上搜索一些答案。
我发现的主题是将SCORM包与LMS同步,但我不需要。我只是想知道如何在Android设备(带有Android 4+ OS的联想平板电脑)上玩(并且只是玩,不需要任何同步或跟踪)SCORM包。如果我尝试创建允许浏览本地SCORM包的应用程序,是否可以使用WebView组件启动SCORM?
我找到了这个教程:
http://support.scorm.com/entries/21826060-RSOfflinePlayer-Developer-Tutorial
有部分:
播放内容和同步结果
我发现了一些有趣的源代码来配置这个WebView组件以播放SCORM内容,但我不确定我是否需要RSOfflinePlayer.jar。
我也听说过,如果设备支持Flash,我将能够使用浏览器启动SCORM - 这是真的吗?
也许你知道一些可以做到这一点的应用程序?或图书馆可以提供帮助吗?
有没有经验的人:
1)Java SCORM API:
会粘贴网址,但我需要更多信誉
2)Celine
任何帮助都会得到满足,不仅是我,还有患有各种疾病的孩子(我们只是学生试图帮助他们)。
答案 0 :(得分:3)
我没有任何Android经验,但我有一些使用SCORM的经验。
要播放SCORM对象,您需要在正确的环境中打开正确的文件,在imsmanifest.xml文件中声明正确的文件,该文件将始终位于zip包的顶层,您必须查看对于这样的事情:
<resources>
<resource identifier="546468" type="webcontent" href="index.htm" adlcp:scormtype="sco">
<file href="index.htm" />
</resource>
</resources>
这意味着您必须在顶层打开index.htm,通常您必须使用adlcp查找第一个资源:scormtype =“sco”(如果您需要更多详细信息,请阅读SCORM规范)。 / p>
当这个页面加载时,它会查找API对象,它必须在父窗口或父框架中,你需要一个虚拟的SCORM API,如:
function ScormAPIClass()
{
this.GetLastError = function (){return 0};
this.GetErrorString = function (param){return ""};
this.GetDiagnostic = function (param){return ""};
this.SetValue = function (element, value){
//you need something else here
return true};
this.GetValue = this.SetValue = function (element){
//you need something else here
return true};
this.Initialize = function (param){return true};;
this.Terminate = function (param){return true};
this.Commit = function (param){return true};;
this.version = "1.0";
}
window.API_1484_11 = new ScormAPIClass();
SCORM对象将假设您的API有效,因此,如果set和get函数不是真的,则可以根据对象逻辑生成错误。 此外,我没有测试代码,只是为了让您了解自己需要的内容。
我希望这对你有所帮助。
答案 1 :(得分:3)
哈维尔几乎是对的。尽管如此,我仍会尝试再解释一下。也许你会从中收集更多信息。
每个SCO基本上都是一个压缩的网页。你必须解压缩并找到imsmanifest.xml,找到那里的初始文件(index.html,player.html,类似这样)。它不会位于资源之下。首先,您必须查看Organizations > Organization > Item > Identifierref
,它会为您提供ID。然后你必须查看Resources > Resource with the above ID > href
值。这是您要查找的文件。
示例(index.html是您需要的文件):
<organizations default="someorg">
<organization identifier="someorg">
<title>Some Title</title>
<item identifier="CourseItem01" identifierref="SCO_Resource_01" isvisible="true">
<title>SCO Title Here</title>
</item>
</organization>
</organizations>
...
...
<resources>
<resource identifier="SCO_Resource_01" type="webcontent" adlcp:scormtype="sco" href="index.html">
<file href="index.html"/>
<file href="SCORM_API_wrapper.js"/>
...
找到它后,只需在WebView中打开它,它就会尝试在父窗口中连接到SCORM API。你必须提供一些虚拟函数来欺骗它,以为它确实连接到LMS并像往常一样继续。否则它将失败或向您发出警报。
答案 2 :(得分:2)
首先,您必须了解Scorm的结构。
您可以看到Scorm包是一个包含几个文件夹的zip文件和一个清单文件。
首先你需要解压缩Scorm的zip包然后你必须解析那个imsmanifest.xml文件并维护两个列表,其中包含与该标题对应的html文件的标题和其他地址。
我已经使用sax2r2解析器来解析该清单文件,并获得了两个包含标题和html文件的其他地址的数组列表。
稍后你只需要填写带有titles数组的IOS列表,当用户点击该列表的任何标题时获取列表的位置并从地址数组列表中检索对应于该标题的html文件的地址
最后你可以在你的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。