Loading core/java/com/android/internal/os/BatteryStatsImpl.java +7 −1 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.internal.os; import com.android.internal.util.JournaledFile; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothHeadset; import android.net.TrafficStats; import android.os.BatteryManager; Loading Loading @@ -50,6 +51,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.locks.ReentrantLock; Loading Loading @@ -1150,7 +1152,11 @@ public final class BatteryStatsImpl extends BatteryStats { private int getCurrentBluetoothPingCount() { if (mBtHeadset != null) { return mBtHeadset.getBatteryUsageHint(); Set<BluetoothDevice> deviceSet = mBtHeadset.getConnectedDevices(); BluetoothDevice[] devices = deviceSet.toArray(new BluetoothDevice[deviceSet.size()]); if (devices.length > 0) { return mBtHeadset.getBatteryUsageHint(devices[0]); } } return -1; } Loading services/java/com/android/server/am/BatteryStatsService.java +35 −4 Original line number Diff line number Diff line Loading @@ -16,7 +16,9 @@ package com.android.server.am; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothHeadset; import android.bluetooth.BluetoothProfile; import android.content.Context; import android.os.Binder; import android.os.IBinder; Loading @@ -43,6 +45,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub { final BatteryStatsImpl mStats; Context mContext; private boolean mBluetoothPendingStats; private BluetoothHeadset mBluetoothHeadset; BatteryStatsService(String filename) { mStats = new BatteryStatsImpl(filename); Loading Loading @@ -283,16 +287,43 @@ public final class BatteryStatsService extends IBatteryStats.Stub { public void noteBluetoothOn() { enforceCallingPermission(); BluetoothHeadset headset = new BluetoothHeadset(mContext, null); BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter(); if (adapter != null) { adapter.getProfileProxy(mContext, mBluetoothProfileServiceListener, BluetoothProfile.HEADSET); } synchronized (mStats) { if (mBluetoothHeadset != null) { mStats.noteBluetoothOnLocked(); mStats.setBtHeadset(mBluetoothHeadset); } else { mBluetoothPendingStats = true; } } } private BluetoothProfile.ServiceListener mBluetoothProfileServiceListener = new BluetoothProfile.ServiceListener() { public void onServiceConnected(int profile, BluetoothProfile proxy) { mBluetoothHeadset = (BluetoothHeadset) proxy; synchronized (mStats) { if (mBluetoothPendingStats) { mStats.noteBluetoothOnLocked(); mStats.setBtHeadset(headset); mStats.setBtHeadset(mBluetoothHeadset); mBluetoothPendingStats = false; } } } public void onServiceDisconnected(int profile) { mBluetoothHeadset = null; } }; public void noteBluetoothOff() { enforceCallingPermission(); synchronized (mStats) { mBluetoothPendingStats = false; mStats.noteBluetoothOffLocked(); } } Loading Loading
core/java/com/android/internal/os/BatteryStatsImpl.java +7 −1 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.internal.os; import com.android.internal.util.JournaledFile; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothHeadset; import android.net.TrafficStats; import android.os.BatteryManager; Loading Loading @@ -50,6 +51,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.locks.ReentrantLock; Loading Loading @@ -1150,7 +1152,11 @@ public final class BatteryStatsImpl extends BatteryStats { private int getCurrentBluetoothPingCount() { if (mBtHeadset != null) { return mBtHeadset.getBatteryUsageHint(); Set<BluetoothDevice> deviceSet = mBtHeadset.getConnectedDevices(); BluetoothDevice[] devices = deviceSet.toArray(new BluetoothDevice[deviceSet.size()]); if (devices.length > 0) { return mBtHeadset.getBatteryUsageHint(devices[0]); } } return -1; } Loading
services/java/com/android/server/am/BatteryStatsService.java +35 −4 Original line number Diff line number Diff line Loading @@ -16,7 +16,9 @@ package com.android.server.am; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothHeadset; import android.bluetooth.BluetoothProfile; import android.content.Context; import android.os.Binder; import android.os.IBinder; Loading @@ -43,6 +45,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub { final BatteryStatsImpl mStats; Context mContext; private boolean mBluetoothPendingStats; private BluetoothHeadset mBluetoothHeadset; BatteryStatsService(String filename) { mStats = new BatteryStatsImpl(filename); Loading Loading @@ -283,16 +287,43 @@ public final class BatteryStatsService extends IBatteryStats.Stub { public void noteBluetoothOn() { enforceCallingPermission(); BluetoothHeadset headset = new BluetoothHeadset(mContext, null); BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter(); if (adapter != null) { adapter.getProfileProxy(mContext, mBluetoothProfileServiceListener, BluetoothProfile.HEADSET); } synchronized (mStats) { if (mBluetoothHeadset != null) { mStats.noteBluetoothOnLocked(); mStats.setBtHeadset(mBluetoothHeadset); } else { mBluetoothPendingStats = true; } } } private BluetoothProfile.ServiceListener mBluetoothProfileServiceListener = new BluetoothProfile.ServiceListener() { public void onServiceConnected(int profile, BluetoothProfile proxy) { mBluetoothHeadset = (BluetoothHeadset) proxy; synchronized (mStats) { if (mBluetoothPendingStats) { mStats.noteBluetoothOnLocked(); mStats.setBtHeadset(headset); mStats.setBtHeadset(mBluetoothHeadset); mBluetoothPendingStats = false; } } } public void onServiceDisconnected(int profile) { mBluetoothHeadset = null; } }; public void noteBluetoothOff() { enforceCallingPermission(); synchronized (mStats) { mBluetoothPendingStats = false; mStats.noteBluetoothOffLocked(); } } Loading