SDL_PowerState SDL_GetPowerInfo(int *seconds, int *percent)
seconds | バッテリーの残り秒数. NULLを渡すと無視できる. -1のとき値を特定できない, またはバッテリーで動作していない |
percent | 残バッテリーの割合(0〜100). バッテリーの残り秒数. NULLを渡すと無視できる. -1のとき値を特定できない, またはバッテリーで動作していない |
int secs, pct;
if (SDL_GetPowerInfo(&secs, &pct) == SDL_POWERSTATE_ON_BATTERY) {
printf("バッテリーで動作中: ");
if (secs == -1) {
printf("(残り時間 不明)¥n");
} else {
printf("(残り時間 %d 秒)¥n", secs);
}
if (pct == -1) {
printf("(残バッテリー率 不明)¥n");
} else {
printf("(残バッテリー率 %d パーセント)¥n", pct);
}
}
バッテリー状態を絶対的な真実ととらえてはならない. バッテリー(特に衰えたバッテリー)は不安定で, 報告された値はハードウェアの報告を元にした推定量でしかない. 古くなったバッテリーは報告よりも早く電力を失ったり, 20%ほど残っていると報告されても完全に失われているなどということは珍しいことではない.
バッテリーの状態は常に変化している. 電源状態を得るときは, 定期的にこの関数を呼ぶ必要がある. そして数秒の間安定するまでは変化を無視したほうがよいかもしれない.
環境によっては, バッテリーの残りパーセントか残り時間のどちらかで, 両方を得られない場合もある.