2011-01-12 9 views
0

Ich arbeite gerade an einer einfachen Android App, und im Moment versuche ich es zu laden und Sounds zu spielen. Das Problem, mit dem ich konfrontiert bin, ist, dass ich möchte, dass der verwendete Sound auf einer Zeichenkette basiert (mit demselben Namen wie die Audiodatei). Der Grund dafür ist die Einfachheit sowohl im Code als auch im Hinzufügen.Android Sound wird geladen und wiedergegeben basierend auf String

Jetzt kann ich leider nicht einfach eine Saite schlagen, anstatt auf den tatsächlichen Sound zu verweisen, aber gibt es eine Möglichkeit für mich, eine Saite mit dem gesamten rohen Ordner zu vergleichen, um den passenden Sound zu finden, oder eine andere Alternative jeden Ton manuell definieren?

Vielen Dank für Ihre Zeit.

+0

Am Telefon kann es so nicht graben, aber die context.getresources sehen() Methode, die ich dort sicher bin, ist ein Verfahren, auf das, das tut, was Sie suchen. Erstellen Sie einen String wie "R.raw.filename" und es wird zurückgegeben. – Emile

Antwort

1

This page erläutert, wie getresources().getidentifier() zu verwenden ist.

+0

Das sieht genau so aus, wie ich es brauchte. Danke für den Link Emile und danke allen anderen für deine Zeit. – Chance

+0

Stellen Sie sicher, dass Sie das getIdentifier-Ergebnis zwischenspeichern, da ich glaube, dass es sehr leistungsintensiv ist. – Emile

0

Warum müssen Sie dies tun? Wenn sich die Dateien bereits in der Raw-Datei befinden und Sie einfach den starken Namen der Datei angeben möchten, dauert es wahrscheinlich länger, bis Sie die Datei referenziert haben, da die Referenz nur lauten würde:

R.raw.file_name

statt:

datei_name

Das ist nicht viel mehr schreiben, vor allem, wenn seine eine einfache Anwendung.

+0

Die App ist so etwas wie ein Resonanzboden. Der Grund, warum ich es so machen möchte, wie ich es erwähnt habe, ist, dass viele Sounds involviert sein werden, und anstatt viele viele Zeilen zu tippen, um alle zu laden, möchte ich einfach den relevanten Sound basierend auf einer Saite laden existiert bereits von einem anderen Teil der App. – Chance

+0

Wenn das, was Ihr versucht zu tun, dann schauen, um Soundpools: http://developer.android.com/reference/android/media/SoundPool.html es ist eine gute Möglichkeit, verschiedene Sound-Dateien zu verwalten. Aber irgendwann müssen Sie irgendwann auf die Datei zeigen. Es gibt keinen Weg, den ich kenne, um den gesamten rohen Ordner zu referenzieren, dann benutze einfach den Dateinamen als Referenz, aber das Zeigen auf die tatsächliche Datei ist nicht zu viel mehr tippen. – Stevy888

0

Verwenden Sie das Reflection-Paket, um zu überprüfen, ob die Datei vorhanden ist.

Schnipsel

try { 
     Class res = R.raw.class; 
     Field field = res.getField(<yourmediafile>); 
     //If the code reach here, that means media file exists. 
    } catch (Exception e) { 
     //No media file with that name 
    } 
Verwandte Themen