我的服务中包含以下代码。
countDownTimer = new CountDownTimer(60000 * 3, 1000) {
@Override
public void onTick(long l) {
intentDSU.putExtra("remaind", TimeUnit.MILLISECONDS.toSeconds(l));
sendBroadcast(intentDSU);
}
@Override
public void onFinish() {
postHandler();
intentDSU.putExtra("remaind", 0);
sendBroadcast(intentDSU);
countDownTimer.start();
}
};
countDownTimer.start();
这很好,但是当我尝试将秒转换为分钟并在我的活动中剩余秒数时
private void updateGUI(Intent intent){
if(intent.getExtras() != null){
long remaind = intent.getLongExtra("remaind", 0);
if(remaind == 0){
onRefresh();
}
long minutes = TimeUnit.SECONDS.toMinutes(remaind) - (TimeUnit.SECONDS.toHours(remaind)* 60);
long seconds = TimeUnit.SECONDS.toSeconds(remaind) - (TimeUnit.SECONDS.toMinutes(remaind) *60);
MenuItem menuItem = menu.findItem(R.id.action_timer);
if(menuItem != null){
if(minutes > 0){
menuItem.setTitle(String.format("%o min.", minutes));
}
else {
menuItem.setTitle(String.format("%o sec.", seconds));
}
}
}
}
我发现异常结果,秒会从73开始而不是60。我不知道这是怎么回事?
答案 0 :(得分:1)
尝试
long seconds = TimeUnit.MILLISECONDS.toSeconds(millis);
答案 1 :(得分:1)
您的代码是正确的,我问您在String.format(“%o min。”,分钟)和这里的String.format(“%o sec。”,秒)遇到问题。
尝试使用它。
void _putchar(char c, int *column) {
char *start;
start = (char *)0xb8000;
char *loc;
loc = start + ((*column) * 2); //Two bytes per cell: one for the char, other for color
*loc = c;
*column += 1;
}
答案 2 :(得分:0)
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/activity_settings"
android:name="android.example.com.visualizerpreferences.SettingsFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"/>