diff --git a/MyTracks/src/com/google/android/apps/mytracks/services/FroyoStatusAnnouncerTask.java b/MyTracks/src/com/google/android/apps/mytracks/services/FroyoStatusAnnouncerTask.java index d07aaf7aa..036108e15 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/services/FroyoStatusAnnouncerTask.java +++ b/MyTracks/src/com/google/android/apps/mytracks/services/FroyoStatusAnnouncerTask.java @@ -38,12 +38,17 @@ public class FroyoStatusAnnouncerTask implements OnUtteranceCompletedListener, OnAudioFocusChangeListener { private AudioManager audioManager; + private final static HashMap SPEACH_PARAMS = new HashMap(); + static { + SPEACH_PARAMS.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "not_used"); + } public FroyoStatusAnnouncerTask(Context context) { super(context); audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); } + @Override protected void onTtsInit(int status) { super.onTtsInit(status); if (status == TextToSpeech.SUCCESS) { @@ -51,14 +56,16 @@ public class FroyoStatusAnnouncerTask } } + @Override protected void speakAnnouncment(String announcement) { - audioManager.requestAudioFocus(this, + int result = audioManager.requestAudioFocus(this, TextToSpeech.Engine.DEFAULT_STREAM, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK); + if (result == AudioManager.AUDIOFOCUS_REQUEST_FAILED) { + Log.w(TAG, "FroyoStatusAnnouncerTask: Request audio focus failed."); + } // We don't care about the id. // It is supplied here to force onUtteranceCompleted to be called. - HashMap params = new HashMap(); - params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "not_used"); - tts.speak(announcement, TextToSpeech.QUEUE_FLUSH, params); + tts.speak(announcement, TextToSpeech.QUEUE_FLUSH, SPEACH_PARAMS); } @Override diff --git a/MyTracks/src/com/google/android/apps/mytracks/services/StatusAnnouncerFactory.java b/MyTracks/src/com/google/android/apps/mytracks/services/StatusAnnouncerFactory.java index 7927d636b..01216a164 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/services/StatusAnnouncerFactory.java +++ b/MyTracks/src/com/google/android/apps/mytracks/services/StatusAnnouncerFactory.java @@ -41,7 +41,7 @@ public class StatusAnnouncerFactory { */ public PeriodicTask create(Context context) { if (hasTts) { - if (ApiFeatures.getInstance().supportsAudioFocus()) { + if (ApiFeatures.getInstance().isAudioFocusSupported()) { return new FroyoStatusAnnouncerTask(context); } else { return new StatusAnnouncerTask(context); diff --git a/MyTracks/src/com/google/android/apps/mytracks/util/ApiFeatures.java b/MyTracks/src/com/google/android/apps/mytracks/util/ApiFeatures.java index 55d516566..cb89e5cb7 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/util/ApiFeatures.java +++ b/MyTracks/src/com/google/android/apps/mytracks/util/ApiFeatures.java @@ -107,7 +107,7 @@ public class ApiFeatures { return getApiLevel() >= 9; } - public boolean supportsAudioFocus() { + public boolean isAudioFocusSupported() { return getApiLevel() >= 8; }