1 /* 2 * Copyright (C) 2010-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 18 package android.bluetooth; 19 20 import java.util.List; 21 22 /** 23 * Public APIs for the Bluetooth Profiles. 24 * 25 * <p> Clients should call {@link BluetoothAdapter#getProfileProxy}, 26 * to get the Profile Proxy. Each public profile implements this 27 * interface. 28 */ 29 public interface BluetoothProfile { 30 31 /** 32 * Extra for the connection state intents of the individual profiles. 33 * 34 * This extra represents the current connection state of the profile of the 35 * Bluetooth device. 36 */ 37 public static final String EXTRA_STATE = "android.bluetooth.profile.extra.STATE"; 38 39 /** 40 * Extra for the connection state intents of the individual profiles. 41 * 42 * This extra represents the previous connection state of the profile of the 43 * Bluetooth device. 44 */ 45 public static final String EXTRA_PREVIOUS_STATE = 46 "android.bluetooth.profile.extra.PREVIOUS_STATE"; 47 48 /** The profile is in disconnected state */ 49 public static final int STATE_DISCONNECTED = 0; 50 /** The profile is in connecting state */ 51 public static final int STATE_CONNECTING = 1; 52 /** The profile is in connected state */ 53 public static final int STATE_CONNECTED = 2; 54 /** The profile is in disconnecting state */ 55 public static final int STATE_DISCONNECTING = 3; 56 57 /** 58 * Headset and Handsfree profile 59 */ 60 public static final int HEADSET = 1; 61 62 /** 63 * A2DP profile. 64 */ 65 public static final int A2DP = 2; 66 67 /** 68 * Health Profile 69 */ 70 public static final int HEALTH = 3; 71 72 /** 73 * Input Device Profile 74 * @hide 75 */ 76 public static final int INPUT_DEVICE = 4; 77 78 /** 79 * PAN Profile 80 * @hide 81 */ 82 public static final int PAN = 5; 83 84 /** 85 * PBAP 86 * @hide 87 */ 88 public static final int PBAP = 6; 89 90 /** 91 * GATT 92 */ 93 static public final int GATT = 7; 94 95 /** 96 * GATT_SERVER 97 */ 98 static public final int GATT_SERVER = 8; 99 100 /** 101 * MAP Profile 102 * @hide 103 */ 104 public static final int MAP = 9; 105 106 /** 107 * A2DP Sink Profile 108 * @hide 109 */ 110 public static final int A2DP_SINK = 10; 111 112 /** 113 * AVRCP Controller Profile 114 * @hide 115 */ 116 public static final int AVRCP_CONTROLLER = 11; 117 118 /** 119 * Headset Client - HFP HF Role 120 * @hide 121 */ 122 public static final int HEADSET_CLIENT = 16; 123 124 /** 125 * Default priority for devices that we try to auto-connect to and 126 * and allow incoming connections for the profile 127 * @hide 128 **/ 129 public static final int PRIORITY_AUTO_CONNECT = 1000; 130 131 /** 132 * Default priority for devices that allow incoming 133 * and outgoing connections for the profile 134 * @hide 135 **/ 136 public static final int PRIORITY_ON = 100; 137 138 /** 139 * Default priority for devices that does not allow incoming 140 * connections and outgoing connections for the profile. 141 * @hide 142 **/ 143 public static final int PRIORITY_OFF = 0; 144 145 /** 146 * Default priority when not set or when the device is unpaired 147 * @hide 148 * */ 149 public static final int PRIORITY_UNDEFINED = -1; 150 151 /** 152 * Get connected devices for this specific profile. 153 * 154 * <p> Return the set of devices which are in state {@link #STATE_CONNECTED} 155 * 156 * <p>Requires {@link android.Manifest.permission#BLUETOOTH} permission. 157 * 158 * @return List of devices. The list will be empty on error. 159 */ getConnectedDevices()160 public List<BluetoothDevice> getConnectedDevices(); 161 162 /** 163 * Get a list of devices that match any of the given connection 164 * states. 165 * 166 * <p> If none of the devices match any of the given states, 167 * an empty list will be returned. 168 * 169 * <p>Requires {@link android.Manifest.permission#BLUETOOTH} permission. 170 * 171 * @param states Array of states. States can be one of 172 * {@link #STATE_CONNECTED}, {@link #STATE_CONNECTING}, 173 * {@link #STATE_DISCONNECTED}, {@link #STATE_DISCONNECTING}, 174 * @return List of devices. The list will be empty on error. 175 */ getDevicesMatchingConnectionStates(int[] states)176 public List<BluetoothDevice> getDevicesMatchingConnectionStates(int[] states); 177 178 /** 179 * Get the current connection state of the profile 180 * 181 * <p>Requires {@link android.Manifest.permission#BLUETOOTH} permission. 182 * 183 * @param device Remote bluetooth device. 184 * @return State of the profile connection. One of 185 * {@link #STATE_CONNECTED}, {@link #STATE_CONNECTING}, 186 * {@link #STATE_DISCONNECTED}, {@link #STATE_DISCONNECTING} 187 */ getConnectionState(BluetoothDevice device)188 public int getConnectionState(BluetoothDevice device); 189 190 /** 191 * An interface for notifying BluetoothProfile IPC clients when they have 192 * been connected or disconnected to the service. 193 */ 194 public interface ServiceListener { 195 /** 196 * Called to notify the client when the proxy object has been 197 * connected to the service. 198 * @param profile - One of {@link #HEALTH}, {@link #HEADSET} or 199 * {@link #A2DP} 200 * @param proxy - One of {@link BluetoothHealth}, {@link BluetoothHeadset} or 201 * {@link BluetoothA2dp} 202 */ onServiceConnected(int profile, BluetoothProfile proxy)203 public void onServiceConnected(int profile, BluetoothProfile proxy); 204 205 /** 206 * Called to notify the client that this proxy object has been 207 * disconnected from the service. 208 * @param profile - One of {@link #HEALTH}, {@link #HEADSET} or 209 * {@link #A2DP} 210 */ onServiceDisconnected(int profile)211 public void onServiceDisconnected(int profile); 212 } 213 } 214