Fix overflow in energy calculation

The energy value can get quite high, so use longs.

Change-Id: Ib03c07160339c82a834ea94fe155a65f0efb03d2
diff --git a/android/app/src/com/android/bluetooth/btservice/AdapterService.java b/android/app/src/com/android/bluetooth/btservice/AdapterService.java
index 562cbba..039eda3 100644
--- a/android/app/src/com/android/bluetooth/btservice/AdapterService.java
+++ b/android/app/src/com/android/bluetooth/btservice/AdapterService.java
@@ -2006,9 +2006,9 @@
             // Energy is product of mA, V and ms. If the chipset doesn't
             // report it, we have to compute it from time
             if (energy_used == 0) {
-                energy_used = ((mTxTimeTotalMs * getTxCurrentMa()
+                energy_used = (long)((mTxTimeTotalMs * getTxCurrentMa()
                     + mRxTimeTotalMs * getRxCurrentMa()
-                    + mIdleTimeTotalMs * getIdleCurrentMa()) * getOperatingMilliVolt())/1000;
+                    + mIdleTimeTotalMs * getIdleCurrentMa()) * getOperatingVolt());
             }
             mEnergyUsedTotalVoltAmpSecMicro += energy_used;
         }
@@ -2031,8 +2031,8 @@
         return getResources().getInteger(R.integer.config_bluetooth_rx_cur_ma);
     }
 
-    private int getOperatingMilliVolt() {
-        return getResources().getInteger(R.integer.config_bluetooth_operating_voltage_mv);
+    private double getOperatingVolt() {
+        return getResources().getInteger(R.integer.config_bluetooth_operating_voltage_mv) / 1000.0;
     }
 
     private void dump(FileDescriptor fd) {