1 /*
2  * Copyright 2021 HIMSA II K/S - www.himsa.com.
3  * Represented by EHIMA - www.ehima.com
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 package android.bluetooth;
19 
20 import android.bluetooth.BluetoothDevice;
21 import android.bluetooth.IAudioInputCallback;
22 import android.bluetooth.IBluetoothVolumeControlCallback;
23 import android.content.AttributionSource;
24 
25 /**
26  * APIs for Bluetooth Volume Control service
27  *
28  * @hide
29  */
30 interface IBluetoothVolumeControl {
31 
32     const int VOLUME_CONTROL_UNKNOWN_VOLUME = -1;
33 
34     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT,android.Manifest.permission.BLUETOOTH_PRIVILEGED})")
getConnectedDevices(in AttributionSource attributionSource)35     List<BluetoothDevice> getConnectedDevices(in AttributionSource attributionSource);
36     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT,android.Manifest.permission.BLUETOOTH_PRIVILEGED})")
getDevicesMatchingConnectionStates(in int[] states, in AttributionSource attributionSource)37     List<BluetoothDevice> getDevicesMatchingConnectionStates(in int[] states, in AttributionSource attributionSource);
38     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
getConnectionState(in BluetoothDevice device, in AttributionSource attributionSource)39     int getConnectionState(in BluetoothDevice device, in AttributionSource attributionSource);
40     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT,android.Manifest.permission.BLUETOOTH_PRIVILEGED})")
setConnectionPolicy(in BluetoothDevice device, int connectionPolicy, in AttributionSource attributionSource)41     boolean setConnectionPolicy(in BluetoothDevice device, int connectionPolicy, in AttributionSource attributionSource);
42     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT,android.Manifest.permission.BLUETOOTH_PRIVILEGED})")
getConnectionPolicy(in BluetoothDevice device, in AttributionSource attributionSource)43     int getConnectionPolicy(in BluetoothDevice device, in AttributionSource attributionSource);
44 
45     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT,android.Manifest.permission.BLUETOOTH_PRIVILEGED})")
isVolumeOffsetAvailable(in BluetoothDevice device, in AttributionSource attributionSource)46     boolean isVolumeOffsetAvailable(in BluetoothDevice device, in AttributionSource attributionSource);
47     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT,android.Manifest.permission.BLUETOOTH_PRIVILEGED})")
getNumberOfVolumeOffsetInstances(in BluetoothDevice device, in AttributionSource attributionSource)48     int getNumberOfVolumeOffsetInstances(in BluetoothDevice device, in AttributionSource attributionSource);
49     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT,android.Manifest.permission.BLUETOOTH_PRIVILEGED})")
setVolumeOffset(in BluetoothDevice device, int instanceId, int volumeOffset, in AttributionSource attributionSource)50     void setVolumeOffset(in BluetoothDevice device, int instanceId, int volumeOffset, in AttributionSource attributionSource);
51     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
setGroupVolume(int group_id, int volume, in AttributionSource attributionSource)52     void setGroupVolume(int group_id, int volume, in AttributionSource attributionSource);
53     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
getGroupVolume(int group_id, in AttributionSource attributionSource)54     int getGroupVolume(int group_id, in AttributionSource attributionSource);
55     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
setGroupActive(int group_id, boolean active, in AttributionSource attributionSource)56     void setGroupActive(int group_id, boolean active, in AttributionSource attributionSource);
57     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT,android.Manifest.permission.BLUETOOTH_PRIVILEGED})")
setDeviceVolume(in BluetoothDevice device, int volume, boolean isGroupOp, in AttributionSource attributionSource)58     void setDeviceVolume(in BluetoothDevice device, int volume, boolean isGroupOp, in AttributionSource attributionSource);
59 
60     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
mute(in BluetoothDevice device, in AttributionSource attributionSource)61     void mute(in BluetoothDevice device, in AttributionSource attributionSource);
62     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
muteGroup(int group_id, in AttributionSource attributionSource)63     void muteGroup(int group_id, in AttributionSource attributionSource);
64 
65     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
unmute(in BluetoothDevice device, in AttributionSource attributionSource)66     void unmute(in BluetoothDevice device, in AttributionSource attributionSource);
67     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
unmuteGroup(int group_id, in AttributionSource attributionSource)68     void unmuteGroup(int group_id, in AttributionSource attributionSource);
69 
70     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT,android.Manifest.permission.BLUETOOTH_PRIVILEGED})")
registerCallback(in IBluetoothVolumeControlCallback callback, in AttributionSource attributionSource)71     void registerCallback(in IBluetoothVolumeControlCallback callback, in AttributionSource attributionSource);
72     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT,android.Manifest.permission.BLUETOOTH_PRIVILEGED})")
unregisterCallback(in IBluetoothVolumeControlCallback callback, in AttributionSource attributionSource)73     void unregisterCallback(in IBluetoothVolumeControlCallback callback, in AttributionSource attributionSource);
74     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT,android.Manifest.permission.BLUETOOTH_PRIVILEGED})")
notifyNewRegisteredCallback(in IBluetoothVolumeControlCallback callback, in AttributionSource attributionSource)75     void notifyNewRegisteredCallback(in IBluetoothVolumeControlCallback callback, in AttributionSource attributionSource);
76 
77     // ---------------------
78     // AICS related methods:
79 
80     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT,android.Manifest.permission.BLUETOOTH_PRIVILEGED})")
getNumberOfAudioInputControlServices(in AttributionSource attributionSource, in BluetoothDevice device)81     int getNumberOfAudioInputControlServices(in AttributionSource attributionSource, in BluetoothDevice device);
82 
83     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT,android.Manifest.permission.BLUETOOTH_PRIVILEGED})")
registerAudioInputControlCallback(in AttributionSource attributionSource, in BluetoothDevice device, int instanceId, in IAudioInputCallback callback)84     void registerAudioInputControlCallback(in AttributionSource attributionSource, in BluetoothDevice device, int instanceId, in IAudioInputCallback callback);
85     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT,android.Manifest.permission.BLUETOOTH_PRIVILEGED})")
unregisterAudioInputControlCallback(in AttributionSource attributionSource, in BluetoothDevice device, int instanceId, in IAudioInputCallback callback)86     void unregisterAudioInputControlCallback(in AttributionSource attributionSource, in BluetoothDevice device, int instanceId, in IAudioInputCallback callback);
87 
88     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT,android.Manifest.permission.BLUETOOTH_PRIVILEGED})")
getAudioInputGainSettingUnit(in AttributionSource attributionSource, in BluetoothDevice device, int instanceId)89     int getAudioInputGainSettingUnit(in AttributionSource attributionSource, in BluetoothDevice device, int instanceId);
90     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT,android.Manifest.permission.BLUETOOTH_PRIVILEGED})")
getAudioInputGainSettingMin(in AttributionSource attributionSource, in BluetoothDevice device, int instanceId)91     int getAudioInputGainSettingMin(in AttributionSource attributionSource, in BluetoothDevice device, int instanceId);
92     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT,android.Manifest.permission.BLUETOOTH_PRIVILEGED})")
getAudioInputGainSettingMax(in AttributionSource attributionSource, in BluetoothDevice device, int instanceId)93     int getAudioInputGainSettingMax(in AttributionSource attributionSource, in BluetoothDevice device, int instanceId);
94 
95     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT,android.Manifest.permission.BLUETOOTH_PRIVILEGED})")
getAudioInputDescription(in AttributionSource attributionSource, in BluetoothDevice device, int instanceId)96     String getAudioInputDescription(in AttributionSource attributionSource, in BluetoothDevice device, int instanceId);
97     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT,android.Manifest.permission.BLUETOOTH_PRIVILEGED})")
isAudioInputDescriptionWritable(in AttributionSource attributionSource, in BluetoothDevice device, int instanceId)98     boolean isAudioInputDescriptionWritable(in AttributionSource attributionSource, in BluetoothDevice device, int instanceId);
99     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT,android.Manifest.permission.BLUETOOTH_PRIVILEGED})")
setAudioInputDescription(in AttributionSource attributionSource, in BluetoothDevice device, int instanceId, in String description)100     boolean setAudioInputDescription(in AttributionSource attributionSource, in BluetoothDevice device, int instanceId, in String description);
101 
102     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT,android.Manifest.permission.BLUETOOTH_PRIVILEGED})")
getAudioInputStatus(in AttributionSource attributionSource, in BluetoothDevice device, int instanceId)103     int getAudioInputStatus(in AttributionSource attributionSource, in BluetoothDevice device, int instanceId);
104 
105     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT,android.Manifest.permission.BLUETOOTH_PRIVILEGED})")
getAudioInputType(in AttributionSource attributionSource, in BluetoothDevice device, int instanceId)106     int getAudioInputType(in AttributionSource attributionSource, in BluetoothDevice device, int instanceId);
107 
108     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT,android.Manifest.permission.BLUETOOTH_PRIVILEGED})")
getAudioInputGainSetting(in AttributionSource attributionSource, in BluetoothDevice device, int instanceId)109     int getAudioInputGainSetting(in AttributionSource attributionSource, in BluetoothDevice device, int instanceId);
110     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT,android.Manifest.permission.BLUETOOTH_PRIVILEGED})")
setAudioInputGainSetting(in AttributionSource attributionSource, in BluetoothDevice device, int instanceId, int gainSetting)111     boolean setAudioInputGainSetting(in AttributionSource attributionSource, in BluetoothDevice device, int instanceId, int gainSetting);
112 
113     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT,android.Manifest.permission.BLUETOOTH_PRIVILEGED})")
getAudioInputGainMode(in AttributionSource attributionSource, in BluetoothDevice device, int instanceId)114     int getAudioInputGainMode(in AttributionSource attributionSource, in BluetoothDevice device, int instanceId);
115     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT,android.Manifest.permission.BLUETOOTH_PRIVILEGED})")
setAudioInputGainMode(in AttributionSource attributionSource, in BluetoothDevice device, int instanceId, int gainMode)116     boolean setAudioInputGainMode(in AttributionSource attributionSource, in BluetoothDevice device, int instanceId, int gainMode);
117 
118     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT,android.Manifest.permission.BLUETOOTH_PRIVILEGED})")
getAudioInputMute(in AttributionSource attributionSource, in BluetoothDevice device, int instanceId)119     int getAudioInputMute(in AttributionSource attributionSource, in BluetoothDevice device, int instanceId);
120     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT,android.Manifest.permission.BLUETOOTH_PRIVILEGED})")
setAudioInputMute(in AttributionSource attributionSource, in BluetoothDevice device, int instanceId, int mute)121     boolean setAudioInputMute(in AttributionSource attributionSource, in BluetoothDevice device, int instanceId, int mute);
122 }
123