16d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang/*
26d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * Copyright (C) 2014 The Android Open Source Project
36d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang *
46d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * Licensed under the Apache License, Version 2.0 (the "License");
56d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * you may not use this file except in compliance with the License.
66d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * You may obtain a copy of the License at
76d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang *
86d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang *      http://www.apache.org/licenses/LICENSE-2.0
96d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang *
106d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * Unless required by applicable law or agreed to in writing, software
116d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * distributed under the License is distributed on an "AS IS" BASIS,
126d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
136d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * See the License for the specific language governing permissions and
146d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * limitations under the License.
156d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang */
166d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang
176d81118032b92caa0f5cfebe11af02a98f819d5eWei Wangpackage android.bluetooth.le;
186d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang
196d81118032b92caa0f5cfebe11af02a98f819d5eWei Wangimport java.util.List;
206d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang
216d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang/**
22685c1758902a42a7beb030d8bbaed3f7ce6f6135Wei Wang * Bluetooth LE scan callbacks. Scan results are reported using these callbacks.
23af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang *
24685c1758902a42a7beb030d8bbaed3f7ce6f6135Wei Wang * @see BluetoothLeScanner#startScan
256d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang */
266d81118032b92caa0f5cfebe11af02a98f819d5eWei Wangpublic abstract class ScanCallback {
276d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang    /**
286d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang     * Fails to start scan as BLE scan with the same settings is already started by the app.
296d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang     */
306d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang    public static final int SCAN_FAILED_ALREADY_STARTED = 1;
31af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang
326d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang    /**
336d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang     * Fails to start scan as app cannot be registered.
346d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang     */
356d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang    public static final int SCAN_FAILED_APPLICATION_REGISTRATION_FAILED = 2;
36af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang
376d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang    /**
38af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang     * Fails to start scan due an internal error
396d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang     */
40af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang    public static final int SCAN_FAILED_INTERNAL_ERROR = 3;
416d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang
426d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang    /**
438e5270fdf5639461d67e9a898a85520abac6053dPrerepa Viswanadham     * Fails to start power optimized scan as this feature is not supported.
448e5270fdf5639461d67e9a898a85520abac6053dPrerepa Viswanadham     */
45af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang    public static final int SCAN_FAILED_FEATURE_UNSUPPORTED = 4;
468e5270fdf5639461d67e9a898a85520abac6053dPrerepa Viswanadham
478e5270fdf5639461d67e9a898a85520abac6053dPrerepa Viswanadham    /**
48e593d0aec6430d98731d9751facd0414a1c9c6a2Prerepa Viswanadham     * Fails to start scan as it is out of hardware resources.
49e593d0aec6430d98731d9751facd0414a1c9c6a2Prerepa Viswanadham     * @hide
50e593d0aec6430d98731d9751facd0414a1c9c6a2Prerepa Viswanadham     */
51e593d0aec6430d98731d9751facd0414a1c9c6a2Prerepa Viswanadham    public static final int SCAN_FAILED_OUT_OF_HARDWARE_RESOURCES = 5;
52e593d0aec6430d98731d9751facd0414a1c9c6a2Prerepa Viswanadham
53461111bc3d9b53f745a9be686504aee161f36c28Amith Yamasani    static final int NO_ERROR = 0;
54461111bc3d9b53f745a9be686504aee161f36c28Amith Yamasani
55e593d0aec6430d98731d9751facd0414a1c9c6a2Prerepa Viswanadham    /**
56af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang     * Callback when a BLE advertisement has been found.
576d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang     *
58d3df86e5f0eccefcd7f3b60f07c945d1201a5d89Prerepa Viswanadham     * @param callbackType Determines how this callback was triggered. Could be one of
59d3df86e5f0eccefcd7f3b60f07c945d1201a5d89Prerepa Viswanadham     *            {@link ScanSettings#CALLBACK_TYPE_ALL_MATCHES},
60d3df86e5f0eccefcd7f3b60f07c945d1201a5d89Prerepa Viswanadham     *            {@link ScanSettings#CALLBACK_TYPE_FIRST_MATCH} or
61d3df86e5f0eccefcd7f3b60f07c945d1201a5d89Prerepa Viswanadham     *            {@link ScanSettings#CALLBACK_TYPE_MATCH_LOST}
626d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang     * @param result A Bluetooth LE scan result.
636d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang     */
64af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang    public void onScanResult(int callbackType, ScanResult result) {
65af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang    }
666d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang
676d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang    /**
686d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang     * Callback when batch results are delivered.
696d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang     *
706d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang     * @param results List of scan results that are previously scanned.
716d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang     */
72af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang    public void onBatchScanResults(List<ScanResult> results) {
73af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang    }
746d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang
756d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang    /**
76af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang     * Callback when scan could not be started.
779960b576533041d07b141008c5925dcecb8c9224Wei Wang     *
78685c1758902a42a7beb030d8bbaed3f7ce6f6135Wei Wang     * @param errorCode Error code (one of SCAN_FAILED_*) for scan failure.
796d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang     */
80af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang    public void onScanFailed(int errorCode) {
81af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang    }
826d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang}
83