问题描述
我有一个包含 TextView 的活动,它应该显示插入的 android 设备充满电的剩余时间......
我使用 BatteryManager 类来实现这一点...我从该类创建了一个对象,并发现有一个名为 ComputeChargeTimeRemaining
唯一的问题是该方法的结果是数据类型 long,我不知道如何将此数据类型转换为时间值...这正是我决定寻求帮助的原因...这是代码正在使用它...
class Notes : AppCompatActivity{
//TextView to show remaining charge time
TextView mytext;
//Timer to update the value of the TextView every Second
System.Timers.Timer _timer;
protected override void OnCreate(Bundle SavedInstanceState){
mytext=(TextView)FindViewById(Resource.Id.textView1);
_timer=new System.Timers.Timer(1000);
_timer.Enabled =true;
_timer.Elapsed += Timer_Elapsed;
}
private void Timer_Elapsed(object sender,System.Timers.ElapsedEventArgs e) {
RunOnUiThread(()=>{
BatteryManager batteryManager=(BatteryManager)GetSystemService(Context.BatteryService);
long remaining_time=batteryManager.ComputeRemainingChargeTime();
//Here is where I have a problem converting the long to real hours,minutes time format,please help
}) ;
}
}
解决方法
让我们访问文档:
计算时间的近似值(以毫秒为单位) 直到电池充满电。如果没有时间,则返回 -1 被计算:要么没有足够的当前数据来进行 决定或电池正在放电。
那我们该如何处理呢?
TimeSpan
应该这样做
var timeSpan = TimeSpan.FromMilliseconds(remaining_time);
现在您拥有 TimeSpan
喜欢 Hours
、Minutes
、Seconds
的功能。 TotalMinutes
等,您还有格式说明符 Standard TimeSpan format strings:
var hours timeSpan.Hours;
var minutes = timeSpan.Minutes;
// or
var str = timespan.ToString("hh\\:mm\\:ss"));