[Android] ターマーやストップウォッチをSystem.currentTimeMillis() で作成するには

current time millis 01 - [Android] ターマーやストップウォッチをSystem.currentTimeMillis() で作成するには
System.currentTimeMillis()を使って、ミリ秒でカウントするストップウォッチ・タイマーを作ってみます。TimerTaskを使ったカウントアップタイマーと同じようにrun()やHandlerのpostを使います。

Android Studio 3.4.2
API 29
AndroidX



System.currentTimeMillis()

 
java.lang.System.currentTimeMillis() は
ミリ秒で表される現在の時間を返します
Ref: currentTimeMillis() – java.lang.System クラス

これを使って

カウント時間 = 経過時間 – 開始時間

という形でタイマーを作ります

計測間隔は
public static void sleep(long millis) throws InterruptedException
を使って
Thread.sleep(10);
のようにミリ秒のウェイトをかけて表示させるようにします
 

 

ミリsecから 分:秒.ミリ秒 へ変換

 
時間の表示を [分:秒.ミリ秒] で表現したいときには
SimpleDateFormatを使うと簡単です
ミリ秒で表されるmillisecがあるとすると、分:秒.ミリ秒(2桁)

但し、これは時刻を表示するものを便宜的に使ったのでLocaleの設定をしないとWarningが出ます。
年月日も追加してみるとわかりますが、startしてからの時間計測はこの例では、起点である1970/1/1からの時間ということになってしまいます。
あるいは、以下のように計算でも出せます。

今回は簡単にSimpleDateFormatを使います。

 

サンプルコード

 
以上の事を踏まえて簡単なサンプルを作ってみましょう。
MainActivity.java

 
レイアウトは
activity_main.xml

 
リソースです
strings.xml

 
timemillis02 - [Android] ターマーやストップウォッチをSystem.currentTimeMillis() で作成するには

 

ミリsecの表示について考察

 
ミリ秒の1の位まで表示させたいのですが、エミュレータでは10の位で切られています

System.currentTimeMillis()の精度はPCに依存して10msec以下は測定できない場合もあるようです
java.lang.System クラス

検証のためsleepを7msecでLogを取ってみると

private int period = 7;
Log.d(“time”, String.valueOf(endTime));

Emyulator:

10msecで切られていて、かつ間隔は20msecとなっています

Nexus7:

ミリsecのオーダーで数値が出ていますが
間隔は10msec以上もありバラバラです

この場合は見た目はmsecまで出ているのでいいのですが
負荷が大きいと思われます

System.currentTimeMillis()の他に
System.nanoTime()があります

使い方が良ければより精度が高くできるかもしれません

タイマー関連:

References:
currentTimeMillis() System | Android Developers
SimpleDateFormat | Android Developers
currentTimeMillis() – java.lang.System クラス

誤字脱字、意味不明で分からにゃイ、
などのご意見はこちらから mailフォーム

ブックマークしておくと便利です このエントリーをはてなブックマークに追加




アプリ開発が上達するお勧め

アプリ開発を始めたけどわからないところがあり、誰かに聞きたいけど周りにはそんな人はいない…あるいは、会社で働いていて日中そんなに時間をとれないなど、オンラインのプログラミングスクールがいいでしょう、時間の制約がないところが一番の魅力です。

以下の3つはAndroidが学習できるオンラインスクールです。


TECH ACADEMY
Androidアプリコース



侍エンジニア塾
侍エンジニア塾 無料体験レッスン



CodeCamp
~約8,000名の受講生と80社以上の導入実績~
現役エンジニアのオンライン家庭教師CodeCamp





正直ネットや本では限界があります。直接(ネットで)誰か分かる人に聞いた方が早く解決して、上達も早いと思います。

尚、スクールがダメだと言う人がいますが、やる気があれば問題ありません。与えられるのを待っていてはいけないですね
欲しいものは取りに行くのです。


Google Pixel 3 XLグローバル版
SIMフリー 並行輸入品
6.3インチの大画面
背景をぼかすポートレートモード撮影


Anker PowerCore II Slim 10000
Power IQ 2.0搭載
iPhone & Android対応

シェアする

  • このエントリーをはてなブックマークに追加

フォローする