1 /*
2  * Copyright 2014 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package android.bluetooth;
18 
19 import android.bluetooth.BluetoothDevice;
20 import android.bluetooth.BluetoothSinkAudioPolicy;
21 import android.bluetooth.BluetoothHeadsetClientCall;
22 import android.content.AttributionSource;
23 import android.os.Bundle;
24 
25 /**
26  * API for Bluetooth Headset Client service (HFP HF Role)
27  *
28  * {@hide}
29  */
30 interface IBluetoothHeadsetClient {
31     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
connect(in BluetoothDevice device, in AttributionSource attributionSource)32     boolean connect(in BluetoothDevice device, in AttributionSource attributionSource);
33     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
disconnect(in BluetoothDevice device, in AttributionSource attributionSource)34     boolean disconnect(in BluetoothDevice device, in AttributionSource attributionSource);
35 
36     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
getConnectedDevices(in AttributionSource attributionSource)37     List<BluetoothDevice> getConnectedDevices(in AttributionSource attributionSource);
38     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
getDevicesMatchingConnectionStates(in int[] states, in AttributionSource attributionSource)39     List<BluetoothDevice> getDevicesMatchingConnectionStates(in int[] states, in AttributionSource attributionSource);
40     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
getConnectionState(in BluetoothDevice device, in AttributionSource attributionSource)41     int getConnectionState(in BluetoothDevice device, in AttributionSource attributionSource);
42     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
setConnectionPolicy(in BluetoothDevice device, int connectionPolicy, in AttributionSource attributionSource)43     boolean setConnectionPolicy(in BluetoothDevice device, int connectionPolicy, in AttributionSource attributionSource);
44     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
getConnectionPolicy(in BluetoothDevice device, in AttributionSource attributionSource)45     int getConnectionPolicy(in BluetoothDevice device, in AttributionSource attributionSource);
46 
47     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
startVoiceRecognition(in BluetoothDevice device, in AttributionSource attributionSource)48     boolean startVoiceRecognition(in BluetoothDevice device, in AttributionSource attributionSource);
49     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
stopVoiceRecognition(in BluetoothDevice device, in AttributionSource attributionSource)50     boolean stopVoiceRecognition(in BluetoothDevice device, in AttributionSource attributionSource);
51 
52     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
getCurrentCalls(in BluetoothDevice device, in AttributionSource attributionSource)53     List<BluetoothHeadsetClientCall> getCurrentCalls(in BluetoothDevice device, in AttributionSource attributionSource);
54     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
getCurrentAgEvents(in BluetoothDevice device, in AttributionSource attributionSource)55     Bundle getCurrentAgEvents(in BluetoothDevice device, in AttributionSource attributionSource);
56 
57     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
acceptCall(in BluetoothDevice device, int flag, in AttributionSource attributionSource)58     boolean acceptCall(in BluetoothDevice device, int flag, in AttributionSource attributionSource);
59     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
holdCall(in BluetoothDevice device, in AttributionSource attributionSource)60     boolean holdCall(in BluetoothDevice device, in AttributionSource attributionSource);
61     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
rejectCall(in BluetoothDevice device, in AttributionSource attributionSource)62     boolean rejectCall(in BluetoothDevice device, in AttributionSource attributionSource);
63     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
terminateCall(in BluetoothDevice device, in BluetoothHeadsetClientCall call, in AttributionSource attributionSource)64     boolean terminateCall(in BluetoothDevice device, in BluetoothHeadsetClientCall call, in AttributionSource attributionSource);
65 
66     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
enterPrivateMode(in BluetoothDevice device, int index, in AttributionSource attributionSource)67     boolean enterPrivateMode(in BluetoothDevice device, int index, in AttributionSource attributionSource);
68     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
explicitCallTransfer(in BluetoothDevice device, in AttributionSource attributionSource)69     boolean explicitCallTransfer(in BluetoothDevice device, in AttributionSource attributionSource);
70 
71     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
dial(in BluetoothDevice device, String number, in AttributionSource attributionSource)72     BluetoothHeadsetClientCall dial(in BluetoothDevice device, String number, in AttributionSource attributionSource);
73 
74     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
sendDTMF(in BluetoothDevice device, byte code, in AttributionSource attributionSource)75     boolean sendDTMF(in BluetoothDevice device, byte code, in AttributionSource attributionSource);
76     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
getLastVoiceTagNumber(in BluetoothDevice device, in AttributionSource attributionSource)77     boolean getLastVoiceTagNumber(in BluetoothDevice device, in AttributionSource attributionSource);
78 
79     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
getAudioState(in BluetoothDevice device, in AttributionSource attributionSource)80     int getAudioState(in BluetoothDevice device, in AttributionSource attributionSource);
81     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
connectAudio(in BluetoothDevice device, in AttributionSource attributionSource)82     boolean connectAudio(in BluetoothDevice device, in AttributionSource attributionSource);
83     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
disconnectAudio(in BluetoothDevice device, in AttributionSource attributionSource)84     boolean disconnectAudio(in BluetoothDevice device, in AttributionSource attributionSource);
85     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
setAudioRouteAllowed(in BluetoothDevice device, boolean allowed, in AttributionSource attributionSource)86     void setAudioRouteAllowed(in BluetoothDevice device, boolean allowed, in AttributionSource attributionSource);
87     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
getAudioRouteAllowed(in BluetoothDevice device, in AttributionSource attributionSource)88     boolean getAudioRouteAllowed(in BluetoothDevice device, in AttributionSource attributionSource);
89     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
sendVendorAtCommand(in BluetoothDevice device, int vendorId, String atCommand, in AttributionSource attributionSource)90     boolean sendVendorAtCommand(in BluetoothDevice device, int vendorId, String atCommand, in AttributionSource attributionSource);
91 
92     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)")
getCurrentAgFeatures(in BluetoothDevice device, in AttributionSource attributionSource)93     Bundle getCurrentAgFeatures(in BluetoothDevice device, in AttributionSource attributionSource);
94 }
95