• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2019 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package android.apppredictionservice.cts;
17 
18 import android.app.prediction.AppPredictionContext;
19 import android.app.prediction.AppPredictionSessionId;
20 import android.app.prediction.AppTarget;
21 import android.app.prediction.AppTargetEvent;
22 import android.app.prediction.AppTargetId;
23 import android.os.Bundle;
24 import android.os.CancellationSignal;
25 import android.service.appprediction.AppPredictionService;
26 
27 import java.util.List;
28 import java.util.function.Consumer;
29 
30 public class PredictionService extends AppPredictionService {
31 
32     private static final String TAG = PredictionService.class.getSimpleName();
33 
34     public static final String MY_PACKAGE = "android.apppredictionservice.cts";
35     public static final String SERVICE_NAME = MY_PACKAGE + "/."
36             + PredictionService.class.getSimpleName();
37 
38     public static final String EXTRA_REPORTER = "extra_reporter";
39 
40     private ServiceReporter mReporter;
41 
42     @Override
onCreatePredictionSession(AppPredictionContext context, AppPredictionSessionId sessionId)43     public void onCreatePredictionSession(AppPredictionContext context,
44             AppPredictionSessionId sessionId) {
45         mReporter = (ServiceReporter) context.getExtras().getBinder(EXTRA_REPORTER);
46         mReporter.onCreatePredictionSession(context, sessionId);
47     }
48 
49     @Override
onAppTargetEvent(AppPredictionSessionId sessionId, AppTargetEvent event)50     public void onAppTargetEvent(AppPredictionSessionId sessionId, AppTargetEvent event) {
51         mReporter.onAppTargetEvent(sessionId, event);
52     }
53 
54     @Override
onLaunchLocationShown(AppPredictionSessionId sessionId, String launchLocation, List<AppTargetId> targetIds)55     public void onLaunchLocationShown(AppPredictionSessionId sessionId, String launchLocation,
56             List<AppTargetId> targetIds) {
57         mReporter.onLocationShown(sessionId, launchLocation, targetIds);
58     }
59 
60     @Override
onSortAppTargets(AppPredictionSessionId sessionId, List<AppTarget> targets, CancellationSignal cancellationSignal, Consumer<List<AppTarget>> callback)61     public void onSortAppTargets(AppPredictionSessionId sessionId, List<AppTarget> targets,
62             CancellationSignal cancellationSignal, Consumer<List<AppTarget>> callback) {
63         mReporter.onSortAppTargets(sessionId, targets, callback);
64         callback.accept(mReporter.getSortedPredictionsProvider().sortTargets(targets));
65     }
66 
67     @Override
onRequestPredictionUpdate(AppPredictionSessionId sessionId)68     public void onRequestPredictionUpdate(AppPredictionSessionId sessionId) {
69         mReporter.onRequestPredictionUpdate(sessionId);
70         updatePredictions(sessionId, mReporter.getPredictionsProvider().getTargets(sessionId));
71     }
72 
73     @Override
onDestroyPredictionSession(AppPredictionSessionId sessionId)74     public void onDestroyPredictionSession(AppPredictionSessionId sessionId) {
75         mReporter.onDestroyPredictionSession(sessionId);
76     }
77 
78     @Override
onRequestServiceFeatures(AppPredictionSessionId sessionId, Consumer<Bundle> callback)79     public void onRequestServiceFeatures(AppPredictionSessionId sessionId,
80             Consumer<Bundle> callback) {
81         mReporter.onRequestServiceFeatures(sessionId, callback);
82         callback.accept(mReporter.getServiceFeaturesProvider().get());
83     }
84 
85     @Override
onStartPredictionUpdates()86     public void onStartPredictionUpdates() {
87         mReporter.onStartPredictionUpdates();
88     }
89 
90     @Override
onStopPredictionUpdates()91     public void onStopPredictionUpdates() {
92         mReporter.onStopPredictionUpdates();
93     }
94 }
95