Loading android/app/src/com/android/bluetooth/btservice/AdapterService.java +1 −5 Original line number Diff line number Diff line Loading @@ -66,8 +66,6 @@ import android.util.Slog; import android.util.SparseArray; import android.util.StatsLog; import androidx.room.Room; import com.android.bluetooth.BluetoothMetricsProto; import com.android.bluetooth.Utils; import com.android.bluetooth.btservice.RemoteDevices.DeviceProperties; Loading Loading @@ -426,9 +424,7 @@ public class AdapterService extends Service { mActiveDeviceManager.start(); mDatabaseManager = new DatabaseManager(this); MetadataDatabase database = Room.databaseBuilder(this, MetadataDatabase.class, MetadataDatabase.DATABASE_NAME).build(); mDatabaseManager.start(database); mDatabaseManager.start(MetadataDatabase.createDatabase(this)); mSilenceDeviceManager = new SilenceDeviceManager(this, new ServiceFactory(), Looper.getMainLooper()); Loading android/app/src/com/android/bluetooth/btservice/storage/DatabaseManager.java +10 −4 Original line number Diff line number Diff line Loading @@ -267,8 +267,9 @@ public class DatabaseManager { * {@link BluetoothProfile#HEADSET_CLIENT}, {@link BluetoothProfile#A2DP}, * {@link BluetoothProfile#A2DP_SINK}, {@link BluetoothProfile#HID_HOST}, * {@link BluetoothProfile#PAN}, {@link BluetoothProfile#PBAP}, * {@link BluetoothProfile#MAP}, {@link BluetoothProfile#MAP_CLIENT}, * {@link BluetoothProfile#SAP}, {@link BluetoothProfile#HEARING_AID} * {@link BluetoothProfile#PBAP_CLIENT}, {@link BluetoothProfile#MAP}, * {@link BluetoothProfile#MAP_CLIENT}, {@link BluetoothProfile#SAP}, * {@link BluetoothProfile#HEARING_AID} * @param newPriority the priority to set; one of * {@link BluetoothProfile#PRIORITY_UNDEFINED}, * {@link BluetoothProfile#PRIORITY_OFF}, Loading Loading @@ -325,8 +326,9 @@ public class DatabaseManager { * {@link BluetoothProfile#HEADSET_CLIENT}, {@link BluetoothProfile#A2DP}, * {@link BluetoothProfile#A2DP_SINK}, {@link BluetoothProfile#HID_HOST}, * {@link BluetoothProfile#PAN}, {@link BluetoothProfile#PBAP}, * {@link BluetoothProfile#MAP}, {@link BluetoothProfile#MAP_CLIENT}, * {@link BluetoothProfile#SAP}, {@link BluetoothProfile#HEARING_AID} * {@link BluetoothProfile#PBAP_CLIENT}, {@link BluetoothProfile#MAP}, * {@link BluetoothProfile#MAP_CLIENT}, {@link BluetoothProfile#SAP}, * {@link BluetoothProfile#HEARING_AID} * @return the profile priority of the device; one of * {@link BluetoothProfile#PRIORITY_UNDEFINED}, * {@link BluetoothProfile#PRIORITY_OFF}, Loading Loading @@ -672,6 +674,9 @@ public class DatabaseManager { int pbapPriority = Settings.Global.getInt(contentResolver, Settings.Global.getBluetoothPbapClientPriorityKey(device.getAddress()), BluetoothProfile.PRIORITY_UNDEFINED); int pbapClientPriority = Settings.Global.getInt(contentResolver, Settings.Global.getBluetoothPbapClientPriorityKey(device.getAddress()), BluetoothProfile.PRIORITY_UNDEFINED); int sapPriority = Settings.Global.getInt(contentResolver, Settings.Global.getBluetoothSapPriorityKey(device.getAddress()), BluetoothProfile.PRIORITY_UNDEFINED); Loading @@ -691,6 +696,7 @@ public class DatabaseManager { data.setProfilePriority(BluetoothProfile.HID_HOST, hidHostPriority); data.setProfilePriority(BluetoothProfile.PAN, panPriority); data.setProfilePriority(BluetoothProfile.PBAP, pbapPriority); data.setProfilePriority(BluetoothProfile.PBAP_CLIENT, pbapClientPriority); data.setProfilePriority(BluetoothProfile.MAP, mapPriority); data.setProfilePriority(BluetoothProfile.MAP_CLIENT, mapClientPriority); data.setProfilePriority(BluetoothProfile.SAP, sapPriority); Loading android/app/src/com/android/bluetooth/btservice/storage/Metadata.java +29 −24 Original line number Diff line number Diff line Loading @@ -37,7 +37,7 @@ class Metadata { public boolean migrated; @Embedded public ProfilePrioritiesEntity profilePriorites; public ProfilePrioritiesEntity profilePriorities; @Embedded @NonNull Loading @@ -49,7 +49,7 @@ class Metadata { Metadata(String address) { this.address = address; migrated = false; profilePriorites = new ProfilePrioritiesEntity(); profilePriorities = new ProfilePrioritiesEntity(); publicMetadata = new CustomizedMetadataEntity(); a2dpSupportsOptionalCodecs = BluetoothA2dp.OPTIONAL_CODECS_SUPPORT_UNKNOWN; a2dpOptionalCodecsEnabled = BluetoothA2dp.OPTIONAL_CODECS_PREF_UNKNOWN; Loading @@ -62,37 +62,40 @@ class Metadata { void setProfilePriority(int profile, int priority) { switch (profile) { case BluetoothProfile.A2DP: profilePriorites.a2dp_priority = priority; profilePriorities.a2dp_priority = priority; break; case BluetoothProfile.A2DP_SINK: profilePriorites.a2dp_sink_priority = priority; profilePriorities.a2dp_sink_priority = priority; break; case BluetoothProfile.HEADSET: profilePriorites.hfp_priority = priority; profilePriorities.hfp_priority = priority; break; case BluetoothProfile.HEADSET_CLIENT: profilePriorites.hfp_client_priority = priority; profilePriorities.hfp_client_priority = priority; break; case BluetoothProfile.HID_HOST: profilePriorites.hid_host_priority = priority; profilePriorities.hid_host_priority = priority; break; case BluetoothProfile.PAN: profilePriorites.pan_priority = priority; profilePriorities.pan_priority = priority; break; case BluetoothProfile.PBAP: profilePriorites.pbap_priority = priority; profilePriorities.pbap_priority = priority; break; case BluetoothProfile.PBAP_CLIENT: profilePriorities.pbap_client_priority = priority; break; case BluetoothProfile.MAP: profilePriorites.map_priority = priority; profilePriorities.map_priority = priority; break; case BluetoothProfile.MAP_CLIENT: profilePriorites.map_client_priority = priority; profilePriorities.map_client_priority = priority; break; case BluetoothProfile.SAP: profilePriorites.sap_priority = priority; profilePriorities.sap_priority = priority; break; case BluetoothProfile.HEARING_AID: profilePriorites.hearing_aid_priority = priority; profilePriorities.hearing_aid_priority = priority; break; default: throw new IllegalArgumentException("invalid profile " + profile); Loading @@ -102,27 +105,29 @@ class Metadata { int getProfilePriority(int profile) { switch (profile) { case BluetoothProfile.A2DP: return profilePriorites.a2dp_priority; return profilePriorities.a2dp_priority; case BluetoothProfile.A2DP_SINK: return profilePriorites.a2dp_sink_priority; return profilePriorities.a2dp_sink_priority; case BluetoothProfile.HEADSET: return profilePriorites.hfp_priority; return profilePriorities.hfp_priority; case BluetoothProfile.HEADSET_CLIENT: return profilePriorites.hfp_client_priority; return profilePriorities.hfp_client_priority; case BluetoothProfile.HID_HOST: return profilePriorites.hid_host_priority; return profilePriorities.hid_host_priority; case BluetoothProfile.PAN: return profilePriorites.pan_priority; return profilePriorities.pan_priority; case BluetoothProfile.PBAP: return profilePriorites.pbap_priority; return profilePriorities.pbap_priority; case BluetoothProfile.PBAP_CLIENT: return profilePriorities.pbap_client_priority; case BluetoothProfile.MAP: return profilePriorites.map_priority; return profilePriorities.map_priority; case BluetoothProfile.MAP_CLIENT: return profilePriorites.map_client_priority; return profilePriorities.map_client_priority; case BluetoothProfile.SAP: return profilePriorites.sap_priority; return profilePriorities.sap_priority; case BluetoothProfile.HEARING_AID: return profilePriorites.hearing_aid_priority; return profilePriorities.hearing_aid_priority; } return BluetoothProfile.PRIORITY_UNDEFINED; } Loading android/app/src/com/android/bluetooth/btservice/storage/MetadataDatabase.java +26 −1 Original line number Diff line number Diff line Loading @@ -16,15 +16,20 @@ package com.android.bluetooth.btservice.storage; import android.content.Context; import androidx.room.Database; import androidx.room.Room; import androidx.room.RoomDatabase; import androidx.room.migration.Migration; import androidx.sqlite.db.SupportSQLiteDatabase; import java.util.List; /** * MetadataDatabase is a Room database stores Bluetooth persistence data */ @Database(entities = {Metadata.class}, exportSchema = false, version = 100) @Database(entities = {Metadata.class}, exportSchema = false, version = 101) public abstract class MetadataDatabase extends RoomDatabase { /** * The database file name Loading @@ -33,6 +38,19 @@ public abstract class MetadataDatabase extends RoomDatabase { protected abstract MetadataDao mMetadataDao(); /** * Create a {@link MetadataDatabase} database * * @param context the Context to create database * @return the created {@link MetadataDatabase} */ public static MetadataDatabase createDatabase(Context context) { return Room.databaseBuilder(context, MetadataDatabase.class, DATABASE_NAME) .addMigrations(MIGRATION_100_101) .build(); } /** * Insert a {@link Metadata} to database * Loading Loading @@ -66,4 +84,11 @@ public abstract class MetadataDatabase extends RoomDatabase { public void deleteAll() { mMetadataDao().deleteAll(); } private static final Migration MIGRATION_100_101 = new Migration(100, 101) { @Override public void migrate(SupportSQLiteDatabase database) { database.execSQL("ALTER TABLE metadata ADD COLUMN `pbap_client_priority` INTEGER"); } }; } android/app/src/com/android/bluetooth/btservice/storage/ProfilePrioritiesEntity.java +2 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ class ProfilePrioritiesEntity { public int hid_host_priority; public int pan_priority; public int pbap_priority; public int pbap_client_priority; public int map_priority; public int sap_priority; public int hearing_aid_priority; Loading @@ -43,6 +44,7 @@ class ProfilePrioritiesEntity { hid_host_priority = BluetoothProfile.PRIORITY_UNDEFINED; pan_priority = BluetoothProfile.PRIORITY_UNDEFINED; pbap_priority = BluetoothProfile.PRIORITY_UNDEFINED; pbap_client_priority = BluetoothProfile.PRIORITY_UNDEFINED; map_priority = BluetoothProfile.PRIORITY_UNDEFINED; sap_priority = BluetoothProfile.PRIORITY_UNDEFINED; hearing_aid_priority = BluetoothProfile.PRIORITY_UNDEFINED; Loading Loading
android/app/src/com/android/bluetooth/btservice/AdapterService.java +1 −5 Original line number Diff line number Diff line Loading @@ -66,8 +66,6 @@ import android.util.Slog; import android.util.SparseArray; import android.util.StatsLog; import androidx.room.Room; import com.android.bluetooth.BluetoothMetricsProto; import com.android.bluetooth.Utils; import com.android.bluetooth.btservice.RemoteDevices.DeviceProperties; Loading Loading @@ -426,9 +424,7 @@ public class AdapterService extends Service { mActiveDeviceManager.start(); mDatabaseManager = new DatabaseManager(this); MetadataDatabase database = Room.databaseBuilder(this, MetadataDatabase.class, MetadataDatabase.DATABASE_NAME).build(); mDatabaseManager.start(database); mDatabaseManager.start(MetadataDatabase.createDatabase(this)); mSilenceDeviceManager = new SilenceDeviceManager(this, new ServiceFactory(), Looper.getMainLooper()); Loading
android/app/src/com/android/bluetooth/btservice/storage/DatabaseManager.java +10 −4 Original line number Diff line number Diff line Loading @@ -267,8 +267,9 @@ public class DatabaseManager { * {@link BluetoothProfile#HEADSET_CLIENT}, {@link BluetoothProfile#A2DP}, * {@link BluetoothProfile#A2DP_SINK}, {@link BluetoothProfile#HID_HOST}, * {@link BluetoothProfile#PAN}, {@link BluetoothProfile#PBAP}, * {@link BluetoothProfile#MAP}, {@link BluetoothProfile#MAP_CLIENT}, * {@link BluetoothProfile#SAP}, {@link BluetoothProfile#HEARING_AID} * {@link BluetoothProfile#PBAP_CLIENT}, {@link BluetoothProfile#MAP}, * {@link BluetoothProfile#MAP_CLIENT}, {@link BluetoothProfile#SAP}, * {@link BluetoothProfile#HEARING_AID} * @param newPriority the priority to set; one of * {@link BluetoothProfile#PRIORITY_UNDEFINED}, * {@link BluetoothProfile#PRIORITY_OFF}, Loading Loading @@ -325,8 +326,9 @@ public class DatabaseManager { * {@link BluetoothProfile#HEADSET_CLIENT}, {@link BluetoothProfile#A2DP}, * {@link BluetoothProfile#A2DP_SINK}, {@link BluetoothProfile#HID_HOST}, * {@link BluetoothProfile#PAN}, {@link BluetoothProfile#PBAP}, * {@link BluetoothProfile#MAP}, {@link BluetoothProfile#MAP_CLIENT}, * {@link BluetoothProfile#SAP}, {@link BluetoothProfile#HEARING_AID} * {@link BluetoothProfile#PBAP_CLIENT}, {@link BluetoothProfile#MAP}, * {@link BluetoothProfile#MAP_CLIENT}, {@link BluetoothProfile#SAP}, * {@link BluetoothProfile#HEARING_AID} * @return the profile priority of the device; one of * {@link BluetoothProfile#PRIORITY_UNDEFINED}, * {@link BluetoothProfile#PRIORITY_OFF}, Loading Loading @@ -672,6 +674,9 @@ public class DatabaseManager { int pbapPriority = Settings.Global.getInt(contentResolver, Settings.Global.getBluetoothPbapClientPriorityKey(device.getAddress()), BluetoothProfile.PRIORITY_UNDEFINED); int pbapClientPriority = Settings.Global.getInt(contentResolver, Settings.Global.getBluetoothPbapClientPriorityKey(device.getAddress()), BluetoothProfile.PRIORITY_UNDEFINED); int sapPriority = Settings.Global.getInt(contentResolver, Settings.Global.getBluetoothSapPriorityKey(device.getAddress()), BluetoothProfile.PRIORITY_UNDEFINED); Loading @@ -691,6 +696,7 @@ public class DatabaseManager { data.setProfilePriority(BluetoothProfile.HID_HOST, hidHostPriority); data.setProfilePriority(BluetoothProfile.PAN, panPriority); data.setProfilePriority(BluetoothProfile.PBAP, pbapPriority); data.setProfilePriority(BluetoothProfile.PBAP_CLIENT, pbapClientPriority); data.setProfilePriority(BluetoothProfile.MAP, mapPriority); data.setProfilePriority(BluetoothProfile.MAP_CLIENT, mapClientPriority); data.setProfilePriority(BluetoothProfile.SAP, sapPriority); Loading
android/app/src/com/android/bluetooth/btservice/storage/Metadata.java +29 −24 Original line number Diff line number Diff line Loading @@ -37,7 +37,7 @@ class Metadata { public boolean migrated; @Embedded public ProfilePrioritiesEntity profilePriorites; public ProfilePrioritiesEntity profilePriorities; @Embedded @NonNull Loading @@ -49,7 +49,7 @@ class Metadata { Metadata(String address) { this.address = address; migrated = false; profilePriorites = new ProfilePrioritiesEntity(); profilePriorities = new ProfilePrioritiesEntity(); publicMetadata = new CustomizedMetadataEntity(); a2dpSupportsOptionalCodecs = BluetoothA2dp.OPTIONAL_CODECS_SUPPORT_UNKNOWN; a2dpOptionalCodecsEnabled = BluetoothA2dp.OPTIONAL_CODECS_PREF_UNKNOWN; Loading @@ -62,37 +62,40 @@ class Metadata { void setProfilePriority(int profile, int priority) { switch (profile) { case BluetoothProfile.A2DP: profilePriorites.a2dp_priority = priority; profilePriorities.a2dp_priority = priority; break; case BluetoothProfile.A2DP_SINK: profilePriorites.a2dp_sink_priority = priority; profilePriorities.a2dp_sink_priority = priority; break; case BluetoothProfile.HEADSET: profilePriorites.hfp_priority = priority; profilePriorities.hfp_priority = priority; break; case BluetoothProfile.HEADSET_CLIENT: profilePriorites.hfp_client_priority = priority; profilePriorities.hfp_client_priority = priority; break; case BluetoothProfile.HID_HOST: profilePriorites.hid_host_priority = priority; profilePriorities.hid_host_priority = priority; break; case BluetoothProfile.PAN: profilePriorites.pan_priority = priority; profilePriorities.pan_priority = priority; break; case BluetoothProfile.PBAP: profilePriorites.pbap_priority = priority; profilePriorities.pbap_priority = priority; break; case BluetoothProfile.PBAP_CLIENT: profilePriorities.pbap_client_priority = priority; break; case BluetoothProfile.MAP: profilePriorites.map_priority = priority; profilePriorities.map_priority = priority; break; case BluetoothProfile.MAP_CLIENT: profilePriorites.map_client_priority = priority; profilePriorities.map_client_priority = priority; break; case BluetoothProfile.SAP: profilePriorites.sap_priority = priority; profilePriorities.sap_priority = priority; break; case BluetoothProfile.HEARING_AID: profilePriorites.hearing_aid_priority = priority; profilePriorities.hearing_aid_priority = priority; break; default: throw new IllegalArgumentException("invalid profile " + profile); Loading @@ -102,27 +105,29 @@ class Metadata { int getProfilePriority(int profile) { switch (profile) { case BluetoothProfile.A2DP: return profilePriorites.a2dp_priority; return profilePriorities.a2dp_priority; case BluetoothProfile.A2DP_SINK: return profilePriorites.a2dp_sink_priority; return profilePriorities.a2dp_sink_priority; case BluetoothProfile.HEADSET: return profilePriorites.hfp_priority; return profilePriorities.hfp_priority; case BluetoothProfile.HEADSET_CLIENT: return profilePriorites.hfp_client_priority; return profilePriorities.hfp_client_priority; case BluetoothProfile.HID_HOST: return profilePriorites.hid_host_priority; return profilePriorities.hid_host_priority; case BluetoothProfile.PAN: return profilePriorites.pan_priority; return profilePriorities.pan_priority; case BluetoothProfile.PBAP: return profilePriorites.pbap_priority; return profilePriorities.pbap_priority; case BluetoothProfile.PBAP_CLIENT: return profilePriorities.pbap_client_priority; case BluetoothProfile.MAP: return profilePriorites.map_priority; return profilePriorities.map_priority; case BluetoothProfile.MAP_CLIENT: return profilePriorites.map_client_priority; return profilePriorities.map_client_priority; case BluetoothProfile.SAP: return profilePriorites.sap_priority; return profilePriorities.sap_priority; case BluetoothProfile.HEARING_AID: return profilePriorites.hearing_aid_priority; return profilePriorities.hearing_aid_priority; } return BluetoothProfile.PRIORITY_UNDEFINED; } Loading
android/app/src/com/android/bluetooth/btservice/storage/MetadataDatabase.java +26 −1 Original line number Diff line number Diff line Loading @@ -16,15 +16,20 @@ package com.android.bluetooth.btservice.storage; import android.content.Context; import androidx.room.Database; import androidx.room.Room; import androidx.room.RoomDatabase; import androidx.room.migration.Migration; import androidx.sqlite.db.SupportSQLiteDatabase; import java.util.List; /** * MetadataDatabase is a Room database stores Bluetooth persistence data */ @Database(entities = {Metadata.class}, exportSchema = false, version = 100) @Database(entities = {Metadata.class}, exportSchema = false, version = 101) public abstract class MetadataDatabase extends RoomDatabase { /** * The database file name Loading @@ -33,6 +38,19 @@ public abstract class MetadataDatabase extends RoomDatabase { protected abstract MetadataDao mMetadataDao(); /** * Create a {@link MetadataDatabase} database * * @param context the Context to create database * @return the created {@link MetadataDatabase} */ public static MetadataDatabase createDatabase(Context context) { return Room.databaseBuilder(context, MetadataDatabase.class, DATABASE_NAME) .addMigrations(MIGRATION_100_101) .build(); } /** * Insert a {@link Metadata} to database * Loading Loading @@ -66,4 +84,11 @@ public abstract class MetadataDatabase extends RoomDatabase { public void deleteAll() { mMetadataDao().deleteAll(); } private static final Migration MIGRATION_100_101 = new Migration(100, 101) { @Override public void migrate(SupportSQLiteDatabase database) { database.execSQL("ALTER TABLE metadata ADD COLUMN `pbap_client_priority` INTEGER"); } }; }
android/app/src/com/android/bluetooth/btservice/storage/ProfilePrioritiesEntity.java +2 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ class ProfilePrioritiesEntity { public int hid_host_priority; public int pan_priority; public int pbap_priority; public int pbap_client_priority; public int map_priority; public int sap_priority; public int hearing_aid_priority; Loading @@ -43,6 +44,7 @@ class ProfilePrioritiesEntity { hid_host_priority = BluetoothProfile.PRIORITY_UNDEFINED; pan_priority = BluetoothProfile.PRIORITY_UNDEFINED; pbap_priority = BluetoothProfile.PRIORITY_UNDEFINED; pbap_client_priority = BluetoothProfile.PRIORITY_UNDEFINED; map_priority = BluetoothProfile.PRIORITY_UNDEFINED; sap_priority = BluetoothProfile.PRIORITY_UNDEFINED; hearing_aid_priority = BluetoothProfile.PRIORITY_UNDEFINED; Loading