blob: 06cf26d240fb98364ad56822f3e9b1dd0e819688 [file] [log] [blame]
package com.mobileer.oboetester;
import android.Manifest;
import android.app.Activity;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import java.io.IOException;
/**
* Measure the tap-to-tone latency for other apps or devices.
*/
public class ExternalTapToToneActivity extends Activity {
private static final String TAG = "OboeTester";
protected TapToToneTester mTapToToneTester;
private Button mStopButton;
private Button mStartButton;
private Button mAnalyzeButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_external_tap_to_tone);
mTapToToneTester = new TapToToneTester(this,
getResources().getString(R.string.external_tap_instructions));
mStartButton = (Button) findViewById(R.id.button_start);
mStopButton = (Button) findViewById(R.id.button_stop);
mAnalyzeButton = (Button) findViewById(R.id.button_analyze);
updateButtons(false);
}
private void updateButtons(boolean running) {
mStartButton.setEnabled(!running);
mAnalyzeButton.setEnabled(running);
mStopButton.setEnabled(running);
}
public void analyseAndShowResults() {
TapToToneTester.TestResult result = mTapToToneTester.analyzeCapturedAudio();
if (result != null) {
mTapToToneTester.showTestResults(result);
}
}
public void analyze(View view) {
analyseAndShowResults();
}
public void startTest(View view) {
try {
mTapToToneTester.resetLatency();
mTapToToneTester.start();
updateButtons(true);
} catch (IOException e) {
e.printStackTrace();
showErrorToast("Start audio failed! " + e.getMessage());
return;
}
}
public void stopTest(View view) {
mTapToToneTester.stop();
updateButtons(false);
}
@Override
public void onStop() {
mTapToToneTester.stop();
super.onStop();
}
protected void showErrorToast(String message) {
showToast("Error: " + message);
}
protected void showToast(final String message) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(ExternalTapToToneActivity.this,
message,
Toast.LENGTH_SHORT).show();
}
});
}
}