Loading src/com/android/bluetooth/pbap/BluetoothPbapService.java +45 −6 Original line number Original line Diff line number Diff line Loading @@ -200,6 +200,10 @@ public class BluetoothPbapService extends ProfileService implements IObexConnect private static final String ACCESS_AUTHORITY_CLASS = private static final String ACCESS_AUTHORITY_CLASS = "com.android.settings.bluetooth.BluetoothPermissionRequest"; "com.android.settings.bluetooth.BluetoothPermissionRequest"; private Thread mThreadLoadContacts = null; private Thread mThreadUpdateSecVersionCounter = null; private class BluetoothPbapContentObserver extends ContentObserver { private class BluetoothPbapContentObserver extends ContentObserver { BluetoothPbapContentObserver() { BluetoothPbapContentObserver() { super(new Handler()); super(new Handler()); Loading Loading @@ -263,11 +267,14 @@ public class BluetoothPbapService extends ProfileService implements IObexConnect if (DEBUG) { if (DEBUG) { Log.d(TAG, "ACL disconnected for " + device); Log.d(TAG, "ACL disconnected for " + device); } } if (mIsWaitingAuthorization && mRemoteDevice.equals(device)) { if (mRemoteDevice.equals(device)) { if (mIsWaitingAuthorization) { mSessionStatusHandler.removeMessages(USER_TIMEOUT); mSessionStatusHandler.removeMessages(USER_TIMEOUT); mSessionStatusHandler.obtainMessage(USER_TIMEOUT).sendToTarget(); mSessionStatusHandler.obtainMessage(USER_TIMEOUT).sendToTarget(); } } mSessionStatusHandler.obtainMessage(MSG_SERVERSESSION_CLOSE).sendToTarget(); mSessionStatusHandler.obtainMessage(MSG_SERVERSESSION_CLOSE) .sendToTarget(); } return; return; } } Loading Loading @@ -383,6 +390,7 @@ public class BluetoothPbapService extends ProfileService implements IObexConnect if (mSessionStatusHandler != null) { if (mSessionStatusHandler != null) { mSessionStatusHandler.removeCallbacksAndMessages(null); mSessionStatusHandler.removeCallbacksAndMessages(null); } } mRemoteDevice = null; if (VERBOSE) { if (VERBOSE) { Log.v(TAG, "Pbap Service closeService out"); Log.v(TAG, "Pbap Service closeService out"); } } Loading Loading @@ -561,10 +569,10 @@ public class BluetoothPbapService extends ProfileService implements IObexConnect closeService(); closeService(); break; break; case LOAD_CONTACTS: case LOAD_CONTACTS: BluetoothPbapUtils.loadAllContacts(mContext, this); loadAllContacts(); break; break; case CHECK_SECONDARY_VERSION_COUNTER: case CHECK_SECONDARY_VERSION_COUNTER: BluetoothPbapUtils.updateSecondaryVersionCounter(mContext, this); updateSecondaryVersion(); break; break; case ROLLOVER_COUNTERS: case ROLLOVER_COUNTERS: BluetoothPbapUtils.rolloverCounters(); BluetoothPbapUtils.rolloverCounters(); Loading Loading @@ -941,4 +949,35 @@ public class BluetoothPbapService extends ProfileService implements IObexConnect startSocketListeners(); startSocketListeners(); } } } } private void loadAllContacts() { if (mThreadLoadContacts == null) { Runnable r = new Runnable() { @Override public void run() { BluetoothPbapUtils.loadAllContacts(mContext, mSessionStatusHandler); mThreadLoadContacts = null; } }; mThreadLoadContacts = new Thread(r); mThreadLoadContacts.start(); } } private void updateSecondaryVersion() { if (mThreadUpdateSecVersionCounter == null) { Runnable r = new Runnable() { @Override public void run() { BluetoothPbapUtils.updateSecondaryVersionCounter(mContext, mSessionStatusHandler); mThreadUpdateSecVersionCounter = null; } }; mThreadUpdateSecVersionCounter = new Thread(r); mThreadUpdateSecVersionCounter.start(); } } } } src/com/android/bluetooth/pbap/BluetoothPbapUtils.java +5 −5 Original line number Original line Diff line number Diff line Loading @@ -253,7 +253,7 @@ public class BluetoothPbapUtils { edit.putLong("primary", primaryCounter); edit.putLong("primary", primaryCounter); edit.putLong("secondary", secondaryCounter); edit.putLong("secondary", secondaryCounter); edit.putLong("dbIdentifier", dbIdentifier); edit.putLong("dbIdentifier", dbIdentifier); edit.putLong("totalContacts", totalContacts); if (contactsLoaded) edit.putLong("totalContacts", totalContacts); edit.putLong("lastUpdatedTimestamp", lastUpdatedTimestamp); edit.putLong("lastUpdatedTimestamp", lastUpdatedTimestamp); edit.putLong("totalFields", totalFields); edit.putLong("totalFields", totalFields); edit.putLong("totalSvcFields", totalSvcFields); edit.putLong("totalSvcFields", totalSvcFields); Loading Loading @@ -295,12 +295,12 @@ public class BluetoothPbapUtils { try { try { String[] projection = {Data.CONTACT_ID, Data.DATA1, Data.MIMETYPE}; String[] projection = {Data.CONTACT_ID, Data.DATA1, Data.MIMETYPE}; int contactCount = 0; totalContacts = fetchAndSetContacts(mContext, mHandler, projection, if ((contactCount = null, null, true); fetchAndSetContacts(mContext, mHandler, projection, null, null, true)) < 0) { if (totalContacts < 0) { totalContacts = 0; return; return; } } totalContacts = contactCount; // to set total contacts count fetched on Connect contactsLoaded = true; contactsLoaded = true; } catch (Exception e) { } catch (Exception e) { Log.e(TAG, "Exception occurred in load contacts: " + e); Log.e(TAG, "Exception occurred in load contacts: " + e); Loading Loading
src/com/android/bluetooth/pbap/BluetoothPbapService.java +45 −6 Original line number Original line Diff line number Diff line Loading @@ -200,6 +200,10 @@ public class BluetoothPbapService extends ProfileService implements IObexConnect private static final String ACCESS_AUTHORITY_CLASS = private static final String ACCESS_AUTHORITY_CLASS = "com.android.settings.bluetooth.BluetoothPermissionRequest"; "com.android.settings.bluetooth.BluetoothPermissionRequest"; private Thread mThreadLoadContacts = null; private Thread mThreadUpdateSecVersionCounter = null; private class BluetoothPbapContentObserver extends ContentObserver { private class BluetoothPbapContentObserver extends ContentObserver { BluetoothPbapContentObserver() { BluetoothPbapContentObserver() { super(new Handler()); super(new Handler()); Loading Loading @@ -263,11 +267,14 @@ public class BluetoothPbapService extends ProfileService implements IObexConnect if (DEBUG) { if (DEBUG) { Log.d(TAG, "ACL disconnected for " + device); Log.d(TAG, "ACL disconnected for " + device); } } if (mIsWaitingAuthorization && mRemoteDevice.equals(device)) { if (mRemoteDevice.equals(device)) { if (mIsWaitingAuthorization) { mSessionStatusHandler.removeMessages(USER_TIMEOUT); mSessionStatusHandler.removeMessages(USER_TIMEOUT); mSessionStatusHandler.obtainMessage(USER_TIMEOUT).sendToTarget(); mSessionStatusHandler.obtainMessage(USER_TIMEOUT).sendToTarget(); } } mSessionStatusHandler.obtainMessage(MSG_SERVERSESSION_CLOSE).sendToTarget(); mSessionStatusHandler.obtainMessage(MSG_SERVERSESSION_CLOSE) .sendToTarget(); } return; return; } } Loading Loading @@ -383,6 +390,7 @@ public class BluetoothPbapService extends ProfileService implements IObexConnect if (mSessionStatusHandler != null) { if (mSessionStatusHandler != null) { mSessionStatusHandler.removeCallbacksAndMessages(null); mSessionStatusHandler.removeCallbacksAndMessages(null); } } mRemoteDevice = null; if (VERBOSE) { if (VERBOSE) { Log.v(TAG, "Pbap Service closeService out"); Log.v(TAG, "Pbap Service closeService out"); } } Loading Loading @@ -561,10 +569,10 @@ public class BluetoothPbapService extends ProfileService implements IObexConnect closeService(); closeService(); break; break; case LOAD_CONTACTS: case LOAD_CONTACTS: BluetoothPbapUtils.loadAllContacts(mContext, this); loadAllContacts(); break; break; case CHECK_SECONDARY_VERSION_COUNTER: case CHECK_SECONDARY_VERSION_COUNTER: BluetoothPbapUtils.updateSecondaryVersionCounter(mContext, this); updateSecondaryVersion(); break; break; case ROLLOVER_COUNTERS: case ROLLOVER_COUNTERS: BluetoothPbapUtils.rolloverCounters(); BluetoothPbapUtils.rolloverCounters(); Loading Loading @@ -941,4 +949,35 @@ public class BluetoothPbapService extends ProfileService implements IObexConnect startSocketListeners(); startSocketListeners(); } } } } private void loadAllContacts() { if (mThreadLoadContacts == null) { Runnable r = new Runnable() { @Override public void run() { BluetoothPbapUtils.loadAllContacts(mContext, mSessionStatusHandler); mThreadLoadContacts = null; } }; mThreadLoadContacts = new Thread(r); mThreadLoadContacts.start(); } } private void updateSecondaryVersion() { if (mThreadUpdateSecVersionCounter == null) { Runnable r = new Runnable() { @Override public void run() { BluetoothPbapUtils.updateSecondaryVersionCounter(mContext, mSessionStatusHandler); mThreadUpdateSecVersionCounter = null; } }; mThreadUpdateSecVersionCounter = new Thread(r); mThreadUpdateSecVersionCounter.start(); } } } }
src/com/android/bluetooth/pbap/BluetoothPbapUtils.java +5 −5 Original line number Original line Diff line number Diff line Loading @@ -253,7 +253,7 @@ public class BluetoothPbapUtils { edit.putLong("primary", primaryCounter); edit.putLong("primary", primaryCounter); edit.putLong("secondary", secondaryCounter); edit.putLong("secondary", secondaryCounter); edit.putLong("dbIdentifier", dbIdentifier); edit.putLong("dbIdentifier", dbIdentifier); edit.putLong("totalContacts", totalContacts); if (contactsLoaded) edit.putLong("totalContacts", totalContacts); edit.putLong("lastUpdatedTimestamp", lastUpdatedTimestamp); edit.putLong("lastUpdatedTimestamp", lastUpdatedTimestamp); edit.putLong("totalFields", totalFields); edit.putLong("totalFields", totalFields); edit.putLong("totalSvcFields", totalSvcFields); edit.putLong("totalSvcFields", totalSvcFields); Loading Loading @@ -295,12 +295,12 @@ public class BluetoothPbapUtils { try { try { String[] projection = {Data.CONTACT_ID, Data.DATA1, Data.MIMETYPE}; String[] projection = {Data.CONTACT_ID, Data.DATA1, Data.MIMETYPE}; int contactCount = 0; totalContacts = fetchAndSetContacts(mContext, mHandler, projection, if ((contactCount = null, null, true); fetchAndSetContacts(mContext, mHandler, projection, null, null, true)) < 0) { if (totalContacts < 0) { totalContacts = 0; return; return; } } totalContacts = contactCount; // to set total contacts count fetched on Connect contactsLoaded = true; contactsLoaded = true; } catch (Exception e) { } catch (Exception e) { Log.e(TAG, "Exception occurred in load contacts: " + e); Log.e(TAG, "Exception occurred in load contacts: " + e); Loading