Viele Sounds in einer Class/Activity gut unterbringen?

S

Shelly22

Fortgeschrittenes Mitglied
0
Hallo ihr lieben. Ich bin es mal wieder
grin.gif
.

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:
Code:
1 public 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:
Code:
1 spool.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
 
Danke dir für die super schnelle Antwort. So wie ich das lese
kenne ich mich wohl damit nicht so ganz aus.

Kannst du mir genauere beispiele geben? Würde mich freuen.



LG
 
Aaalso, du gibst deinen buttons als id jeweils genau den namen des songs, den sie abspielen sollen.


private final HashMap<Integer, Integer> map = new HashMap<Integer, Integer>;
private final View.OnClickListener callback = new View.OnClickListener(){
public void onClick(View v){
int songId = map.get(v.getId());
spool.play(songId);
}
}


Dann in onCreate:

Class clazz = Class.forName(R$id);
String[] songFileNames = AssetManager.list("songs/");
for(String s: songFileNames){
AssetFileDescriptor fd = AssetManager.open(s);
int songId = spool.load(fd, 10);
int buttonId = (Integer)clazz.getDeclaredField(s).get();
map.put(buttonId, songId);
((Button)findViewById(buttonId)).setOnClickListener(callback);
}



könnte hinhaun, :D
performancemäßig natürlich nicht das nonplusultra ;)
 
Zuletzt bearbeitet:
Daannkeee. Aber da kommt das nächste problem.
AssetManager kenne ich mich mit noch garnicht aus.
Das problem ist ja das ich mit SoundPool ca. 80 SoundFiles machen will.
Und jeder kommt in einen Button..Also 80 Files und 80 Buttons.

LG
 
Das Problem ist, dass du den obigen code nicht verstanden hast. ;)
Ich bin der Meinung, das müsste hinhauen.
15 Zeilen Code für 80 Buttons, toll wa. :p

(hab nochmal was geändert)
 
Zuletzt bearbeitet:
Danke dir. Werde es morgen mal testen.
Das problem ist. Buttons sind es ja. Aber nicht normal.
Sondern die aus den GridView.


LG
 

Ähnliche Themen

D
  • Data2006
Antworten
14
Aufrufe
484
jogimuc
J
OnkelLon
Antworten
13
Aufrufe
1.974
OnkelLon
OnkelLon
A
Antworten
10
Aufrufe
1.017
swa00
swa00
Zurück
Oben Unten