Adding device name

A new global settings to name a device. This will centralize the notion
of device name/nickname and should be used by Cast, Bluetooth, TV Remote and other
advertising applications/services.

Change-Id: I2294deb5c0d1002fb2fc158f62a2d5643d90d749
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index e1fd46e..3cf51b4 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -6147,6 +6147,13 @@
         /** @hide */ public static final int HEADS_UP_ON = 1;
 
         /**
+         * The name of the device
+         *
+         * @hide
+         */
+        public static final String DEVICE_NAME = "device_name";
+
+        /**
          * Settings to backup. This is here so that it's in the same place as the settings
          * keys and easy to update.
          *
diff --git a/packages/SettingsProvider/res/values/defaults.xml b/packages/SettingsProvider/res/values/defaults.xml
index 59b486f..bf97fc0 100644
--- a/packages/SettingsProvider/res/values/defaults.xml
+++ b/packages/SettingsProvider/res/values/defaults.xml
@@ -189,4 +189,7 @@
     <!-- Default for Settings.Global.HEADS_UP_NOTIFICATIONS_ENABLED, 1==on -->
     <integer name="def_heads_up_enabled">1</integer>
 
+    <!-- Default for Settings.Global.DEVICE_NAME $1=BRAND $2=MODEL-->
+    <string name="def_device_name">%1$s %2$s</string>
+
 </resources>
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
index 58086c4..909c32e 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
@@ -31,6 +31,7 @@
 import android.media.AudioManager;
 import android.media.AudioService;
 import android.net.ConnectivityManager;
+import android.os.Build;
 import android.os.Environment;
 import android.os.RemoteException;
 import android.os.ServiceManager;
@@ -69,7 +70,7 @@
     // database gets upgraded properly. At a minimum, please confirm that 'upgradeVersion'
     // is properly propagated through your change.  Not doing so will result in a loss of user
     // settings.
-    private static final int DATABASE_VERSION = 101;
+    private static final int DATABASE_VERSION = 102;
 
     private Context mContext;
     private int mUserHandle;
@@ -1614,6 +1615,23 @@
             upgradeVersion = 101;
         }
 
+        if (upgradeVersion == 101) {
+            if (mUserHandle == UserHandle.USER_OWNER) {
+                db.beginTransaction();
+                SQLiteStatement stmt = null;
+                try {
+                    stmt = db.compileStatement("INSERT OR IGNORE INTO global(name,value)"
+                            + " VALUES(?,?);");
+                    loadSetting(stmt, Settings.Global.DEVICE_NAME, getDefaultDeviceName());
+                    db.setTransactionSuccessful();
+                } finally {
+                    db.endTransaction();
+                    if (stmt != null) stmt.close();
+                }
+            }
+            upgradeVersion = 102;
+        }
+
         // *** Remember to update DATABASE_VERSION above!
 
         if (upgradeVersion != currentVersion) {
@@ -2342,6 +2360,8 @@
             loadIntegerSetting(stmt, Global.HEADS_UP_NOTIFICATIONS_ENABLED,
                     R.integer.def_heads_up_enabled);
 
+            loadSetting(stmt, Settings.Global.DEVICE_NAME, getDefaultDeviceName());
+
             // --- New global settings start here
         } finally {
             if (stmt != null) stmt.close();
@@ -2398,4 +2418,9 @@
         }
         return defaultValue;
     }
+
+    private String getDefaultDeviceName() {
+        return mContext.getResources().getString(R.string.def_device_name, Build.BRAND,
+                Build.MODEL);
+    }
 }