Hallo, ich habe eine Klasse die Tts heisst und darin soll eine Audio-Datei abgespielt werden, also so:
Ich habe in der App mehrere Knöpfe. Wenn ich auf einen Knopf drücke, wird das Audio abgespielt, was gut ist. Aber ich möchte nicht, dass während ein Audio abgespielt wird, ein anderer Knopf gedrückt wird. Also gleichzeitige Audios möchte ich vermeiden.
Das Problem ist mir aber bewusst. Ich weiss also, dass jedes Mal, wenn ich auf einen Knopf drücke, MediaPlayer() erneut initialisiert wird. Somit habe ich MediaPlayer() in der Klasse Tts als Eigenschaft und im Konstruktor aufgenommen, also so:
In der Klasse MainActivity habe ich ebenfalls MediaPlayer als Eigenschaft definiert, also so:
Und sobald ein Knopf gedrückt wird, initialisiere ich die Klasse Tts und rufe die Methdode (say()) auf. Also so:
Also somit ist mein Ziel zwar erreicht, dass die Audios nicht gleichzeitig abgespielt werden sollten aber das Problem ist, dass das Audio nun nur 1 Mal abgespielt wird und nicht mehr. D.h. auch wenn es bereits abgespielt wurde und ich im Nachhinein auf einen oder denselben Knopf drücke, wird es nicht mehr abgespielt.
Ich denke ich habe irgendwo ein Problem mit der Logik. Liegt es daran, dass ich MediaPlayer als Eigenschaft in MainActivity habe? Wenn ja, wie wäre es denn korrekt?
Java:
MediaPlayer mediaPlayer = new MediaPlayer();
String myFile = context.getFilesDir() + "/output.mp3";
mediaPlayer.setDataSource(myFile);
mediaPlayer.prepare();
mediaPlayer.start();
Ich habe in der App mehrere Knöpfe. Wenn ich auf einen Knopf drücke, wird das Audio abgespielt, was gut ist. Aber ich möchte nicht, dass während ein Audio abgespielt wird, ein anderer Knopf gedrückt wird. Also gleichzeitige Audios möchte ich vermeiden.
Das Problem ist mir aber bewusst. Ich weiss also, dass jedes Mal, wenn ich auf einen Knopf drücke, MediaPlayer() erneut initialisiert wird. Somit habe ich MediaPlayer() in der Klasse Tts als Eigenschaft und im Konstruktor aufgenommen, also so:
Java:
private final MediaPlayer _mediaPlayer;
public Tts(Context context, MediaPlayer _mediaPlayer) {
this.context = context;
this._mediaPlayer = _mediaPlayer;
}
In der Klasse MainActivity habe ich ebenfalls MediaPlayer als Eigenschaft definiert, also so:
Java:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private final MediaPlayer _mediaPlayer = new MediaPlayer();
Und sobald ein Knopf gedrückt wird, initialisiere ich die Klasse Tts und rufe die Methdode (say()) auf. Also so:
Java:
public void onClick(View view) {
Tts tts = new Tts(this, _mediaPlayer);
tts:say();
Ich denke ich habe irgendwo ein Problem mit der Logik. Liegt es daran, dass ich MediaPlayer als Eigenschaft in MainActivity habe? Wenn ja, wie wäre es denn korrekt?