use voice call stream to play connect sound

This commit is contained in:
Daniel Gultsch 2024-03-29 06:55:24 +01:00
parent 26dde5370a
commit 283f363088
No known key found for this signature in database
GPG key ID: F43D18AD2A0982C2
2 changed files with 21 additions and 7 deletions

View file

@ -466,7 +466,7 @@ public class AppRTCAudioManager {
final var toneGenerator = final var toneGenerator =
new ToneGenerator( new ToneGenerator(
AudioManager.STREAM_MUSIC, AudioManager.STREAM_MUSIC,
CallIntegration.DEFAULT_VOLUME); CallIntegration.DEFAULT_TONE_VOLUME);
toneGenerator.startTone(ToneGenerator.TONE_CDMA_DIAL_TONE_LITE, 750); toneGenerator.startTone(ToneGenerator.TONE_CDMA_DIAL_TONE_LITE, 750);
}, },
0, 0,

View file

@ -2,6 +2,7 @@ package eu.siacs.conversations.services;
import android.content.Context; import android.content.Context;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.media.AudioAttributes;
import android.media.AudioManager; import android.media.AudioManager;
import android.media.ToneGenerator; import android.media.ToneGenerator;
import android.net.Uri; import android.net.Uri;
@ -35,7 +36,8 @@ import java.util.concurrent.atomic.AtomicBoolean;
public class CallIntegration extends Connection { public class CallIntegration extends Connection {
public static final int DEFAULT_VOLUME = 80; public static final int DEFAULT_TONE_VOLUME = 60;
private static final int DEFAULT_MEDIA_PLAYER_VOLUME = 90;
private final Context context; private final Context context;
@ -338,14 +340,25 @@ public class CallIntegration extends Connection {
} }
private void playConnectedSound() { private void playConnectedSound() {
final var mediaPlayer = MediaPlayer.create(context, R.raw.connected); final var audioAttributes =
mediaPlayer.setVolume(DEFAULT_VOLUME / 100f, DEFAULT_VOLUME / 100f); new AudioAttributes.Builder()
.setLegacyStreamType(AudioManager.STREAM_VOICE_CALL)
.build();
final var mediaPlayer =
MediaPlayer.create(
context,
R.raw.connected,
audioAttributes,
AudioManager.AUDIO_SESSION_ID_GENERATE);
mediaPlayer.setVolume(
DEFAULT_MEDIA_PLAYER_VOLUME / 100f, DEFAULT_MEDIA_PLAYER_VOLUME / 100f);
mediaPlayer.start(); mediaPlayer.start();
} }
public void success() { public void success() {
Log.d(Config.LOGTAG, "CallIntegration.success()"); Log.d(Config.LOGTAG, "CallIntegration.success()");
final var toneGenerator = new ToneGenerator(AudioManager.STREAM_MUSIC, DEFAULT_VOLUME); final var toneGenerator =
new ToneGenerator(AudioManager.STREAM_VOICE_CALL, DEFAULT_TONE_VOLUME);
toneGenerator.startTone(ToneGenerator.TONE_CDMA_CALLDROP_LITE, 375); toneGenerator.startTone(ToneGenerator.TONE_CDMA_CALLDROP_LITE, 375);
this.destroyWithDelay(new DisconnectCause(DisconnectCause.LOCAL, null), 375); this.destroyWithDelay(new DisconnectCause(DisconnectCause.LOCAL, null), 375);
} }
@ -361,7 +374,8 @@ public class CallIntegration extends Connection {
public void error() { public void error() {
Log.d(Config.LOGTAG, "CallIntegration.error()"); Log.d(Config.LOGTAG, "CallIntegration.error()");
final var toneGenerator = new ToneGenerator(AudioManager.STREAM_MUSIC, DEFAULT_VOLUME); final var toneGenerator =
new ToneGenerator(AudioManager.STREAM_VOICE_CALL, DEFAULT_TONE_VOLUME);
toneGenerator.startTone(ToneGenerator.TONE_CDMA_CALLDROP_LITE, 375); toneGenerator.startTone(ToneGenerator.TONE_CDMA_CALLDROP_LITE, 375);
this.destroyWithDelay(new DisconnectCause(DisconnectCause.ERROR, null), 375); this.destroyWithDelay(new DisconnectCause(DisconnectCause.ERROR, null), 375);
} }
@ -379,7 +393,7 @@ public class CallIntegration extends Connection {
public void busy() { public void busy() {
Log.d(Config.LOGTAG, "CallIntegration.busy()"); Log.d(Config.LOGTAG, "CallIntegration.busy()");
final var toneGenerator = new ToneGenerator(AudioManager.STREAM_MUSIC, 80); final var toneGenerator = new ToneGenerator(AudioManager.STREAM_VOICE_CALL, 80);
toneGenerator.startTone(ToneGenerator.TONE_CDMA_NETWORK_BUSY, 2500); toneGenerator.startTone(ToneGenerator.TONE_CDMA_NETWORK_BUSY, 2500);
this.destroyWithDelay(new DisconnectCause(DisconnectCause.BUSY, null), 2500); this.destroyWithDelay(new DisconnectCause(DisconnectCause.BUSY, null), 2500);
} }