SoundPool/MediaPlayer

CrazyC

CrazyC

Ambitioniertes Mitglied
2
Was muss man bei der Verwendung von SoundPool beachten?
Ich fange gerade mit Java und der Android API an.
Mit dem MediaPlayer benötige ich nur zwei bis drei Programmzeilen, um eine mp3-Datei abzuspielen, mit dem SoundPool wird aber leider nichts abgespielt...

Arbeite komplett auf dem Android Smartphone mit der Java for Android N-IDE aus dem Play Store.
Habe Android KitKat 4.4.4 (API-Level 19).
 
Hallo Crazy,

der API-Mediaplayer ist auch nur rudimentär genau so ,wie der Soundpool (API1)

Mit dem MediaPlayer benötige ich nur zwei bis drei Programmzeilen, um eine mp3-Datei abzuspielen, mit dem SoundPool wird aber leider nichts abgespielt...

Das ist auch hier nicht ganz "sauber" - auch beim Mediaplayer sollte man Async arbeiten , resp auf Listener
reagieren.


Eine sehr ordentliche Lösung ist Exoplayer
ExoPlayer | Android Developers
 
Zuletzt bearbeitet:
Wenn SoundPool schon bei API-Level 1 zur Verfügung steht, wundere ich mich,
dass es bei mir (API-Level 19) nicht funktioniert, vielleicht habe ich einen
Fehler gemacht oder etwas vergessen?


Habe eine Methode in meiner MainActivity.class, die folgendes beinhaltet
und in der onCreate-Methode aufgerufen wird:

import android.media.AudioManager;
import android.media.SoundPool.OnLoadCompleteListener;
import android.media.SoundPool;

public SoundPool SouPoo=null;
public int SouPooSouPol=0;
public int SouStrSouPol=0;
public float SouVolLef=1;
public float SouVolRig=1;
public int SouPri=1;
public int SouLoo=-1;
public float SouFre=1;
public boolean SouLoa=false;
public AudioManager AudMan=null;

// Ist folgende Zeile überhaupt nötig oder fehlerhaft?
AudMan=(AudioManager)getSystemService(AUDIO_SERVICE);

// SoundPool (SoundPool<>null, also kein Fehler)
SouPoo=new SoundPool(8,AudioManager.STREAM_MUSIC,0);

SouPoo.setOnLoadCompleteListener(new OnLoadCompleteListener()
{
@override
public void onLoadComplete(SoundPool SouPoo,int SouPooSouPol,int Sta)
{
SouLoa=true;
}
});

// SoundPool.load (SoundID<>0, also kein Fehler)
SouPooSouPol=SouPoo.load(this,R.raw.testsound,1);
// oder:
// SouPooSouPol=SouPoo.load("/storage/emulated/0/testsound.mp3",1);

if (SouLoa)
{
// SoundPool.play (gibt keinen Sound aus, StreamID=0, Fehler)
SouStrSouPol=SouPoo.play(SouPooSouPol,SouVolLef,SouVolRig,SouPri,SouLoo,SouFre);

}

Fange gerade erst mit Java und der Android API an...
 
Wie kann man den ExoPlayer denn in die eigene APK mit hineinnehmen?
Ich weiß nur wie das in C auf Windows ist, man lädt sich die static link library herunter und linkt sid mit ans executable oder man lädt sich die shared library herunter und erzeugt dafür eine import library.
Wie fügt man libraries bei Android App-Entwicklung mit java zu seinem Programm hinzu?
 
Hallo Crazy,

die Einbindung einer Library erfolgt grundsätzlich über gradle .

Das ist in der API - Dokumentation sehr gut beschrieben.
ExoPlayer - Developer guide

Falls du das noch nicht gemacht haben solltest , so möchte ich Dir an dieser Stelle anraten , sich
ein wenig mit den Basics der Android Programmierung auseinander zu setzen
 
Zuletzt bearbeitet:
Nochmal zum Thema Audio:

Habe SoundPool und MediaPlayer zum Laufen gebracht.
SoundPool spielt bei mir Dateien unterschirdlicher Größe ab, decodiert aber allerdings nur die ersten 5 Sekunden.
Das Looping replay ist allerdings sehr gut (absolut gapless)!

Der MediaPlayer spielt auch sehr lange Dateien ab,
aber im Looping NICHT gapless...
Ich kombiniere also SoundPool (für kurze looping sounds) und MediaPlayer (für mehrere längere Sounds oder Musik gleichzeitig) miteinander,
das klappt schon ganz gut.

Für eine Frames-Animation habe ich sowohl einen eigenen View als auch einen SurfaceView erstellt, das View-Update ist aber bei beiden View-Typen zu langsam. Es sind Beispiele aus dem Internet und erreichen nur eine Frame-Rate von höchstens 20 Bildern pro Sekunde, wie kommt das?
 
Hallo Crazy,

ich kann leider nur meinen Vorschlag von oben wiederholen.
 

Ähnliche Themen

B
Antworten
4
Aufrufe
1.081
BraveSentry
B
B
Antworten
4
Aufrufe
1.100
markus.tullius
markus.tullius
Zurück
Oben Unten