Merge "Fix bug 2594126 Do not crash when ViewRoot is trying to play a UI sound. This CL doesn't fix why mView can be null in the first place, but prevents a crash when mView is null and a UI sound is to be played." into froyo
This commit is contained in:
committed by
Android (Google) Code Review
commit
b5fa4dff0c
@ -2580,27 +2580,33 @@ public final class ViewRoot extends Handler implements ViewParent,
|
||||
public void playSoundEffect(int effectId) {
|
||||
checkThread();
|
||||
|
||||
final AudioManager audioManager = getAudioManager();
|
||||
try {
|
||||
final AudioManager audioManager = getAudioManager();
|
||||
|
||||
switch (effectId) {
|
||||
case SoundEffectConstants.CLICK:
|
||||
audioManager.playSoundEffect(AudioManager.FX_KEY_CLICK);
|
||||
return;
|
||||
case SoundEffectConstants.NAVIGATION_DOWN:
|
||||
audioManager.playSoundEffect(AudioManager.FX_FOCUS_NAVIGATION_DOWN);
|
||||
return;
|
||||
case SoundEffectConstants.NAVIGATION_LEFT:
|
||||
audioManager.playSoundEffect(AudioManager.FX_FOCUS_NAVIGATION_LEFT);
|
||||
return;
|
||||
case SoundEffectConstants.NAVIGATION_RIGHT:
|
||||
audioManager.playSoundEffect(AudioManager.FX_FOCUS_NAVIGATION_RIGHT);
|
||||
return;
|
||||
case SoundEffectConstants.NAVIGATION_UP:
|
||||
audioManager.playSoundEffect(AudioManager.FX_FOCUS_NAVIGATION_UP);
|
||||
return;
|
||||
default:
|
||||
throw new IllegalArgumentException("unknown effect id " + effectId +
|
||||
" not defined in " + SoundEffectConstants.class.getCanonicalName());
|
||||
switch (effectId) {
|
||||
case SoundEffectConstants.CLICK:
|
||||
audioManager.playSoundEffect(AudioManager.FX_KEY_CLICK);
|
||||
return;
|
||||
case SoundEffectConstants.NAVIGATION_DOWN:
|
||||
audioManager.playSoundEffect(AudioManager.FX_FOCUS_NAVIGATION_DOWN);
|
||||
return;
|
||||
case SoundEffectConstants.NAVIGATION_LEFT:
|
||||
audioManager.playSoundEffect(AudioManager.FX_FOCUS_NAVIGATION_LEFT);
|
||||
return;
|
||||
case SoundEffectConstants.NAVIGATION_RIGHT:
|
||||
audioManager.playSoundEffect(AudioManager.FX_FOCUS_NAVIGATION_RIGHT);
|
||||
return;
|
||||
case SoundEffectConstants.NAVIGATION_UP:
|
||||
audioManager.playSoundEffect(AudioManager.FX_FOCUS_NAVIGATION_UP);
|
||||
return;
|
||||
default:
|
||||
throw new IllegalArgumentException("unknown effect id " + effectId +
|
||||
" not defined in " + SoundEffectConstants.class.getCanonicalName());
|
||||
}
|
||||
} catch (IllegalStateException e) {
|
||||
// Exception thrown by getAudioManager() when mView is null
|
||||
Log.e(TAG, "FATAL EXCEPTION when attempting to play sound effect: " + e);
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user