diff options
| -rw-r--r-- | services/core/java/com/android/server/SystemConfig.java | 12 | ||||
| -rw-r--r-- | services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java | 19 |
2 files changed, 27 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/SystemConfig.java b/services/core/java/com/android/server/SystemConfig.java index f4fb5199e730..92fbc1e7125a 100644 --- a/services/core/java/com/android/server/SystemConfig.java +++ b/services/core/java/com/android/server/SystemConfig.java @@ -16,6 +16,7 @@ package com.android.server; +import android.app.ActivityManager; import android.content.pm.FeatureInfo; import android.os.*; import android.os.Process; @@ -177,6 +178,8 @@ public class SystemConfig { return; } + final boolean lowRam = ActivityManager.isLowRamDeviceStatic(); + try { XmlPullParser parser = Xml.newPullParser(); parser.setInput(permReader); @@ -276,10 +279,17 @@ public class SystemConfig { } else if ("feature".equals(name)) { String fname = parser.getAttributeValue(null, "name"); + boolean allowed; + if (!lowRam) { + allowed = true; + } else { + String notLowRam = parser.getAttributeValue(null, "notLowRam"); + allowed = !"true".equals(notLowRam); + } if (fname == null) { Slog.w(TAG, "<feature> without name at " + parser.getPositionDescription()); - } else { + } else if (allowed) { //Log.i(TAG, "Got feature " + fname); FeatureInfo fi = new FeatureInfo(); fi.name = fname; diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java index 82b7f8b6eb52..f5d48675fa59 100644 --- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java +++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java @@ -136,11 +136,14 @@ public class VoiceInteractionManagerService extends SystemService { Settings.Secure.VOICE_INTERACTION_SERVICE, userHandle); ComponentName curRecognizer = getCurRecognizer(userHandle); VoiceInteractionServiceInfo curInteractorInfo = null; - if (curInteractorStr == null && curRecognizer != null) { + if (curInteractorStr == null && curRecognizer != null + && !ActivityManager.isLowRamDeviceStatic()) { // If there is no interactor setting, that means we are upgrading // from an older platform version. If the current recognizer is not // set or matches the preferred recognizer, then we want to upgrade // the user to have the default voice interaction service enabled. + // Note that we don't do this for low-RAM devices, since we aren't + // supporting voice interaction services there. curInteractorInfo = findAvailInteractor(userHandle, curRecognizer); if (curInteractorInfo != null) { // Looks good! We'll apply this one. To make it happen, we clear the @@ -150,6 +153,15 @@ public class VoiceInteractionManagerService extends SystemService { } } + // If we are on a svelte device, make sure an interactor is not currently + // enabled; if it is, turn it off. + if (ActivityManager.isLowRamDeviceStatic() && curInteractorStr != null) { + if (!TextUtils.isEmpty(curInteractorStr)) { + setCurInteractor(null, userHandle); + curInteractorStr = ""; + } + } + if (curRecognizer != null) { // If we already have at least a recognizer, then we probably want to // leave things as they are... unless something has disappeared. @@ -171,10 +183,11 @@ public class VoiceInteractionManagerService extends SystemService { } } - // Initializing settings, look for an interactor first. - if (curInteractorInfo == null) { + // Initializing settings, look for an interactor first (but only on non-svelte). + if (curInteractorInfo == null && !ActivityManager.isLowRamDeviceStatic()) { curInteractorInfo = findAvailInteractor(userHandle, null); } + if (curInteractorInfo != null) { // Eventually it will be an error to not specify this. setCurInteractor(new ComponentName(curInteractorInfo.getServiceInfo().packageName, |