Loading core/java/com/android/internal/app/AssistUtils.java 0 → 100644 +129 −0 Original line number Diff line number Diff line /* * Copyright (C) 2015 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.internal.app; import android.app.SearchManager; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.os.RemoteException; import android.os.ServiceManager; import android.provider.Settings; import android.util.Log; /** * Utility method for dealing with the assistant aspects of * {@link com.android.internal.app.IVoiceInteractionManagerService IVoiceInteractionManagerService}. */ public class AssistUtils { private static final String TAG = "AssistUtils"; private final Context mContext; private final IVoiceInteractionManagerService mVoiceInteractionManagerService; public AssistUtils(Context context) { mContext = context; mVoiceInteractionManagerService = IVoiceInteractionManagerService.Stub.asInterface( ServiceManager.getService(Context.VOICE_INTERACTION_MANAGER_SERVICE)); } public void showSessionForActiveService(IVoiceInteractionSessionShowCallback showCallback) { try { mVoiceInteractionManagerService.showSessionForActiveService(showCallback); } catch (RemoteException e) { Log.w(TAG, "Failed to call showSessionForActiveService", e); } } public void launchVoiceAssistFromKeyguard() { try { mVoiceInteractionManagerService.launchVoiceAssistFromKeyguard(); } catch (RemoteException e) { Log.w(TAG, "Failed to call launchVoiceAssistFromKeyguard", e); } } public boolean activeServiceSupportsAssistGesture() { try { return mVoiceInteractionManagerService != null && mVoiceInteractionManagerService.activeServiceSupportsAssist(); } catch (RemoteException e) { Log.w(TAG, "Failed to call activeServiceSupportsAssistGesture", e); return false; } } public boolean activeServiceSupportsLaunchFromKeyguard() { try { return mVoiceInteractionManagerService != null && mVoiceInteractionManagerService.activeServiceSupportsLaunchFromKeyguard(); } catch (RemoteException e) { Log.w(TAG, "Failed to call activeServiceSupportsLaunchFromKeyguard", e); return false; } } public ComponentName getActiveServiceComponentName() { try { return mVoiceInteractionManagerService.getActiveServiceComponentName(); } catch (RemoteException e) { Log.w(TAG, "Failed to call getActiveServiceComponentName", e); return null; } } public boolean isSessionRunning() { try { return mVoiceInteractionManagerService != null && mVoiceInteractionManagerService.isSessionRunning(); } catch (RemoteException e) { Log.w(TAG, "Failed to call isSessionRunning", e); return false; } } public void hideCurrentSession() { try { mVoiceInteractionManagerService.hideCurrentSession(); } catch (RemoteException e) { Log.w(TAG, "Failed to call hideCurrentSession", e); } } public ComponentName getAssistComponentForUser(int userId) { final String setting = Settings.Secure.getStringForUser(mContext.getContentResolver(), Settings.Secure.ASSISTANT, userId); if (setting != null) { return ComponentName.unflattenFromString(setting); } // Fallback to keep backward compatible behavior when there is no user setting. if (activeServiceSupportsAssistGesture()) { return getActiveServiceComponentName(); } Intent intent = ((SearchManager) mContext.getSystemService(Context.SEARCH_SERVICE)) .getAssistIntent(mContext, false, userId); if (intent != null) { return intent.getComponent(); } return null; } } packages/SystemUI/src/com/android/systemui/assist/AssistManager.java +18 −67 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.os.RemoteException; import android.os.ServiceManager; import android.os.UserHandle; import android.provider.Settings; import android.util.Log; Loading @@ -28,12 +27,15 @@ import android.view.ViewGroup; import android.view.WindowManager; import android.widget.ImageView; import com.android.internal.app.IVoiceInteractionManagerService; import com.android.internal.app.AssistUtils; import com.android.internal.app.IVoiceInteractionSessionShowCallback; import com.android.systemui.R; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.phone.PhoneStatusBar; import java.io.FileDescriptor; import java.io.PrintWriter; /** * Class to manage everything related to assist in SystemUI. */ Loading @@ -55,7 +57,7 @@ public class AssistManager { private final WindowManager mWindowManager; private AssistOrbContainer mView; private final PhoneStatusBar mBar; private final IVoiceInteractionManagerService mVoiceInteractionManagerService; private final AssistUtils mAssistUtils; private ComponentName mAssistComponent; Loading Loading @@ -92,8 +94,7 @@ public class AssistManager { mContext = context; mBar = bar; mWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE); mVoiceInteractionManagerService = IVoiceInteractionManagerService.Stub.asInterface( ServiceManager.getService(Context.VOICE_INTERACTION_MANAGER_SERVICE)); mAssistUtils = new AssistUtils(context); mContext.getContentResolver().registerContentObserver( Settings.Secure.getUriFor(Settings.Secure.ASSISTANT), false, Loading Loading @@ -140,11 +141,7 @@ public class AssistManager { } public void hideAssist() { try { mVoiceInteractionManagerService.hideCurrentSession(); } catch (RemoteException e) { Log.w(TAG, "Failed to call hideCurrentSession", e); } mAssistUtils.hideCurrentSession(); } private WindowManager.LayoutParams getLayoutParams() { Loading Loading @@ -216,58 +213,27 @@ public class AssistManager { } private void startVoiceInteractor() { try { mVoiceInteractionManagerService.showSessionForActiveService(mShowCallback); } catch (RemoteException e) { Log.w(TAG, "Failed to call showSessionForActiveService", e); } mAssistUtils.showSessionForActiveService(mShowCallback); } public void launchVoiceAssistFromKeyguard() { try { mVoiceInteractionManagerService.launchVoiceAssistFromKeyguard(); } catch (RemoteException e) { Log.w(TAG, "Failed to call launchVoiceAssistFromKeyguard", e); } mAssistUtils.launchVoiceAssistFromKeyguard(); } private boolean getVoiceInteractorSupportsAssistGesture() { try { return mVoiceInteractionManagerService != null && mVoiceInteractionManagerService.activeServiceSupportsAssist(); } catch (RemoteException e) { Log.w(TAG, "Failed to call activeServiceSupportsAssistGesture", e); return false; } return mAssistUtils.activeServiceSupportsAssistGesture(); } public boolean canVoiceAssistBeLaunchedFromKeyguard() { try { return mVoiceInteractionManagerService != null && mVoiceInteractionManagerService.activeServiceSupportsLaunchFromKeyguard(); } catch (RemoteException e) { Log.w(TAG, "Failed to call activeServiceSupportsLaunchFromKeyguard", e); return false; } return mAssistUtils.activeServiceSupportsLaunchFromKeyguard(); } public ComponentName getVoiceInteractorComponentName() { try { return mVoiceInteractionManagerService.getActiveServiceComponentName(); } catch (RemoteException e) { Log.w(TAG, "Failed to call getActiveServiceComponentName", e); return null; } return mAssistUtils.getActiveServiceComponentName(); } private boolean isVoiceSessionRunning() { try { return mVoiceInteractionManagerService != null && mVoiceInteractionManagerService.isSessionRunning(); } catch (RemoteException e) { Log.w(TAG, "Failed to call isSessionRunning", e); return false; } return mAssistUtils.isSessionRunning(); } public void destroy() { Loading Loading @@ -324,26 +290,11 @@ public class AssistManager { } private void updateAssistInfo() { final String setting = Settings.Secure.getStringForUser(mContext.getContentResolver(), Settings.Secure.ASSISTANT, UserHandle.USER_CURRENT); if (setting != null) { mAssistComponent = ComponentName.unflattenFromString(setting); return; } // Fallback to keep backward compatible behavior when there is no user setting. if (getVoiceInteractorSupportsAssistGesture()) { mAssistComponent = getVoiceInteractorComponentName(); return; } Intent intent = ((SearchManager) mContext.getSystemService(Context.SEARCH_SERVICE)) .getAssistIntent(mContext, false, UserHandle.USER_CURRENT); if (intent != null) { mAssistComponent = intent.getComponent(); return; mAssistComponent = mAssistUtils.getAssistComponentForUser(UserHandle.USER_CURRENT); } mAssistComponent = null; public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { pw.println("AssistManager state:"); pw.print(" mAssistComponent="); pw.println(mAssistComponent); } } packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +3 −0 Original line number Diff line number Diff line Loading @@ -2687,6 +2687,9 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, if (mNextAlarmController != null) { mNextAlarmController.dump(fd, pw, args); } if (mAssistManager != null) { mAssistManager.dump(fd, pw, args); } if (mSecurityController != null) { mSecurityController.dump(fd, pw, args); } Loading Loading
core/java/com/android/internal/app/AssistUtils.java 0 → 100644 +129 −0 Original line number Diff line number Diff line /* * Copyright (C) 2015 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.internal.app; import android.app.SearchManager; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.os.RemoteException; import android.os.ServiceManager; import android.provider.Settings; import android.util.Log; /** * Utility method for dealing with the assistant aspects of * {@link com.android.internal.app.IVoiceInteractionManagerService IVoiceInteractionManagerService}. */ public class AssistUtils { private static final String TAG = "AssistUtils"; private final Context mContext; private final IVoiceInteractionManagerService mVoiceInteractionManagerService; public AssistUtils(Context context) { mContext = context; mVoiceInteractionManagerService = IVoiceInteractionManagerService.Stub.asInterface( ServiceManager.getService(Context.VOICE_INTERACTION_MANAGER_SERVICE)); } public void showSessionForActiveService(IVoiceInteractionSessionShowCallback showCallback) { try { mVoiceInteractionManagerService.showSessionForActiveService(showCallback); } catch (RemoteException e) { Log.w(TAG, "Failed to call showSessionForActiveService", e); } } public void launchVoiceAssistFromKeyguard() { try { mVoiceInteractionManagerService.launchVoiceAssistFromKeyguard(); } catch (RemoteException e) { Log.w(TAG, "Failed to call launchVoiceAssistFromKeyguard", e); } } public boolean activeServiceSupportsAssistGesture() { try { return mVoiceInteractionManagerService != null && mVoiceInteractionManagerService.activeServiceSupportsAssist(); } catch (RemoteException e) { Log.w(TAG, "Failed to call activeServiceSupportsAssistGesture", e); return false; } } public boolean activeServiceSupportsLaunchFromKeyguard() { try { return mVoiceInteractionManagerService != null && mVoiceInteractionManagerService.activeServiceSupportsLaunchFromKeyguard(); } catch (RemoteException e) { Log.w(TAG, "Failed to call activeServiceSupportsLaunchFromKeyguard", e); return false; } } public ComponentName getActiveServiceComponentName() { try { return mVoiceInteractionManagerService.getActiveServiceComponentName(); } catch (RemoteException e) { Log.w(TAG, "Failed to call getActiveServiceComponentName", e); return null; } } public boolean isSessionRunning() { try { return mVoiceInteractionManagerService != null && mVoiceInteractionManagerService.isSessionRunning(); } catch (RemoteException e) { Log.w(TAG, "Failed to call isSessionRunning", e); return false; } } public void hideCurrentSession() { try { mVoiceInteractionManagerService.hideCurrentSession(); } catch (RemoteException e) { Log.w(TAG, "Failed to call hideCurrentSession", e); } } public ComponentName getAssistComponentForUser(int userId) { final String setting = Settings.Secure.getStringForUser(mContext.getContentResolver(), Settings.Secure.ASSISTANT, userId); if (setting != null) { return ComponentName.unflattenFromString(setting); } // Fallback to keep backward compatible behavior when there is no user setting. if (activeServiceSupportsAssistGesture()) { return getActiveServiceComponentName(); } Intent intent = ((SearchManager) mContext.getSystemService(Context.SEARCH_SERVICE)) .getAssistIntent(mContext, false, userId); if (intent != null) { return intent.getComponent(); } return null; } }
packages/SystemUI/src/com/android/systemui/assist/AssistManager.java +18 −67 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.os.RemoteException; import android.os.ServiceManager; import android.os.UserHandle; import android.provider.Settings; import android.util.Log; Loading @@ -28,12 +27,15 @@ import android.view.ViewGroup; import android.view.WindowManager; import android.widget.ImageView; import com.android.internal.app.IVoiceInteractionManagerService; import com.android.internal.app.AssistUtils; import com.android.internal.app.IVoiceInteractionSessionShowCallback; import com.android.systemui.R; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.phone.PhoneStatusBar; import java.io.FileDescriptor; import java.io.PrintWriter; /** * Class to manage everything related to assist in SystemUI. */ Loading @@ -55,7 +57,7 @@ public class AssistManager { private final WindowManager mWindowManager; private AssistOrbContainer mView; private final PhoneStatusBar mBar; private final IVoiceInteractionManagerService mVoiceInteractionManagerService; private final AssistUtils mAssistUtils; private ComponentName mAssistComponent; Loading Loading @@ -92,8 +94,7 @@ public class AssistManager { mContext = context; mBar = bar; mWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE); mVoiceInteractionManagerService = IVoiceInteractionManagerService.Stub.asInterface( ServiceManager.getService(Context.VOICE_INTERACTION_MANAGER_SERVICE)); mAssistUtils = new AssistUtils(context); mContext.getContentResolver().registerContentObserver( Settings.Secure.getUriFor(Settings.Secure.ASSISTANT), false, Loading Loading @@ -140,11 +141,7 @@ public class AssistManager { } public void hideAssist() { try { mVoiceInteractionManagerService.hideCurrentSession(); } catch (RemoteException e) { Log.w(TAG, "Failed to call hideCurrentSession", e); } mAssistUtils.hideCurrentSession(); } private WindowManager.LayoutParams getLayoutParams() { Loading Loading @@ -216,58 +213,27 @@ public class AssistManager { } private void startVoiceInteractor() { try { mVoiceInteractionManagerService.showSessionForActiveService(mShowCallback); } catch (RemoteException e) { Log.w(TAG, "Failed to call showSessionForActiveService", e); } mAssistUtils.showSessionForActiveService(mShowCallback); } public void launchVoiceAssistFromKeyguard() { try { mVoiceInteractionManagerService.launchVoiceAssistFromKeyguard(); } catch (RemoteException e) { Log.w(TAG, "Failed to call launchVoiceAssistFromKeyguard", e); } mAssistUtils.launchVoiceAssistFromKeyguard(); } private boolean getVoiceInteractorSupportsAssistGesture() { try { return mVoiceInteractionManagerService != null && mVoiceInteractionManagerService.activeServiceSupportsAssist(); } catch (RemoteException e) { Log.w(TAG, "Failed to call activeServiceSupportsAssistGesture", e); return false; } return mAssistUtils.activeServiceSupportsAssistGesture(); } public boolean canVoiceAssistBeLaunchedFromKeyguard() { try { return mVoiceInteractionManagerService != null && mVoiceInteractionManagerService.activeServiceSupportsLaunchFromKeyguard(); } catch (RemoteException e) { Log.w(TAG, "Failed to call activeServiceSupportsLaunchFromKeyguard", e); return false; } return mAssistUtils.activeServiceSupportsLaunchFromKeyguard(); } public ComponentName getVoiceInteractorComponentName() { try { return mVoiceInteractionManagerService.getActiveServiceComponentName(); } catch (RemoteException e) { Log.w(TAG, "Failed to call getActiveServiceComponentName", e); return null; } return mAssistUtils.getActiveServiceComponentName(); } private boolean isVoiceSessionRunning() { try { return mVoiceInteractionManagerService != null && mVoiceInteractionManagerService.isSessionRunning(); } catch (RemoteException e) { Log.w(TAG, "Failed to call isSessionRunning", e); return false; } return mAssistUtils.isSessionRunning(); } public void destroy() { Loading Loading @@ -324,26 +290,11 @@ public class AssistManager { } private void updateAssistInfo() { final String setting = Settings.Secure.getStringForUser(mContext.getContentResolver(), Settings.Secure.ASSISTANT, UserHandle.USER_CURRENT); if (setting != null) { mAssistComponent = ComponentName.unflattenFromString(setting); return; } // Fallback to keep backward compatible behavior when there is no user setting. if (getVoiceInteractorSupportsAssistGesture()) { mAssistComponent = getVoiceInteractorComponentName(); return; } Intent intent = ((SearchManager) mContext.getSystemService(Context.SEARCH_SERVICE)) .getAssistIntent(mContext, false, UserHandle.USER_CURRENT); if (intent != null) { mAssistComponent = intent.getComponent(); return; mAssistComponent = mAssistUtils.getAssistComponentForUser(UserHandle.USER_CURRENT); } mAssistComponent = null; public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { pw.println("AssistManager state:"); pw.print(" mAssistComponent="); pw.println(mAssistComponent); } }
packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +3 −0 Original line number Diff line number Diff line Loading @@ -2687,6 +2687,9 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, if (mNextAlarmController != null) { mNextAlarmController.dump(fd, pw, args); } if (mAssistManager != null) { mAssistManager.dump(fd, pw, args); } if (mSecurityController != null) { mSecurityController.dump(fd, pw, args); } Loading