forked from upstream-mirrors/OpenTracks
merge heads
This commit is contained in:
@@ -67,3 +67,9 @@
|
|||||||
# Needed by Guava
|
# Needed by Guava
|
||||||
|
|
||||||
-dontwarn sun.misc.Unsafe
|
-dontwarn sun.misc.Unsafe
|
||||||
|
|
||||||
|
# Keep services needed by ANT+ protocol
|
||||||
|
-keep public class com.dsi.ant.IAnt_6
|
||||||
|
-keep public class com.dsi.ant.IAnt
|
||||||
|
-keep public class com.dsi.ant.IServiceSettings
|
||||||
|
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ class CheckUnits {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static void recordCheckPerformed(SharedPreferences preferences) {
|
private static void recordCheckPerformed(SharedPreferences preferences) {
|
||||||
ApiFeatures.getInstance().getApiPlatformAdapter().applyPreferenceChanges(
|
ApiFeatures.getInstance().getApiAdapter().applyPreferenceChanges(
|
||||||
preferences.edit().putBoolean(PREFERENCE_UNITS_CHECKED, true));
|
preferences.edit().putBoolean(PREFERENCE_UNITS_CHECKED, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ public class DeleteAllTracks extends Handler {
|
|||||||
SharedPreferences.Editor editor = prefs.edit();
|
SharedPreferences.Editor editor = prefs.edit();
|
||||||
// TODO: Go through data manager
|
// TODO: Go through data manager
|
||||||
editor.putLong(context.getString(R.string.selected_track_key), -1);
|
editor.putLong(context.getString(R.string.selected_track_key), -1);
|
||||||
ApiFeatures.getInstance().getApiPlatformAdapter().applyPreferenceChanges(editor);
|
ApiFeatures.getInstance().getApiAdapter().applyPreferenceChanges(editor);
|
||||||
if (done != null) {
|
if (done != null) {
|
||||||
Handler h = new Handler();
|
Handler h = new Handler();
|
||||||
h.post(done);
|
h.post(done);
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ public class DeleteTrack extends Activity
|
|||||||
SharedPreferences preferences = getSharedPreferences(Constants.SETTINGS_NAME, 0);
|
SharedPreferences preferences = getSharedPreferences(Constants.SETTINGS_NAME, 0);
|
||||||
if (preferences.getLong(selectedKey, -1) == deleteTrackId) {
|
if (preferences.getLong(selectedKey, -1) == deleteTrackId) {
|
||||||
Editor editor = preferences.edit().putLong(selectedKey, -1);
|
Editor editor = preferences.edit().putLong(selectedKey, -1);
|
||||||
ApiFeatures.getInstance().getApiPlatformAdapter().applyPreferenceChanges(editor);
|
ApiFeatures.getInstance().getApiAdapter().applyPreferenceChanges(editor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ class Eula {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static void accept(Activity activity, SharedPreferences preferences) {
|
private static void accept(Activity activity, SharedPreferences preferences) {
|
||||||
ApiFeatures.getInstance().getApiPlatformAdapter().applyPreferenceChanges(
|
ApiFeatures.getInstance().getApiAdapter().applyPreferenceChanges(
|
||||||
preferences.edit().putBoolean(PREFERENCE_EULA_ACCEPTED, true));
|
preferences.edit().putBoolean(PREFERENCE_EULA_ACCEPTED, true));
|
||||||
Intent startIntent = new Intent(activity, WelcomeActivity.class);
|
Intent startIntent = new Intent(activity, WelcomeActivity.class);
|
||||||
activity.startActivityForResult(startIntent, Constants.WELCOME);
|
activity.startActivityForResult(startIntent, Constants.WELCOME);
|
||||||
|
|||||||
@@ -134,7 +134,7 @@ public class MyTracks extends TabActivity implements OnTouchListener {
|
|||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
ApiFeatures apiFeatures = ApiFeatures.getInstance();
|
ApiFeatures apiFeatures = ApiFeatures.getInstance();
|
||||||
if (!SystemUtils.isRelease(this)) {
|
if (!SystemUtils.isRelease(this)) {
|
||||||
apiFeatures.getApiPlatformAdapter().enableStrictMode();
|
apiFeatures.getApiAdapter().enableStrictMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
tracker = GoogleAnalyticsTracker.getInstance();
|
tracker = GoogleAnalyticsTracker.getInstance();
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ public class SettingsActivity extends PreferenceActivity {
|
|||||||
preferenceManager.setSharedPreferencesMode(0);
|
preferenceManager.setSharedPreferencesMode(0);
|
||||||
|
|
||||||
// Set up automatic preferences backup
|
// Set up automatic preferences backup
|
||||||
backupListener = BackupPreferencesListener.create(this, apiFeatures);
|
backupListener = apiFeatures.getApiAdapter().getBackupPreferencesListener(this);
|
||||||
preferences = preferenceManager.getSharedPreferences();
|
preferences = preferenceManager.getSharedPreferences();
|
||||||
preferences.registerOnSharedPreferenceChangeListener(backupListener);
|
preferences.registerOnSharedPreferenceChangeListener(backupListener);
|
||||||
|
|
||||||
|
|||||||
@@ -397,7 +397,7 @@ public class TrackDataHub {
|
|||||||
|
|
||||||
// Save the selection to memory and flush.
|
// Save the selection to memory and flush.
|
||||||
selectedTrackId = trackId;
|
selectedTrackId = trackId;
|
||||||
ApiFeatures.getInstance().getApiPlatformAdapter().applyPreferenceChanges(
|
ApiFeatures.getInstance().getApiAdapter().applyPreferenceChanges(
|
||||||
preferences.edit().putLong(SELECTED_TRACK_KEY, trackId));
|
preferences.edit().putLong(SELECTED_TRACK_KEY, trackId));
|
||||||
|
|
||||||
// Force it to reload data from the beginning.
|
// Force it to reload data from the beginning.
|
||||||
|
|||||||
@@ -41,8 +41,6 @@ import com.google.api.client.http.HttpResponse;
|
|||||||
import com.google.api.client.http.HttpResponseException;
|
import com.google.api.client.http.HttpResponseException;
|
||||||
import com.google.api.client.http.HttpTransport;
|
import com.google.api.client.http.HttpTransport;
|
||||||
import com.google.api.client.http.InputStreamContent;
|
import com.google.api.client.http.InputStreamContent;
|
||||||
import com.google.api.client.http.apache.ApacheHttpTransport;
|
|
||||||
import com.google.api.client.http.javanet.NetHttpTransport;
|
|
||||||
import com.google.api.client.util.Strings;
|
import com.google.api.client.util.Strings;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
@@ -140,8 +138,7 @@ public class SendToFusionTables implements Runnable {
|
|||||||
this.stringUtils = new StringUtils(context);
|
this.stringUtils = new StringUtils(context);
|
||||||
this.providerUtils = MyTracksProviderUtils.Factory.get(context);
|
this.providerUtils = MyTracksProviderUtils.Factory.get(context);
|
||||||
|
|
||||||
HttpTransport transport = ApiFeatures.getInstance().useNetHttpTransport()
|
HttpTransport transport = ApiFeatures.getInstance().getApiAdapter().getHttpTransport();
|
||||||
? new NetHttpTransport() : new ApacheHttpTransport();
|
|
||||||
httpRequestFactory = transport.createRequestFactory(new MethodOverride());
|
httpRequestFactory = transport.createRequestFactory(new MethodOverride());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-51
@@ -15,63 +15,13 @@
|
|||||||
*/
|
*/
|
||||||
package com.google.android.apps.mytracks.io.backup;
|
package com.google.android.apps.mytracks.io.backup;
|
||||||
|
|
||||||
import com.google.android.apps.mytracks.util.ApiFeatures;
|
|
||||||
|
|
||||||
import android.app.backup.BackupManager;
|
|
||||||
import android.content.Context;
|
|
||||||
import android.content.SharedPreferences;
|
|
||||||
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
|
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Shared preferences listener which notifies the backup system about new data
|
* Shared preferences listener which notifies the backup system about new data
|
||||||
* being available for backup.
|
* being available for backup.
|
||||||
* This class is API-version-safe and will provide a dummy implementation if
|
|
||||||
* the device doesn't support backup services.
|
|
||||||
*
|
*
|
||||||
* @author Rodrigo Damazio
|
* @author Rodrigo Damazio
|
||||||
*/
|
*/
|
||||||
public abstract class BackupPreferencesListener
|
public interface BackupPreferencesListener extends OnSharedPreferenceChangeListener {
|
||||||
implements OnSharedPreferenceChangeListener {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Real implementation of the listener, which calls the {@link BackupManager}.
|
|
||||||
*/
|
|
||||||
private static class BackupPreferencesListenerImpl
|
|
||||||
extends BackupPreferencesListener {
|
|
||||||
private final BackupManager backupManager;
|
|
||||||
|
|
||||||
public BackupPreferencesListenerImpl(Context context) {
|
|
||||||
this.backupManager = new BackupManager(context);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onSharedPreferenceChanged(
|
|
||||||
SharedPreferences sharedPreferences, String key) {
|
|
||||||
backupManager.dataChanged();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Dummy implementation of the listener which does nothing.
|
|
||||||
*/
|
|
||||||
private static class DummyBackupPreferencesListener
|
|
||||||
extends BackupPreferencesListener {
|
|
||||||
@Override
|
|
||||||
public void onSharedPreferenceChanged(
|
|
||||||
SharedPreferences sharedPreferences, String key) {
|
|
||||||
// Do nothing
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates and returns a proper instance of the listener for this device.
|
|
||||||
*/
|
|
||||||
public static BackupPreferencesListener create(
|
|
||||||
Context context, ApiFeatures apiFeatures) {
|
|
||||||
if (apiFeatures.hasBackup()) {
|
|
||||||
return new BackupPreferencesListenerImpl(context);
|
|
||||||
} else {
|
|
||||||
return new DummyBackupPreferencesListener();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
+40
@@ -0,0 +1,40 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2011 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.
|
||||||
|
*/
|
||||||
|
package com.google.android.apps.mytracks.io.backup;
|
||||||
|
|
||||||
|
import android.app.backup.BackupManager;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Implementation of {@link BackupPreferencesListener} that calls the
|
||||||
|
* {@link BackupManager}.
|
||||||
|
*
|
||||||
|
* @author Jimmy Shih
|
||||||
|
*/
|
||||||
|
public class BackupPreferencesListenerImpl implements BackupPreferencesListener {
|
||||||
|
|
||||||
|
private final BackupManager backupManager;
|
||||||
|
|
||||||
|
public BackupPreferencesListenerImpl(Context context) {
|
||||||
|
this.backupManager = new BackupManager(context);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
|
||||||
|
backupManager.dataChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -48,7 +48,7 @@ import java.util.Locale;
|
|||||||
class DocsTagBuilder {
|
class DocsTagBuilder {
|
||||||
|
|
||||||
private static final DecimalFormatSymbols FORMAT_SYMBOLS =
|
private static final DecimalFormatSymbols FORMAT_SYMBOLS =
|
||||||
ApiFeatures.getInstance().getApiPlatformAdapter().getDecimalFormatSymbols(Locale.ENGLISH);
|
ApiFeatures.getInstance().getApiAdapter().getDecimalFormatSymbols(Locale.ENGLISH);
|
||||||
private static final NumberFormat LARGE_UNIT_FORMAT =
|
private static final NumberFormat LARGE_UNIT_FORMAT =
|
||||||
new DecimalFormat("#,###,###.00", FORMAT_SYMBOLS);
|
new DecimalFormat("#,###,###.00", FORMAT_SYMBOLS);
|
||||||
private static final NumberFormat SMALL_UNIT_FORMAT =
|
private static final NumberFormat SMALL_UNIT_FORMAT =
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ import com.google.android.apps.mytracks.services.tasks.StatusAnnouncerFactory;
|
|||||||
import com.google.android.apps.mytracks.stats.TripStatistics;
|
import com.google.android.apps.mytracks.stats.TripStatistics;
|
||||||
import com.google.android.apps.mytracks.stats.TripStatisticsBuilder;
|
import com.google.android.apps.mytracks.stats.TripStatisticsBuilder;
|
||||||
import com.google.android.apps.mytracks.util.ApiFeatures;
|
import com.google.android.apps.mytracks.util.ApiFeatures;
|
||||||
import com.google.android.apps.mytracks.util.ApiPlatformAdapter;
|
import com.google.android.apps.mytracks.util.ApiLevelAdapter;
|
||||||
import com.google.android.apps.mytracks.util.LocationUtils;
|
import com.google.android.apps.mytracks.util.LocationUtils;
|
||||||
import com.google.android.apps.mytracks.util.StringUtils;
|
import com.google.android.apps.mytracks.util.StringUtils;
|
||||||
import com.google.android.maps.mytracks.R;
|
import com.google.android.maps.mytracks.R;
|
||||||
@@ -485,8 +485,8 @@ public class TrackRecordingService extends Service {
|
|||||||
* Shows the notification message and icon in the notification bar.
|
* Shows the notification message and icon in the notification bar.
|
||||||
*/
|
*/
|
||||||
private void showNotification() {
|
private void showNotification() {
|
||||||
final ApiPlatformAdapter apiPlatformAdapter =
|
final ApiLevelAdapter apiLevelAdapter =
|
||||||
ApiFeatures.getInstance().getApiPlatformAdapter();
|
ApiFeatures.getInstance().getApiAdapter();
|
||||||
if (isRecording) {
|
if (isRecording) {
|
||||||
Notification notification = new Notification(
|
Notification notification = new Notification(
|
||||||
R.drawable.arrow_320, null /* tickerText */,
|
R.drawable.arrow_320, null /* tickerText */,
|
||||||
@@ -497,10 +497,10 @@ public class TrackRecordingService extends Service {
|
|||||||
notification.setLatestEventInfo(this, getString(R.string.app_name),
|
notification.setLatestEventInfo(this, getString(R.string.app_name),
|
||||||
getString(R.string.recording_your_track), contentIntent);
|
getString(R.string.recording_your_track), contentIntent);
|
||||||
notification.flags += Notification.FLAG_NO_CLEAR;
|
notification.flags += Notification.FLAG_NO_CLEAR;
|
||||||
apiPlatformAdapter.startForeground(this, notificationManager, 1,
|
apiLevelAdapter.startForeground(this, notificationManager, 1,
|
||||||
notification);
|
notification);
|
||||||
} else {
|
} else {
|
||||||
apiPlatformAdapter.stopForeground(this, notificationManager, 1);
|
apiLevelAdapter.stopForeground(this, notificationManager, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -62,7 +62,7 @@ public class ZephyrMessageParser implements MessageParser {
|
|||||||
// 0x1A00316550003162 produces erroneous values for Cadence and needs
|
// 0x1A00316550003162 produces erroneous values for Cadence and needs
|
||||||
// a workaround based on the stride counter.
|
// a workaround based on the stride counter.
|
||||||
// Firmware values range from field 3 to 10 (inclusive) of the byte buffer.
|
// Firmware values range from field 3 to 10 (inclusive) of the byte buffer.
|
||||||
byte[] hardwareFirmwareId = ApiFeatures.getInstance().getApiPlatformAdapter()
|
byte[] hardwareFirmwareId = ApiFeatures.getInstance().getApiAdapter()
|
||||||
.copyByteArray(buffer, 3, 11);
|
.copyByteArray(buffer, 3, 11);
|
||||||
Sensor.SensorData.Builder cadence = Sensor.SensorData.newBuilder();
|
Sensor.SensorData.Builder cadence = Sensor.SensorData.newBuilder();
|
||||||
|
|
||||||
|
|||||||
+11
-7
@@ -22,6 +22,7 @@ import com.dsi.ant.AntInterface;
|
|||||||
import com.dsi.ant.AntInterfaceIntent;
|
import com.dsi.ant.AntInterfaceIntent;
|
||||||
import com.dsi.ant.AntMesg;
|
import com.dsi.ant.AntMesg;
|
||||||
import com.dsi.ant.exception.AntInterfaceException;
|
import com.dsi.ant.exception.AntInterfaceException;
|
||||||
|
import com.dsi.ant.exception.AntServiceNotConnectedException;
|
||||||
import com.google.android.apps.mytracks.content.Sensor;
|
import com.google.android.apps.mytracks.content.Sensor;
|
||||||
import com.google.android.apps.mytracks.content.Sensor.SensorDataSet;
|
import com.google.android.apps.mytracks.content.Sensor.SensorDataSet;
|
||||||
import com.google.android.apps.mytracks.services.sensors.SensorManager;
|
import com.google.android.apps.mytracks.services.sensors.SensorManager;
|
||||||
@@ -142,13 +143,16 @@ public abstract class AntSensorManager extends SensorManager {
|
|||||||
Log.w(TAG, "Failed to unregister ANT data receiver", e);
|
Log.w(TAG, "Failed to unregister ANT data receiver", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
if (antReceiver != null) {
|
||||||
antReceiver.releaseInterface();
|
try {
|
||||||
} catch (AntInterfaceException e) {
|
antReceiver.releaseInterface();
|
||||||
Log.e(TAG, "failed to release ANT interface", e);
|
} catch (AntServiceNotConnectedException e) {
|
||||||
|
Log.i(TAG, "ANT service not connected", e);
|
||||||
|
} catch (AntInterfaceException e) {
|
||||||
|
Log.e(TAG, "failed to release ANT interface", e);
|
||||||
|
}
|
||||||
|
antReceiver.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
antReceiver.destroy();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -236,7 +240,7 @@ public abstract class AntSensorManager extends SensorManager {
|
|||||||
/**
|
/**
|
||||||
* Process a raw ANT message.
|
* Process a raw ANT message.
|
||||||
* @param antMessage the ANT message, including the size and message ID bytes
|
* @param antMessage the ANT message, including the size and message ID bytes
|
||||||
* @deprecated Use {@link #handleMessage(int, byte[])} instead.
|
* @deprecated Use {@link #handleMessage(byte, byte[])} instead.
|
||||||
*/
|
*/
|
||||||
protected void handleMessage(byte[] antMessage) {
|
protected void handleMessage(byte[] antMessage) {
|
||||||
int len = antMessage[0];
|
int len = antMessage[0];
|
||||||
|
|||||||
+1
-5
@@ -37,11 +37,7 @@ public class StatusAnnouncerFactory implements PeriodicTaskFactory {
|
|||||||
@Override
|
@Override
|
||||||
public PeriodicTask create(Context context) {
|
public PeriodicTask create(Context context) {
|
||||||
if (hasTts) {
|
if (hasTts) {
|
||||||
if (ApiFeatures.getInstance().isAudioFocusSupported()) {
|
return ApiFeatures.getInstance().getApiAdapter().getStatusAnnouncerTask(context);
|
||||||
return new FroyoStatusAnnouncerTask(context);
|
|
||||||
} else {
|
|
||||||
return new StatusAnnouncerTask(context);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,11 +16,7 @@
|
|||||||
package com.google.android.apps.mytracks.util;
|
package com.google.android.apps.mytracks.util;
|
||||||
|
|
||||||
import com.google.android.apps.mytracks.Constants;
|
import com.google.android.apps.mytracks.Constants;
|
||||||
import com.google.api.client.http.HttpTransport;
|
|
||||||
import com.google.api.client.http.apache.ApacheHttpTransport;
|
|
||||||
import com.google.api.client.http.javanet.NetHttpTransport;
|
|
||||||
|
|
||||||
import android.bluetooth.BluetoothDevice;
|
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
@@ -33,7 +29,7 @@ import android.util.Log;
|
|||||||
public class ApiFeatures {
|
public class ApiFeatures {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The API level of the Android version we're being run under.
|
* The API level of the Android version we are being run under.
|
||||||
*/
|
*/
|
||||||
private static final int ANDROID_API_LEVEL = Integer.parseInt(
|
private static final int ANDROID_API_LEVEL = Integer.parseInt(
|
||||||
Build.VERSION.SDK);
|
Build.VERSION.SDK);
|
||||||
@@ -41,9 +37,9 @@ public class ApiFeatures {
|
|||||||
private static ApiFeatures instance;
|
private static ApiFeatures instance;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The API platform adapter supported by this system.
|
* The API level adapter for the Android version we are being run under.
|
||||||
*/
|
*/
|
||||||
private ApiPlatformAdapter apiPlatformAdapter;
|
private ApiLevelAdapter apiLevelAdapter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the singleton instance of this class.
|
* Returns the singleton instance of this class.
|
||||||
@@ -70,18 +66,20 @@ public class ApiFeatures {
|
|||||||
// It is safe to import unsupported classes as long as we only actually
|
// It is safe to import unsupported classes as long as we only actually
|
||||||
// load the class when supported.
|
// load the class when supported.
|
||||||
if (getApiLevel() >= 9) {
|
if (getApiLevel() >= 9) {
|
||||||
apiPlatformAdapter = new GingerbreadPlatformAdapter();
|
apiLevelAdapter = new ApiLevel9Adapter();
|
||||||
|
} else if (getApiLevel() >= 8) {
|
||||||
|
apiLevelAdapter = new ApiLevel8Adapter();
|
||||||
} else if (getApiLevel() >= 5) {
|
} else if (getApiLevel() >= 5) {
|
||||||
apiPlatformAdapter = new EclairPlatformAdapter();
|
apiLevelAdapter = new ApiLevel5Adapter();
|
||||||
} else {
|
} else {
|
||||||
apiPlatformAdapter = new CupcakePlatformAdapter();
|
apiLevelAdapter = new ApiLevel3Adapter();
|
||||||
}
|
}
|
||||||
|
|
||||||
Log.i(Constants.TAG, "Using platform adapter " + apiPlatformAdapter.getClass());
|
Log.i(Constants.TAG, "Using API level adapter " + apiLevelAdapter.getClass());
|
||||||
}
|
}
|
||||||
|
|
||||||
public ApiPlatformAdapter getApiPlatformAdapter() {
|
public ApiLevelAdapter getApiAdapter() {
|
||||||
return apiPlatformAdapter;
|
return apiLevelAdapter;
|
||||||
}
|
}
|
||||||
|
|
||||||
// API Level 4 Changes
|
// API Level 4 Changes
|
||||||
@@ -107,35 +105,11 @@ public class ApiFeatures {
|
|||||||
return getApiLevel() >= 5;
|
return getApiLevel() >= 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
// API Level 8 Changes
|
|
||||||
|
|
||||||
public boolean isAudioFocusSupported() {
|
|
||||||
return getApiLevel() >= 8;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns whether cloud backup (a.k.a. Froyo backup) is available.
|
|
||||||
*/
|
|
||||||
public boolean hasBackup() {
|
|
||||||
return getApiLevel() >= 8;
|
|
||||||
}
|
|
||||||
|
|
||||||
// API Level 9 Changes
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns true if {@link NetHttpTransport} should be used rather than
|
|
||||||
* {@link ApacheHttpTransport}. See {@link HttpTransport} for more info.
|
|
||||||
*/
|
|
||||||
public boolean useNetHttpTransport() {
|
|
||||||
return getApiLevel() >= 9;
|
|
||||||
}
|
|
||||||
|
|
||||||
// API Level 10 changes
|
// API Level 10 changes
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns true if
|
* Returns true if BluetoothDevice.createInsecureRfcommSocketToServiceRecord
|
||||||
* {@link BluetoothDevice#createInsecureRfcommSocketToServiceRecord} is
|
* is available.
|
||||||
* available.
|
|
||||||
*/
|
*/
|
||||||
public boolean hasBluetoothDeviceCreateInsecureRfcommSocketToServiceRecord() {
|
public boolean hasBluetoothDeviceCreateInsecureRfcommSocketToServiceRecord() {
|
||||||
return getApiLevel() >= 10;
|
return getApiLevel() >= 10;
|
||||||
|
|||||||
+31
-4
@@ -17,9 +17,17 @@ package com.google.android.apps.mytracks.util;
|
|||||||
|
|
||||||
import static com.google.android.apps.mytracks.Constants.TAG;
|
import static com.google.android.apps.mytracks.Constants.TAG;
|
||||||
|
|
||||||
|
import com.google.android.apps.mytracks.io.backup.BackupPreferencesListener;
|
||||||
|
import com.google.android.apps.mytracks.services.tasks.PeriodicTask;
|
||||||
|
import com.google.android.apps.mytracks.services.tasks.StatusAnnouncerTask;
|
||||||
|
import com.google.api.client.http.HttpTransport;
|
||||||
|
import com.google.api.client.http.apache.ApacheHttpTransport;
|
||||||
|
|
||||||
import android.app.Notification;
|
import android.app.Notification;
|
||||||
import android.app.NotificationManager;
|
import android.app.NotificationManager;
|
||||||
import android.app.Service;
|
import android.app.Service;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
import android.content.SharedPreferences.Editor;
|
import android.content.SharedPreferences.Editor;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
@@ -29,12 +37,11 @@ import java.text.DecimalFormatSymbols;
|
|||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Cupcake (API level 3) specific implementation of the
|
* API level 3 specific implementation of the {@link ApiLevelAdapter}.
|
||||||
* {@link ApiPlatformAdapter}.
|
*
|
||||||
*
|
|
||||||
* @author Bartlomiej Niechwiej
|
* @author Bartlomiej Niechwiej
|
||||||
*/
|
*/
|
||||||
public class CupcakePlatformAdapter implements ApiPlatformAdapter {
|
public class ApiLevel3Adapter implements ApiLevelAdapter {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void startForeground(Service service,
|
public void startForeground(Service service,
|
||||||
@@ -53,6 +60,21 @@ public class CupcakePlatformAdapter implements ApiPlatformAdapter {
|
|||||||
notificationManager.cancel(id);
|
notificationManager.cancel(id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PeriodicTask getStatusAnnouncerTask(Context context) {
|
||||||
|
return new StatusAnnouncerTask(context);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BackupPreferencesListener getBackupPreferencesListener(Context context) {
|
||||||
|
return new BackupPreferencesListener() {
|
||||||
|
@Override
|
||||||
|
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
|
||||||
|
// Do nothing
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
private void setServiceForeground(Service service, boolean foreground) {
|
private void setServiceForeground(Service service, boolean foreground) {
|
||||||
// setForeground has been completely removed in API level 11, so we use reflection.
|
// setForeground has been completely removed in API level 11, so we use reflection.
|
||||||
@@ -94,4 +116,9 @@ public class CupcakePlatformAdapter implements ApiPlatformAdapter {
|
|||||||
public DecimalFormatSymbols getDecimalFormatSymbols(Locale locale) {
|
public DecimalFormatSymbols getDecimalFormatSymbols(Locale locale) {
|
||||||
return new DecimalFormatSymbols(locale);
|
return new DecimalFormatSymbols(locale);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HttpTransport getHttpTransport() {
|
||||||
|
return new ApacheHttpTransport();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+3
-4
@@ -20,12 +20,11 @@ import android.app.NotificationManager;
|
|||||||
import android.app.Service;
|
import android.app.Service;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Eclair (API level 5) specific implementation of the
|
* API level 5 specific implementation of the {@link ApiLevelAdapter}.
|
||||||
* {@link ApiPlatformAdapter}.
|
*
|
||||||
*
|
|
||||||
* @author Bartlomiej Niechwiej
|
* @author Bartlomiej Niechwiej
|
||||||
*/
|
*/
|
||||||
public class EclairPlatformAdapter extends CupcakePlatformAdapter {
|
public class ApiLevel5Adapter extends ApiLevel3Adapter {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void startForeground(Service service,
|
public void startForeground(Service service,
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
package com.google.android.apps.mytracks.util;
|
||||||
|
|
||||||
|
import com.google.android.apps.mytracks.io.backup.BackupPreferencesListener;
|
||||||
|
import com.google.android.apps.mytracks.io.backup.BackupPreferencesListenerImpl;
|
||||||
|
import com.google.android.apps.mytracks.services.tasks.FroyoStatusAnnouncerTask;
|
||||||
|
import com.google.android.apps.mytracks.services.tasks.PeriodicTask;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* API level 8 specific implementation of the {@link ApiLevelAdapter}.
|
||||||
|
*
|
||||||
|
* @author Jimmy Shih
|
||||||
|
*/
|
||||||
|
public class ApiLevel8Adapter extends ApiLevel5Adapter {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PeriodicTask getStatusAnnouncerTask(Context context) {
|
||||||
|
return new FroyoStatusAnnouncerTask(context);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BackupPreferencesListener getBackupPreferencesListener(Context context) {
|
||||||
|
return new BackupPreferencesListenerImpl(context);
|
||||||
|
}
|
||||||
|
}
|
||||||
+9
-3
@@ -1,6 +1,8 @@
|
|||||||
package com.google.android.apps.mytracks.util;
|
package com.google.android.apps.mytracks.util;
|
||||||
|
|
||||||
import com.google.android.apps.mytracks.Constants;
|
import com.google.android.apps.mytracks.Constants;
|
||||||
|
import com.google.api.client.http.HttpTransport;
|
||||||
|
import com.google.api.client.http.javanet.NetHttpTransport;
|
||||||
|
|
||||||
import android.content.SharedPreferences.Editor;
|
import android.content.SharedPreferences.Editor;
|
||||||
import android.os.StrictMode;
|
import android.os.StrictMode;
|
||||||
@@ -11,12 +13,11 @@ import java.util.Arrays;
|
|||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Gingerbread (API level 9) specific implememntation of the
|
* API level 9 specific implementation of the {@link ApiLevelAdapter}.
|
||||||
* {@link ApiPlatformAdapter}.
|
|
||||||
*
|
*
|
||||||
* @author Rodrigo Damazio
|
* @author Rodrigo Damazio
|
||||||
*/
|
*/
|
||||||
public class GingerbreadPlatformAdapter extends EclairPlatformAdapter {
|
public class ApiLevel9Adapter extends ApiLevel8Adapter {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void applyPreferenceChanges(Editor editor) {
|
public void applyPreferenceChanges(Editor editor) {
|
||||||
@@ -47,4 +48,9 @@ public class GingerbreadPlatformAdapter extends EclairPlatformAdapter {
|
|||||||
public DecimalFormatSymbols getDecimalFormatSymbols(Locale locale) {
|
public DecimalFormatSymbols getDecimalFormatSymbols(Locale locale) {
|
||||||
return DecimalFormatSymbols.getInstance(locale);
|
return DecimalFormatSymbols.getInstance(locale);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HttpTransport getHttpTransport() {
|
||||||
|
return new NetHttpTransport();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+41
-2
@@ -15,24 +15,31 @@
|
|||||||
*/
|
*/
|
||||||
package com.google.android.apps.mytracks.util;
|
package com.google.android.apps.mytracks.util;
|
||||||
|
|
||||||
|
import com.google.android.apps.mytracks.io.backup.BackupPreferencesListener;
|
||||||
|
import com.google.android.apps.mytracks.services.tasks.PeriodicTask;
|
||||||
|
import com.google.api.client.http.HttpTransport;
|
||||||
|
|
||||||
import android.app.Notification;
|
import android.app.Notification;
|
||||||
import android.app.NotificationManager;
|
import android.app.NotificationManager;
|
||||||
import android.app.Service;
|
import android.app.Service;
|
||||||
|
import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
|
|
||||||
import java.text.DecimalFormatSymbols;
|
import java.text.DecimalFormatSymbols;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A set of methods that may be implemented in a platform specific way.
|
* A set of methods that may be implemented differently depending on the Android API level.
|
||||||
*
|
*
|
||||||
* @author Bartlomiej Niechwiej
|
* @author Bartlomiej Niechwiej
|
||||||
*/
|
*/
|
||||||
public interface ApiPlatformAdapter {
|
public interface ApiLevelAdapter {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Puts the specified service into foreground.
|
* Puts the specified service into foreground.
|
||||||
*
|
*
|
||||||
|
* Due to changes in API level 5.
|
||||||
|
*
|
||||||
* @param service the service to be put in foreground.
|
* @param service the service to be put in foreground.
|
||||||
* @param notificationManager the notification manager used to post the given
|
* @param notificationManager the notification manager used to post the given
|
||||||
* notification.
|
* notification.
|
||||||
@@ -44,6 +51,9 @@ public interface ApiPlatformAdapter {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Puts the given service into background.
|
* Puts the given service into background.
|
||||||
|
*
|
||||||
|
* Due to changes in API level 5.
|
||||||
|
*
|
||||||
* @param service the service to put into background.
|
* @param service the service to put into background.
|
||||||
* @param notificationManager the notification manager to user when removing
|
* @param notificationManager the notification manager to user when removing
|
||||||
* notifications.
|
* notifications.
|
||||||
@@ -53,14 +63,32 @@ public interface ApiPlatformAdapter {
|
|||||||
void stopForeground(Service service, NotificationManager notificationManager,
|
void stopForeground(Service service, NotificationManager notificationManager,
|
||||||
int id);
|
int id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets a status announcer task.
|
||||||
|
*
|
||||||
|
* Due to changes in API level 8.
|
||||||
|
*/
|
||||||
|
PeriodicTask getStatusAnnouncerTask(Context context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets a {@link BackupPreferencesListener}.
|
||||||
|
*
|
||||||
|
* Due to changes in API level 8.
|
||||||
|
*/
|
||||||
|
BackupPreferencesListener getBackupPreferencesListener(Context context);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Applies all changes done to the given preferences editor.
|
* Applies all changes done to the given preferences editor.
|
||||||
* Changes may or may not be applied immediately.
|
* Changes may or may not be applied immediately.
|
||||||
|
*
|
||||||
|
* Due to changes in API level 9.
|
||||||
*/
|
*/
|
||||||
void applyPreferenceChanges(SharedPreferences.Editor editor);
|
void applyPreferenceChanges(SharedPreferences.Editor editor);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enables strict mode where supported, only if this is a development build.
|
* Enables strict mode where supported, only if this is a development build.
|
||||||
|
*
|
||||||
|
* Due to changes in API level 9.
|
||||||
*/
|
*/
|
||||||
void enableStrictMode();
|
void enableStrictMode();
|
||||||
|
|
||||||
@@ -69,6 +97,8 @@ public interface ApiPlatformAdapter {
|
|||||||
* indexes start (inclusive) to end (exclusive). The end index must be less
|
* indexes start (inclusive) to end (exclusive). The end index must be less
|
||||||
* than or equal to input.length.
|
* than or equal to input.length.
|
||||||
*
|
*
|
||||||
|
* Due to changes in API level 9.
|
||||||
|
*
|
||||||
* @param input the input byte array
|
* @param input the input byte array
|
||||||
* @param start the start index
|
* @param start the start index
|
||||||
* @param end the end index
|
* @param end the end index
|
||||||
@@ -80,8 +110,17 @@ public interface ApiPlatformAdapter {
|
|||||||
/**
|
/**
|
||||||
* Gets an instance of {@link DecimalFormatSymbols} for a locale.
|
* Gets an instance of {@link DecimalFormatSymbols} for a locale.
|
||||||
*
|
*
|
||||||
|
* Due to changes in API level 9.
|
||||||
|
*
|
||||||
* @param locale the locale
|
* @param locale the locale
|
||||||
* @return a new instance of {@link DecimalFormatSymbols}
|
* @return a new instance of {@link DecimalFormatSymbols}
|
||||||
*/
|
*/
|
||||||
DecimalFormatSymbols getDecimalFormatSymbols(Locale locale);
|
DecimalFormatSymbols getDecimalFormatSymbols(Locale locale);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets a {@link HttpTransport}.
|
||||||
|
*
|
||||||
|
* Due to changes in API level 9.
|
||||||
|
*/
|
||||||
|
HttpTransport getHttpTransport();
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<classpath>
|
||||||
|
<classpathentry kind="src" path="src"/>
|
||||||
|
<classpathentry kind="src" path="gen"/>
|
||||||
|
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
|
||||||
|
<classpathentry kind="lib" path="/MyTracksLib/libs/protobuf-java-2.3.0-lite.jar"/>
|
||||||
|
<classpathentry kind="src" path="MyTracksLib_src"/>
|
||||||
|
<classpathentry kind="output" path="bin"/>
|
||||||
|
</classpath>
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>MyTracksApiSample</name>
|
||||||
|
<comment></comment>
|
||||||
|
<projects>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.android.ide.eclipse.adt.ApkBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
</buildSpec>
|
||||||
|
<natures>
|
||||||
|
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
|
||||||
|
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||||
|
</natures>
|
||||||
|
<linkedResources>
|
||||||
|
<link>
|
||||||
|
<name>MyTracksLib_src</name>
|
||||||
|
<type>2</type>
|
||||||
|
<locationURI>_android_MyTracksLib_e2802071/src</locationURI>
|
||||||
|
</link>
|
||||||
|
</linkedResources>
|
||||||
|
</projectDescription>
|
||||||
@@ -0,0 +1,282 @@
|
|||||||
|
#Thu Oct 13 15:26:00 PDT 2011
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
|
||||||
|
org.eclipse.jdt.core.formatter.alignment_for_annotations_on_local_variable=569
|
||||||
|
org.eclipse.jdt.core.formatter.alignment_for_annotations_on_member=569
|
||||||
|
org.eclipse.jdt.core.formatter.alignment_for_annotations_on_package_declaration=569
|
||||||
|
org.eclipse.jdt.core.formatter.alignment_for_annotations_on_parameter=24
|
||||||
|
org.eclipse.jdt.core.formatter.alignment_for_annotations_on_type_declaration=569
|
||||||
|
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
|
||||||
|
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=16
|
||||||
|
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
|
||||||
|
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
|
||||||
|
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
|
||||||
|
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
|
||||||
|
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
|
||||||
|
org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
|
||||||
|
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
|
||||||
|
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
|
||||||
|
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
|
||||||
|
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
|
||||||
|
org.eclipse.jdt.core.formatter.alignment_for_field_declaration=16
|
||||||
|
org.eclipse.jdt.core.formatter.alignment_for_for_statement=16
|
||||||
|
org.eclipse.jdt.core.formatter.alignment_for_generic_type_arguments=16
|
||||||
|
org.eclipse.jdt.core.formatter.alignment_for_local_variable_declaration=16
|
||||||
|
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
|
||||||
|
org.eclipse.jdt.core.formatter.alignment_for_new_anonymous_class=0
|
||||||
|
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
|
||||||
|
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
|
||||||
|
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
|
||||||
|
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
|
||||||
|
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
|
||||||
|
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
|
||||||
|
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
|
||||||
|
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
|
||||||
|
org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
|
||||||
|
org.eclipse.jdt.core.formatter.blank_lines_after_package=1
|
||||||
|
org.eclipse.jdt.core.formatter.blank_lines_before_field=0
|
||||||
|
org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
|
||||||
|
org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
|
||||||
|
org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
|
||||||
|
org.eclipse.jdt.core.formatter.blank_lines_before_method=1
|
||||||
|
org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
|
||||||
|
org.eclipse.jdt.core.formatter.blank_lines_before_package=0
|
||||||
|
org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
|
||||||
|
org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
|
||||||
|
org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
|
||||||
|
org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
|
||||||
|
org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
|
||||||
|
org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
|
||||||
|
org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
|
||||||
|
org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
|
||||||
|
org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
|
||||||
|
org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
|
||||||
|
org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
|
||||||
|
org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
|
||||||
|
org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
|
||||||
|
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
|
||||||
|
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
|
||||||
|
org.eclipse.jdt.core.formatter.comment.format_block_comments=true
|
||||||
|
org.eclipse.jdt.core.formatter.comment.format_header=false
|
||||||
|
org.eclipse.jdt.core.formatter.comment.format_html=true
|
||||||
|
org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
|
||||||
|
org.eclipse.jdt.core.formatter.comment.format_line_comments=true
|
||||||
|
org.eclipse.jdt.core.formatter.comment.format_source_code=true
|
||||||
|
org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
|
||||||
|
org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
|
||||||
|
org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
|
||||||
|
org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
|
||||||
|
org.eclipse.jdt.core.formatter.comment.line_length=80
|
||||||
|
org.eclipse.jdt.core.formatter.comment_new_line_at_start_of_html_paragraph=true
|
||||||
|
org.eclipse.jdt.core.formatter.compact_else_if=true
|
||||||
|
org.eclipse.jdt.core.formatter.continuation_indentation=2
|
||||||
|
org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
|
||||||
|
org.eclipse.jdt.core.formatter.force_if_else_statement_brace=false
|
||||||
|
org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
|
||||||
|
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
|
||||||
|
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
|
||||||
|
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
|
||||||
|
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
|
||||||
|
org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
|
||||||
|
org.eclipse.jdt.core.formatter.indent_empty_lines=false
|
||||||
|
org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
|
||||||
|
org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
|
||||||
|
org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
|
||||||
|
org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
|
||||||
|
org.eclipse.jdt.core.formatter.indentation.size=4
|
||||||
|
org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
|
||||||
|
org.eclipse.jdt.core.formatter.join_lines_in_comments=true
|
||||||
|
org.eclipse.jdt.core.formatter.join_wrapped_lines=true
|
||||||
|
org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
|
||||||
|
org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
|
||||||
|
org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
|
||||||
|
org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
|
||||||
|
org.eclipse.jdt.core.formatter.lineSplit=80
|
||||||
|
org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
|
||||||
|
org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
|
||||||
|
org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
|
||||||
|
org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
|
||||||
|
org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
|
||||||
|
org.eclipse.jdt.core.formatter.sort_local_variable_annotations=false
|
||||||
|
org.eclipse.jdt.core.formatter.sort_member_annotations=false
|
||||||
|
org.eclipse.jdt.core.formatter.sort_package_annotations=false
|
||||||
|
org.eclipse.jdt.core.formatter.sort_parameter_annotations=false
|
||||||
|
org.eclipse.jdt.core.formatter.sort_type_annotations=false
|
||||||
|
org.eclipse.jdt.core.formatter.tabulation.char=mixed
|
||||||
|
org.eclipse.jdt.core.formatter.tabulation.size=8
|
||||||
|
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
|
||||||
|
org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
|
||||||
|
org.eclipse.jdt.core.formatter.wrap_comment_inline_tags=false
|
||||||
|
org.eclipse.jdt.core.formatter.wrap_non_simple_local_variable_annotation=true
|
||||||
|
org.eclipse.jdt.core.formatter.wrap_non_simple_member_annotation=true
|
||||||
|
org.eclipse.jdt.core.formatter.wrap_non_simple_package_annotation=true
|
||||||
|
org.eclipse.jdt.core.formatter.wrap_non_simple_parameter_annotation=false
|
||||||
|
org.eclipse.jdt.core.formatter.wrap_non_simple_type_annotation=true
|
||||||
|
org.eclipse.jdt.core.formatter.wrap_prefer_two_fragments=false
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
#Thu Oct 13 15:26:00 PDT 2011
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
formatter_profile=org.eclipse.jdt.ui.default.sun_profile
|
||||||
|
formatter_settings_version=11
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
package="com.google.android.apps.mytracks.samples.api"
|
||||||
|
android:versionCode="1"
|
||||||
|
android:versionName="1.0">
|
||||||
|
<uses-sdk android:minSdkVersion="10" />
|
||||||
|
|
||||||
|
<application android:icon="@drawable/icon"
|
||||||
|
android:label="@string/app_name">
|
||||||
|
<activity android:label="@string/app_name"
|
||||||
|
android:name=".MainActivity">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
|
</intent-filter>
|
||||||
|
</activity>
|
||||||
|
<receiver android:exported="true"
|
||||||
|
android:name=".MyTracksReceiver">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="com.google.android.apps.mytracks.TRACK_STARTED" />
|
||||||
|
</intent-filter>
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="com.google.android.apps.mytracks.TRACK_STOPPED" />
|
||||||
|
</intent-filter>
|
||||||
|
</receiver>
|
||||||
|
</application>
|
||||||
|
|
||||||
|
<uses-permission android:name="com.google.android.apps.mytracks.READ_TRACK_DATA" />
|
||||||
|
<uses-permission android:name="com.google.android.apps.mytracks.WRITE_TRACK_DATA" />
|
||||||
|
<uses-permission android:name="com.google.android.apps.mytracks.TRACK_NOTIFICATIONS" />
|
||||||
|
</manifest>
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
# This file is automatically generated by Android Tools.
|
||||||
|
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
|
||||||
|
#
|
||||||
|
# This file must be checked in Version Control Systems.
|
||||||
|
#
|
||||||
|
# To customize properties used by the Ant build system use,
|
||||||
|
# "build.properties", and override values to adapt the script to your
|
||||||
|
# project structure.
|
||||||
|
|
||||||
|
# Project target.
|
||||||
|
target=Google Inc.:Google APIs:10
|
||||||
|
android.library.reference.1=../MyTracksLib
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
-optimizationpasses 5
|
||||||
|
-dontusemixedcaseclassnames
|
||||||
|
-dontskipnonpubliclibraryclasses
|
||||||
|
-dontpreverify
|
||||||
|
-verbose
|
||||||
|
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
|
||||||
|
|
||||||
|
-keep public class * extends android.app.Activity
|
||||||
|
-keep public class * extends android.app.Application
|
||||||
|
-keep public class * extends android.app.Service
|
||||||
|
-keep public class * extends android.content.BroadcastReceiver
|
||||||
|
-keep public class * extends android.content.ContentProvider
|
||||||
|
-keep public class * extends android.app.backup.BackupAgentHelper
|
||||||
|
-keep public class * extends android.preference.Preference
|
||||||
|
-keep public class com.android.vending.licensing.ILicensingService
|
||||||
|
|
||||||
|
-keepclasseswithmembernames class * {
|
||||||
|
native <methods>;
|
||||||
|
}
|
||||||
|
|
||||||
|
-keepclasseswithmembers class * {
|
||||||
|
public <init>(android.content.Context, android.util.AttributeSet);
|
||||||
|
}
|
||||||
|
|
||||||
|
-keepclasseswithmembers class * {
|
||||||
|
public <init>(android.content.Context, android.util.AttributeSet, int);
|
||||||
|
}
|
||||||
|
|
||||||
|
-keepclassmembers class * extends android.app.Activity {
|
||||||
|
public void *(android.view.View);
|
||||||
|
}
|
||||||
|
|
||||||
|
-keepclassmembers enum * {
|
||||||
|
public static **[] values();
|
||||||
|
public static ** valueOf(java.lang.String);
|
||||||
|
}
|
||||||
|
|
||||||
|
-keep class * implements android.os.Parcelable {
|
||||||
|
public static final android.os.Parcelable$Creator *;
|
||||||
|
}
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 4.0 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.7 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 2.5 KiB |
@@ -0,0 +1,26 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:orientation="vertical"
|
||||||
|
>
|
||||||
|
<Button android:id="@+id/start_recording_button"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:text="@string/start_recording"
|
||||||
|
/>
|
||||||
|
<Button android:id="@+id/stop_recording_button"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:text="@string/stop_recording"
|
||||||
|
/>
|
||||||
|
<Button android:id="@+id/add_waypoints_button"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:text="@string/add_waypoints"
|
||||||
|
/>
|
||||||
|
<TextView android:id="@+id/output"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
/>
|
||||||
|
</LinearLayout>
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<string name="add_waypoints">Add a waypoint to all the tracks</string>
|
||||||
|
<string name="app_name">MyTracksApiSample</string>
|
||||||
|
<string name="start_recording">Start recording</string>
|
||||||
|
<string name="stop_recording">Stop recording</string>
|
||||||
|
</resources>
|
||||||
@@ -0,0 +1,162 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2011 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.
|
||||||
|
*/
|
||||||
|
package com.google.android.apps.mytracks.samples.api;
|
||||||
|
|
||||||
|
import com.google.android.apps.mytracks.content.MyTracksProviderUtils;
|
||||||
|
import com.google.android.apps.mytracks.content.Track;
|
||||||
|
import com.google.android.apps.mytracks.content.Waypoint;
|
||||||
|
import com.google.android.apps.mytracks.services.ITrackRecordingService;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.content.ComponentName;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.content.ServiceConnection;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.os.IBinder;
|
||||||
|
import android.os.RemoteException;
|
||||||
|
import android.util.Log;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.Button;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import java.util.Calendar;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An activity to access MyTracks content provider and service.
|
||||||
|
*
|
||||||
|
* Note you must first install MyTracks before installing this app.
|
||||||
|
*
|
||||||
|
* You also need to enable third party application access inside MyTracks
|
||||||
|
* MyTracks -> menu -> Settings -> Sharing -> Allow access
|
||||||
|
*
|
||||||
|
* @author Jimmy Shih
|
||||||
|
*/
|
||||||
|
public class MainActivity extends Activity {
|
||||||
|
|
||||||
|
private static final String TAG = MainActivity.class.getSimpleName();
|
||||||
|
|
||||||
|
// utils to access the MyTracks content provider
|
||||||
|
private MyTracksProviderUtils myTracksProviderUtils;
|
||||||
|
|
||||||
|
// display output from the MyTracks content provider
|
||||||
|
private TextView outputTextView;
|
||||||
|
|
||||||
|
// MyTracks service
|
||||||
|
private ITrackRecordingService myTracksService;
|
||||||
|
|
||||||
|
// intent to access the MyTracks service
|
||||||
|
private Intent intent;
|
||||||
|
|
||||||
|
// connection to the MyTracks service
|
||||||
|
private ServiceConnection serviceConnection = new ServiceConnection() {
|
||||||
|
@Override
|
||||||
|
public void onServiceConnected(ComponentName className, IBinder service) {
|
||||||
|
myTracksService = ITrackRecordingService.Stub.asInterface(service);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onServiceDisconnected(ComponentName className) {
|
||||||
|
myTracksService = null;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.main);
|
||||||
|
|
||||||
|
// for the MyTracks content provider
|
||||||
|
myTracksProviderUtils = MyTracksProviderUtils.Factory.get(this);
|
||||||
|
outputTextView = (TextView) findViewById(R.id.output);
|
||||||
|
|
||||||
|
Button addWaypointsButton = (Button) findViewById(R.id.add_waypoints_button);
|
||||||
|
addWaypointsButton.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
List<Track> tracks = myTracksProviderUtils.getAllTracks();
|
||||||
|
Calendar now = Calendar.getInstance();
|
||||||
|
for (Track track : tracks) {
|
||||||
|
Waypoint waypoint = new Waypoint();
|
||||||
|
waypoint.setTrackId(track.getId());
|
||||||
|
waypoint.setName(now.getTime().toLocaleString());
|
||||||
|
waypoint.setDescription(now.getTime().toLocaleString());
|
||||||
|
myTracksProviderUtils.insertWaypoint(waypoint);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// for the MyTracks service
|
||||||
|
intent = new Intent();
|
||||||
|
ComponentName componentName = new ComponentName(
|
||||||
|
getString(R.string.mytracks_service_package), getString(R.string.mytracks_service_class));
|
||||||
|
intent.setComponent(componentName);
|
||||||
|
|
||||||
|
Button startRecordingButton = (Button) findViewById(R.id.start_recording_button);
|
||||||
|
startRecordingButton.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
if (myTracksService != null) {
|
||||||
|
try {
|
||||||
|
myTracksService.startNewTrack();
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
Log.e(TAG, "RemoteException", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Button stopRecordingButton = (Button) findViewById(R.id.stop_recording_button);
|
||||||
|
stopRecordingButton.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
if (myTracksService != null) {
|
||||||
|
try {
|
||||||
|
myTracksService.endCurrentTrack();
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
Log.e(TAG, "RemoteException", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onStart() {
|
||||||
|
super.onStart();
|
||||||
|
|
||||||
|
// use the MyTracks content provider to get all the tracks
|
||||||
|
List<Track> tracks = myTracksProviderUtils.getAllTracks();
|
||||||
|
for (Track track : tracks) {
|
||||||
|
outputTextView.append(track.getId() + " ");
|
||||||
|
}
|
||||||
|
|
||||||
|
// start and bind the MyTracks service
|
||||||
|
startService(intent);
|
||||||
|
bindService(intent, serviceConnection, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onStop() {
|
||||||
|
super.onStop();
|
||||||
|
|
||||||
|
// unbind and stop the MyTracks service
|
||||||
|
if (myTracksService != null) {
|
||||||
|
unbindService(serviceConnection);
|
||||||
|
}
|
||||||
|
stopService(intent);
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2011 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.
|
||||||
|
*/
|
||||||
|
package com.google.android.apps.mytracks.samples.api;
|
||||||
|
|
||||||
|
import android.content.BroadcastReceiver;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A receiver to receive MyTracks notifications.
|
||||||
|
*
|
||||||
|
* @author Jimmy Shih
|
||||||
|
*/
|
||||||
|
public class MyTracksReceiver extends BroadcastReceiver {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onReceive(Context context, Intent intent) {
|
||||||
|
String action = intent.getAction();
|
||||||
|
long trackId = intent.getLongExtra(context.getString(R.string.track_id_broadcast_extra), -1L);
|
||||||
|
Toast.makeText(context, action + " " + trackId, Toast.LENGTH_LONG).show();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -47,15 +47,6 @@ public class ApiFeaturesTest extends TestCase {
|
|||||||
features = new TestableApiFeatures();
|
features = new TestableApiFeatures();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testHasBackup() {
|
|
||||||
for (int i = 3; i <= 7; i++) {
|
|
||||||
features.setApiLevel(i);
|
|
||||||
assertFalse(features.hasBackup());
|
|
||||||
}
|
|
||||||
features.setApiLevel(8);
|
|
||||||
assertTrue(features.hasBackup());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testHasTextToSpeech() {
|
public void testHasTextToSpeech() {
|
||||||
features.setApiLevel(3);
|
features.setApiLevel(3);
|
||||||
assertFalse(features.hasTextToSpeech());
|
assertFalse(features.hasTextToSpeech());
|
||||||
@@ -65,7 +56,7 @@ public class ApiFeaturesTest extends TestCase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testGetApiPlatformAdapter() {
|
public void testGetApiAdapter() {
|
||||||
assertNotNull(features.getApiPlatformAdapter());
|
assertNotNull(features.getApiAdapter());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user