am 0a3e11fe: am 76919595: Merge "Issue #17551667: Voice interaction service should be disabled..." into lmp-mr1-dev

* commit '0a3e11fe428b2d49cecaaf1199ceed36245c1d6f':
  Issue #17551667: Voice interaction service should be disabled...
This commit is contained in:
Dianne Hackborn
2014-11-17 19:31:59 +00:00
committed by Android Git Automerger
2 changed files with 27 additions and 4 deletions

View File

@@ -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;

View File

@@ -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,