FileDocCategorySizeDatePackage
TrackerActivity.javaAPI DocAndroid 5.1 API7352Thu Mar 12 22:22:44 GMT 2015com.android.locationtracker

TrackerActivity

public class TrackerActivity extends android.app.ListActivity
Activity for location tracker service Contains facilities for starting and stopping location tracker service, as well as displaying the current location data Future enhancements: - export data as dB - enable/disable "start service" and "stop service" menu items as appropriate

Fields Summary
static final String
LOG_TAG
private com.android.locationtracker.data.TrackerListHelper
mDataHelper
Constructors Summary
Methods Summary
private voidclearData()

        Runnable clearAction = new Runnable() {
            public void run() {
                TrackerDataHelper helper =
                    new TrackerDataHelper(TrackerActivity.this);
                helper.deleteAll();
            }
        };
        showConfirm(R.string.delete_confirm, clearAction);
    
private voidcloseWriter(java.io.Writer exportWriter)

        if (exportWriter != null) {
            try {
                exportWriter.close();
            } catch (IOException e) {
                Log.e(LOG_TAG, "error closing file", e);
            }
        }
    
private voidexportCSV()

        String exportFileName = getUniqueFileName("csv");
        exportFile(null, exportFileName, new TrackerDataHelper(this,
                TrackerDataHelper.CSV_FORMATTER));
    
private voidexportFile(java.lang.String tagFilter, java.lang.String exportFileName, com.android.locationtracker.data.TrackerDataHelper trackerData)

        BufferedWriter exportWriter = null;
        Cursor cursor = trackerData.query(tagFilter);
        try {
            exportWriter = new BufferedWriter(new FileWriter(exportFileName));
            exportWriter.write(trackerData.getOutputHeader());

            String line = null;

            while ((line = trackerData.getNextOutput(cursor)) != null) {
                exportWriter.write(line);
            }
            exportWriter.write(trackerData.getOutputFooter());
            Toast.makeText(this, "Successfully exported data to " +
                    exportFileName, Toast.LENGTH_SHORT).show();

        } catch (IOException e) {
            Toast.makeText(this, "Error exporting file: " +
                    e.getLocalizedMessage(), Toast.LENGTH_SHORT).show();

            Log.e(LOG_TAG, "Error exporting file", e);
        } finally {
            closeWriter(exportWriter);
            if (cursor != null) {
                cursor.close();
            }
        }
    
private voidexportKML()

        String exportFileName = getUniqueFileName(
                LocationManager.NETWORK_PROVIDER + ".kml");
        exportFile(LocationManager.NETWORK_PROVIDER, exportFileName,
                new TrackerDataHelper(this, TrackerDataHelper.KML_FORMATTER));
        exportFileName = getUniqueFileName(
                LocationManager.GPS_PROVIDER + ".kml");
        exportFile(LocationManager.GPS_PROVIDER, exportFileName,
                new TrackerDataHelper(this, TrackerDataHelper.KML_FORMATTER));
    
private java.lang.StringgetUniqueFileName(java.lang.String ext)

        File dir = new File(Environment.getExternalStorageDirectory() + "/locationtracker");
        if (!dir.exists()) {
            dir.mkdir();
        }
        return dir + "/tracking-" + DateUtils.getCurrentTimestamp() + "." + ext;
    
private voidlaunchSettings()

        Intent settingsIntent = new Intent();
        settingsIntent.setClass(this, SettingsActivity.class);
        startActivity(settingsIntent);
    
protected voidonCreate(android.os.Bundle icicle)
Retrieves and displays the currently logged location data from file

param
icicle


                     
    
        
        super.onCreate(icicle);

        mDataHelper = new TrackerListHelper(this);
        mDataHelper.bindListUI(R.layout.entrylist_item);
    
public booleanonCreateOptionsMenu(android.view.Menu menu)
Builds the menu

param
menu - menu to add items to

        MenuInflater menuInflater = getMenuInflater();
        menuInflater.inflate(R.menu.menu, menu);
        return true;
    
public booleanonOptionsItemSelected(android.view.MenuItem item)
Handles menu item selection

param
item - the selected menu item

        switch (item.getItemId()) {
            case R.id.start_service_menu: {
                startService(new Intent(TrackerActivity.this,
                        TrackerService.class));
                break;
            }
            case R.id.stop_service_menu: {
                stopService(new Intent(TrackerActivity.this,
                        TrackerService.class));
                break;
            }
            case R.id.settings_menu: {
                launchSettings();
                break;
            }
            case R.id.export_kml: {
                exportKML();
                break;
            }
            case R.id.export_csv: {
                exportCSV();
                break;
            }
            case R.id.clear_data_menu: {
                clearData();
                break;
            }
        }
        return super.onOptionsItemSelected(item);
    
private voidshowConfirm(int textId, java.lang.Runnable onConfirmAction)

        AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
        dialogBuilder.setTitle(R.string.confirm_title);
        dialogBuilder.setMessage(textId);
        dialogBuilder.setPositiveButton(android.R.string.ok,
                new OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                onConfirmAction.run();
            }
        });
        dialogBuilder.setNegativeButton(android.R.string.cancel,
                new OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                // do nothing
            }
        });
        dialogBuilder.show();