In MapOverlay, for testing, expose a getter and a setter
for TrackPathDescriptor instead of newPath and getLastPath.
In SingleColorTrackPathPainter, refactor "new Path" to a
newPath method so that tests can override the newPath method
to provide a mockPath.
- in ControlRecordingService, unbind right after handling an intent
to prevent leaking ServiceConnection before handling the next intent.
- update comment in TrackRecordingService
Only sends broadcast notifications if allowed by the settings bit.
Introduces a permission for internal MyTracks communication.
Thus the MyTracks app widget can use this permission to
always receive broadcast notifications when a track starts
and stops.
Move MyTracksProvider to DatabaseProvider and protect the DatabaseProvider
using the AndroidManifest.xml.
Create a MyTracksProviderUtilFactory to create an instance of
MyTracksProviderUtils that accesses the DatabaseProvider.
Recreate MyTracksProvider by extending DatabaseProvider.
The recreated provider checks access, changes the authority,
and invokes the DatabaseProvider methods.
external applications access based on the
sharing settings.
Protect all RPCs calls using the caller's
process id.
When the service is started, we cannot
tell whether the caller is MyTracks or
another app. Thus when the service
is started, we cannot access MyTracks
database or start/stop a recording.
Previsouly, only the MyTracks app
widget is using the service's start method
to start and stop a recording. Thus
create a private service, ControlRecordingService,
that only the MyTracks app widget can access and delegate
starting/stopping a recording to
TrackRecordingService.
Fusion table depends on google-api-client-1.2.2.alpha.jar.
Proguard needs to be set correctly for the google-api-client library.
Tested a release version and is able to send a track to fusion table.
CheckUnits and SettingsActivity classes for use with intents.
* In SettingsActivity split onCreate() code into initActivityCommons() and
initActivitySpecifics() methods for easier maintaining of code required
for all screens and code require for only some screens.