Merge change 4757 into donut

* changes:
  Add getBatteryUsageHint() to BluetoothHeadset for power monitoring.
This commit is contained in:
Android (Google) Code Review
2009-06-19 11:29:57 -07:00
4 changed files with 43 additions and 1 deletions

View File

@@ -331,6 +331,31 @@ public class BluetoothHeadset {
return -1;
}
/**
* Get battery usage hint for Bluetooth Headset service.
* This is a monotonically increasing integer. Wraps to 0 at
* Integer.MAX_INT, and at boot.
* Current implementation returns the number of AT commands handled since
* boot. This is a good indicator for spammy headset/handsfree units that
* can keep the device awake by polling for cellular status updates. As a
* rule of thumb, each AT command prevents the CPU from sleeping for 500 ms
* @return monotonically increasing battery usage hint, or a negative error
* code on error
* @hide
*/
public int getBatteryUsageHint() {
if (DBG) log("getBatteryUsageHint()");
if (mService != null) {
try {
return mService.getBatteryUsageHint();
} catch (RemoteException e) {Log.e(TAG, e.toString());}
} else {
Log.w(TAG, "Proxy not attached to service");
if (DBG) Log.d(TAG, Log.getStackTraceString(new Throwable()));
}
return -1;
}
/**
* Check class bits for possible HSP or HFP support.
* This is a simple heuristic that tries to guess if a device with the

View File

@@ -40,6 +40,8 @@ public class HeadsetBase {
public static final int DIRECTION_INCOMING = 1;
public static final int DIRECTION_OUTGOING = 2;
private static int sAtInputCount = 0; /* TODO: Consider not using a static variable */
private final BluetoothDevice mBluetooth;
private final String mAddress;
private final int mRfcommChannel;
@@ -109,6 +111,14 @@ public class HeadsetBase {
acquireWakeLock();
long timestamp;
synchronized(HeadsetBase.class) {
if (sAtInputCount == Integer.MAX_VALUE) {
sAtInputCount = 0;
} else {
sAtInputCount++;
}
}
if (DBG) timestamp = System.currentTimeMillis();
AtCommandResult result = mAtParser.process(input);
if (DBG) Log.d(TAG, "Processing " + input + " took " +
@@ -279,7 +289,11 @@ public class HeadsetBase {
}
}
private void log(String msg) {
public static int getAtInputCount() {
return sAtInputCount;
}
private static void log(String msg) {
Log.d(TAG, msg);
}
}

View File

@@ -31,4 +31,5 @@ interface IBluetoothHeadset {
boolean stopVoiceRecognition();
boolean setPriority(in String address, int priority);
int getPriority(in String address);
int getBatteryUsageHint();
}

View File

@@ -1224,6 +1224,8 @@ public class BluetoothDeviceService extends IBluetoothDevice.Stub {
break;
}
pw.println("getHeadsetAddress() = " + headset.getHeadsetAddress());
pw.println("getBatteryUsageHint() = " + headset.getBatteryUsageHint());
headset.close();
}