2013-03-14 23 views
0

LTLFTC ..將帶有.mid音頻樣本的大型HTML讚美詩移植到Android

我的母親給了我一個爲她的教會做的項目。這是一個擁有超過1300首歌曲歌詞的HTML讚美詩,她希望將其轉換爲Android應用。每首歌都有自己的.htm,並有一些基本的CSS。大多數歌曲也有一個.mid。

我從未爲Android寫過任何東西。據我所知,.htm應該在webview中正常工作,但我想讓用戶按下一個按鈕來播放每首歌曲的關聯.mid文件。我也想分發整個爛攤子作爲一個.apk,所以非技術人員可以很容易地安裝它。

我想我可以把.mid文件放在/ res/raw中,我想我需要使用jetplayer來實際播放它們。不知道如何。

我也想我可以使用webview來顯示每個人的歌詞。

我迷迷糊糊的是:如何從Android應用程序調用/命名1300+ html文件,而無需手動編輯每個文件?如果我將它們包含在/ res/raw中,它們是否仍可以通過名稱(0001.htm,0002.htm等)進行調用,這是一個好主意嗎?

我不介意手工編輯它們,但如果可能的話,我想盡量避免。

對不起,如果這是太nooby,並感謝您的任何建議。

編輯:得到了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+'>') 
} 

和個人讚歌HTML文件裏面有這樣的東西:

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

理想我可以只改變a.js並單獨留下每個人.html,但如果我需要編輯它們,我會。

再次感謝!

回答

1

assets文件夾中的Html和css文件可能比raw更好。這樣,它們將在包裝之前被壓縮。放置在raw中的文件將不會被壓縮。

可以列出的assets內容很簡單 -

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

另外,Android的MediaPlayer支持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();