Loading services/core/java/com/android/server/vr/VrManagerService.java +0 −101 Original line number Diff line number Diff line Loading @@ -403,107 +403,6 @@ public class VrManagerService extends SystemService implements EnabledComponentC publishLocalService(VrManagerInternal.class, new LocalService()); publishBinderService(VR_MANAGER_BINDER_SERVICE, mVrManager.asBinder()); // If there are no VR packages installed on the device, then disable VR // components, otherwise, enable them. setEnabledStatusOfVrComponents(); } private void setEnabledStatusOfVrComponents() { ArraySet<ComponentName> vrComponents = SystemConfig.getInstance().getDefaultVrComponents(); if (vrComponents == null) { return; } // We only want to enable VR components if there is a VR package installed on the device. // The VR components themselves do not quality as a VR package, so exclude them. ArraySet<String> vrComponentPackageNames = new ArraySet<>(); for (ComponentName componentName : vrComponents) { vrComponentPackageNames.add(componentName.getPackageName()); } // Check to see if there are any packages on the device, other than the VR component // packages. PackageManager pm = mContext.getPackageManager(); List<PackageInfo> packageInfos = pm.getInstalledPackages( PackageManager.GET_CONFIGURATIONS); boolean vrModeIsUsed = false; for (PackageInfo packageInfo : packageInfos) { if (packageInfo != null && packageInfo.packageName != null && pm.getApplicationEnabledSetting(packageInfo.packageName) == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT) { vrModeIsUsed = enableVrComponentsIfVrModeUsed(pm, packageInfo, vrComponentPackageNames, vrComponents); if (vrModeIsUsed) { break; } } } if (!vrModeIsUsed) { Slog.i(TAG, "No VR packages found, disabling VR components"); setVrComponentsEnabledOrDisabled(vrComponents, false); // Register to receive an intent when a new package is installed, in case that package // requires VR components. IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED); intentFilter.addDataScheme("package"); mContext.registerReceiver(new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { PackageManager pm = context.getPackageManager(); final String packageName = intent.getData().getSchemeSpecificPart(); if (packageName != null) { try { PackageInfo packageInfo = pm.getPackageInfo(packageName, PackageManager.GET_CONFIGURATIONS); enableVrComponentsIfVrModeUsed(pm, packageInfo, vrComponentPackageNames, vrComponents); } catch (NameNotFoundException e) { } } }; }, intentFilter); } } private void setVrComponentsEnabledOrDisabled(ArraySet<ComponentName> vrComponents, boolean enabled) { int state = enabled ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED : PackageManager.COMPONENT_ENABLED_STATE_DISABLED; PackageManager pm = mContext.getPackageManager(); for (ComponentName componentName : vrComponents) { try { // Note that we must first check for the existance of the package before trying // to set its enabled state. This is to prevent PackageManager from throwing // an excepton if the package is not found (not just a NameNotFoundException // exception). PackageInfo packageInfo = pm.getPackageInfo(componentName.getPackageName(), PackageManager.GET_CONFIGURATIONS); pm.setApplicationEnabledSetting(componentName.getPackageName(), state , 0); } catch (NameNotFoundException e) { } } } private boolean enableVrComponentsIfVrModeUsed(PackageManager pm, PackageInfo packageInfo, ArraySet<String> vrComponentPackageNames, ArraySet<ComponentName> vrComponents) { boolean isVrComponent = vrComponents != null && vrComponentPackageNames.contains(packageInfo.packageName); if (packageInfo != null && packageInfo.reqFeatures != null && !isVrComponent) { for (FeatureInfo featureInfo : packageInfo.reqFeatures) { if (featureInfo.name != null && (featureInfo.name.equals(PackageManager.FEATURE_VR_MODE) || featureInfo.name.equals(PackageManager.FEATURE_VR_MODE_HIGH_PERFORMANCE))) { Slog.i(TAG, "VR package found, enabling VR components"); setVrComponentsEnabledOrDisabled(vrComponents, true); return true; } } } return false; } @Override Loading Loading
services/core/java/com/android/server/vr/VrManagerService.java +0 −101 Original line number Diff line number Diff line Loading @@ -403,107 +403,6 @@ public class VrManagerService extends SystemService implements EnabledComponentC publishLocalService(VrManagerInternal.class, new LocalService()); publishBinderService(VR_MANAGER_BINDER_SERVICE, mVrManager.asBinder()); // If there are no VR packages installed on the device, then disable VR // components, otherwise, enable them. setEnabledStatusOfVrComponents(); } private void setEnabledStatusOfVrComponents() { ArraySet<ComponentName> vrComponents = SystemConfig.getInstance().getDefaultVrComponents(); if (vrComponents == null) { return; } // We only want to enable VR components if there is a VR package installed on the device. // The VR components themselves do not quality as a VR package, so exclude them. ArraySet<String> vrComponentPackageNames = new ArraySet<>(); for (ComponentName componentName : vrComponents) { vrComponentPackageNames.add(componentName.getPackageName()); } // Check to see if there are any packages on the device, other than the VR component // packages. PackageManager pm = mContext.getPackageManager(); List<PackageInfo> packageInfos = pm.getInstalledPackages( PackageManager.GET_CONFIGURATIONS); boolean vrModeIsUsed = false; for (PackageInfo packageInfo : packageInfos) { if (packageInfo != null && packageInfo.packageName != null && pm.getApplicationEnabledSetting(packageInfo.packageName) == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT) { vrModeIsUsed = enableVrComponentsIfVrModeUsed(pm, packageInfo, vrComponentPackageNames, vrComponents); if (vrModeIsUsed) { break; } } } if (!vrModeIsUsed) { Slog.i(TAG, "No VR packages found, disabling VR components"); setVrComponentsEnabledOrDisabled(vrComponents, false); // Register to receive an intent when a new package is installed, in case that package // requires VR components. IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED); intentFilter.addDataScheme("package"); mContext.registerReceiver(new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { PackageManager pm = context.getPackageManager(); final String packageName = intent.getData().getSchemeSpecificPart(); if (packageName != null) { try { PackageInfo packageInfo = pm.getPackageInfo(packageName, PackageManager.GET_CONFIGURATIONS); enableVrComponentsIfVrModeUsed(pm, packageInfo, vrComponentPackageNames, vrComponents); } catch (NameNotFoundException e) { } } }; }, intentFilter); } } private void setVrComponentsEnabledOrDisabled(ArraySet<ComponentName> vrComponents, boolean enabled) { int state = enabled ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED : PackageManager.COMPONENT_ENABLED_STATE_DISABLED; PackageManager pm = mContext.getPackageManager(); for (ComponentName componentName : vrComponents) { try { // Note that we must first check for the existance of the package before trying // to set its enabled state. This is to prevent PackageManager from throwing // an excepton if the package is not found (not just a NameNotFoundException // exception). PackageInfo packageInfo = pm.getPackageInfo(componentName.getPackageName(), PackageManager.GET_CONFIGURATIONS); pm.setApplicationEnabledSetting(componentName.getPackageName(), state , 0); } catch (NameNotFoundException e) { } } } private boolean enableVrComponentsIfVrModeUsed(PackageManager pm, PackageInfo packageInfo, ArraySet<String> vrComponentPackageNames, ArraySet<ComponentName> vrComponents) { boolean isVrComponent = vrComponents != null && vrComponentPackageNames.contains(packageInfo.packageName); if (packageInfo != null && packageInfo.reqFeatures != null && !isVrComponent) { for (FeatureInfo featureInfo : packageInfo.reqFeatures) { if (featureInfo.name != null && (featureInfo.name.equals(PackageManager.FEATURE_VR_MODE) || featureInfo.name.equals(PackageManager.FEATURE_VR_MODE_HIGH_PERFORMANCE))) { Slog.i(TAG, "VR package found, enabling VR components"); setVrComponentsEnabledOrDisabled(vrComponents, true); return true; } } } return false; } @Override Loading