1/*
2 * Copyright (C) 2016 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
5 * except in compliance with the License. You may obtain a copy of the License at
6 *
7 *      http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software distributed under the
10 * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
11 * KIND, either express or implied. See the License for the specific language governing
12 * permissions and limitations under the License.
13 */
14
15package com.android.systemui.statusbar.policy;
16
17import com.android.systemui.Dumpable;
18import com.android.systemui.statusbar.policy.FlashlightController.FlashlightListener;
19
20public interface FlashlightController extends CallbackController<FlashlightListener>, Dumpable {
21
22    boolean hasFlashlight();
23    void setFlashlight(boolean newState);
24    boolean isAvailable();
25    boolean isEnabled();
26
27    public interface FlashlightListener {
28
29        /**
30         * Called when the flashlight was turned off or on.
31         * @param enabled true if the flashlight is currently turned on.
32         */
33        void onFlashlightChanged(boolean enabled);
34
35
36        /**
37         * Called when there is an error that turns the flashlight off.
38         */
39        void onFlashlightError();
40
41        /**
42         * Called when there is a change in availability of the flashlight functionality
43         * @param available true if the flashlight is currently available.
44         */
45        void onFlashlightAvailabilityChanged(boolean available);
46    }
47}
48