diff options
author | Daniel Sandler <dsandler@google.com> | 2011-02-03 20:49:10 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-02-03 20:49:10 -0800 |
commit | 4ad2547fe08bab430d7d9f9cc4b789410856c9c3 (patch) | |
tree | b619d603f487d859a8acb7f4da99d67aaefd8858 /packages | |
parent | b65b2df6e421d0fc8516e933f52763ff172760f3 (diff) | |
parent | e40451a89dc91dfd636af7cb32a23b4a4cc93fdc (diff) | |
download | frameworks_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')
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); |