Bugfix: PublicAPI StartRecording recorded no data.

Problem was that the TrackRecordingService was not started as a ForegroundService anymore.

Fixes #1904.
This commit is contained in:
Dennis Guse
2024-12-04 23:10:18 +01:00
parent 7c8fae66ef
commit b65230bc5d
3 changed files with 16 additions and 9 deletions
@@ -31,13 +31,7 @@ public class PublicApiTest {
private final Context context = ApplicationProvider.getApplicationContext();
@Test
public void StartTest() {
PreferencesUtils.setBoolean(R.string.publicapi_enabled_key, true);
context.startActivity(IntentUtils.newIntent(context, StartRecording.class));
}
//NOTE: this doesn't check if the TrackRecordingService was started in foreground.
@Test
public void StartStopTest() throws InterruptedException {
PreferencesUtils.setBoolean(R.string.publicapi_enabled_key, true);
@@ -33,11 +33,15 @@ public abstract class AbstractAPIActivity extends AppCompatActivity {
protected void onCreate(@Nullable Bundle savedInstanceState) {
SplashScreen splashScreen = SplashScreen.installSplashScreen(this);
super.onCreate(savedInstanceState);
splashScreen.setKeepOnScreenCondition(() -> true );
splashScreen.setKeepOnScreenCondition(() -> true);
if (PreferencesUtils.isPublicAPIenabled()) {
Log.i(TAG, "Received and trying to execute requested action.");
TrackRecordingServiceConnection.execute(this, serviceConnectedCallback);
if (requiresForeground()) {
TrackRecordingServiceConnection.executeForeground(this, serviceConnectedCallback);
} else {
TrackRecordingServiceConnection.execute(this, serviceConnectedCallback);
}
} else {
Toast.makeText(this, getString(R.string.settings_public_api_disabled_toast), Toast.LENGTH_LONG).show();
Log.w(TAG, "Public API is disabled; ignoring request.");
@@ -48,4 +52,8 @@ public abstract class AbstractAPIActivity extends AppCompatActivity {
protected abstract void execute(TrackRecordingService service);
protected abstract boolean isPostExecuteStopService();
protected boolean requiresForeground() {
return false;
}
}
@@ -62,4 +62,9 @@ public class StartRecording extends AbstractAPIActivity {
protected boolean isPostExecuteStopService() {
return false;
}
@Override
protected boolean requiresForeground() {
return true;
}
}