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
	
	Block a user