0

LTLFTC..

我妈妈给了我一个为她的教会做的项目。这是一首 HTML 赞美诗,包含超过 1300 首歌曲的歌词,她希望将其转换为 Android 应用程序。每首歌都有自己的 .htm 文件,还有一些基本的 CSS。大多数歌曲还有一个 .mid。

我从来没有为Android写过任何东西。据我所知,.htm 在 webview 中应该可以正常工作,但我想让用户按下按钮来播放每首歌曲的关联 .mid 文件。我还想将整个混乱分发为 .apk,以便非技术人员可以很容易地安装它。

我想我可以将 .mid 文件放在 /res/raw 中,我想我需要使用 jetplayer 来实际播放它们。不知道怎么做。

我还想我可以只使用 webview 来显示每个人的歌词。

我对此感到困惑的是:如何从 Android 应用程序调用/命名 1300 多个 html 文件,而无需手动编辑每个文件?如果我将它们包含在 /res/raw 中,它们仍然可以按名称调用(0001.htm、0002.htm 等)吗?这甚至是个好主意吗?

我不介意手动编辑它们,但如果可能的话,我想避免这种情况。

对不起,如果这太笨拙了,感谢您的任何建议。

编辑:让 html、css 和大多数 js 工作。是否可以从我的 html 或 js 中调用 MediaPlayer?在 Windows 下,每个 hymn.html 中都有一个嵌入式播放器和一个指向 .mid 文件的简单链接。嵌入式播放器在 a.js 中定义,如下所示:

// Embed the music player into the webpage.
function embed_music(filename)
{
  var type="mid";
  var width=280;
  var height=44;
  //document.write('<embed src="'+filename+'" if (navigator.appName=="Microsoft Internet Explorer") {  type="application/x-mplayer2" }if 

(navigator.appName=="Netscape") {  type="audio/'+type+'" }pluginspage="http://www.microsoft.com/Windows/MediaPlayer/" width="144" height="44" 

autostart="true" loop="true" border="1">')
  if(filename=="none")
    document.write("<table cellpadding=0 cellspacing=0 style=\"width:"+width+"px;height:"+height+"px;border:1px solid #dddddd;\"><tr><td 

style=text-align:center;vertical-align:middle;font-size:80%;>The music file for this hymn is unavailable! Sorry!</td></tr></table>")
  else
    document.write('<embed src="'+filename+'" type=audio/'+type+' autostart=false loop=false width='+width+' height='+height+'>')
}

在单个 hymn html 文件中是这样的:

<script>embed_music("../../midi/e0011.mid")</script>

理想情况下,我可以只更改 a.js 并将每个单独的 .html 单独放置,但如果我需要全部编辑它们,我会的。

再次感谢!

4

1 回答 1

1

文件夹中的 Html 和 css 文件可能assets比原始文件更好。这样,它们将在包装前被压缩。放入的文件raw不会被压缩。

assets你可以很简单地列出内容——

AssetManager am = getAssets();
String[] assetList = am.list( "" );
for( String asset : assetList ) {
    if( asset.endsWith( ".htm" ) ) {
        // do something with the html file
    }
}

此外,AndroidMediaPlayer支持 MIDI 播放:

MediaPlayer mp = new MediaPlayer();
File f = new File( ... path to midi ... );
FileInputStream fis = new FileInputStream(f);
FileDescriptor fd = fis.getFD();
mp.setDataSource( fd );
mp.prepare();
mp.start();
于 2013-03-14T02:45:22.780 回答