summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfredc <fredc@broadcom.com>2012-05-09 16:54:51 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-07-16 22:05:45 -0700
commit4852c5686229f1014e9851f4e9a3a19547581b45 (patch)
tree18d00f7c894a3b522df04daa2ea6e2b13d808545
parent74ae04c73312403e89db0f8e9bd9601d403b4783 (diff)
downloadandroid_packages_apps_Bluetooth-4852c5686229f1014e9851f4e9a3a19547581b45.tar.gz
android_packages_apps_Bluetooth-4852c5686229f1014e9851f4e9a3a19547581b45.tar.bz2
android_packages_apps_Bluetooth-4852c5686229f1014e9851f4e9a3a19547581b45.zip
Moved BluetoothAdapter.ACTION_STATE_CHANGED broadcast from AdapterService to BluetoothManagerService
Change-Id: Ic9911359c1d9e04a5d803807ea7cf4ad39616960
-rwxr-xr-xsrc/com/android/bluetooth/btservice/AdapterService.java46
-rwxr-xr-xsrc/com/android/bluetooth/btservice/AdapterState.java27
-rwxr-xr-xsrc/com/android/bluetooth/opp/BluetoothOppRfcommListener.java2
-rwxr-xr-xsrc/com/android/bluetooth/opp/BluetoothOppService.java8
4 files changed, 60 insertions, 23 deletions
diff --git a/src/com/android/bluetooth/btservice/AdapterService.java b/src/com/android/bluetooth/btservice/AdapterService.java
index 7ddf5f96b..8b81e2781 100755
--- a/src/com/android/bluetooth/btservice/AdapterService.java
+++ b/src/com/android/bluetooth/btservice/AdapterService.java
@@ -14,6 +14,7 @@ import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothProfile;
import android.bluetooth.IBluetooth;
+import android.bluetooth.IBluetoothCallback;
import android.bluetooth.IBluetoothManager;
import android.bluetooth.IBluetoothManagerCallback;
import android.content.BroadcastReceiver;
@@ -28,6 +29,7 @@ import android.os.IBinder;
import android.os.Message;
import android.os.ParcelFileDescriptor;
import android.os.ParcelUuid;
+import android.os.RemoteCallbackList;
import android.os.RemoteException;
import android.provider.Settings;
import android.util.Log;
@@ -127,6 +129,7 @@ public class AdapterService extends Service {
private boolean mNativeAvailable;
private boolean mCleaningUp;
private HashMap<String,Integer> mProfileServicesState = new HashMap<String,Integer>();
+ private RemoteCallbackList<IBluetoothCallback> mCallbacks;//Only BluetoothManagerService should be registered
private int mCurrentRequestId;
public AdapterService() {
@@ -241,7 +244,7 @@ public class AdapterService extends Service {
initNative();
mNativeAvailable=true;
mAdapterStateMachine.start();
-
+ mCallbacks = new RemoteCallbackList<IBluetoothCallback>();
//Load the name and address
getAdapterPropertyNative(AbstractionLayer.BT_PROPERTY_BDADDR);
getAdapterPropertyNative(AbstractionLayer.BT_PROPERTY_BDNAME);
@@ -370,6 +373,21 @@ public class AdapterService extends Service {
stopSelfResult(requestId);
}
+ void updateAdapterState(int prevState, int newState){
+ if (mCallbacks !=null) {
+ int n=mCallbacks.beginBroadcast();
+ Log.d(TAG,"Broadcasting updateAdapterState() to " + n + " receivers.");
+ for (int i=0; i <n;i++) {
+ try {
+ mCallbacks.getBroadcastItem(i).onBluetoothStateChange(prevState,newState);
+ } catch (RemoteException e) {
+ Log.e(TAG, "Unable to call onBluetoothStateChange() on callback #" + i, e);
+ }
+ }
+ mCallbacks.finishBroadcast();
+ }
+ }
+
void cleanup () {
if (DBG)debugLog("cleanup()");
if (mCleaningUp) {
@@ -418,13 +436,17 @@ public class AdapterService extends Service {
mProfileServicesState= null;
}
- //FIXME: Set static instance here???
clearAdapterService();
if (mBinder != null) {
mBinder.cleanup();
mBinder = null;
}
+
+ if (mCallbacks !=null) {
+ mCallbacks.kill();
+ }
+
if (DBG)debugLog("cleanup() done");
}
@@ -736,6 +758,18 @@ public class AdapterService extends Service {
if (service == null) return null;
return service.createSocketChannel(type, serviceName, uuid, port, flag);
}
+
+ public void registerCallback(IBluetoothCallback cb) {
+ AdapterService service = getService();
+ if (service == null) return ;
+ service.registerCallback(cb);
+ }
+
+ public void unregisterCallback(IBluetoothCallback cb) {
+ AdapterService service = getService();
+ if (service == null) return ;
+ service.unregisterCallback(cb);
+ }
};
@@ -1012,6 +1046,14 @@ public class AdapterService extends Service {
return ParcelFileDescriptor.adoptFd(fd);
}
+ void registerCallback(IBluetoothCallback cb) {
+ mCallbacks.register(cb);
+ }
+
+ void unregisterCallback(IBluetoothCallback cb) {
+ mCallbacks.unregister(cb);
+ }
+
private static int convertScanModeToHal(int mode) {
switch (mode) {
case BluetoothAdapter.SCAN_MODE_NONE:
diff --git a/src/com/android/bluetooth/btservice/AdapterState.java b/src/com/android/bluetooth/btservice/AdapterState.java
index 9c6fc97bb..1e338e7b7 100755
--- a/src/com/android/bluetooth/btservice/AdapterState.java
+++ b/src/com/android/bluetooth/btservice/AdapterState.java
@@ -103,7 +103,7 @@ final class AdapterState extends StateMachine {
switch(msg.what) {
case USER_TURN_ON:
if (DBG) Log.d(TAG,"CURRENT_STATE=OFF, MESSAGE = USER_TURN_ON, requestId= " + msg.arg1);
- sendIntent(BluetoothAdapter.STATE_TURNING_ON);
+ notifyAdapterStateChange(BluetoothAdapter.STATE_TURNING_ON);
mPendingCommandState.setTurningOn(true);
transitionTo(mPendingCommandState);
sendMessageDelayed(START_TIMEOUT, START_TIMEOUT_DELAY);
@@ -133,7 +133,7 @@ final class AdapterState extends StateMachine {
switch(msg.what) {
case USER_TURN_OFF:
if (DBG) Log.d(TAG,"CURRENT_STATE=ON, MESSAGE = USER_TURN_OFF, requestId= " + msg.arg1);
- sendIntent(BluetoothAdapter.STATE_TURNING_OFF);
+ notifyAdapterStateChange(BluetoothAdapter.STATE_TURNING_OFF);
mPendingCommandState.setTurningOff(true);
mPendingCommandState.setOffRequestId(msg.arg1);
transitionTo(mPendingCommandState);
@@ -226,7 +226,7 @@ final class AdapterState extends StateMachine {
boolean ret = mAdapterService.enableNative();
if (!ret) {
Log.e(TAG, "Error while turning Bluetooth On");
- sendIntent(BluetoothAdapter.STATE_OFF);
+ notifyAdapterStateChange(BluetoothAdapter.STATE_OFF);
transitionTo(mOffState);
} else {
sendMessageDelayed(ENABLE_TIMEOUT, ENABLE_TIMEOUT_DELAY);
@@ -240,7 +240,7 @@ final class AdapterState extends StateMachine {
mAdapterProperties.onBluetoothReady();
mPendingCommandState.setTurningOn(false);
transitionTo(mOnState);
- sendIntent(BluetoothAdapter.STATE_ON);
+ notifyAdapterStateChange(BluetoothAdapter.STATE_ON);
break;
case BEGIN_DISABLE: {
@@ -255,7 +255,7 @@ final class AdapterState extends StateMachine {
//FIXME: what about post enable services
mPendingCommandState.setTurningOff(false);
mPendingCommandState.setOffRequestId(-1);
- sendIntent(BluetoothAdapter.STATE_ON);
+ notifyAdapterStateChange(BluetoothAdapter.STATE_ON);
}
}
break;
@@ -275,7 +275,7 @@ final class AdapterState extends StateMachine {
int requestId= getOffRequestId();
setOffRequestId(-1);
transitionTo(mOffState);
- sendIntent(BluetoothAdapter.STATE_OFF);
+ notifyAdapterStateChange(BluetoothAdapter.STATE_OFF);
mAdapterService.startShutdown(requestId);
break;
case START_TIMEOUT:
@@ -283,14 +283,14 @@ final class AdapterState extends StateMachine {
errorLog("Error enabling Bluetooth");
mPendingCommandState.setTurningOn(false);
transitionTo(mOffState);
- sendIntent(BluetoothAdapter.STATE_OFF);
+ notifyAdapterStateChange(BluetoothAdapter.STATE_OFF);
break;
case ENABLE_TIMEOUT:
if (DBG) Log.d(TAG,"CURRENT_STATE=PENDING, MESSAGE = ENABLE_TIMEOUT, isTurningOn=" + isTurningOn + ", isTurningOff=" + isTurningOff);
errorLog("Error enabling Bluetooth");
mPendingCommandState.setTurningOn(false);
transitionTo(mOffState);
- sendIntent(BluetoothAdapter.STATE_OFF);
+ notifyAdapterStateChange(BluetoothAdapter.STATE_OFF);
break;
case STOP_TIMEOUT:
if (DBG) Log.d(TAG,"CURRENT_STATE=PENDING, MESSAGE = STOP_TIMEOUT, isTurningOn=" + isTurningOn + ", isTurningOff=" + isTurningOff);
@@ -313,16 +313,11 @@ final class AdapterState extends StateMachine {
}
- private void sendIntent(int newState) {
+ private void notifyAdapterStateChange(int newState) {
int oldState = mAdapterProperties.getState();
- Intent intent = new Intent(BluetoothAdapter.ACTION_STATE_CHANGED);
- intent.putExtra(BluetoothAdapter.EXTRA_PREVIOUS_STATE, oldState);
- intent.putExtra(BluetoothAdapter.EXTRA_STATE, newState);
- intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT);
mAdapterProperties.setState(newState);
-
- mAdapterService.sendBroadcast(intent, AdapterService.BLUETOOTH_PERM);
- infoLog("Bluetooth State Change Intent: " + oldState + " -> " + newState);
+ infoLog("Bluetooth adapter state changed: " + oldState + "-> " + newState);
+ mAdapterService.updateAdapterState(oldState, newState);
}
void stateChangeCallback(int status) {
diff --git a/src/com/android/bluetooth/opp/BluetoothOppRfcommListener.java b/src/com/android/bluetooth/opp/BluetoothOppRfcommListener.java
index 1c6292fd0..b5506f07f 100755
--- a/src/com/android/bluetooth/opp/BluetoothOppRfcommListener.java
+++ b/src/com/android/bluetooth/opp/BluetoothOppRfcommListener.java
@@ -156,7 +156,7 @@ public class BluetoothOppRfcommListener {
mInterrupted = true;
} else {
- clientSocket = mBtServerSocket.accept();
+ clientSocket = sSocket.accept();
if (V) Log.v(TAG, "Accepted connection from "
+ clientSocket.getRemoteDevice());
BluetoothOppRfcommTransport transport = new BluetoothOppRfcommTransport(
diff --git a/src/com/android/bluetooth/opp/BluetoothOppService.java b/src/com/android/bluetooth/opp/BluetoothOppService.java
index 1dc087049..750487bd9 100755
--- a/src/com/android/bluetooth/opp/BluetoothOppService.java
+++ b/src/com/android/bluetooth/opp/BluetoothOppService.java
@@ -85,7 +85,7 @@ public class BluetoothOppService extends Service {
}
}
- private static final String TAG = "BtOpp Service";
+ private static final String TAG = "BtOppService";
/** Observer to get notified when the content observer's data changes */
private BluetoothShareContentObserver mObserver;
@@ -146,7 +146,7 @@ public class BluetoothOppService extends Service {
@Override
public void onCreate() {
super.onCreate();
- if (V) Log.v(TAG, "Service onCreate");
+ if (V) Log.v(TAG, "onCreate");
mAdapter = BluetoothAdapter.getDefaultAdapter();
mSocketListener = new BluetoothOppRfcommListener(mAdapter);
mShares = Lists.newArrayList();
@@ -181,7 +181,7 @@ public class BluetoothOppService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
- if (V) Log.v(TAG, "Service onStartCommand");
+ if (V) Log.v(TAG, "onStartCommand");
//int retCode = super.onStartCommand(intent, flags, startId);
//if (retCode == START_STICKY) {
if (mAdapter == null) {
@@ -328,7 +328,7 @@ public class BluetoothOppService extends Service {
@Override
public void onDestroy() {
- if (V) Log.v(TAG, "Service onDestroy");
+ if (V) Log.v(TAG, "onDestroy");
super.onDestroy();
getContentResolver().unregisterContentObserver(mObserver);
unregisterReceiver(mBluetoothReceiver);