summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Pasanen <dan.pasanen@gmail.com>2017-04-05 08:20:56 -0500
committerDan Pasanen <dan.pasanen@gmail.com>2017-04-05 08:20:56 -0500
commit8caae26b264a3ecb1f9e5b22123e75caf58c4c10 (patch)
tree8b858e15fd089d5bb990a6bbe0cfd3caa32f4d45
parentf4196b3baf2f7bcc7b78ecbc385b4ac14736a43f (diff)
parent971d02c0af79530b3d8be906476abfdbc563ba99 (diff)
downloadandroid_packages_apps_Bluetooth-8caae26b264a3ecb1f9e5b22123e75caf58c4c10.tar.gz
android_packages_apps_Bluetooth-8caae26b264a3ecb1f9e5b22123e75caf58c4c10.tar.bz2
android_packages_apps_Bluetooth-8caae26b264a3ecb1f9e5b22123e75caf58c4c10.zip
Merge tag 'android-7.1.2_r2' into cm-14.1
Android 7.1.2 Release 2 (N2G47E) Change-Id: I7a3e271db2f0e1e35a069906b9b7904e1e1fd7fe
-rw-r--r--jni/com_android_bluetooth_btservice_AdapterService.cpp66
-rw-r--r--res/values-b+sr+Latn/strings.xml4
-rw-r--r--res/values-bn-rBD/strings_sap.xml4
-rw-r--r--res/values-bs-rBA/strings.xml2
-rw-r--r--res/values-el/strings.xml12
-rw-r--r--res/values-hi/strings.xml2
-rw-r--r--res/values-hi/strings_sap.xml8
-rw-r--r--res/values-hy-rAM/strings.xml6
-rw-r--r--res/values-in/strings.xml2
-rw-r--r--res/values-kn-rIN/strings.xml10
-rw-r--r--res/values-kn-rIN/strings_pbap_client.xml2
-rw-r--r--res/values-nl/strings.xml2
-rw-r--r--res/values-sr/strings.xml4
-rw-r--r--src/com/android/bluetooth/btservice/AdapterService.java46
-rw-r--r--src/com/android/bluetooth/btservice/Config.java45
-rw-r--r--src/com/android/bluetooth/btservice/RemoteDevices.java5
-rw-r--r--src/com/android/bluetooth/btservice/bluetooth.proto19
-rw-r--r--src/com/android/bluetooth/gatt/AdvertiseManager.java5
-rw-r--r--src/com/android/bluetooth/gatt/AppScanStats.java11
-rw-r--r--src/com/android/bluetooth/gatt/GattService.java6
-rw-r--r--src/com/android/bluetooth/gatt/ScanManager.java22
-rw-r--r--src/com/android/bluetooth/hfpclient/HeadsetClientService.java8
-rwxr-xr-xsrc/com/android/bluetooth/hfpclient/HeadsetClientStateMachine.java13
-rwxr-xr-xsrc/com/android/bluetooth/map/BluetoothMapContent.java7
24 files changed, 205 insertions, 106 deletions
diff --git a/jni/com_android_bluetooth_btservice_AdapterService.cpp b/jni/com_android_bluetooth_btservice_AdapterService.cpp
index 28a0e558c..95cc6644d 100644
--- a/jni/com_android_bluetooth_btservice_AdapterService.cpp
+++ b/jni/com_android_bluetooth_btservice_AdapterService.cpp
@@ -32,8 +32,11 @@
#include <fcntl.h>
namespace android {
-
+// OOB_LE_BD_ADDR_SIZE is 6 bytes addres + 1 byte address type
+#define OOB_LE_BD_ADDR_SIZE 7
#define OOB_TK_SIZE 16
+#define OOB_LE_SC_C_SIZE 16
+#define OOB_LE_SC_R_SIZE 16
#define ADDITIONAL_NREFS 50
static jmethodID method_stateChangeCallback;
@@ -892,19 +895,67 @@ static jboolean createBondOutOfBandNative(JNIEnv* env, jobject obj, jbyteArray a
return result;
}
+ jbyte* leBtDeviceAddressBytes = NULL;
jbyte* smTKBytes = NULL;
- jbyteArray smTK = callByteArrayGetter(env, oobData, "android/bluetooth/OobData", "getSecurityManagerTk");
+ jbyte* leScCBytes = NULL;
+ jbyte* leScRBytes = NULL;
+ jbyteArray leBtDeviceAddress = NULL;
+ jbyteArray smTK = NULL;
+ jbyteArray leScC = NULL;
+ jbyteArray leScR = NULL;
+
+ leBtDeviceAddress = callByteArrayGetter(env, oobData, "android/bluetooth/OobData", "getLeBluetoothDeviceAddress");
+ if (leBtDeviceAddress != NULL) {
+ leBtDeviceAddressBytes = env->GetByteArrayElements(leBtDeviceAddress, NULL);
+ int len = env->GetArrayLength(leBtDeviceAddress);
+ if (len != OOB_LE_BD_ADDR_SIZE) {
+ ALOGI("%s: wrong length of leBtDeviceAddress, should be empty or %d bytes.", __func__, OOB_LE_BD_ADDR_SIZE);
+ jniThrowIOException(env, EINVAL);
+ goto done;
+ }
+ memcpy(oob_data.le_bt_dev_addr, leBtDeviceAddressBytes, len);
+ }
+
+ smTK = callByteArrayGetter(env, oobData, "android/bluetooth/OobData", "getSecurityManagerTk");
if (smTK != NULL) {
smTKBytes = env->GetByteArrayElements(smTK, NULL);
int len = env->GetArrayLength(smTK);
if (len != OOB_TK_SIZE) {
- ALOGI("%s: wrong length of smTK, should be empty or %d bytes.", __FUNCTION__, OOB_TK_SIZE);
+ ALOGI("%s: wrong length of smTK, should be empty or %d bytes.", __func__, OOB_TK_SIZE);
jniThrowIOException(env, EINVAL);
goto done;
}
memcpy(oob_data.sm_tk, smTKBytes, len);
}
+ leScC = callByteArrayGetter(env, oobData, "android/bluetooth/OobData",
+ "getLeSecureConnectionsConfirmation");
+ if (leScC != NULL) {
+ leScCBytes = env->GetByteArrayElements(leScC, NULL);
+ int len = env->GetArrayLength(leScC);
+ if (len != OOB_LE_SC_C_SIZE) {
+ ALOGI("%s: wrong length of LE SC Confirmation, should be empty or %d bytes.",
+ __func__, OOB_LE_SC_C_SIZE);
+ jniThrowIOException(env, EINVAL);
+ goto done;
+ }
+ memcpy(oob_data.le_sc_c, leScCBytes, len);
+ }
+
+ leScR = callByteArrayGetter(env, oobData, "android/bluetooth/OobData",
+ "getLeSecureConnectionsRandom");
+ if (leScR != NULL) {
+ leScRBytes = env->GetByteArrayElements(leScR, NULL);
+ int len = env->GetArrayLength(leScR);
+ if (len != OOB_LE_SC_R_SIZE) {
+ ALOGI("%s: wrong length of LE SC Random, should be empty or %d bytes.",
+ __func__, OOB_LE_SC_R_SIZE);
+ jniThrowIOException(env, EINVAL);
+ goto done;
+ }
+ memcpy(oob_data.le_sc_r, leScRBytes, len);
+ }
+
if (sBluetoothInterface->create_bond_out_of_band((bt_bdaddr_t *)addr, transport, &oob_data)
== BT_STATUS_SUCCESS)
result = JNI_TRUE;
@@ -912,9 +963,18 @@ static jboolean createBondOutOfBandNative(JNIEnv* env, jobject obj, jbyteArray a
done:
env->ReleaseByteArrayElements(address, addr, 0);
+ if (leBtDeviceAddress != NULL)
+ env->ReleaseByteArrayElements(leBtDeviceAddress, leBtDeviceAddressBytes, 0);
+
if (smTK != NULL)
env->ReleaseByteArrayElements(smTK, smTKBytes, 0);
+ if (leScC != NULL)
+ env->ReleaseByteArrayElements(leScC, leScCBytes, 0);
+
+ if (leScR != NULL)
+ env->ReleaseByteArrayElements(leScR, leScRBytes, 0);
+
return result;
}
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index c3b1d1a02..360e03b35 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -69,7 +69,7 @@
<string name="upload_succ_ok" msgid="7705428476405478828">"Potvrdi"</string>
<string name="upload_fail_line1" msgid="7899394672421491701">"Datoteka nije poslata na <xliff:g id="RECIPIENT">%1$s</xliff:g>."</string>
<string name="upload_fail_line1_2" msgid="2108129204050841798">"Datoteka: <xliff:g id="FILE">%1$s</xliff:g>"</string>
- <string name="upload_fail_ok" msgid="5807702461606714296">"Pokušaj ponovo"</string>
+ <string name="upload_fail_ok" msgid="5807702461606714296">"Probaj ponovo"</string>
<string name="upload_fail_cancel" msgid="9118496285835687125">"Zatvori"</string>
<string name="bt_error_btn_ok" msgid="5965151173011534240">"Potvrdi"</string>
<string name="unknown_file" msgid="6092727753965095366">"Nepoznata datoteka"</string>
@@ -87,7 +87,7 @@
<string name="bt_sm_2_1" product="nosdcard" msgid="352165168004521000">"Nema dovoljno prostora u USB memoriji da bi se sačuvala datoteka pošiljaoca „<xliff:g id="SENDER">%1$s</xliff:g>“"</string>
<string name="bt_sm_2_1" product="default" msgid="1989018443456803630">"Nema dovoljno prostora na SD kartici da bi se sačuvala datoteka pošiljaoca „<xliff:g id="SENDER">%1$s</xliff:g>“"</string>
<string name="bt_sm_2_2" msgid="2965243265852680543">"Potreban prostor: <xliff:g id="SIZE">%1$s</xliff:g>"</string>
- <string name="ErrorTooManyRequests" msgid="8578277541472944529">"Previše zahteva se obrađuje. Pokušajte ponovo kasnije."</string>
+ <string name="ErrorTooManyRequests" msgid="8578277541472944529">"Previše zahteva se obrađuje. Probajte ponovo kasnije."</string>
<string name="status_pending" msgid="2503691772030877944">"Prenos datoteke još nije počeo."</string>
<string name="status_running" msgid="6562808920311008696">"Prenos datoteke je u toku."</string>
<string name="status_success" msgid="239573225847565868">"Prenos datoteke je dovršen."</string>
diff --git a/res/values-bn-rBD/strings_sap.xml b/res/values-bn-rBD/strings_sap.xml
index 23def2a6e..35329d8fd 100644
--- a/res/values-bn-rBD/strings_sap.xml
+++ b/res/values-bn-rBD/strings_sap.xml
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="bluetooth_sap_notif_title" msgid="6877860822993195074">"ব্লুটুথ SIM -এ অ্যাক্সেস করুন"</string>
- <string name="bluetooth_sap_notif_ticker" msgid="6807778527893726699">"ব্লুটুথ SIM -এ অ্যাক্সেস করুন"</string>
+ <string name="bluetooth_sap_notif_title" msgid="6877860822993195074">"ব্লুটুথ সিম -এ অ্যাক্সেস করুন"</string>
+ <string name="bluetooth_sap_notif_ticker" msgid="6807778527893726699">"ব্লুটুথ সিম -এ অ্যাক্সেস করুন"</string>
<string name="bluetooth_sap_notif_message" msgid="7138657801087500690">"ক্লায়েন্ট সংযোগ বিচ্ছিন্ন করার অনুরোধ জানাবেন?"</string>
<string name="bluetooth_sap_notif_disconnecting" msgid="819150843490233288">"সংযোগ বিচ্ছিন্ন করতে ক্লায়েন্টের জন্য অপেক্ষা করা"</string>
<string name="bluetooth_sap_notif_disconnect_button" msgid="3678476872583356919">"সংযোগ বিচ্ছিন্ন করুন"</string>
diff --git a/res/values-bs-rBA/strings.xml b/res/values-bs-rBA/strings.xml
index aca69f4b2..d426d6c8c 100644
--- a/res/values-bs-rBA/strings.xml
+++ b/res/values-bs-rBA/strings.xml
@@ -41,7 +41,7 @@
<string name="notification_receiving" msgid="4674648179652543984">"Bluetooth dijeljenje: Prima se fajl <xliff:g id="FILE">%1$s</xliff:g>"</string>
<string name="notification_received" msgid="3324588019186687985">"Bluetooth dijeljenje: Primljen fajl <xliff:g id="FILE">%1$s</xliff:g>"</string>
<string name="notification_received_fail" msgid="3619350997285714746">"Bluetooth dijeljenje: Fajl <xliff:g id="FILE">%1$s</xliff:g> nije primljen"</string>
- <string name="notification_sending" msgid="3035748958534983833">"Bluetooth dijeljenje: Šalje se fajl <xliff:g id="FILE">%1$s</xliff:g>"</string>
+ <string name="notification_sending" msgid="3035748958534983833">"Bluetooth dijeljenje: Slanje fajla <xliff:g id="FILE">%1$s</xliff:g>"</string>
<string name="notification_sent" msgid="9218710861333027778">"Bluetooth dijeljenje: Poslan fajl <xliff:g id="FILE">%1$s</xliff:g>"</string>
<string name="notification_sent_complete" msgid="302943281067557969">"Dovršeno 100%"</string>
<string name="notification_sent_fail" msgid="6696082233774569445">"Bluetooth dijeljenje: Fajl <xliff:g id="FILE">%1$s</xliff:g> nije poslan"</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 7c90422cb..193a34f58 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -38,13 +38,13 @@
<string name="incoming_file_confirm_timeout_content" msgid="172779756093975981">"Σημειώθηκε διακοπή κατά την αποδοχή ενός εισερχόμενου αρχείου από τον αποστολέα \"<xliff:g id="SENDER">%1$s</xliff:g>\""</string>
<string name="incoming_file_confirm_Notification_title" msgid="5573329005298936903">"Εισερχόμενο αρχείο"</string>
<string name="incoming_file_confirm_Notification_content" msgid="3359694069319644738">"Ο χρήστης <xliff:g id="SENDER">%1$s</xliff:g> πρόκειται να στείλει το αρχείο <xliff:g id="FILE">%2$s</xliff:g>"</string>
- <string name="notification_receiving" msgid="4674648179652543984">"Κοινή χρήση μέσω Bluetooth: Λήψη του <xliff:g id="FILE">%1$s</xliff:g>"</string>
- <string name="notification_received" msgid="3324588019186687985">"Κοινή χρήση μέσω Bluetooth: Ελήφθη το <xliff:g id="FILE">%1$s</xliff:g>"</string>
- <string name="notification_received_fail" msgid="3619350997285714746">"Κοινή χρήση μέσω Bluetooth: Το αρχείο <xliff:g id="FILE">%1$s</xliff:g> δεν ελήφθη"</string>
- <string name="notification_sending" msgid="3035748958534983833">"Κοινή χρήση μέσω Bluetooth: Αποστολή του <xliff:g id="FILE">%1$s</xliff:g>"</string>
- <string name="notification_sent" msgid="9218710861333027778">"Κοινή χρήση μέσω Bluetooth: Εστάλη το <xliff:g id="FILE">%1$s</xliff:g>"</string>
+ <string name="notification_receiving" msgid="4674648179652543984">"Μοιραστείτε μέσω Bluetooth: Λήψη του <xliff:g id="FILE">%1$s</xliff:g>"</string>
+ <string name="notification_received" msgid="3324588019186687985">"Μοιραστείτε μέσω Bluetooth: Ελήφθη το <xliff:g id="FILE">%1$s</xliff:g>"</string>
+ <string name="notification_received_fail" msgid="3619350997285714746">"Μοιραστείτε μέσω Bluetooth: Το αρχείο <xliff:g id="FILE">%1$s</xliff:g> δεν ελήφθη"</string>
+ <string name="notification_sending" msgid="3035748958534983833">"Μοιραστείτε μέσω Bluetooth: Αποστολή του <xliff:g id="FILE">%1$s</xliff:g>"</string>
+ <string name="notification_sent" msgid="9218710861333027778">"Μοιραστείτε μέσω Bluetooth: Εστάλη το <xliff:g id="FILE">%1$s</xliff:g>"</string>
<string name="notification_sent_complete" msgid="302943281067557969">"Ολοκληρώθηκε το 100%"</string>
- <string name="notification_sent_fail" msgid="6696082233774569445">"Κοινή χρήση μέσω Bluetooth: Το αρχείο <xliff:g id="FILE">%1$s</xliff:g> δεν εστάλη"</string>
+ <string name="notification_sent_fail" msgid="6696082233774569445">"Μοιραστείτε μέσω Bluetooth: Το αρχείο <xliff:g id="FILE">%1$s</xliff:g> δεν εστάλη"</string>
<string name="download_title" msgid="3353228219772092586">"Μεταφορά αρχείου"</string>
<string name="download_line1" msgid="4926604799202134144">"Από: \"<xliff:g id="SENDER">%1$s</xliff:g>\""</string>
<string name="download_line2" msgid="5876973543019417712">"Αρχείο: <xliff:g id="FILE">%1$s</xliff:g>"</string>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index ac0397a5a..d151385da 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -129,5 +129,5 @@
<string name="bluetooth_map_settings_title" msgid="7420332483392851321">"ब्लूटूथ संदेश साझाकरण सेटिंग"</string>
<string name="bluetooth_map_settings_no_account_slots_left" msgid="1796029082612965251">"खाता नहीं चुना जा सकता. 0 स्लॉट शेष"</string>
<string name="bluetooth_connected" msgid="6718623220072656906">"ब्लूटूथ ऑडियो कनेक्ट किया गया"</string>
- <string name="bluetooth_disconnected" msgid="3318303728981478873">"ब्लूटूथ ऑडियो डिस्कनेक्ट किया गया"</string>
+ <string name="bluetooth_disconnected" msgid="3318303728981478873">"ब्लूटूथ ऑडियो डिसकनेक्ट किया गया"</string>
</resources>
diff --git a/res/values-hi/strings_sap.xml b/res/values-hi/strings_sap.xml
index 0cb376c8c..9e9d76e55 100644
--- a/res/values-hi/strings_sap.xml
+++ b/res/values-hi/strings_sap.xml
@@ -3,8 +3,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="bluetooth_sap_notif_title" msgid="6877860822993195074">"ब्लूटूथ सिम ऐक्सेस"</string>
<string name="bluetooth_sap_notif_ticker" msgid="6807778527893726699">"ब्लूटूथ सिम ऐक्सेस"</string>
- <string name="bluetooth_sap_notif_message" msgid="7138657801087500690">"डिस्कनेक्ट करने के लिए क्लाइंट से अनुरोध करें?"</string>
- <string name="bluetooth_sap_notif_disconnecting" msgid="819150843490233288">"डिस्कनेक्ट करने के लिए क्लाइंट की प्रतीक्षा की जा रही है"</string>
- <string name="bluetooth_sap_notif_disconnect_button" msgid="3678476872583356919">"डिस्कनेक्ट करें"</string>
- <string name="bluetooth_sap_notif_force_disconnect_button" msgid="8144086340185532030">"बलपूर्वक डिस्कनेक्ट करें"</string>
+ <string name="bluetooth_sap_notif_message" msgid="7138657801087500690">"डिसकनेक्ट करने के लिए क्लाइंट से अनुरोध करें?"</string>
+ <string name="bluetooth_sap_notif_disconnecting" msgid="819150843490233288">"डिसकनेक्ट करने के लिए क्लाइंट की प्रतीक्षा की जा रही है"</string>
+ <string name="bluetooth_sap_notif_disconnect_button" msgid="3678476872583356919">"डिसकनेक्ट करें"</string>
+ <string name="bluetooth_sap_notif_force_disconnect_button" msgid="8144086340185532030">"बलपूर्वक डिसकनेक्ट करें"</string>
</resources>
diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml
index efef63b5c..a7f644a5a 100644
--- a/res/values-hy-rAM/strings.xml
+++ b/res/values-hy-rAM/strings.xml
@@ -19,7 +19,7 @@
<string name="permlab_bluetoothShareManager" msgid="311492132450338925">"Օգտվել ներբեռնման կառավարչից:"</string>
<string name="permdesc_bluetoothShareManager" msgid="8930572979123190223">"Թույլ է տալիս, որ ծրագիրը մատչի BluetoothShare կառավարչին և այն օգտագործի ֆայլեր փոխանցելու համար:"</string>
<string name="permlab_bluetoothWhitelist" msgid="7091552898592306386">"Մուտք bluetooth սարքի ցուցակին:"</string>
- <string name="permdesc_bluetoothWhitelist" msgid="5494513855192170109">"Թույլ է տալիս, որ ծրագիրը ժամանակավորապես մաքրի Bluetooth սարքի ցուցակը, ինչը թույլ է տալիս, որ այդ սարքը կարողանա ֆայլեր ուղարկել տվյալ սարքին առանց օգտվողի հաստատման:"</string>
+ <string name="permdesc_bluetoothWhitelist" msgid="5494513855192170109">"Թույլ է տալիս, որ ծրագիրը ժամանակավորապես մաքրի Bluetooth սարքի ցուցակը, ինչը թույլ է տալիս, որ այդ սարքը կարողանա ֆայլեր ուղարկել տվյալ սարքին առանց օգտատիրոջ հաստատման:"</string>
<string name="bt_share_picker_label" msgid="6268100924487046932">"Bluetooth"</string>
<string name="unknown_device" msgid="9221903979877041009">"Անհայտ սարք"</string>
<string name="unknownNumber" msgid="4994750948072751566">"Անհայտ"</string>
@@ -50,7 +50,7 @@
<string name="download_line2" msgid="5876973543019417712">"Ֆայլ՝ <xliff:g id="FILE">%1$s</xliff:g>"</string>
<string name="download_line3" msgid="4384821622908676061">"Ֆայլի չափը՝ <xliff:g id="SIZE">%1$s</xliff:g>"</string>
<string name="download_line4" msgid="8535996869722666525"></string>
- <string name="download_line5" msgid="3069560415845295386">"Ֆայլը ստացվում է..."</string>
+ <string name="download_line5" msgid="3069560415845295386">"Ֆայլի ստացում..."</string>
<string name="download_cancel" msgid="9177305996747500768">"Դադարեցնել"</string>
<string name="download_ok" msgid="5000360731674466039">"Թաքցնել"</string>
<string name="incoming_line1" msgid="2127419875681087545">"Ումից"</string>
@@ -93,7 +93,7 @@
<string name="status_success" msgid="239573225847565868">"Ֆայլերի փոխանցումը հաջողությամբ ավարտվել է:"</string>
<string name="status_not_accept" msgid="1695082417193780738">"Բովանդակությունը չի աջակցվում:"</string>
<string name="status_forbidden" msgid="613956401054050725">"Փոխանցումն արգելված է նպատակային սարքի կողմից:"</string>
- <string name="status_canceled" msgid="6664490318773098285">"Փոխանցումը չեղարկվել է օգտվողի կողմից:"</string>
+ <string name="status_canceled" msgid="6664490318773098285">"Փոխանցումը չեղարկվել է օգտատիրոջ կողմից:"</string>
<string name="status_file_error" msgid="3671917770630165299">"Կրիչի խնդիր:"</string>
<string name="status_no_sd_card" product="nosdcard" msgid="1112125377088421469">"USB կրիչ չկա:"</string>
<string name="status_no_sd_card" product="default" msgid="5760944071743325592">"SD քարտ չկա: Տեղադրեք SD քարտ` փոխանցված ֆայլերը պահպանելու համար:"</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index fd810468e..6bd88d219 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="permlab_bluetoothShareManager" msgid="311492132450338925">"Akses pengelola unduhan."</string>
+ <string name="permlab_bluetoothShareManager" msgid="311492132450338925">"Akses pengelola download."</string>
<string name="permdesc_bluetoothShareManager" msgid="8930572979123190223">"Izinkan apl mengakses pengelola BluetoothShare dan menggunakannya untuk mentransfer file."</string>
<string name="permlab_bluetoothWhitelist" msgid="7091552898592306386">"Memasukkan akses perangkat bluetooth ke dalam daftar putih."</string>
<string name="permdesc_bluetoothWhitelist" msgid="5494513855192170109">"Mengizinkan aplikasi memasukkan perangkat Bluetooth ke dalam daftar putih untuk sementara, yang memungkinkan perangkat tersebut mengirimkan file ke perangkat ini tanpa konfirmasi pengguna."</string>
diff --git a/res/values-kn-rIN/strings.xml b/res/values-kn-rIN/strings.xml
index 3ad57a976..50e53de59 100644
--- a/res/values-kn-rIN/strings.xml
+++ b/res/values-kn-rIN/strings.xml
@@ -21,14 +21,14 @@
<string name="permlab_bluetoothWhitelist" msgid="7091552898592306386">"ಶ್ವೇತಪಟ್ಟಿ ಬ್ಲೂಟೂತ್‌ ಸಾಧನವನ್ನು ಪ್ರವೇಶಿಸಿ."</string>
<string name="permdesc_bluetoothWhitelist" msgid="5494513855192170109">"ಬಳಕೆದಾರರ ದೃಢೀಕರಣ ಇಲ್ಲದೆ ಈ ಸಾಧನಕ್ಕೆ ಫೈಲ್‌ಗಳನ್ನು ಕಳುಹಿಸಲು ಬ್ಲೂಟೂತ್‌ ಸಾಧನವನ್ನು ತಾತ್ಕಾಲಿಕವಾಗಿ ಶ್ವೇತಪಟ್ಟಿ ಮಾಡಲು ಅಪ್ಲಿಕೇಶನ್‌‌ಗೆ ಅನುಮತಿಸುತ್ತದೆ."</string>
<string name="bt_share_picker_label" msgid="6268100924487046932">"ಬ್ಲೂಟೂತ್‌"</string>
- <string name="unknown_device" msgid="9221903979877041009">"ಅಜ್ಞಾತ ಸಾಧನ"</string>
- <string name="unknownNumber" msgid="4994750948072751566">"ಅಜ್ಞಾತ"</string>
+ <string name="unknown_device" msgid="9221903979877041009">"ಅಪರಿಚಿತ ಸಾಧನ"</string>
+ <string name="unknownNumber" msgid="4994750948072751566">"ಅಪರಿಚಿತ"</string>
<string name="airplane_error_title" msgid="2683839635115739939">"ಏರ್‌ಪ್ಲೇನ್ ಮೋಡ್"</string>
<string name="airplane_error_msg" msgid="8698965595254137230">"ಏರ್‌ಪ್ಲೇನ್‌ ಮೋಡ್‌ನಲ್ಲಿ ನೀವು ಬ್ಲೂಟೂತ್‌‌ ಬಳಸಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
<string name="bt_enable_title" msgid="8657832550503456572"></string>
<string name="bt_enable_line1" msgid="7203551583048149">"ಬ್ಲೂಟೂತ್‌ ಸೇವೆಗಳನ್ನು ಬಳಸಲು, ಮೊದಲು ನೀವದನ್ನು ಆನ್‌ ಮಾಡಬೇಕು."</string>
<string name="bt_enable_line2" msgid="4341936569415937994">"ಇದೀಗ ಬ್ಲೂಟೂತ್‌ ಆನ್‌ ಮಾಡುವುದೇ?"</string>
- <string name="bt_enable_cancel" msgid="1988832367505151727">"ರದ್ದುಮಾಡು"</string>
+ <string name="bt_enable_cancel" msgid="1988832367505151727">"ರದ್ದುಮಾಡಿ"</string>
<string name="bt_enable_ok" msgid="3432462749994538265">"ಆನ್ ಮಾಡು"</string>
<string name="incoming_file_confirm_title" msgid="8139874248612182627">"ಫೈಲ್ ವರ್ಗಾವಣೆ"</string>
<string name="incoming_file_confirm_content" msgid="2752605552743148036">"ಒಳಬರುವ ಫೈಲ್‌ಗಳನ್ನು ಸ್ವೀಕರಿಸುವುದೇ?"</string>
@@ -99,7 +99,7 @@
<string name="status_no_sd_card" product="default" msgid="5760944071743325592">"ಯಾವುದೇ SD ಕಾರ್ಡ್‌ಗಳಿಲ್ಲ. ವರ್ಗಾವಣೆ ಮಾಡಲಾದ ಫೈಲ್‌ಗಳನ್ನು ಉಳಿಸಲು SD ಕಾರ್ಡ್‌ವೊಂದನ್ನು ಸೇರಿಸಿ."</string>
<string name="status_connection_error" msgid="947681831523219891">"ಸಂಪರ್ಕವು ವಿಫಲವಾಗಿದೆ."</string>
<string name="status_protocol_error" msgid="3245444473429269539">"ವಿನಂತಿಯನ್ನು ಸರಿಯಾಗಿ ನಿರ್ವಹಿಸಲಾಗುವುದಿಲ್ಲ."</string>
- <string name="status_unknown_error" msgid="8156660554237824912">"ಅಜ್ಞಾತ ದೋಷ."</string>
+ <string name="status_unknown_error" msgid="8156660554237824912">"ಅಪರಿಚಿತ ದೋಷ."</string>
<string name="btopp_live_folder" msgid="7967791481444474554">"ಬ್ಲೂಟೂತ್‌ ಸ್ವೀಕರಿಸಲಾಗಿದೆ"</string>
<string name="download_success" msgid="7036160438766730871">"<xliff:g id="FILE_SIZE">%1$s</xliff:g> ಸ್ವೀಕರಿಸುವುದು ಪೂರ್ಣಗೊಂಡಿದೆ."</string>
<string name="upload_success" msgid="4014469387779648949">"<xliff:g id="FILE_SIZE">%1$s</xliff:g> ಕಳುಹಿಸುವುದು ಪೂರ್ಣಗೊಂಡಿದೆ."</string>
@@ -122,7 +122,7 @@
<string name="transfer_menu_clear" msgid="5854038118831427492">"ಪಟ್ಟಿಯಿಂದ ತೆರವುಗೊಳಿಸಿ"</string>
<string name="transfer_clear_dlg_title" msgid="2953444575556460386">"ತೆರವುಗೊಳಿಸು"</string>
<string name="bluetooth_map_settings_save" msgid="7635491847388074606">"ಉಳಿಸು"</string>
- <string name="bluetooth_map_settings_cancel" msgid="9205350798049865699">"ರದ್ದುಮಾಡು"</string>
+ <string name="bluetooth_map_settings_cancel" msgid="9205350798049865699">"ರದ್ದುಮಾಡಿ"</string>
<string name="bluetooth_map_settings_intro" msgid="6482369468223987562">"ಬ್ಲೂಟೂತ್‌ ಮೂಲಕ ಹಂಚಿಕೊಳ್ಳಲು ಬಯಸುವ ಖಾತೆಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ. ಸಂಪರ್ಕಪಡಿಸುವಾಗ ಖಾತೆಗಳಿಗೆ ಯಾವುದೇ ಪ್ರವೇಶವನ್ನು ನೀವು ಈಗಲೂ ಸಮ್ಮತಿಸಬೇಕಾಗುತ್ತದೆ."</string>
<string name="bluetooth_map_settings_count" msgid="4557473074937024833">"ಉಳಿದಿರುವ ಸ್ಲಾಟ್‌ಗಳು:"</string>
<string name="bluetooth_map_settings_app_icon" msgid="7105805610929114707">"ಅಪ್ಲಿಕೇಶನ್‌ ಐಕಾನ್‌"</string>
diff --git a/res/values-kn-rIN/strings_pbap_client.xml b/res/values-kn-rIN/strings_pbap_client.xml
index 186b23ae3..ced3f079e 100644
--- a/res/values-kn-rIN/strings_pbap_client.xml
+++ b/res/values-kn-rIN/strings_pbap_client.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="pbap_account_type" msgid="6257077123906049322">"com.android.bluetooth.pbapsink"</string>
+ <string name="pbap_account_type" msgid="6257077123906049322">"com.android.ಬ್ಲೂಟೂತ್.pbapsink"</string>
</resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 21fff3363..95e58fad3 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -91,7 +91,7 @@
<string name="status_pending" msgid="2503691772030877944">"Bestandsoverdracht nog niet gestart."</string>
<string name="status_running" msgid="6562808920311008696">"Bestandsoverdracht wordt uitgevoerd."</string>
<string name="status_success" msgid="239573225847565868">"Bestandsoverdracht is voltooid."</string>
- <string name="status_not_accept" msgid="1695082417193780738">"Inhoud wordt niet ondersteund."</string>
+ <string name="status_not_accept" msgid="1695082417193780738">"Content wordt niet ondersteund."</string>
<string name="status_forbidden" msgid="613956401054050725">"Overdracht wordt niet toegestaan door het doelapparaat."</string>
<string name="status_canceled" msgid="6664490318773098285">"Overdracht geannuleerd door gebruiker."</string>
<string name="status_file_error" msgid="3671917770630165299">"Probleem met opslagruimte."</string>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 03fed95d3..7228cfe2c 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -69,7 +69,7 @@
<string name="upload_succ_ok" msgid="7705428476405478828">"Потврди"</string>
<string name="upload_fail_line1" msgid="7899394672421491701">"Датотека није послата на <xliff:g id="RECIPIENT">%1$s</xliff:g>."</string>
<string name="upload_fail_line1_2" msgid="2108129204050841798">"Датотека: <xliff:g id="FILE">%1$s</xliff:g>"</string>
- <string name="upload_fail_ok" msgid="5807702461606714296">"Покушај поново"</string>
+ <string name="upload_fail_ok" msgid="5807702461606714296">"Пробај поново"</string>
<string name="upload_fail_cancel" msgid="9118496285835687125">"Затвори"</string>
<string name="bt_error_btn_ok" msgid="5965151173011534240">"Потврди"</string>
<string name="unknown_file" msgid="6092727753965095366">"Непозната датотека"</string>
@@ -87,7 +87,7 @@
<string name="bt_sm_2_1" product="nosdcard" msgid="352165168004521000">"Нема довољно простора у USB меморији да би се сачувала датотека пошиљаоца „<xliff:g id="SENDER">%1$s</xliff:g>“"</string>
<string name="bt_sm_2_1" product="default" msgid="1989018443456803630">"Нема довољно простора на SD картици да би се сачувала датотека пошиљаоца „<xliff:g id="SENDER">%1$s</xliff:g>“"</string>
<string name="bt_sm_2_2" msgid="2965243265852680543">"Потребан простор: <xliff:g id="SIZE">%1$s</xliff:g>"</string>
- <string name="ErrorTooManyRequests" msgid="8578277541472944529">"Превише захтева се обрађује. Покушајте поново касније."</string>
+ <string name="ErrorTooManyRequests" msgid="8578277541472944529">"Превише захтева се обрађује. Пробајте поново касније."</string>
<string name="status_pending" msgid="2503691772030877944">"Пренос датотеке још није почео."</string>
<string name="status_running" msgid="6562808920311008696">"Пренос датотеке је у току."</string>
<string name="status_success" msgid="239573225847565868">"Пренос датотеке је довршен."</string>
diff --git a/src/com/android/bluetooth/btservice/AdapterService.java b/src/com/android/bluetooth/btservice/AdapterService.java
index f4d029796..b6caeb273 100644
--- a/src/com/android/bluetooth/btservice/AdapterService.java
+++ b/src/com/android/bluetooth/btservice/AdapterService.java
@@ -1188,6 +1188,12 @@ public class AdapterService extends Service {
return service.getBondState(device);
}
+ public long getSupportedProfiles() {
+ AdapterService service = getService();
+ if (service == null) return 0;
+ return service.getSupportedProfiles();
+ }
+
public int getConnectionState(BluetoothDevice device) {
AdapterService service = getService();
if (service == null) return 0;
@@ -2189,6 +2195,10 @@ public class AdapterService extends Service {
return deviceProp.getBondState();
}
+ long getSupportedProfiles() {
+ return Config.getSupportedProfilesBitMask();
+ }
+
int getConnectionState(BluetoothDevice device) {
enforceCallingOrSelfPermission(BLUETOOTH_PERM, "Need BLUETOOTH permission");
byte[] addr = Utils.getBytesFromAddress(device.getAddress());
@@ -2704,28 +2714,6 @@ public class AdapterService extends Service {
return getResources().getInteger(R.integer.config_bluetooth_operating_voltage_mv) / 1000.0;
}
- private String getStateString() {
- int state = getState();
- switch (state) {
- case BluetoothAdapter.STATE_OFF:
- return "STATE_OFF";
- case BluetoothAdapter.STATE_TURNING_ON:
- return "STATE_TURNING_ON";
- case BluetoothAdapter.STATE_ON:
- return "STATE_ON";
- case BluetoothAdapter.STATE_TURNING_OFF:
- return "STATE_TURNING_OFF";
- case BluetoothAdapter.STATE_BLE_TURNING_ON:
- return "STATE_BLE_TURNING_ON";
- case BluetoothAdapter.STATE_BLE_ON:
- return "STATE_BLE_ON";
- case BluetoothAdapter.STATE_BLE_TURNING_OFF:
- return "STATE_BLE_TURNING_OFF";
- default:
- return "UNKNOWN STATE: " + state;
- }
- }
-
@Override
protected void dump(FileDescriptor fd, PrintWriter writer, String[] args) {
enforceCallingOrSelfPermission(android.Manifest.permission.DUMP, TAG);
@@ -2743,20 +2731,6 @@ public class AdapterService extends Service {
}
}
- long onDuration = System.currentTimeMillis() - mBluetoothStartTime;
- String onDurationString = String.format("%02d:%02d:%02d.%03d",
- (int)(onDuration / (1000 * 60 * 60)),
- (int)((onDuration / (1000 * 60)) % 60),
- (int)((onDuration / 1000) % 60),
- (int)(onDuration % 1000));
-
- writer.println("Bluetooth Status");
- writer.println(" enabled: " + isEnabled());
- writer.println(" state: " + getStateString());
- writer.println(" address: " + getAddress());
- writer.println(" name: " + getName());
- writer.println(" time since enabled: " + onDurationString + "\n");
-
writer.println("Bonded devices:");
for (BluetoothDevice device : getBondedDevices()) {
writer.println(" " + device.getAddress() +
diff --git a/src/com/android/bluetooth/btservice/Config.java b/src/com/android/bluetooth/btservice/Config.java
index 3254feb01..723a494f6 100644
--- a/src/com/android/bluetooth/btservice/Config.java
+++ b/src/com/android/bluetooth/btservice/Config.java
@@ -104,9 +104,7 @@ public class Config {
profiles.add(PROFILE_SERVICES[i]);
}
}
- int totalProfiles = profiles.size();
- SUPPORTED_PROFILES = new Class[totalProfiles];
- profiles.toArray(SUPPORTED_PROFILES);
+ SUPPORTED_PROFILES = profiles.toArray(new Class[profiles.size()]);
}
@SuppressWarnings("rawtypes")
@@ -135,7 +133,36 @@ public class Config {
return SUPPORTED_PROFILES;
}
+ static long getSupportedProfilesBitMask() {
+ long mask = 0;
+ for (final Class profileClass : getSupportedProfiles()) {
+ final int profileIndex = getProfileIndex(profileClass);
+
+ if (profileIndex != -1) {
+ mask |= 1 << getProfileIndex(profileClass);
+ }
+ }
+
+ return mask;
+ }
+
private static boolean isProfileDisabled(Context context, Class profile) {
+ final int profileIndex = getProfileIndex(profile);
+
+ if (profileIndex == -1) {
+ Log.w(TAG, "Could not find profile bit mask");
+ return false;
+ }
+
+ final ContentResolver resolver = context.getContentResolver();
+ final long disabledProfilesBitMask = Settings.Global.getLong(resolver,
+ Settings.Global.BLUETOOTH_DISABLED_PROFILES, 0);
+ final long profileBit = 1 << profileIndex;
+
+ return (disabledProfilesBitMask & profileBit) != 0;
+ }
+
+ private static int getProfileIndex(Class profile) {
int profileIndex = -1;
if (profile == HeadsetService.class) {
@@ -164,16 +191,6 @@ public class Config {
profileIndex = BluetoothProfile.PBAP_CLIENT;
}
- if (profileIndex == -1) {
- Log.d(TAG, "Could not find profile bit mask");
- return false;
- }
-
- final ContentResolver resolver = context.getContentResolver();
- final long disabledProfilesBitMask = Settings.Global.getLong(resolver,
- Settings.Global.BLUETOOTH_DISABLED_PROFILES, 0);
- long profileBit = 1 << profileIndex;
-
- return (disabledProfilesBitMask & profileBit) != 0;
+ return profileIndex;
}
}
diff --git a/src/com/android/bluetooth/btservice/RemoteDevices.java b/src/com/android/bluetooth/btservice/RemoteDevices.java
index 94c469d8f..08f694324 100644
--- a/src/com/android/bluetooth/btservice/RemoteDevices.java
+++ b/src/com/android/bluetooth/btservice/RemoteDevices.java
@@ -245,8 +245,9 @@ final class RemoteDevices {
DeviceProperties prop = getDeviceProperties(device);
Intent intent = new Intent(BluetoothDevice.ACTION_UUID);
intent.putExtra(BluetoothDevice.EXTRA_DEVICE, device);
- intent.putExtra(BluetoothDevice.EXTRA_UUID, prop == null? null: prop.mUuids);
- mAdapterService.initProfilePriorities(device, prop == null? null: prop.mUuids);
+ intent.putExtra(BluetoothDevice.EXTRA_UUID, prop == null ? null : prop.mUuids);
+ mAdapterService.initProfilePriorities(device, prop == null ? null : prop.mUuids);
+
mAdapterService.sendBroadcast(intent, AdapterService.BLUETOOTH_ADMIN_PERM);
//Remove the outstanding UUID request
diff --git a/src/com/android/bluetooth/btservice/bluetooth.proto b/src/com/android/bluetooth/btservice/bluetooth.proto
index 77ded7807..c616c10a2 100644
--- a/src/com/android/bluetooth/btservice/bluetooth.proto
+++ b/src/com/android/bluetooth/btservice/bluetooth.proto
@@ -28,6 +28,18 @@ message BluetoothLog {
// Number of bonded devices.
optional int32 num_bonded_devices = 5;
+
+ // Number of BluetoothSession including discarded ones beyond capacity
+ optional int64 num_bluetooth_session = 6;
+
+ // Number of PairEvent including discarded ones beyond capacity
+ optional int64 num_pair_event = 7;
+
+ // Number of WakeEvent including discarded ones beyond capacity
+ optional int64 num_wake_event = 8;
+
+ // Number of ScanEvent including discarded ones beyond capacity
+ optional int64 num_scan_event = 9;
}
// The information about the device.
@@ -82,7 +94,7 @@ message BluetoothSession {
// The information about the RFComm session.
optional RFCommSession rfcomm_session = 6;
- // The information about the A2DP session.
+ // The information about the A2DP audio session.
optional A2DPSession a2dp_session = 7;
}
@@ -95,7 +107,7 @@ message RFCommSession {
optional int32 tx_bytes = 2;
}
-// Session information that gets logged for every A2DP session.
+// Session information that gets logged for A2DP session.
message A2DPSession {
// Media timer in milliseconds.
@@ -118,6 +130,9 @@ message A2DPSession {
// Buffer underruns count.
optional int32 buffer_underruns_count = 7;
+
+ // Total audio time in this A2DP session
+ optional int64 audio_duration_millis = 8;
}
message PairEvent {
diff --git a/src/com/android/bluetooth/gatt/AdvertiseManager.java b/src/com/android/bluetooth/gatt/AdvertiseManager.java
index 3fb4aa945..4e6055fc8 100644
--- a/src/com/android/bluetooth/gatt/AdvertiseManager.java
+++ b/src/com/android/bluetooth/gatt/AdvertiseManager.java
@@ -157,7 +157,7 @@ class AdvertiseManager {
}
}
- private AdvertiseClient getAdvertiseClient(int clientIf) {
+ public AdvertiseClient getAdvertiseClient(int clientIf) {
for (AdvertiseClient client : mAdvertiseClients) {
if (client.clientIf == clientIf) {
return client;
@@ -316,6 +316,9 @@ class AdvertiseManager {
return false;
}
setAdvertisingData(client, client.advertiseData, false);
+ if (client.scanResponse != null) {
+ setAdvertisingData(client, client.scanResponse, true);
+ }
return true;
}
diff --git a/src/com/android/bluetooth/gatt/AppScanStats.java b/src/com/android/bluetooth/gatt/AppScanStats.java
index e73f41512..7eed888b5 100644
--- a/src/com/android/bluetooth/gatt/AppScanStats.java
+++ b/src/com/android/bluetooth/gatt/AppScanStats.java
@@ -64,6 +64,9 @@ import com.android.bluetooth.btservice.BluetoothProto;
// earliest recorded scan exits this window.
static final long EXCESSIVE_SCANNING_PERIOD_MS = 30 * 1000;
+ // Maximum msec before scan gets downgraded to opportunistic
+ static final int SCAN_TIMEOUT_MS = 30 * 60 * 1000;
+
String appName;
int scansStarted = 0;
int scansStopped = 0;
@@ -160,6 +163,14 @@ import com.android.bluetooth.btservice.BluetoothProto;
EXCESSIVE_SCANNING_PERIOD_MS;
}
+ synchronized boolean isScanningTooLong() {
+ if (lastScans.isEmpty() || !isScanning) {
+ return false;
+ }
+
+ return (System.currentTimeMillis() - startTime) > SCAN_TIMEOUT_MS;
+ }
+
// This function truncates the app name for privacy reasons. Apps with
// four part package names or more get truncated to three parts, and apps
// with three part package names names get truncated to two. Apps with two
diff --git a/src/com/android/bluetooth/gatt/GattService.java b/src/com/android/bluetooth/gatt/GattService.java
index f8bef759d..3f004b417 100644
--- a/src/com/android/bluetooth/gatt/GattService.java
+++ b/src/com/android/bluetooth/gatt/GattService.java
@@ -1435,6 +1435,12 @@ public class GattService extends ProfileService {
if (DBG) Log.d(TAG, "unregisterClient() - clientIf=" + clientIf);
mClientMap.remove(clientIf);
+
+ AdvertiseClient client = mAdvertiseManager.getAdvertiseClient(clientIf);
+ if (client != null && !client.appDied) {
+ stopMultiAdvertising(client);
+ }
+
gattClientUnregisterAppNative(clientIf);
}
diff --git a/src/com/android/bluetooth/gatt/ScanManager.java b/src/com/android/bluetooth/gatt/ScanManager.java
index 9ed405901..4e69c08cf 100644
--- a/src/com/android/bluetooth/gatt/ScanManager.java
+++ b/src/com/android/bluetooth/gatt/ScanManager.java
@@ -70,9 +70,6 @@ public class ScanManager {
private static final int MSG_FLUSH_BATCH_RESULTS = 2;
private static final int MSG_SCAN_TIMEOUT = 3;
- // Maximum msec before scan gets downgraded to opportunistic
- private static final int SCAN_TIMEOUT_MS = 30 * 60 * 1000;
-
private static final String ACTION_REFRESH_BATCHED_SCAN =
"com.android.bluetooth.gatt.REFRESH_BATCHED_SCAN";
@@ -209,7 +206,7 @@ public class ScanManager {
handleFlushBatchResults(client);
break;
case MSG_SCAN_TIMEOUT:
- mScanNative.regularScanTimeout();
+ mScanNative.regularScanTimeout(client);
break;
default:
// Shouldn't happen.
@@ -244,8 +241,7 @@ public class ScanManager {
Message msg = mHandler.obtainMessage(MSG_SCAN_TIMEOUT);
msg.obj = client;
// Only one timeout message should exist at any time
- mHandler.removeMessages(MSG_SCAN_TIMEOUT);
- mHandler.sendMessageDelayed(msg, SCAN_TIMEOUT_MS);
+ mHandler.sendMessageDelayed(msg, AppScanStats.SCAN_TIMEOUT_MS);
}
}
@@ -689,14 +685,12 @@ public class ScanManager {
removeScanFilters(client.clientIf);
}
- void regularScanTimeout() {
- for (ScanClient client : mRegularScanClients) {
- if (!isExemptFromScanDowngrade(client)) {
- Log.w(TAG, "Moving scan client to opportunistic (clientIf "
- + client.clientIf + ")");
- setOpportunisticScanClient(client);
- client.stats.setScanTimeout();
- }
+ void regularScanTimeout(ScanClient client) {
+ if (!isExemptFromScanDowngrade(client) && client.stats.isScanningTooLong()) {
+ Log.w(TAG,
+ "Moving scan client to opportunistic (clientIf " + client.clientIf + ")");
+ setOpportunisticScanClient(client);
+ client.stats.setScanTimeout();
}
// The scan should continue for background scans
diff --git a/src/com/android/bluetooth/hfpclient/HeadsetClientService.java b/src/com/android/bluetooth/hfpclient/HeadsetClientService.java
index 31125c0fa..da41175c9 100644
--- a/src/com/android/bluetooth/hfpclient/HeadsetClientService.java
+++ b/src/com/android/bluetooth/hfpclient/HeadsetClientService.java
@@ -93,7 +93,9 @@ public class HeadsetClientService extends ProfileService {
} catch (Exception e) {
Log.w(TAG, "Unable to unregister broadcast receiver", e);
}
- mStateMachine.doQuit();
+ if (mStateMachine != null) {
+ mStateMachine.doQuit();
+ }
// Stop the HfpClientConnectionService.
Intent stopIntent = new Intent(this, HfpClientConnectionService.class);
@@ -168,6 +170,8 @@ public class HeadsetClientService extends ProfileService {
if (mService != null && mService.isAvailable()) {
return mService;
}
+
+ Log.e(TAG, "HeadsetClientService is not available.");
return null;
}
@@ -489,6 +493,7 @@ public class HeadsetClientService extends ProfileService {
"Need BLUETOOTH ADMIN permission");
if (getPriority(device) == BluetoothProfile.PRIORITY_OFF) {
+ Log.w(TAG, "Connection not allowed: <" + device.getAddress() + "> is PRIORITY_OFF");
return false;
}
@@ -503,6 +508,7 @@ public class HeadsetClientService extends ProfileService {
int connectionState = mStateMachine.getConnectionState(device);
if (connectionState == BluetoothProfile.STATE_CONNECTED ||
connectionState == BluetoothProfile.STATE_CONNECTING) {
+ Log.w(TAG, "Unable to connect: state is CONNECTING or CONNECTED.");
return false;
}
diff --git a/src/com/android/bluetooth/hfpclient/HeadsetClientStateMachine.java b/src/com/android/bluetooth/hfpclient/HeadsetClientStateMachine.java
index 76ef46301..66e25c811 100755
--- a/src/com/android/bluetooth/hfpclient/HeadsetClientStateMachine.java
+++ b/src/com/android/bluetooth/hfpclient/HeadsetClientStateMachine.java
@@ -1036,6 +1036,14 @@ final class HeadsetClientStateMachine extends StateMachine {
return;
}
+ if (flag == BluetoothHeadsetClient.CALL_ACCEPT_HOLD) {
+ // HFP is disabled when a call is put on hold to ensure correct audio routing for
+ // cellular calls accepted while an HFP call is in progress. Reenable HFP when the HFP
+ // call is put off hold.
+ Log.d(TAG,"hfp_enable=true");
+ mAudioManager.setParameters("hfp_enable=true");
+ }
+
if (handleCallActionNative(action, 0)) {
addQueuedAction(ACCEPT_CALL, action);
} else {
@@ -1103,6 +1111,11 @@ final class HeadsetClientStateMachine extends StateMachine {
action = HeadsetClientHalConstants.CALL_ACTION_CHLD_2;
}
+ // Set HFP enable to false in case the call is being held to accept a cellular call. This
+ // allows the cellular call's audio to be correctly routed.
+ Log.d(TAG,"hfp_enable=false");
+ mAudioManager.setParameters("hfp_enable=false");
+
if (handleCallActionNative(action, 0)) {
addQueuedAction(HOLD_CALL, action);
} else {
diff --git a/src/com/android/bluetooth/map/BluetoothMapContent.java b/src/com/android/bluetooth/map/BluetoothMapContent.java
index 4f42bfb58..0bff19bd6 100755
--- a/src/com/android/bluetooth/map/BluetoothMapContent.java
+++ b/src/com/android/bluetooth/map/BluetoothMapContent.java
@@ -1658,10 +1658,8 @@ public class BluetoothMapContent {
private String setWhereFilterFolderType(BluetoothMapFolderElement folderElement,
FilterInfo fi) {
- String where = "";
- if(folderElement.shouldIgnore()) {
- where = "1=1";
- } else {
+ String where = "1=1";
+ if (!folderElement.shouldIgnore()) {
if (fi.mMsgType == FilterInfo.TYPE_SMS) {
where = setWhereFilterFolderTypeSms(folderElement.getName());
} else if (fi.mMsgType == FilterInfo.TYPE_MMS) {
@@ -1672,6 +1670,7 @@ public class BluetoothMapContent {
where = setWhereFilterFolderTypeIm(folderElement.getFolderId());
}
}
+
return where;
}