App 2.43.3: sound check on the Logs tab

One tap listens for 10 seconds with Android's audio analyser on the output
mix and reports the levels, to learn whether it hears Bluetooth, CarPlay and
radio before the Halloween pumpkin's light follows the music. Levels only, no
sound kept, no microphone. Heard a test tone on the emulator. Not tried on
the car.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LhzAVaUyqcw5PkGjz4mWW6
This commit is contained in:
2026-10-31 13:17:41 +01:00
co-authored by Claude Opus 5.5
parent 024e40cd01
commit f84e18ef0e
12 changed files with 410 additions and 4 deletions
@@ -412,6 +412,10 @@ public class MainActivity extends AppCompatActivity {
MediaProbe.start(this);
refreshMediaProbe();
});
logPane.findViewById(R.id.sound_probe_button).setOnClickListener(v -> {
SoundProbe.start(this);
refreshSoundProbe();
});
setUpPager();
// Back on the page that was open when the activity was recreated (accent colour change).
@@ -2341,9 +2345,20 @@ public class MainActivity extends AppCompatActivity {
if (!status.isEmpty()) text.setText(String.join("\n", status));
}
/** The sound check: its button and its last report. */
private void refreshSoundProbe() {
MaterialButton button = logPane.findViewById(R.id.sound_probe_button);
button.setEnabled(!SoundProbe.running());
TextView text = logPane.findViewById(R.id.sound_probe_text);
java.util.List<String> status = SoundProbe.status(this);
text.setVisibility(status.isEmpty() ? View.GONE : View.VISIBLE);
if (!status.isEmpty()) text.setText(String.join("\n", status));
}
private void refreshCallLog() {
refreshSignalRecorder();
refreshMediaProbe();
refreshSoundProbe();
java.util.List<UploadLog.Entry> entries = AbrpUploadService.log().recent();
// Update steps first: after a failed install, they are what the driver came here for.
java.util.List<String> updates = UpdateLog.lines(this);