private void handleToggleEnableAccessibilityGesturePreferenceClick() { Bundle extras = mGlobalGesturePreferenceScreen.getExtras(); extras.putString( EXTRA_TITLE, getString(R.string.accessibility_global_gesture_preference_title)); extras.putString( EXTRA_SUMMARY, getString(R.string.accessibility_global_gesture_preference_description)); extras.putBoolean( EXTRA_CHECKED, Settings.Global.getInt( getContentResolver(), Settings.Global.ENABLE_ACCESSIBILITY_GLOBAL_GESTURE_ENABLED, 0) == 1); super.onPreferenceTreeClick(mGlobalGesturePreferenceScreen, mGlobalGesturePreferenceScreen); }
private void handleDisplayMagnificationPreferenceScreenClick() { Bundle extras = mDisplayMagnificationPreferenceScreen.getExtras(); extras.putString(EXTRA_TITLE, getString(R.string.accessibility_screen_magnification_title)); extras.putCharSequence( EXTRA_SUMMARY, getActivity().getResources().getText(R.string.accessibility_screen_magnification_summary)); extras.putBoolean( EXTRA_CHECKED, Settings.Secure.getInt( getContentResolver(), Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, 0) == 1); super.onPreferenceTreeClick( mDisplayMagnificationPreferenceScreen, mDisplayMagnificationPreferenceScreen); }
private void updateServicesPreferences() { // Since services category is auto generated we have to do a pass // to generate it since services can come and go and then based on // the global accessibility state to decided whether it is enabled. // Generate. mServicesCategory.removeAll(); AccessibilityManager accessibilityManager = AccessibilityManager.getInstance(getActivity()); List<AccessibilityServiceInfo> installedServices = accessibilityManager.getInstalledAccessibilityServiceList(); Set<ComponentName> enabledServices = getEnabledServicesFromSettings(getActivity()); final boolean accessibilityEnabled = Settings.Secure.getInt(getContentResolver(), Settings.Secure.ACCESSIBILITY_ENABLED, 0) == 1; for (int i = 0, count = installedServices.size(); i < count; ++i) { AccessibilityServiceInfo info = installedServices.get(i); PreferenceScreen preference = getPreferenceManager().createPreferenceScreen(getActivity()); String title = info.getResolveInfo().loadLabel(getPackageManager()).toString(); ServiceInfo serviceInfo = info.getResolveInfo().serviceInfo; ComponentName componentName = new ComponentName(serviceInfo.packageName, serviceInfo.name); preference.setKey(componentName.flattenToString()); preference.setTitle(title); final boolean serviceEnabled = accessibilityEnabled && enabledServices.contains(componentName); if (serviceEnabled) { preference.setSummary(getString(R.string.accessibility_service_state_on)); } else { preference.setSummary(getString(R.string.accessibility_service_state_off)); } preference.setOrder(i); preference.setFragment(ToggleAccessibilityServiceFragment.class.getName()); preference.setPersistent(true); Bundle extras = preference.getExtras(); extras.putString(EXTRA_PREFERENCE_KEY, preference.getKey()); extras.putBoolean(EXTRA_CHECKED, serviceEnabled); extras.putString(EXTRA_TITLE, title); String description = info.getDescription(); if (TextUtils.isEmpty(description)) { description = getString(R.string.accessibility_service_default_description); } extras.putString(EXTRA_SUMMARY, description); CharSequence applicationLabel = info.getResolveInfo().loadLabel(getPackageManager()); extras.putString( EXTRA_ENABLE_WARNING_TITLE, getString(R.string.accessibility_service_security_warning_title, applicationLabel)); extras.putString( EXTRA_ENABLE_WARNING_MESSAGE, getString(R.string.accessibility_service_security_warning_summary, applicationLabel)); extras.putString( EXTRA_DISABLE_WARNING_TITLE, getString(R.string.accessibility_service_disable_warning_title, applicationLabel)); extras.putString( EXTRA_DISABLE_WARNING_MESSAGE, getString(R.string.accessibility_service_disable_warning_summary, applicationLabel)); String settingsClassName = info.getSettingsActivityName(); if (!TextUtils.isEmpty(settingsClassName)) { extras.putString( EXTRA_SETTINGS_TITLE, getString(R.string.accessibility_menu_item_settings)); extras.putString( EXTRA_SETTINGS_COMPONENT_NAME, new ComponentName(info.getResolveInfo().serviceInfo.packageName, settingsClassName) .flattenToString()); } mServicesCategory.addPreference(preference); } if (mServicesCategory.getPreferenceCount() == 0) { if (mNoServicesMessagePreference == null) { mNoServicesMessagePreference = new Preference(getActivity()) { @Override protected void onBindView(View view) { super.onBindView(view); LinearLayout containerView = (LinearLayout) view.findViewById(R.id.message_container); containerView.setGravity(Gravity.CENTER); TextView summaryView = (TextView) view.findViewById(R.id.summary); String title = getString(R.string.accessibility_no_services_installed); summaryView.setText(title); } }; mNoServicesMessagePreference.setPersistent(false); mNoServicesMessagePreference.setLayoutResource(R.layout.text_description_preference); mNoServicesMessagePreference.setSelectable(false); } mServicesCategory.addPreference(mNoServicesMessagePreference); } }
@Override public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { if (preference == mVibrateWhenRinging) { Settings.System.putInt( getContentResolver(), Settings.System.VIBRATE_WHEN_RINGING, mVibrateWhenRinging.isChecked() ? 1 : 0); } else if (preference == mDtmfTone) { Settings.System.putInt( getContentResolver(), Settings.System.DTMF_TONE_WHEN_DIALING, mDtmfTone.isChecked() ? 1 : 0); } else if (preference == mSoundEffects) { if (mSoundEffects.isChecked()) { mAudioManager.loadSoundEffects(); } else { mAudioManager.unloadSoundEffects(); } Settings.System.putInt( getContentResolver(), Settings.System.SOUND_EFFECTS_ENABLED, mSoundEffects.isChecked() ? 1 : 0); } else if (preference == mHapticFeedback) { Settings.System.putInt( getContentResolver(), Settings.System.HAPTIC_FEEDBACK_ENABLED, mHapticFeedback.isChecked() ? 1 : 0); } else if (preference == mLockSounds) { Settings.System.putInt( getContentResolver(), Settings.System.LOCKSCREEN_SOUNDS_ENABLED, mLockSounds.isChecked() ? 1 : 0); } else if (preference == mMusicFx) { // let the framework fire off the intent return false; } else if (preference == mDockAudioSettings) { int dockState = mDockIntent != null ? mDockIntent.getIntExtra(Intent.EXTRA_DOCK_STATE, 0) : Intent.EXTRA_DOCK_STATE_UNDOCKED; if (dockState == Intent.EXTRA_DOCK_STATE_UNDOCKED) { showDialog(DIALOG_NOT_DOCKED); } else { boolean isBluetooth = mDockIntent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE) != null; if (isBluetooth) { Intent i = new Intent(mDockIntent); i.setAction(DockEventReceiver.ACTION_DOCK_SHOW_UI); i.setClass(getActivity(), DockEventReceiver.class); getActivity().sendBroadcast(i); } else { PreferenceScreen ps = (PreferenceScreen) mDockAudioSettings; Bundle extras = ps.getExtras(); extras.putBoolean( "checked", Settings.Global.getInt( getContentResolver(), Settings.Global.DOCK_AUDIO_MEDIA_ENABLED, 0) == 1); super.onPreferenceTreeClick(ps, ps); } } } else if (preference == mDockSounds) { Settings.Global.putInt( getContentResolver(), Settings.Global.DOCK_SOUNDS_ENABLED, mDockSounds.isChecked() ? 1 : 0); } else if (preference == mDockAudioMediaEnabled) { Settings.Global.putInt( getContentResolver(), Settings.Global.DOCK_AUDIO_MEDIA_ENABLED, mDockAudioMediaEnabled.isChecked() ? 1 : 0); } return true; }
private void updateServicesPreferences() { // Since services category is auto generated we have to do a pass // to generate it since services can come and go and then based on // the global accessibility state to decided whether it is enabled. // Generate. mServicesCategory.removeAll(); AccessibilityManager accessibilityManager = AccessibilityManager.getInstance(getActivity()); List<AccessibilityServiceInfo> installedServices = accessibilityManager.getInstalledAccessibilityServiceList(); Set<ComponentName> enabledServices = AccessibilityUtils.getEnabledServicesFromSettings(getActivity()); List<String> permittedServices = mDpm.getPermittedAccessibilityServices(UserHandle.myUserId()); final boolean accessibilityEnabled = Settings.Secure.getInt(getContentResolver(), Settings.Secure.ACCESSIBILITY_ENABLED, 0) == 1; for (int i = 0, count = installedServices.size(); i < count; ++i) { AccessibilityServiceInfo info = installedServices.get(i); PreferenceScreen preference = getPreferenceManager().createPreferenceScreen(getActivity()); String title = info.getResolveInfo().loadLabel(getPackageManager()).toString(); ServiceInfo serviceInfo = info.getResolveInfo().serviceInfo; ComponentName componentName = new ComponentName(serviceInfo.packageName, serviceInfo.name); preference.setKey(componentName.flattenToString()); preference.setTitle(title); final boolean serviceEnabled = accessibilityEnabled && enabledServices.contains(componentName); String serviceEnabledString; if (serviceEnabled) { serviceEnabledString = getString(R.string.accessibility_feature_state_on); } else { serviceEnabledString = getString(R.string.accessibility_feature_state_off); } // Disable all accessibility services that are not permitted. String packageName = serviceInfo.packageName; boolean serviceAllowed = permittedServices == null || permittedServices.contains(packageName); preference.setEnabled(serviceAllowed || serviceEnabled); String summaryString; if (serviceAllowed) { summaryString = serviceEnabledString; } else { summaryString = getString(R.string.accessibility_feature_or_input_method_not_allowed); } preference.setSummary(summaryString); preference.setOrder(i); preference.setFragment(ToggleAccessibilityServicePreferenceFragment.class.getName()); preference.setPersistent(true); Bundle extras = preference.getExtras(); extras.putString(EXTRA_PREFERENCE_KEY, preference.getKey()); extras.putBoolean(EXTRA_CHECKED, serviceEnabled); extras.putString(EXTRA_TITLE, title); String description = info.loadDescription(getPackageManager()); if (TextUtils.isEmpty(description)) { description = getString(R.string.accessibility_service_default_description); } extras.putString(EXTRA_SUMMARY, description); String settingsClassName = info.getSettingsActivityName(); if (!TextUtils.isEmpty(settingsClassName)) { extras.putString( EXTRA_SETTINGS_TITLE, getString(R.string.accessibility_menu_item_settings)); extras.putString( EXTRA_SETTINGS_COMPONENT_NAME, new ComponentName(info.getResolveInfo().serviceInfo.packageName, settingsClassName) .flattenToString()); } extras.putParcelable(EXTRA_COMPONENT_NAME, componentName); mServicesCategory.addPreference(preference); } if (mServicesCategory.getPreferenceCount() == 0) { if (mNoServicesMessagePreference == null) { mNoServicesMessagePreference = new Preference(getActivity()); mNoServicesMessagePreference.setPersistent(false); mNoServicesMessagePreference.setLayoutResource(R.layout.text_description_preference); mNoServicesMessagePreference.setSelectable(false); mNoServicesMessagePreference.setSummary( getString(R.string.accessibility_no_services_installed)); } mServicesCategory.addPreference(mNoServicesMessagePreference); } }
@Override public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { if (preference == mSoundEffects) { if (mSoundEffects.isChecked()) { mAudioManager.loadSoundEffects(); } else { mAudioManager.unloadSoundEffects(); } } else if (preference == mMusicFx) { // let the framework fire off the intent return false; } else if (preference == mDockAudioSettings) { int dockState = mDockIntent != null ? mDockIntent.getIntExtra(Intent.EXTRA_DOCK_STATE, 0) : Intent.EXTRA_DOCK_STATE_UNDOCKED; if (dockState == Intent.EXTRA_DOCK_STATE_UNDOCKED) { showDialog(DIALOG_NOT_DOCKED); } else { boolean isBluetooth = mDockIntent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE) != null; if (isBluetooth) { Intent i = new Intent(mDockIntent); i.setAction(DockEventReceiver.ACTION_DOCK_SHOW_UI); i.setClass(getActivity(), DockEventReceiver.class); getActivity().sendBroadcast(i); } else { PreferenceScreen ps = (PreferenceScreen) mDockAudioSettings; Bundle extras = ps.getExtras(); extras.putBoolean( "checked", Settings.Global.getInt( getContentResolver(), Settings.Global.DOCK_AUDIO_MEDIA_ENABLED, 0) == 1); super.onPreferenceTreeClick(ps, ps); } } } else if (preference == mDockSounds) { Settings.Global.putInt( getContentResolver(), Settings.Global.DOCK_SOUNDS_ENABLED, mDockSounds.isChecked() ? 1 : 0); } else if (preference == mDockAudioMediaEnabled) { Settings.Global.putInt( getContentResolver(), Settings.Global.DOCK_AUDIO_MEDIA_ENABLED, mDockAudioMediaEnabled.isChecked() ? 1 : 0); } else if (preference == mPowerSounds) { Settings.Global.putInt( getContentResolver(), Settings.Global.POWER_NOTIFICATIONS_ENABLED, mPowerSounds.isChecked() ? 1 : 0); } else if (preference == mPowerSoundsVibrate) { Settings.Global.putInt( getContentResolver(), Settings.Global.POWER_NOTIFICATIONS_VIBRATE, mPowerSoundsVibrate.isChecked() ? 1 : 0); } else if (preference == mPowerSoundsRingtone) { launchNotificationSoundPicker( REQUEST_CODE_POWER_NOTIFICATIONS_RINGTONE, Settings.Global.getString( getContentResolver(), Settings.Global.POWER_NOTIFICATIONS_RINGTONE)); } else { // If we didn't handle it, let preferences handle it. return super.onPreferenceTreeClick(preferenceScreen, preference); } return true; }