fixed weird ToneGenerator crash. fixes #3712
obviously tones won’t work then anymore
This commit is contained in:
parent
4d3d3a7038
commit
46579550e4
|
@ -21,7 +21,14 @@ class ToneManager {
|
||||||
private ScheduledFuture<?> currentTone;
|
private ScheduledFuture<?> currentTone;
|
||||||
|
|
||||||
ToneManager() {
|
ToneManager() {
|
||||||
this.toneGenerator = new ToneGenerator(AudioManager.STREAM_MUSIC, 35);
|
ToneGenerator toneGenerator;
|
||||||
|
try {
|
||||||
|
toneGenerator = new ToneGenerator(AudioManager.STREAM_MUSIC, 35);
|
||||||
|
} catch (final RuntimeException e) {
|
||||||
|
Log.e(Config.LOGTAG, "unable to instantiate ToneGenerator", e);
|
||||||
|
toneGenerator = null;
|
||||||
|
}
|
||||||
|
this.toneGenerator = toneGenerator;
|
||||||
}
|
}
|
||||||
|
|
||||||
void transition(final RtpEndUserState state) {
|
void transition(final RtpEndUserState state) {
|
||||||
|
@ -86,25 +93,25 @@ class ToneManager {
|
||||||
|
|
||||||
private void scheduleConnected() {
|
private void scheduleConnected() {
|
||||||
this.currentTone = JingleConnectionManager.SCHEDULED_EXECUTOR_SERVICE.schedule(() -> {
|
this.currentTone = JingleConnectionManager.SCHEDULED_EXECUTOR_SERVICE.schedule(() -> {
|
||||||
this.toneGenerator.startTone(ToneGenerator.TONE_PROP_PROMPT, 200);
|
startTone(ToneGenerator.TONE_PROP_PROMPT, 200);
|
||||||
}, 0, TimeUnit.SECONDS);
|
}, 0, TimeUnit.SECONDS);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void scheduleEnding() {
|
private void scheduleEnding() {
|
||||||
this.currentTone = JingleConnectionManager.SCHEDULED_EXECUTOR_SERVICE.schedule(() -> {
|
this.currentTone = JingleConnectionManager.SCHEDULED_EXECUTOR_SERVICE.schedule(() -> {
|
||||||
this.toneGenerator.startTone(ToneGenerator.TONE_CDMA_CALLDROP_LITE, 375);
|
startTone(ToneGenerator.TONE_CDMA_CALLDROP_LITE, 375);
|
||||||
}, 0, TimeUnit.SECONDS);
|
}, 0, TimeUnit.SECONDS);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void scheduleBusy() {
|
private void scheduleBusy() {
|
||||||
this.currentTone = JingleConnectionManager.SCHEDULED_EXECUTOR_SERVICE.schedule(() -> {
|
this.currentTone = JingleConnectionManager.SCHEDULED_EXECUTOR_SERVICE.schedule(() -> {
|
||||||
this.toneGenerator.startTone(ToneGenerator.TONE_CDMA_NETWORK_BUSY, 2500);
|
startTone(ToneGenerator.TONE_CDMA_NETWORK_BUSY, 2500);
|
||||||
}, 0, TimeUnit.SECONDS);
|
}, 0, TimeUnit.SECONDS);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void scheduleWaitingTone() {
|
private void scheduleWaitingTone() {
|
||||||
this.currentTone = JingleConnectionManager.SCHEDULED_EXECUTOR_SERVICE.scheduleAtFixedRate(() -> {
|
this.currentTone = JingleConnectionManager.SCHEDULED_EXECUTOR_SERVICE.scheduleAtFixedRate(() -> {
|
||||||
this.toneGenerator.startTone(ToneGenerator.TONE_CDMA_DIAL_TONE_LITE, 750);
|
startTone(ToneGenerator.TONE_CDMA_DIAL_TONE_LITE, 750);
|
||||||
}, 0, 3, TimeUnit.SECONDS);
|
}, 0, 3, TimeUnit.SECONDS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -112,8 +119,18 @@ class ToneManager {
|
||||||
if (currentTone != null) {
|
if (currentTone != null) {
|
||||||
currentTone.cancel(true);
|
currentTone.cancel(true);
|
||||||
}
|
}
|
||||||
|
if (toneGenerator != null) {
|
||||||
toneGenerator.stopTone();
|
toneGenerator.stopTone();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void startTone(final int toneType, final int durationMs) {
|
||||||
|
if (toneGenerator != null) {
|
||||||
|
this.toneGenerator.startTone(toneType, durationMs);
|
||||||
|
} else {
|
||||||
|
Log.e(Config.LOGTAG, "failed to start tone. ToneGenerator doesn't exist");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private enum ToneState {
|
private enum ToneState {
|
||||||
NULL, RINGING, CONNECTED, BUSY, ENDING_CALL
|
NULL, RINGING, CONNECTED, BUSY, ENDING_CALL
|
||||||
|
|
Loading…
Reference in New Issue