我希望 mPreviousUpStream + mPreviousDownStream提供当前的实时互联网速度
private fun readTrafficStats() {
val newBytesUpStream = TrafficStats.getMobileTxBytes() * 1024
val newBytesDownStream = TrafficStats.getMobileRxBytes() * 1024
val byteDiffUpStream = newBytesUpStream - mPreviousUpStream
val byteDiffDownStream = newBytesDownStream - mPreviousDownStream
synchronized(this) {
val currentTime = SystemClock.elapsedRealtime()
var bandwidthUpStream = 0.0
var bandwidthDownStream = 0.0
if (mPreviousUpStream >= 0) {
bandwidthUpStream = byteDiffUpStream * 1.0 / (currentTime - mLastTimeReading)
}
if (mPreviousDownStream >= 0) {
bandwidthDownStream = byteDiffDownStream * 1.0 / (currentTime - mLastTimeReading)
}
if (mTrafficSpeedListener != null) {
mTrafficSpeedListener!!.onTrafficSpeedMeasured(bandwidthUpStream, bandwidthDownStream)
}
mLastTimeReading = currentTime
}
mPreviousDownStream = newBytesDownStream
mPreviousUpStream = newBytesUpStream
}
private fun finalReadTrafficStats() {
readTrafficStats()
mPreviousUpStream = -1
mPreviousDownStream = -1
}
enum class TrafficType {
MOBILE, ALL
}
在上面的代码中
mPreviousUpStream + mPreviousDownStream
- 数据关闭时返回巨大的负数。
- 启动时的总数据使用量,而不是数据开启时的当前速度
- 其他时间工作正常,除了第一次打开数据时和最后一次关闭数据时出现问题
提前致谢 :)