Loading the player...
X

Anmelden

Passwort vergessen?

... oder mit Facebook anmelden:

Du hast noch keinen Zugang zu AndroidPIT? Registrieren
Android Forum » Android Developer Forum » Android Entwickler Forum » Viele Sounds in einer Class/Activity gut unterbringen?

Viele Sounds in einer Class/Activity gut unterbringen?

Viele Sounds in einer Class/Activity gut unterbringen?
verfasst am 11.07.2012 21:30:18
Hallo ihr lieben. Ich bin es mal wieder :grin:.

SoundPool soll da das beste sein für kurze Sounds für Games oder sonstiges die unter 1MB sind.

Jetzt wollte ich gerne ca. 80 kleine Sounds verwenden für meine App.
Wie kann ich sie gut unterbringen? Weil 80 Sounds einzeln in der Activity/Class reinschreiben ist ja sehr unübersichtlich.

So sieht das ganze erstmal aus:
1public class Test extends Activity {
2
3 private SoundPool spool;
4 private int soundID;
5
6 @Override
7 public void onCreate(Bundle savedInstanceState) {
8 super.onCreate(savedInstanceState);
9 setContentView(R.layout.test);
10
11 this.setVolumeControlStream(AudioManager.STREAM_MUSIC);
12 spool = new SoundPool(80, AudioManager.STREAM_MUSIC, 0);
13 soundID = spool.load(this, R.raw.test, 1);
14 }
15}
Dann später in der Button Methode:
1spool.play(soundID, 10, 10, 1, 0, 1f);
So spielt er ja schonmal den Sound ab.

Aber nun will ich nicht 80 Buttons mit 80 SoundPool Variablen extra erstellen.

Wie kann ich das sauber hier erstellen und unterbringen ohne das ich die übersicht verliere und von jeden 80 sachen sind.


LG
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Gelöschter Account
RE: Viele Sounds in einer Class/Activity gut unterbringen?
verfasst am 11.07.2012 23:54:45
Der AssetManager besitzt eine Methode mit dem Namen list() um innerhalb eines angegebenen Pfades alle Ressourcen ausgeben zu können. Die würdest Du in einer Schleife durchwandern und laden.

-----
Meine Apps: Tankbuch Mobil Pro | GaCoMo for Garmin Connect | Streaming Repeater | Ultraviewer

Antworten mit Zitat Antworten Link +1     (1 Stimme)
RE: Viele Sounds in einer Class/Activity gut unterbringen?
verfasst am 11.07.2012 23:58:17
Ufff das sagt mir ja mal wieder nichts. Wieder was neues zum lernen *grins*

Kannst du mir ein weiteren Tipp geben? Mehr aber auch nicht. Muss ja mal bisschen selber lernen.:*)



LG
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
RE: Viele Sounds in einer Class/Activity gut unterbringen?
verfasst am 12.07.2012 09:53:04
Wenn du von vornherein alle Sounds laden willst, kannst du einfach eine Schleife über deine Sounds machen. Üblicherweise lädt man den Sound allerdings erst, wenn er zum ersten mal benutzt wird.

[code]
int []soundID = new int[NUM_SOUNDS];
for (int i = 0; i < NUM_SOUNDS; i++)
soundID[i] = spool.load(this, R.raw.sounds + i, 1);
[/code]

Zum Abspielen eines Sounds beim Klick auf einen Button kannst du dann einfach den entsprechenden Sound spielen.

1spool.play(soundID[SOUND_ID_FOR_THIS_BUTTON], 1, 1, 1, 0, 1f);

Edit: Warum funktioniert das mit dem code nicht?
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Gelöschter Account
RE: Viele Sounds in einer Class/Activity gut unterbringen?
verfasst am 12.07.2012 13:28:46 — geändert am 12.07.2012 13:29:02
Kannst du mir ein weiteren Tipp geben? Mehr aber auch nicht. Muss ja mal bisschen selber lernen.

Das blöde ist - es sind nur drei Zeilen, oder so.

Also den Vorschlag mit einem Zähler finde ich nicht so gut da Du jedesmal an der Stelle eingreifen musst sobald ein Sound hinzugefügt wird. Das würde der AssetManager.list() besser lösen. Allerdings weiß ich nicht wie Du mit den Sounds in Deiner App umgehen wirst. Wenn die IDs der Sounds sowieso fest mit einem bestimmten Button o.ä. verdrahtet sind dann kannst Du es wie vom Vor-Poster geschrieben machen.

Der Vollständigkeit halber. Da ich nicht weiß was Du damit machen willst steht an einer Stelle ??? statt eine konkrete Nutzung:

1String[] filenames = getAssets().list("deinunterordnerinassets");
2if (filenames != null) {
3 for (String filename : filenames) {
4 ??? = soundPool.load(filename, 1);
5 }
6}

-----
Meine Apps: Tankbuch Mobil Pro | GaCoMo for Garmin Connect | Streaming Repeater | Ultraviewer

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
RE: Viele Sounds in einer Class/Activity gut unterbringen?
verfasst am 12.07.2012 16:05:52 — geändert am 12.07.2012 16:10:18
Naja ok ok ich sags mal noch genauer.

GridView Buttons und jeder bekommt einen anderen Sound.
Da die Button Automatisch da sind oder im GridView drin so muss ich keine Button Methode mehr setzen.

Sondern so sieht es dann aus mit der "if" sache.

1GridView gridview = (GridView) findViewById(R.id.gridview);
2 gridview.setAdapter(newT est(this));
3
4 gridview.setOnItemClickListener(new OnItemClickListener() {
5 public void onItemClick(AdapterView<?> parent, View v,
6 int position, long id) {
7
8 if (position == 0) {
9 spool.play(soundID, 10, 10, 1, 0, 1f);
10 } else if (position == 1) {
11 spool.play(soundID1, 10, 10, 1, 0, 1f);
12 }
13 }
14 });

Die position ist da wo ich klicke. Oder wie auch immer ich das erklären soll.
Klicke ich ersten Button der den wert null hat dann spielt er den sound usw.

LG
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
RE: Viele Sounds in einer Class/Activity gut unterbringen?
verfasst am 13.07.2012 14:33:11
Was noch hinzukommt ist das er ja erst 80 Sounds vorlädt und das dauert.

Da hängt sogar mein Samsung S3.



LG
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Gelöschter Account
RE: Viele Sounds in einer Class/Activity gut unterbringen?
verfasst am 13.07.2012 15:13:27
So etwas zeitintensives gehört in einen Thread.

-----
Meine Apps: Tankbuch Mobil Pro | GaCoMo for Garmin Connect | Streaming Repeater | Ultraviewer

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
RE: Viele Sounds in einer Class/Activity gut unterbringen?
verfasst am 13.07.2012 15:15:59 — geändert am 13.07.2012 15:16:15
Sorry mein Meister :bashful:

Aber wäre gut wenn mir einer sagen könnte wie ich das ändern kann das es nicht mehr so lange dauert zu laden die Activity mit den Sounds.


<3 Oder ist das normal?

LG
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
RE: Viele Sounds in einer Class/Activity gut unterbringen?
verfasst am 13.07.2012 15:21:00
Michele
Aber wäre gut wenn mir einer sagen könnte wie ich das ändern kann das es nicht mehr so lange dauert zu laden die Activity mit den Sounds.

Lustig, dass du die Frage direkt unter dem Beitrag stellst, in dem sie beantwortet wurde...

Ich würde aber auch grundsätzlich bezweifeln, dass es nötig ist, alle Sounds vorzuladen. Als Reaktion auf einen Button Click reicht es locker, den Sound in dem Moment zu laden, wo er abgespielt werden soll.
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
RE: Viele Sounds in einer Class/Activity gut unterbringen?
verfasst am 13.07.2012 15:38:58
Ja habe es wohl falsch verstanden von Harald.

Das habe ich ja schon versucht. Aber geht irgendwie nicht mit SoundPool.
Bin schon ewig am machen und tun da.


LG
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
RE: Viele Sounds in einer Class/Activity gut unterbringen?
verfasst am 13.07.2012 15:45:04
Klar geht das mit SoundPool. Du musst halt nur darauf achten, dass ein Sound fertig geladen ist, bevor du versuchst, ihn abzuspielen. Also am besten den Listener benutzen.

Siehe auch: http://www.androidpit.de/de/android/forum/thread/468942/Sound-Wiedergabe-beim-onCreate-einer-Activity#p1124072
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Gelöschter Account
RE: Viele Sounds in einer Class/Activity gut unterbringen?
verfasst am 13.07.2012 15:47:49
Zwei Probleme werden hier in einem Thread behandelt - fällt mir immer häufiger auf.

* Laden der Sounds, Device hängt dabei, ...

* Abspielen der Sounds


Zum ersten Punkt - nimm einen Thread, AsyncTask, was auch immer. Anleitungen dazu findest Du im Web in Massen.

-----
Meine Apps: Tankbuch Mobil Pro | GaCoMo for Garmin Connect | Streaming Repeater | Ultraviewer

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
RE: Viele Sounds in einer Class/Activity gut unterbringen?
verfasst am 15.07.2012 01:45:05
Lalalalala fehler behoben mit dem hängen.

Es hat so lange gedauert mit dem laden, weil [OMX.SEC.MP3.Decoder] err = -1011 <<<

Einige kleine Sounds sind .mp3 und andere .wav

So die .mp3 umgewandelt in .wav und schon erledigt.


LG
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)