diff --git a/SignalStrengthSampler/AndroidManifest.xml b/SignalStrengthSampler/AndroidManifest.xml
index 9ede9ed88..10dd8edd3 100644
--- a/SignalStrengthSampler/AndroidManifest.xml
+++ b/SignalStrengthSampler/AndroidManifest.xml
@@ -49,6 +49,7 @@ limitations under the License.
+
diff --git a/SignalStrengthSampler/src/com/google/android/apps/mytracks/signalstrength/SignalStrengthListenerCupcake.java b/SignalStrengthSampler/src/com/google/android/apps/mytracks/signalstrength/SignalStrengthListenerCupcake.java
index b519d3d2e..fd1ea324b 100644
--- a/SignalStrengthSampler/src/com/google/android/apps/mytracks/signalstrength/SignalStrengthListenerCupcake.java
+++ b/SignalStrengthSampler/src/com/google/android/apps/mytracks/signalstrength/SignalStrengthListenerCupcake.java
@@ -15,9 +15,12 @@
*/
package com.google.android.apps.mytracks.signalstrength;
-import static com.google.android.apps.mytracks.signalstrength.SignalStrengthConstants.*;
+import static com.google.android.apps.mytracks.signalstrength.SignalStrengthConstants.TAG;
+import android.content.ContentResolver;
import android.content.Context;
+import android.database.Cursor;
+import android.net.Uri;
import android.telephony.CellLocation;
import android.telephony.NeighboringCellInfo;
import android.telephony.PhoneStateListener;
@@ -35,6 +38,8 @@ import java.util.List;
*/
public class SignalStrengthListenerCupcake extends PhoneStateListener
implements SignalStrengthListener {
+ private static final Uri APN_URI = Uri.parse("content://telephony/carriers");
+
private final Context context;
private final SignalStrengthCallback callback;
@@ -100,7 +105,7 @@ public class SignalStrengthListenerCupcake extends PhoneStateListener
* @return A human readable description of the network state
*/
private String getDescription() {
- StringBuffer sb = new StringBuffer();
+ StringBuilder sb = new StringBuilder();
sb.append(getStrengthAsString());
sb.append("Network Type: ");
@@ -117,6 +122,8 @@ public class SignalStrengthListenerCupcake extends PhoneStateListener
sb.append(manager.isNetworkRoaming());
sb.append('\n');
+ appendCurrentApns(sb);
+
List infos = manager.getNeighboringCellInfo();
Log.i(TAG, "Found " + infos.size() + " cells.");
if (infos.size() > 0) {
@@ -138,6 +145,44 @@ public class SignalStrengthListenerCupcake extends PhoneStateListener
return sb.toString();
}
+ private void appendCurrentApns(StringBuilder output) {
+ ContentResolver contentResolver = context.getContentResolver();
+
+ Cursor cursor = contentResolver.query(
+ APN_URI, new String[] { "name", "apn" }, "current=1", null, null);
+
+ if (cursor == null) {
+ return;
+ }
+
+ try {
+ String name = null;
+ String apn = null;
+
+ while (cursor.moveToNext()) {
+ int nameIdx = cursor.getColumnIndex("name");
+ int apnIdx = cursor.getColumnIndex("apn");
+ if (apnIdx < 0 || nameIdx < 0) {
+ continue;
+ }
+
+ name = cursor.getString(nameIdx);
+ apn = cursor.getString(apnIdx);
+ output.append("APN: ");
+ if (name != null) {
+ output.append(name);
+ }
+ if (apn != null) {
+ output.append(" (");
+ output.append(apn);
+ output.append(")\n");
+ }
+ }
+ } finally {
+ cursor.close();
+ }
+ }
+
/**
* Gets the url for the waypoint icon for the current network type.
*
diff --git a/SignalStrengthSampler/src/com/google/android/apps/mytracks/signalstrength/SignalStrengthService.java b/SignalStrengthSampler/src/com/google/android/apps/mytracks/signalstrength/SignalStrengthService.java
index f90b11e45..0e7cbb03d 100644
--- a/SignalStrengthSampler/src/com/google/android/apps/mytracks/signalstrength/SignalStrengthService.java
+++ b/SignalStrengthSampler/src/com/google/android/apps/mytracks/signalstrength/SignalStrengthService.java
@@ -167,7 +167,7 @@ public class SignalStrengthService extends Service
// Create a waypoint.
WaypointCreationRequest request =
new WaypointCreationRequest(WaypointCreationRequest.WaypointType.MARKER,
- "Signal Strength", icon, description);
+ "Signal Strength", description, icon);
waypointId = mytracksService.insertWaypoint(request);
}