ZXing によるバーコード スキャナー アプリを開く簡単なアプリケーションがあります。
ここで、スキャンが完了するまでにかかる時間を知りたいと思います。基本的にはインテントを起動してから結果が出るまで。インテントが実行されるときに nanoTime オブジェクトを配置し、結果を取得するときに別の nanoTime オブジェクトを配置し、2 を減算して乗算し、秒/ミリ秒で取得するだけです。
ただし、一連の QR コードをスキャンしたいので、for ループが最適な方法であると判断したため、ループを意図しています。
だから私はいくつかのグローバル時間変数長い開始、終了、時間を持っています。
インテントのコードは次のとおりです。
//Multi Scan Button
public Button.OnClickListener onMultiScan = new Button.OnClickListener() {
public void onClick(View v) {
//start = System.nanoTime();
for(int i = 0 ; i < 5 ; i++){
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.setPackage("com.google.zxing.client.android");
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
//start = System.nanoTime();
startActivityForResult(intent, multiScan);
}
}
};
そして、ここに入力を取得するコードがあります。
public void onActivityResult(int requestCode, int resultCode, Intent data) {
//ordinary scan
if (requestCode == ordinaryScan) {
if (resultCode == RESULT_OK) {
end = System.nanoTime();
time = (end - start) / 1000000;
System.out.println("Time" + " " + /*i + +*/ time);
String contents = data.getStringExtra("SCAN_RESULT");
Toast.makeText(getApplicationContext(), contents, Toast.LENGTH_SHORT).show();
}
else if (resultCode == RESULT_CANCELED) {
// Handle cancel
}
}
//multiple scan
if (requestCode == multiScan) {
end = System.nanoTime();
time = (end - start) / 1000000;
System.out.println("Time" + " " + /*i + +*/ time);
if (resultCode == RESULT_OK) {
String content = data.getStringExtra("SCAN_RESULT");
//codes = codes + contents + " ";
inputs[counter] = content;
counter += 1;
if(counter == 5){
//output();
verify();
}
}
else if (resultCode == RESULT_CANCELED) {
// Handle cancel
}
}
}
タイマーをどこに置くべきかわからないので、タイマーを開始する部分をコメントアウトしました。ループの前にそれを呼び出すと、結果は 1 つしか得られず、ループ内に置くと、互いにそれほど遠くない複数の結果が得られます。
インテントが 1 回だけ呼び出された場合は、インテントが終了するまでの時間を取得するのは簡単ですが、ループで複数回呼び出された場合は注意が必要です。
では、意図を開いて結果を得るために必要な時間を適切に取る方法はありますか? アクティビティを複数回呼び出す方法を書き直すことを意味する場合でも、提案を受け付けています(現在ループを使用しています)。
また、コードがスキャンされた直後に時間を取得できるようにしたいので、アクティビティの呼び出しとアクティビティの結果の間の時間がわかります。各通話が終了するのにかかった時間を取得する前に、各通話が終了するのを待ちたくありません。リアルタイム更新を希望します。ありがとう。