blob: 43079f44f5ba49e77107ed4904ac739ee15571ce [file] [log] [blame]
Jaikumar Ganesh62c37ef2010-08-24 17:36:13 -07001/*
2 * Copyright (C) 2010 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
18package android.bluetooth;
19
Jaikumar Ganesh03cd78c2010-10-18 16:41:53 -070020import java.util.List;
Jaikumar Ganesh62c37ef2010-08-24 17:36:13 -070021
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 */
29public 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;
Jaikumar Ganesh74ef1192011-02-23 10:22:15 -080061
Jaikumar Ganesh62c37ef2010-08-24 17:36:13 -070062 /**
63 * A2DP profile.
64 */
65 public static final int A2DP = 2;
Jaikumar Ganesh74ef1192011-02-23 10:22:15 -080066
Jaikumar Ganesh4ab0e772011-02-18 14:52:32 -080067 /**
Jaikumar Ganesh2ea1e852011-04-01 16:33:09 -070068 * Health Profile
Jaikumar Ganesh2ea1e852011-04-01 16:33:09 -070069 */
70 public static final int HEALTH = 3;
71
72 /**
Jaikumar Ganesh4ab0e772011-02-18 14:52:32 -080073 * Input Device Profile
74 * @hide
75 */
Jaikumar Ganesh2ea1e852011-04-01 16:33:09 -070076 public static final int INPUT_DEVICE = 4;
Jaikumar Ganesh62c37ef2010-08-24 17:36:13 -070077
78 /**
Jaikumar Ganesh74ef1192011-02-23 10:22:15 -080079 * PAN Profile
80 * @hide
81 */
Jaikumar Ganesh2ea1e852011-04-01 16:33:09 -070082 public static final int PAN = 5;
Jaikumar Ganesh74ef1192011-02-23 10:22:15 -080083
84 /**
Jaikumar Ganeshcb1d3542011-08-19 10:26:32 -070085 * PBAP
86 * @hide
87 */
88 public static final int PBAP = 6;
89
90 /**
Ganesh Ganapathi Batta99081122013-02-05 15:28:33 -080091 * GATT
Ganesh Ganapathi Batta99081122013-02-05 15:28:33 -080092 */
93 static public final int GATT = 7;
94
95 /**
96 * GATT_SERVER
Ganesh Ganapathi Batta99081122013-02-05 15:28:33 -080097 */
98 static public final int GATT_SERVER = 8;
99
100 /**
Jaikumar Ganesh62c37ef2010-08-24 17:36:13 -0700101 * Default priority for devices that we try to auto-connect to and
102 * and allow incoming connections for the profile
103 * @hide
104 **/
105 public static final int PRIORITY_AUTO_CONNECT = 1000;
106
107 /**
108 * Default priority for devices that allow incoming
109 * and outgoing connections for the profile
110 * @hide
111 **/
112 public static final int PRIORITY_ON = 100;
113
114 /**
115 * Default priority for devices that does not allow incoming
116 * connections and outgoing connections for the profile.
117 * @hide
118 **/
119 public static final int PRIORITY_OFF = 0;
120
121 /**
122 * Default priority when not set or when the device is unpaired
123 * @hide
124 * */
125 public static final int PRIORITY_UNDEFINED = -1;
126
127 /**
Jaikumar Ganesh62c37ef2010-08-24 17:36:13 -0700128 * Get connected devices for this specific profile.
129 *
130 * <p> Return the set of devices which are in state {@link #STATE_CONNECTED}
131 *
Jaikumar Ganeshc8fa4ff2011-01-25 16:03:13 -0800132 * <p>Requires {@link android.Manifest.permission#BLUETOOTH} permission.
Jaikumar Ganesh62c37ef2010-08-24 17:36:13 -0700133 *
Jaikumar Ganesh03cd78c2010-10-18 16:41:53 -0700134 * @return List of devices. The list will be empty on error.
Jaikumar Ganesh62c37ef2010-08-24 17:36:13 -0700135 */
Jaikumar Ganesh03cd78c2010-10-18 16:41:53 -0700136 public List<BluetoothDevice> getConnectedDevices();
Jaikumar Ganesh62c37ef2010-08-24 17:36:13 -0700137
138 /**
Jaikumar Ganeshc8fa4ff2011-01-25 16:03:13 -0800139 * Get a list of devices that match any of the given connection
Jaikumar Ganesh62c37ef2010-08-24 17:36:13 -0700140 * states.
141 *
Jaikumar Ganeshc8fa4ff2011-01-25 16:03:13 -0800142 * <p> If none of the devices match any of the given states,
143 * an empty list will be returned.
Jaikumar Ganesh62c37ef2010-08-24 17:36:13 -0700144 *
Jaikumar Ganeshc8fa4ff2011-01-25 16:03:13 -0800145 * <p>Requires {@link android.Manifest.permission#BLUETOOTH} permission.
Jaikumar Ganesh62c37ef2010-08-24 17:36:13 -0700146 *
147 * @param states Array of states. States can be one of
148 * {@link #STATE_CONNECTED}, {@link #STATE_CONNECTING},
149 * {@link #STATE_DISCONNECTED}, {@link #STATE_DISCONNECTING},
Jaikumar Ganesh03cd78c2010-10-18 16:41:53 -0700150 * @return List of devices. The list will be empty on error.
Jaikumar Ganesh62c37ef2010-08-24 17:36:13 -0700151 */
Jaikumar Ganesh03cd78c2010-10-18 16:41:53 -0700152 public List<BluetoothDevice> getDevicesMatchingConnectionStates(int[] states);
Jaikumar Ganesh62c37ef2010-08-24 17:36:13 -0700153
154 /**
155 * Get the current connection state of the profile
156 *
Jaikumar Ganeshc8fa4ff2011-01-25 16:03:13 -0800157 * <p>Requires {@link android.Manifest.permission#BLUETOOTH} permission.
Jaikumar Ganesh62c37ef2010-08-24 17:36:13 -0700158 *
159 * @param device Remote bluetooth device.
160 * @return State of the profile connection. One of
161 * {@link #STATE_CONNECTED}, {@link #STATE_CONNECTING},
162 * {@link #STATE_DISCONNECTED}, {@link #STATE_DISCONNECTING}
163 */
164 public int getConnectionState(BluetoothDevice device);
165
166 /**
Jaikumar Ganesh62c37ef2010-08-24 17:36:13 -0700167 * An interface for notifying BluetoothProfile IPC clients when they have
168 * been connected or disconnected to the service.
169 */
170 public interface ServiceListener {
171 /**
172 * Called to notify the client when the proxy object has been
173 * connected to the service.
Scott Main2d68a6b2011-09-26 22:59:38 -0700174 * @param profile - One of {@link #HEALTH}, {@link #HEADSET} or
Jaikumar Ganesh62c37ef2010-08-24 17:36:13 -0700175 * {@link #A2DP}
Scott Main2d68a6b2011-09-26 22:59:38 -0700176 * @param proxy - One of {@link BluetoothHealth}, {@link BluetoothHeadset} or
Jaikumar Ganesh62c37ef2010-08-24 17:36:13 -0700177 * {@link BluetoothA2dp}
178 */
179 public void onServiceConnected(int profile, BluetoothProfile proxy);
180
181 /**
182 * Called to notify the client that this proxy object has been
183 * disconnected from the service.
Scott Main2d68a6b2011-09-26 22:59:38 -0700184 * @param profile - One of {@link #HEALTH}, {@link #HEADSET} or
Jaikumar Ganesh62c37ef2010-08-24 17:36:13 -0700185 * {@link #A2DP}
186 */
187 public void onServiceDisconnected(int profile);
188 }
189}