From d22619e995ecae79689081d4b60684c05d129ff2 Mon Sep 17 00:00:00 2001 From: Chaohui Wang Date: Thu, 8 Sep 2022 16:06:09 +0800 Subject: [PATCH 01/10] Migrate UsageStats to Spa The UsageStats page is for testing only, cannot entry through Settings Home, but is accessible by enter *#*#4636#*#* in dialer. Migrate UsageStats to Spa for both improving the UI & performance. Fix: 244675756 Bug: 235727273 Test: Manual with Settings App Change-Id: I6ec6e233075a3f79ac1231aecafabf2a71dac716 --- AndroidManifest.xml | 27 +- res/layout/usage_stats.xml | 45 ---- res/layout/usage_stats_item.xml | 50 ---- res/values/arrays.xml | 7 - res/values/strings.xml | 13 +- .../android/settings/UsageStatsActivity.java | 255 ------------------ src/com/android/settings/spa/SpaActivity.kt | 4 +- .../android/settings/spa/SpaBridgeActivity.kt | 49 ++++ .../android/settings/spa/SpaEnvironment.kt | 6 +- .../settings/spa/development/UsageStats.kt | 52 ++++ .../spa/development/UsageStatsListModel.kt | 101 +++++++ 11 files changed, 228 insertions(+), 381 deletions(-) delete mode 100755 res/layout/usage_stats.xml delete mode 100755 res/layout/usage_stats_item.xml delete mode 100755 src/com/android/settings/UsageStatsActivity.java create mode 100755 src/com/android/settings/spa/SpaBridgeActivity.kt create mode 100644 src/com/android/settings/spa/development/UsageStats.kt create mode 100644 src/com/android/settings/spa/development/UsageStatsListModel.kt diff --git a/AndroidManifest.xml b/AndroidManifest.xml index e14cba7f903..468d58702cf 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -2911,15 +2911,6 @@ - - - - - - - - - + + + + + + + + + + diff --git a/res/layout/usage_stats.xml b/res/layout/usage_stats.xml deleted file mode 100755 index 013bcdb07a5..00000000000 --- a/res/layout/usage_stats.xml +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - diff --git a/res/layout/usage_stats_item.xml b/res/layout/usage_stats_item.xml deleted file mode 100755 index 2879df072e5..00000000000 --- a/res/layout/usage_stats_item.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - diff --git a/res/values/arrays.xml b/res/values/arrays.xml index 3a660a19292..771ac1ca9ca 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -343,13 +343,6 @@ Excellent - - - Usage time - Last time used - App name - - MSCHAPV2 diff --git a/res/values/strings.xml b/res/values/strings.xml index c01e9b7bbda..bd3a5fbf86e 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -4821,15 +4821,14 @@ Always allow %1$s to create widgets and access their data - - Usage statistics - Usage statistics - - Sort by: - - App + + Sort by usage time + + Sort by last time used + + Sort by app name Last time used diff --git a/src/com/android/settings/UsageStatsActivity.java b/src/com/android/settings/UsageStatsActivity.java deleted file mode 100755 index d9803ddfb93..00000000000 --- a/src/com/android/settings/UsageStatsActivity.java +++ /dev/null @@ -1,255 +0,0 @@ -/** - * Copyright (C) 2007 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.settings; - -import android.app.Activity; -import android.app.usage.UsageStats; -import android.app.usage.UsageStatsManager; -import android.content.Context; -import android.content.pm.ApplicationInfo; -import android.content.pm.PackageManager; -import android.content.pm.PackageManager.NameNotFoundException; -import android.os.Bundle; -import android.text.format.DateUtils; -import android.util.ArrayMap; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.AdapterView; -import android.widget.AdapterView.OnItemSelectedListener; -import android.widget.BaseAdapter; -import android.widget.ListView; -import android.widget.Spinner; -import android.widget.TextView; - -import java.text.DateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; -import java.util.Map; - -/** - * Activity to display package usage statistics. - */ -public class UsageStatsActivity extends Activity implements OnItemSelectedListener { - private static final String TAG = "UsageStatsActivity"; - private static final boolean localLOGV = false; - private UsageStatsManager mUsageStatsManager; - private LayoutInflater mInflater; - private UsageStatsAdapter mAdapter; - private PackageManager mPm; - - public static class AppNameComparator implements Comparator { - private Map mAppLabelList; - - AppNameComparator(Map appList) { - mAppLabelList = appList; - } - - @Override - public final int compare(UsageStats a, UsageStats b) { - String alabel = mAppLabelList.get(a.getPackageName()); - String blabel = mAppLabelList.get(b.getPackageName()); - return alabel.compareTo(blabel); - } - } - - public static class LastTimeUsedComparator implements Comparator { - @Override - public final int compare(UsageStats a, UsageStats b) { - // return by descending order - return Long.compare(b.getLastTimeUsed(), a.getLastTimeUsed()); - } - } - - public static class UsageTimeComparator implements Comparator { - @Override - public final int compare(UsageStats a, UsageStats b) { - return Long.compare(b.getTotalTimeInForeground(), a.getTotalTimeInForeground()); - } - } - - // View Holder used when displaying views - static class AppViewHolder { - TextView pkgName; - TextView lastTimeUsed; - TextView usageTime; - } - - class UsageStatsAdapter extends BaseAdapter { - // Constants defining order for display order - private static final int _DISPLAY_ORDER_USAGE_TIME = 0; - private static final int _DISPLAY_ORDER_LAST_TIME_USED = 1; - private static final int _DISPLAY_ORDER_APP_NAME = 2; - - private int mDisplayOrder = _DISPLAY_ORDER_USAGE_TIME; - private LastTimeUsedComparator mLastTimeUsedComparator = new LastTimeUsedComparator(); - private UsageTimeComparator mUsageTimeComparator = new UsageTimeComparator(); - private AppNameComparator mAppLabelComparator; - private final ArrayMap mAppLabelMap = new ArrayMap<>(); - private final ArrayList mPackageStats = new ArrayList<>(); - - UsageStatsAdapter() { - Calendar cal = Calendar.getInstance(); - cal.add(Calendar.DAY_OF_YEAR, -5); - - final List stats = - mUsageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_BEST, - cal.getTimeInMillis(), System.currentTimeMillis()); - if (stats == null) { - return; - } - - ArrayMap map = new ArrayMap<>(); - final int statCount = stats.size(); - for (int i = 0; i < statCount; i++) { - final android.app.usage.UsageStats pkgStats = stats.get(i); - - // load application labels for each application - try { - ApplicationInfo appInfo = mPm.getApplicationInfo(pkgStats.getPackageName(), 0); - String label = appInfo.loadLabel(mPm).toString(); - mAppLabelMap.put(pkgStats.getPackageName(), label); - - UsageStats existingStats = - map.get(pkgStats.getPackageName()); - if (existingStats == null) { - map.put(pkgStats.getPackageName(), pkgStats); - } else { - existingStats.add(pkgStats); - } - - } catch (NameNotFoundException e) { - // This package may be gone. - } - } - mPackageStats.addAll(map.values()); - - // Sort list - mAppLabelComparator = new AppNameComparator(mAppLabelMap); - sortList(); - } - - @Override - public int getCount() { - return mPackageStats.size(); - } - - @Override - public Object getItem(int position) { - return mPackageStats.get(position); - } - - @Override - public long getItemId(int position) { - return position; - } - - @Override - public View getView(int position, View convertView, ViewGroup parent) { - // A ViewHolder keeps references to children views to avoid unneccessary calls - // to findViewById() on each row. - AppViewHolder holder; - - // When convertView is not null, we can reuse it directly, there is no need - // to reinflate it. We only inflate a new View when the convertView supplied - // by ListView is null. - if (convertView == null) { - convertView = mInflater.inflate(R.layout.usage_stats_item, null); - - // Creates a ViewHolder and store references to the two children views - // we want to bind data to. - holder = new AppViewHolder(); - holder.pkgName = (TextView) convertView.findViewById(R.id.package_name); - holder.lastTimeUsed = (TextView) convertView.findViewById(R.id.last_time_used); - holder.usageTime = (TextView) convertView.findViewById(R.id.usage_time); - convertView.setTag(holder); - } else { - // Get the ViewHolder back to get fast access to the TextView - // and the ImageView. - holder = (AppViewHolder) convertView.getTag(); - } - - // Bind the data efficiently with the holder - UsageStats pkgStats = mPackageStats.get(position); - if (pkgStats != null) { - String label = mAppLabelMap.get(pkgStats.getPackageName()); - holder.pkgName.setText(label); - holder.lastTimeUsed.setText(DateUtils.formatSameDayTime(pkgStats.getLastTimeUsed(), - System.currentTimeMillis(), DateFormat.MEDIUM, DateFormat.MEDIUM)); - holder.usageTime.setText( - DateUtils.formatElapsedTime(pkgStats.getTotalTimeInForeground() / 1000)); - } else { - Log.w(TAG, "No usage stats info for package:" + position); - } - return convertView; - } - - void sortList(int sortOrder) { - if (mDisplayOrder == sortOrder) { - // do nothing - return; - } - mDisplayOrder= sortOrder; - sortList(); - } - private void sortList() { - if (mDisplayOrder == _DISPLAY_ORDER_USAGE_TIME) { - if (localLOGV) Log.i(TAG, "Sorting by usage time"); - Collections.sort(mPackageStats, mUsageTimeComparator); - } else if (mDisplayOrder == _DISPLAY_ORDER_LAST_TIME_USED) { - if (localLOGV) Log.i(TAG, "Sorting by last time used"); - Collections.sort(mPackageStats, mLastTimeUsedComparator); - } else if (mDisplayOrder == _DISPLAY_ORDER_APP_NAME) { - if (localLOGV) Log.i(TAG, "Sorting by application name"); - Collections.sort(mPackageStats, mAppLabelComparator); - } - notifyDataSetChanged(); - } - } - - /** Called when the activity is first created. */ - @Override - protected void onCreate(Bundle icicle) { - super.onCreate(icicle); - setContentView(R.layout.usage_stats); - - mUsageStatsManager = (UsageStatsManager) getSystemService(Context.USAGE_STATS_SERVICE); - mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); - mPm = getPackageManager(); - - Spinner typeSpinner = (Spinner) findViewById(R.id.typeSpinner); - typeSpinner.setOnItemSelectedListener(this); - - ListView listView = (ListView) findViewById(R.id.pkg_list); - mAdapter = new UsageStatsAdapter(); - listView.setAdapter(mAdapter); - } - - @Override - public void onItemSelected(AdapterView parent, View view, int position, long id) { - mAdapter.sortList(position); - } - - @Override - public void onNothingSelected(AdapterView parent) { - // do nothing - } -} diff --git a/src/com/android/settings/spa/SpaActivity.kt b/src/com/android/settings/spa/SpaActivity.kt index fab0e081f65..f161c441fd6 100644 --- a/src/com/android/settings/spa/SpaActivity.kt +++ b/src/com/android/settings/spa/SpaActivity.kt @@ -23,9 +23,9 @@ import com.android.settingslib.spa.framework.BrowseActivity class SpaActivity : BrowseActivity(SpaEnvironment.settingsPageProviders) { companion object { @JvmStatic - fun startSpaActivity(context: Context, startDestination: String) { + fun startSpaActivity(context: Context, destination: String) { val intent = Intent(context, SpaActivity::class.java).apply { - putExtra(KEY_DESTINATION, startDestination) + putExtra(KEY_DESTINATION, destination) } context.startActivity(intent) } diff --git a/src/com/android/settings/spa/SpaBridgeActivity.kt b/src/com/android/settings/spa/SpaBridgeActivity.kt new file mode 100755 index 00000000000..9e433e449ca --- /dev/null +++ b/src/com/android/settings/spa/SpaBridgeActivity.kt @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2022 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.settings.spa + +import android.app.Activity +import android.content.pm.PackageManager +import android.content.pm.PackageManager.ComponentInfoFlags +import android.os.Bundle +import com.android.settings.spa.SpaActivity.Companion.startSpaActivity + +/** + * Activity used as a bridge to [SpaActivity]. + * + * Since [SpaActivity] is not exported, [SpaActivity] could not be the target activity of + * , otherwise all its pages will be exported. + * So need this bridge activity to sit in the middle of and [SpaActivity]. + */ +class SpaBridgeActivity : Activity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + getDestination()?.let { destination -> + startSpaActivity(this, destination) + } + finish() + } + + private fun getDestination(): String? = + packageManager.getActivityInfo( + componentName, ComponentInfoFlags.of(PackageManager.GET_META_DATA.toLong()) + ).metaData.getString(META_DATA_KEY_DESTINATION) + + companion object { + private const val META_DATA_KEY_DESTINATION = "com.android.settings.spa.DESTINATION" + } +} diff --git a/src/com/android/settings/spa/SpaEnvironment.kt b/src/com/android/settings/spa/SpaEnvironment.kt index 489c8a8a926..7086795bfb7 100644 --- a/src/com/android/settings/spa/SpaEnvironment.kt +++ b/src/com/android/settings/spa/SpaEnvironment.kt @@ -20,11 +20,12 @@ import com.android.settings.spa.app.AppsMainPageProvider import com.android.settings.spa.app.specialaccess.InstallUnknownAppsListProvider import com.android.settings.spa.app.specialaccess.PictureInPictureListProvider import com.android.settings.spa.app.specialaccess.SpecialAppAccessPageProvider +import com.android.settings.spa.development.UsageStatsPageProvider import com.android.settings.spa.home.HomePageProvider -import com.android.settingslib.spa.framework.common.SettingsEntryRepository -import com.android.settingslib.spa.framework.common.SettingsPage import com.android.settings.spa.notification.AppListNotificationsPageProvider import com.android.settings.spa.notification.NotificationMainPageProvider +import com.android.settingslib.spa.framework.common.SettingsEntryRepository +import com.android.settingslib.spa.framework.common.SettingsPage import com.android.settingslib.spa.framework.common.SettingsPageProviderRepository import com.android.settingslib.spaprivileged.template.app.TogglePermissionAppListTemplate @@ -44,6 +45,7 @@ object SpaEnvironment { SpecialAppAccessPageProvider, NotificationMainPageProvider, AppListNotificationsPageProvider, + UsageStatsPageProvider, ) + togglePermissionAppListTemplate.createPageProviders(), rootPages = listOf( SettingsPage(HomePageProvider.name), diff --git a/src/com/android/settings/spa/development/UsageStats.kt b/src/com/android/settings/spa/development/UsageStats.kt new file mode 100644 index 00000000000..302f2010b31 --- /dev/null +++ b/src/com/android/settings/spa/development/UsageStats.kt @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2022 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.settings.spa.development + +import android.os.Bundle +import androidx.compose.runtime.Composable +import androidx.compose.ui.res.stringResource +import com.android.settings.R +import com.android.settingslib.spa.framework.common.SettingsPageProvider +import com.android.settingslib.spa.framework.compose.navigator +import com.android.settingslib.spa.framework.compose.rememberContext +import com.android.settingslib.spa.widget.preference.Preference +import com.android.settingslib.spa.widget.preference.PreferenceModel +import com.android.settingslib.spaprivileged.template.app.AppListItem +import com.android.settingslib.spaprivileged.template.app.AppListPage + +object UsageStatsPageProvider : SettingsPageProvider { + override val name = "UsageStats" + + @Composable + override fun Page(arguments: Bundle?) { + AppListPage( + title = stringResource(R.string.testing_usage_stats), + listModel = rememberContext(::UsageStatsListModel), + primaryUserOnly = true, + ) { itemModel -> + AppListItem(itemModel) {} + } + } + + @Composable + fun EntryItem() { + Preference(object : PreferenceModel { + override val title = stringResource(R.string.testing_usage_stats) + override val onClick = navigator(name) + }) + } +} diff --git a/src/com/android/settings/spa/development/UsageStatsListModel.kt b/src/com/android/settings/spa/development/UsageStatsListModel.kt new file mode 100644 index 00000000000..caa30cc2535 --- /dev/null +++ b/src/com/android/settings/spa/development/UsageStatsListModel.kt @@ -0,0 +1,101 @@ +/* + * Copyright (C) 2022 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.settings.spa.development + +import android.app.usage.UsageStats +import android.app.usage.UsageStatsManager +import android.content.Context +import android.content.pm.ApplicationInfo +import android.text.format.DateUtils +import androidx.compose.runtime.Composable +import androidx.compose.runtime.State +import com.android.settings.R +import com.android.settings.spa.development.UsageStatsListModel.SpinnerItem.Companion.toSpinnerItem +import com.android.settingslib.spa.framework.compose.stateOf +import com.android.settingslib.spaprivileged.model.app.AppEntry +import com.android.settingslib.spaprivileged.model.app.AppListModel +import com.android.settingslib.spaprivileged.model.app.AppRecord +import java.text.DateFormat +import java.util.concurrent.TimeUnit +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.map + +data class UsageStatsAppRecord( + override val app: ApplicationInfo, + val usageStats: UsageStats?, +) : AppRecord + +class UsageStatsListModel(private val context: Context) : AppListModel { + private val usageStatsManager = + context.getSystemService(Context.USAGE_STATS_SERVICE) as UsageStatsManager + private val now = System.currentTimeMillis() + + override fun transform( + userIdFlow: Flow, + appListFlow: Flow>, + ) = userIdFlow.map { getUsageStats() } + .combine(appListFlow) { usageStatsMap, appList -> + appList.map { app -> UsageStatsAppRecord(app, usageStatsMap[app.packageName]) } + } + + override fun getSpinnerOptions() = SpinnerItem.values().map { + context.getString(it.stringResId) + } + + override fun filter( + userIdFlow: Flow, + option: Int, + recordListFlow: Flow>, + ) = recordListFlow.map { recordList -> + recordList.filter { it.usageStats != null } + } + + override fun getComparator(option: Int) = when (option.toSpinnerItem()) { + SpinnerItem.UsageTime -> compareByDescending { it.record.usageStats?.totalTimeInForeground } + SpinnerItem.LastTimeUsed -> compareByDescending { it.record.usageStats?.lastTimeUsed } + else -> compareBy> { 0 } + }.then(super.getComparator(option)) + + @Composable + override fun getSummary(option: Int, record: UsageStatsAppRecord): State? { + val usageStats = record.usageStats ?: return null + val lastTimeUsed = DateUtils.formatSameDayTime( + usageStats.lastTimeUsed, now, DateFormat.MEDIUM, DateFormat.MEDIUM) + val lastTimeUsedLine = "${context.getString(R.string.last_time_used_label)}: $lastTimeUsed" + val usageTime = DateUtils.formatElapsedTime(usageStats.totalTimeInForeground / 1000) + val usageTimeLine = "${context.getString(R.string.usage_time_label)}: $usageTime" + return stateOf("$lastTimeUsedLine\n$usageTimeLine") + } + + private fun getUsageStats(): Map { + val startTime = now - TimeUnit.DAYS.toMillis(5) + + return usageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_BEST, startTime, now) + .groupingBy { it.packageName }.reduce { _, a, b -> a.add(b); a } + } + + private enum class SpinnerItem(val stringResId: Int) { + UsageTime(R.string.usage_stats_sort_by_usage_time), + LastTimeUsed(R.string.usage_stats_sort_by_last_time_used), + AppName(R.string.usage_stats_sort_by_app_name); + + companion object { + fun Int.toSpinnerItem(): SpinnerItem = values()[this] + } + } +} From f3457e4080fbbfff5c82036dc3c76f92290545e2 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Sun, 11 Sep 2022 16:23:01 -0700 Subject: [PATCH 02/10] Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: Iee13f8fc3f15a25a78f77111b5098b3a01d5ab8f --- res/values-am/arrays.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/values-am/arrays.xml b/res/values-am/arrays.xml index de92092a27d..b5ff80d929e 100644 --- a/res/values-am/arrays.xml +++ b/res/values-am/arrays.xml @@ -119,7 +119,7 @@ "የተጋበዘ" "ስኬታማ አልነበረም" "የሚገኝ" - "ከክልል ውጪ" + "ከክልል ውጭ" "2 ደቂቃዎች" From a4f092c748e6ce95e7595440796cd7861f14719e Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Sun, 11 Sep 2022 16:28:01 -0700 Subject: [PATCH 03/10] Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: Ie871e5bb344fce432b8741e50b34954cf5fc6ec9 --- res/values-am/strings.xml | 6 +++--- res/values-ar/strings.xml | 2 +- res/values-as/strings.xml | 4 ++-- res/values-be/strings.xml | 10 +++++----- res/values-fr/strings.xml | 3 ++- res/values-gl/strings.xml | 2 +- res/values-hi/strings.xml | 16 ++++++++-------- res/values-ja/strings.xml | 2 +- res/values-kk/strings.xml | 2 +- res/values-mk/strings.xml | 2 +- res/values-my/strings.xml | 4 ++-- res/values-or/strings.xml | 4 ++-- res/values-pl/strings.xml | 4 ++-- res/values-pt-rPT/strings.xml | 4 ++-- res/values-te/strings.xml | 2 +- 15 files changed, 34 insertions(+), 33 deletions(-) diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml index e58cfcc5c8d..13f8b8affc4 100644 --- a/res/values-am/strings.xml +++ b/res/values-am/strings.xml @@ -33,7 +33,7 @@ "የገመድ አልባና አውታረ መረቦች" "ስርዓት" "በአገልግሎት ውስጥ" - "ከአገልግሎት ውጪ" + "ከአገልግሎት ውጭ" "የአደጋ ጊዜ ጥሪዎች ብቻ" "ሬዲዮ ጠፍቷል" "በመንቀሳቀስ ላይ" @@ -2130,7 +2130,7 @@ "በውጪ ማህደረ መረጃ ላይ የስርዓት ማዘመኛዎች መጫን አትችልም።" "የመሣሪያ አስተዳዳሪ መተግበሪያ በውጫዊ ማህደረመረጃ ላይ መጫን አይቻልም" "በኃይል አቁም?" - "መተግበሪያን በጉልበት እንዲቆም ካደረግከው ከአደብ ውጪ ሊሆን ይችላል::" + "መተግበሪያን በጉልበት እንዲቆም ካደረግከው ከአደብ ውጭ ሊሆን ይችላል::" "የሚመረጥ ጭነት ሥፍራ" "ለአዲስ መተግበሪያዎች ተመራጭ መጫኛ ሥፍራዎችን ለውጥ።" "መተግበሪያን አሰናክል" @@ -2324,7 +2324,7 @@ "በሙሉ እና በከፊል ማያ ገጽ መካከል ይቀያይሩ" "በሁለቱም አማራጮች መካከል ለማንቀሳቀስ የመቀየሪያ አዝራርን መታ ያድርጉ" "ወደ የተደራሽነት አዝራር ይቀየር?" - "የማያ ገጽዎን ክፍል ለማጉላት ሶስት ጊዜ መታ ማድረግን መጠቀም መተየብ እና ሌሎች መዘግየቶችን ያስከትላል።\n\nየተደራሽነት አዝራር በሌሎች መተግበሪያዎች ላይ በማያ ገጽዎ ላይ ይንሳፈፋል። ለማጉላት መታ ያድርጉት።" + "የማያ ገጽዎን ክፍል ለማጉላት ሦስት ጊዜ መታ ማድረግን መጠቀም መተየብ እና ሌሎች መዘግየቶችን ያስከትላል።\n\nየተደራሽነት አዝራር በሌሎች መተግበሪያዎች ላይ በማያ ገጽዎ ላይ ይንሳፈፋል። ለማጉላት መታ ያድርጉት።" "ወደ የተደራሽነት አዝራር ይቀይሩ" "ሦስቴ መታ ማድረግን ይጠቀሙ" "ይህ የቁልፍ ሰሌዳዎን ሊያንቀራፍፍ ይችላል" diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index 6ff38a72957..486665cca7f 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -1769,7 +1769,7 @@ "لنقل الملفات والوسائط بين الأجهزة" "وحدة تخزين محمولة" "الإعداد لاحقًا" - "هل تريد تنسيق ^1؟" + "هل تريد تهيئة ^1؟" "يجب تنسيق ^1 لتخزين التطبيقات والملفات والوسائط. \n\nسيؤدي التنسيق إلى محو المحتوى الحالي على ^2. ولتجنّب فقد المحتوى، يمكنك نسخه احتياطيًا إلى ^3 أو جهاز آخر." "تنسيق ^1" "هل تريد نقل المحتوى إلى ^1؟" diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml index aad5ba1b22c..6a9bc8353cd 100644 --- a/res/values-as/strings.xml +++ b/res/values-as/strings.xml @@ -192,7 +192,7 @@ "হ\'ষ্টনাম (www.google.com) IPv6 পিং কৰক:" "HTTP ক্লায়েণ্ট পৰীক্ষা:" "পিং টেষ্ট চলাওক" - "USB কেৱ\'ল পুনঃসংযোগ কৰাৰ পিছত পৰিবৰ্তনসমূহ স্থায়ী হ\'ব।" + "USB কে’বল পুনঃসংযোগ কৰাৰ পাছত পৰিৱৰ্তনসমূহ স্থায়ী হ’ব।" "বিশাল ষ্ট’ৰেজ ইউএছবি সক্ষম কৰক" "সৰ্বমুঠ বাইট:" "ইউএছবি ষ্ট’ৰেজ সংলগ্ন কৰা হোৱা নাই।" @@ -1636,7 +1636,7 @@ "ষ্ট’ৰেজৰ নতুন নাম দিয়ক" "এই ^1ক সুৰক্ষিতভাৱে গুচোৱা হৈছিল, কিন্তু ই এতিয়াও উপলব্ধ। \n\nতাক ^1 ব্যৱহাৰ কৰিবলৈ, আপুনি প্ৰথমে তাক সংলগ্ন কৰিব লাগিব।" "^1 ব্যৱহাৰযোগ্য হৈ থকা নাই। \n\nইয়াক ^1 ব্যৱহাৰ কৰিবলৈ আপুনি প্ৰথমে তাক ছেট আপ কৰিব লাগিব।" - "ফৰ্মেট কৰাৰ পাছত আপুনি ^1ক অইন ডিভাইচত ব্যৱহাৰ কৰিব পাৰিব। \n\n^1ত থকা আটাইখিনি ডেটা মচা হ’ব। গতিকে, প্ৰথমে বেকআপ লোৱাৰ কথা বিবেচনা কৰক। \n\n""ফট’ আৰু অইন মিডিয়াৰ বেকআপ লওক"" \nএই ডিভাইচত থকা অইন এটা ষ্ট’ৰেজলৈ বা এডাল ইউএছবি কেবলৰ যোগেৰে এটা কম্পিউটাৰলৈ আপোনাৰ মিডিয়া স্থানান্তৰ কৰক। \n\n""এপ্বোৰৰ বেকআপ লওক"" \nএই ^1ত ষ্ট’ৰ হৈ থকা আটাইবোৰ এপ্ আনইনষ্টল কৰা হ’ব আৰু সেইবিলাকৰ ডেটাসমূহ মচা হ’ব। এই এপ্বোৰ ৰাখিবলৈ এই ডিভাইত থকা বিকল্প ষ্ট’ৰেজলৈ স্থানান্তৰ কৰক।" + "ফৰ্মেট কৰাৰ পাছত আপুনি ^1ক অইন ডিভাইচত ব্যৱহাৰ কৰিব পাৰিব। \n\n^1ত থকা আটাইখিনি ডেটা মচা হ’ব। গতিকে, প্ৰথমে বেকআপ লোৱাৰ কথা বিবেচনা কৰক। \n\n""ফট’ আৰু অইন মিডিয়াৰ বেকআপ লওক"" \nএই ডিভাইচত থকা অইন এটা ষ্ট’ৰেজলৈ বা এডাল ইউএছবি কে’বলৰ যোগেৰে এটা কম্পিউটাৰলৈ আপোনাৰ মিডিয়া স্থানান্তৰ কৰক। \n\n""এপ্বোৰৰ বেকআপ লওক"" \nএই ^1ত ষ্ট’ৰ হৈ থকা আটাইবোৰ এপ্ আনইনষ্টল কৰা হ’ব আৰু সেইবিলাকৰ ডেটাসমূহ মচা হ’ব। এই এপ্বোৰ ৰাখিবলৈ এই ডিভাইত থকা বিকল্প ষ্ট’ৰেজলৈ স্থানান্তৰ কৰক।" "আপুনি যেতিয়া ^1ক বাহিৰলৈ উলিয়াএ, ইয়াৰ ভিতৰত থকা এপবোৰে কাম কৰা বন্ধ কৰিব আৰু ইয়াক আকৌ নভৰোৱালৈকে ইয়াত থকা মিডিয়া ফাইলবোৰ উপলব্ধ নহ’ব।"" \n\nএই ^1ক এইটো ডিভাইচত মাত্ৰ কাম কৰিব পৰাকৈ আৰ্হিত লগোৱা হৈছে। ই আৰু কোনো ডিভাইচতে কাম নকৰিব।" "^1ত থকা এপ্‌সমূহ, ফট’ বা ডেটা ব্যৱহাৰ কৰিবলৈ ইয়াক পুনৰ ডিভাইচত ভৰাওক। \n\nইয়াৰ উপৰিও, যদি ডিভাইচটো উপলব্ধ নহয়, তেতিয়া আপুনি এই ষ্ট’ৰেজ ইচ্ছা কৰিলে পাহৰি যাব পাৰিব। \n\nযদি আপুনি পাহৰি যাবলৈ বিচাৰে, তেতিয়া ডিভাইচত থকা আটাইখিনি ডেটা হেৰুৱাব। \n\nআপুনি এপ্‌সমূহ পাছত আকৌ ইনষ্টল কৰিব পাৰে, কিন্তু এই ডিভাইচত জমা হৈ থকা সেই এপ্‌সমূহৰ কোনো ডেটা পুনৰ ঘূৰাই নাপাব।" "^1ক পাহৰিব বিচাৰেনে?" diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml index bf23aae358a..5693b9d094a 100644 --- a/res/values-be/strings.xml +++ b/res/values-be/strings.xml @@ -223,7 +223,7 @@ "Мова праграмы" "Прапанаваныя мовы" "Усе мовы" - "Сістэмная мова" + "Мова сістэмы" "Стандартная сістэмная налада" "Выбар мовы для гэтай праграмы недаступны ў Наладах." "Мова можа адрознівацца ад моў, даступных у праграме. Некаторыя праграмы могуць не падтрымліваць гэту наладу." @@ -5415,7 +5415,7 @@ "Нічога не рабіць" "Вібрацыя" "Выключыць гук" - "Каб уключыць, спачатку змяніце ў меню кнопкі сілкавання параметр \"Націск і ўтрыманне кнопкі сілкавання\"." + "Каб уключыць, спачатку змяніце ў меню кнопкі сілкавання параметр \"Доўгае націсканне кнопкі сілкавання\"." "Інфармацыя аб сетцы" "Назва вашай прылады даступная для праграм на вашым тэлефоне. Яе таксама будуць бачыць іншыя людзі, калі вы падключыцеся да прылад праз Bluetooth, падключыцеся да сеткі Wi-Fi ці наладзіце хот-спот Wi-Fi." "Прылады" @@ -5708,7 +5708,7 @@ "элементы кіравання прыладай" "Карткі і талоны" "карткі і талоны" - "Націск і ўтрыманне кнопкі сілкавання" + "Доўгае націсканне кнопкі сілкавання" "Націск і ўтрыманне для выкліку Памочніка" "Націск і ўтрыманне для выкліку меню кнопкі сілкавання" "Націск і ўтрыманне выключаны" @@ -5717,8 +5717,8 @@ "Для выкліку Памочніка ўтрымлівайце націснутай кнопку сілкавання" "Меню кнопкі сілкавання і экстранных выклікаў:\nадначасова націсніце кнопку сілкавання і павелічэння гучнасці." "Прадухіліць званок:\nярлык даступны ў меню гучнасці." - "Працягласць націску і ўтрымання" - "Наладзіць адчувальнасць, выбраўшы працягласць націску і ўтрымання кнопкі сілкавання" + "Працягласць націскання" + "Наладзіць адчувальнасць, выбраўшы працягласць націскання кнопкі сілкавання" "Коратка" "Доўга" "Паказ кашалька" diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index c0f682d6f4c..717b1ee8095 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -1315,7 +1315,8 @@ "En savoir plus sur la rotation automatique" "Quand vous basculez votre téléphone en mode portrait ou paysage" "Résolution d\'écran" - "Haute résolution" + + "Résolution maximale" "FHD+ 1080p" "QHD+ 1440p" diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml index 183215d86f7..3ef9c3e7b4c 100644 --- a/res/values-gl/strings.xml +++ b/res/values-gl/strings.xml @@ -448,7 +448,7 @@ "Configurar a impresión dixital só leva un ou dous minutos, pero tamén podes facelo máis tarde en Configuración." "Cando vexas esta icona (ao iniciar sesión en apps, aprobar compras…), usa a túa impresión dixital para autenticarte" "Importante" - "Desbloquear o teléfono mediante impresión dixital pode ser menos seguro que facelo usando un padrón seguro ou un PIN" + "O desbloqueo do teléfono mediante impresión dixital pode ser menos fiable que o uso dun padrón ou PIN seguro" "Como funciona?" "Co desbloqueo dactilar, créase un modelo único da túa impresión dixital para verificar a túa identidade. Se queres crear este modelo durante a configuración, debes xerar imaxes da impresión dixital desde distintas posicións." "Co desbloqueo dactilar, créase un modelo único da impresión dixital do teu fillo ou filla para verificar a súa identidade. Para crear este modelo durante a configuración, a túa filla ou fillo deberá facer fotos da impresión dixital en distintas posicións." diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml index 573bb63f746..71827633cbf 100644 --- a/res/values-hi/strings.xml +++ b/res/values-hi/strings.xml @@ -2690,10 +2690,10 @@ "ऐप की बैकग्राउंड गतिविधि को सीमित करें?" "अगर आप ऐप की बैकग्राउंड गतिविधि को सीमित करते हैं, तो हो सकता है यह ठीक ढंग से काम न करे" "ऐप्लिकेशन पर रोक नहीं लगेगी क्योंकि यह बैटरी ऑप्टिमाइज़ नहीं कर सकता.\n\nबैटरी ऑप्टिमाइज़ेशन चालू करके ही ऐसा हो सकता है." - "पाबंदी के बिना" + "कोई पाबंदी नहीं" "ऑप्टिमाइज़ की गई सेटिंग" "पाबंदी लगी है" - "बैकग्राउंड में पाबंदियों के बिना बैटरी खर्च की अनुमति दें. बैटरी का ज़्यादा इस्तेमाल किया जा सकता है." + "बैकग्राउंड में, पाबंदियों के बिना बैटरी खर्च की अनुमति दें. इससे बैटरी ज़्यादा खर्च हो सकती है." "बैटरी की सेटिंग को अपने इस्तेमाल के हिसाब से ऑप्टिमाइज़ करें. ज़्यादातर ऐप्लिकेशन के लिए इसका इस्तेमाल करने का सुझाव दिया जाता है." "बैकग्राउंड में बैटरी खर्च को सीमित करें. हो सकता है कि ऐप्लिकेशन ठीक से काम न करे. सूचनाएं मिलने में देरी हो सकती है." "किसी ऐप्लिकेशन के लिए बैटरी इस्तेमाल करने का तरीका बदलने पर, ऐप की परफ़ॉर्मेंस पर असर पड़ सकता है." @@ -2836,7 +2836,7 @@ "मोबाइल नेटवर्क" "ध्‍वनि कॉल" "टैबलेट इस्तेमाल नहीं किया जा रहा" - "फ़ोन इस्तेमाल नहीं किया जा रहा" + "जब फ़ोन इस्तेमाल नहीं किया गया" "मिली-जुली सेटिंग" "अत्यधिक" "सीपीयू (CPU) का कुल इस्तेमाल" @@ -2897,7 +2897,7 @@ "पूरी तरह चार्ज होने के बाद से अब तक का विश्लेषण" "पिछली बार पूरी तरह चार्ज किया गया" "बैटरी पूरी चार्ज होने पर करीब इतनी देर चलती है" - "बैटरी खर्च से जुड़ा डेटा अनुमानित होता है. यह इस्तेमाल करने के तरीके के मुताबिक बदल सकता है." + "बैटरी खर्च से जुड़ा डेटा अनुमानित होता है. यह इस्तेमाल के आधार पर बदल सकता है." "जब इस्तेमाल में हो" "बैकग्राउंड में होने पर" "बैटरी खर्च" @@ -2960,8 +2960,8 @@ "बैटरी का प्रतिशत" "स्टेटस बार में दिखाएं कि कितने प्रतिशत बैटरी बची है" "पिछले 24 घंटों में बैटरी लेवल की जानकारी" - "पिछले 24 घंटों में, ऐप्लिकेशन में बैटरी के इस्तेमाल की जानकारी" - "पिछले 24 घंटों में सिस्टम के इस्तेमाल की जानकारी" + "पिछले 24 घंटों में, ऐप्लिकेशन ने कितनी बैटरी इस्तेमाल की" + "पिछले 24 घंटों में, सिस्टम ने कितनी बैटरी इस्तेमाल की" "%s के बीच सिस्टम के इस्तेमाल की जानकारी" "%s के बीच ऐप्लिकेशन के इस्तेमाल की जानकारी" "इस्तेमाल का कुल समय: एक मिनट से कम" @@ -4612,7 +4612,7 @@ "%2$d में से %1$d ऐप को दूसरे ऐप के ऊपर दिखाने की अनुमति है" "अनुमति वाले ऐप्‍स" "अनुमति है" - "अनुमति नहीं है" + "इन ऐप्लिकेशन के पास अनुमति नहींं है" "अनजान स्रोतों से आने वाले ऐप्लिकेशन इंस्टॉल करें" "सिस्‍टम सेटिंग बदलें" "सिस्‍टम सेटिंग में बदलाव करें लिखें" @@ -5537,7 +5537,7 @@ "पावर मेन्यू खोलने के लिए, पावर बटन को दबाकर रखें" "Assistant को शुरू करने के लिए, पावर बटन को दबाकर रखने की सुविधा बंद है" "इस्तेमाल करने के लिए, सबसे पहले स्क्रीन लॉक सेट करें" - "Assistant को चालू करने के लिए, पावर बटन को कुछ देर दबाकर रखें" + "Assistant की सुविधा चालू करने के लिए, पावर बटन दबाकर रखें" "पावर बटन को कुछ देर तक दबाकर, Assistant का इस्तेमाल करें" "पावर और आपातकालीन मेन्यू:\nपावर बटन और आवाज़ तेज़ करने वाले बटन को एक साथ दबाएं." "घंटी बजने से रोकना:\nइसका शॉर्टकट, वॉल्यूम मेन्यू में मौजूद है." diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index 8119971659f..7def075ae7d 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -5542,7 +5542,7 @@ "電源ボタンと緊急通報のメニュー:\n電源ボタンと音量大ボタンを同時に押してください。" "着信音のミュート:\n音量メニューでショートカットを利用できます。" "長押しの長さ" - "長さを選択して感度を調整し、電源ボタンを長押しします。" + "電源ボタンを長押しする長さを選んで、感度を調節します" "短い" "長い" "ウォレットを表示" diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml index 204839f6645..45ef83798c9 100644 --- a/res/values-kk/strings.xml +++ b/res/values-kk/strings.xml @@ -3178,7 +3178,7 @@ "%1$s, барлығы %2$s" "Барлығын таңдау" "Дерек шығыны" - "Мобильдік дерек пен Wi‑Fi" + "Мобильдік интернет пен Wi‑Fi" "Оператордың деректер есебі құрылғыңыздан басқаша болуы мүмкін." "Қолданбаны пайдалану" "ҚОЛДАНБА ТУРАЛЫ АҚПАРАТ" diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml index d57963bdc32..4b4249d3ba1 100644 --- a/res/values-mk/strings.xml +++ b/res/values-mk/strings.xml @@ -221,7 +221,7 @@ "Јазик на апликациjата" "Предложени јазици" "Сите јазици" - "Јазик на системот" + "Системски јазик" "Стандардно за системот" "Не може да се бира јазик за апликацијава од „Поставките“." "Јазикот може да се разликува од јазиците достапни во апликацијата. Некои апликации може да не ја поддржуваат оваа поставка." diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml index 893d2c4bf6f..df6bd9b5e61 100644 --- a/res/values-my/strings.xml +++ b/res/values-my/strings.xml @@ -2064,7 +2064,7 @@ "အသုံးပြုသူ၏ ဒေတာ" "USBသိုလှောင်မှု ဒေတာ" "SD ကတ်" - "ဖယ်ရှားရန်" + "ဖြုတ်ရန်" "သုံးစွဲသူအားလုံးအတွက် ဖြုတ်ရန်" "ထည့်သွင်းရန်" "ပိတ်ထားရန်" @@ -3337,7 +3337,7 @@ "အသုံးပြုသူ" "ပိတ်ထားရန်" "ရနိုင်သည်" - "ဖယ်ရှားရန်" + "ဖြုတ်ရန်" "ယုံကြည်ပါ" "စနစ်၏CA လက်မှတ်အား ဖွင့်ထားမလား?" "စနစ်၏CA လက်မှတ်အား ပိတ်ထားမည်" diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml index e8b0be1fc7d..74478d41980 100644 --- a/res/values-or/strings.xml +++ b/res/values-or/strings.xml @@ -2064,7 +2064,7 @@ "ଉପଯୋଗକର୍ତ୍ତା ଡାଟା" "USB ଷ୍ଟୋରେଜ୍‌ ଡାଟା" "SD କାର୍ଡ" - "ଅନଇନଷ୍ଟଲ" + "ଅନଇନଷ୍ଟଲ କରନ୍ତୁ" "ସମସ୍ତ ଉପଯୋଗକର୍ତ୍ତାଙ୍କ ପାଇଁ ଅଣସଂସ୍ଥାପନ କରନ୍ତୁ" "ଇନ୍‌ଷ୍ଟଲ୍‌ କରନ୍ତୁ" "ଅକ୍ଷମ କରନ୍ତୁ" @@ -3335,7 +3335,7 @@ "ଗୋଟିଏ ସର୍ଟିଫିକେଟ୍‌ ନାହିଁ। ପ୍ରୋଫାଇଲ୍‌ ଏଡିଟ୍‌ କରନ୍ତୁ।" "ସିଷ୍ଟମ୍‌" "ଉପଯୋଗକର୍ତ୍ତା" - "ଅକ୍ଷମ" + "ଅକ୍ଷମ କରନ୍ତୁ" "ସକ୍ଷମ" "ଅନଇନଷ୍ଟଲ କରନ୍ତୁ" "ବିଶ୍ୱାସ କରନ୍ତୁ" diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index 1d8085cb570..a47bc9037a2 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -5715,8 +5715,8 @@ "Przytrzymaj przycisk zasilania, aby uaktywnić Asystenta" "Menu zasilania i alarmowe:\nNaciśnij jednocześnie przyciski zasilania i zwiększania głośności." "Zapobiegaj włączeniu się dzwonka:\nSkrót dostępny w menu głośności." - "Czas naciskania i przytrzymywania przycisku głośności" - "Dostosuj czułość, określając, jak długo ma być naciskany i przytrzymywany przycisk głośności" + "Długość naciśnięcia i przytrzymania" + "Dostosuj czułość, określając, jak długo ma być naciskany i przytrzymywany przycisk zasilania" "Krótko" "Długo" "Pokazuj portfel" diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index bba40061d94..d88f1866a2a 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -677,7 +677,7 @@ "Desativada pelo gestor, política de encriptação ou armazenamento de credenciais" "Nenhum" "Deslizar rapidamente" - "Sequência" + "Padrão" "PIN" "Palavra-passe" "Assim que configurar um bloqueio de ecrã, também pode configurar a sua impressão digital em Definições > Segurança." @@ -1685,7 +1685,7 @@ "Para transferir ficheiros e multimédia entre dispositivos" "Armazenamento portátil" "Config. depois" - "Pretende formatar este ^1?" + "Quer formatar este ^1?" "Este ^1 tem de ser formatado para armazenar aplicações, ficheiros e conteúdos multimédia. \n\nA formatação apaga o conteúdo existente no ^2. Para evitar a perda de conteúdos, faça uma cópia de segurança para outro ^3 ou dispositivo." "Formatar ^1" "Mover o conteúdo para o ^1?" diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml index 316d2c9509f..666467dc0f4 100644 --- a/res/values-te/strings.xml +++ b/res/values-te/strings.xml @@ -244,7 +244,7 @@ "USB నిల్వ" "SD కార్డు" "ప్రాక్సీ సెట్టింగ్‌లు" - "రద్దు చేయండి" + "రద్దు" "సరే" "విస్మరించు" "సేవ్ చేయండి" From eaa0ca22e7241c263aaec2daf2d4e27db0460666 Mon Sep 17 00:00:00 2001 From: Zekan Qian Date: Tue, 13 Sep 2022 17:53:53 +0800 Subject: [PATCH 04/10] Add debug page in Settings Bug: 244122804 Test: manually build SettingsGoogle Change-Id: I4853e17028dfe0eed4342b4691962b508bc87357 --- AndroidManifest.xml | 5 +++++ .../android/settings/spa/SpaDebugActivity.kt | 22 +++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 src/com/android/settings/spa/SpaDebugActivity.kt diff --git a/AndroidManifest.xml b/AndroidManifest.xml index e14cba7f903..2fe830372e2 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -4589,6 +4589,11 @@ android:exported="false"> + + + diff --git a/src/com/android/settings/spa/SpaDebugActivity.kt b/src/com/android/settings/spa/SpaDebugActivity.kt new file mode 100644 index 00000000000..40fe1d5822b --- /dev/null +++ b/src/com/android/settings/spa/SpaDebugActivity.kt @@ -0,0 +1,22 @@ +/* + * Copyright (C) 2022 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.settings.spa + +import com.android.settingslib.spa.framework.DebugActivity + +class SpaDebugActivity : + DebugActivity(SpaEnvironment.settingsEntryRepository, SpaActivity::class.java) From 9a325cee1f099475d4833204a807f451bd6a62cc Mon Sep 17 00:00:00 2001 From: Stanley Wang Date: Tue, 13 Sep 2022 18:55:07 +0800 Subject: [PATCH 05/10] Fix the problem that sim2 can not copy imei Set the CopyingEnabled value to true. Fix: 239327568 Test: manually test and review UI Change-Id: Id0025588aa4a93ec06f976c2569404627883c25a --- .../settings/deviceinfo/imei/ImeiInfoPreferenceController.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceController.java b/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceController.java index 027e8c806ca..c188e2b25bd 100644 --- a/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceController.java +++ b/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceController.java @@ -74,6 +74,7 @@ public class ImeiInfoPreferenceController extends BasePreferenceController { for (int simSlotNumber = 1; simSlotNumber < mTelephonyManager.getPhoneCount(); simSlotNumber++) { final Preference multiSimPreference = createNewPreference(screen.getContext()); + multiSimPreference.setCopyingEnabled(true); multiSimPreference.setOrder(imeiPreferenceOrder + simSlotNumber); multiSimPreference.setKey(getPreferenceKey() + simSlotNumber); category.addPreference(multiSimPreference); @@ -150,7 +151,7 @@ public class ImeiInfoPreferenceController extends BasePreferenceController { private int getPhoneType(int slotIndex) { SubscriptionInfo subInfo = SubscriptionManager.from(mContext) - .getActiveSubscriptionInfoForSimSlotIndex(slotIndex); + .getActiveSubscriptionInfoForSimSlotIndex(slotIndex); return mTelephonyManager.getCurrentPhoneType(subInfo != null ? subInfo.getSubscriptionId() : SubscriptionManager.DEFAULT_SUBSCRIPTION_ID); } From 7ef27fbe85d34423a289ded4bdb389b5e6e65003 Mon Sep 17 00:00:00 2001 From: Chaohui Wang Date: Tue, 13 Sep 2022 20:00:25 +0800 Subject: [PATCH 06/10] Clean up some UnusedResources detected by lint 4 Bug: 234570979 Test: Manual with Settings App Change-Id: Icc21ef3bedc7a39e7841271f51b77e9b543f6f0f --- color-check-baseline.xml | 32 --- res/color/storage_wizard_button.xml | 22 -- res/drawable/one_handed_guideline.xml | 45 ---- res/drawable/selectable_card.xml | 22 -- res/drawable/tabs_indicator_background.xml | 24 -- res/layout/one_handed_header.xml | 29 --- res/layout/palette_listview_item.xml | 33 --- res/layout/radio_list_container.xml | 22 -- res/layout/remember_dock_setting.xml | 24 -- .../setup_screen_lock_fingerprint_details.xml | 25 -- res/layout/time_zone_list_item.xml | 62 ----- res/layout/trust_agent_item.xml | 80 ------ res/layout/trusted_credential_details.xml | 23 -- res/layout/twelve_key_entry.xml | 181 -------------- res/layout/twilight_mode_location_off.xml | 60 ----- res/layout/usage_bottom_label.xml | 20 -- res/layout/vpn_lockdown_editor.xml | 38 --- res/layout/wifi_notify_scan_mode.xml | 12 - res/values/strings.xml | 236 ------------------ res/xml/mobile_network_list.xml | 38 --- res/xml/network_and_internet.xml | 128 ---------- res/xml/network_scorer_picker_prefs.xml | 21 -- res/xml/notification_group_settings.xml | 39 --- res/xml/notification_importance.xml | 33 --- res/xml/notification_settings.xml | 21 -- res/xml/other_sound_settings.xml | 69 ----- res/xml/profile_challenge_settings.xml | 20 -- res/xml/sync_settings.xml | 21 -- res/xml/usage_access_settings.xml | 19 -- res/xml/vibrate_for_calls_settings.xml | 20 -- res/xml/voice_input_settings.xml | 25 -- .../network/MultiNetworkHeaderController.java | 108 -------- .../NetworkMobileProviderController.java | 7 +- .../res/drawable/selectable_card.xml | 23 -- .../MultiNetworkHeaderControllerTest.java | 173 ------------- .../NetworkMobileProviderControllerTest.java | 3 +- 36 files changed, 4 insertions(+), 1754 deletions(-) delete mode 100644 res/color/storage_wizard_button.xml delete mode 100644 res/drawable/one_handed_guideline.xml delete mode 100644 res/drawable/selectable_card.xml delete mode 100644 res/drawable/tabs_indicator_background.xml delete mode 100644 res/layout/one_handed_header.xml delete mode 100644 res/layout/palette_listview_item.xml delete mode 100644 res/layout/radio_list_container.xml delete mode 100644 res/layout/remember_dock_setting.xml delete mode 100644 res/layout/setup_screen_lock_fingerprint_details.xml delete mode 100644 res/layout/time_zone_list_item.xml delete mode 100644 res/layout/trust_agent_item.xml delete mode 100644 res/layout/trusted_credential_details.xml delete mode 100644 res/layout/twelve_key_entry.xml delete mode 100644 res/layout/twilight_mode_location_off.xml delete mode 100644 res/layout/usage_bottom_label.xml delete mode 100644 res/layout/vpn_lockdown_editor.xml delete mode 100644 res/layout/wifi_notify_scan_mode.xml delete mode 100644 res/xml/mobile_network_list.xml delete mode 100644 res/xml/network_and_internet.xml delete mode 100644 res/xml/network_scorer_picker_prefs.xml delete mode 100644 res/xml/notification_group_settings.xml delete mode 100644 res/xml/notification_importance.xml delete mode 100644 res/xml/notification_settings.xml delete mode 100644 res/xml/other_sound_settings.xml delete mode 100644 res/xml/profile_challenge_settings.xml delete mode 100644 res/xml/sync_settings.xml delete mode 100644 res/xml/usage_access_settings.xml delete mode 100644 res/xml/vibrate_for_calls_settings.xml delete mode 100644 res/xml/voice_input_settings.xml delete mode 100644 src/com/android/settings/network/MultiNetworkHeaderController.java delete mode 100644 tests/robotests/res/drawable/selectable_card.xml delete mode 100644 tests/unit/src/com/android/settings/network/MultiNetworkHeaderControllerTest.java diff --git a/color-check-baseline.xml b/color-check-baseline.xml index 2b36137d8f6..e906ff1fd3b 100644 --- a/color-check-baseline.xml +++ b/color-check-baseline.xml @@ -3741,38 +3741,6 @@ column="15"/> - - - - - - - - - - - - - - diff --git a/res/drawable/one_handed_guideline.xml b/res/drawable/one_handed_guideline.xml deleted file mode 100644 index 2c1a15834e5..00000000000 --- a/res/drawable/one_handed_guideline.xml +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/res/drawable/selectable_card.xml b/res/drawable/selectable_card.xml deleted file mode 100644 index 9c1987731b9..00000000000 --- a/res/drawable/selectable_card.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - diff --git a/res/drawable/tabs_indicator_background.xml b/res/drawable/tabs_indicator_background.xml deleted file mode 100644 index d326e650fe2..00000000000 --- a/res/drawable/tabs_indicator_background.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - diff --git a/res/layout/one_handed_header.xml b/res/layout/one_handed_header.xml deleted file mode 100644 index 3fa81837985..00000000000 --- a/res/layout/one_handed_header.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - diff --git a/res/layout/palette_listview_item.xml b/res/layout/palette_listview_item.xml deleted file mode 100644 index 012e740ae3a..00000000000 --- a/res/layout/palette_listview_item.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - diff --git a/res/layout/radio_list_container.xml b/res/layout/radio_list_container.xml deleted file mode 100644 index bf40abe6f52..00000000000 --- a/res/layout/radio_list_container.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - diff --git a/res/layout/remember_dock_setting.xml b/res/layout/remember_dock_setting.xml deleted file mode 100644 index 023a9122cc7..00000000000 --- a/res/layout/remember_dock_setting.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - diff --git a/res/layout/setup_screen_lock_fingerprint_details.xml b/res/layout/setup_screen_lock_fingerprint_details.xml deleted file mode 100644 index fc4ed986f59..00000000000 --- a/res/layout/setup_screen_lock_fingerprint_details.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - diff --git a/res/layout/time_zone_list_item.xml b/res/layout/time_zone_list_item.xml deleted file mode 100644 index 471c9d85a50..00000000000 --- a/res/layout/time_zone_list_item.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/res/layout/trust_agent_item.xml b/res/layout/trust_agent_item.xml deleted file mode 100644 index 3555775e086..00000000000 --- a/res/layout/trust_agent_item.xml +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/res/layout/trusted_credential_details.xml b/res/layout/trusted_credential_details.xml deleted file mode 100644 index c8c16f73bea..00000000000 --- a/res/layout/trusted_credential_details.xml +++ /dev/null @@ -1,23 +0,0 @@ - - -