197149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova/* 297149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova * Copyright (C) 2015 The Android Open Source Project 397149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova * 497149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova * Licensed under the Apache License, Version 2.0 (the "License"); 597149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova * you may not use this file except in compliance with the License. 697149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova * You may obtain a copy of the License at 797149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova * 897149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova * http://www.apache.org/licenses/LICENSE-2.0 997149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova * 1097149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova * Unless required by applicable law or agreed to in writing, software 1197149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova * distributed under the License is distributed on an "AS IS" BASIS, 1297149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1397149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova * See the License for the specific language governing permissions and 1497149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova * limitations under the License. 1597149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova */ 1697149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova 1797149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimovapackage com.android.deskclock; 1897149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova 1997149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimovaimport android.app.Activity; 2097149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimovaimport android.app.VoiceInteractor; 2197149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova 2297149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova/** 2397149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova * Notifies Voice Interactor about whether the action 2497149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova * was successful. Voice Interactor is called only if 2597149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova * the build version is post-Lollipop. 2697149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova */ 2797149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimovapublic final class Voice { 2897149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova 2997149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova private static Delegate sDelegate = new VoiceInteractorDelegate(); 3097149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova 3197149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova private Voice() { } 3297149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova 3397149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova public static void setDelegate(Delegate delegate) { 3497149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova sDelegate = delegate; 3597149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova } 3697149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova 3797149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova public static void notifySuccess(Activity activity, String message) { 3816981d2c7e2c797ba016550b2f50423d33c86d10James Lemieux if (Utils.isMOrLater()) { 3997149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova sDelegate.notifySuccess(activity.getVoiceInteractor(), message); 4097149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova } 4197149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova } 4297149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova 4397149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova public static void notifyFailure(Activity activity, String message) { 4416981d2c7e2c797ba016550b2f50423d33c86d10James Lemieux if (Utils.isMOrLater()) { 4597149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova sDelegate.notifyFailure(activity.getVoiceInteractor(), message); 4697149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova } 4797149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova } 4897149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova 4997149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova public interface Delegate { 5097149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova void notifySuccess(VoiceInteractor vi, String message); 5197149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova 5297149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova void notifyFailure(VoiceInteractor vi, String message); 5397149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova } 5497149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova 5597149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova private static class VoiceInteractorDelegate implements Delegate { 5697149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova @Override 5797149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova public void notifySuccess(VoiceInteractor vi, String message) { 5897149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova if (vi != null) { 5997149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova final VoiceInteractor.Prompt prompt = new VoiceInteractor.Prompt(message); 6097149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova vi.submitRequest(new VoiceInteractor.CompleteVoiceRequest(prompt, null)); 6197149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova } 6297149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova } 6397149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova 6497149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova @Override 6597149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova public void notifyFailure(VoiceInteractor vi, String message) { 6697149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova if (vi != null) { 6797149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova final VoiceInteractor.Prompt prompt = new VoiceInteractor.Prompt(message); 6897149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova vi.submitRequest(new VoiceInteractor.AbortVoiceRequest(prompt, null)); 6997149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova } 7097149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova } 7197149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova } 7297149ea89a5c0e057f25b89b87eef6224b82a777Daria Evdokimova} 73