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