Merge change 4757 into donut
* changes: Add getBatteryUsageHint() to BluetoothHeadset for power monitoring.
This commit is contained in:
@@ -331,6 +331,31 @@ public class BluetoothHeadset {
|
|||||||
return -1;
|
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.
|
* Check class bits for possible HSP or HFP support.
|
||||||
* This is a simple heuristic that tries to guess if a device with the
|
* This is a simple heuristic that tries to guess if a device with the
|
||||||
|
|||||||
@@ -40,6 +40,8 @@ public class HeadsetBase {
|
|||||||
public static final int DIRECTION_INCOMING = 1;
|
public static final int DIRECTION_INCOMING = 1;
|
||||||
public static final int DIRECTION_OUTGOING = 2;
|
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 BluetoothDevice mBluetooth;
|
||||||
private final String mAddress;
|
private final String mAddress;
|
||||||
private final int mRfcommChannel;
|
private final int mRfcommChannel;
|
||||||
@@ -109,6 +111,14 @@ public class HeadsetBase {
|
|||||||
acquireWakeLock();
|
acquireWakeLock();
|
||||||
long timestamp;
|
long timestamp;
|
||||||
|
|
||||||
|
synchronized(HeadsetBase.class) {
|
||||||
|
if (sAtInputCount == Integer.MAX_VALUE) {
|
||||||
|
sAtInputCount = 0;
|
||||||
|
} else {
|
||||||
|
sAtInputCount++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (DBG) timestamp = System.currentTimeMillis();
|
if (DBG) timestamp = System.currentTimeMillis();
|
||||||
AtCommandResult result = mAtParser.process(input);
|
AtCommandResult result = mAtParser.process(input);
|
||||||
if (DBG) Log.d(TAG, "Processing " + input + " took " +
|
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);
|
Log.d(TAG, msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,4 +31,5 @@ interface IBluetoothHeadset {
|
|||||||
boolean stopVoiceRecognition();
|
boolean stopVoiceRecognition();
|
||||||
boolean setPriority(in String address, int priority);
|
boolean setPriority(in String address, int priority);
|
||||||
int getPriority(in String address);
|
int getPriority(in String address);
|
||||||
|
int getBatteryUsageHint();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1224,6 +1224,8 @@ public class BluetoothDeviceService extends IBluetoothDevice.Stub {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
pw.println("getHeadsetAddress() = " + headset.getHeadsetAddress());
|
pw.println("getHeadsetAddress() = " + headset.getHeadsetAddress());
|
||||||
|
pw.println("getBatteryUsageHint() = " + headset.getBatteryUsageHint());
|
||||||
|
|
||||||
headset.close();
|
headset.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user