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 
15 package com.android.systemui.statusbar.policy;
16 
17 import com.android.systemui.Dumpable;
18 import com.android.systemui.statusbar.policy.FlashlightController.FlashlightListener;
19 
20 public interface FlashlightController extends CallbackController<FlashlightListener>, Dumpable {
21 
hasFlashlight()22     boolean hasFlashlight();
setFlashlight(boolean newState)23     void setFlashlight(boolean newState);
isAvailable()24     boolean isAvailable();
isEnabled()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          */
onFlashlightChanged(boolean enabled)33         void onFlashlightChanged(boolean enabled);
34 
35 
36         /**
37          * Called when there is an error that turns the flashlight off.
38          */
onFlashlightError()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          */
onFlashlightAvailabilityChanged(boolean available)45         void onFlashlightAvailabilityChanged(boolean available);
46     }
47 }
48