Removed usage of Broadcast (were used by Widget).

This commit is contained in:
Dennis Guse
2019-09-10 21:58:51 +02:00
parent 264bb3746f
commit 496cf9145b
5 changed files with 2 additions and 113 deletions
+2 -1
View File
@@ -9,4 +9,5 @@ Bugfix:
Developer:
- Fixed (some) test cases
- Removed unused parcelable functionality
- Major cleanup and reformatting
- Major cleanup and reformatting
- Do not use broadcast for app to widget communication
@@ -19,7 +19,6 @@ import android.content.BroadcastReceiver;
import android.content.ContentProvider;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.location.Location;
import android.os.IBinder;
@@ -272,43 +271,6 @@ public class TrackRecordingServiceTest {
Assert.assertEquals(PreferencesUtils.RECORDING_TRACK_ID_DEFAULT, service.getRecordingTrackId());
}
@MediumTest
@Test
public void testStartNewTrack_noRecording() throws Exception {
// NOTICE: due to the way Android permissions work, if this fails, uninstall the test apk then retry.
// The test must be installed *after* the app (go figure).
// Reference: http://code.google.com/p/android/issues/detail?id=5521
BlockingBroadcastReceiver startReceiver = new BlockingBroadcastReceiver();
String startAction = context.getString(R.string.track_started_broadcast_action);
context.registerReceiver(startReceiver, new IntentFilter(startAction));
List<Track> tracks = providerUtils.getAllTracks();
Assert.assertTrue(tracks.isEmpty());
ITrackRecordingService service = ((ITrackRecordingService) mServiceRule.bindService(createStartIntent(context)));
Assert.assertFalse(service.isRecording());
long newTrackId = service.startNewTrack();
Assert.assertTrue(newTrackId >= 0);
Assert.assertTrue(service.isRecording());
Track track = providerUtils.getTrack(newTrackId);
Assert.assertNotNull(track);
Assert.assertEquals(newTrackId, track.getId());
Assert.assertEquals(PreferencesUtils.getString(context, R.string.default_activity_key, PreferencesUtils.DEFAULT_ACTIVITY_DEFAULT), track.getCategory());
Assert.assertEquals(newTrackId, PreferencesUtils.getLong(context, R.string.recording_track_id_key));
Assert.assertEquals(newTrackId, service.getRecordingTrackId());
// Verify that the start broadcast was received.
Assert.assertTrue(startReceiver.waitUntilReceived(1));
List<Intent> receivedIntents = startReceiver.getReceivedIntents();
Assert.assertEquals(1, receivedIntents.size());
Intent broadcastIntent = receivedIntents.get(0);
Assert.assertEquals(startAction, broadcastIntent.getAction());
Assert.assertEquals(newTrackId, broadcastIntent.getLongExtra(context.getString(R.string.track_id_broadcast_extra), -1L));
context.unregisterReceiver(startReceiver);
}
@MediumTest
@Test
public void testStartNewTrack_alreadyRecording() throws Exception {
@@ -324,36 +286,6 @@ public class TrackRecordingServiceTest {
Assert.assertEquals(trackId, service.getRecordingTrackId());
}
@MediumTest
@Test
public void testEndCurrentTrack_alreadyRecording() throws Exception {
// See comment above if this fails randomly.
BlockingBroadcastReceiver stopReceiver = new BlockingBroadcastReceiver();
String stopAction = context.getString(R.string.track_stopped_broadcast_action);
context.registerReceiver(stopReceiver, new IntentFilter(stopAction));
createDummyTrack(trackId, -1L, true);
ITrackRecordingService service = ((ITrackRecordingService) mServiceRule.bindService(createStartIntent(context)));
Assert.assertTrue(service.isRecording());
// End the current track.
service.endCurrentTrack();
Assert.assertFalse(service.isRecording());
Assert.assertEquals(PreferencesUtils.RECORDING_TRACK_ID_DEFAULT, PreferencesUtils.getLong(context, R.string.recording_track_id_key));
Assert.assertEquals(PreferencesUtils.RECORDING_TRACK_ID_DEFAULT, service.getRecordingTrackId());
// Verify that the stop broadcast was received.
Assert.assertTrue(stopReceiver.waitUntilReceived(1));
List<Intent> receivedIntents = stopReceiver.getReceivedIntents();
Assert.assertEquals(1, receivedIntents.size());
Intent broadcastIntent = receivedIntents.get(0);
Assert.assertEquals(stopAction, broadcastIntent.getAction());
Assert.assertEquals(trackId, broadcastIntent.getLongExtra(context.getString(R.string.track_id_broadcast_extra), -1L));
context.unregisterReceiver(stopReceiver);
}
@MediumTest
@Test
public void testEndCurrentTrack_noRecording() throws Exception {
@@ -602,7 +602,6 @@ public class TrackRecordingService extends Service {
isIdle = false;
startGps();
sendTrackBroadcast(trackStarted ? R.string.track_started_broadcast_action : R.string.track_resumed_broadcast_action, recordingTrackId);
// Restore periodic tasks
voiceExecutor.restore();
@@ -700,7 +699,6 @@ public class TrackRecordingService extends Service {
}
lastLocation = null;
sendTrackBroadcast(trackStopped ? R.string.track_stopped_broadcast_action : R.string.track_paused_broadcast_action, trackId);
stopGps(trackStopped);
}
@@ -881,7 +879,6 @@ public class TrackRecordingService extends Service {
}
voiceExecutor.update();
splitExecutor.update();
sendTrackBroadcast(R.string.track_update_broadcast_action, track.getId());
}
/**
@@ -983,17 +980,6 @@ public class TrackRecordingService extends Service {
}
}
/**
* Sends track broadcast.
*
* @param actionId the intent action id
* @param trackId the track id
*/
private void sendTrackBroadcast(int actionId, long trackId) {
Intent intent = new Intent().setAction(getString(actionId)).putExtra(getString(R.string.track_id_broadcast_extra), trackId);
sendBroadcast(intent, getString(R.string.permission_notification_value));
}
/**
* TODO: There is a bug in Android that leaks Binder instances. This bug is
* especially visible if we have a non-static class, as there is no way to
-25
View File
@@ -1,25 +0,0 @@
<?xml version="1.0" encoding="utf-8"?><!--
Copyright 2010 Google Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<resources>
<!-- Do not translate -->
<!-- Broadcast -->
<string name="track_id_broadcast_extra" translatable="false">TRACK_ID</string>
<string name="track_paused_broadcast_action" translatable="false">TRACK_PAUSED</string>
<string name="track_resumed_broadcast_action" translatable="false">TRACK_RESUMED</string>
<string name="track_started_broadcast_action" translatable="false">TRACK_STARTED</string>
<string name="track_stopped_broadcast_action" translatable="false">TRACK_STOPPED</string>
<string name="track_update_broadcast_action" translatable="false">TRACK_UPDATE</string>
</resources>
-5
View File
@@ -21,7 +21,6 @@ limitations under the License.
<string name="third_party_libraries" translatable="false"><a href="https://developer.android.com/topic/libraries/support-library/">Google\'s androidX support</a> (Apache License, Version 2.0)</string>
<string name="marker_statistics_icon_url" translatable="false">http://maps.google.com/mapfiles/ms/micons/ylw-pushpin.png</string>
<string name="marker_waypoint_icon_url" translatable="false">http://maps.google.com/mapfiles/ms/micons/blue-pushpin.png</string>
<string name="permission_notification_value" translatable="false">de.dennisguse.opentracks.MYTRACKS_NOTIFICATIONS</string>
<string name="sensor_type_value_none" translatable="false">NONE</string>
<string name="sensor_unit_beats_per_minute" translatable="false">BPM</string>
<string name="settings_recording_track_name_date_iso_8601_value" translatable="false">DATE_ISO_8601</string>
@@ -31,9 +30,5 @@ limitations under the License.
<string name="stats_rate_speed" translatable="false">SPEED</string>
<string name="stats_units_imperial" translatable="false">IMPERIAL</string>
<string name="stats_units_metric" translatable="false">METRIC</string>
<string name="track_action_end" translatable="false">de.dennisguse.opentracks.END_CURRENT_TRACK</string>
<string name="track_action_pause" translatable="false">de.dennisguse.opentracks.PAUSE_CURRENT_TRACK</string>
<string name="track_action_resume" translatable="false">de.dennisguse.opentracks.RESUME_CURRENT_TRACK</string>
<string name="track_action_start" translatable="false">de.dennisguse.opentracks.START_NEW_TRACK</string>
<string name="value_unknown" translatable="false">-</string>
</resources>