summaryrefslogtreecommitdiffstats
path: root/packages
diff options
context:
space:
mode:
authorDaniel Sandler <dsandler@google.com>2011-02-03 20:49:10 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-02-03 20:49:10 -0800
commit4ad2547fe08bab430d7d9f9cc4b789410856c9c3 (patch)
treeb619d603f487d859a8acb7f4da99d67aaefd8858 /packages
parentb65b2df6e421d0fc8516e933f52763ff172760f3 (diff)
parente40451a89dc91dfd636af7cb32a23b4a4cc93fdc (diff)
downloadframeworks_base-4ad2547fe08bab430d7d9f9cc4b789410856c9c3.zip
frameworks_base-4ad2547fe08bab430d7d9f9cc4b789410856c9c3.tar.gz
frameworks_base-4ad2547fe08bab430d7d9f9cc4b789410856c9c3.tar.bz2
Merge "Ongoing notification for GPS use." into honeycomb
Diffstat (limited to 'packages')
-rw-r--r--packages/SystemUI/res/values-es-rUS-xlarge/strings.xml6
-rw-r--r--packages/SystemUI/res/values-xlarge/strings.xml5
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/LocationController.java114
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java4
4 files changed, 129 insertions, 0 deletions
diff --git a/packages/SystemUI/res/values-es-rUS-xlarge/strings.xml b/packages/SystemUI/res/values-es-rUS-xlarge/strings.xml
index 00b951e..7ba493d 100644
--- a/packages/SystemUI/res/values-es-rUS-xlarge/strings.xml
+++ b/packages/SystemUI/res/values-es-rUS-xlarge/strings.xml
@@ -22,4 +22,10 @@
<string name="status_bar_clear_all_button" msgid="4722520806446512408">"Eliminar todos"</string>
<string name="status_bar_settings_signal_meter_disconnected" msgid="4684094636492991496">"Sin conexión a Int."</string>
<string name="status_bar_settings_signal_meter_wifi_nossid" msgid="1456658018593445677">"WiFi conectado"</string>
+
+ <!-- manually translated -->
+ <string name="gps_notification_searching_text">Buscando señal de GPS</string>
+
+ <!-- manually translated -->
+ <string name="gps_notification_found_text">Ubicación establecida por el GPS</string>
</resources>
diff --git a/packages/SystemUI/res/values-xlarge/strings.xml b/packages/SystemUI/res/values-xlarge/strings.xml
index f7b642d..dfd5851 100644
--- a/packages/SystemUI/res/values-xlarge/strings.xml
+++ b/packages/SystemUI/res/values-xlarge/strings.xml
@@ -38,4 +38,9 @@
<!-- Separator for PLMN and SPN in network name. -->
<string name="status_bar_network_name_separator" translatable="false">" – "</string>
+ <!-- Notification text: when GPS is getting a fix [CHAR LIMIT=50] -->
+ <string name="gps_notification_searching_text">Searching for GPS</string>
+
+ <!-- Notification text: when GPS has found a fix [CHAR LIMIT=50] -->
+ <string name="gps_notification_found_text">Location set by GPS</string>
</resources>
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/LocationController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/LocationController.java
new file mode 100644
index 0000000..76c05d2
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/LocationController.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.android.systemui.statusbar.policy;
+
+import java.util.ArrayList;
+
+import android.app.Notification;
+import android.app.NotificationManager;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.location.LocationManager;
+import android.util.Slog;
+import android.view.View;
+import android.widget.ImageView;
+
+// private NM API
+import android.app.INotificationManager;
+import com.android.internal.statusbar.StatusBarNotification;
+
+import com.android.systemui.R;
+
+public class LocationController extends BroadcastReceiver {
+ private static final String TAG = "StatusBar.LocationController";
+
+ private static final int GPS_NOTIFICATION_ID = 374203-122084;
+
+ private Context mContext;
+
+ private INotificationManager mNotificationService;
+
+ public LocationController(Context context) {
+ mContext = context;
+
+ IntentFilter filter = new IntentFilter();
+ filter.addAction(LocationManager.GPS_ENABLED_CHANGE_ACTION);
+ filter.addAction(LocationManager.GPS_FIX_CHANGE_ACTION);
+ context.registerReceiver(this, filter);
+
+ NotificationManager nm = (NotificationManager)context.getSystemService(
+ Context.NOTIFICATION_SERVICE);
+ mNotificationService = nm.getService();
+ }
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ final String action = intent.getAction();
+ final boolean enabled = intent.getBooleanExtra(LocationManager.EXTRA_GPS_ENABLED, false);
+
+ boolean visible;
+ int iconId, textResId;
+
+ if (action.equals(LocationManager.GPS_FIX_CHANGE_ACTION) && enabled) {
+ // GPS is getting fixes
+ iconId = com.android.internal.R.drawable.stat_sys_gps_on;
+ textResId = R.string.gps_notification_found_text;
+ visible = true;
+ } else if (action.equals(LocationManager.GPS_ENABLED_CHANGE_ACTION) && !enabled) {
+ // GPS is off
+ visible = false;
+ iconId = textResId = 0;
+ } else {
+ // GPS is on, but not receiving fixes
+ iconId = R.drawable.stat_sys_gps_acquiring_anim;
+ textResId = R.string.gps_notification_searching_text;
+ visible = true;
+ }
+
+ try {
+ if (visible) {
+ Notification n = new Notification.Builder(mContext)
+ .setSmallIcon(iconId)
+ .setContentTitle(mContext.getText(textResId))
+ .setOngoing(true)
+ .getNotification();
+
+ // Notification.Builder will helpfully fill these out for you no matter what you do
+ n.tickerView = null;
+ n.tickerText = null;
+
+ int[] idOut = new int[1];
+ mNotificationService.enqueueNotificationWithTagPriority(
+ mContext.getPackageName(),
+ null,
+ GPS_NOTIFICATION_ID,
+ StatusBarNotification.PRIORITY_SYSTEM, // !!!1!one!!!
+ n,
+ idOut);
+ } else {
+ mNotificationService.cancelNotification(
+ mContext.getPackageName(),
+ GPS_NOTIFICATION_ID);
+ }
+ } catch (android.os.RemoteException ex) {
+ // well, it was worth a shot
+ }
+ }
+}
+
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java
index 4bac07f..7a13fde 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java
@@ -65,6 +65,7 @@ import com.android.systemui.R;
import com.android.systemui.statusbar.*;
import com.android.systemui.statusbar.policy.BatteryController;
import com.android.systemui.statusbar.policy.BluetoothController;
+import com.android.systemui.statusbar.policy.LocationController;
import com.android.systemui.statusbar.policy.NetworkController;
import com.android.systemui.recent.RecentApplicationsActivity;
@@ -135,6 +136,7 @@ public class TabletStatusBar extends StatusBar implements
HeightReceiver mHeightReceiver;
BatteryController mBatteryController;
BluetoothController mBluetoothController;
+ LocationController mLocationController;
NetworkController mNetworkController;
View mBarContents;
@@ -359,6 +361,8 @@ public class TabletStatusBar extends StatusBar implements
mTicker = new TabletTicker(this);
// The icons
+ mLocationController = new LocationController(mContext); // will post a notification
+
mBatteryController = new BatteryController(mContext);
mBatteryController.addIconView((ImageView)sb.findViewById(R.id.battery));
mBluetoothController = new BluetoothController(mContext);