2013-03-14 3 views
0
.mid

LTLFTC ..grand HTML hymnal Portage avec des échantillons audio à Android

Ma mère m'a donné un projet à faire pour son église. C'est un hymnal HTML avec plus de 1300 chansons valant des paroles, et elle aimerait qu'il soit converti en une application Android. Chaque chanson a son propre .htm et il y a quelques css de base. Il y a aussi un .mid pour la plupart des chansons.

Je n'ai jamais rien écrit pour Android. Pour autant que je sache, le .htm devrait fonctionner correctement dans le webview, mais je veux permettre à l'utilisateur d'appuyer sur un bouton pour lire le fichier .mid associé à chaque chanson. Je veux aussi distribuer tout le désordre comme un .apk afin que les non-techniciens puissent l'installer facilement. Je pense que je peux mettre les fichiers .mid dans/res/raw, et je suppose que je devrais utiliser jetplayer pour les lire. Je ne sais pas comment.

Je pense aussi que je peux juste utiliser webview pour montrer les paroles de chacun. Qu'est-ce que je suis brumeux sur est la suivante: Comment puis-je appeler/nommer les fichiers 1300+ html d'une application Android sans avoir à modifier manuellement chacun d'eux? Si je les inclut dans/res/raw, peut-on encore les appeler par leur nom (0001.htm, 0002.htm, etc.) et est-ce une bonne idée? Je ne m'occupe pas de les modifier tous à la main, mais j'aimerais éviter cela si possible.

Désolés si c'est trop nooby, et merci pour tout conseil.

edit: J'ai obtenu le html, le css, et la plupart des js. Est-il possible d'appeler MediaPlayer depuis mon HTML ou js? Sous Windows, il y a à la fois un lecteur intégré et un simple lien vers le fichier .mid dans chaque hymn.html. Le lecteur intégré est défini dans a.js, et ressemble à ceci:

// 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+'>') 
} 

Et dans les fichiers html individuels hymne sont des choses comme ceci:

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

Idéalement je serais capable de tout changement a.js et laissez chaque fichier .html seul, mais si je dois les éditer tous, je le ferai.

Merci encore!

Répondre

1

Les fichiers html et css peuvent être meilleurs dans le dossier assets que dans le brut. De cette façon, ils vont être compressés avant l'emballage. Les fichiers placés dans raw ne seront pas compressés.

Vous pouvez lister le contenu de assets très simplement -

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

En outre, MediaPlayer de Android prend en charge la lecture 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(); 
Questions connexes