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.
49a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He     *
50e593d0aec6430d98731d9751facd0414a1c9c6a2Prerepa Viswanadham     * @hide
51e593d0aec6430d98731d9751facd0414a1c9c6a2Prerepa Viswanadham     */
52e593d0aec6430d98731d9751facd0414a1c9c6a2Prerepa Viswanadham    public static final int SCAN_FAILED_OUT_OF_HARDWARE_RESOURCES = 5;
53e593d0aec6430d98731d9751facd0414a1c9c6a2Prerepa Viswanadham
54ee02e1ce774777e85b10be6d1ad5c6083fa08c18Jakub Pawlowski    /**
55ee02e1ce774777e85b10be6d1ad5c6083fa08c18Jakub Pawlowski     * Fails to start scan as application tries to scan too frequently.
56ee02e1ce774777e85b10be6d1ad5c6083fa08c18Jakub Pawlowski     * @hide
57ee02e1ce774777e85b10be6d1ad5c6083fa08c18Jakub Pawlowski     */
58ee02e1ce774777e85b10be6d1ad5c6083fa08c18Jakub Pawlowski    public static final int SCAN_FAILED_SCANNING_TOO_FREQUENTLY = 6;
59ee02e1ce774777e85b10be6d1ad5c6083fa08c18Jakub Pawlowski
60461111bc3d9b53f745a9be686504aee161f36c28Amith Yamasani    static final int NO_ERROR = 0;
61461111bc3d9b53f745a9be686504aee161f36c28Amith Yamasani
62e593d0aec6430d98731d9751facd0414a1c9c6a2Prerepa Viswanadham    /**
63af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang     * Callback when a BLE advertisement has been found.
646d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang     *
65a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He     * @param callbackType Determines how this callback was triggered. Could be one of {@link
66a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He     * ScanSettings#CALLBACK_TYPE_ALL_MATCHES}, {@link ScanSettings#CALLBACK_TYPE_FIRST_MATCH} or
67a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He     * {@link ScanSettings#CALLBACK_TYPE_MATCH_LOST}
686d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang     * @param result A Bluetooth LE scan result.
696d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang     */
70af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang    public void onScanResult(int callbackType, ScanResult result) {
71af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang    }
726d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang
736d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang    /**
746d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang     * Callback when batch results are delivered.
756d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang     *
766d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang     * @param results List of scan results that are previously scanned.
776d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang     */
78af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang    public void onBatchScanResults(List<ScanResult> results) {
79af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang    }
806d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang
816d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang    /**
82af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang     * Callback when scan could not be started.
839960b576533041d07b141008c5925dcecb8c9224Wei Wang     *
84685c1758902a42a7beb030d8bbaed3f7ce6f6135Wei Wang     * @param errorCode Error code (one of SCAN_FAILED_*) for scan failure.
856d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang     */
86af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang    public void onScanFailed(int errorCode) {
87af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang    }
886d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang}
89