Ich verwende den neuen MediaPlayer von Google namens ExoPlayer und finde keine Möglichkeit, den Ton stummzuschalten
Gibt es eine einfache Möglichkeit, Audiospuren im Google ExoPlayer stummzuschalten? Oder die Lautstärke ändern?
Hugo Gresse
Ich verwende den neuen MediaPlayer von Google namens ExoPlayer und finde keine Möglichkeit, den Ton stummzuschalten
Gibt es eine einfache Möglichkeit, Audiospuren im Google ExoPlayer stummzuschalten? Oder die Lautstärke ändern?
Hugo Gresse
Holen Sie sich die aktuelle Lautstärke:
int currentvolume = player.getVolume();
Stumm: player.setVolume(0f);
Stummschaltung aufheben: player.setVolume(currentVolume);
Ich habe zwei Möglichkeiten gefunden, dies durch Bearbeiten zu erreichen DemoPlayer
von ExoPlayer.
Grundsätzlich müssen Sie das bekommen audioTrackRenderer
die ein ExoPlayerComponent
und ihm eine Nachricht senden. So :
Hinzufügen audioRenderer
Mitglied und setzen Sie es ein onRenderers
:
// Complete preparation.
this.videoRenderer = renderers[TYPE_VIDEO];
this.audioRenderer = renderers[TYPE_AUDIO];
Öffentliche Methode hinzufügen:
public void setMute(boolean toMute){
if(toMute){
player.sendMessage(audioRenderer, MediaCodecAudioTrackRenderer.MSG_SET_VOLUME, 0f);
} else {
player.sendMessage(audioRenderer, MediaCodecAudioTrackRenderer.MSG_SET_VOLUME, 1f);
}
}
Verwendung :
stumm : player.setMute(true);
Stummschaltung aufheben: player.setMute(false);
Dies ist keine gute Lösung, da der Player beim Aufheben der Stummschaltung einen erneuten Puffer benötigen muss.
Bestehen darin, die Audiospur in eine leere zu ändern:
// mute
player.selectTrack(FullPlayer.TYPE_AUDIO, ExoPlayer.TRACK_DISABLED);
// Unmute
player.selectTrack(FullPlayer.TYPE_AUDIO, ExoPlayer.TRACK_DEFAULT);
Tolle Lösung! Ich habe die Methode „selectTrack“ verwendet, aber der Videostream wurde jedes Mal zurückgewiesen, wenn ich eine andere Audiospur auswählte.
– Abgeordneter
8. Juli 2015 um 8:15
In ExoPlayer 2.5 können Sie die Titelauswahllösung durchführen. „In ExoPlayer 2.5 wurde diese Umpufferung eliminiert, sodass die Auswahl von Audio- und Textspuren nahtlos erfolgen kann.“ medium.com/google-exoplayer/…
– TalkLittle
7. August 2017 um 23:32 Uhr
Ist es für den ExoPlayer möglich, etwas mit einer Lautstärke abzuspielen, die unabhängig von der Systemlautstärke ist?
– Android-Entwickler
30. Dezember 2018 um 9:08 Uhr
@androiddeveloper Ich bezweifle, dass dies kein erwartetes Verhalten für den Benutzer ist. Wie im Dokument angegeben: Android uses separate audio streams for playing music, alarms, notifications, the incoming call ringer, system sounds, in-call volume, and DTMF tones. This allows users to control the volume of each stream independently.
Plus: Unless your app is an alarm clock, you should play audio using the STREAM_MUSIC stream.
Ref: Developer.android.com/guide/topics/media-apps/…
– Hugo Gresse
2. Januar 2019 um 8:49
@HugoGresse Manchmal ist es wichtig, einen Ton abzuspielen, den der Benutzer hört. Aus diesem Grund wollte ich vermeiden, die globalen Lautstärkepegel zu ändern.
– Android-Entwickler
2. Januar 2019 um 10:30 Uhr
Khoosham
Die neue Möglichkeit, die Lautstärke ab Version 2.XX stummzuschalten und die Stummschaltung aufzuheben, erfolgt wie folgt:
int currentvolume = player.getVolume();
Stellen Sie sicher, dass Sie die obige Zeile aufrufen, nachdem Sie den Player gestartet haben. Andernfalls erhalten Sie eine NullpointerException
Lautstärke stumm schalten:
player.setVolume(0f);
Stummschaltung der Lautstärke aufheben:
player.setVolume(currentVolume);
schön und einfach!
– Panduka DeSilva
20. März 2019 um 0:15
Mit ExoPlayer geht das ganz einfach:
Java-Code:
float currentVolume = player.getVolume();
if (currentVolume == 0f) {
player.setVolume(1f);
} else {
player.setVolume(0f);
}
Kotlin-Code:
val curentVol = player?.volume
if (curentVol == 0f) {
player?.volume = 1f
} else {
player?.volume = 0f
}
Im ExoPlayer 2.xx:
Holen Sie sich die aktuelle Lautstärke:
int currentVolume = player..getAudioComponent().getVolume();
stumm:
player.getAudioComponent().setVolume(0f);
Stummschaltung aufheben:
player.getAudioComponent().setVolume(currentVolume);
Ich würde empfehlen, zuerst die aktuelle Lautstärke einzustellen und sie dann stummzuschalten. Wenn Sie die Stummschaltung aufheben, können Sie dem Benutzer die gleiche Lautstärke zuweisen.
float currentvolume;
currentvolume = player.getVolume();
player.setVolume(0.0f);
thomasb
versuchen
player.setSelectedTrack(DemoPlayer.TYPE_AUDIO, DemoPlayer.TRACK_DISABLED);
analog zu diese Codezeile
Allen Vork
Verwenden Sie einfach player.setVolume(0), um das Video stummzuschalten.
player.volume = 0f
– WSBT
8. April 2019 um 0:49