Merge "API review fixes" into jb-dev
diff --git a/Android.mk b/Android.mk
index 678ae55..eef900a 100644
--- a/Android.mk
+++ b/Android.mk
@@ -94,7 +94,6 @@
core/java/android/bluetooth/IBluetoothHealthCallback.aidl \
core/java/android/bluetooth/IBluetoothPbap.aidl \
core/java/android/bluetooth/IBluetoothStateChangeCallback.aidl \
- core/java/android/content/ICancellationSignal.aidl \
core/java/android/content/IClipboard.aidl \
core/java/android/content/IContentService.aidl \
core/java/android/content/IIntentReceiver.aidl \
@@ -126,6 +125,7 @@
core/java/android/nfc/INfcAdapter.aidl \
core/java/android/nfc/INfcAdapterExtras.aidl \
core/java/android/nfc/INfcTag.aidl \
+ core/java/android/os/ICancellationSignal.aidl \
core/java/android/os/IHardwareService.aidl \
core/java/android/os/IMessenger.aidl \
core/java/android/os/INetworkManagementService.aidl \
diff --git a/api/16.txt b/api/16.txt
index 1fc3b54..62654ae 100644
--- a/api/16.txt
+++ b/api/16.txt
@@ -21779,7 +21779,6 @@
method public static void apply(int, int, int, android.graphics.Rect, android.graphics.Rect);
method public static void apply(int, int, int, android.graphics.Rect, int, int, android.graphics.Rect);
method public static void applyDisplay(int, android.graphics.Rect, android.graphics.Rect);
- method public static int getAbsoluteGravity(int, int);
method public static boolean isHorizontal(int);
method public static boolean isVertical(int);
field public static final int AXIS_CLIP = 8; // 0x8
@@ -23502,8 +23501,6 @@
method public void requestDisallowInterceptTouchEvent(boolean);
method public boolean requestSendAccessibilityEvent(android.view.View, android.view.accessibility.AccessibilityEvent);
method public void requestTransparentRegion(android.view.View);
- method protected void resetResolvedLayoutDirection();
- method protected void resetResolvedTextDirection();
method public void scheduleLayoutAnimation();
method public void setAddStatesFromChildren(boolean);
method public void setAlwaysDrawnWithCacheEnabled(boolean);
@@ -27296,7 +27293,6 @@
method public void removeTextChangedListener(android.text.TextWatcher);
method protected void resetResolvedDrawables();
method protected void resolveDrawables();
- method protected void resolveTextDirection();
method public void setAllCaps(boolean);
method public final void setAutoLinkMask(int);
method public void setCompoundDrawablePadding(int);
diff --git a/api/current.txt b/api/current.txt
index ec54636..bdb332e 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -88,6 +88,7 @@
field public static final java.lang.String READ_SOCIAL_STREAM = "android.permission.READ_SOCIAL_STREAM";
field public static final java.lang.String READ_SYNC_SETTINGS = "android.permission.READ_SYNC_SETTINGS";
field public static final java.lang.String READ_SYNC_STATS = "android.permission.READ_SYNC_STATS";
+ field public static final java.lang.String READ_USER_DICTIONARY = "android.permission.READ_USER_DICTIONARY";
field public static final java.lang.String REBOOT = "android.permission.REBOOT";
field public static final java.lang.String RECEIVE_BOOT_COMPLETED = "android.permission.RECEIVE_BOOT_COMPLETED";
field public static final java.lang.String RECEIVE_MMS = "android.permission.RECEIVE_MMS";
@@ -102,7 +103,6 @@
field public static final java.lang.String SET_ALWAYS_FINISH = "android.permission.SET_ALWAYS_FINISH";
field public static final java.lang.String SET_ANIMATION_SCALE = "android.permission.SET_ANIMATION_SCALE";
field public static final java.lang.String SET_DEBUG_APP = "android.permission.SET_DEBUG_APP";
- field public static final java.lang.String SET_KEYBOARD_LAYOUT = "android.permission.SET_KEYBOARD_LAYOUT";
field public static final java.lang.String SET_ORIENTATION = "android.permission.SET_ORIENTATION";
field public static final java.lang.String SET_POINTER_SPEED = "android.permission.SET_POINTER_SPEED";
field public static final deprecated java.lang.String SET_PREFERRED_APPLICATIONS = "android.permission.SET_PREFERRED_APPLICATIONS";
@@ -134,21 +134,42 @@
field public static final java.lang.String WRITE_SMS = "android.permission.WRITE_SMS";
field public static final java.lang.String WRITE_SOCIAL_STREAM = "android.permission.WRITE_SOCIAL_STREAM";
field public static final java.lang.String WRITE_SYNC_SETTINGS = "android.permission.WRITE_SYNC_SETTINGS";
+ field public static final java.lang.String WRITE_USER_DICTIONARY = "android.permission.WRITE_USER_DICTIONARY";
}
public static final class Manifest.permission_group {
ctor public Manifest.permission_group();
field public static final java.lang.String ACCOUNTS = "android.permission-group.ACCOUNTS";
+ field public static final java.lang.String AFFECTS_BATTERY = "android.permission-group.AFFECTS_BATTERY";
+ field public static final java.lang.String APP_INFO = "android.permission-group.APP_INFO";
+ field public static final java.lang.String AUDIO_SETTINGS = "android.permission-group.AUDIO_SETTINGS";
+ field public static final java.lang.String BLUETOOTH_NETWORK = "android.permission-group.BLUETOOTH_NETWORK";
+ field public static final java.lang.String BOOKMARKS = "android.permission-group.BOOKMARKS";
+ field public static final java.lang.String CALENDAR = "android.permission-group.CALENDAR";
+ field public static final java.lang.String CAMERA = "android.permission-group.CAMERA";
field public static final java.lang.String COST_MONEY = "android.permission-group.COST_MONEY";
field public static final java.lang.String DEVELOPMENT_TOOLS = "android.permission-group.DEVELOPMENT_TOOLS";
+ field public static final java.lang.String DEVICE_ALARMS = "android.permission-group.DEVICE_ALARMS";
+ field public static final java.lang.String DISPLAY = "android.permission-group.DISPLAY";
field public static final java.lang.String HARDWARE_CONTROLS = "android.permission-group.HARDWARE_CONTROLS";
field public static final java.lang.String LOCATION = "android.permission-group.LOCATION";
field public static final java.lang.String MESSAGES = "android.permission-group.MESSAGES";
+ field public static final java.lang.String MICROPHONE = "android.permission-group.MICROPHONE";
field public static final java.lang.String NETWORK = "android.permission-group.NETWORK";
field public static final java.lang.String PERSONAL_INFO = "android.permission-group.PERSONAL_INFO";
field public static final java.lang.String PHONE_CALLS = "android.permission-group.PHONE_CALLS";
+ field public static final java.lang.String SCREENLOCK = "android.permission-group.SCREENLOCK";
+ field public static final java.lang.String SHORTRANGE_NETWORK = "android.permission-group.SHORTRANGE_NETWORK";
+ field public static final java.lang.String SOCIAL_INFO = "android.permission-group.SOCIAL_INFO";
+ field public static final java.lang.String STATUS_BAR = "android.permission-group.STATUS_BAR";
field public static final java.lang.String STORAGE = "android.permission-group.STORAGE";
+ field public static final java.lang.String SYNC_SETTINGS = "android.permission-group.SYNC_SETTINGS";
+ field public static final java.lang.String SYSTEM_CLOCK = "android.permission-group.SYSTEM_CLOCK";
field public static final java.lang.String SYSTEM_TOOLS = "android.permission-group.SYSTEM_TOOLS";
+ field public static final java.lang.String USER_DICTIONARY = "android.permission-group.USER_DICTIONARY";
+ field public static final java.lang.String VOICEMAIL = "android.permission-group.VOICEMAIL";
+ field public static final java.lang.String WALLPAPER = "android.permission-group.WALLPAPER";
+ field public static final java.lang.String WRITE_USER_DICTIONARY = "android.permission-group.WRITE_USER_DICTIONARY";
}
public final class R {
@@ -294,7 +315,7 @@
field public static final int cacheColorHint = 16843009; // 0x1010101
field public static final int calendarViewShown = 16843596; // 0x101034c
field public static final int calendarViewStyle = 16843613; // 0x101035d
- field public static final int canHandleGestures = 16843699; // 0x10103b3
+ field public static final int canHandleGestures = 16843691; // 0x10103ab
field public static final int canRetrieveWindowContent = 16843653; // 0x1010385
field public static final int candidatesTextStyleSpans = 16843312; // 0x1010230
field public static final deprecated int capitalize = 16843113; // 0x1010169
@@ -535,7 +556,7 @@
field public static final int imeSubtypeLocale = 16843500; // 0x10102ec
field public static final int imeSubtypeMode = 16843501; // 0x10102ed
field public static final int immersive = 16843456; // 0x10102c0
- field public static final int importantForAccessibility = 16843698; // 0x10103b2
+ field public static final int importantForAccessibility = 16843690; // 0x10103aa
field public static final int inAnimation = 16843127; // 0x1010177
field public static final int includeFontPadding = 16843103; // 0x101015f
field public static final int includeInGlobalSearch = 16843374; // 0x101026e
@@ -573,7 +594,7 @@
field public static final int itemIconDisabledAlpha = 16843057; // 0x1010131
field public static final int itemPadding = 16843565; // 0x101032d
field public static final int itemTextAppearance = 16843052; // 0x101012c
- field public static final int kcm = 16843696; // 0x10103b0
+ field public static final int kcm = 16843688; // 0x10103a8
field public static final int keepScreenOn = 16843286; // 0x1010216
field public static final int key = 16843240; // 0x10101e8
field public static final int keyBackground = 16843315; // 0x1010233
@@ -600,7 +621,6 @@
field public static final int layerType = 16843604; // 0x1010354
field public static final int layout = 16842994; // 0x10100f2
field public static final int layoutAnimation = 16842988; // 0x10100ec
- field public static final int layoutDirection = 16843691; // 0x10103ab
field public static final int layout_above = 16843140; // 0x1010184
field public static final int layout_alignBaseline = 16843142; // 0x1010186
field public static final int layout_alignBottom = 16843146; // 0x101018a
@@ -622,10 +642,8 @@
field public static final int layout_height = 16842997; // 0x10100f5
field public static final int layout_margin = 16842998; // 0x10100f6
field public static final int layout_marginBottom = 16843002; // 0x10100fa
- field public static final int layout_marginEnd = 16843695; // 0x10103af
field public static final int layout_marginLeft = 16842999; // 0x10100f7
field public static final int layout_marginRight = 16843001; // 0x10100f9
- field public static final int layout_marginStart = 16843694; // 0x10103ae
field public static final int layout_marginTop = 16843000; // 0x10100f8
field public static final int layout_row = 16843643; // 0x101037b
field public static final int layout_rowSpan = 16843644; // 0x101037c
@@ -721,23 +739,22 @@
field public static final int packageNames = 16843649; // 0x1010381
field public static final int padding = 16842965; // 0x10100d5
field public static final int paddingBottom = 16842969; // 0x10100d9
- field public static final int paddingEnd = 16843693; // 0x10103ad
field public static final int paddingLeft = 16842966; // 0x10100d6
field public static final int paddingRight = 16842968; // 0x10100d8
- field public static final int paddingStart = 16843692; // 0x10103ac
field public static final int paddingTop = 16842967; // 0x10100d7
field public static final int panelBackground = 16842846; // 0x101005e
field public static final int panelColorBackground = 16842849; // 0x1010061
field public static final int panelColorForeground = 16842848; // 0x1010060
field public static final int panelFullBackground = 16842847; // 0x101005f
field public static final int panelTextAppearance = 16842850; // 0x1010062
- field public static final int parentActivityName = 16843697; // 0x10103b1
+ field public static final int parentActivityName = 16843689; // 0x10103a9
field public static final deprecated int password = 16843100; // 0x101015c
field public static final int path = 16842794; // 0x101002a
field public static final int pathPattern = 16842796; // 0x101002c
field public static final int pathPrefix = 16842795; // 0x101002b
field public static final int permission = 16842758; // 0x1010006
field public static final int permissionGroup = 16842762; // 0x101000a
+ field public static final int permissionGroupFlags = 16843692; // 0x10103ac
field public static final int persistent = 16842765; // 0x101000d
field public static final int persistentDrawingCache = 16842990; // 0x10100ee
field public static final deprecated int phoneNumber = 16843111; // 0x1010167
@@ -936,7 +953,6 @@
field public static final int summaryColumn = 16843426; // 0x10102a2
field public static final int summaryOff = 16843248; // 0x10101f0
field public static final int summaryOn = 16843247; // 0x10101ef
- field public static final int supportsRtl = 16843688; // 0x10103a8
field public static final int supportsUploading = 16843419; // 0x101029b
field public static final int switchMinWidth = 16843632; // 0x1010370
field public static final int switchPadding = 16843633; // 0x1010371
@@ -967,7 +983,6 @@
field public static final int tension = 16843370; // 0x101026a
field public static final int testOnly = 16843378; // 0x1010272
field public static final int text = 16843087; // 0x101014f
- field public static final int textAlignment = 16843690; // 0x10103aa
field public static final int textAllCaps = 16843660; // 0x101038c
field public static final int textAppearance = 16842804; // 0x1010034
field public static final int textAppearanceButton = 16843271; // 0x1010207
@@ -1007,7 +1022,6 @@
field public static final int textColorTertiary = 16843282; // 0x1010212
field public static final int textColorTertiaryInverse = 16843283; // 0x1010213
field public static final int textCursorDrawable = 16843618; // 0x1010362
- field public static final int textDirection = 16843689; // 0x10103a9
field public static final int textEditNoPasteWindowLayout = 16843541; // 0x1010315
field public static final int textEditPasteWindowLayout = 16843540; // 0x1010314
field public static final int textEditSideNoPasteWindowLayout = 16843615; // 0x101035f
@@ -2003,26 +2017,24 @@
method protected void onServiceConnected();
method public final boolean performGlobalAction(int);
method public final void setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo);
- field public static final int GESTURE_CLOCKWISE_CIRCLE = 9; // 0x9
- field public static final int GESTURE_COUNTER_CLOCKWISE_CIRCLE = 10; // 0xa
+ field public static final int GESTURE_DOUBLE_TAP = 17; // 0x11
field public static final int GESTURE_SWIPE_DOWN = 2; // 0x2
- field public static final int GESTURE_SWIPE_DOWN_AND_LEFT = 17; // 0x11
- field public static final int GESTURE_SWIPE_DOWN_AND_RIGHT = 18; // 0x12
+ field public static final int GESTURE_SWIPE_DOWN_AND_LEFT = 15; // 0xf
+ field public static final int GESTURE_SWIPE_DOWN_AND_RIGHT = 16; // 0x10
field public static final int GESTURE_SWIPE_DOWN_AND_UP = 8; // 0x8
field public static final int GESTURE_SWIPE_LEFT = 3; // 0x3
- field public static final int GESTURE_SWIPE_LEFT_AND_DOWN = 12; // 0xc
+ field public static final int GESTURE_SWIPE_LEFT_AND_DOWN = 10; // 0xa
field public static final int GESTURE_SWIPE_LEFT_AND_RIGHT = 5; // 0x5
- field public static final int GESTURE_SWIPE_LEFT_AND_UP = 11; // 0xb
+ field public static final int GESTURE_SWIPE_LEFT_AND_UP = 9; // 0x9
field public static final int GESTURE_SWIPE_RIGHT = 4; // 0x4
- field public static final int GESTURE_SWIPE_RIGHT_AND_DOWN = 14; // 0xe
+ field public static final int GESTURE_SWIPE_RIGHT_AND_DOWN = 12; // 0xc
field public static final int GESTURE_SWIPE_RIGHT_AND_LEFT = 6; // 0x6
- field public static final int GESTURE_SWIPE_RIGHT_AND_UP = 13; // 0xd
+ field public static final int GESTURE_SWIPE_RIGHT_AND_UP = 11; // 0xb
field public static final int GESTURE_SWIPE_UP = 1; // 0x1
field public static final int GESTURE_SWIPE_UP_AND_DOWN = 7; // 0x7
- field public static final int GESTURE_SWIPE_UP_AND_LEFT = 15; // 0xf
- field public static final int GESTURE_SWIPE_UP_AND_RIGHT = 16; // 0x10
- field public static final int GESTURE_TWO_FINGER_LONG_PRESS = 20; // 0x14
- field public static final int GESTURE_TWO_FINGER_TAP = 19; // 0x13
+ field public static final int GESTURE_SWIPE_UP_AND_LEFT = 13; // 0xd
+ field public static final int GESTURE_SWIPE_UP_AND_RIGHT = 14; // 0xe
+ field public static final int GESTURE_TAP_AND_HOLD = 18; // 0x12
field public static final int GLOBAL_ACTION_BACK = 1; // 0x1
field public static final int GLOBAL_ACTION_HOME = 2; // 0x2
field public static final int GLOBAL_ACTION_NOTIFICATIONS = 4; // 0x4
@@ -2916,11 +2928,11 @@
}
public class ActivityOptions {
- method public void join(android.app.ActivityOptions);
method public static android.app.ActivityOptions makeCustomAnimation(android.content.Context, int, int);
method public static android.app.ActivityOptions makeScaleUpAnimation(android.view.View, int, int, int, int);
method public static android.app.ActivityOptions makeThumbnailScaleUpAnimation(android.view.View, android.graphics.Bitmap, int, int);
method public android.os.Bundle toBundle();
+ method public void update(android.app.ActivityOptions);
}
public class AlarmManager {
@@ -3747,23 +3759,30 @@
field public long when;
}
- public static class Notification.BigPictureStyle {
+ public static class Notification.BigPictureStyle extends android.app.Notification.Style {
+ ctor public Notification.BigPictureStyle();
ctor public Notification.BigPictureStyle(android.app.Notification.Builder);
method public android.app.Notification.BigPictureStyle bigPicture(android.graphics.Bitmap);
method public android.app.Notification build();
+ method public android.app.Notification.BigPictureStyle setBigContentTitle(java.lang.CharSequence);
+ method public android.app.Notification.BigPictureStyle setSummaryText(java.lang.CharSequence);
}
- public static class Notification.BigTextStyle {
+ public static class Notification.BigTextStyle extends android.app.Notification.Style {
+ ctor public Notification.BigTextStyle();
ctor public Notification.BigTextStyle(android.app.Notification.Builder);
method public android.app.Notification.BigTextStyle bigText(java.lang.CharSequence);
method public android.app.Notification build();
+ method public android.app.Notification.BigTextStyle setBigContentTitle(java.lang.CharSequence);
+ method public android.app.Notification.BigTextStyle setSummaryText(java.lang.CharSequence);
}
public static class Notification.Builder {
ctor public Notification.Builder(android.content.Context);
method public android.app.Notification.Builder addAction(int, java.lang.CharSequence, android.app.PendingIntent);
method public android.app.Notification.Builder addKind(java.lang.String);
- method public android.app.Notification getNotification();
+ method public android.app.Notification build();
+ method public deprecated android.app.Notification getNotification();
method public android.app.Notification.Builder setAutoCancel(boolean);
method public android.app.Notification.Builder setContent(android.widget.RemoteViews);
method public android.app.Notification.Builder setContentInfo(java.lang.CharSequence);
@@ -3784,6 +3803,7 @@
method public android.app.Notification.Builder setSmallIcon(int, int);
method public android.app.Notification.Builder setSound(android.net.Uri);
method public android.app.Notification.Builder setSound(android.net.Uri, int);
+ method public android.app.Notification.Builder setStyle(android.app.Notification.Style);
method public android.app.Notification.Builder setSubText(java.lang.CharSequence);
method public android.app.Notification.Builder setTicker(java.lang.CharSequence);
method public android.app.Notification.Builder setTicker(java.lang.CharSequence, android.widget.RemoteViews);
@@ -3792,10 +3812,24 @@
method public android.app.Notification.Builder setWhen(long);
}
- public static class Notification.InboxStyle {
+ public static class Notification.InboxStyle extends android.app.Notification.Style {
+ ctor public Notification.InboxStyle();
ctor public Notification.InboxStyle(android.app.Notification.Builder);
method public android.app.Notification.InboxStyle addLine(java.lang.CharSequence);
method public android.app.Notification build();
+ method public android.app.Notification.InboxStyle setBigContentTitle(java.lang.CharSequence);
+ method public android.app.Notification.InboxStyle setSummaryText(java.lang.CharSequence);
+ }
+
+ public static abstract class Notification.Style {
+ ctor public Notification.Style();
+ method public abstract android.app.Notification build();
+ method protected void checkBuilder();
+ method protected android.widget.RemoteViews getStandardView(int);
+ method protected void internalSetBigContentTitle(java.lang.CharSequence);
+ method protected void internalSetSummaryText(java.lang.CharSequence);
+ method public void setBuilder(android.app.Notification.Builder);
+ field protected android.app.Notification.Builder mBuilder;
}
public class NotificationManager {
@@ -3998,17 +4032,20 @@
method public void setDefaultTab(int);
}
- public class TaskStackBuilder implements java.lang.Iterable {
+ public class TaskStackBuilder {
method public android.app.TaskStackBuilder addNextIntent(android.content.Intent);
+ method public android.app.TaskStackBuilder addNextIntentWithParentStack(android.content.Intent);
method public android.app.TaskStackBuilder addParentStack(android.app.Activity);
method public android.app.TaskStackBuilder addParentStack(java.lang.Class<?>);
method public android.app.TaskStackBuilder addParentStack(android.content.ComponentName);
- method public static android.app.TaskStackBuilder from(android.content.Context);
- method public android.content.Intent getIntent(int);
+ method public static android.app.TaskStackBuilder create(android.content.Context);
+ method public android.content.Intent editIntentAt(int);
method public int getIntentCount();
+ method public android.content.Intent[] getIntents();
method public android.app.PendingIntent getPendingIntent(int, int);
- method public java.util.Iterator<android.content.Intent> iterator();
+ method public android.app.PendingIntent getPendingIntent(int, int, android.os.Bundle);
method public void startActivities();
+ method public void startActivities(android.os.Bundle);
}
public class TimePickerDialog extends android.app.AlertDialog implements android.content.DialogInterface.OnClickListener android.widget.TimePicker.OnTimeChangedListener {
@@ -4311,15 +4348,15 @@
method protected void prepareView(android.view.View);
method public void setAppWidget(int, android.appwidget.AppWidgetProviderInfo);
method public void updateAppWidget(android.widget.RemoteViews);
- method public void updateAppWidgetExtras(android.os.Bundle);
+ method public void updateAppWidgetOptions(android.os.Bundle);
method public void updateAppWidgetSize(android.os.Bundle, int, int, int, int);
}
public class AppWidgetManager {
method public boolean bindAppWidgetIdIfAllowed(int, android.content.ComponentName);
- method public android.os.Bundle getAppWidgetExtras(int);
method public int[] getAppWidgetIds(android.content.ComponentName);
method public android.appwidget.AppWidgetProviderInfo getAppWidgetInfo(int);
+ method public android.os.Bundle getAppWidgetOptions(int);
method public java.util.List<android.appwidget.AppWidgetProviderInfo> getInstalledProviders();
method public static android.appwidget.AppWidgetManager getInstance(android.content.Context);
method public void notifyAppWidgetViewDataChanged(int[], int);
@@ -4329,32 +4366,32 @@
method public void updateAppWidget(int[], android.widget.RemoteViews);
method public void updateAppWidget(int, android.widget.RemoteViews);
method public void updateAppWidget(android.content.ComponentName, android.widget.RemoteViews);
- method public void updateAppWidgetExtras(int, android.os.Bundle);
+ method public void updateAppWidgetOptions(int, android.os.Bundle);
field public static final java.lang.String ACTION_APPWIDGET_BIND = "android.appwidget.action.APPWIDGET_BIND";
field public static final java.lang.String ACTION_APPWIDGET_CONFIGURE = "android.appwidget.action.APPWIDGET_CONFIGURE";
field public static final java.lang.String ACTION_APPWIDGET_DELETED = "android.appwidget.action.APPWIDGET_DELETED";
field public static final java.lang.String ACTION_APPWIDGET_DISABLED = "android.appwidget.action.APPWIDGET_DISABLED";
field public static final java.lang.String ACTION_APPWIDGET_ENABLED = "android.appwidget.action.APPWIDGET_ENABLED";
- field public static final java.lang.String ACTION_APPWIDGET_EXTRAS_CHANGED = "android.appwidget.action.APPWIDGET_UPDATE_EXTRAS";
+ field public static final java.lang.String ACTION_APPWIDGET_OPTIONS_CHANGED = "android.appwidget.action.APPWIDGET_UPDATE_OPTIONS";
field public static final java.lang.String ACTION_APPWIDGET_PICK = "android.appwidget.action.APPWIDGET_PICK";
field public static final java.lang.String ACTION_APPWIDGET_UPDATE = "android.appwidget.action.APPWIDGET_UPDATE";
- field public static final java.lang.String EXTRA_APPWIDGET_EXTRAS = "appWidgetExtras";
field public static final java.lang.String EXTRA_APPWIDGET_ID = "appWidgetId";
field public static final java.lang.String EXTRA_APPWIDGET_IDS = "appWidgetIds";
- field public static final java.lang.String EXTRA_APPWIDGET_MAX_HEIGHT = "appWidgetMaxHeight";
- field public static final java.lang.String EXTRA_APPWIDGET_MAX_WIDTH = "appWidgetMaxWidth";
- field public static final java.lang.String EXTRA_APPWIDGET_MIN_HEIGHT = "appWidgetMinHeight";
- field public static final java.lang.String EXTRA_APPWIDGET_MIN_WIDTH = "appWidgetMinWidth";
+ field public static final java.lang.String EXTRA_APPWIDGET_OPTIONS = "appWidgetOptions";
field public static final java.lang.String EXTRA_APPWIDGET_PROVIDER = "appWidgetProvider";
field public static final java.lang.String EXTRA_CUSTOM_EXTRAS = "customExtras";
field public static final java.lang.String EXTRA_CUSTOM_INFO = "customInfo";
field public static final int INVALID_APPWIDGET_ID = 0; // 0x0
field public static final java.lang.String META_DATA_APPWIDGET_PROVIDER = "android.appwidget.provider";
+ field public static final java.lang.String OPTION_APPWIDGET_MAX_HEIGHT = "appWidgetMaxHeight";
+ field public static final java.lang.String OPTION_APPWIDGET_MAX_WIDTH = "appWidgetMaxWidth";
+ field public static final java.lang.String OPTION_APPWIDGET_MIN_HEIGHT = "appWidgetMinHeight";
+ field public static final java.lang.String OPTION_APPWIDGET_MIN_WIDTH = "appWidgetMinWidth";
}
public class AppWidgetProvider extends android.content.BroadcastReceiver {
ctor public AppWidgetProvider();
- method public void onAppWidgetExtrasChanged(android.content.Context, android.appwidget.AppWidgetManager, int, android.os.Bundle);
+ method public void onAppWidgetOptionsChanged(android.content.Context, android.appwidget.AppWidgetManager, int, android.os.Bundle);
method public void onDeleted(android.content.Context, int[]);
method public void onDisabled(android.content.Context);
method public void onEnabled(android.content.Context);
@@ -4872,18 +4909,6 @@
method public final void setResultExtras(android.os.Bundle);
}
- public final class CancellationSignal {
- ctor public CancellationSignal();
- method public void cancel();
- method public boolean isCanceled();
- method public void setOnCancelListener(android.content.CancellationSignal.OnCancelListener);
- method public void throwIfCanceled();
- }
-
- public static abstract interface CancellationSignal.OnCancelListener {
- method public abstract void onCancel();
- }
-
public class ClipData implements android.os.Parcelable {
ctor public ClipData(java.lang.CharSequence, java.lang.String[], android.content.ClipData.Item);
ctor public ClipData(android.content.ClipDescription, android.content.ClipData.Item);
@@ -5014,7 +5039,7 @@
method public android.os.ParcelFileDescriptor openPipeHelper(android.net.Uri, java.lang.String, android.os.Bundle, T, android.content.ContentProvider.PipeDataWriter<T>) throws java.io.FileNotFoundException;
method public android.content.res.AssetFileDescriptor openTypedAssetFile(android.net.Uri, java.lang.String, android.os.Bundle) throws java.io.FileNotFoundException;
method public abstract android.database.Cursor query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String);
- method public android.database.Cursor query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, android.content.CancellationSignal);
+ method public android.database.Cursor query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, android.os.CancellationSignal);
method protected final void setPathPermissions(android.content.pm.PathPermission[]);
method protected final void setReadPermission(java.lang.String);
method protected final void setWritePermission(java.lang.String);
@@ -5038,7 +5063,7 @@
method public android.os.ParcelFileDescriptor openFile(android.net.Uri, java.lang.String) throws java.io.FileNotFoundException, android.os.RemoteException;
method public final android.content.res.AssetFileDescriptor openTypedAssetFileDescriptor(android.net.Uri, java.lang.String, android.os.Bundle) throws java.io.FileNotFoundException, android.os.RemoteException;
method public android.database.Cursor query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String) throws android.os.RemoteException;
- method public android.database.Cursor query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, android.content.CancellationSignal) throws android.os.RemoteException;
+ method public android.database.Cursor query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, android.os.CancellationSignal) throws android.os.RemoteException;
method public boolean release();
method public int update(android.net.Uri, android.content.ContentValues, java.lang.String, java.lang.String[]) throws android.os.RemoteException;
}
@@ -5125,7 +5150,7 @@
method public final java.io.OutputStream openOutputStream(android.net.Uri, java.lang.String) throws java.io.FileNotFoundException;
method public final android.content.res.AssetFileDescriptor openTypedAssetFileDescriptor(android.net.Uri, java.lang.String, android.os.Bundle) throws java.io.FileNotFoundException;
method public final android.database.Cursor query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String);
- method public final android.database.Cursor query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, android.content.CancellationSignal);
+ method public final android.database.Cursor query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, android.os.CancellationSignal);
method public final void registerContentObserver(android.net.Uri, boolean, android.database.ContentObserver);
method public static void removePeriodicSync(android.accounts.Account, java.lang.String, android.os.Bundle);
method public static void removeStatusChangeListener(java.lang.Object);
@@ -5625,6 +5650,7 @@
field public static final java.lang.String ACTION_ALL_APPS = "android.intent.action.ALL_APPS";
field public static final java.lang.String ACTION_ANSWER = "android.intent.action.ANSWER";
field public static final java.lang.String ACTION_APP_ERROR = "android.intent.action.APP_ERROR";
+ field public static final java.lang.String ACTION_ASSIST = "android.intent.action.ASSIST";
field public static final java.lang.String ACTION_ATTACH_DATA = "android.intent.action.ATTACH_DATA";
field public static final java.lang.String ACTION_BATTERY_CHANGED = "android.intent.action.BATTERY_CHANGED";
field public static final java.lang.String ACTION_BATTERY_LOW = "android.intent.action.BATTERY_LOW";
@@ -5752,7 +5778,7 @@
field public static final java.lang.String CATEGORY_UNIT_TEST = "android.intent.category.UNIT_TEST";
field public static final android.os.Parcelable.Creator CREATOR;
field public static final java.lang.String EXTRA_ALARM_COUNT = "android.intent.extra.ALARM_COUNT";
- field public static final java.lang.String EXTRA_ALLOW_REPLACE = "android.intent.extra.ALLOW_REPLACE";
+ field public static final deprecated java.lang.String EXTRA_ALLOW_REPLACE = "android.intent.extra.ALLOW_REPLACE";
field public static final java.lang.String EXTRA_BCC = "android.intent.extra.BCC";
field public static final java.lang.String EXTRA_BUG_REPORT = "android.intent.extra.BUG_REPORT";
field public static final java.lang.String EXTRA_CC = "android.intent.extra.CC";
@@ -6001,11 +6027,6 @@
method public int getNumSuccessfulYieldPoints();
}
- public class OperationCanceledException extends java.lang.RuntimeException {
- ctor public OperationCanceledException();
- ctor public OperationCanceledException(java.lang.String);
- }
-
public class PeriodicSync implements android.os.Parcelable {
ctor public PeriodicSync(android.accounts.Account, java.lang.String, android.os.Bundle, long);
method public int describeContents();
@@ -6238,7 +6259,6 @@
field public static final int FLAG_STOPPED = 2097152; // 0x200000
field public static final int FLAG_SUPPORTS_LARGE_SCREENS = 2048; // 0x800
field public static final int FLAG_SUPPORTS_NORMAL_SCREENS = 1024; // 0x400
- field public static final int FLAG_SUPPORTS_RTL = 4194304; // 0x400000
field public static final int FLAG_SUPPORTS_SCREEN_DENSITIES = 8192; // 0x2000
field public static final int FLAG_SUPPORTS_SMALL_SCREENS = 512; // 0x200
field public static final int FLAG_SUPPORTS_XLARGE_SCREENS = 524288; // 0x80000
@@ -6577,8 +6597,11 @@
method public int describeContents();
method public java.lang.CharSequence loadDescription(android.content.pm.PackageManager);
field public static final android.os.Parcelable.Creator CREATOR;
+ field public static final int FLAG_PERSONAL_INFO = 1; // 0x1
field public int descriptionRes;
+ field public int flags;
field public java.lang.CharSequence nonLocalizedDescription;
+ field public int priority;
}
public class PermissionInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable {
@@ -7463,15 +7486,15 @@
method public static android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String, android.database.sqlite.SQLiteDatabase.CursorFactory);
method public static android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String, android.database.sqlite.SQLiteDatabase.CursorFactory, android.database.DatabaseErrorHandler);
method public android.database.Cursor query(boolean, java.lang.String, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.lang.String);
- method public android.database.Cursor query(boolean, java.lang.String, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.lang.String, android.content.CancellationSignal);
+ method public android.database.Cursor query(boolean, java.lang.String, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.lang.String, android.os.CancellationSignal);
method public android.database.Cursor query(java.lang.String, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String);
method public android.database.Cursor query(java.lang.String, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.lang.String);
method public android.database.Cursor queryWithFactory(android.database.sqlite.SQLiteDatabase.CursorFactory, boolean, java.lang.String, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.lang.String);
- method public android.database.Cursor queryWithFactory(android.database.sqlite.SQLiteDatabase.CursorFactory, boolean, java.lang.String, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.lang.String, android.content.CancellationSignal);
+ method public android.database.Cursor queryWithFactory(android.database.sqlite.SQLiteDatabase.CursorFactory, boolean, java.lang.String, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.lang.String, android.os.CancellationSignal);
method public android.database.Cursor rawQuery(java.lang.String, java.lang.String[]);
- method public android.database.Cursor rawQuery(java.lang.String, java.lang.String[], android.content.CancellationSignal);
+ method public android.database.Cursor rawQuery(java.lang.String, java.lang.String[], android.os.CancellationSignal);
method public android.database.Cursor rawQueryWithFactory(android.database.sqlite.SQLiteDatabase.CursorFactory, java.lang.String, java.lang.String[], java.lang.String);
- method public android.database.Cursor rawQueryWithFactory(android.database.sqlite.SQLiteDatabase.CursorFactory, java.lang.String, java.lang.String[], java.lang.String, android.content.CancellationSignal);
+ method public android.database.Cursor rawQueryWithFactory(android.database.sqlite.SQLiteDatabase.CursorFactory, java.lang.String, java.lang.String[], java.lang.String, android.os.CancellationSignal);
method public static int releaseMemory();
method public long replace(java.lang.String, java.lang.String, android.content.ContentValues);
method public long replaceOrThrow(java.lang.String, java.lang.String, android.content.ContentValues) throws android.database.SQLException;
@@ -7597,7 +7620,7 @@
method public java.lang.String getTables();
method public android.database.Cursor query(android.database.sqlite.SQLiteDatabase, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String);
method public android.database.Cursor query(android.database.sqlite.SQLiteDatabase, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.lang.String);
- method public android.database.Cursor query(android.database.sqlite.SQLiteDatabase, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.lang.String, android.content.CancellationSignal);
+ method public android.database.Cursor query(android.database.sqlite.SQLiteDatabase, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.lang.String, android.os.CancellationSignal);
method public void setCursorFactory(android.database.sqlite.SQLiteDatabase.CursorFactory);
method public void setDistinct(boolean);
method public void setProjectionMap(java.util.Map<java.lang.String, java.lang.String>);
@@ -8575,7 +8598,6 @@
method public android.graphics.Paint.Align getTextAlign();
method public void getTextBounds(java.lang.String, int, int, android.graphics.Rect);
method public void getTextBounds(char[], int, int, android.graphics.Rect);
- method public java.util.Locale getTextLocale();
method public void getTextPath(char[], int, int, float, float, android.graphics.Path);
method public void getTextPath(java.lang.String, int, int, float, float, android.graphics.Path);
method public float getTextScaleX();
@@ -8625,7 +8647,6 @@
method public void setStyle(android.graphics.Paint.Style);
method public void setSubpixelText(boolean);
method public void setTextAlign(android.graphics.Paint.Align);
- method public void setTextLocale(java.util.Locale);
method public void setTextScaleX(float);
method public void setTextSize(float);
method public void setTextSkewX(float);
@@ -9260,10 +9281,6 @@
method public abstract void unscheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable);
}
- public static abstract interface Drawable.Callback2 implements android.graphics.drawable.Drawable.Callback {
- method public abstract int getResolvedLayoutDirection(android.graphics.drawable.Drawable);
- }
-
public static abstract class Drawable.ConstantState {
ctor public Drawable.ConstantState();
method public abstract int getChangingConfigurations();
@@ -10637,7 +10654,7 @@
method public deprecated int getRouting(int);
method public int getStreamMaxVolume(int);
method public int getStreamVolume(int);
- method public int getVibrateSetting(int);
+ method public deprecated int getVibrateSetting(int);
method public boolean isBluetoothA2dpOn();
method public boolean isBluetoothScoAvailableOffCall();
method public boolean isBluetoothScoOn();
@@ -10662,9 +10679,9 @@
method public void setStreamMute(int, boolean);
method public void setStreamSolo(int, boolean);
method public void setStreamVolume(int, int, int);
- method public void setVibrateSetting(int, int);
+ method public deprecated void setVibrateSetting(int, int);
method public deprecated void setWiredHeadsetOn(boolean);
- method public boolean shouldVibrate(int);
+ method public deprecated boolean shouldVibrate(int);
method public void startBluetoothSco();
method public void stopBluetoothSco();
method public void unloadSoundEffects();
@@ -10687,8 +10704,8 @@
field public static final java.lang.String EXTRA_RINGER_MODE = "android.media.EXTRA_RINGER_MODE";
field public static final java.lang.String EXTRA_SCO_AUDIO_PREVIOUS_STATE = "android.media.extra.SCO_AUDIO_PREVIOUS_STATE";
field public static final java.lang.String EXTRA_SCO_AUDIO_STATE = "android.media.extra.SCO_AUDIO_STATE";
- field public static final java.lang.String EXTRA_VIBRATE_SETTING = "android.media.EXTRA_VIBRATE_SETTING";
- field public static final java.lang.String EXTRA_VIBRATE_TYPE = "android.media.EXTRA_VIBRATE_TYPE";
+ field public static final deprecated java.lang.String EXTRA_VIBRATE_SETTING = "android.media.EXTRA_VIBRATE_SETTING";
+ field public static final deprecated java.lang.String EXTRA_VIBRATE_TYPE = "android.media.EXTRA_VIBRATE_TYPE";
field public static final int FLAG_ALLOW_RINGER_MODES = 2; // 0x2
field public static final int FLAG_PLAY_SOUND = 4; // 0x4
field public static final int FLAG_REMOVE_SOUND_AND_VIBRATE = 8; // 0x8
@@ -10733,12 +10750,12 @@
field public static final int STREAM_SYSTEM = 1; // 0x1
field public static final int STREAM_VOICE_CALL = 0; // 0x0
field public static final int USE_DEFAULT_STREAM_TYPE = -2147483648; // 0x80000000
- field public static final java.lang.String VIBRATE_SETTING_CHANGED_ACTION = "android.media.VIBRATE_SETTING_CHANGED";
- field public static final int VIBRATE_SETTING_OFF = 0; // 0x0
- field public static final int VIBRATE_SETTING_ON = 1; // 0x1
- field public static final int VIBRATE_SETTING_ONLY_SILENT = 2; // 0x2
- field public static final int VIBRATE_TYPE_NOTIFICATION = 1; // 0x1
- field public static final int VIBRATE_TYPE_RINGER = 0; // 0x0
+ field public static final deprecated java.lang.String VIBRATE_SETTING_CHANGED_ACTION = "android.media.VIBRATE_SETTING_CHANGED";
+ field public static final deprecated int VIBRATE_SETTING_OFF = 0; // 0x0
+ field public static final deprecated int VIBRATE_SETTING_ON = 1; // 0x1
+ field public static final deprecated int VIBRATE_SETTING_ONLY_SILENT = 2; // 0x2
+ field public static final deprecated int VIBRATE_TYPE_NOTIFICATION = 1; // 0x1
+ field public static final deprecated int VIBRATE_TYPE_RINGER = 0; // 0x0
}
public static abstract interface AudioManager.OnAudioFocusChangeListener {
@@ -10987,7 +11004,7 @@
}
public final class MediaCodec {
- method public void configure(java.util.Map<java.lang.String, java.lang.Object>, android.view.Surface, android.media.MediaCrypto, int);
+ method public void configure(android.media.MediaFormat, android.view.Surface, android.media.MediaCrypto, int);
method public static android.media.MediaCodec createByCodecName(java.lang.String);
method public static android.media.MediaCodec createDecoderByType(java.lang.String);
method public static android.media.MediaCodec createEncoderByType(java.lang.String);
@@ -10996,7 +11013,7 @@
method public final void flush();
method public java.nio.ByteBuffer[] getInputBuffers();
method public java.nio.ByteBuffer[] getOutputBuffers();
- method public final java.util.Map<java.lang.String, java.lang.Object> getOutputFormat();
+ method public final android.media.MediaFormat getOutputFormat();
method public final void queueInputBuffer(int, int, int, long, int) throws android.media.MediaCodec.CryptoException;
method public final void queueSecureInputBuffer(int, int, android.media.MediaCodec.CryptoInfo, long, int) throws android.media.MediaCodec.CryptoException;
method public final void release();
@@ -11004,17 +11021,17 @@
method public final void setVideoScalingMode(int);
method public final void start();
method public final void stop();
- field public static int CONFIGURE_FLAG_ENCODE;
- field public static final int FLAG_CODECCONFIG = 2; // 0x2
- field public static final int FLAG_EOS = 4; // 0x4
- field public static final int FLAG_SYNCFRAME = 1; // 0x1
+ field public static final int BUFFER_FLAG_CODEC_CONFIG = 2; // 0x2
+ field public static final int BUFFER_FLAG_END_OF_STREAM = 4; // 0x4
+ field public static final int BUFFER_FLAG_SYNC_FRAME = 1; // 0x1
+ field public static final int CONFIGURE_FLAG_ENCODE = 1; // 0x1
+ field public static final int CRYPTO_MODE_AES_CTR = 1; // 0x1
+ field public static final int CRYPTO_MODE_UNENCRYPTED = 0; // 0x0
field public static final int INFO_OUTPUT_BUFFERS_CHANGED = -3; // 0xfffffffd
field public static final int INFO_OUTPUT_FORMAT_CHANGED = -2; // 0xfffffffe
field public static final int INFO_TRY_AGAIN_LATER = -1; // 0xffffffff
- field public static final int MODE_AES_CTR = 1; // 0x1
- field public static final int MODE_UNENCRYPTED = 0; // 0x0
+ field public static final int VIDEO_SCALING_MODE_SCALE_TO_FIT = 1; // 0x1
field public static final int VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING = 2; // 0x2
- field public static final int VIDEO_SCALING_MODE_STRETCH_TO_FIT = 1; // 0x1
}
public static final class MediaCodec.BufferInfo {
@@ -11042,43 +11059,170 @@
field public int numSubSamples;
}
- public final class MediaCodecList {
- method public static final int countCodecs();
- method public static final android.media.MediaCodecList.CodecCapabilities getCodecCapabilities(int, java.lang.String);
- method public static final java.lang.String getCodecName(int);
- method public static final java.lang.String[] getSupportedTypes(int);
- method public static final boolean isEncoder(int);
+ public final class MediaCodecInfo {
+ method public final android.media.MediaCodecInfo.CodecCapabilities getCapabilitiesForType(java.lang.String);
+ method public final java.lang.String getName();
+ method public final java.lang.String[] getSupportedTypes();
+ method public final boolean isEncoder();
}
- public static final class MediaCodecList.CodecCapabilities {
- ctor public MediaCodecList.CodecCapabilities();
+ public static final class MediaCodecInfo.CodecCapabilities {
+ ctor public MediaCodecInfo.CodecCapabilities();
+ field public static final int COLOR_Format12bitRGB444 = 3; // 0x3
+ field public static final int COLOR_Format16bitARGB1555 = 5; // 0x5
+ field public static final int COLOR_Format16bitARGB4444 = 4; // 0x4
+ field public static final int COLOR_Format16bitBGR565 = 7; // 0x7
+ field public static final int COLOR_Format16bitRGB565 = 6; // 0x6
+ field public static final int COLOR_Format18BitBGR666 = 41; // 0x29
+ field public static final int COLOR_Format18bitARGB1665 = 9; // 0x9
+ field public static final int COLOR_Format18bitRGB666 = 8; // 0x8
+ field public static final int COLOR_Format19bitARGB1666 = 10; // 0xa
+ field public static final int COLOR_Format24BitABGR6666 = 43; // 0x2b
+ field public static final int COLOR_Format24BitARGB6666 = 42; // 0x2a
+ field public static final int COLOR_Format24bitARGB1887 = 13; // 0xd
+ field public static final int COLOR_Format24bitBGR888 = 12; // 0xc
+ field public static final int COLOR_Format24bitRGB888 = 11; // 0xb
+ field public static final int COLOR_Format25bitARGB1888 = 14; // 0xe
+ field public static final int COLOR_Format32bitARGB8888 = 16; // 0x10
+ field public static final int COLOR_Format32bitBGRA8888 = 15; // 0xf
+ field public static final int COLOR_Format8bitRGB332 = 2; // 0x2
+ field public static final int COLOR_FormatCbYCrY = 27; // 0x1b
+ field public static final int COLOR_FormatCrYCbY = 28; // 0x1c
+ field public static final int COLOR_FormatL16 = 36; // 0x24
+ field public static final int COLOR_FormatL2 = 33; // 0x21
+ field public static final int COLOR_FormatL24 = 37; // 0x25
+ field public static final int COLOR_FormatL32 = 38; // 0x26
+ field public static final int COLOR_FormatL4 = 34; // 0x22
+ field public static final int COLOR_FormatL8 = 35; // 0x23
+ field public static final int COLOR_FormatMonochrome = 1; // 0x1
+ field public static final int COLOR_FormatRawBayer10bit = 31; // 0x1f
+ field public static final int COLOR_FormatRawBayer8bit = 30; // 0x1e
+ field public static final int COLOR_FormatRawBayer8bitcompressed = 32; // 0x20
+ field public static final int COLOR_FormatYCbYCr = 25; // 0x19
+ field public static final int COLOR_FormatYCrYCb = 26; // 0x1a
+ field public static final int COLOR_FormatYUV411PackedPlanar = 18; // 0x12
+ field public static final int COLOR_FormatYUV411Planar = 17; // 0x11
+ field public static final int COLOR_FormatYUV420PackedPlanar = 20; // 0x14
+ field public static final int COLOR_FormatYUV420PackedSemiPlanar = 39; // 0x27
+ field public static final int COLOR_FormatYUV420Planar = 19; // 0x13
+ field public static final int COLOR_FormatYUV420SemiPlanar = 21; // 0x15
+ field public static final int COLOR_FormatYUV422PackedPlanar = 23; // 0x17
+ field public static final int COLOR_FormatYUV422PackedSemiPlanar = 40; // 0x28
+ field public static final int COLOR_FormatYUV422Planar = 22; // 0x16
+ field public static final int COLOR_FormatYUV422SemiPlanar = 24; // 0x18
+ field public static final int COLOR_FormatYUV444Interleaved = 29; // 0x1d
+ field public static final int COLOR_QCOM_FormatYUV420SemiPlanar = 2141391872; // 0x7fa30c00
+ field public static final int COLOR_TI_FormatYUV420PackedSemiPlanar = 2130706688; // 0x7f000100
field public int[] colorFormats;
- field public android.media.MediaCodecList.CodecProfileLevel[] profileLevels;
+ field public android.media.MediaCodecInfo.CodecProfileLevel[] profileLevels;
}
- public static final class MediaCodecList.CodecProfileLevel {
- ctor public MediaCodecList.CodecProfileLevel();
+ public static final class MediaCodecInfo.CodecProfileLevel {
+ ctor public MediaCodecInfo.CodecProfileLevel();
+ field public static final int AACObjectELD = 39; // 0x27
+ field public static final int AACObjectERLC = 17; // 0x11
+ field public static final int AACObjectHE = 5; // 0x5
+ field public static final int AACObjectHE_PS = 29; // 0x1d
+ field public static final int AACObjectLC = 2; // 0x2
+ field public static final int AACObjectLD = 23; // 0x17
+ field public static final int AACObjectLTP = 4; // 0x4
+ field public static final int AACObjectMain = 1; // 0x1
+ field public static final int AACObjectSSR = 3; // 0x3
+ field public static final int AACObjectScalable = 6; // 0x6
+ field public static final int AVCLevel1 = 1; // 0x1
+ field public static final int AVCLevel11 = 4; // 0x4
+ field public static final int AVCLevel12 = 8; // 0x8
+ field public static final int AVCLevel13 = 16; // 0x10
+ field public static final int AVCLevel1b = 2; // 0x2
+ field public static final int AVCLevel2 = 32; // 0x20
+ field public static final int AVCLevel21 = 64; // 0x40
+ field public static final int AVCLevel22 = 128; // 0x80
+ field public static final int AVCLevel3 = 256; // 0x100
+ field public static final int AVCLevel31 = 512; // 0x200
+ field public static final int AVCLevel32 = 1024; // 0x400
+ field public static final int AVCLevel4 = 2048; // 0x800
+ field public static final int AVCLevel41 = 4096; // 0x1000
+ field public static final int AVCLevel42 = 8192; // 0x2000
+ field public static final int AVCLevel5 = 16384; // 0x4000
+ field public static final int AVCLevel51 = 32768; // 0x8000
+ field public static final int AVCProfileBaseline = 1; // 0x1
+ field public static final int AVCProfileExtended = 4; // 0x4
+ field public static final int AVCProfileHigh = 8; // 0x8
+ field public static final int AVCProfileHigh10 = 16; // 0x10
+ field public static final int AVCProfileHigh422 = 32; // 0x20
+ field public static final int AVCProfileHigh444 = 64; // 0x40
+ field public static final int AVCProfileMain = 2; // 0x2
+ field public static final int H263Level10 = 1; // 0x1
+ field public static final int H263Level20 = 2; // 0x2
+ field public static final int H263Level30 = 4; // 0x4
+ field public static final int H263Level40 = 8; // 0x8
+ field public static final int H263Level45 = 16; // 0x10
+ field public static final int H263Level50 = 32; // 0x20
+ field public static final int H263Level60 = 64; // 0x40
+ field public static final int H263Level70 = 128; // 0x80
+ field public static final int H263ProfileBackwardCompatible = 4; // 0x4
+ field public static final int H263ProfileBaseline = 1; // 0x1
+ field public static final int H263ProfileH320Coding = 2; // 0x2
+ field public static final int H263ProfileHighCompression = 32; // 0x20
+ field public static final int H263ProfileHighLatency = 256; // 0x100
+ field public static final int H263ProfileISWV2 = 8; // 0x8
+ field public static final int H263ProfileISWV3 = 16; // 0x10
+ field public static final int H263ProfileInterlace = 128; // 0x80
+ field public static final int H263ProfileInternet = 64; // 0x40
+ field public static final int MPEG4Level0 = 1; // 0x1
+ field public static final int MPEG4Level0b = 2; // 0x2
+ field public static final int MPEG4Level1 = 4; // 0x4
+ field public static final int MPEG4Level2 = 8; // 0x8
+ field public static final int MPEG4Level3 = 16; // 0x10
+ field public static final int MPEG4Level4 = 32; // 0x20
+ field public static final int MPEG4Level4a = 64; // 0x40
+ field public static final int MPEG4Level5 = 128; // 0x80
+ field public static final int MPEG4ProfileAdvancedCoding = 4096; // 0x1000
+ field public static final int MPEG4ProfileAdvancedCore = 8192; // 0x2000
+ field public static final int MPEG4ProfileAdvancedRealTime = 1024; // 0x400
+ field public static final int MPEG4ProfileAdvancedScalable = 16384; // 0x4000
+ field public static final int MPEG4ProfileAdvancedSimple = 32768; // 0x8000
+ field public static final int MPEG4ProfileBasicAnimated = 256; // 0x100
+ field public static final int MPEG4ProfileCore = 4; // 0x4
+ field public static final int MPEG4ProfileCoreScalable = 2048; // 0x800
+ field public static final int MPEG4ProfileHybrid = 512; // 0x200
+ field public static final int MPEG4ProfileMain = 8; // 0x8
+ field public static final int MPEG4ProfileNbit = 16; // 0x10
+ field public static final int MPEG4ProfileScalableTexture = 32; // 0x20
+ field public static final int MPEG4ProfileSimple = 1; // 0x1
+ field public static final int MPEG4ProfileSimpleFBA = 128; // 0x80
+ field public static final int MPEG4ProfileSimpleFace = 64; // 0x40
+ field public static final int MPEG4ProfileSimpleScalable = 2; // 0x2
field public int level;
field public int profile;
}
+ public final class MediaCodecList {
+ method public static final int getCodecCount();
+ method public static final android.media.MediaCodecInfo getCodecInfoAt(int);
+ }
+
public final class MediaCrypto {
- ctor public MediaCrypto(byte[], byte[]) throws java.lang.RuntimeException;
- method public static final boolean isCryptoSchemeSupported(byte[]);
+ ctor public MediaCrypto(java.util.UUID, byte[]) throws android.media.MediaCryptoException;
+ method public static final boolean isCryptoSchemeSupported(java.util.UUID);
method public final void release();
method public final boolean requiresSecureDecoderComponent(java.lang.String);
}
+ public final class MediaCryptoException extends java.lang.Exception {
+ ctor public MediaCryptoException(java.lang.String);
+ }
+
public final class MediaExtractor {
ctor public MediaExtractor();
method public boolean advance();
- method public int countTracks();
method public long getCachedDuration();
method public boolean getSampleCryptoInfo(android.media.MediaCodec.CryptoInfo);
method public int getSampleFlags();
method public long getSampleTime();
method public int getSampleTrackIndex();
- method public java.util.Map<java.lang.String, java.lang.Object> getTrackFormat(int);
+ method public final int getTrackCount();
+ method public android.media.MediaFormat getTrackFormat(int);
method public boolean hasCacheReachedEndOfStream();
method public int readSampleData(java.nio.ByteBuffer, int);
method public final void release();
@@ -11092,12 +11236,42 @@
method public void unselectTrack(int);
field public static final int SAMPLE_FLAG_ENCRYPTED = 2; // 0x2
field public static final int SAMPLE_FLAG_SYNC = 1; // 0x1
- field public static final int SEEK_TO_CLOSEST = 3; // 0x3
field public static final int SEEK_TO_CLOSEST_SYNC = 2; // 0x2
field public static final int SEEK_TO_NEXT_SYNC = 1; // 0x1
field public static final int SEEK_TO_PREVIOUS_SYNC = 0; // 0x0
}
+ public final class MediaFormat {
+ ctor public MediaFormat();
+ method public final boolean containsKey(java.lang.String);
+ method public static final android.media.MediaFormat createAudioFormat(java.lang.String, int, int);
+ method public static final android.media.MediaFormat createVideoFormat(java.lang.String, int, int);
+ method public final java.nio.ByteBuffer getByteBuffer(java.lang.String);
+ method public final float getFloat(java.lang.String);
+ method public final int getInteger(java.lang.String);
+ method public final long getLong(java.lang.String);
+ method public final java.lang.String getString(java.lang.String);
+ method public final void setByteBuffer(java.lang.String, java.nio.ByteBuffer);
+ method public final void setFloat(java.lang.String, float);
+ method public final void setInteger(java.lang.String, int);
+ method public final void setLong(java.lang.String, long);
+ method public final void setString(java.lang.String, java.lang.String);
+ field public static final java.lang.String KEY_AAC_PROFILE = "aac-profile";
+ field public static final java.lang.String KEY_BIT_RATE = "bitrate";
+ field public static final java.lang.String KEY_CHANNEL_COUNT = "channel-count";
+ field public static final java.lang.String KEY_CHANNEL_MASK = "channel-mask";
+ field public static final java.lang.String KEY_COLOR_FORMAT = "color-format";
+ field public static final java.lang.String KEY_DURATION = "durationUs";
+ field public static final java.lang.String KEY_FRAME_RATE = "frame-rate";
+ field public static final java.lang.String KEY_HEIGHT = "height";
+ field public static final java.lang.String KEY_IS_ADTS = "is-adts";
+ field public static final java.lang.String KEY_I_FRAME_INTERVAL = "i-frame-interval";
+ field public static final java.lang.String KEY_MAX_INPUT_SIZE = "max-input-size";
+ field public static final java.lang.String KEY_MIME = "mime";
+ field public static final java.lang.String KEY_SAMPLE_RATE = "sample-rate";
+ field public static final java.lang.String KEY_WIDTH = "width";
+ }
+
public class MediaMetadataRetriever {
ctor public MediaMetadataRetriever();
method public java.lang.String extractMetadata(int);
@@ -11186,6 +11360,7 @@
method public void setOnVideoSizeChangedListener(android.media.MediaPlayer.OnVideoSizeChangedListener);
method public void setScreenOnWhilePlaying(boolean);
method public void setSurface(android.view.Surface);
+ method public void setVideoScalingMode(int);
method public void setVolume(float, float);
method public void setWakeMode(android.content.Context, int);
method public void start() throws java.lang.IllegalStateException;
@@ -11201,6 +11376,8 @@
field public static final int MEDIA_INFO_UNKNOWN = 1; // 0x1
field public static final int MEDIA_INFO_VIDEO_TRACK_LAGGING = 700; // 0x2bc
field public static final java.lang.String MEDIA_MIMETYPE_TEXT_SUBRIP = "application/x-subrip";
+ field public static final int VIDEO_SCALING_MODE_SCALE_TO_FIT = 1; // 0x1
+ field public static final int VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING = 2; // 0x2
}
public static abstract interface MediaPlayer.OnBufferingUpdateListener {
@@ -15157,6 +15334,18 @@
field public static final android.os.Bundle EMPTY;
}
+ public final class CancellationSignal {
+ ctor public CancellationSignal();
+ method public void cancel();
+ method public boolean isCanceled();
+ method public void setOnCancelListener(android.os.CancellationSignal.OnCancelListener);
+ method public void throwIfCanceled();
+ }
+
+ public static abstract interface CancellationSignal.OnCancelListener {
+ method public abstract void onCancel();
+ }
+
public class ConditionVariable {
ctor public ConditionVariable();
ctor public ConditionVariable(boolean);
@@ -15521,6 +15710,11 @@
ctor public NetworkOnMainThreadException();
}
+ public class OperationCanceledException extends java.lang.RuntimeException {
+ ctor public OperationCanceledException();
+ ctor public OperationCanceledException(java.lang.String);
+ }
+
public final class Parcel {
method public final void appendFrom(android.os.Parcel, int, int);
method public final android.os.IBinder[] createBinderArray();
@@ -18378,95 +18572,104 @@
package android.renderscript {
- public deprecated class Allocation extends android.renderscript.BaseObj {
- method public deprecated void copy1DRangeFrom(int, int, int[]);
- method public deprecated void copy1DRangeFrom(int, int, short[]);
- method public deprecated void copy1DRangeFrom(int, int, byte[]);
- method public deprecated void copy1DRangeFrom(int, int, float[]);
- method public deprecated void copy1DRangeFrom(int, int, android.renderscript.Allocation, int);
- method public deprecated void copy1DRangeFromUnchecked(int, int, int[]);
- method public deprecated void copy1DRangeFromUnchecked(int, int, short[]);
- method public deprecated void copy1DRangeFromUnchecked(int, int, byte[]);
- method public deprecated void copy1DRangeFromUnchecked(int, int, float[]);
- method public deprecated void copy2DRangeFrom(int, int, int, int, byte[]);
- method public deprecated void copy2DRangeFrom(int, int, int, int, short[]);
- method public deprecated void copy2DRangeFrom(int, int, int, int, int[]);
- method public deprecated void copy2DRangeFrom(int, int, int, int, float[]);
- method public deprecated void copy2DRangeFrom(int, int, int, int, android.renderscript.Allocation, int, int);
- method public deprecated void copy2DRangeFrom(int, int, android.graphics.Bitmap);
- method public deprecated void copyFrom(android.renderscript.BaseObj[]);
- method public deprecated void copyFrom(int[]);
- method public deprecated void copyFrom(short[]);
- method public deprecated void copyFrom(byte[]);
- method public deprecated void copyFrom(float[]);
- method public deprecated void copyFrom(android.graphics.Bitmap);
- method public deprecated void copyFromUnchecked(int[]);
- method public deprecated void copyFromUnchecked(short[]);
- method public deprecated void copyFromUnchecked(byte[]);
- method public deprecated void copyFromUnchecked(float[]);
- method public deprecated void copyTo(android.graphics.Bitmap);
- method public deprecated void copyTo(byte[]);
- method public deprecated void copyTo(short[]);
- method public deprecated void copyTo(int[]);
- method public deprecated void copyTo(float[]);
- method public static deprecated android.renderscript.Allocation createCubemapFromBitmap(android.renderscript.RenderScript, android.graphics.Bitmap, android.renderscript.Allocation.MipmapControl, int);
- method public static deprecated android.renderscript.Allocation createCubemapFromBitmap(android.renderscript.RenderScript, android.graphics.Bitmap);
- method public static deprecated android.renderscript.Allocation createCubemapFromCubeFaces(android.renderscript.RenderScript, android.graphics.Bitmap, android.graphics.Bitmap, android.graphics.Bitmap, android.graphics.Bitmap, android.graphics.Bitmap, android.graphics.Bitmap, android.renderscript.Allocation.MipmapControl, int);
- method public static deprecated android.renderscript.Allocation createCubemapFromCubeFaces(android.renderscript.RenderScript, android.graphics.Bitmap, android.graphics.Bitmap, android.graphics.Bitmap, android.graphics.Bitmap, android.graphics.Bitmap, android.graphics.Bitmap);
- method public static deprecated android.renderscript.Allocation createFromBitmap(android.renderscript.RenderScript, android.graphics.Bitmap, android.renderscript.Allocation.MipmapControl, int);
- method public static deprecated android.renderscript.Allocation createFromBitmap(android.renderscript.RenderScript, android.graphics.Bitmap);
- method public static deprecated android.renderscript.Allocation createFromBitmapResource(android.renderscript.RenderScript, android.content.res.Resources, int, android.renderscript.Allocation.MipmapControl, int);
- method public static deprecated android.renderscript.Allocation createFromBitmapResource(android.renderscript.RenderScript, android.content.res.Resources, int);
- method public static deprecated android.renderscript.Allocation createFromString(android.renderscript.RenderScript, java.lang.String, int);
- method public static deprecated android.renderscript.Allocation createSized(android.renderscript.RenderScript, android.renderscript.Element, int, int);
- method public static deprecated android.renderscript.Allocation createSized(android.renderscript.RenderScript, android.renderscript.Element, int);
- method public static deprecated android.renderscript.Allocation createTyped(android.renderscript.RenderScript, android.renderscript.Type, android.renderscript.Allocation.MipmapControl, int);
- method public static deprecated android.renderscript.Allocation createTyped(android.renderscript.RenderScript, android.renderscript.Type, int);
- method public static deprecated android.renderscript.Allocation createTyped(android.renderscript.RenderScript, android.renderscript.Type);
- method public deprecated void generateMipmaps();
- method public deprecated android.renderscript.Type getType();
- method public deprecated synchronized void resize(int);
- method public deprecated void setFromFieldPacker(int, android.renderscript.FieldPacker);
- method public deprecated void setFromFieldPacker(int, int, android.renderscript.FieldPacker);
- method public deprecated void syncAll(int);
- field public static final deprecated int USAGE_GRAPHICS_CONSTANTS = 8; // 0x8
- field public static final deprecated int USAGE_GRAPHICS_RENDER_TARGET = 16; // 0x10
- field public static final deprecated int USAGE_GRAPHICS_TEXTURE = 2; // 0x2
- field public static final deprecated int USAGE_GRAPHICS_VERTEX = 4; // 0x4
- field public static final deprecated int USAGE_SCRIPT = 1; // 0x1
+ public class Allocation extends android.renderscript.BaseObj {
+ method public void copy1DRangeFrom(int, int, int[]);
+ method public void copy1DRangeFrom(int, int, short[]);
+ method public void copy1DRangeFrom(int, int, byte[]);
+ method public void copy1DRangeFrom(int, int, float[]);
+ method public void copy1DRangeFrom(int, int, android.renderscript.Allocation, int);
+ method public void copy1DRangeFromUnchecked(int, int, int[]);
+ method public void copy1DRangeFromUnchecked(int, int, short[]);
+ method public void copy1DRangeFromUnchecked(int, int, byte[]);
+ method public void copy1DRangeFromUnchecked(int, int, float[]);
+ method public void copy2DRangeFrom(int, int, int, int, byte[]);
+ method public void copy2DRangeFrom(int, int, int, int, short[]);
+ method public void copy2DRangeFrom(int, int, int, int, int[]);
+ method public void copy2DRangeFrom(int, int, int, int, float[]);
+ method public void copy2DRangeFrom(int, int, int, int, android.renderscript.Allocation, int, int);
+ method public void copy2DRangeFrom(int, int, android.graphics.Bitmap);
+ method public void copyFrom(android.renderscript.BaseObj[]);
+ method public void copyFrom(int[]);
+ method public void copyFrom(short[]);
+ method public void copyFrom(byte[]);
+ method public void copyFrom(float[]);
+ method public void copyFrom(android.graphics.Bitmap);
+ method public void copyFromUnchecked(int[]);
+ method public void copyFromUnchecked(short[]);
+ method public void copyFromUnchecked(byte[]);
+ method public void copyFromUnchecked(float[]);
+ method public void copyTo(android.graphics.Bitmap);
+ method public void copyTo(byte[]);
+ method public void copyTo(short[]);
+ method public void copyTo(int[]);
+ method public void copyTo(float[]);
+ method public static android.renderscript.Allocation createCubemapFromBitmap(android.renderscript.RenderScript, android.graphics.Bitmap, android.renderscript.Allocation.MipmapControl, int);
+ method public static android.renderscript.Allocation createCubemapFromBitmap(android.renderscript.RenderScript, android.graphics.Bitmap);
+ method public static android.renderscript.Allocation createCubemapFromCubeFaces(android.renderscript.RenderScript, android.graphics.Bitmap, android.graphics.Bitmap, android.graphics.Bitmap, android.graphics.Bitmap, android.graphics.Bitmap, android.graphics.Bitmap, android.renderscript.Allocation.MipmapControl, int);
+ method public static android.renderscript.Allocation createCubemapFromCubeFaces(android.renderscript.RenderScript, android.graphics.Bitmap, android.graphics.Bitmap, android.graphics.Bitmap, android.graphics.Bitmap, android.graphics.Bitmap, android.graphics.Bitmap);
+ method public static android.renderscript.Allocation createFromBitmap(android.renderscript.RenderScript, android.graphics.Bitmap, android.renderscript.Allocation.MipmapControl, int);
+ method public static android.renderscript.Allocation createFromBitmap(android.renderscript.RenderScript, android.graphics.Bitmap);
+ method public static android.renderscript.Allocation createFromBitmapResource(android.renderscript.RenderScript, android.content.res.Resources, int, android.renderscript.Allocation.MipmapControl, int);
+ method public static android.renderscript.Allocation createFromBitmapResource(android.renderscript.RenderScript, android.content.res.Resources, int);
+ method public static android.renderscript.Allocation createFromString(android.renderscript.RenderScript, java.lang.String, int);
+ method public static android.renderscript.Allocation createSized(android.renderscript.RenderScript, android.renderscript.Element, int, int);
+ method public static android.renderscript.Allocation createSized(android.renderscript.RenderScript, android.renderscript.Element, int);
+ method public static android.renderscript.Allocation createTyped(android.renderscript.RenderScript, android.renderscript.Type, android.renderscript.Allocation.MipmapControl, int);
+ method public static android.renderscript.Allocation createTyped(android.renderscript.RenderScript, android.renderscript.Type, int);
+ method public static android.renderscript.Allocation createTyped(android.renderscript.RenderScript, android.renderscript.Type);
+ method public void generateMipmaps();
+ method public int getBytesSize();
+ method public android.renderscript.Element getElement();
+ method public android.view.Surface getSurface();
+ method public android.renderscript.Type getType();
+ method public int getUsage();
+ method public void ioReceive();
+ method public void ioSend();
+ method public synchronized void resize(int);
+ method public void setFromFieldPacker(int, android.renderscript.FieldPacker);
+ method public void setFromFieldPacker(int, int, android.renderscript.FieldPacker);
+ method public void setSurface(android.view.Surface);
+ method public void syncAll(int);
+ field public static final int USAGE_GRAPHICS_CONSTANTS = 8; // 0x8
+ field public static final int USAGE_GRAPHICS_RENDER_TARGET = 16; // 0x10
+ field public static final int USAGE_GRAPHICS_TEXTURE = 2; // 0x2
+ field public static final int USAGE_GRAPHICS_VERTEX = 4; // 0x4
+ field public static final int USAGE_IO_INPUT = 32; // 0x20
+ field public static final int USAGE_IO_OUTPUT = 64; // 0x40
+ field public static final int USAGE_SCRIPT = 1; // 0x1
}
- public static final deprecated class Allocation.MipmapControl extends java.lang.Enum {
+ public static final class Allocation.MipmapControl extends java.lang.Enum {
method public static android.renderscript.Allocation.MipmapControl valueOf(java.lang.String);
method public static final android.renderscript.Allocation.MipmapControl[] values();
- enum_constant public static final deprecated android.renderscript.Allocation.MipmapControl MIPMAP_FULL;
- enum_constant public static final deprecated android.renderscript.Allocation.MipmapControl MIPMAP_NONE;
- enum_constant public static final deprecated android.renderscript.Allocation.MipmapControl MIPMAP_ON_SYNC_TO_TEXTURE;
+ enum_constant public static final android.renderscript.Allocation.MipmapControl MIPMAP_FULL;
+ enum_constant public static final android.renderscript.Allocation.MipmapControl MIPMAP_NONE;
+ enum_constant public static final android.renderscript.Allocation.MipmapControl MIPMAP_ON_SYNC_TO_TEXTURE;
}
- public deprecated class AllocationAdapter extends android.renderscript.Allocation {
- method public static deprecated android.renderscript.AllocationAdapter create1D(android.renderscript.RenderScript, android.renderscript.Allocation);
- method public static deprecated android.renderscript.AllocationAdapter create2D(android.renderscript.RenderScript, android.renderscript.Allocation);
- method public deprecated void setFace(android.renderscript.Type.CubemapFace);
- method public deprecated void setLOD(int);
- method public deprecated void setY(int);
- method public deprecated void setZ(int);
+ public class AllocationAdapter extends android.renderscript.Allocation {
+ method public static android.renderscript.AllocationAdapter create1D(android.renderscript.RenderScript, android.renderscript.Allocation);
+ method public static android.renderscript.AllocationAdapter create2D(android.renderscript.RenderScript, android.renderscript.Allocation);
+ method public void setFace(android.renderscript.Type.CubemapFace);
+ method public void setLOD(int);
+ method public void setY(int);
+ method public void setZ(int);
}
- public deprecated class BaseObj {
- method public deprecated synchronized void destroy();
- method public deprecated java.lang.String getName();
- method public deprecated void setName(java.lang.String);
+ public class BaseObj {
+ method public synchronized void destroy();
+ method public java.lang.String getName();
+ method public void setName(java.lang.String);
}
- public deprecated class Byte2 {
+ public class Byte2 {
ctor public Byte2();
ctor public Byte2(byte, byte);
field public byte x;
field public byte y;
}
- public deprecated class Byte3 {
+ public class Byte3 {
ctor public Byte3();
ctor public Byte3(byte, byte, byte);
field public byte x;
@@ -18474,7 +18677,7 @@
field public byte z;
}
- public deprecated class Byte4 {
+ public class Byte4 {
ctor public Byte4();
ctor public Byte4(byte, byte, byte, byte);
field public byte w;
@@ -18483,14 +18686,14 @@
field public byte z;
}
- public deprecated class Double2 {
+ public class Double2 {
ctor public Double2();
ctor public Double2(double, double);
field public double x;
field public double y;
}
- public deprecated class Double3 {
+ public class Double3 {
ctor public Double3();
ctor public Double3(double, double, double);
field public double x;
@@ -18498,7 +18701,7 @@
field public double z;
}
- public deprecated class Double4 {
+ public class Double4 {
ctor public Double4();
ctor public Double4(double, double, double, double);
field public double w;
@@ -18507,82 +18710,92 @@
field public double z;
}
- public deprecated class Element extends android.renderscript.BaseObj {
- method public static deprecated android.renderscript.Element ALLOCATION(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element A_8(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element BOOLEAN(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element ELEMENT(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element F32(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element F32_2(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element F32_3(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element F32_4(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element F64(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element F64_2(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element F64_3(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element F64_4(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element I16(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element I16_2(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element I16_3(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element I16_4(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element I32(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element I32_2(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element I32_3(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element I32_4(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element I64(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element I64_2(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element I64_3(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element I64_4(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element I8(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element I8_2(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element I8_3(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element I8_4(android.renderscript.RenderScript);
+ public class Element extends android.renderscript.BaseObj {
+ method public static android.renderscript.Element ALLOCATION(android.renderscript.RenderScript);
+ method public static android.renderscript.Element A_8(android.renderscript.RenderScript);
+ method public static android.renderscript.Element BOOLEAN(android.renderscript.RenderScript);
+ method public static android.renderscript.Element ELEMENT(android.renderscript.RenderScript);
+ method public static android.renderscript.Element F32(android.renderscript.RenderScript);
+ method public static android.renderscript.Element F32_2(android.renderscript.RenderScript);
+ method public static android.renderscript.Element F32_3(android.renderscript.RenderScript);
+ method public static android.renderscript.Element F32_4(android.renderscript.RenderScript);
+ method public static android.renderscript.Element F64(android.renderscript.RenderScript);
+ method public static android.renderscript.Element F64_2(android.renderscript.RenderScript);
+ method public static android.renderscript.Element F64_3(android.renderscript.RenderScript);
+ method public static android.renderscript.Element F64_4(android.renderscript.RenderScript);
+ method public static android.renderscript.Element FONT(android.renderscript.RenderScript);
+ method public static android.renderscript.Element I16(android.renderscript.RenderScript);
+ method public static android.renderscript.Element I16_2(android.renderscript.RenderScript);
+ method public static android.renderscript.Element I16_3(android.renderscript.RenderScript);
+ method public static android.renderscript.Element I16_4(android.renderscript.RenderScript);
+ method public static android.renderscript.Element I32(android.renderscript.RenderScript);
+ method public static android.renderscript.Element I32_2(android.renderscript.RenderScript);
+ method public static android.renderscript.Element I32_3(android.renderscript.RenderScript);
+ method public static android.renderscript.Element I32_4(android.renderscript.RenderScript);
+ method public static android.renderscript.Element I64(android.renderscript.RenderScript);
+ method public static android.renderscript.Element I64_2(android.renderscript.RenderScript);
+ method public static android.renderscript.Element I64_3(android.renderscript.RenderScript);
+ method public static android.renderscript.Element I64_4(android.renderscript.RenderScript);
+ method public static android.renderscript.Element I8(android.renderscript.RenderScript);
+ method public static android.renderscript.Element I8_2(android.renderscript.RenderScript);
+ method public static android.renderscript.Element I8_3(android.renderscript.RenderScript);
+ method public static android.renderscript.Element I8_4(android.renderscript.RenderScript);
method public static deprecated android.renderscript.Element MATRIX4X4(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element MATRIX_2X2(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element MATRIX_3X3(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element MATRIX_4X4(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element MESH(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element PROGRAM_FRAGMENT(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element PROGRAM_RASTER(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element PROGRAM_STORE(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element PROGRAM_VERTEX(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element RGBA_4444(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element RGBA_5551(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element RGBA_8888(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element RGB_565(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element RGB_888(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element SAMPLER(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element SCRIPT(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element TYPE(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element U16(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element U16_2(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element U16_3(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element U16_4(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element U32(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element U32_2(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element U32_3(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element U32_4(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element U64(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element U64_2(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element U64_3(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element U64_4(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element U8(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element U8_2(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element U8_3(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element U8_4(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Element createPixel(android.renderscript.RenderScript, android.renderscript.Element.DataType, android.renderscript.Element.DataKind);
- method public static deprecated android.renderscript.Element createVector(android.renderscript.RenderScript, android.renderscript.Element.DataType, int);
- method public deprecated boolean isCompatible(android.renderscript.Element);
- method public deprecated boolean isComplex();
+ method public static android.renderscript.Element MATRIX_2X2(android.renderscript.RenderScript);
+ method public static android.renderscript.Element MATRIX_3X3(android.renderscript.RenderScript);
+ method public static android.renderscript.Element MATRIX_4X4(android.renderscript.RenderScript);
+ method public static android.renderscript.Element MESH(android.renderscript.RenderScript);
+ method public static android.renderscript.Element PROGRAM_FRAGMENT(android.renderscript.RenderScript);
+ method public static android.renderscript.Element PROGRAM_RASTER(android.renderscript.RenderScript);
+ method public static android.renderscript.Element PROGRAM_STORE(android.renderscript.RenderScript);
+ method public static android.renderscript.Element PROGRAM_VERTEX(android.renderscript.RenderScript);
+ method public static android.renderscript.Element RGBA_4444(android.renderscript.RenderScript);
+ method public static android.renderscript.Element RGBA_5551(android.renderscript.RenderScript);
+ method public static android.renderscript.Element RGBA_8888(android.renderscript.RenderScript);
+ method public static android.renderscript.Element RGB_565(android.renderscript.RenderScript);
+ method public static android.renderscript.Element RGB_888(android.renderscript.RenderScript);
+ method public static android.renderscript.Element SAMPLER(android.renderscript.RenderScript);
+ method public static android.renderscript.Element SCRIPT(android.renderscript.RenderScript);
+ method public static android.renderscript.Element TYPE(android.renderscript.RenderScript);
+ method public static android.renderscript.Element U16(android.renderscript.RenderScript);
+ method public static android.renderscript.Element U16_2(android.renderscript.RenderScript);
+ method public static android.renderscript.Element U16_3(android.renderscript.RenderScript);
+ method public static android.renderscript.Element U16_4(android.renderscript.RenderScript);
+ method public static android.renderscript.Element U32(android.renderscript.RenderScript);
+ method public static android.renderscript.Element U32_2(android.renderscript.RenderScript);
+ method public static android.renderscript.Element U32_3(android.renderscript.RenderScript);
+ method public static android.renderscript.Element U32_4(android.renderscript.RenderScript);
+ method public static android.renderscript.Element U64(android.renderscript.RenderScript);
+ method public static android.renderscript.Element U64_2(android.renderscript.RenderScript);
+ method public static android.renderscript.Element U64_3(android.renderscript.RenderScript);
+ method public static android.renderscript.Element U64_4(android.renderscript.RenderScript);
+ method public static android.renderscript.Element U8(android.renderscript.RenderScript);
+ method public static android.renderscript.Element U8_2(android.renderscript.RenderScript);
+ method public static android.renderscript.Element U8_3(android.renderscript.RenderScript);
+ method public static android.renderscript.Element U8_4(android.renderscript.RenderScript);
+ method public static android.renderscript.Element createPixel(android.renderscript.RenderScript, android.renderscript.Element.DataType, android.renderscript.Element.DataKind);
+ method public static android.renderscript.Element createVector(android.renderscript.RenderScript, android.renderscript.Element.DataType, int);
+ method public int getBytesSize();
+ method public android.renderscript.Element.DataKind getDataKind();
+ method public android.renderscript.Element.DataType getDataType();
+ method public android.renderscript.Element getSubElement(int);
+ method public int getSubElementArraySize(int);
+ method public int getSubElementCount();
+ method public java.lang.String getSubElementName(int);
+ method public int getSubElementOffsetBytes(int);
+ method public int getVectorSize();
+ method public boolean isCompatible(android.renderscript.Element);
+ method public boolean isComplex();
}
- public static deprecated class Element.Builder {
- ctor public deprecated Element.Builder(android.renderscript.RenderScript);
- method public deprecated android.renderscript.Element.Builder add(android.renderscript.Element, java.lang.String, int);
- method public deprecated android.renderscript.Element.Builder add(android.renderscript.Element, java.lang.String);
- method public deprecated android.renderscript.Element create();
+ public static class Element.Builder {
+ ctor public Element.Builder(android.renderscript.RenderScript);
+ method public android.renderscript.Element.Builder add(android.renderscript.Element, java.lang.String, int);
+ method public android.renderscript.Element.Builder add(android.renderscript.Element, java.lang.String);
+ method public android.renderscript.Element create();
}
- public static final deprecated class Element.DataKind extends java.lang.Enum {
+ public static final class Element.DataKind extends java.lang.Enum {
method public static android.renderscript.Element.DataKind valueOf(java.lang.String);
method public static final android.renderscript.Element.DataKind[] values();
enum_constant public static final android.renderscript.Element.DataKind PIXEL_A;
@@ -18594,7 +18807,7 @@
enum_constant public static final android.renderscript.Element.DataKind USER;
}
- public static final deprecated class Element.DataType extends java.lang.Enum {
+ public static final class Element.DataType extends java.lang.Enum {
method public static android.renderscript.Element.DataType valueOf(java.lang.String);
method public static final android.renderscript.Element.DataType[] values();
enum_constant public static final android.renderscript.Element.DataType BOOLEAN;
@@ -18603,8 +18816,10 @@
enum_constant public static final android.renderscript.Element.DataType MATRIX_2X2;
enum_constant public static final android.renderscript.Element.DataType MATRIX_3X3;
enum_constant public static final android.renderscript.Element.DataType MATRIX_4X4;
+ enum_constant public static final android.renderscript.Element.DataType NONE;
enum_constant public static final android.renderscript.Element.DataType RS_ALLOCATION;
enum_constant public static final android.renderscript.Element.DataType RS_ELEMENT;
+ enum_constant public static final android.renderscript.Element.DataType RS_FONT;
enum_constant public static final android.renderscript.Element.DataType RS_MESH;
enum_constant public static final android.renderscript.Element.DataType RS_PROGRAM_FRAGMENT;
enum_constant public static final android.renderscript.Element.DataType RS_PROGRAM_RASTER;
@@ -18626,7 +18841,7 @@
enum_constant public static final android.renderscript.Element.DataType UNSIGNED_8;
}
- public deprecated class FieldPacker {
+ public class FieldPacker {
ctor public FieldPacker(int);
method public void addBoolean(boolean);
method public void addF32(float);
@@ -18703,14 +18918,14 @@
method public deprecated android.renderscript.BaseObj getObject();
}
- public deprecated class Float2 {
+ public class Float2 {
ctor public Float2();
ctor public Float2(float, float);
field public float x;
field public float y;
}
- public deprecated class Float3 {
+ public class Float3 {
ctor public Float3();
ctor public Float3(float, float, float);
field public float x;
@@ -18718,7 +18933,7 @@
field public float z;
}
- public deprecated class Float4 {
+ public class Float4 {
ctor public Float4();
ctor public Float4(float, float, float, float);
field public float w;
@@ -18744,14 +18959,14 @@
enum_constant public static final deprecated android.renderscript.Font.Style NORMAL;
}
- public deprecated class Int2 {
+ public class Int2 {
ctor public Int2();
ctor public Int2(int, int);
field public int x;
field public int y;
}
- public deprecated class Int3 {
+ public class Int3 {
ctor public Int3();
ctor public Int3(int, int, int);
field public int x;
@@ -18759,7 +18974,7 @@
field public int z;
}
- public deprecated class Int4 {
+ public class Int4 {
ctor public Int4();
ctor public Int4(int, int, int, int);
field public int w;
@@ -18768,14 +18983,14 @@
field public int z;
}
- public deprecated class Long2 {
+ public class Long2 {
ctor public Long2();
ctor public Long2(long, long);
field public long x;
field public long y;
}
- public deprecated class Long3 {
+ public class Long3 {
ctor public Long3();
ctor public Long3(long, long, long);
field public long x;
@@ -18783,7 +18998,7 @@
field public long z;
}
- public deprecated class Long4 {
+ public class Long4 {
ctor public Long4();
ctor public Long4(long, long, long, long);
field public long w;
@@ -18792,78 +19007,78 @@
field public long z;
}
- public deprecated class Matrix2f {
- ctor public deprecated Matrix2f();
- ctor public deprecated Matrix2f(float[]);
- method public deprecated float get(int, int);
- method public deprecated float[] getArray();
- method public deprecated void load(android.renderscript.Matrix2f);
- method public deprecated void loadIdentity();
- method public deprecated void loadMultiply(android.renderscript.Matrix2f, android.renderscript.Matrix2f);
- method public deprecated void loadRotate(float);
- method public deprecated void loadScale(float, float);
- method public deprecated void multiply(android.renderscript.Matrix2f);
- method public deprecated void rotate(float);
- method public deprecated void scale(float, float);
- method public deprecated void set(int, int, float);
- method public deprecated void transpose();
+ public class Matrix2f {
+ ctor public Matrix2f();
+ ctor public Matrix2f(float[]);
+ method public float get(int, int);
+ method public float[] getArray();
+ method public void load(android.renderscript.Matrix2f);
+ method public void loadIdentity();
+ method public void loadMultiply(android.renderscript.Matrix2f, android.renderscript.Matrix2f);
+ method public void loadRotate(float);
+ method public void loadScale(float, float);
+ method public void multiply(android.renderscript.Matrix2f);
+ method public void rotate(float);
+ method public void scale(float, float);
+ method public void set(int, int, float);
+ method public void transpose();
}
- public deprecated class Matrix3f {
- ctor public deprecated Matrix3f();
- ctor public deprecated Matrix3f(float[]);
- method public deprecated float get(int, int);
- method public deprecated float[] getArray();
- method public deprecated void load(android.renderscript.Matrix3f);
- method public deprecated void loadIdentity();
- method public deprecated void loadMultiply(android.renderscript.Matrix3f, android.renderscript.Matrix3f);
- method public deprecated void loadRotate(float, float, float, float);
- method public deprecated void loadRotate(float);
- method public deprecated void loadScale(float, float);
- method public deprecated void loadScale(float, float, float);
- method public deprecated void loadTranslate(float, float);
- method public deprecated void multiply(android.renderscript.Matrix3f);
- method public deprecated void rotate(float, float, float, float);
- method public deprecated void rotate(float);
- method public deprecated void scale(float, float);
- method public deprecated void scale(float, float, float);
- method public deprecated void set(int, int, float);
- method public deprecated void translate(float, float);
- method public deprecated void transpose();
+ public class Matrix3f {
+ ctor public Matrix3f();
+ ctor public Matrix3f(float[]);
+ method public float get(int, int);
+ method public float[] getArray();
+ method public void load(android.renderscript.Matrix3f);
+ method public void loadIdentity();
+ method public void loadMultiply(android.renderscript.Matrix3f, android.renderscript.Matrix3f);
+ method public void loadRotate(float, float, float, float);
+ method public void loadRotate(float);
+ method public void loadScale(float, float);
+ method public void loadScale(float, float, float);
+ method public void loadTranslate(float, float);
+ method public void multiply(android.renderscript.Matrix3f);
+ method public void rotate(float, float, float, float);
+ method public void rotate(float);
+ method public void scale(float, float);
+ method public void scale(float, float, float);
+ method public void set(int, int, float);
+ method public void translate(float, float);
+ method public void transpose();
}
- public deprecated class Matrix4f {
- ctor public deprecated Matrix4f();
- ctor public deprecated Matrix4f(float[]);
- method public deprecated float get(int, int);
- method public deprecated float[] getArray();
- method public deprecated boolean inverse();
- method public deprecated boolean inverseTranspose();
- method public deprecated void load(android.renderscript.Matrix4f);
- method public deprecated void loadFrustum(float, float, float, float, float, float);
- method public deprecated void loadIdentity();
- method public deprecated void loadMultiply(android.renderscript.Matrix4f, android.renderscript.Matrix4f);
- method public deprecated void loadOrtho(float, float, float, float, float, float);
- method public deprecated void loadOrthoWindow(int, int);
- method public deprecated void loadPerspective(float, float, float, float);
- method public deprecated void loadProjectionNormalized(int, int);
- method public deprecated void loadRotate(float, float, float, float);
- method public deprecated void loadScale(float, float, float);
- method public deprecated void loadTranslate(float, float, float);
- method public deprecated void multiply(android.renderscript.Matrix4f);
- method public deprecated void rotate(float, float, float, float);
- method public deprecated void scale(float, float, float);
- method public deprecated void set(int, int, float);
- method public deprecated void translate(float, float, float);
- method public deprecated void transpose();
+ public class Matrix4f {
+ ctor public Matrix4f();
+ ctor public Matrix4f(float[]);
+ method public float get(int, int);
+ method public float[] getArray();
+ method public boolean inverse();
+ method public boolean inverseTranspose();
+ method public void load(android.renderscript.Matrix4f);
+ method public void loadFrustum(float, float, float, float, float, float);
+ method public void loadIdentity();
+ method public void loadMultiply(android.renderscript.Matrix4f, android.renderscript.Matrix4f);
+ method public void loadOrtho(float, float, float, float, float, float);
+ method public void loadOrthoWindow(int, int);
+ method public void loadPerspective(float, float, float, float);
+ method public void loadProjectionNormalized(int, int);
+ method public void loadRotate(float, float, float, float);
+ method public void loadScale(float, float, float);
+ method public void loadTranslate(float, float, float);
+ method public void multiply(android.renderscript.Matrix4f);
+ method public void rotate(float, float, float, float);
+ method public void scale(float, float, float);
+ method public void set(int, int, float);
+ method public void translate(float, float, float);
+ method public void transpose();
}
- public deprecated class Mesh extends android.renderscript.BaseObj {
- method public deprecated android.renderscript.Allocation getIndexSetAllocation(int);
- method public deprecated android.renderscript.Mesh.Primitive getPrimitive(int);
- method public deprecated int getPrimitiveCount();
- method public deprecated android.renderscript.Allocation getVertexAllocation(int);
- method public deprecated int getVertexAllocationCount();
+ public class Mesh extends android.renderscript.BaseObj {
+ method public android.renderscript.Allocation getIndexSetAllocation(int);
+ method public android.renderscript.Mesh.Primitive getPrimitive(int);
+ method public int getPrimitiveCount();
+ method public android.renderscript.Allocation getVertexAllocation(int);
+ method public int getVertexAllocationCount();
}
public static deprecated class Mesh.AllocationBuilder {
@@ -18876,27 +19091,27 @@
method public deprecated int getCurrentVertexTypeIndex();
}
- public static deprecated class Mesh.Builder {
- ctor public deprecated Mesh.Builder(android.renderscript.RenderScript, int);
- method public deprecated android.renderscript.Mesh.Builder addIndexSetType(android.renderscript.Type, android.renderscript.Mesh.Primitive);
- method public deprecated android.renderscript.Mesh.Builder addIndexSetType(android.renderscript.Mesh.Primitive);
- method public deprecated android.renderscript.Mesh.Builder addIndexSetType(android.renderscript.Element, int, android.renderscript.Mesh.Primitive);
- method public deprecated android.renderscript.Mesh.Builder addVertexType(android.renderscript.Type) throws java.lang.IllegalStateException;
- method public deprecated android.renderscript.Mesh.Builder addVertexType(android.renderscript.Element, int) throws java.lang.IllegalStateException;
- method public deprecated android.renderscript.Mesh create();
- method public deprecated int getCurrentIndexSetIndex();
- method public deprecated int getCurrentVertexTypeIndex();
+ public static class Mesh.Builder {
+ ctor public Mesh.Builder(android.renderscript.RenderScript, int);
+ method public android.renderscript.Mesh.Builder addIndexSetType(android.renderscript.Type, android.renderscript.Mesh.Primitive);
+ method public android.renderscript.Mesh.Builder addIndexSetType(android.renderscript.Mesh.Primitive);
+ method public android.renderscript.Mesh.Builder addIndexSetType(android.renderscript.Element, int, android.renderscript.Mesh.Primitive);
+ method public android.renderscript.Mesh.Builder addVertexType(android.renderscript.Type) throws java.lang.IllegalStateException;
+ method public android.renderscript.Mesh.Builder addVertexType(android.renderscript.Element, int) throws java.lang.IllegalStateException;
+ method public android.renderscript.Mesh create();
+ method public int getCurrentIndexSetIndex();
+ method public int getCurrentVertexTypeIndex();
}
- public static final deprecated class Mesh.Primitive extends java.lang.Enum {
+ public static final class Mesh.Primitive extends java.lang.Enum {
method public static android.renderscript.Mesh.Primitive valueOf(java.lang.String);
method public static final android.renderscript.Mesh.Primitive[] values();
- enum_constant public static final deprecated android.renderscript.Mesh.Primitive LINE;
- enum_constant public static final deprecated android.renderscript.Mesh.Primitive LINE_STRIP;
- enum_constant public static final deprecated android.renderscript.Mesh.Primitive POINT;
- enum_constant public static final deprecated android.renderscript.Mesh.Primitive TRIANGLE;
- enum_constant public static final deprecated android.renderscript.Mesh.Primitive TRIANGLE_FAN;
- enum_constant public static final deprecated android.renderscript.Mesh.Primitive TRIANGLE_STRIP;
+ enum_constant public static final android.renderscript.Mesh.Primitive LINE;
+ enum_constant public static final android.renderscript.Mesh.Primitive LINE_STRIP;
+ enum_constant public static final android.renderscript.Mesh.Primitive POINT;
+ enum_constant public static final android.renderscript.Mesh.Primitive TRIANGLE;
+ enum_constant public static final android.renderscript.Mesh.Primitive TRIANGLE_FAN;
+ enum_constant public static final android.renderscript.Mesh.Primitive TRIANGLE_STRIP;
}
public static deprecated class Mesh.TriangleMeshBuilder {
@@ -18913,42 +19128,48 @@
field public static final deprecated int TEXTURE_0 = 256; // 0x100
}
- public deprecated class Program extends android.renderscript.BaseObj {
- method public deprecated void bindConstants(android.renderscript.Allocation, int);
- method public deprecated void bindSampler(android.renderscript.Sampler, int) throws java.lang.IllegalArgumentException;
- method public deprecated void bindTexture(android.renderscript.Allocation, int) throws java.lang.IllegalArgumentException;
+ public class Program extends android.renderscript.BaseObj {
+ method public void bindConstants(android.renderscript.Allocation, int);
+ method public void bindSampler(android.renderscript.Sampler, int) throws java.lang.IllegalArgumentException;
+ method public void bindTexture(android.renderscript.Allocation, int) throws java.lang.IllegalArgumentException;
+ method public android.renderscript.Type getConstant(int);
+ method public int getConstantCount();
+ method public int getTextureCount();
+ method public java.lang.String getTextureName(int);
+ method public android.renderscript.Program.TextureType getTextureType(int);
}
public static class Program.BaseProgramBuilder {
- ctor protected deprecated Program.BaseProgramBuilder(android.renderscript.RenderScript);
- method public deprecated android.renderscript.Program.BaseProgramBuilder addConstant(android.renderscript.Type) throws java.lang.IllegalStateException;
- method public deprecated android.renderscript.Program.BaseProgramBuilder addTexture(android.renderscript.Program.TextureType) throws java.lang.IllegalArgumentException;
- method public deprecated int getCurrentConstantIndex();
- method public deprecated int getCurrentTextureIndex();
- method protected deprecated void initProgram(android.renderscript.Program);
- method public deprecated android.renderscript.Program.BaseProgramBuilder setShader(java.lang.String);
- method public deprecated android.renderscript.Program.BaseProgramBuilder setShader(android.content.res.Resources, int);
+ ctor protected Program.BaseProgramBuilder(android.renderscript.RenderScript);
+ method public android.renderscript.Program.BaseProgramBuilder addConstant(android.renderscript.Type) throws java.lang.IllegalStateException;
+ method public android.renderscript.Program.BaseProgramBuilder addTexture(android.renderscript.Program.TextureType) throws java.lang.IllegalArgumentException;
+ method public android.renderscript.Program.BaseProgramBuilder addTexture(android.renderscript.Program.TextureType, java.lang.String) throws java.lang.IllegalArgumentException;
+ method public int getCurrentConstantIndex();
+ method public int getCurrentTextureIndex();
+ method protected void initProgram(android.renderscript.Program);
+ method public android.renderscript.Program.BaseProgramBuilder setShader(java.lang.String);
+ method public android.renderscript.Program.BaseProgramBuilder setShader(android.content.res.Resources, int);
}
- public static final deprecated class Program.TextureType extends java.lang.Enum {
+ public static final class Program.TextureType extends java.lang.Enum {
method public static android.renderscript.Program.TextureType valueOf(java.lang.String);
method public static final android.renderscript.Program.TextureType[] values();
- enum_constant public static final deprecated android.renderscript.Program.TextureType TEXTURE_2D;
- enum_constant public static final deprecated android.renderscript.Program.TextureType TEXTURE_CUBE;
+ enum_constant public static final android.renderscript.Program.TextureType TEXTURE_2D;
+ enum_constant public static final android.renderscript.Program.TextureType TEXTURE_CUBE;
}
- public deprecated class ProgramFragment extends android.renderscript.Program {
+ public class ProgramFragment extends android.renderscript.Program {
}
public static class ProgramFragment.Builder extends android.renderscript.Program.BaseProgramBuilder {
- ctor public deprecated ProgramFragment.Builder(android.renderscript.RenderScript);
- method public deprecated android.renderscript.ProgramFragment create();
+ ctor public ProgramFragment.Builder(android.renderscript.RenderScript);
+ method public android.renderscript.ProgramFragment create();
}
public deprecated class ProgramFragmentFixedFunction extends android.renderscript.ProgramFragment {
}
- public static class ProgramFragmentFixedFunction.Builder {
+ public static deprecated class ProgramFragmentFixedFunction.Builder {
ctor public deprecated ProgramFragmentFixedFunction.Builder(android.renderscript.RenderScript);
method public deprecated android.renderscript.ProgramFragmentFixedFunction create();
method public deprecated android.renderscript.ProgramFragmentFixedFunction.Builder setPointSpriteTexCoordinateReplacement(boolean);
@@ -18974,97 +19195,110 @@
enum_constant public static final deprecated android.renderscript.ProgramFragmentFixedFunction.Builder.Format RGBA;
}
- public deprecated class ProgramRaster extends android.renderscript.BaseObj {
- method public static deprecated android.renderscript.ProgramRaster CULL_BACK(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.ProgramRaster CULL_FRONT(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.ProgramRaster CULL_NONE(android.renderscript.RenderScript);
+ public class ProgramRaster extends android.renderscript.BaseObj {
+ method public static android.renderscript.ProgramRaster CULL_BACK(android.renderscript.RenderScript);
+ method public static android.renderscript.ProgramRaster CULL_FRONT(android.renderscript.RenderScript);
+ method public static android.renderscript.ProgramRaster CULL_NONE(android.renderscript.RenderScript);
+ method public android.renderscript.ProgramRaster.CullMode getCullMode();
+ method public boolean isPointSpriteEnabled();
}
- public static deprecated class ProgramRaster.Builder {
- ctor public deprecated ProgramRaster.Builder(android.renderscript.RenderScript);
- method public deprecated android.renderscript.ProgramRaster create();
- method public deprecated android.renderscript.ProgramRaster.Builder setCullMode(android.renderscript.ProgramRaster.CullMode);
- method public deprecated android.renderscript.ProgramRaster.Builder setPointSpriteEnabled(boolean);
+ public static class ProgramRaster.Builder {
+ ctor public ProgramRaster.Builder(android.renderscript.RenderScript);
+ method public android.renderscript.ProgramRaster create();
+ method public android.renderscript.ProgramRaster.Builder setCullMode(android.renderscript.ProgramRaster.CullMode);
+ method public android.renderscript.ProgramRaster.Builder setPointSpriteEnabled(boolean);
}
- public static final deprecated class ProgramRaster.CullMode extends java.lang.Enum {
+ public static final class ProgramRaster.CullMode extends java.lang.Enum {
method public static android.renderscript.ProgramRaster.CullMode valueOf(java.lang.String);
method public static final android.renderscript.ProgramRaster.CullMode[] values();
- enum_constant public static final deprecated android.renderscript.ProgramRaster.CullMode BACK;
- enum_constant public static final deprecated android.renderscript.ProgramRaster.CullMode FRONT;
- enum_constant public static final deprecated android.renderscript.ProgramRaster.CullMode NONE;
+ enum_constant public static final android.renderscript.ProgramRaster.CullMode BACK;
+ enum_constant public static final android.renderscript.ProgramRaster.CullMode FRONT;
+ enum_constant public static final android.renderscript.ProgramRaster.CullMode NONE;
}
- public deprecated class ProgramStore extends android.renderscript.BaseObj {
- method public static deprecated android.renderscript.ProgramStore BLEND_ALPHA_DEPTH_NONE(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.ProgramStore BLEND_ALPHA_DEPTH_TEST(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.ProgramStore BLEND_NONE_DEPTH_NONE(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.ProgramStore BLEND_NONE_DEPTH_TEST(android.renderscript.RenderScript);
+ public class ProgramStore extends android.renderscript.BaseObj {
+ method public static android.renderscript.ProgramStore BLEND_ALPHA_DEPTH_NONE(android.renderscript.RenderScript);
+ method public static android.renderscript.ProgramStore BLEND_ALPHA_DEPTH_TEST(android.renderscript.RenderScript);
+ method public static android.renderscript.ProgramStore BLEND_NONE_DEPTH_NONE(android.renderscript.RenderScript);
+ method public static android.renderscript.ProgramStore BLEND_NONE_DEPTH_TEST(android.renderscript.RenderScript);
+ method public android.renderscript.ProgramStore.BlendDstFunc getBlendDstFunc();
+ method public android.renderscript.ProgramStore.BlendSrcFunc getBlendSrcFunc();
+ method public android.renderscript.ProgramStore.DepthFunc getDepthFunc();
+ method public boolean isColorMaskAlphaEnabled();
+ method public boolean isColorMaskBlueEnabled();
+ method public boolean isColorMaskGreenEnabled();
+ method public boolean isColorMaskRedEnabled();
+ method public boolean isDepthMaskEnabled();
+ method public boolean isDitherEnabled();
}
- public static final deprecated class ProgramStore.BlendDstFunc extends java.lang.Enum {
+ public static final class ProgramStore.BlendDstFunc extends java.lang.Enum {
method public static android.renderscript.ProgramStore.BlendDstFunc valueOf(java.lang.String);
method public static final android.renderscript.ProgramStore.BlendDstFunc[] values();
- enum_constant public static final deprecated android.renderscript.ProgramStore.BlendDstFunc DST_ALPHA;
- enum_constant public static final deprecated android.renderscript.ProgramStore.BlendDstFunc ONE;
- enum_constant public static final deprecated android.renderscript.ProgramStore.BlendDstFunc ONE_MINUS_DST_ALPHA;
- enum_constant public static final deprecated android.renderscript.ProgramStore.BlendDstFunc ONE_MINUS_SRC_ALPHA;
- enum_constant public static final deprecated android.renderscript.ProgramStore.BlendDstFunc ONE_MINUS_SRC_COLOR;
- enum_constant public static final deprecated android.renderscript.ProgramStore.BlendDstFunc SRC_ALPHA;
- enum_constant public static final deprecated android.renderscript.ProgramStore.BlendDstFunc SRC_COLOR;
- enum_constant public static final deprecated android.renderscript.ProgramStore.BlendDstFunc ZERO;
+ enum_constant public static final android.renderscript.ProgramStore.BlendDstFunc DST_ALPHA;
+ enum_constant public static final android.renderscript.ProgramStore.BlendDstFunc ONE;
+ enum_constant public static final android.renderscript.ProgramStore.BlendDstFunc ONE_MINUS_DST_ALPHA;
+ enum_constant public static final android.renderscript.ProgramStore.BlendDstFunc ONE_MINUS_SRC_ALPHA;
+ enum_constant public static final android.renderscript.ProgramStore.BlendDstFunc ONE_MINUS_SRC_COLOR;
+ enum_constant public static final android.renderscript.ProgramStore.BlendDstFunc SRC_ALPHA;
+ enum_constant public static final android.renderscript.ProgramStore.BlendDstFunc SRC_COLOR;
+ enum_constant public static final android.renderscript.ProgramStore.BlendDstFunc ZERO;
}
- public static final deprecated class ProgramStore.BlendSrcFunc extends java.lang.Enum {
+ public static final class ProgramStore.BlendSrcFunc extends java.lang.Enum {
method public static android.renderscript.ProgramStore.BlendSrcFunc valueOf(java.lang.String);
method public static final android.renderscript.ProgramStore.BlendSrcFunc[] values();
- enum_constant public static final deprecated android.renderscript.ProgramStore.BlendSrcFunc DST_ALPHA;
- enum_constant public static final deprecated android.renderscript.ProgramStore.BlendSrcFunc DST_COLOR;
- enum_constant public static final deprecated android.renderscript.ProgramStore.BlendSrcFunc ONE;
- enum_constant public static final deprecated android.renderscript.ProgramStore.BlendSrcFunc ONE_MINUS_DST_ALPHA;
- enum_constant public static final deprecated android.renderscript.ProgramStore.BlendSrcFunc ONE_MINUS_DST_COLOR;
- enum_constant public static final deprecated android.renderscript.ProgramStore.BlendSrcFunc ONE_MINUS_SRC_ALPHA;
- enum_constant public static final deprecated android.renderscript.ProgramStore.BlendSrcFunc SRC_ALPHA;
- enum_constant public static final deprecated android.renderscript.ProgramStore.BlendSrcFunc SRC_ALPHA_SATURATE;
- enum_constant public static final deprecated android.renderscript.ProgramStore.BlendSrcFunc ZERO;
+ enum_constant public static final android.renderscript.ProgramStore.BlendSrcFunc DST_ALPHA;
+ enum_constant public static final android.renderscript.ProgramStore.BlendSrcFunc DST_COLOR;
+ enum_constant public static final android.renderscript.ProgramStore.BlendSrcFunc ONE;
+ enum_constant public static final android.renderscript.ProgramStore.BlendSrcFunc ONE_MINUS_DST_ALPHA;
+ enum_constant public static final android.renderscript.ProgramStore.BlendSrcFunc ONE_MINUS_DST_COLOR;
+ enum_constant public static final android.renderscript.ProgramStore.BlendSrcFunc ONE_MINUS_SRC_ALPHA;
+ enum_constant public static final android.renderscript.ProgramStore.BlendSrcFunc SRC_ALPHA;
+ enum_constant public static final android.renderscript.ProgramStore.BlendSrcFunc SRC_ALPHA_SATURATE;
+ enum_constant public static final android.renderscript.ProgramStore.BlendSrcFunc ZERO;
}
- public static deprecated class ProgramStore.Builder {
+ public static class ProgramStore.Builder {
ctor public ProgramStore.Builder(android.renderscript.RenderScript);
- method public deprecated android.renderscript.ProgramStore create();
- method public deprecated android.renderscript.ProgramStore.Builder setBlendFunc(android.renderscript.ProgramStore.BlendSrcFunc, android.renderscript.ProgramStore.BlendDstFunc);
- method public deprecated android.renderscript.ProgramStore.Builder setColorMaskEnabled(boolean, boolean, boolean, boolean);
- method public deprecated android.renderscript.ProgramStore.Builder setDepthFunc(android.renderscript.ProgramStore.DepthFunc);
- method public deprecated android.renderscript.ProgramStore.Builder setDepthMaskEnabled(boolean);
- method public deprecated android.renderscript.ProgramStore.Builder setDitherEnabled(boolean);
+ method public android.renderscript.ProgramStore create();
+ method public android.renderscript.ProgramStore.Builder setBlendFunc(android.renderscript.ProgramStore.BlendSrcFunc, android.renderscript.ProgramStore.BlendDstFunc);
+ method public android.renderscript.ProgramStore.Builder setColorMaskEnabled(boolean, boolean, boolean, boolean);
+ method public android.renderscript.ProgramStore.Builder setDepthFunc(android.renderscript.ProgramStore.DepthFunc);
+ method public android.renderscript.ProgramStore.Builder setDepthMaskEnabled(boolean);
+ method public android.renderscript.ProgramStore.Builder setDitherEnabled(boolean);
}
- public static final deprecated class ProgramStore.DepthFunc extends java.lang.Enum {
+ public static final class ProgramStore.DepthFunc extends java.lang.Enum {
method public static android.renderscript.ProgramStore.DepthFunc valueOf(java.lang.String);
method public static final android.renderscript.ProgramStore.DepthFunc[] values();
- enum_constant public static final deprecated android.renderscript.ProgramStore.DepthFunc ALWAYS;
- enum_constant public static final deprecated android.renderscript.ProgramStore.DepthFunc EQUAL;
- enum_constant public static final deprecated android.renderscript.ProgramStore.DepthFunc GREATER;
- enum_constant public static final deprecated android.renderscript.ProgramStore.DepthFunc GREATER_OR_EQUAL;
- enum_constant public static final deprecated android.renderscript.ProgramStore.DepthFunc LESS;
- enum_constant public static final deprecated android.renderscript.ProgramStore.DepthFunc LESS_OR_EQUAL;
- enum_constant public static final deprecated android.renderscript.ProgramStore.DepthFunc NOT_EQUAL;
+ enum_constant public static final android.renderscript.ProgramStore.DepthFunc ALWAYS;
+ enum_constant public static final android.renderscript.ProgramStore.DepthFunc EQUAL;
+ enum_constant public static final android.renderscript.ProgramStore.DepthFunc GREATER;
+ enum_constant public static final android.renderscript.ProgramStore.DepthFunc GREATER_OR_EQUAL;
+ enum_constant public static final android.renderscript.ProgramStore.DepthFunc LESS;
+ enum_constant public static final android.renderscript.ProgramStore.DepthFunc LESS_OR_EQUAL;
+ enum_constant public static final android.renderscript.ProgramStore.DepthFunc NOT_EQUAL;
}
- public deprecated class ProgramVertex extends android.renderscript.Program {
+ public class ProgramVertex extends android.renderscript.Program {
+ method public android.renderscript.Element getInput(int);
+ method public int getInputCount();
}
- public static deprecated class ProgramVertex.Builder extends android.renderscript.Program.BaseProgramBuilder {
- ctor public deprecated ProgramVertex.Builder(android.renderscript.RenderScript);
- method public deprecated android.renderscript.ProgramVertex.Builder addInput(android.renderscript.Element) throws java.lang.IllegalStateException;
- method public deprecated android.renderscript.ProgramVertex create();
+ public static class ProgramVertex.Builder extends android.renderscript.Program.BaseProgramBuilder {
+ ctor public ProgramVertex.Builder(android.renderscript.RenderScript);
+ method public android.renderscript.ProgramVertex.Builder addInput(android.renderscript.Element) throws java.lang.IllegalStateException;
+ method public android.renderscript.ProgramVertex create();
}
public deprecated class ProgramVertexFixedFunction extends android.renderscript.ProgramVertex {
method public deprecated void bindConstants(android.renderscript.ProgramVertexFixedFunction.Constants);
}
- public static class ProgramVertexFixedFunction.Builder {
+ public static deprecated class ProgramVertexFixedFunction.Builder {
ctor public deprecated ProgramVertexFixedFunction.Builder(android.renderscript.RenderScript);
method public deprecated android.renderscript.ProgramVertexFixedFunction create();
method public deprecated android.renderscript.ProgramVertexFixedFunction.Builder setTextureMatrixEnable(boolean);
@@ -19078,79 +19312,79 @@
method public deprecated void setTexture(android.renderscript.Matrix4f);
}
- public deprecated class RSDriverException extends android.renderscript.RSRuntimeException {
+ public class RSDriverException extends android.renderscript.RSRuntimeException {
ctor public RSDriverException(java.lang.String);
}
- public deprecated class RSIllegalArgumentException extends android.renderscript.RSRuntimeException {
- ctor public deprecated RSIllegalArgumentException(java.lang.String);
+ public class RSIllegalArgumentException extends android.renderscript.RSRuntimeException {
+ ctor public RSIllegalArgumentException(java.lang.String);
}
- public deprecated class RSInvalidStateException extends android.renderscript.RSRuntimeException {
- ctor public deprecated RSInvalidStateException(java.lang.String);
+ public class RSInvalidStateException extends android.renderscript.RSRuntimeException {
+ ctor public RSInvalidStateException(java.lang.String);
}
- public deprecated class RSRuntimeException extends java.lang.RuntimeException {
- ctor public deprecated RSRuntimeException(java.lang.String);
+ public class RSRuntimeException extends java.lang.RuntimeException {
+ ctor public RSRuntimeException(java.lang.String);
}
public deprecated class RSSurfaceView extends android.view.SurfaceView implements android.view.SurfaceHolder.Callback {
ctor public deprecated RSSurfaceView(android.content.Context);
ctor public deprecated RSSurfaceView(android.content.Context, android.util.AttributeSet);
- method public android.renderscript.RenderScriptGL createRenderScriptGL(android.renderscript.RenderScriptGL.SurfaceConfig);
- method public void destroyRenderScriptGL();
- method public android.renderscript.RenderScriptGL getRenderScriptGL();
+ method public deprecated android.renderscript.RenderScriptGL createRenderScriptGL(android.renderscript.RenderScriptGL.SurfaceConfig);
+ method public deprecated void destroyRenderScriptGL();
+ method public deprecated android.renderscript.RenderScriptGL getRenderScriptGL();
method public deprecated void pause();
method public deprecated void resume();
- method public void setRenderScriptGL(android.renderscript.RenderScriptGL);
+ method public deprecated void setRenderScriptGL(android.renderscript.RenderScriptGL);
method public deprecated void surfaceChanged(android.view.SurfaceHolder, int, int, int);
method public deprecated void surfaceCreated(android.view.SurfaceHolder);
method public deprecated void surfaceDestroyed(android.view.SurfaceHolder);
}
- public deprecated class RSTextureView extends android.view.TextureView implements android.view.TextureView.SurfaceTextureListener {
- ctor public deprecated RSTextureView(android.content.Context);
- ctor public deprecated RSTextureView(android.content.Context, android.util.AttributeSet);
- method public deprecated android.renderscript.RenderScriptGL createRenderScriptGL(android.renderscript.RenderScriptGL.SurfaceConfig);
- method public deprecated void destroyRenderScriptGL();
- method public deprecated android.renderscript.RenderScriptGL getRenderScriptGL();
+ public class RSTextureView extends android.view.TextureView implements android.view.TextureView.SurfaceTextureListener {
+ ctor public RSTextureView(android.content.Context);
+ ctor public RSTextureView(android.content.Context, android.util.AttributeSet);
+ method public android.renderscript.RenderScriptGL createRenderScriptGL(android.renderscript.RenderScriptGL.SurfaceConfig);
+ method public void destroyRenderScriptGL();
+ method public android.renderscript.RenderScriptGL getRenderScriptGL();
method public void onSurfaceTextureAvailable(android.graphics.SurfaceTexture, int, int);
method public boolean onSurfaceTextureDestroyed(android.graphics.SurfaceTexture);
method public void onSurfaceTextureSizeChanged(android.graphics.SurfaceTexture, int, int);
method public void onSurfaceTextureUpdated(android.graphics.SurfaceTexture);
- method public deprecated void pause();
- method public deprecated void resume();
- method public deprecated void setRenderScriptGL(android.renderscript.RenderScriptGL);
+ method public void pause();
+ method public void resume();
+ method public void setRenderScriptGL(android.renderscript.RenderScriptGL);
}
- public deprecated class RenderScript {
- method public deprecated void contextDump();
- method public static deprecated android.renderscript.RenderScript create(android.content.Context);
- method public deprecated void destroy();
- method public deprecated void finish();
- method public final deprecated android.content.Context getApplicationContext();
+ public class RenderScript {
+ method public void contextDump();
+ method public static android.renderscript.RenderScript create(android.content.Context);
+ method public void destroy();
+ method public void finish();
+ method public final android.content.Context getApplicationContext();
method public android.renderscript.RenderScript.RSErrorHandler getErrorHandler();
method public android.renderscript.RenderScript.RSMessageHandler getMessageHandler();
method public void setErrorHandler(android.renderscript.RenderScript.RSErrorHandler);
method public void setMessageHandler(android.renderscript.RenderScript.RSMessageHandler);
- method public deprecated void setPriority(android.renderscript.RenderScript.Priority);
+ method public void setPriority(android.renderscript.RenderScript.Priority);
}
- public static final deprecated class RenderScript.Priority extends java.lang.Enum {
+ public static final class RenderScript.Priority extends java.lang.Enum {
method public static android.renderscript.RenderScript.Priority valueOf(java.lang.String);
method public static final android.renderscript.RenderScript.Priority[] values();
enum_constant public static final android.renderscript.RenderScript.Priority LOW;
enum_constant public static final android.renderscript.RenderScript.Priority NORMAL;
}
- public static deprecated class RenderScript.RSErrorHandler implements java.lang.Runnable {
+ public static class RenderScript.RSErrorHandler implements java.lang.Runnable {
ctor public RenderScript.RSErrorHandler();
method public void run();
field protected java.lang.String mErrorMessage;
field protected int mErrorNum;
}
- public static deprecated class RenderScript.RSMessageHandler implements java.lang.Runnable {
+ public static class RenderScript.RSMessageHandler implements java.lang.Runnable {
ctor public RenderScript.RSMessageHandler();
method public void run();
field protected int[] mData;
@@ -19158,40 +19392,45 @@
field protected int mLength;
}
- public deprecated class RenderScriptGL extends android.renderscript.RenderScript {
- ctor public deprecated RenderScriptGL(android.content.Context, android.renderscript.RenderScriptGL.SurfaceConfig);
- method public deprecated void bindProgramFragment(android.renderscript.ProgramFragment);
- method public deprecated void bindProgramRaster(android.renderscript.ProgramRaster);
- method public deprecated void bindProgramStore(android.renderscript.ProgramStore);
- method public deprecated void bindProgramVertex(android.renderscript.ProgramVertex);
- method public deprecated void bindRootScript(android.renderscript.Script);
- method public deprecated int getHeight();
- method public deprecated int getWidth();
- method public deprecated void pause();
- method public deprecated void resume();
- method public deprecated void setSurface(android.view.SurfaceHolder, int, int);
+ public class RenderScriptGL extends android.renderscript.RenderScript {
+ ctor public RenderScriptGL(android.content.Context, android.renderscript.RenderScriptGL.SurfaceConfig);
+ method public void bindProgramFragment(android.renderscript.ProgramFragment);
+ method public void bindProgramRaster(android.renderscript.ProgramRaster);
+ method public void bindProgramStore(android.renderscript.ProgramStore);
+ method public void bindProgramVertex(android.renderscript.ProgramVertex);
+ method public void bindRootScript(android.renderscript.Script);
+ method public int getHeight();
+ method public int getWidth();
+ method public void pause();
+ method public void resume();
+ method public void setSurface(android.view.SurfaceHolder, int, int);
method public deprecated void setSurfaceTexture(android.graphics.SurfaceTexture, int, int);
}
- public static deprecated class RenderScriptGL.SurfaceConfig {
+ public static class RenderScriptGL.SurfaceConfig {
ctor public RenderScriptGL.SurfaceConfig();
ctor public RenderScriptGL.SurfaceConfig(android.renderscript.RenderScriptGL.SurfaceConfig);
- method public deprecated void setAlpha(int, int);
- method public deprecated void setColor(int, int);
- method public deprecated void setDepth(int, int);
- method public deprecated void setSamples(int, int, float);
+ method public void setAlpha(int, int);
+ method public void setColor(int, int);
+ method public void setDepth(int, int);
+ method public void setSamples(int, int, float);
}
- public deprecated class Sampler extends android.renderscript.BaseObj {
- method public static deprecated android.renderscript.Sampler CLAMP_LINEAR(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Sampler CLAMP_LINEAR_MIP_LINEAR(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Sampler CLAMP_NEAREST(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Sampler WRAP_LINEAR(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Sampler WRAP_LINEAR_MIP_LINEAR(android.renderscript.RenderScript);
- method public static deprecated android.renderscript.Sampler WRAP_NEAREST(android.renderscript.RenderScript);
+ public class Sampler extends android.renderscript.BaseObj {
+ method public static android.renderscript.Sampler CLAMP_LINEAR(android.renderscript.RenderScript);
+ method public static android.renderscript.Sampler CLAMP_LINEAR_MIP_LINEAR(android.renderscript.RenderScript);
+ method public static android.renderscript.Sampler CLAMP_NEAREST(android.renderscript.RenderScript);
+ method public static android.renderscript.Sampler WRAP_LINEAR(android.renderscript.RenderScript);
+ method public static android.renderscript.Sampler WRAP_LINEAR_MIP_LINEAR(android.renderscript.RenderScript);
+ method public static android.renderscript.Sampler WRAP_NEAREST(android.renderscript.RenderScript);
+ method public float getAnisotropy();
+ method public android.renderscript.Sampler.Value getMagnification();
+ method public android.renderscript.Sampler.Value getMinification();
+ method public android.renderscript.Sampler.Value getWrapS();
+ method public android.renderscript.Sampler.Value getWrapT();
}
- public static deprecated class Sampler.Builder {
+ public static class Sampler.Builder {
ctor public Sampler.Builder(android.renderscript.RenderScript);
method public android.renderscript.Sampler create();
method public void setAnisotropy(float);
@@ -19201,30 +19440,31 @@
method public void setWrapT(android.renderscript.Sampler.Value);
}
- public static final deprecated class Sampler.Value extends java.lang.Enum {
+ public static final class Sampler.Value extends java.lang.Enum {
method public static android.renderscript.Sampler.Value valueOf(java.lang.String);
method public static final android.renderscript.Sampler.Value[] values();
- enum_constant public static final deprecated android.renderscript.Sampler.Value CLAMP;
- enum_constant public static final deprecated android.renderscript.Sampler.Value LINEAR;
- enum_constant public static final deprecated android.renderscript.Sampler.Value LINEAR_MIP_LINEAR;
- enum_constant public static final deprecated android.renderscript.Sampler.Value LINEAR_MIP_NEAREST;
- enum_constant public static final deprecated android.renderscript.Sampler.Value NEAREST;
- enum_constant public static final deprecated android.renderscript.Sampler.Value WRAP;
+ enum_constant public static final android.renderscript.Sampler.Value CLAMP;
+ enum_constant public static final android.renderscript.Sampler.Value LINEAR;
+ enum_constant public static final android.renderscript.Sampler.Value LINEAR_MIP_LINEAR;
+ enum_constant public static final android.renderscript.Sampler.Value LINEAR_MIP_NEAREST;
+ enum_constant public static final android.renderscript.Sampler.Value NEAREST;
+ enum_constant public static final android.renderscript.Sampler.Value WRAP;
}
- public deprecated class Script extends android.renderscript.BaseObj {
- method public deprecated void bindAllocation(android.renderscript.Allocation, int);
- method protected deprecated void forEach(int, android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.FieldPacker);
- method protected deprecated void invoke(int);
- method protected deprecated void invoke(int, android.renderscript.FieldPacker);
- method public deprecated void setTimeZone(java.lang.String);
- method public deprecated void setVar(int, float);
- method public deprecated void setVar(int, double);
- method public deprecated void setVar(int, int);
- method public deprecated void setVar(int, long);
- method public deprecated void setVar(int, boolean);
- method public deprecated void setVar(int, android.renderscript.BaseObj);
- method public deprecated void setVar(int, android.renderscript.FieldPacker);
+ public class Script extends android.renderscript.BaseObj {
+ method public void bindAllocation(android.renderscript.Allocation, int);
+ method protected void forEach(int, android.renderscript.Allocation, android.renderscript.Allocation, android.renderscript.FieldPacker);
+ method protected void invoke(int);
+ method protected void invoke(int, android.renderscript.FieldPacker);
+ method public void setTimeZone(java.lang.String);
+ method public void setVar(int, float);
+ method public void setVar(int, double);
+ method public void setVar(int, int);
+ method public void setVar(int, long);
+ method public void setVar(int, boolean);
+ method public void setVar(int, android.renderscript.BaseObj);
+ method public void setVar(int, android.renderscript.FieldPacker);
+ method public void setVar(int, android.renderscript.FieldPacker, android.renderscript.Element, int[]);
}
public static class Script.Builder {
@@ -19242,19 +19482,19 @@
field protected android.renderscript.Element mElement;
}
- public deprecated class ScriptC extends android.renderscript.Script {
- ctor protected deprecated ScriptC(int, android.renderscript.RenderScript);
- ctor protected deprecated ScriptC(android.renderscript.RenderScript, android.content.res.Resources, int);
+ public class ScriptC extends android.renderscript.Script {
+ ctor protected ScriptC(int, android.renderscript.RenderScript);
+ ctor protected ScriptC(android.renderscript.RenderScript, android.content.res.Resources, int);
}
- public deprecated class Short2 {
+ public class Short2 {
ctor public Short2();
ctor public Short2(short, short);
field public short x;
field public short y;
}
- public deprecated class Short3 {
+ public class Short3 {
ctor public Short3();
ctor public Short3(short, short, short);
field public short x;
@@ -19262,7 +19502,7 @@
field public short z;
}
- public deprecated class Short4 {
+ public class Short4 {
ctor public Short4();
ctor public Short4(short, short, short, short);
field public short w;
@@ -19271,22 +19511,22 @@
field public short z;
}
- public deprecated class Type extends android.renderscript.BaseObj {
- method public deprecated int getCount();
- method public deprecated android.renderscript.Element getElement();
- method public deprecated int getX();
- method public deprecated int getY();
- method public deprecated int getZ();
- method public deprecated boolean hasFaces();
- method public deprecated boolean hasMipmaps();
+ public class Type extends android.renderscript.BaseObj {
+ method public int getCount();
+ method public android.renderscript.Element getElement();
+ method public int getX();
+ method public int getY();
+ method public int getZ();
+ method public boolean hasFaces();
+ method public boolean hasMipmaps();
}
- public static deprecated class Type.Builder {
- ctor public deprecated Type.Builder(android.renderscript.RenderScript, android.renderscript.Element);
- method public deprecated android.renderscript.Type create();
+ public static class Type.Builder {
+ ctor public Type.Builder(android.renderscript.RenderScript, android.renderscript.Element);
+ method public android.renderscript.Type create();
method public android.renderscript.Type.Builder setFaces(boolean);
method public android.renderscript.Type.Builder setMipmaps(boolean);
- method public deprecated android.renderscript.Type.Builder setX(int);
+ method public android.renderscript.Type.Builder setX(int);
method public android.renderscript.Type.Builder setY(int);
}
@@ -21064,19 +21304,6 @@
method public int getTopPadding();
}
- public abstract interface TextDirectionHeuristic {
- }
-
- public class TextDirectionHeuristics {
- ctor public TextDirectionHeuristics();
- field public static final android.text.TextDirectionHeuristic ANYRTL_LTR;
- field public static final android.text.TextDirectionHeuristic FIRSTSTRONG_LTR;
- field public static final android.text.TextDirectionHeuristic FIRSTSTRONG_RTL;
- field public static final android.text.TextDirectionHeuristic LOCALE;
- field public static final android.text.TextDirectionHeuristic LTR;
- field public static final android.text.TextDirectionHeuristic RTL;
- }
-
public class TextPaint extends android.graphics.Paint {
ctor public TextPaint();
ctor public TextPaint(int);
@@ -22168,10 +22395,6 @@
method public android.util.JsonWriter value(java.lang.Number) throws java.io.IOException;
}
- public class LocaleUtil {
- method public static int getLayoutDirectionFromLocale(java.util.Locale);
- }
-
public final class Log {
method public static int d(java.lang.String, java.lang.String);
method public static int d(java.lang.String, java.lang.String, java.lang.Throwable);
@@ -22505,6 +22728,7 @@
method public abstract java.lang.CharSequence getSubtitle();
method public java.lang.Object getTag();
method public abstract java.lang.CharSequence getTitle();
+ method public boolean getTitleOptionalHint();
method public abstract void invalidate();
method public boolean isTitleOptional();
method public abstract void setCustomView(android.view.View);
@@ -22638,12 +22862,8 @@
public class Gravity {
ctor public Gravity();
method public static void apply(int, int, int, android.graphics.Rect, android.graphics.Rect);
- method public static void apply(int, int, int, android.graphics.Rect, android.graphics.Rect, int);
method public static void apply(int, int, int, android.graphics.Rect, int, int, android.graphics.Rect);
- method public static void apply(int, int, int, android.graphics.Rect, int, int, android.graphics.Rect, int);
method public static void applyDisplay(int, android.graphics.Rect, android.graphics.Rect);
- method public static void applyDisplay(int, android.graphics.Rect, android.graphics.Rect, int);
- method public static int getAbsoluteGravity(int, int);
method public static boolean isHorizontal(int);
method public static boolean isVertical(int);
field public static final int AXIS_CLIP = 8; // 0x8
@@ -23666,7 +23886,7 @@
method public void recycle();
}
- public class View implements android.view.accessibility.AccessibilityEventSource android.graphics.drawable.Drawable.Callback android.graphics.drawable.Drawable.Callback2 android.view.KeyEvent.Callback {
+ public class View implements android.view.accessibility.AccessibilityEventSource android.graphics.drawable.Drawable.Callback android.view.KeyEvent.Callback {
ctor public View(android.content.Context);
ctor public View(android.content.Context, android.util.AttributeSet);
ctor public View(android.content.Context, android.util.AttributeSet, int);
@@ -23686,9 +23906,6 @@
method public void buildDrawingCache(boolean);
method public void buildLayer();
method public boolean callOnClick();
- method public boolean canResolveLayoutDirection();
- method public boolean canResolveTextAlignment();
- method public boolean canResolveTextDirection();
method public boolean canScrollHorizontally(int);
method public boolean canScrollVertically(int);
method public void cancelLongPress();
@@ -23777,7 +23994,6 @@
method public boolean getKeepScreenOn();
method public android.view.KeyEvent.DispatcherState getKeyDispatcherState();
method public int getLayerType();
- method public int getLayoutDirection();
method public android.view.ViewGroup.LayoutParams getLayoutParams();
method public final int getLeft();
method protected float getLeftFadingEdgeStrength();
@@ -23801,19 +24017,13 @@
method public android.view.View.OnFocusChangeListener getOnFocusChangeListener();
method public int getOverScrollMode();
method public int getPaddingBottom();
- method public int getPaddingEnd();
method public int getPaddingLeft();
method public int getPaddingRight();
- method public int getPaddingStart();
method public int getPaddingTop();
method public final android.view.ViewParent getParent();
method public android.view.ViewParent getParentForAccessibility();
method public float getPivotX();
method public float getPivotY();
- method public int getResolvedLayoutDirection();
- method public int getResolvedLayoutDirection(android.graphics.drawable.Drawable);
- method public int getResolvedTextAlignment();
- method public int getResolvedTextDirection();
method public android.content.res.Resources getResources();
method public final int getRight();
method protected float getRightFadingEdgeStrength();
@@ -23836,8 +24046,6 @@
method public int getSystemUiVisibility();
method public java.lang.Object getTag();
method public java.lang.Object getTag(int);
- method public int getTextAlignment();
- method public int getTextDirection();
method public final int getTop();
method protected float getTopFadingEdgeStrength();
method protected int getTopPaddingOffset();
@@ -23887,13 +24095,10 @@
method public boolean isHovered();
method public boolean isInEditMode();
method public boolean isInTouchMode();
- method protected static boolean isLayoutDirectionRtl(java.util.Locale);
method public boolean isLayoutRequested();
- method public boolean isLayoutRtl();
method public boolean isLongClickable();
method public boolean isOpaque();
method protected boolean isPaddingOffsetRequired();
- method public boolean isPaddingRelative();
method public boolean isPressed();
method public boolean isSaveEnabled();
method public boolean isSaveFromParentEnabled();
@@ -23941,14 +24146,7 @@
method protected void onLayout(boolean, int, int, int, int);
method protected void onMeasure(int, int);
method protected void onOverScrolled(int, int, boolean, boolean);
- method public void onPaddingChanged(int);
method public void onPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
- method public void onResolvedLayoutDirectionChanged();
- method public void onResolvedLayoutDirectionReset();
- method public void onResolvedTextAlignmentChanged();
- method public void onResolvedTextAlignmentReset();
- method public void onResolvedTextDirectionChanged();
- method public void onResolvedTextDirectionReset();
method protected void onRestoreInstanceState(android.os.Parcelable);
method protected android.os.Parcelable onSaveInstanceState();
method public void onScreenStateChanged(int);
@@ -23991,15 +24189,8 @@
method public void requestLayout();
method public boolean requestRectangleOnScreen(android.graphics.Rect);
method public boolean requestRectangleOnScreen(android.graphics.Rect, boolean);
- method public void resetResolvedLayoutDirection();
- method public void resetResolvedTextAlignment();
- method public void resetResolvedTextDirection();
- method public void resolveLayoutDirection();
- method public void resolvePadding();
method public static int resolveSize(int, int);
method public static int resolveSizeAndState(int, int, int);
- method public void resolveTextAlignment();
- method public void resolveTextDirection();
method public void restoreHierarchyState(android.util.SparseArray<android.os.Parcelable>);
method public void saveHierarchyState(android.util.SparseArray<android.os.Parcelable>);
method public void scheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable, long);
@@ -24038,7 +24229,6 @@
method public void setImportantForAccessibility(int);
method public void setKeepScreenOn(boolean);
method public void setLayerType(int, android.graphics.Paint);
- method public void setLayoutDirection(int);
method public void setLayoutParams(android.view.ViewGroup.LayoutParams);
method public final void setLeft(int);
method public void setLongClickable(boolean);
@@ -24062,7 +24252,6 @@
method public void setOnTouchListener(android.view.View.OnTouchListener);
method public void setOverScrollMode(int);
method public void setPadding(int, int, int, int);
- method public void setPaddingRelative(int, int, int, int);
method public void setPivotX(float);
method public void setPivotY(float);
method public void setPressed(boolean);
@@ -24087,8 +24276,6 @@
method public void setSystemUiVisibility(int);
method public void setTag(java.lang.Object);
method public void setTag(int, java.lang.Object);
- method public void setTextAlignment(int);
- method public void setTextDirection(int);
method public final void setTop(int);
method public void setTouchDelegate(android.view.TouchDelegate);
method public void setTranslationX(float);
@@ -24154,10 +24341,6 @@
field public static final int LAYER_TYPE_HARDWARE = 2; // 0x2
field public static final int LAYER_TYPE_NONE = 0; // 0x0
field public static final int LAYER_TYPE_SOFTWARE = 1; // 0x1
- field public static final int LAYOUT_DIRECTION_INHERIT = 2; // 0x2
- field public static final int LAYOUT_DIRECTION_LOCALE = 3; // 0x3
- field public static final int LAYOUT_DIRECTION_LTR = 0; // 0x0
- field public static final int LAYOUT_DIRECTION_RTL = 1; // 0x1
field public static final int MEASURED_HEIGHT_STATE_SHIFT = 16; // 0x10
field public static final int MEASURED_SIZE_MASK = 16777215; // 0xffffff
field public static final int MEASURED_STATE_MASK = -16777216; // 0xff000000
@@ -24208,22 +24391,8 @@
field public static final int SYSTEM_UI_FLAG_LOW_PROFILE = 1; // 0x1
field public static final int SYSTEM_UI_FLAG_VISIBLE = 0; // 0x0
field public static final int SYSTEM_UI_LAYOUT_FLAGS = 1536; // 0x600
- field public static final int TEXT_ALIGNMENT_CENTER = 4; // 0x4
- field protected static int TEXT_ALIGNMENT_DEFAULT;
- field public static final int TEXT_ALIGNMENT_GRAVITY = 1; // 0x1
field public static final int TEXT_ALIGNMENT_INHERIT = 0; // 0x0
field public static final int TEXT_ALIGNMENT_RESOLVED_DEFAULT = 131072; // 0x20000
- field public static final int TEXT_ALIGNMENT_TEXT_END = 3; // 0x3
- field public static final int TEXT_ALIGNMENT_TEXT_START = 2; // 0x2
- field public static final int TEXT_ALIGNMENT_VIEW_END = 6; // 0x6
- field public static final int TEXT_ALIGNMENT_VIEW_START = 5; // 0x5
- field public static final int TEXT_DIRECTION_ANY_RTL = 2; // 0x2
- field protected static int TEXT_DIRECTION_DEFAULT;
- field public static final int TEXT_DIRECTION_FIRST_STRONG = 1; // 0x1
- field public static final int TEXT_DIRECTION_INHERIT = 0; // 0x0
- field public static final int TEXT_DIRECTION_LOCALE = 5; // 0x5
- field public static final int TEXT_DIRECTION_LTR = 3; // 0x3
- field public static final int TEXT_DIRECTION_RTL = 4; // 0x4
field public static final android.util.Property TRANSLATION_X;
field public static final android.util.Property TRANSLATION_Y;
field protected static final java.lang.String VIEW_LOG_TAG = "View";
@@ -24241,6 +24410,7 @@
method public void onInitializeAccessibilityNodeInfo(android.view.View, android.view.accessibility.AccessibilityNodeInfo);
method public void onPopulateAccessibilityEvent(android.view.View, android.view.accessibility.AccessibilityEvent);
method public boolean onRequestSendAccessibilityEvent(android.view.ViewGroup, android.view.View, android.view.accessibility.AccessibilityEvent);
+ method public boolean performAccessibilityAction(android.view.View, int, android.os.Bundle);
method public void sendAccessibilityEvent(android.view.View, int);
method public void sendAccessibilityEventUnchecked(android.view.View, android.view.accessibility.AccessibilityEvent);
}
@@ -24454,7 +24624,6 @@
method public android.view.View getFocusedChild();
method public android.view.animation.LayoutAnimationController getLayoutAnimation();
method public android.view.animation.Animation.AnimationListener getLayoutAnimationListener();
- method public int getLayoutMode();
method public android.animation.LayoutTransition getLayoutTransition();
method public int getPersistentDrawingCache();
method public int indexOfChild(android.view.View);
@@ -24502,7 +24671,6 @@
method public void setDescendantFocusability(int);
method public void setLayoutAnimation(android.view.animation.LayoutAnimationController);
method public void setLayoutAnimationListener(android.view.animation.Animation.AnimationListener);
- method public void setLayoutMode(int);
method public void setLayoutTransition(android.animation.LayoutTransition);
method public void setMotionEventSplittingEnabled(boolean);
method public void setOnHierarchyChangeListener(android.view.ViewGroup.OnHierarchyChangeListener);
@@ -24514,12 +24682,10 @@
method public void startLayoutAnimation();
method public void startViewTransition(android.view.View);
method public void updateViewLayout(android.view.View, android.view.ViewGroup.LayoutParams);
- field public static final int CLIP_BOUNDS = 0; // 0x0
field protected static final int CLIP_TO_PADDING_MASK = 34; // 0x22
field public static final int FOCUS_AFTER_DESCENDANTS = 262144; // 0x40000
field public static final int FOCUS_BEFORE_DESCENDANTS = 131072; // 0x20000
field public static final int FOCUS_BLOCK_DESCENDANTS = 393216; // 0x60000
- field public static final int OPTICAL_BOUNDS = 1; // 0x1
field public static final int PERSISTENT_ALL_CACHES = 3; // 0x3
field public static final int PERSISTENT_ANIMATION_CACHE = 1; // 0x1
field public static final int PERSISTENT_NO_CACHE = 0; // 0x0
@@ -24530,7 +24696,6 @@
ctor public ViewGroup.LayoutParams(android.content.Context, android.util.AttributeSet);
ctor public ViewGroup.LayoutParams(int, int);
ctor public ViewGroup.LayoutParams(android.view.ViewGroup.LayoutParams);
- method public void onResolveLayoutDirection(int);
method protected void setBaseAttributes(android.content.res.TypedArray, int, int);
field public static final deprecated int FILL_PARENT = -1; // 0xffffffff
field public static final int MATCH_PARENT = -1; // 0xffffffff
@@ -24545,15 +24710,10 @@
ctor public ViewGroup.MarginLayoutParams(int, int);
ctor public ViewGroup.MarginLayoutParams(android.view.ViewGroup.MarginLayoutParams);
ctor public ViewGroup.MarginLayoutParams(android.view.ViewGroup.LayoutParams);
- method public int getMarginEnd();
- method public int getMarginStart();
- method public boolean isMarginRelative();
method public void setMargins(int, int, int, int);
field public int bottomMargin;
- field public int endMargin;
field public int leftMargin;
field public int rightMargin;
- field public int startMargin;
field public int topMargin;
}
@@ -24958,9 +25118,10 @@
method public void appendRecord(android.view.accessibility.AccessibilityRecord);
method public int describeContents();
method public static java.lang.String eventTypeToString(int);
+ method public int getAction();
method public long getEventTime();
method public int getEventType();
- method public int getGranularity();
+ method public int getMovementGranularity();
method public java.lang.CharSequence getPackageName();
method public android.view.accessibility.AccessibilityRecord getRecord(int);
method public int getRecordCount();
@@ -24968,9 +25129,10 @@
method public static android.view.accessibility.AccessibilityEvent obtain(int);
method public static android.view.accessibility.AccessibilityEvent obtain(android.view.accessibility.AccessibilityEvent);
method public static android.view.accessibility.AccessibilityEvent obtain();
+ method public void setAction(int);
method public void setEventTime(long);
method public void setEventType(int);
- method public void setGranularity(int);
+ method public void setMovementGranularity(int);
method public void setPackageName(java.lang.CharSequence);
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator CREATOR;
@@ -24992,7 +25154,7 @@
field public static final int TYPE_VIEW_SELECTED = 4; // 0x4
field public static final int TYPE_VIEW_TEXT_CHANGED = 16; // 0x10
field public static final int TYPE_VIEW_TEXT_SELECTION_CHANGED = 8192; // 0x2000
- field public static final int TYPE_VIEW_TEXT_TRAVERSED_AT_GRANULARITY = 131072; // 0x20000
+ field public static final int TYPE_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY = 131072; // 0x20000
field public static final int TYPE_WINDOW_CONTENT_CHANGED = 2048; // 0x800
field public static final int TYPE_WINDOW_STATE_CHANGED = 32; // 0x20
}
@@ -25033,7 +25195,7 @@
method public int getChildCount();
method public java.lang.CharSequence getClassName();
method public java.lang.CharSequence getContentDescription();
- method public int getGranularities();
+ method public int getMovementGranularities();
method public java.lang.CharSequence getPackageName();
method public android.view.accessibility.AccessibilityNodeInfo getParent();
method public java.lang.CharSequence getText();
@@ -25049,6 +25211,7 @@
method public boolean isPassword();
method public boolean isScrollable();
method public boolean isSelected();
+ method public boolean isVisibleToUser();
method public static android.view.accessibility.AccessibilityNodeInfo obtain(android.view.View);
method public static android.view.accessibility.AccessibilityNodeInfo obtain(android.view.View, int);
method public static android.view.accessibility.AccessibilityNodeInfo obtain();
@@ -25067,8 +25230,8 @@
method public void setEnabled(boolean);
method public void setFocusable(boolean);
method public void setFocused(boolean);
- method public void setGranularities(int);
method public void setLongClickable(boolean);
+ method public void setMovementGranularities(int);
method public void setPackageName(java.lang.CharSequence);
method public void setParent(android.view.View);
method public void setParent(android.view.View, int);
@@ -25078,29 +25241,30 @@
method public void setSource(android.view.View);
method public void setSource(android.view.View, int);
method public void setText(java.lang.CharSequence);
+ method public void setVisibleToUser(boolean);
method public void writeToParcel(android.os.Parcel, int);
field public static final int ACTION_ACCESSIBILITY_FOCUS = 64; // 0x40
- field public static final java.lang.String ACTION_ARGUMENT_GRANULARITY_INT = "ACTION_ARGUMENT_GRANULARITY_INT";
field public static final java.lang.String ACTION_ARGUMENT_HTML_ELEMENT_STRING = "ACTION_ARGUMENT_HTML_ELEMENT_STRING";
+ field public static final java.lang.String ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT = "ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT";
field public static final int ACTION_CLEAR_ACCESSIBILITY_FOCUS = 128; // 0x80
field public static final int ACTION_CLEAR_FOCUS = 2; // 0x2
field public static final int ACTION_CLEAR_SELECTION = 8; // 0x8
field public static final int ACTION_CLICK = 16; // 0x10
field public static final int ACTION_FOCUS = 1; // 0x1
field public static final int ACTION_LONG_CLICK = 32; // 0x20
- field public static final int ACTION_NEXT_AT_GRANULARITY = 256; // 0x100
+ field public static final int ACTION_NEXT_AT_MOVEMENT_GRANULARITY = 256; // 0x100
field public static final int ACTION_NEXT_HTML_ELEMENT = 1024; // 0x400
- field public static final int ACTION_PREVIOUS_AT_GRANULARITY = 512; // 0x200
+ field public static final int ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY = 512; // 0x200
field public static final int ACTION_PREVIOUS_HTML_ELEMENT = 2048; // 0x800
field public static final int ACTION_SELECT = 4; // 0x4
field public static final android.os.Parcelable.Creator CREATOR;
field public static final int FOCUS_ACCESSIBILITY = 2; // 0x2
field public static final int FOCUS_INPUT = 1; // 0x1
- field public static final int GRANULARITY_CHARACTER = 1; // 0x1
- field public static final int GRANULARITY_LINE = 4; // 0x4
- field public static final int GRANULARITY_PAGE = 16; // 0x10
- field public static final int GRANULARITY_PARAGRAPH = 8; // 0x8
- field public static final int GRANULARITY_WORD = 2; // 0x2
+ field public static final int MOVEMENT_GRANULARITY_CHARACTER = 1; // 0x1
+ field public static final int MOVEMENT_GRANULARITY_LINE = 4; // 0x4
+ field public static final int MOVEMENT_GRANULARITY_PAGE = 16; // 0x10
+ field public static final int MOVEMENT_GRANULARITY_PARAGRAPH = 8; // 0x8
+ field public static final int MOVEMENT_GRANULARITY_WORD = 2; // 0x2
}
public abstract class AccessibilityNodeProvider {
@@ -26738,6 +26902,7 @@
method public void dismissDropDown();
method public boolean enoughToFilter();
method public android.widget.ListAdapter getAdapter();
+ method public java.lang.CharSequence getCompletionHint();
method public int getDropDownAnchor();
method public android.graphics.drawable.Drawable getDropDownBackground();
method public int getDropDownHeight();
@@ -26877,7 +27042,9 @@
ctor public CheckedTextView(android.content.Context);
ctor public CheckedTextView(android.content.Context, android.util.AttributeSet);
ctor public CheckedTextView(android.content.Context, android.util.AttributeSet, int);
+ method public android.graphics.drawable.Drawable getCheckMarkDrawable();
method public boolean isChecked();
+ method public void onPaddingChanged(int);
method public void setCheckMarkDrawable(int);
method public void setCheckMarkDrawable(android.graphics.drawable.Drawable);
method public void setChecked(boolean);
@@ -27907,7 +28074,6 @@
method public void setString(int, java.lang.String, java.lang.String);
method public void setTextColor(int, int);
method public void setTextViewCompoundDrawables(int, int, int, int, int);
- method public void setTextViewCompoundDrawablesRelative(int, int, int, int, int);
method public void setTextViewText(int, java.lang.CharSequence);
method public void setUri(int, java.lang.String, android.net.Uri);
method public void setViewVisibility(int, int);
@@ -28387,12 +28553,9 @@
method public final int getAutoLinkMask();
method public int getCompoundDrawablePadding();
method public android.graphics.drawable.Drawable[] getCompoundDrawables();
- method public android.graphics.drawable.Drawable[] getCompoundDrawablesRelative();
method public int getCompoundPaddingBottom();
- method public int getCompoundPaddingEnd();
method public int getCompoundPaddingLeft();
method public int getCompoundPaddingRight();
- method public int getCompoundPaddingStart();
method public int getCompoundPaddingTop();
method public final int getCurrentHintTextColor();
method public final int getCurrentTextColor();
@@ -28407,11 +28570,13 @@
method public android.text.InputFilter[] getFilters();
method public boolean getFreezesText();
method public int getGravity();
+ method public int getHighlightColor();
method public java.lang.CharSequence getHint();
method public final android.content.res.ColorStateList getHintTextColors();
method public int getImeActionId();
method public java.lang.CharSequence getImeActionLabel();
method public int getImeOptions();
+ method public boolean getIncludeFontPadding();
method public android.os.Bundle getInputExtras(boolean);
method public int getInputType();
method public final android.text.method.KeyListener getKeyListener();
@@ -28419,8 +28584,19 @@
method public int getLineBounds(int, android.graphics.Rect);
method public int getLineCount();
method public int getLineHeight();
+ method public float getLineSpacingExtra();
+ method public float getLineSpacingMultiplier();
method public final android.content.res.ColorStateList getLinkTextColors();
method public final boolean getLinksClickable();
+ method public int getMarqueeRepeatLimit();
+ method public int getMaxEms();
+ method public int getMaxHeight();
+ method public int getMaxLines();
+ method public int getMaxWidth();
+ method public int getMinEms();
+ method public int getMinHeight();
+ method public int getMinLines();
+ method public int getMinWidth();
method public final android.text.method.MovementMethod getMovementMethod();
method public int getOffsetForPosition(float, float);
method public android.text.TextPaint getPaint();
@@ -28428,6 +28604,10 @@
method public java.lang.String getPrivateImeOptions();
method public int getSelectionEnd();
method public int getSelectionStart();
+ method public int getShadowColor();
+ method public float getShadowDx();
+ method public float getShadowDy();
+ method public float getShadowRadius();
method public java.lang.CharSequence getText();
method public static int getTextColor(android.content.Context, android.content.res.TypedArray, int);
method public final android.content.res.ColorStateList getTextColors();
@@ -28435,15 +28615,14 @@
method public float getTextScaleX();
method public float getTextSize();
method public int getTotalPaddingBottom();
- method public int getTotalPaddingEnd();
method public int getTotalPaddingLeft();
method public int getTotalPaddingRight();
- method public int getTotalPaddingStart();
method public int getTotalPaddingTop();
method public final android.text.method.TransformationMethod getTransformationMethod();
method public android.graphics.Typeface getTypeface();
method public android.text.style.URLSpan[] getUrls();
method public boolean hasSelection();
+ method public boolean isCursorVisible();
method public boolean isInputMethodTarget();
method public boolean isSuggestionsEnabled();
method public boolean isTextSelectable();
@@ -28456,6 +28635,8 @@
method public void onEndBatchEdit();
method public boolean onPreDraw();
method public boolean onPrivateIMECommand(java.lang.String, android.os.Bundle);
+ method public void onResolvedLayoutDirectionReset();
+ method public void onResolvedTextDirectionChanged();
method public void onRestoreInstanceState(android.os.Parcelable);
method public android.os.Parcelable onSaveInstanceState();
method protected void onSelectionChanged(int, int);
@@ -28468,9 +28649,6 @@
method public final void setAutoLinkMask(int);
method public void setCompoundDrawablePadding(int);
method public void setCompoundDrawables(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, android.graphics.drawable.Drawable);
- method public void setCompoundDrawablesRelative(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, android.graphics.drawable.Drawable);
- method public void setCompoundDrawablesRelativeWithIntrinsicBounds(int, int, int, int);
- method public void setCompoundDrawablesRelativeWithIntrinsicBounds(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, android.graphics.drawable.Drawable);
method public void setCompoundDrawablesWithIntrinsicBounds(int, int, int, int);
method public void setCompoundDrawablesWithIntrinsicBounds(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, android.graphics.drawable.Drawable, android.graphics.drawable.Drawable);
method public void setCursorVisible(boolean);
@@ -28514,6 +28692,7 @@
method public void setMinWidth(int);
method public final void setMovementMethod(android.text.method.MovementMethod);
method public void setOnEditorActionListener(android.widget.TextView.OnEditorActionListener);
+ method public void setPaddingRelative(int, int, int, int);
method public void setPaintFlags(int);
method public void setPrivateImeOptions(java.lang.String);
method public void setRawInputType(int);
diff --git a/cmds/pm/src/com/android/commands/pm/Pm.java b/cmds/pm/src/com/android/commands/pm/Pm.java
index e19ad66..f9ff861 100644
--- a/cmds/pm/src/com/android/commands/pm/Pm.java
+++ b/cmds/pm/src/com/android/commands/pm/Pm.java
@@ -16,9 +16,12 @@
package com.android.commands.pm;
+import com.android.internal.content.PackageHelper;
+
import android.app.ActivityManagerNative;
import android.content.ComponentName;
import android.content.pm.ApplicationInfo;
+import android.content.pm.ContainerEncryptionParams;
import android.content.pm.FeatureInfo;
import android.content.pm.IPackageDataObserver;
import android.content.pm.IPackageDeleteObserver;
@@ -40,17 +43,20 @@
import android.os.RemoteException;
import android.os.ServiceManager;
-import com.android.internal.content.PackageHelper;
-
import java.io.File;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
+import java.security.InvalidAlgorithmParameterException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.WeakHashMap;
+import javax.crypto.SecretKey;
+import javax.crypto.spec.IvParameterSpec;
+import javax.crypto.spec.SecretKeySpec;
+
public final class Pm {
IPackageManager mPm;
@@ -763,6 +769,15 @@
String installerPackageName = null;
String opt;
+
+ String algo = null;
+ byte[] iv = null;
+ byte[] key = null;
+
+ String macAlgo = null;
+ byte[] macKey = null;
+ byte[] tag = null;
+
while ((opt=nextOption()) != null) {
if (opt.equals("-l")) {
installFlags |= PackageManager.INSTALL_FORWARD_LOCK;
@@ -783,6 +798,48 @@
} else if (opt.equals("-f")) {
// Override if -s option is specified.
installFlags |= PackageManager.INSTALL_INTERNAL;
+ } else if (opt.equals("--algo")) {
+ algo = nextOptionData();
+ if (algo == null) {
+ System.err.println("Error: must supply argument for --algo");
+ showUsage();
+ return;
+ }
+ } else if (opt.equals("--iv")) {
+ iv = hexToBytes(nextOptionData());
+ if (iv == null) {
+ System.err.println("Error: must supply argument for --iv");
+ showUsage();
+ return;
+ }
+ } else if (opt.equals("--key")) {
+ key = hexToBytes(nextOptionData());
+ if (key == null) {
+ System.err.println("Error: must supply argument for --key");
+ showUsage();
+ return;
+ }
+ } else if (opt.equals("--macalgo")) {
+ macAlgo = nextOptionData();
+ if (macAlgo == null) {
+ System.err.println("Error: must supply argument for --macalgo");
+ showUsage();
+ return;
+ }
+ } else if (opt.equals("--mackey")) {
+ macKey = hexToBytes(nextOptionData());
+ if (macKey == null) {
+ System.err.println("Error: must supply argument for --mackey");
+ showUsage();
+ return;
+ }
+ } else if (opt.equals("--tag")) {
+ tag = hexToBytes(nextOptionData());
+ if (tag == null) {
+ System.err.println("Error: must supply argument for --tag");
+ showUsage();
+ return;
+ }
} else {
System.err.println("Error: Unknown option: " + opt);
showUsage();
@@ -790,6 +847,44 @@
}
}
+ final ContainerEncryptionParams encryptionParams;
+ if (algo != null || iv != null || key != null || macAlgo != null || macKey != null
+ || tag != null) {
+ if (algo == null || iv == null || key == null) {
+ System.err.println("Error: all of --algo, --iv, and --key must be specified");
+ showUsage();
+ return;
+ }
+
+ if (macAlgo != null || macKey != null || tag != null) {
+ if (macAlgo == null || macKey == null || tag == null) {
+ System.err.println("Error: all of --macalgo, --mackey, and --tag must "
+ + "be specified");
+ showUsage();
+ return;
+ }
+ }
+
+ try {
+ final SecretKey encKey = new SecretKeySpec(key, "RAW");
+
+ final SecretKey macSecretKey;
+ if (macKey == null || macKey.length == 0) {
+ macSecretKey = null;
+ } else {
+ macSecretKey = new SecretKeySpec(macKey, "RAW");
+ }
+
+ encryptionParams = new ContainerEncryptionParams(algo, new IvParameterSpec(iv),
+ encKey, macAlgo, null, macSecretKey, tag, -1, -1, -1);
+ } catch (InvalidAlgorithmParameterException e) {
+ e.printStackTrace();
+ return;
+ }
+ } else {
+ encryptionParams = null;
+ }
+
final Uri apkURI;
final Uri verificationURI;
@@ -816,7 +911,7 @@
PackageInstallObserver obs = new PackageInstallObserver();
try {
mPm.installPackageWithVerification(apkURI, obs, installFlags, installerPackageName,
- verificationURI, null);
+ verificationURI, null, encryptionParams);
synchronized (obs) {
while (!obs.finished) {
@@ -839,6 +934,37 @@
}
}
+ /**
+ * Convert a string containing hex-encoded bytes to a byte array.
+ *
+ * @param input String containing hex-encoded bytes
+ * @return input as an array of bytes
+ */
+ private byte[] hexToBytes(String input) {
+ if (input == null) {
+ return null;
+ }
+
+ final int inputLength = input.length();
+ if ((inputLength % 2) != 0) {
+ System.err.print("Invalid length; must be multiple of 2");
+ return null;
+ }
+
+ final int byteLength = inputLength / 2;
+ final byte[] output = new byte[byteLength];
+
+ int inputIndex = 0;
+ int byteIndex = 0;
+ while (inputIndex < inputLength) {
+ output[byteIndex++] = (byte) Integer.parseInt(
+ input.substring(inputIndex, inputIndex + 2), 16);
+ inputIndex += 2;
+ }
+
+ return output;
+ }
+
public void runCreateUser() {
// Need to be run as root
if (Process.myUid() != ROOT_UID) {
@@ -1236,7 +1362,8 @@
System.err.println(" pm list libraries");
System.err.println(" pm list users");
System.err.println(" pm path PACKAGE");
- System.err.println(" pm install [-l] [-r] [-t] [-i INSTALLER_PACKAGE_NAME] [-s] [-f] PATH");
+ System.err.println(" pm install [-l] [-r] [-t] [-i INSTALLER_PACKAGE_NAME] [-s] [-f]");
+ System.err.println(" [--algo <algorithm name> --key <key-in-hex> --iv <IV-in-hex>] PATH");
System.err.println(" pm uninstall [-k] PACKAGE");
System.err.println(" pm clear PACKAGE");
System.err.println(" pm enable [--user USER_ID] PACKAGE_OR_COMPONENT");
diff --git a/cmds/svc/src/com/android/commands/svc/UsbCommand.java b/cmds/svc/src/com/android/commands/svc/UsbCommand.java
index b8d8d95..4dcb05e 100644
--- a/cmds/svc/src/com/android/commands/svc/UsbCommand.java
+++ b/cmds/svc/src/com/android/commands/svc/UsbCommand.java
@@ -16,7 +16,7 @@
package com.android.commands.svc;
-import android.content.Context;;
+import android.content.Context;
import android.hardware.usb.IUsbManager;
import android.os.RemoteException;
import android.os.ServiceManager;
@@ -27,10 +27,12 @@
super("usb");
}
+ @Override
public String shortHelp() {
return "Control Usb state";
}
+ @Override
public String longHelp() {
return shortHelp() + "\n"
+ "\n"
@@ -40,6 +42,7 @@
+ " Gets the list of currently enabled functions\n";
}
+ @Override
public void run(String[] args) {
boolean validCommand = false;
if (args.length >= 2) {
diff --git a/core/java/android/accessibilityservice/AccessibilityService.java b/core/java/android/accessibilityservice/AccessibilityService.java
index c858e3c..c559e54 100644
--- a/core/java/android/accessibilityservice/AccessibilityService.java
+++ b/core/java/android/accessibilityservice/AccessibilityService.java
@@ -244,64 +244,54 @@
public static final int GESTURE_SWIPE_DOWN_AND_UP = 8;
/**
- * The user has performed a clockwise circle gesture on the touch screen.
- */
- public static final int GESTURE_CLOCKWISE_CIRCLE = 9;
-
- /**
- * The user has performed a counter clockwise circle gesture on the touch screen.
- */
- public static final int GESTURE_COUNTER_CLOCKWISE_CIRCLE = 10;
-
- /**
* The user has performed a left and up gesture on the touch screen.
*/
- public static final int GESTURE_SWIPE_LEFT_AND_UP = 11;
+ public static final int GESTURE_SWIPE_LEFT_AND_UP = 9;
/**
* The user has performed a left and down gesture on the touch screen.
*/
- public static final int GESTURE_SWIPE_LEFT_AND_DOWN = 12;
+ public static final int GESTURE_SWIPE_LEFT_AND_DOWN = 10;
/**
* The user has performed a right and up gesture on the touch screen.
*/
- public static final int GESTURE_SWIPE_RIGHT_AND_UP = 13;
+ public static final int GESTURE_SWIPE_RIGHT_AND_UP = 11;
/**
* The user has performed a right and down gesture on the touch screen.
*/
- public static final int GESTURE_SWIPE_RIGHT_AND_DOWN = 14;
+ public static final int GESTURE_SWIPE_RIGHT_AND_DOWN = 12;
/**
* The user has performed an up and left gesture on the touch screen.
*/
- public static final int GESTURE_SWIPE_UP_AND_LEFT = 15;
+ public static final int GESTURE_SWIPE_UP_AND_LEFT = 13;
/**
* The user has performed an up and right gesture on the touch screen.
*/
- public static final int GESTURE_SWIPE_UP_AND_RIGHT = 16;
+ public static final int GESTURE_SWIPE_UP_AND_RIGHT = 14;
/**
* The user has performed an down and left gesture on the touch screen.
*/
- public static final int GESTURE_SWIPE_DOWN_AND_LEFT = 17;
+ public static final int GESTURE_SWIPE_DOWN_AND_LEFT = 15;
/**
* The user has performed an down and right gesture on the touch screen.
*/
- public static final int GESTURE_SWIPE_DOWN_AND_RIGHT = 18;
+ public static final int GESTURE_SWIPE_DOWN_AND_RIGHT = 16;
/**
- * The user has performed a two finger tap gesture on the touch screen.
+ * The user has performed a double tap gesture on the touch screen.
*/
- public static final int GESTURE_TWO_FINGER_TAP = 19;
+ public static final int GESTURE_DOUBLE_TAP = 17;
/**
- * The user has performed a two finger long press gesture on the touch screen.
+ * The user has performed a tap and hold gesture on the touch screen.
*/
- public static final int GESTURE_TWO_FINGER_LONG_PRESS = 20;
+ public static final int GESTURE_TAP_AND_HOLD = 18;
/**
* The {@link Intent} that must be declared as handled by the service.
@@ -418,8 +408,8 @@
* @see #GESTURE_SWIPE_RIGHT_AND_DOWN
* @see #GESTURE_CLOCKWISE_CIRCLE
* @see #GESTURE_COUNTER_CLOCKWISE_CIRCLE
- * @see #GESTURE_TWO_FINGER_TAP
- * @see #GESTURE_TWO_FINGER_LONG_PRESS
+ * @see #GESTURE_DOUBLE_TAP
+ * @see #GESTURE_TAP_AND_HOLD
*/
protected boolean onGesture(int gestureId) {
// TODO: Describe the default gesture processing in the javaDoc once it is finalized.
diff --git a/core/java/android/accessibilityservice/UiTestAutomationBridge.java b/core/java/android/accessibilityservice/UiTestAutomationBridge.java
index 4d4bfeb..69195c1 100644
--- a/core/java/android/accessibilityservice/UiTestAutomationBridge.java
+++ b/core/java/android/accessibilityservice/UiTestAutomationBridge.java
@@ -189,6 +189,7 @@
final AccessibilityServiceInfo info = new AccessibilityServiceInfo();
info.eventTypes = AccessibilityEvent.TYPES_ALL_MASK;
info.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC;
+ info.flags |= AccessibilityNodeInfo.INCLUDE_NOT_IMPORTANT_VIEWS;
try {
manager.registerUiTestAutomationService(mListener, info);
diff --git a/core/java/android/animation/PropertyValuesHolder.java b/core/java/android/animation/PropertyValuesHolder.java
index 58f23f7..5b1a7cf 100644
--- a/core/java/android/animation/PropertyValuesHolder.java
+++ b/core/java/android/animation/PropertyValuesHolder.java
@@ -384,8 +384,7 @@
try {
returnVal = targetClass.getMethod(methodName, args);
} catch (NoSuchMethodException e) {
- Log.e("PropertyValuesHolder",
- "Couldn't find no-arg method for property " + mPropertyName + ": " + e);
+ // Swallow the error, log it later
}
} else {
args = new Class[1];
@@ -412,9 +411,12 @@
}
}
// If we got here, then no appropriate function was found
- Log.e("PropertyValuesHolder",
- "Couldn't find setter/getter for property " + mPropertyName +
- " with value type "+ mValueType);
+ }
+
+ if (returnVal == null) {
+ Log.w("PropertyValuesHolder", "Method " +
+ getMethodName(prefix, mPropertyName) + "() with type " + mValueType +
+ " not found on target class " + targetClass);
}
return returnVal;
@@ -495,7 +497,7 @@
}
return;
} catch (ClassCastException e) {
- Log.e("PropertyValuesHolder","No such property (" + mProperty.getName() +
+ Log.w("PropertyValuesHolder","No such property (" + mProperty.getName() +
") on target object " + target + ". Trying reflection instead");
mProperty = null;
}
@@ -508,6 +510,10 @@
if (!kf.hasValue()) {
if (mGetter == null) {
setupGetter(targetClass);
+ if (mGetter == null) {
+ // Already logged the error - just return to avoid NPE
+ return;
+ }
}
try {
kf.setValue(mGetter.invoke(target));
@@ -535,6 +541,10 @@
if (mGetter == null) {
Class targetClass = target.getClass();
setupGetter(targetClass);
+ if (mGetter == null) {
+ // Already logged the error - just return to avoid NPE
+ return;
+ }
}
kf.setValue(mGetter.invoke(target));
} catch (InvocationTargetException e) {
@@ -854,8 +864,9 @@
}
}
} catch (NoSuchMethodError e) {
- Log.d("PropertyValuesHolder",
- "Can't find native method using JNI, use reflection" + e);
+ // Couldn't find it via JNI - try reflection next. Probably means the method
+ // doesn't exist, or the type is wrong. An error will be logged later if
+ // reflection fails as well.
} finally {
mPropertyMapLock.writeLock().unlock();
}
@@ -990,8 +1001,9 @@
}
}
} catch (NoSuchMethodError e) {
- Log.d("PropertyValuesHolder",
- "Can't find native method using JNI, use reflection" + e);
+ // Couldn't find it via JNI - try reflection next. Probably means the method
+ // doesn't exist, or the type is wrong. An error will be logged later if
+ // reflection fails as well.
} finally {
mPropertyMapLock.writeLock().unlock();
}
diff --git a/core/java/android/animation/ValueAnimator.java b/core/java/android/animation/ValueAnimator.java
index 326f27c..f3a442a 100755
--- a/core/java/android/animation/ValueAnimator.java
+++ b/core/java/android/animation/ValueAnimator.java
@@ -910,7 +910,7 @@
animationHandler.mPendingAnimations.add(this);
if (mStartDelay == 0) {
// This sets the initial value of the animation, prior to actually starting it running
- setCurrentPlayTime(getCurrentPlayTime());
+ setCurrentPlayTime(0);
mPlayingState = STOPPED;
mRunning = true;
notifyStartListeners();
diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java
index ab245f5..ac55abe 100644
--- a/core/java/android/app/Activity.java
+++ b/core/java/android/app/Activity.java
@@ -1242,7 +1242,7 @@
* making sure nothing is lost if there are not enough resources to start
* the new activity without first killing this one. This is also a good
* place to do things like stop animations and other things that consume a
- * noticeable mount of CPU in order to make the switch to the next activity
+ * noticeable amount of CPU in order to make the switch to the next activity
* as fast as possible, or to close resources that are exclusive access
* such as the camera.
*
@@ -2493,7 +2493,7 @@
if (featureId == Window.FEATURE_OPTIONS_PANEL && menu != null) {
boolean goforit = onPrepareOptionsMenu(menu);
goforit |= mFragments.dispatchPrepareOptionsMenu(menu);
- return goforit && menu.hasVisibleItems();
+ return goforit;
}
return true;
}
@@ -2540,11 +2540,10 @@
if (item.getItemId() == android.R.id.home && mActionBar != null &&
(mActionBar.getDisplayOptions() & ActionBar.DISPLAY_HOME_AS_UP) != 0) {
if (mParent == null) {
- onNavigateUp();
+ return onNavigateUp();
} else {
- mParent.onNavigateUpFromChild(this);
+ return mParent.onNavigateUpFromChild(this);
}
- return true;
}
return false;
@@ -2710,7 +2709,7 @@
Intent upIntent = getParentActivityIntent();
if (upIntent != null) {
if (shouldUpRecreateTask(upIntent)) {
- TaskStackBuilder b = TaskStackBuilder.from(this);
+ TaskStackBuilder b = TaskStackBuilder.create(this);
onCreateNavigateUpTaskStack(b);
onPrepareNavigateUpTaskStack(b);
b.startActivities();
@@ -2742,6 +2741,10 @@
* may choose to override this method to construct the desired task stack in a different
* way.</p>
*
+ * <p>This method will be invoked by the default implementation of {@link #onNavigateUp()}
+ * if {@link #shouldUpRecreateTask(Intent)} returns true when supplied with the intent
+ * returned by {@link #getParentActivityIntent()}.</p>
+ *
* <p>Applications that wish to supply extra Intent parameters to the parent stack defined
* by the manifest should override {@link #onPrepareNavigateUpTaskStack(TaskStackBuilder)}.</p>
*
@@ -4846,8 +4849,13 @@
* Navigate from this activity to the activity specified by upIntent, finishing this activity
* in the process. If the activity indicated by upIntent already exists in the task's history,
* this activity and all others before the indicated activity in the history stack will be
- * finished. If the indicated activity does not appear in the history stack, this is equivalent
- * to simply calling finish() on this activity.
+ * finished.
+ *
+ * <p>If the indicated activity does not appear in the history stack, this will finish
+ * each activity in this task until the root activity of the task is reached, resulting in
+ * an "in-app home" behavior. This can be useful in apps with a complex navigation hierarchy
+ * when an activity may be reached by a path not passing through a canonical parent
+ * activity.</p>
*
* <p>This method should be used when performing up navigation from within the same task
* as the destination. If up navigation should cross tasks in some cases, see
diff --git a/core/java/android/app/ActivityOptions.java b/core/java/android/app/ActivityOptions.java
index 423b02a..3d0b7d8 100644
--- a/core/java/android/app/ActivityOptions.java
+++ b/core/java/android/app/ActivityOptions.java
@@ -147,12 +147,17 @@
* activity is scaled from a small originating area of the screen to
* its final full representation.
*
+ * <p>If the Intent this is being used with has not set its
+ * {@link android.content.Intent#setSourceBounds Intent.setSourceBounds},
+ * those bounds will be filled in for you based on the initial
+ * bounds passed in here.
+ *
* @param source The View that the new activity is animating from. This
* defines the coordinate space for <var>startX</var> and <var>startY</var>.
* @param startX The x starting location of the new activity, relative to <var>source</var>.
* @param startY The y starting location of the activity, relative to <var>source</var>.
* @param startWidth The initial width of the new activity.
- * @param startWidth The initial height of the new activity.
+ * @param startHeight The initial height of the new activity.
* @return Returns a new ActivityOptions object that you can use to
* supply these options as the options Bundle when starting an activity.
*/
@@ -175,6 +180,11 @@
* is scaled from a given position to the new activity window that is
* being started.
*
+ * <p>If the Intent this is being used with has not set its
+ * {@link android.content.Intent#setSourceBounds Intent.setSourceBounds},
+ * those bounds will be filled in for you based on the initial
+ * thumbnail location and size provided here.
+ *
* @param source The View that this thumbnail is animating from. This
* defines the coordinate space for <var>startX</var> and <var>startY</var>.
* @param thumbnail The bitmap that will be shown as the initial thumbnail
@@ -325,10 +335,11 @@
}
/**
- * Join the values in <var>otherOptions</var> in to this one. Any values
+ * Update the current values in this ActivityOptions from those supplied
+ * in <var>otherOptions</var>. Any values
* defined in <var>otherOptions</var> replace those in the base options.
*/
- public void join(ActivityOptions otherOptions) {
+ public void update(ActivityOptions otherOptions) {
if (otherOptions.mPackageName != null) {
mPackageName = otherOptions.mPackageName;
}
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index 1a46430..8799194 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -136,7 +136,7 @@
/** @hide */
public static final boolean DEBUG_BROADCAST = false;
private static final boolean DEBUG_RESULTS = false;
- private static final boolean DEBUG_BACKUP = true;
+ private static final boolean DEBUG_BACKUP = false;
private static final boolean DEBUG_CONFIGURATION = false;
private static final boolean DEBUG_SERVICE = false;
private static final boolean DEBUG_MEMORY_TRIM = false;
@@ -1172,10 +1172,10 @@
case DUMP_PROVIDER: return "DUMP_PROVIDER";
}
}
- return "(unknown)";
+ return Integer.toString(code);
}
public void handleMessage(Message msg) {
- if (DEBUG_MESSAGES) Slog.v(TAG, ">>> handling: " + msg.what);
+ if (DEBUG_MESSAGES) Slog.v(TAG, ">>> handling: " + codeToString(msg.what));
switch (msg.what) {
case LAUNCH_ACTIVITY: {
Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "activityStart");
@@ -1378,7 +1378,7 @@
Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
break;
}
- if (DEBUG_MESSAGES) Slog.v(TAG, "<<< done: " + msg.what);
+ if (DEBUG_MESSAGES) Slog.v(TAG, "<<< done: " + codeToString(msg.what));
}
private void maybeSnapshot() {
@@ -2639,6 +2639,7 @@
if (DEBUG_CONFIGURATION) Slog.v(TAG, "Resuming activity "
+ r.activityInfo.name + " with newConfig " + r.newConfig);
performConfigurationChanged(r.activity, r.newConfig);
+ freeTextLayoutCachesIfNeeded(r.activity.mCurrentConfig.diff(r.newConfig));
r.newConfig = null;
}
if (localLOGV) Slog.v(TAG, "Resuming " + r + " with isForward="
@@ -2955,6 +2956,7 @@
if (DEBUG_CONFIGURATION) Slog.v(TAG, "Updating activity vis "
+ r.activityInfo.name + " with new config " + r.newConfig);
performConfigurationChanged(r.activity, r.newConfig);
+ freeTextLayoutCachesIfNeeded(r.activity.mCurrentConfig.diff(r.newConfig));
r.newConfig = null;
}
} else {
@@ -3669,6 +3671,7 @@
final void handleConfigurationChanged(Configuration config, CompatibilityInfo compat) {
ArrayList<ComponentCallbacks2> callbacks = null;
+ int configDiff = 0;
synchronized (mPackages) {
if (mPendingConfiguration != null) {
@@ -3693,6 +3696,7 @@
if (!mConfiguration.isOtherSeqNewer(config) && compat == null) {
return;
}
+ configDiff = mConfiguration.diff(config);
mConfiguration.updateFrom(config);
config = applyCompatConfiguration();
callbacks = collectComponentCallbacksLocked(false, config);
@@ -3701,6 +3705,8 @@
// Cleanup hardware accelerated stuff
WindowManagerImpl.getDefault().trimLocalMemory();
+ freeTextLayoutCachesIfNeeded(configDiff);
+
if (callbacks != null) {
final int N = callbacks.size();
for (int i=0; i<N; i++) {
@@ -3709,6 +3715,17 @@
}
}
+ final void freeTextLayoutCachesIfNeeded(int configDiff) {
+ if (configDiff != 0) {
+ // Ask text layout engine to free its caches if there is a locale change
+ boolean hasLocaleConfigChange = ((configDiff & ActivityInfo.CONFIG_LOCALE) != 0);
+ if (hasLocaleConfigChange) {
+ Canvas.freeTextLayoutCaches();
+ if (DEBUG_CONFIGURATION) Slog.v(TAG, "Cleared TextLayout Caches");
+ }
+ }
+ }
+
final void handleActivityConfigurationChanged(IBinder token) {
ActivityClientRecord r = mActivities.get(token);
if (r == null || r.activity == null) {
@@ -3719,6 +3736,8 @@
+ r.activityInfo.name);
performConfigurationChanged(r.activity, mCompatConfiguration);
+
+ freeTextLayoutCachesIfNeeded(r.activity.mCurrentConfig.diff(mCompatConfiguration));
}
final void handleProfilerControl(boolean start, ProfilerControlData pcd, int profileType) {
@@ -3821,6 +3840,9 @@
// Ask graphics to free up as much as possible (font/image caches)
Canvas.freeCaches();
+ // Ask text layout engine to free also as much as possible
+ Canvas.freeTextLayoutCaches();
+
BinderInternal.forceGc("mem");
}
@@ -3843,7 +3865,7 @@
windowManager.endTrimMemory();
}
- private void setupGraphicsSupport(LoadedApk info) {
+ private void setupGraphicsSupport(LoadedApk info, File cacheDir) {
if (Process.isIsolated()) {
// Isolated processes aren't going to do UI.
return;
@@ -3855,11 +3877,8 @@
// If there are several packages in this application we won't
// initialize the graphics disk caches
if (packages != null && packages.length == 1) {
- ContextImpl appContext = new ContextImpl();
- appContext.init(info, null, this);
-
- HardwareRenderer.setupDiskCache(appContext.getCacheDir());
- RenderScript.setupDiskCache(appContext.getCacheDir());
+ HardwareRenderer.setupDiskCache(cacheDir);
+ RenderScript.setupDiskCache(cacheDir);
}
} catch (RemoteException e) {
// Ignore
@@ -3925,8 +3944,15 @@
data.info = getPackageInfoNoCheck(data.appInfo, data.compatInfo);
- setupGraphicsSupport(data.info);
-
+ final ContextImpl appContext = new ContextImpl();
+ appContext.init(data.info, null, this);
+ final File cacheDir = appContext.getCacheDir();
+
+ // Provide a usable directory for temporary files
+ System.setProperty("java.io.tmpdir", cacheDir.getAbsolutePath());
+
+ setupGraphicsSupport(data.info, cacheDir);
+
/**
* For system applications on userdebug/eng builds, log stack
* traces of disk and network access to dropbox for analysis.
@@ -4003,8 +4029,6 @@
}
if (data.instrumentationName != null) {
- ContextImpl appContext = new ContextImpl();
- appContext.init(data.info, null, this);
InstrumentationInfo ii = null;
try {
ii = appContext.getPackageManager().
diff --git a/core/java/android/app/ApplicationPackageManager.java b/core/java/android/app/ApplicationPackageManager.java
index 0510de1..191a696 100644
--- a/core/java/android/app/ApplicationPackageManager.java
+++ b/core/java/android/app/ApplicationPackageManager.java
@@ -24,6 +24,7 @@
import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.ComponentInfo;
+import android.content.pm.ContainerEncryptionParams;
import android.content.pm.FeatureInfo;
import android.content.pm.IPackageDataObserver;
import android.content.pm.IPackageDeleteObserver;
@@ -973,10 +974,10 @@
@Override
public void installPackageWithVerification(Uri packageURI, IPackageInstallObserver observer,
int flags, String installerPackageName, Uri verificationURI,
- ManifestDigest manifestDigest) {
+ ManifestDigest manifestDigest, ContainerEncryptionParams encryptionParams) {
try {
mPM.installPackageWithVerification(packageURI, observer, flags, installerPackageName,
- verificationURI, manifestDigest);
+ verificationURI, manifestDigest, encryptionParams);
} catch (RemoteException e) {
// Should never happen!
}
diff --git a/core/java/android/app/DatePickerDialog.java b/core/java/android/app/DatePickerDialog.java
index c62e5cf..3f0b4d4 100644
--- a/core/java/android/app/DatePickerDialog.java
+++ b/core/java/android/app/DatePickerDialog.java
@@ -16,17 +16,20 @@
package android.app;
-import com.android.internal.R;
-
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
+import android.text.format.DateUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.DatePicker;
import android.widget.DatePicker.OnDateChangedListener;
+import com.android.internal.R;
+
+import java.util.Calendar;
+
/**
* A simple dialog containing an {@link android.widget.DatePicker}.
*
@@ -42,6 +45,9 @@
private final DatePicker mDatePicker;
private final OnDateSetListener mCallBack;
+ private final Calendar mCalendar;
+
+ private boolean mTitleNeedsUpdate = true;
/**
* The callback used to indicate the user is done filling in the date.
@@ -91,10 +97,11 @@
mCallBack = callBack;
+ mCalendar = Calendar.getInstance();
+
Context themeContext = getContext();
setButton(BUTTON_POSITIVE, themeContext.getText(R.string.date_time_done), this);
setIcon(0);
- setTitle(R.string.date_picker_dialog_title);
LayoutInflater inflater =
(LayoutInflater) themeContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
@@ -102,6 +109,7 @@
setView(view);
mDatePicker = (DatePicker) view.findViewById(R.id.datePicker);
mDatePicker.init(year, monthOfYear, dayOfMonth, this);
+ updateTitle(year, monthOfYear, dayOfMonth);
}
public void onClick(DialogInterface dialog, int which) {
@@ -110,7 +118,8 @@
public void onDateChanged(DatePicker view, int year,
int month, int day) {
- mDatePicker.init(year, month, day, null);
+ mDatePicker.init(year, month, day, this);
+ updateTitle(year, month, day);
}
/**
@@ -147,6 +156,28 @@
super.onStop();
}
+ private void updateTitle(int year, int month, int day) {
+ if (!mDatePicker.getCalendarViewShown()) {
+ mCalendar.set(Calendar.YEAR, year);
+ mCalendar.set(Calendar.MONTH, month);
+ mCalendar.set(Calendar.DAY_OF_MONTH, day);
+ String title = DateUtils.formatDateTime(mContext,
+ mCalendar.getTimeInMillis(),
+ DateUtils.FORMAT_SHOW_DATE
+ | DateUtils.FORMAT_SHOW_WEEKDAY
+ | DateUtils.FORMAT_SHOW_YEAR
+ | DateUtils.FORMAT_ABBREV_MONTH
+ | DateUtils.FORMAT_ABBREV_WEEKDAY);
+ setTitle(title);
+ mTitleNeedsUpdate = true;
+ } else {
+ if (mTitleNeedsUpdate) {
+ mTitleNeedsUpdate = false;
+ setTitle(R.string.date_picker_dialog_title);
+ }
+ }
+ }
+
@Override
public Bundle onSaveInstanceState() {
Bundle state = super.onSaveInstanceState();
diff --git a/core/java/android/app/Dialog.java b/core/java/android/app/Dialog.java
index f04ff6a..2cc3b02 100644
--- a/core/java/android/app/Dialog.java
+++ b/core/java/android/app/Dialog.java
@@ -27,6 +27,7 @@
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
+import android.os.Looper;
import android.os.Message;
import android.util.Log;
import android.util.TypedValue;
@@ -103,7 +104,6 @@
private boolean mShowing = false;
private boolean mCanceled = false;
- private final Thread mUiThread;
private final Handler mHandler = new Handler();
private static final int DISMISS = 0x43;
@@ -162,7 +162,6 @@
w.setCallback(this);
w.setWindowManager(mWindowManager, null, null);
w.setGravity(Gravity.CENTER);
- mUiThread = Thread.currentThread();
mListenersHandler = new ListenersHandler(this);
}
@@ -299,11 +298,10 @@
* that in {@link #onStop}.
*/
public void dismiss() {
- if (Thread.currentThread() != mUiThread) {
- mHandler.post(mDismissAction);
+ if (Looper.myLooper() == mHandler.getLooper()) {
+ dismissDialog();
} else {
- mHandler.removeCallbacks(mDismissAction);
- mDismissAction.run();
+ mHandler.post(mDismissAction);
}
}
diff --git a/core/java/android/app/DownloadManager.java b/core/java/android/app/DownloadManager.java
index 0713127..93f732c 100644
--- a/core/java/android/app/DownloadManager.java
+++ b/core/java/android/app/DownloadManager.java
@@ -1155,7 +1155,7 @@
validateArgumentIsNonEmpty("description", description);
validateArgumentIsNonEmpty("path", path);
validateArgumentIsNonEmpty("mimeType", mimeType);
- if (length <= 0) {
+ if (length < 0) {
throw new IllegalArgumentException(" invalid value for param: totalBytes");
}
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index 69689c9..f962259 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -806,6 +806,10 @@
contentView.setViewVisibility(R.id.time, View.VISIBLE);
contentView.setLong(R.id.time, "setTime", when);
}
+ if (this.number != 0) {
+ NumberFormat f = NumberFormat.getIntegerInstance();
+ contentView.setTextViewText(R.id.info, f.format(this.number));
+ }
this.contentView = contentView;
this.contentIntent = contentIntent;
@@ -888,7 +892,7 @@
* .setContentText(subject)
* .setSmallIcon(R.drawable.new_mail)
* .setLargeIcon(aBitmap)
- * .getNotification();
+ * .build();
* </pre>
*/
public static class Builder {
@@ -925,6 +929,7 @@
private int mPriority;
private ArrayList<Action> mActions = new ArrayList<Action>(3);
private boolean mUseChronometer;
+ private Style mStyle;
/**
* Constructs a new Builder with the defaults:
@@ -1305,7 +1310,7 @@
* Add metadata to this notification.
*
* A reference to the Bundle is held for the lifetime of this Builder, and the Bundle's
- * current contents are copied into the Notification each time {@link #getNotification()} is
+ * current contents are copied into the Notification each time {@link #build()} is
* called.
*
* @see Notification#extras
@@ -1329,6 +1334,19 @@
return this;
}
+ /**
+ * Add a rich notification style to be applied at build time.
+ *
+ * @param style Object responsible for modifying the notification style.
+ */
+ public Builder setStyle(Style style) {
+ if (mStyle != style) {
+ mStyle = style;
+ mStyle.setBuilder(this);
+ }
+ return this;
+ }
+
private void setFlag(int mask, boolean value) {
if (value) {
mFlags |= mask;
@@ -1383,7 +1401,8 @@
if (mSubText != null) {
contentView.setTextViewText(R.id.text, mSubText);
- contentView.setViewVisibility(R.id.text2, View.VISIBLE);
+ contentView.setViewVisibility(R.id.text2,
+ mContentText != null ? View.VISIBLE : View.GONE);
} else {
contentView.setViewVisibility(R.id.text2, View.GONE);
if (mProgressMax != 0 || mProgressIndeterminate) {
@@ -1414,12 +1433,13 @@
int N = mActions.size();
if (N > 0) {
- Log.d("Notification", "has actions: " + mContentText);
+ // Log.d("Notification", "has actions: " + mContentText);
big.setViewVisibility(R.id.actions, View.VISIBLE);
if (N>3) N=3;
+ big.removeAllViews(R.id.actions);
for (int i=0; i<N; i++) {
final RemoteViews button = generateActionButton(mActions.get(i));
- Log.d("Notification", "adding action " + i + ": " + mActions.get(i).title);
+ //Log.d("Notification", "adding action " + i + ": " + mActions.get(i).title);
big.addView(R.id.actions, button);
}
}
@@ -1464,10 +1484,9 @@
}
/**
- * Combine all of the options that have been set and return a new {@link Notification}
- * object.
+ * Apply the unstyled operations and return a new {@link Notification} object.
*/
- public Notification getNotification() {
+ private Notification buildUnstyled() {
Notification n = new Notification();
n.when = mWhen;
n.icon = mSmallIcon;
@@ -1509,6 +1528,98 @@
}
return n;
}
+
+ /**
+ * @deprecated Use {@link #build()} instead.
+ */
+ @Deprecated
+ public Notification getNotification() {
+ return build();
+ }
+
+ /**
+ * Combine all of the options that have been set and return a new {@link Notification}
+ * object.
+ */
+ public Notification build() {
+ if (mStyle != null) {
+ return mStyle.build();
+ } else {
+ return buildUnstyled();
+ }
+ }
+ }
+
+
+ /**
+ * An object that can apply a rich notification style to a {@link Notification.Builder}
+ * object.
+ */
+ public static abstract class Style
+ {
+ private CharSequence mBigContentTitle;
+ private CharSequence mSummaryText = null;
+
+ protected Builder mBuilder;
+
+ /**
+ * Overrides ContentTitle in the big form of the template.
+ * This defaults to the value passed to setContentTitle().
+ */
+ protected void internalSetBigContentTitle(CharSequence title) {
+ mBigContentTitle = title;
+ }
+
+ /**
+ * Set the first line of text after the detail section in the big form of the template.
+ */
+ protected void internalSetSummaryText(CharSequence cs) {
+ mSummaryText = cs;
+ }
+
+ public void setBuilder(Builder builder) {
+ if (mBuilder != builder) {
+ mBuilder = builder;
+ mBuilder.setStyle(this);
+ }
+ }
+
+ protected void checkBuilder() {
+ if (mBuilder == null) {
+ throw new IllegalArgumentException("Style requires a valid Builder object");
+ }
+ }
+
+ protected RemoteViews getStandardView(int layoutId) {
+ checkBuilder();
+
+ if (mBigContentTitle != null) {
+ mBuilder.setContentTitle(mBigContentTitle);
+ }
+
+ if (mBuilder.mSubText == null) {
+ mBuilder.setContentText(null);
+ }
+
+ RemoteViews contentView = mBuilder.applyStandardTemplateWithActions(layoutId);
+
+ if (mBuilder.mSubText == null) {
+ contentView.setViewVisibility(R.id.line3, View.GONE);
+ }
+
+ if (mBigContentTitle != null && mBigContentTitle.equals("")) {
+ contentView.setViewVisibility(R.id.line1, View.GONE);
+ }
+
+ if (mSummaryText != null && !mSummaryText.equals("")) {
+ contentView.setViewVisibility(R.id.overflow_title, View.VISIBLE);
+ contentView.setTextViewText(R.id.overflow_title, mSummaryText);
+ }
+
+ return contentView;
+ }
+
+ public abstract Notification build();
}
/**
@@ -1528,12 +1639,31 @@
*
* @see Notification#bigContentView
*/
- public static class BigPictureStyle {
- private Builder mBuilder;
+ public static class BigPictureStyle extends Style {
private Bitmap mPicture;
+ public BigPictureStyle() {
+ }
+
public BigPictureStyle(Builder builder) {
- mBuilder = builder;
+ setBuilder(builder);
+ }
+
+ /**
+ * Overrides ContentTitle in the big form of the template.
+ * This defaults to the value passed to setContentTitle().
+ */
+ public BigPictureStyle setBigContentTitle(CharSequence title) {
+ internalSetBigContentTitle(title);
+ return this;
+ }
+
+ /**
+ * Set the first line of text after the detail section in the big form of the template.
+ */
+ public BigPictureStyle setSummaryText(CharSequence cs) {
+ internalSetSummaryText(cs);
+ return this;
}
public BigPictureStyle bigPicture(Bitmap b) {
@@ -1542,15 +1672,17 @@
}
private RemoteViews makeBigContentView() {
- RemoteViews contentView = mBuilder.applyStandardTemplateWithActions(R.layout.notification_template_big_picture);
+ RemoteViews contentView = getStandardView(R.layout.notification_template_big_picture);
contentView.setImageViewBitmap(R.id.big_picture, mPicture);
return contentView;
}
+ @Override
public Notification build() {
- Notification wip = mBuilder.getNotification();
+ checkBuilder();
+ Notification wip = mBuilder.buildUnstyled();
wip.bigContentView = makeBigContentView();
return wip;
}
@@ -1573,12 +1705,31 @@
*
* @see Notification#bigContentView
*/
- public static class BigTextStyle {
- private Builder mBuilder;
+ public static class BigTextStyle extends Style {
private CharSequence mBigText;
+ public BigTextStyle() {
+ }
+
public BigTextStyle(Builder builder) {
- mBuilder = builder;
+ setBuilder(builder);
+ }
+
+ /**
+ * Overrides ContentTitle in the big form of the template.
+ * This defaults to the value passed to setContentTitle().
+ */
+ public BigTextStyle setBigContentTitle(CharSequence title) {
+ internalSetBigContentTitle(title);
+ return this;
+ }
+
+ /**
+ * Set the first line of text after the detail section in the big form of the template.
+ */
+ public BigTextStyle setSummaryText(CharSequence cs) {
+ internalSetSummaryText(cs);
+ return this;
}
public BigTextStyle bigText(CharSequence cs) {
@@ -1587,17 +1738,18 @@
}
private RemoteViews makeBigContentView() {
- RemoteViews contentView = mBuilder.applyStandardTemplateWithActions(R.layout.notification_template_big_text);
-
+ RemoteViews contentView = getStandardView(R.layout.notification_template_big_text);
contentView.setTextViewText(R.id.big_text, mBigText);
contentView.setViewVisibility(R.id.big_text, View.VISIBLE);
- contentView.setTextViewText(R.id.text, ""); // XXX: what do do with this spot?
+ contentView.setViewVisibility(R.id.text2, View.GONE);
return contentView;
}
+ @Override
public Notification build() {
- Notification wip = mBuilder.getNotification();
+ checkBuilder();
+ Notification wip = mBuilder.buildUnstyled();
wip.bigContentView = makeBigContentView();
return wip;
}
@@ -1608,25 +1760,46 @@
*
* This class is a "rebuilder": It consumes a Builder object and modifies its behavior, like so:
* <pre class="prettyprint">
- * Notification noti = new Notification.DigestStyle(
+ * Notification noti = new Notification.InboxStyle(
* new Notification.Builder()
- * .setContentTitle("New mail from " + sender.toString())
+ * .setContentTitle("5 New mails from " + sender.toString())
* .setContentText(subject)
* .setSmallIcon(R.drawable.new_mail)
* .setLargeIcon(aBitmap))
* .addLine(str1)
* .addLine(str2)
+ * .setContentTitle("")
+ * .setSummaryText("+3 more")
* .build();
* </pre>
*
* @see Notification#bigContentView
*/
- public static class InboxStyle {
- private Builder mBuilder;
+ public static class InboxStyle extends Style {
private ArrayList<CharSequence> mTexts = new ArrayList<CharSequence>(5);
+ public InboxStyle() {
+ }
+
public InboxStyle(Builder builder) {
- mBuilder = builder;
+ setBuilder(builder);
+ }
+
+ /**
+ * Overrides ContentTitle in the big form of the template.
+ * This defaults to the value passed to setContentTitle().
+ */
+ public InboxStyle setBigContentTitle(CharSequence title) {
+ internalSetBigContentTitle(title);
+ return this;
+ }
+
+ /**
+ * Set the first line of text after the detail section in the big form of the template.
+ */
+ public InboxStyle setSummaryText(CharSequence cs) {
+ internalSetSummaryText(cs);
+ return this;
}
public InboxStyle addLine(CharSequence cs) {
@@ -1635,10 +1808,12 @@
}
private RemoteViews makeBigContentView() {
- RemoteViews contentView = mBuilder.applyStandardTemplateWithActions(R.layout.notification_template_inbox);
+ RemoteViews contentView = getStandardView(R.layout.notification_template_inbox);
+ contentView.setViewVisibility(R.id.text2, View.GONE);
- int[] rowIds = {R.id.inbox_text0, R.id.inbox_text1, R.id.inbox_text2, R.id.inbox_text3, R.id.inbox_text4};
-
+ int[] rowIds = {R.id.inbox_text0, R.id.inbox_text1, R.id.inbox_text2, R.id.inbox_text3,
+ R.id.inbox_text4};
+
int i=0;
while (i < mTexts.size() && i < rowIds.length) {
CharSequence str = mTexts.get(i);
@@ -1652,8 +1827,10 @@
return contentView;
}
+ @Override
public Notification build() {
- Notification wip = mBuilder.getNotification();
+ checkBuilder();
+ Notification wip = mBuilder.buildUnstyled();
wip.bigContentView = makeBigContentView();
return wip;
}
diff --git a/core/java/android/app/TaskStackBuilder.java b/core/java/android/app/TaskStackBuilder.java
index e2d28dd..14c5736 100644
--- a/core/java/android/app/TaskStackBuilder.java
+++ b/core/java/android/app/TaskStackBuilder.java
@@ -22,10 +22,10 @@
import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
+import android.os.Bundle;
import android.util.Log;
import java.util.ArrayList;
-import java.util.Iterator;
/**
* Utility class for constructing synthetic back stacks for cross-task navigation
@@ -56,7 +56,7 @@
* from the design guide.
* </div>
*/
-public class TaskStackBuilder implements Iterable<Intent> {
+public class TaskStackBuilder {
private static final String TAG = "TaskStackBuilder";
private final ArrayList<Intent> mIntents = new ArrayList<Intent>();
@@ -73,7 +73,7 @@
* @param context The context that will launch the new task stack or generate a PendingIntent
* @return A new TaskStackBuilder
*/
- public static TaskStackBuilder from(Context context) {
+ public static TaskStackBuilder create(Context context) {
return new TaskStackBuilder(context);
}
@@ -90,6 +90,30 @@
}
/**
+ * Add a new Intent with the resolved chain of parents for the target activity to
+ * the task stack.
+ *
+ * <p>This is equivalent to calling {@link #addParentStack(ComponentName) addParentStack}
+ * with the resolved ComponentName of nextIntent (if it can be resolved), followed by
+ * {@link #addNextIntent(Intent) addNextIntent} with nextIntent.</p>
+ *
+ * @param nextIntent Intent for the topmost Activity in the synthesized task stack.
+ * Its chain of parents as specified in the manifest will be added.
+ * @return This TaskStackBuilder for method chaining.
+ */
+ public TaskStackBuilder addNextIntentWithParentStack(Intent nextIntent) {
+ ComponentName target = nextIntent.getComponent();
+ if (target == null) {
+ target = nextIntent.resolveActivity(mSourceContext.getPackageManager());
+ }
+ if (target != null) {
+ addParentStack(target);
+ }
+ addNextIntent(nextIntent);
+ return this;
+ }
+
+ /**
* Add the activity parent chain as specified by the
* {@link Activity#getParentActivityIntent() getParentActivityIntent()} method of the activity
* specified and the {@link android.R.attr#parentActivityName parentActivityName} attributes
@@ -172,18 +196,12 @@
try {
ActivityInfo info = pm.getActivityInfo(sourceActivityName, 0);
String parentActivity = info.parentActivityName;
- Intent parent = new Intent().setComponent(
- new ComponentName(info.packageName, parentActivity));
- while (parent != null) {
+ while (parentActivity != null) {
+ Intent parent = new Intent().setComponent(
+ new ComponentName(info.packageName, parentActivity));
mIntents.add(insertAt, parent);
info = pm.getActivityInfo(parent.getComponent(), 0);
parentActivity = info.parentActivityName;
- if (parentActivity != null) {
- parent = new Intent().setComponent(
- new ComponentName(info.packageName, parentActivity));
- } else {
- parent = null;
- }
}
} catch (NameNotFoundException e) {
Log.e(TAG, "Bad ComponentName while traversing activity parent metadata");
@@ -200,25 +218,32 @@
}
/**
- * Get the intent at the specified index.
+ * Return the intent at the specified index for modification.
* Useful if you need to modify the flags or extras of an intent that was previously added,
* for example with {@link #addParentStack(Activity)}.
*
* @param index Index from 0-getIntentCount()
* @return the intent at position index
*/
- public Intent getIntent(int index) {
+ public Intent editIntentAt(int index) {
return mIntents.get(index);
}
- public Iterator<Intent> iterator() {
- return mIntents.iterator();
- }
-
/**
* Start the task stack constructed by this builder.
*/
public void startActivities() {
+ startActivities(null);
+ }
+
+ /**
+ * Start the task stack constructed by this builder.
+ *
+ * @param options Additional options for how the Activity should be started.
+ * See {@link android.content.Context#startActivity(Intent, Bundle)
+ * Context.startActivity(Intent, Bundle)} for more details.
+ */
+ public void startActivities(Bundle options) {
if (mIntents.isEmpty()) {
throw new IllegalStateException(
"No intents added to TaskStackBuilder; cannot startActivities");
@@ -228,7 +253,7 @@
intents[0].addFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
Intent.FLAG_ACTIVITY_CLEAR_TASK |
Intent.FLAG_ACTIVITY_TASK_ON_HOME);
- mSourceContext.startActivities(intents);
+ mSourceContext.startActivities(intents, options);
}
/**
@@ -240,9 +265,29 @@
* {@link PendingIntent#FLAG_UPDATE_CURRENT}, or any of the flags supported by
* {@link Intent#fillIn(Intent, int)} to control which unspecified parts of the
* intent that can be supplied when the actual send happens.
+ *
* @return The obtained PendingIntent
*/
public PendingIntent getPendingIntent(int requestCode, int flags) {
+ return getPendingIntent(requestCode, flags, null);
+ }
+
+ /**
+ * Obtain a {@link PendingIntent} for launching the task constructed by this builder so far.
+ *
+ * @param requestCode Private request code for the sender
+ * @param flags May be {@link PendingIntent#FLAG_ONE_SHOT},
+ * {@link PendingIntent#FLAG_NO_CREATE}, {@link PendingIntent#FLAG_CANCEL_CURRENT},
+ * {@link PendingIntent#FLAG_UPDATE_CURRENT}, or any of the flags supported by
+ * {@link Intent#fillIn(Intent, int)} to control which unspecified parts of the
+ * intent that can be supplied when the actual send happens.
+ * @param options Additional options for how the Activity should be started.
+ * See {@link android.content.Context#startActivity(Intent, Bundle)
+ * Context.startActivity(Intent, Bundle)} for more details.
+ *
+ * @return The obtained PendingIntent
+ */
+ public PendingIntent getPendingIntent(int requestCode, int flags, Bundle options) {
if (mIntents.isEmpty()) {
throw new IllegalStateException(
"No intents added to TaskStackBuilder; cannot getPendingIntent");
@@ -252,6 +297,17 @@
intents[0].addFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
Intent.FLAG_ACTIVITY_CLEAR_TASK |
Intent.FLAG_ACTIVITY_TASK_ON_HOME);
- return PendingIntent.getActivities(mSourceContext, requestCode, intents, flags);
+ return PendingIntent.getActivities(mSourceContext, requestCode, intents, flags, options);
+ }
+
+ /**
+ * Return an array containing the intents added to this builder. The intent at the
+ * root of the task stack will appear as the first item in the array and the
+ * intent at the top of the stack will appear as the last item.
+ *
+ * @return An array containing the intents added to this builder.
+ */
+ public Intent[] getIntents() {
+ return mIntents.toArray(new Intent[mIntents.size()]);
}
}
diff --git a/core/java/android/appwidget/AppWidgetHostView.java b/core/java/android/appwidget/AppWidgetHostView.java
index c707ea3..01b68d4 100644
--- a/core/java/android/appwidget/AppWidgetHostView.java
+++ b/core/java/android/appwidget/AppWidgetHostView.java
@@ -208,38 +208,51 @@
}
/**
- * Provide guidance about the size of this widget to the AppWidgetManager. This information
- * gets embedded into the AppWidgetExtras and causes a callback to the AppWidgetProvider.
- * @see AppWidgetProvider#onAppWidgetExtrasChanged(Context, AppWidgetManager, int, Bundle)
+ * Provide guidance about the size of this widget to the AppWidgetManager. The widths and
+ * heights should correspond to the full area the AppWidgetHostView is given. Padding added by
+ * the framework will be accounted for automatically. This information gets embedded into the
+ * AppWidget options and causes a callback to the AppWidgetProvider.
+ * @see AppWidgetProvider#onAppWidgetOptionsChanged(Context, AppWidgetManager, int, Bundle)
*
- * @param extras The bundle of extra information, in addition to the size information
+ * @param options The bundle of options, in addition to the size information,
* can be null.
* @param minWidth The minimum width that the widget will be displayed at.
* @param minHeight The maximum height that the widget will be displayed at.
- * @param maxWidth The maximum height that the widget will be displayed at.
+ * @param maxWidth The maximum width that the widget will be displayed at.
+ * @param maxHeight The maximum height that the widget will be displayed at.
*
*/
- public void updateAppWidgetSize(Bundle extras, int minWidth, int minHeight, int maxWidth,
+ public void updateAppWidgetSize(Bundle options, int minWidth, int minHeight, int maxWidth,
int maxHeight) {
- if (extras == null) {
- extras = new Bundle();
+ if (options == null) {
+ options = new Bundle();
}
- extras.putInt(AppWidgetManager.EXTRA_APPWIDGET_MIN_WIDTH, minWidth);
- extras.putInt(AppWidgetManager.EXTRA_APPWIDGET_MIN_HEIGHT, minHeight);
- extras.putInt(AppWidgetManager.EXTRA_APPWIDGET_MAX_WIDTH, maxWidth);
- extras.putInt(AppWidgetManager.EXTRA_APPWIDGET_MAX_HEIGHT, maxHeight);
- updateAppWidgetExtras(extras);
+
+ Rect padding = new Rect();
+ if (mInfo != null) {
+ padding = getDefaultPaddingForWidget(mContext, mInfo.provider, padding);
+ }
+ float density = getResources().getDisplayMetrics().density;
+
+ int xPaddingDips = (int) ((padding.left + padding.right) / density);
+ int yPaddingDips = (int) ((padding.top + padding.bottom) / density);
+
+ options.putInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH, minWidth - xPaddingDips);
+ options.putInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT, minHeight - yPaddingDips);
+ options.putInt(AppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH, maxWidth - xPaddingDips);
+ options.putInt(AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT, maxHeight - yPaddingDips);
+ updateAppWidgetOptions(options);
}
/**
* Specify some extra information for the widget provider. Causes a callback to the
* AppWidgetProvider.
- * @see AppWidgetProvider#onAppWidgetExtrasChanged(Context, AppWidgetManager, int, Bundle)
+ * @see AppWidgetProvider#onAppWidgetOptionsChanged(Context, AppWidgetManager, int, Bundle)
*
- * @param extras The bundle of extra information.
+ * @param options The bundle of options information.
*/
- public void updateAppWidgetExtras(Bundle extras) {
- AppWidgetManager.getInstance(mContext).updateAppWidgetExtras(mAppWidgetId, extras);
+ public void updateAppWidgetOptions(Bundle options) {
+ AppWidgetManager.getInstance(mContext).updateAppWidgetOptions(mAppWidgetId, options);
}
/** {@inheritDoc} */
diff --git a/core/java/android/appwidget/AppWidgetManager.java b/core/java/android/appwidget/AppWidgetManager.java
index f2e909e..7a8c1fb 100644
--- a/core/java/android/appwidget/AppWidgetManager.java
+++ b/core/java/android/appwidget/AppWidgetManager.java
@@ -152,28 +152,28 @@
/**
* An bundle extra that contains the lower bound on the current width, in dips, of a widget instance.
*/
- public static final String EXTRA_APPWIDGET_MIN_WIDTH = "appWidgetMinWidth";
+ public static final String OPTION_APPWIDGET_MIN_WIDTH = "appWidgetMinWidth";
/**
* An bundle extra that contains the lower bound on the current height, in dips, of a widget instance.
*/
- public static final String EXTRA_APPWIDGET_MIN_HEIGHT = "appWidgetMinHeight";
+ public static final String OPTION_APPWIDGET_MIN_HEIGHT = "appWidgetMinHeight";
/**
* An bundle extra that contains the upper bound on the current width, in dips, of a widget instance.
*/
- public static final String EXTRA_APPWIDGET_MAX_WIDTH = "appWidgetMaxWidth";
+ public static final String OPTION_APPWIDGET_MAX_WIDTH = "appWidgetMaxWidth";
/**
* An bundle extra that contains the upper bound on the current width, in dips, of a widget instance.
*/
- public static final String EXTRA_APPWIDGET_MAX_HEIGHT = "appWidgetMaxHeight";
+ public static final String OPTION_APPWIDGET_MAX_HEIGHT = "appWidgetMaxHeight";
/**
* An intent extra which points to a bundle of extra information for a particular widget id.
* In particular this bundle can contain EXTRA_APPWIDGET_WIDTH and EXTRA_APPWIDGET_HEIGHT.
*/
- public static final String EXTRA_APPWIDGET_EXTRAS = "appWidgetExtras";
+ public static final String EXTRA_APPWIDGET_OPTIONS = "appWidgetOptions";
/**
* An intent extra that contains multiple appWidgetIds.
@@ -240,7 +240,7 @@
* @see AppWidgetProvider#onAppWidgetExtrasChanged AppWidgetProvider#onAppWidgetExtrasChanged(
* Context context, AppWidgetManager appWidgetManager, int appWidgetId, Bundle newExtras)
*/
- public static final String ACTION_APPWIDGET_EXTRAS_CHANGED = "android.appwidget.action.APPWIDGET_UPDATE_EXTRAS";
+ public static final String ACTION_APPWIDGET_OPTIONS_CHANGED = "android.appwidget.action.APPWIDGET_UPDATE_OPTIONS";
/**
* Sent when an instance of an AppWidget is deleted from its host.
@@ -339,14 +339,14 @@
* The extras can be used to embed additional information about this widget to be accessed
* by the associated widget's AppWidgetProvider.
*
- * @see #getAppWidgetExtras(int)
+ * @see #getAppWidgetOptions(int)
*
* @param appWidgetId The AppWidget instances for which to set the RemoteViews.
- * @param extras The extras to associate with this widget
+ * @param options The options to associate with this widget
*/
- public void updateAppWidgetExtras(int appWidgetId, Bundle extras) {
+ public void updateAppWidgetOptions(int appWidgetId, Bundle options) {
try {
- sService.updateAppWidgetExtras(appWidgetId, extras);
+ sService.updateAppWidgetOptions(appWidgetId, options);
}
catch (RemoteException e) {
throw new RuntimeException("system server dead?", e);
@@ -359,14 +359,14 @@
* The extras can be used to embed additional information about this widget to be accessed
* by the associated widget's AppWidgetProvider.
*
- * @see #updateAppWidgetExtras(int, Bundle)
+ * @see #updateAppWidgetOptions(int, Bundle)
*
* @param appWidgetId The AppWidget instances for which to set the RemoteViews.
- * @return The extras associated with the given widget instance.
+ * @return The options associated with the given widget instance.
*/
- public Bundle getAppWidgetExtras(int appWidgetId) {
+ public Bundle getAppWidgetOptions(int appWidgetId) {
try {
- return sService.getAppWidgetExtras(appWidgetId);
+ return sService.getAppWidgetOptions(appWidgetId);
}
catch (RemoteException e) {
throw new RuntimeException("system server dead?", e);
diff --git a/core/java/android/appwidget/AppWidgetProvider.java b/core/java/android/appwidget/AppWidgetProvider.java
index 3cf40ae..edf142b 100755
--- a/core/java/android/appwidget/AppWidgetProvider.java
+++ b/core/java/android/appwidget/AppWidgetProvider.java
@@ -74,13 +74,13 @@
this.onDeleted(context, new int[] { appWidgetId });
}
}
- else if (AppWidgetManager.ACTION_APPWIDGET_EXTRAS_CHANGED.equals(action)) {
+ else if (AppWidgetManager.ACTION_APPWIDGET_OPTIONS_CHANGED.equals(action)) {
Bundle extras = intent.getExtras();
if (extras != null && extras.containsKey(AppWidgetManager.EXTRA_APPWIDGET_ID)
- && extras.containsKey(AppWidgetManager.EXTRA_APPWIDGET_EXTRAS)) {
+ && extras.containsKey(AppWidgetManager.EXTRA_APPWIDGET_OPTIONS)) {
int appWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID);
- Bundle widgetExtras = extras.getBundle(AppWidgetManager.EXTRA_APPWIDGET_EXTRAS);
- this.onAppWidgetExtrasChanged(context, AppWidgetManager.getInstance(context),
+ Bundle widgetExtras = extras.getBundle(AppWidgetManager.EXTRA_APPWIDGET_OPTIONS);
+ this.onAppWidgetOptionsChanged(context, AppWidgetManager.getInstance(context),
appWidgetId, widgetExtras);
}
}
@@ -114,7 +114,7 @@
}
/**
- * Called in response to the {@link AppWidgetManager#ACTION_APPWIDGET_EXTRAS_CHANGED}
+ * Called in response to the {@link AppWidgetManager#ACTION_APPWIDGET_OPTIONS_CHANGED}
* broadcast when this widget has been layed out at a new size.
*
* {@more}
@@ -124,12 +124,12 @@
* @param appWidgetManager A {@link AppWidgetManager} object you can call {@link
* AppWidgetManager#updateAppWidget} on.
* @param appWidgetId The appWidgetId of the widget who's size changed.
- * @param newExtras The appWidgetId of the widget who's size changed.
+ * @param newOptions The appWidgetId of the widget who's size changed.
*
- * @see AppWidgetManager#ACTION_APPWIDGET_EXTRAS_CHANGED
+ * @see AppWidgetManager#ACTION_APPWIDGET_OPTIONS_CHANGED
*/
- public void onAppWidgetExtrasChanged(Context context, AppWidgetManager appWidgetManager,
- int appWidgetId, Bundle newExtras) {
+ public void onAppWidgetOptionsChanged(Context context, AppWidgetManager appWidgetManager,
+ int appWidgetId, Bundle newOptions) {
}
/**
diff --git a/core/java/android/content/AbstractThreadedSyncAdapter.java b/core/java/android/content/AbstractThreadedSyncAdapter.java
index 6bffed7..bafe67d 100644
--- a/core/java/android/content/AbstractThreadedSyncAdapter.java
+++ b/core/java/android/content/AbstractThreadedSyncAdapter.java
@@ -21,6 +21,7 @@
import android.os.IBinder;
import android.os.Process;
import android.os.RemoteException;
+import android.os.Trace;
import java.util.HashMap;
import java.util.concurrent.atomic.AtomicInteger;
@@ -233,9 +234,15 @@
mThreadsKey = toSyncKey(account);
}
+ @Override
public void run() {
Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
+ // Trace this sync instance. Note, conceptually this should be in
+ // SyncStorageEngine.insertStartSyncEvent(), but the trace functions require unique
+ // threads in order to track overlapping operations, so we'll do it here for now.
+ Trace.traceBegin(Trace.TRACE_TAG_SYNC_MANAGER, mAuthority);
+
SyncResult syncResult = new SyncResult();
ContentProviderClient provider = null;
try {
@@ -250,6 +257,8 @@
syncResult.databaseError = true;
}
} finally {
+ Trace.traceEnd(Trace.TRACE_TAG_SYNC_MANAGER);
+
if (provider != null) {
provider.release();
}
diff --git a/core/java/android/content/AsyncTaskLoader.java b/core/java/android/content/AsyncTaskLoader.java
index da51952..f9025d9 100644
--- a/core/java/android/content/AsyncTaskLoader.java
+++ b/core/java/android/content/AsyncTaskLoader.java
@@ -18,6 +18,7 @@
import android.os.AsyncTask;
import android.os.Handler;
+import android.os.OperationCanceledException;
import android.os.SystemClock;
import android.util.Slog;
import android.util.TimeUtils;
diff --git a/core/java/android/content/ContentProvider.java b/core/java/android/content/ContentProvider.java
index 1206056..b22179e 100644
--- a/core/java/android/content/ContentProvider.java
+++ b/core/java/android/content/ContentProvider.java
@@ -29,6 +29,9 @@
import android.os.AsyncTask;
import android.os.Binder;
import android.os.Bundle;
+import android.os.CancellationSignal;
+import android.os.ICancellationSignal;
+import android.os.OperationCanceledException;
import android.os.ParcelFileDescriptor;
import android.os.Process;
import android.os.RemoteException;
diff --git a/core/java/android/content/ContentProviderClient.java b/core/java/android/content/ContentProviderClient.java
index 3ac5e07..da2ab94 100644
--- a/core/java/android/content/ContentProviderClient.java
+++ b/core/java/android/content/ContentProviderClient.java
@@ -19,6 +19,8 @@
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
+import android.os.CancellationSignal;
+import android.os.ICancellationSignal;
import android.os.RemoteException;
import android.os.ParcelFileDescriptor;
import android.content.res.AssetFileDescriptor;
diff --git a/core/java/android/content/ContentProviderNative.java b/core/java/android/content/ContentProviderNative.java
index 4b31552..550a1c9 100644
--- a/core/java/android/content/ContentProviderNative.java
+++ b/core/java/android/content/ContentProviderNative.java
@@ -30,6 +30,7 @@
import android.os.Bundle;
import android.os.RemoteException;
import android.os.IBinder;
+import android.os.ICancellationSignal;
import android.os.Parcel;
import android.os.ParcelFileDescriptor;
import android.os.Parcelable;
diff --git a/core/java/android/content/ContentResolver.java b/core/java/android/content/ContentResolver.java
index 722fdc6..d4bca0a 100644
--- a/core/java/android/content/ContentResolver.java
+++ b/core/java/android/content/ContentResolver.java
@@ -33,7 +33,10 @@
import android.database.IContentObserver;
import android.net.Uri;
import android.os.Bundle;
+import android.os.CancellationSignal;
import android.os.IBinder;
+import android.os.ICancellationSignal;
+import android.os.OperationCanceledException;
import android.os.ParcelFileDescriptor;
import android.os.RemoteException;
import android.os.ServiceManager;
diff --git a/core/java/android/content/CursorLoader.java b/core/java/android/content/CursorLoader.java
index aed3728..9f7a104 100644
--- a/core/java/android/content/CursorLoader.java
+++ b/core/java/android/content/CursorLoader.java
@@ -19,6 +19,8 @@
import android.database.ContentObserver;
import android.database.Cursor;
import android.net.Uri;
+import android.os.CancellationSignal;
+import android.os.OperationCanceledException;
import java.io.FileDescriptor;
import java.io.PrintWriter;
diff --git a/core/java/android/content/IContentProvider.java b/core/java/android/content/IContentProvider.java
index 16478b7..eeba1e0 100644
--- a/core/java/android/content/IContentProvider.java
+++ b/core/java/android/content/IContentProvider.java
@@ -21,6 +21,7 @@
import android.net.Uri;
import android.os.Bundle;
import android.os.IBinder;
+import android.os.ICancellationSignal;
import android.os.IInterface;
import android.os.ParcelFileDescriptor;
import android.os.RemoteException;
diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java
index d0d9bd6..4ed6f25 100644
--- a/core/java/android/content/Intent.java
+++ b/core/java/android/content/Intent.java
@@ -1099,6 +1099,14 @@
@SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
public static final String ACTION_WEB_SEARCH = "android.intent.action.WEB_SEARCH";
/**
+ * Activity Action: Perform assist action.
+ * <p>
+ * Input: nothing
+ * Output: nothing.
+ */
+ @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
+ public static final String ACTION_ASSIST = "android.intent.action.ASSIST";
+ /**
* Activity Action: List all available applications
* <p>Input: Nothing.
* <p>Output: nothing.
@@ -1240,7 +1248,11 @@
* Used as a boolean extra field with {@link #ACTION_INSTALL_PACKAGE} to install a
* package. Tells the installer UI to skip the confirmation with the user
* if the .apk is replacing an existing one.
+ * @deprecated As of {@link android.os.Build.VERSION_CODES#JELLY_BEAN}, Android
+ * will no longer show an interstitial message about updating existing
+ * applications so this is no longer needed.
*/
+ @Deprecated
public static final String EXTRA_ALLOW_REPLACE
= "android.intent.extra.ALLOW_REPLACE";
@@ -6588,59 +6600,57 @@
final String action = getAction();
if (ACTION_SEND.equals(action)) {
- Uri stream = null;
try {
- stream = getParcelableExtra(EXTRA_STREAM);
+ final Uri stream = getParcelableExtra(EXTRA_STREAM);
+ final CharSequence text = getCharSequenceExtra(EXTRA_TEXT);
+ final String htmlText = getStringExtra(EXTRA_HTML_TEXT);
+ if (stream != null || text != null || htmlText != null) {
+ final ClipData clipData = new ClipData(
+ null, new String[] { getType() },
+ new ClipData.Item(text, htmlText, null, stream));
+ setClipData(clipData);
+ addFlags(FLAG_GRANT_READ_URI_PERMISSION);
+ }
} catch (ClassCastException e) {
}
- final CharSequence text = getCharSequenceExtra(EXTRA_TEXT);
- final String htmlText = getStringExtra(EXTRA_HTML_TEXT);
- if (stream != null || text != null || htmlText != null) {
- final ClipData clipData = new ClipData(
- null, new String[] { getType() },
- new ClipData.Item(text, htmlText, null, stream));
- setClipData(clipData);
- addFlags(FLAG_GRANT_READ_URI_PERMISSION);
- }
} else if (ACTION_SEND_MULTIPLE.equals(action)) {
- ArrayList<Uri> streams = null;
try {
- streams = getParcelableArrayListExtra(EXTRA_STREAM);
+ final ArrayList<Uri> streams = getParcelableArrayListExtra(EXTRA_STREAM);
+ final ArrayList<CharSequence> texts = getCharSequenceArrayListExtra(EXTRA_TEXT);
+ final ArrayList<String> htmlTexts = getStringArrayListExtra(EXTRA_HTML_TEXT);
+ int num = -1;
+ if (streams != null) {
+ num = streams.size();
+ }
+ if (texts != null) {
+ if (num >= 0 && num != texts.size()) {
+ // Wha...! F- you.
+ return;
+ }
+ num = texts.size();
+ }
+ if (htmlTexts != null) {
+ if (num >= 0 && num != htmlTexts.size()) {
+ // Wha...! F- you.
+ return;
+ }
+ num = htmlTexts.size();
+ }
+ if (num > 0) {
+ final ClipData clipData = new ClipData(
+ null, new String[] { getType() },
+ makeClipItem(streams, texts, htmlTexts, 0));
+
+ for (int i = 1; i < num; i++) {
+ clipData.addItem(makeClipItem(streams, texts, htmlTexts, i));
+ }
+
+ setClipData(clipData);
+ addFlags(FLAG_GRANT_READ_URI_PERMISSION);
+ }
} catch (ClassCastException e) {
}
- final ArrayList<CharSequence> texts = getCharSequenceArrayListExtra(EXTRA_TEXT);
- final ArrayList<String> htmlTexts = getStringArrayListExtra(EXTRA_HTML_TEXT);
- int num = -1;
- if (streams != null) {
- num = streams.size();
- }
- if (texts != null) {
- if (num >= 0 && num != texts.size()) {
- // Wha...! F- you.
- return;
- }
- num = texts.size();
- }
- if (htmlTexts != null) {
- if (num >= 0 && num != htmlTexts.size()) {
- // Wha...! F- you.
- return;
- }
- num = htmlTexts.size();
- }
- if (num > 0) {
- final ClipData clipData = new ClipData(
- null, new String[] { getType() },
- makeClipItem(streams, texts, htmlTexts, 0));
-
- for (int i = 1; i < num; i++) {
- clipData.addItem(makeClipItem(streams, texts, htmlTexts, i));
- }
-
- setClipData(clipData);
- addFlags(FLAG_GRANT_READ_URI_PERMISSION);
- }
}
}
diff --git a/core/java/android/content/SyncManager.java b/core/java/android/content/SyncManager.java
index 34c40a0..badcb03 100644
--- a/core/java/android/content/SyncManager.java
+++ b/core/java/android/content/SyncManager.java
@@ -17,7 +17,6 @@
package android.content;
import com.android.internal.R;
-import com.android.internal.util.ArrayUtils;
import com.google.android.collect.Lists;
import com.google.android.collect.Maps;
@@ -32,7 +31,6 @@
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
-import android.app.DownloadManager.Request;
import android.content.SyncStorageEngine.OnSyncRequestListener;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
@@ -1998,6 +1996,7 @@
ActiveSyncContext conflict = null;
ActiveSyncContext longRunning = null;
ActiveSyncContext toReschedule = null;
+ ActiveSyncContext oldestNonExpeditedRegular = null;
for (ActiveSyncContext activeSyncContext : mActiveSyncContexts) {
final SyncOperation activeOp = activeSyncContext.mSyncOperation;
@@ -2005,6 +2004,13 @@
numInit++;
} else {
numRegular++;
+ if (!activeOp.isExpedited()) {
+ if (oldestNonExpeditedRegular == null
+ || (oldestNonExpeditedRegular.mStartTime
+ > activeSyncContext.mStartTime)) {
+ oldestNonExpeditedRegular = activeSyncContext;
+ }
+ }
}
if (activeOp.account.type.equals(candidate.account.type)
&& activeOp.authority.equals(candidate.authority)
@@ -2027,8 +2033,13 @@
Log.v(TAG, " numActiveInit=" + numInit + ", numActiveRegular=" + numRegular);
Log.v(TAG, " longRunning: " + longRunning);
Log.v(TAG, " conflict: " + conflict);
+ Log.v(TAG, " oldestNonExpeditedRegular: " + oldestNonExpeditedRegular);
}
+ final boolean roomAvailable = candidateIsInitialization
+ ? numInit < MAX_SIMULTANEOUS_INITIALIZATION_SYNCS
+ : numRegular < MAX_SIMULTANEOUS_REGULAR_SYNCS;
+
if (conflict != null) {
if (candidateIsInitialization && !conflict.mSyncOperation.isInitialization()
&& numInit < MAX_SIMULTANEOUS_INITIALIZATION_SYNCS) {
@@ -2048,23 +2059,32 @@
} else {
continue;
}
- } else {
- final boolean roomAvailable = candidateIsInitialization
- ? numInit < MAX_SIMULTANEOUS_INITIALIZATION_SYNCS
- : numRegular < MAX_SIMULTANEOUS_REGULAR_SYNCS;
- if (roomAvailable) {
- // dispatch candidate
- } else if (longRunning != null
- && (candidateIsInitialization
- == longRunning.mSyncOperation.isInitialization())) {
- toReschedule = longRunning;
- if (Log.isLoggable(TAG, Log.VERBOSE)) {
- Log.v(TAG, "canceling and rescheduling sync since it ran roo long, "
- + longRunning);
- }
- } else {
- continue;
+ } else if (roomAvailable) {
+ // dispatch candidate
+ } else if (candidate.isExpedited() && oldestNonExpeditedRegular != null
+ && !candidateIsInitialization) {
+ // We found an active, non-expedited regular sync. We also know that the
+ // candidate doesn't conflict with this active sync since conflict
+ // is null. Reschedule the active sync and start the candidate.
+ toReschedule = oldestNonExpeditedRegular;
+ if (Log.isLoggable(TAG, Log.VERBOSE)) {
+ Log.v(TAG, "canceling and rescheduling sync since an expedited is ready to run, "
+ + oldestNonExpeditedRegular);
}
+ } else if (longRunning != null
+ && (candidateIsInitialization
+ == longRunning.mSyncOperation.isInitialization())) {
+ // We found an active, long-running sync. Reschedule the active
+ // sync and start the candidate.
+ toReschedule = longRunning;
+ if (Log.isLoggable(TAG, Log.VERBOSE)) {
+ Log.v(TAG, "canceling and rescheduling sync since it ran roo long, "
+ + longRunning);
+ }
+ } else {
+ // we were unable to find or make space to run this candidate, go on to
+ // the next one
+ continue;
}
if (toReschedule != null) {
@@ -2516,7 +2536,7 @@
return mSyncStorageEngine.insertStartSyncEvent(
syncOperation.account, syncOperation.userId, syncOperation.authority,
- now, source);
+ now, source, syncOperation.isInitialization());
}
public void stopSyncEvent(long rowId, SyncOperation syncOperation, String resultMessage,
diff --git a/core/java/android/content/SyncOperation.java b/core/java/android/content/SyncOperation.java
index 4e86ef8..9fcc22d 100644
--- a/core/java/android/content/SyncOperation.java
+++ b/core/java/android/content/SyncOperation.java
@@ -116,6 +116,10 @@
return extras.getBoolean(ContentResolver.SYNC_EXTRAS_INITIALIZE, false);
}
+ public boolean isExpedited() {
+ return extras.getBoolean(ContentResolver.SYNC_EXTRAS_EXPEDITED, false);
+ }
+
public boolean ignoreBackoff() {
return extras.getBoolean(ContentResolver.SYNC_EXTRAS_IGNORE_BACKOFF, false);
}
diff --git a/core/java/android/content/SyncStorageEngine.java b/core/java/android/content/SyncStorageEngine.java
index d821918..226e107 100644
--- a/core/java/android/content/SyncStorageEngine.java
+++ b/core/java/android/content/SyncStorageEngine.java
@@ -197,6 +197,29 @@
long delayUntil;
final ArrayList<Pair<Bundle, Long>> periodicSyncs;
+ /**
+ * Copy constructor for making deep-ish copies. Only the bundles stored
+ * in periodic syncs can make unexpected changes.
+ *
+ * @param toCopy AuthorityInfo to be copied.
+ */
+ AuthorityInfo(AuthorityInfo toCopy) {
+ account = toCopy.account;
+ userId = toCopy.userId;
+ authority = toCopy.authority;
+ ident = toCopy.ident;
+ enabled = toCopy.enabled;
+ syncable = toCopy.syncable;
+ backoffTime = toCopy.backoffTime;
+ backoffDelay = toCopy.backoffDelay;
+ delayUntil = toCopy.delayUntil;
+ periodicSyncs = new ArrayList<Pair<Bundle, Long>>();
+ for (Pair<Bundle, Long> sync : toCopy.periodicSyncs) {
+ // Still not a perfect copy, because we are just copying the mappings.
+ periodicSyncs.add(Pair.create(new Bundle(sync.first), sync.second));
+ }
+ }
+
AuthorityInfo(Account account, int userId, String authority, int ident) {
this.account = account;
this.userId = userId;
@@ -221,6 +244,7 @@
long upstreamActivity;
long downstreamActivity;
String mesg;
+ boolean initialization;
}
public static class DayStats {
@@ -1012,7 +1036,7 @@
* Note that sync has started for the given account and authority.
*/
public long insertStartSyncEvent(Account accountName, int userId, String authorityName,
- long now, int source) {
+ long now, int source, boolean initialization) {
long id;
synchronized (mAuthorities) {
if (Log.isLoggable(TAG, Log.VERBOSE)) {
@@ -1025,6 +1049,7 @@
return -1;
}
SyncHistoryItem item = new SyncHistoryItem();
+ item.initialization = initialization;
item.authorityId = authority.ident;
item.historyId = mNextHistoryId++;
if (mNextHistoryId < 0) mNextHistoryId = 0;
@@ -1210,7 +1235,8 @@
final int N = mAuthorities.size();
ArrayList<AuthorityInfo> infos = new ArrayList<AuthorityInfo>(N);
for (int i=0; i<N; i++) {
- infos.add(mAuthorities.valueAt(i));
+ // Make deep copy because AuthorityInfo syncs are liable to change.
+ infos.add(new AuthorityInfo(mAuthorities.valueAt(i)));
}
return infos;
}
diff --git a/core/java/android/content/pm/ApplicationInfo.java b/core/java/android/content/pm/ApplicationInfo.java
index cbabc7c..e1434b3 100644
--- a/core/java/android/content/pm/ApplicationInfo.java
+++ b/core/java/android/content/pm/ApplicationInfo.java
@@ -298,6 +298,7 @@
* activity's manifest.
*
* Default value is false (no support for RTL).
+ * @hide
*/
public static final int FLAG_SUPPORTS_RTL = 1<<22;
diff --git a/core/java/android/content/ICancellationSignal.aidl b/core/java/android/content/pm/ContainerEncryptionParams.aidl
similarity index 70%
copy from core/java/android/content/ICancellationSignal.aidl
copy to core/java/android/content/pm/ContainerEncryptionParams.aidl
index cf1c5d3..c13d946 100644
--- a/core/java/android/content/ICancellationSignal.aidl
+++ b/core/java/android/content/pm/ContainerEncryptionParams.aidl
@@ -1,11 +1,11 @@
/*
- * Copyright (C) 2012 The Android Open Source Project
+ * Copyright 2012, 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
+ * 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,
@@ -14,11 +14,6 @@
* limitations under the License.
*/
-package android.content;
+package android.content.pm;
-/**
- * @hide
- */
-interface ICancellationSignal {
- oneway void cancel();
-}
+parcelable ContainerEncryptionParams;
diff --git a/core/java/android/content/pm/ContainerEncryptionParams.java b/core/java/android/content/pm/ContainerEncryptionParams.java
new file mode 100644
index 0000000..5b1440d
--- /dev/null
+++ b/core/java/android/content/pm/ContainerEncryptionParams.java
@@ -0,0 +1,378 @@
+/*
+ * Copyright (C) 2012 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 android.content.pm;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.text.TextUtils;
+import android.util.Slog;
+
+import java.security.InvalidAlgorithmParameterException;
+import java.security.spec.AlgorithmParameterSpec;
+import java.util.Arrays;
+
+import javax.crypto.SecretKey;
+import javax.crypto.spec.IvParameterSpec;
+
+/**
+ * Represents encryption parameters used to read a container.
+ *
+ * @hide
+ */
+public class ContainerEncryptionParams implements Parcelable {
+ protected static final String TAG = "ContainerEncryptionParams";
+
+ /** What we print out first when toString() is called. */
+ private static final String TO_STRING_PREFIX = "ContainerEncryptionParams{";
+
+ /**
+ * Parameter type for parceling that indicates the next parameters are
+ * IvParameters.
+ */
+ private static final int ENC_PARAMS_IV_PARAMETERS = 1;
+
+ /** Parameter type for paceling that indicates there are no MAC parameters. */
+ private static final int MAC_PARAMS_NONE = 1;
+
+ /** The encryption algorithm used. */
+ private final String mEncryptionAlgorithm;
+
+ /** The parameter spec to be used for encryption. */
+ private final IvParameterSpec mEncryptionSpec;
+
+ /** Secret key to be used for decryption. */
+ private final SecretKey mEncryptionKey;
+
+ /** Algorithm name for the MAC to be used. */
+ private final String mMacAlgorithm;
+
+ /** The parameter spec to be used for the MAC tag authentication. */
+ private final AlgorithmParameterSpec mMacSpec;
+
+ /** Secret key to be used for MAC tag authentication. */
+ private final SecretKey mMacKey;
+
+ /** MAC tag authenticating the data in the container. */
+ private final byte[] mMacTag;
+
+ /** Offset into file where authenticated (e.g., MAC protected) data begins. */
+ private final int mAuthenticatedDataStart;
+
+ /** Offset into file where encrypted data begins. */
+ private final int mEncryptedDataStart;
+
+ /**
+ * Offset into file for the end of encrypted data (and, by extension,
+ * authenticated data) in file.
+ */
+ private final int mDataEnd;
+
+ public ContainerEncryptionParams(String encryptionAlgorithm,
+ AlgorithmParameterSpec encryptionSpec, SecretKey encryptionKey)
+ throws InvalidAlgorithmParameterException {
+ this(encryptionAlgorithm, encryptionSpec, encryptionKey, null, null, null, null, -1, -1,
+ -1);
+ }
+
+ /**
+ * Creates container encryption specifications for installing from encrypted
+ * containers.
+ *
+ * @param encryptionAlgorithm encryption algorithm to use; format matches
+ * JCE
+ * @param encryptionSpec algorithm parameter specification
+ * @param encryptionKey key used for decryption
+ * @param macAlgorithm MAC algorithm to use; format matches JCE
+ * @param macSpec algorithm parameters specification, may be {@code null}
+ * @param macKey key used for authentication (i.e., for the MAC tag)
+ * @param authenticatedDataStart offset of start of authenticated data in
+ * stream
+ * @param encryptedDataStart offset of start of encrypted data in stream
+ * @param dataEnd offset of the end of both the authenticated and encrypted
+ * data
+ * @throws InvalidAlgorithmParameterException
+ */
+ public ContainerEncryptionParams(String encryptionAlgorithm,
+ AlgorithmParameterSpec encryptionSpec, SecretKey encryptionKey, String macAlgorithm,
+ AlgorithmParameterSpec macSpec, SecretKey macKey, byte[] macTag,
+ int authenticatedDataStart, int encryptedDataStart, int dataEnd)
+ throws InvalidAlgorithmParameterException {
+ if (TextUtils.isEmpty(encryptionAlgorithm)) {
+ throw new NullPointerException("algorithm == null");
+ } else if (encryptionSpec == null) {
+ throw new NullPointerException("encryptionSpec == null");
+ } else if (encryptionKey == null) {
+ throw new NullPointerException("encryptionKey == null");
+ }
+
+ if (!TextUtils.isEmpty(macAlgorithm)) {
+ if (macKey == null) {
+ throw new NullPointerException("macKey == null");
+ }
+ }
+
+ if (!(encryptionSpec instanceof IvParameterSpec)) {
+ throw new InvalidAlgorithmParameterException(
+ "Unknown parameter spec class; must be IvParameters");
+ }
+
+ mEncryptionAlgorithm = encryptionAlgorithm;
+ mEncryptionSpec = (IvParameterSpec) encryptionSpec;
+ mEncryptionKey = encryptionKey;
+
+ mMacAlgorithm = macAlgorithm;
+ mMacSpec = macSpec;
+ mMacKey = macKey;
+ mMacTag = macTag;
+
+ mAuthenticatedDataStart = authenticatedDataStart;
+ mEncryptedDataStart = encryptedDataStart;
+ mDataEnd = dataEnd;
+ }
+
+ public String getEncryptionAlgorithm() {
+ return mEncryptionAlgorithm;
+ }
+
+ public AlgorithmParameterSpec getEncryptionSpec() {
+ return mEncryptionSpec;
+ }
+
+ public SecretKey getEncryptionKey() {
+ return mEncryptionKey;
+ }
+
+ public String getMacAlgorithm() {
+ return mMacAlgorithm;
+ }
+
+ public AlgorithmParameterSpec getMacSpec() {
+ return mMacSpec;
+ }
+
+ public SecretKey getMacKey() {
+ return mMacKey;
+ }
+
+ public byte[] getMacTag() {
+ return mMacTag;
+ }
+
+ public int getAuthenticatedDataStart() {
+ return mAuthenticatedDataStart;
+ }
+
+ public int getEncryptedDataStart() {
+ return mEncryptedDataStart;
+ }
+
+ public int getDataEnd() {
+ return mDataEnd;
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+
+ if (!(o instanceof ContainerEncryptionParams)) {
+ return false;
+ }
+
+ final ContainerEncryptionParams other = (ContainerEncryptionParams) o;
+
+ // Primitive comparison
+ if ((mAuthenticatedDataStart != other.mAuthenticatedDataStart)
+ || (mEncryptedDataStart != other.mEncryptedDataStart)
+ || (mDataEnd != other.mDataEnd)) {
+ return false;
+ }
+
+ // String comparison
+ if (!mEncryptionAlgorithm.equals(other.mEncryptionAlgorithm)
+ || !mMacAlgorithm.equals(other.mMacAlgorithm)) {
+ return false;
+ }
+
+ // Object comparison
+ if (!isSecretKeyEqual(mEncryptionKey, other.mEncryptionKey)
+ || !isSecretKeyEqual(mMacKey, other.mMacKey)) {
+ return false;
+ }
+
+ if (!Arrays.equals(mEncryptionSpec.getIV(), other.mEncryptionSpec.getIV())
+ || !Arrays.equals(mMacTag, other.mMacTag) || (mMacSpec != other.mMacSpec)) {
+ return false;
+ }
+
+ return true;
+ }
+
+ private static final boolean isSecretKeyEqual(SecretKey key1, SecretKey key2) {
+ final String keyFormat = key1.getFormat();
+ final String otherKeyFormat = key2.getFormat();
+
+ if (keyFormat == null) {
+ if (keyFormat != otherKeyFormat) {
+ return false;
+ }
+
+ if (key1.getEncoded() != key2.getEncoded()) {
+ return false;
+ }
+ } else {
+ if (!keyFormat.equals(key2.getFormat())) {
+ return false;
+ }
+
+ if (!Arrays.equals(key1.getEncoded(), key2.getEncoded())) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 3;
+
+ hash += 5 * mEncryptionAlgorithm.hashCode();
+ hash += 7 * Arrays.hashCode(mEncryptionSpec.getIV());
+ hash += 11 * mEncryptionKey.hashCode();
+ hash += 13 * mMacAlgorithm.hashCode();
+ hash += 17 * mMacKey.hashCode();
+ hash += 19 * Arrays.hashCode(mMacTag);
+ hash += 23 * mAuthenticatedDataStart;
+ hash += 29 * mEncryptedDataStart;
+ hash += 31 * mDataEnd;
+
+ return hash;
+ }
+
+ @Override
+ public String toString() {
+ final StringBuilder sb = new StringBuilder(TO_STRING_PREFIX);
+
+ sb.append("mEncryptionAlgorithm=\"");
+ sb.append(mEncryptionAlgorithm);
+ sb.append("\",");
+ sb.append("mEncryptionSpec=");
+ sb.append(mEncryptionSpec.toString());
+ sb.append("mEncryptionKey=");
+ sb.append(mEncryptionKey.toString());
+
+ sb.append("mMacAlgorithm=\"");
+ sb.append(mMacAlgorithm);
+ sb.append("\",");
+ sb.append("mMacSpec=");
+ sb.append(mMacSpec.toString());
+ sb.append("mMacKey=");
+ sb.append(mMacKey.toString());
+
+ sb.append(",mAuthenticatedDataStart=");
+ sb.append(mAuthenticatedDataStart);
+ sb.append(",mEncryptedDataStart=");
+ sb.append(mEncryptedDataStart);
+ sb.append(",mDataEnd=");
+ sb.append(mDataEnd);
+ sb.append('}');
+
+ return sb.toString();
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeString(mEncryptionAlgorithm);
+ dest.writeInt(ENC_PARAMS_IV_PARAMETERS);
+ dest.writeByteArray(mEncryptionSpec.getIV());
+ dest.writeSerializable(mEncryptionKey);
+
+ dest.writeString(mMacAlgorithm);
+ dest.writeInt(MAC_PARAMS_NONE);
+ dest.writeByteArray(new byte[0]);
+ dest.writeSerializable(mMacKey);
+
+ dest.writeByteArray(mMacTag);
+
+ dest.writeInt(mAuthenticatedDataStart);
+ dest.writeInt(mEncryptedDataStart);
+ dest.writeInt(mDataEnd);
+ }
+
+ private ContainerEncryptionParams(Parcel source) throws InvalidAlgorithmParameterException {
+ mEncryptionAlgorithm = source.readString();
+ final int encParamType = source.readInt();
+ final byte[] encParamsEncoded = source.createByteArray();
+ mEncryptionKey = (SecretKey) source.readSerializable();
+
+ mMacAlgorithm = source.readString();
+ final int macParamType = source.readInt();
+ source.createByteArray(); // byte[] macParamsEncoded
+ mMacKey = (SecretKey) source.readSerializable();
+
+ mMacTag = source.createByteArray();
+
+ mAuthenticatedDataStart = source.readInt();
+ mEncryptedDataStart = source.readInt();
+ mDataEnd = source.readInt();
+
+ switch (encParamType) {
+ case ENC_PARAMS_IV_PARAMETERS:
+ mEncryptionSpec = new IvParameterSpec(encParamsEncoded);
+ break;
+ default:
+ throw new InvalidAlgorithmParameterException("Unknown parameter type "
+ + encParamType);
+ }
+
+ switch (macParamType) {
+ case MAC_PARAMS_NONE:
+ mMacSpec = null;
+ break;
+ default:
+ throw new InvalidAlgorithmParameterException("Unknown parameter type "
+ + macParamType);
+ }
+
+ if (mEncryptionKey == null) {
+ throw new NullPointerException("encryptionKey == null");
+ }
+ }
+
+ public static final Parcelable.Creator<ContainerEncryptionParams> CREATOR =
+ new Parcelable.Creator<ContainerEncryptionParams>() {
+ public ContainerEncryptionParams createFromParcel(Parcel source) {
+ try {
+ return new ContainerEncryptionParams(source);
+ } catch (InvalidAlgorithmParameterException e) {
+ Slog.e(TAG, "Invalid algorithm parameters specified", e);
+ return null;
+ }
+ }
+
+ public ContainerEncryptionParams[] newArray(int size) {
+ return new ContainerEncryptionParams[size];
+ }
+ };
+}
\ No newline at end of file
diff --git a/core/java/android/content/pm/IPackageManager.aidl b/core/java/android/content/pm/IPackageManager.aidl
index 9b8454a..70c0c48 100644
--- a/core/java/android/content/pm/IPackageManager.aidl
+++ b/core/java/android/content/pm/IPackageManager.aidl
@@ -22,6 +22,7 @@
import android.content.IntentFilter;
import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo;
+import android.content.pm.ContainerEncryptionParams;
import android.content.pm.FeatureInfo;
import android.content.pm.IPackageInstallObserver;
import android.content.pm.IPackageDeleteObserver;
@@ -362,7 +363,7 @@
void installPackageWithVerification(in Uri packageURI, in IPackageInstallObserver observer,
int flags, in String installerPackageName, in Uri verificationURI,
- in ManifestDigest manifestDigest);
+ in ManifestDigest manifestDigest, in ContainerEncryptionParams encryptionParams);
void verifyPendingInstall(int id, int verificationCode);
diff --git a/core/java/android/content/pm/LimitedLengthInputStream.java b/core/java/android/content/pm/LimitedLengthInputStream.java
new file mode 100644
index 0000000..25a490f
--- /dev/null
+++ b/core/java/android/content/pm/LimitedLengthInputStream.java
@@ -0,0 +1,82 @@
+package android.content.pm;
+
+import java.io.FilterInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * A class that limits the amount of data that is read from an InputStream. When
+ * the specified length is reached, the stream returns an EOF even if the
+ * underlying stream still has more data.
+ *
+ * @hide
+ */
+public class LimitedLengthInputStream extends FilterInputStream {
+ /**
+ * The end of the stream where we don't want to allow more data to be read.
+ */
+ private final int mEnd;
+
+ /**
+ * Current offset in the stream.
+ */
+ private int mOffset;
+
+ /**
+ * @param in underlying stream to wrap
+ * @param offset offset into stream where data starts
+ * @param length length of data at offset
+ * @throws IOException if an error occured with the underlying stream
+ */
+ public LimitedLengthInputStream(InputStream in, int offset, int length) throws IOException {
+ super(in);
+
+ if (in == null) {
+ throw new IOException("in == null");
+ }
+
+ if (offset < 0) {
+ throw new IOException("offset == " + offset);
+ }
+
+ if (length < 0) {
+ throw new IOException("length must be non-negative; is " + length);
+ }
+
+ mEnd = offset + length;
+
+ skip(offset);
+ mOffset = offset;
+ }
+
+ @Override
+ public synchronized int read() throws IOException {
+ if (mOffset >= mEnd) {
+ return -1;
+ }
+
+ mOffset++;
+ return super.read();
+ }
+
+ @Override
+ public int read(byte[] buffer, int offset, int byteCount) throws IOException {
+ if (mOffset >= mEnd) {
+ return -1;
+ }
+
+ if (mOffset + byteCount > mEnd) {
+ byteCount = mEnd - mOffset;
+ }
+
+ final int numRead = super.read(buffer, offset, byteCount);
+ mOffset += numRead;
+
+ return numRead;
+ }
+
+ @Override
+ public int read(byte[] buffer) throws IOException {
+ return read(buffer, 0, buffer.length);
+ }
+}
diff --git a/core/java/android/content/pm/MacAuthenticatedInputStream.java b/core/java/android/content/pm/MacAuthenticatedInputStream.java
new file mode 100644
index 0000000..11f4b94
--- /dev/null
+++ b/core/java/android/content/pm/MacAuthenticatedInputStream.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2012 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 android.content.pm;
+
+import java.io.FilterInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import javax.crypto.Mac;
+
+/**
+ * An input stream filter that applies a MAC to the data passing through it. At
+ * the end of the data that should be authenticated, the tag can be calculated.
+ * After that, the stream should not be used.
+ *
+ * @hide
+ */
+public class MacAuthenticatedInputStream extends FilterInputStream {
+ private final Mac mMac;
+
+ public MacAuthenticatedInputStream(InputStream in, Mac mac) {
+ super(in);
+
+ mMac = mac;
+ }
+
+ public boolean isTagEqual(byte[] tag) {
+ final byte[] actualTag = mMac.doFinal();
+
+ if (tag == null || actualTag == null || tag.length != actualTag.length) {
+ return false;
+ }
+
+ /*
+ * Attempt to prevent timing attacks by doing the same amount of work
+ * whether the first byte matches or not. Do not change this to a loop
+ * that exits early when a byte does not match.
+ */
+ int value = 0;
+ for (int i = 0; i < tag.length; i++) {
+ value |= tag[i] ^ actualTag[i];
+ }
+
+ return value == 0;
+ }
+
+ @Override
+ public int read() throws IOException {
+ final int b = super.read();
+ if (b >= 0) {
+ mMac.update((byte) b);
+ }
+ return b;
+ }
+
+ @Override
+ public int read(byte[] buffer, int offset, int count) throws IOException {
+ int numRead = super.read(buffer, offset, count);
+ if (numRead > 0) {
+ mMac.update(buffer, offset, numRead);
+ }
+ return numRead;
+ }
+}
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index c3ce1cf..a48924e 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -28,7 +28,6 @@
import android.content.res.XmlResourceParser;
import android.graphics.drawable.Drawable;
import android.net.Uri;
-import android.os.Build;
import android.os.Environment;
import android.util.AndroidException;
import android.util.DisplayMetrics;
@@ -2199,12 +2198,19 @@
* is performing the installation. This identifies which market
* the package came from.
* @param verificationURI The location of the supplementary verification
- * file. This can be a 'file:' or a 'content:' URI.
+ * file. This can be a 'file:' or a 'content:' URI. May be
+ * {@code null}.
+ * @param manifestDigest an object that holds the digest of the package
+ * which can be used to verify ownership. May be {@code null}.
+ * @param encryptionParams if the package to be installed is encrypted,
+ * these parameters describing the encryption and authentication
+ * used. May be {@code null}.
* @hide
*/
public abstract void installPackageWithVerification(Uri packageURI,
IPackageInstallObserver observer, int flags, String installerPackageName,
- Uri verificationURI, ManifestDigest manifestDigest);
+ Uri verificationURI, ManifestDigest manifestDigest,
+ ContainerEncryptionParams encryptionParams);
/**
* Allows a package listening to the
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java
index 185fcb9..ad52e13 100644
--- a/core/java/android/content/pm/PackageParser.java
+++ b/core/java/android/content/pm/PackageParser.java
@@ -970,7 +970,7 @@
return null;
}
} else if (tagName.equals("permission-group")) {
- if (parsePermissionGroup(pkg, res, parser, attrs, outError) == null) {
+ if (parsePermissionGroup(pkg, flags, res, parser, attrs, outError) == null) {
return null;
}
} else if (tagName.equals("permission")) {
@@ -1432,7 +1432,7 @@
return buildCompoundName(pkg, procSeq, "taskAffinity", outError);
}
- private PermissionGroup parsePermissionGroup(Package owner, Resources res,
+ private PermissionGroup parsePermissionGroup(Package owner, int flags, Resources res,
XmlPullParser parser, AttributeSet attrs, String[] outError)
throws XmlPullParserException, IOException {
PermissionGroup perm = new PermissionGroup(owner);
@@ -1454,6 +1454,13 @@
perm.info.descriptionRes = sa.getResourceId(
com.android.internal.R.styleable.AndroidManifestPermissionGroup_description,
0);
+ perm.info.flags = sa.getInt(
+ com.android.internal.R.styleable.AndroidManifestPermissionGroup_permissionGroupFlags, 0);
+ perm.info.priority = sa.getInt(
+ com.android.internal.R.styleable.AndroidManifestPermissionGroup_priority, 0);
+ if (perm.info.priority > 0 && (flags&PARSE_IS_SYSTEM) == 0) {
+ perm.info.priority = 0;
+ }
sa.recycle();
diff --git a/core/java/android/content/pm/PermissionGroupInfo.java b/core/java/android/content/pm/PermissionGroupInfo.java
index 02eb816..452bf0d 100644
--- a/core/java/android/content/pm/PermissionGroupInfo.java
+++ b/core/java/android/content/pm/PermissionGroupInfo.java
@@ -41,6 +41,23 @@
*/
public CharSequence nonLocalizedDescription;
+ /**
+ * Flag for {@link #flags}, corresponding to <code>personalInfo</code>
+ * value of {@link android.R.attr#permissionGroupFlags}.
+ */
+ public static final int FLAG_PERSONAL_INFO = 1<<0;
+
+ /**
+ * Additional flags about this group as given by
+ * {@link android.R.attr#permissionGroupFlags}.
+ */
+ public int flags;
+
+ /**
+ * Prioritization of this group, for visually sorting with other groups.
+ */
+ public int priority;
+
public PermissionGroupInfo() {
}
@@ -48,6 +65,8 @@
super(orig);
descriptionRes = orig.descriptionRes;
nonLocalizedDescription = orig.nonLocalizedDescription;
+ flags = orig.flags;
+ priority = orig.priority;
}
/**
@@ -77,7 +96,7 @@
public String toString() {
return "PermissionGroupInfo{"
+ Integer.toHexString(System.identityHashCode(this))
- + " " + name + "}";
+ + " " + name + " flgs=0x" + Integer.toHexString(flags) + "}";
}
public int describeContents() {
@@ -88,6 +107,8 @@
super.writeToParcel(dest, parcelableFlags);
dest.writeInt(descriptionRes);
TextUtils.writeToParcel(nonLocalizedDescription, dest, parcelableFlags);
+ dest.writeInt(flags);
+ dest.writeInt(priority);
}
public static final Creator<PermissionGroupInfo> CREATOR =
@@ -104,5 +125,7 @@
super(source);
descriptionRes = source.readInt();
nonLocalizedDescription = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(source);
+ flags = source.readInt();
+ priority = source.readInt();
}
}
diff --git a/core/java/android/content/res/AssetFileDescriptor.java b/core/java/android/content/res/AssetFileDescriptor.java
index 9893133..7d46710 100644
--- a/core/java/android/content/res/AssetFileDescriptor.java
+++ b/core/java/android/content/res/AssetFileDescriptor.java
@@ -52,6 +52,9 @@
*/
public AssetFileDescriptor(ParcelFileDescriptor fd, long startOffset,
long length) {
+ if (fd == null) {
+ throw new IllegalArgumentException("fd must not be null");
+ }
if (length < 0 && startOffset != 0) {
throw new IllegalArgumentException(
"startOffset must be 0 when using UNKNOWN_LENGTH");
diff --git a/core/java/android/database/DatabaseUtils.java b/core/java/android/database/DatabaseUtils.java
index 40a54cf..a6af5c2 100644
--- a/core/java/android/database/DatabaseUtils.java
+++ b/core/java/android/database/DatabaseUtils.java
@@ -21,7 +21,6 @@
import android.content.ContentValues;
import android.content.Context;
import android.content.OperationApplicationException;
-import android.content.OperationCanceledException;
import android.database.sqlite.SQLiteAbortException;
import android.database.sqlite.SQLiteConstraintException;
import android.database.sqlite.SQLiteDatabase;
@@ -31,6 +30,7 @@
import android.database.sqlite.SQLiteFullException;
import android.database.sqlite.SQLiteProgram;
import android.database.sqlite.SQLiteStatement;
+import android.os.OperationCanceledException;
import android.os.Parcel;
import android.os.ParcelFileDescriptor;
import android.text.TextUtils;
diff --git a/core/java/android/database/sqlite/SQLiteConnection.java b/core/java/android/database/sqlite/SQLiteConnection.java
index acdc488..6f7c1f3 100644
--- a/core/java/android/database/sqlite/SQLiteConnection.java
+++ b/core/java/android/database/sqlite/SQLiteConnection.java
@@ -19,12 +19,12 @@
import dalvik.system.BlockGuard;
import dalvik.system.CloseGuard;
-import android.content.CancellationSignal;
-import android.content.OperationCanceledException;
import android.database.Cursor;
import android.database.CursorWindow;
import android.database.DatabaseUtils;
import android.database.sqlite.SQLiteDebug.DbStats;
+import android.os.CancellationSignal;
+import android.os.OperationCanceledException;
import android.os.ParcelFileDescriptor;
import android.util.Log;
import android.util.LruCache;
diff --git a/core/java/android/database/sqlite/SQLiteConnectionPool.java b/core/java/android/database/sqlite/SQLiteConnectionPool.java
index a175662..3a1714c 100644
--- a/core/java/android/database/sqlite/SQLiteConnectionPool.java
+++ b/core/java/android/database/sqlite/SQLiteConnectionPool.java
@@ -18,9 +18,9 @@
import dalvik.system.CloseGuard;
-import android.content.CancellationSignal;
-import android.content.OperationCanceledException;
import android.database.sqlite.SQLiteDebug.DbStats;
+import android.os.CancellationSignal;
+import android.os.OperationCanceledException;
import android.os.SystemClock;
import android.util.Log;
import android.util.PrefixPrinter;
diff --git a/core/java/android/database/sqlite/SQLiteDatabase.java b/core/java/android/database/sqlite/SQLiteDatabase.java
index 7bd0c8d..e2d44f2 100644
--- a/core/java/android/database/sqlite/SQLiteDatabase.java
+++ b/core/java/android/database/sqlite/SQLiteDatabase.java
@@ -16,16 +16,16 @@
package android.database.sqlite;
-import android.content.CancellationSignal;
import android.content.ContentValues;
-import android.content.OperationCanceledException;
import android.database.Cursor;
import android.database.DatabaseErrorHandler;
import android.database.DatabaseUtils;
import android.database.DefaultDatabaseErrorHandler;
import android.database.SQLException;
import android.database.sqlite.SQLiteDebug.DbStats;
+import android.os.CancellationSignal;
import android.os.Looper;
+import android.os.OperationCanceledException;
import android.text.TextUtils;
import android.util.EventLog;
import android.util.Log;
diff --git a/core/java/android/database/sqlite/SQLiteDirectCursorDriver.java b/core/java/android/database/sqlite/SQLiteDirectCursorDriver.java
index 294edc4..797430a 100644
--- a/core/java/android/database/sqlite/SQLiteDirectCursorDriver.java
+++ b/core/java/android/database/sqlite/SQLiteDirectCursorDriver.java
@@ -16,9 +16,9 @@
package android.database.sqlite;
-import android.content.CancellationSignal;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
+import android.os.CancellationSignal;
/**
* A cursor driver that uses the given query directly.
diff --git a/core/java/android/database/sqlite/SQLiteProgram.java b/core/java/android/database/sqlite/SQLiteProgram.java
index e9b06c6..26e8c31 100644
--- a/core/java/android/database/sqlite/SQLiteProgram.java
+++ b/core/java/android/database/sqlite/SQLiteProgram.java
@@ -16,8 +16,8 @@
package android.database.sqlite;
-import android.content.CancellationSignal;
import android.database.DatabaseUtils;
+import android.os.CancellationSignal;
import java.util.Arrays;
diff --git a/core/java/android/database/sqlite/SQLiteQuery.java b/core/java/android/database/sqlite/SQLiteQuery.java
index 30e77b5..62bcc20 100644
--- a/core/java/android/database/sqlite/SQLiteQuery.java
+++ b/core/java/android/database/sqlite/SQLiteQuery.java
@@ -16,9 +16,9 @@
package android.database.sqlite;
-import android.content.CancellationSignal;
-import android.content.OperationCanceledException;
import android.database.CursorWindow;
+import android.os.CancellationSignal;
+import android.os.OperationCanceledException;
import android.util.Log;
/**
diff --git a/core/java/android/database/sqlite/SQLiteQueryBuilder.java b/core/java/android/database/sqlite/SQLiteQueryBuilder.java
index 6f84b5e..91884ab 100644
--- a/core/java/android/database/sqlite/SQLiteQueryBuilder.java
+++ b/core/java/android/database/sqlite/SQLiteQueryBuilder.java
@@ -16,10 +16,10 @@
package android.database.sqlite;
-import android.content.CancellationSignal;
-import android.content.OperationCanceledException;
import android.database.Cursor;
import android.database.DatabaseUtils;
+import android.os.CancellationSignal;
+import android.os.OperationCanceledException;
import android.provider.BaseColumns;
import android.text.TextUtils;
import android.util.Log;
diff --git a/core/java/android/database/sqlite/SQLiteSession.java b/core/java/android/database/sqlite/SQLiteSession.java
index 9410243..beb5b3a 100644
--- a/core/java/android/database/sqlite/SQLiteSession.java
+++ b/core/java/android/database/sqlite/SQLiteSession.java
@@ -16,10 +16,10 @@
package android.database.sqlite;
-import android.content.CancellationSignal;
-import android.content.OperationCanceledException;
import android.database.CursorWindow;
import android.database.DatabaseUtils;
+import android.os.CancellationSignal;
+import android.os.OperationCanceledException;
import android.os.ParcelFileDescriptor;
/**
diff --git a/core/java/android/hardware/Camera.java b/core/java/android/hardware/Camera.java
index eb0a0c6..89068e7 100644
--- a/core/java/android/hardware/Camera.java
+++ b/core/java/android/hardware/Camera.java
@@ -35,6 +35,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.StringTokenizer;
+import java.util.concurrent.locks.ReentrantLock;
/**
* The Camera class is used to set image capture settings, start/stop preview,
@@ -154,6 +155,7 @@
private boolean mOneShot;
private boolean mWithBuffer;
private boolean mFaceDetectionRunning = false;
+ private Object mAutoFocusCallbackLock = new Object();
/**
* Broadcast Action: A new picture is taken by the camera, and the entry of
@@ -469,6 +471,11 @@
* Called as preview frames are displayed. This callback is invoked
* on the event thread {@link #open(int)} was called from.
*
+ * <p>If using the {@link android.graphics.ImageFormat#YV12} format,
+ * refer to the equations in {@link Camera.Parameters#setPreviewFormat}
+ * for the arrangement of the pixel data in the preview callback
+ * buffers.
+ *
* @param data the contents of the preview frame in the format defined
* by {@link android.graphics.ImageFormat}, which can be queried
* with {@link android.hardware.Camera.Parameters#getPreviewFormat()}.
@@ -506,7 +513,9 @@
mRawImageCallback = null;
mPostviewCallback = null;
mJpegCallback = null;
- mAutoFocusCallback = null;
+ synchronized (mAutoFocusCallbackLock) {
+ mAutoFocusCallback = null;
+ }
mAutoFocusMoveCallback = null;
}
@@ -609,12 +618,17 @@
* the frame is discarded. Applications should add buffers back when they
* finish processing the data in them.
*
- * <p>The size of the buffer is determined by multiplying the preview
- * image width, height, and bytes per pixel. The width and height can be
- * read from {@link Camera.Parameters#getPreviewSize()}. Bytes per pixel
- * can be computed from
- * {@link android.graphics.ImageFormat#getBitsPerPixel(int)} / 8,
- * using the image format from {@link Camera.Parameters#getPreviewFormat()}.
+ * <p>For formats besides YV12, the size of the buffer is determined by
+ * multiplying the preview image width, height, and bytes per pixel. The
+ * width and height can be read from
+ * {@link Camera.Parameters#getPreviewSize()}. Bytes per pixel can be
+ * computed from {@link android.graphics.ImageFormat#getBitsPerPixel(int)} /
+ * 8, using the image format from
+ * {@link Camera.Parameters#getPreviewFormat()}.
+ *
+ * <p>If using the {@link android.graphics.ImageFormat#YV12} format, the
+ * size can be calculated using the equations listed in
+ * {@link Camera.Parameters#setPreviewFormat}.
*
* <p>This method is only necessary when
* {@link #setPreviewCallbackWithBuffer(PreviewCallback)} is used. When
@@ -624,8 +638,8 @@
* hold the preview frame data, preview callback will return null and
* the buffer will be removed from the buffer queue.
*
- * @param callbackBuffer the buffer to add to the queue.
- * The size should be width * height * bits_per_pixel / 8.
+ * @param callbackBuffer the buffer to add to the queue. The size of the
+ * buffer must match the values described above.
* @see #setPreviewCallbackWithBuffer(PreviewCallback)
*/
public final void addCallbackBuffer(byte[] callbackBuffer)
@@ -746,8 +760,13 @@
return;
case CAMERA_MSG_FOCUS:
- if (mAutoFocusCallback != null) {
- mAutoFocusCallback.onAutoFocus(msg.arg1 == 0 ? false : true, mCamera);
+ AutoFocusCallback cb = null;
+ synchronized (mAutoFocusCallbackLock) {
+ cb = mAutoFocusCallback;
+ }
+ if (cb != null) {
+ boolean success = msg.arg1 == 0 ? false : true;
+ cb.onAutoFocus(success, mCamera);
}
return;
@@ -872,7 +891,9 @@
*/
public final void autoFocus(AutoFocusCallback cb)
{
- mAutoFocusCallback = cb;
+ synchronized (mAutoFocusCallbackLock) {
+ mAutoFocusCallback = cb;
+ }
native_autoFocus();
}
private native final void native_autoFocus();
@@ -887,8 +908,26 @@
*/
public final void cancelAutoFocus()
{
- mAutoFocusCallback = null;
+ synchronized (mAutoFocusCallbackLock) {
+ mAutoFocusCallback = null;
+ }
native_cancelAutoFocus();
+ // CAMERA_MSG_FOCUS should be removed here because the following
+ // scenario can happen:
+ // - An application uses the same thread for autoFocus, cancelAutoFocus
+ // and looper thread.
+ // - The application calls autoFocus.
+ // - HAL sends CAMERA_MSG_FOCUS, which enters the looper message queue.
+ // Before event handler's handleMessage() is invoked, the application
+ // calls cancelAutoFocus and autoFocus.
+ // - The application gets the old CAMERA_MSG_FOCUS and thinks autofocus
+ // has been completed. But in fact it is not.
+ //
+ // As documented in the beginning of the file, apps should not use
+ // multiple threads to call autoFocus and cancelAutoFocus at the same
+ // time. It is HAL's responsibility not to send a CAMERA_MSG_FOCUS
+ // message after native_cancelAutoFocus is called.
+ mEventHandler.removeMessages(CAMERA_MSG_FOCUS);
}
private native final void native_cancelAutoFocus();
@@ -2270,12 +2309,44 @@
* {@link android.graphics.ImageFormat#NV21}, which
* uses the NV21 encoding format.</p>
*
- * @param pixel_format the desired preview picture format, defined
- * by one of the {@link android.graphics.ImageFormat} constants.
- * (E.g., <var>ImageFormat.NV21</var> (default),
- * <var>ImageFormat.RGB_565</var>, or
- * <var>ImageFormat.JPEG</var>)
+ * <p>Use {@link Parameters#getSupportedPreviewFormats} to get a list of
+ * the available preview formats.
+ *
+ * <p>It is strongly recommended that either
+ * {@link android.graphics.ImageFormat#NV21} or
+ * {@link android.graphics.ImageFormat#YV12} is used, since
+ * they are supported by all camera devices.</p>
+ *
+ * <p>For YV12, the image buffer that is received is not necessarily
+ * tightly packed, as there may be padding at the end of each row of
+ * pixel data, as described in
+ * {@link android.graphics.ImageFormat#YV12}. For camera callback data,
+ * it can be assumed that the stride of the Y and UV data is the
+ * smallest possible that meets the alignment requirements. That is, if
+ * the preview size is <var>width x height</var>, then the following
+ * equations describe the buffer index for the beginning of row
+ * <var>y</var> for the Y plane and row <var>c</var> for the U and V
+ * planes:
+ *
+ * {@code
+ * <pre>
+ * yStride = (int) ceil(width / 16.0) * 16;
+ * uvStride = (int) ceil( (yStride / 2) / 16.0) * 16;
+ * ySize = yStride * height;
+ * uvSize = uvStride * height / 2;
+ * yRowIndex = yStride * y;
+ * uRowIndex = ySize + uvSize + uvStride * c;
+ * vRowIndex = ySize + uvStride * c;
+ * size = ySize + uvSize * 2;</pre>
+ * }
+ *
+ * @param pixel_format the desired preview picture format, defined by
+ * one of the {@link android.graphics.ImageFormat} constants. (E.g.,
+ * <var>ImageFormat.NV21</var> (default), or
+ * <var>ImageFormat.YV12</var>)
+ *
* @see android.graphics.ImageFormat
+ * @see android.hardware.Camera.Parameters#getSupportedPreviewFormats
*/
public void setPreviewFormat(int pixel_format) {
String s = cameraFormatForPixelFormat(pixel_format);
@@ -2293,6 +2364,7 @@
*
* @return the preview format.
* @see android.graphics.ImageFormat
+ * @see #setPreviewFormat
*/
public int getPreviewFormat() {
return pixelFormatForCameraFormat(get(KEY_PREVIEW_FORMAT));
@@ -2306,6 +2378,7 @@
* @return a list of supported preview formats. This method will always
* return a list with at least one element.
* @see android.graphics.ImageFormat
+ * @see #setPreviewFormat
*/
public List<Integer> getSupportedPreviewFormats() {
String str = get(KEY_PREVIEW_FORMAT + SUPPORTED_VALUES_SUFFIX);
diff --git a/core/java/android/inputmethodservice/InputMethodService.java b/core/java/android/inputmethodservice/InputMethodService.java
index 332f40a..33dea6c 100644
--- a/core/java/android/inputmethodservice/InputMethodService.java
+++ b/core/java/android/inputmethodservice/InputMethodService.java
@@ -402,7 +402,7 @@
mShowInputFlags = 0;
mShowInputRequested = false;
mShowInputForced = false;
- hideWindow();
+ doHideWindow();
if (resultReceiver != null) {
resultReceiver.send(wasVis != isInputViewShown()
? InputMethodManager.RESULT_HIDDEN
@@ -737,7 +737,7 @@
onDisplayCompletions(completions);
}
} else {
- hideWindow();
+ doHideWindow();
}
} else if (mCandidatesVisibility == View.VISIBLE) {
// If the candidates are currently visible, make sure the
@@ -745,7 +745,7 @@
showWindow(false);
} else {
// Otherwise hide the window.
- hideWindow();
+ doHideWindow();
}
// If user uses hard keyboard, IME button should always be shown.
boolean showing = onEvaluateInputViewShown();
@@ -1096,7 +1096,7 @@
if (shown) {
showWindow(false);
} else {
- hideWindow();
+ doHideWindow();
}
}
}
@@ -1449,9 +1449,13 @@
mCandidatesViewStarted = false;
}
+ private void doHideWindow() {
+ mImm.setImeWindowStatus(mToken, 0, mBackDisposition);
+ hideWindow();
+ }
+
public void hideWindow() {
finishViews();
- mImm.setImeWindowStatus(mToken, 0, mBackDisposition);
if (mWindowVisible) {
mWindow.hide();
mWindowVisible = false;
@@ -1703,7 +1707,7 @@
// If we have the window visible for some other reason --
// most likely to show candidates -- then just get rid
// of it. This really shouldn't happen, but just in case...
- if (doIt) hideWindow();
+ if (doIt) doHideWindow();
}
return true;
}
diff --git a/core/java/android/net/DhcpInfoInternal.java b/core/java/android/net/DhcpInfoInternal.java
index c87c34b..f3508c1 100644
--- a/core/java/android/net/DhcpInfoInternal.java
+++ b/core/java/android/net/DhcpInfoInternal.java
@@ -147,7 +147,11 @@
* metered, and sensitive to heavy data transfers.
*/
public boolean hasMeteredHint() {
- return "ANDROID_METERED".equals(vendorInfo);
+ if (vendorInfo != null) {
+ return vendorInfo.contains("ANDROID_METERED");
+ } else {
+ return false;
+ }
}
public String toString() {
diff --git a/core/java/android/net/EthernetDataTracker.java b/core/java/android/net/EthernetDataTracker.java
index fb09ba5..28bd289 100644
--- a/core/java/android/net/EthernetDataTracker.java
+++ b/core/java/android/net/EthernetDataTracker.java
@@ -59,6 +59,8 @@
private static String sIfaceMatch = "";
private static String mIface = "";
+ private INetworkManagementService mNMService;
+
private static class InterfaceObserver extends INetworkManagementEventObserver.Stub {
private EthernetDataTracker mTracker;
@@ -117,6 +119,13 @@
mIface = iface;
}
+ // we don't get link status indications unless the iface is up - bring it up
+ try {
+ mNMService.setInterfaceUp(iface);
+ } catch (Exception e) {
+ Log.e(TAG, "Error upping interface " + iface + ": " + e);
+ }
+
mNetworkInfo.setIsAvailable(true);
Message msg = mCsHandler.obtainMessage(EVENT_CONFIGURATION_CHANGED, mNetworkInfo);
msg.sendToTarget();
@@ -199,7 +208,7 @@
// register for notifications from NetworkManagement Service
IBinder b = ServiceManager.getService(Context.NETWORKMANAGEMENT_SERVICE);
- INetworkManagementService service = INetworkManagementService.Stub.asInterface(b);
+ mNMService = INetworkManagementService.Stub.asInterface(b);
mInterfaceObserver = new InterfaceObserver(this);
@@ -208,12 +217,12 @@
sIfaceMatch = context.getResources().getString(
com.android.internal.R.string.config_ethernet_iface_regex);
try {
- final String[] ifaces = service.listInterfaces();
+ final String[] ifaces = mNMService.listInterfaces();
for (String iface : ifaces) {
if (iface.matches(sIfaceMatch)) {
mIface = iface;
- service.setInterfaceUp(iface);
- InterfaceConfiguration config = service.getInterfaceConfig(iface);
+ mNMService.setInterfaceUp(iface);
+ InterfaceConfiguration config = mNMService.getInterfaceConfig(iface);
mLinkUp = config.isActive();
if (config != null && mHwAddr == null) {
mHwAddr = config.getHardwareAddress();
@@ -230,7 +239,7 @@
}
try {
- service.registerObserver(mInterfaceObserver);
+ mNMService.registerObserver(mInterfaceObserver);
} catch (RemoteException e) {
Log.e(TAG, "Could not register InterfaceObserver " + e);
}
diff --git a/core/java/android/net/INetworkStatsService.aidl b/core/java/android/net/INetworkStatsService.aidl
index 08d4c6c..b7b8731 100644
--- a/core/java/android/net/INetworkStatsService.aidl
+++ b/core/java/android/net/INetworkStatsService.aidl
@@ -42,5 +42,7 @@
void setUidForeground(int uid, boolean uidForeground);
/** Force update of statistics. */
void forceUpdate();
+ /** Advise persistance threshold; may be overridden internally. */
+ void advisePersistThreshold(long thresholdBytes);
}
diff --git a/core/java/android/net/NetworkIdentity.java b/core/java/android/net/NetworkIdentity.java
index 4ac5e76..3c67bf9 100644
--- a/core/java/android/net/NetworkIdentity.java
+++ b/core/java/android/net/NetworkIdentity.java
@@ -158,9 +158,14 @@
}
} else if (type == TYPE_WIFI) {
- final WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
- final WifiInfo info = wifi.getConnectionInfo();
- networkId = info != null ? info.getSSID() : null;
+ if (state.networkId != null) {
+ networkId = state.networkId;
+ } else {
+ final WifiManager wifi = (WifiManager) context.getSystemService(
+ Context.WIFI_SERVICE);
+ final WifiInfo info = wifi.getConnectionInfo();
+ networkId = info != null ? info.getSSID() : null;
+ }
}
return new NetworkIdentity(type, subType, subscriberId, networkId, roaming);
diff --git a/core/java/android/net/NetworkState.java b/core/java/android/net/NetworkState.java
index 2fc69ad..fbe1f82 100644
--- a/core/java/android/net/NetworkState.java
+++ b/core/java/android/net/NetworkState.java
@@ -31,18 +31,20 @@
public final LinkCapabilities linkCapabilities;
/** Currently only used by testing. */
public final String subscriberId;
+ public final String networkId;
public NetworkState(NetworkInfo networkInfo, LinkProperties linkProperties,
LinkCapabilities linkCapabilities) {
- this(networkInfo, linkProperties, linkCapabilities, null);
+ this(networkInfo, linkProperties, linkCapabilities, null, null);
}
public NetworkState(NetworkInfo networkInfo, LinkProperties linkProperties,
- LinkCapabilities linkCapabilities, String subscriberId) {
+ LinkCapabilities linkCapabilities, String subscriberId, String networkId) {
this.networkInfo = networkInfo;
this.linkProperties = linkProperties;
this.linkCapabilities = linkCapabilities;
this.subscriberId = subscriberId;
+ this.networkId = networkId;
}
public NetworkState(Parcel in) {
@@ -50,6 +52,7 @@
linkProperties = in.readParcelable(null);
linkCapabilities = in.readParcelable(null);
subscriberId = in.readString();
+ networkId = in.readString();
}
@Override
@@ -63,6 +66,7 @@
out.writeParcelable(linkProperties, flags);
out.writeParcelable(linkCapabilities, flags);
out.writeString(subscriberId);
+ out.writeString(networkId);
}
public static final Creator<NetworkState> CREATOR = new Creator<NetworkState>() {
diff --git a/core/java/android/content/CancellationSignal.java b/core/java/android/os/CancellationSignal.java
similarity index 98%
rename from core/java/android/content/CancellationSignal.java
rename to core/java/android/os/CancellationSignal.java
index dcaeeb7..dcba9b7 100644
--- a/core/java/android/content/CancellationSignal.java
+++ b/core/java/android/os/CancellationSignal.java
@@ -14,9 +14,10 @@
* limitations under the License.
*/
-package android.content;
+package android.os;
-import android.os.RemoteException;
+import android.os.ICancellationSignal;
+import android.os.ICancellationSignal.Stub;
/**
* Provides the ability to cancel an operation in progress.
diff --git a/core/java/android/os/ConditionVariable.java b/core/java/android/os/ConditionVariable.java
index 95a9259..07b221c 100644
--- a/core/java/android/os/ConditionVariable.java
+++ b/core/java/android/os/ConditionVariable.java
@@ -26,7 +26,7 @@
* block() will not block, and instead return immediately.
*
* <p>
- * This class uses itself is at the object to wait on, so if you wait()
+ * This class uses itself as the object to wait on, so if you wait()
* or notify() on a ConditionVariable, the results are undefined.
*/
public class ConditionVariable
diff --git a/core/java/android/os/Handler.java b/core/java/android/os/Handler.java
index 0d562e4..b892c81 100644
--- a/core/java/android/os/Handler.java
+++ b/core/java/android/os/Handler.java
@@ -518,7 +518,7 @@
/**
* Remove any pending posts of messages with code 'what' and whose obj is
- * 'object' that are in the message queue. If <var>token</var> is null,
+ * 'object' that are in the message queue. If <var>object</var> is null,
* all messages will be removed.
*/
public final void removeMessages(int what, Object object) {
diff --git a/core/java/android/os/HandlerThread.java b/core/java/android/os/HandlerThread.java
index d61b3b4..daf1f59 100644
--- a/core/java/android/os/HandlerThread.java
+++ b/core/java/android/os/HandlerThread.java
@@ -42,7 +42,7 @@
}
/**
- * Call back method that can be explicitly over ridden if needed to execute some
+ * Call back method that can be explicitly overridden if needed to execute some
* setup before Looper loops.
*/
protected void onLooperPrepared() {
diff --git a/core/java/android/content/ICancellationSignal.aidl b/core/java/android/os/ICancellationSignal.aidl
similarity index 96%
rename from core/java/android/content/ICancellationSignal.aidl
rename to core/java/android/os/ICancellationSignal.aidl
index cf1c5d3..d92464c 100644
--- a/core/java/android/content/ICancellationSignal.aidl
+++ b/core/java/android/os/ICancellationSignal.aidl
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package android.content;
+package android.os;
/**
* @hide
diff --git a/core/java/android/os/INetworkManagementService.aidl b/core/java/android/os/INetworkManagementService.aidl
index 6ecc640..e7ea355 100644
--- a/core/java/android/os/INetworkManagementService.aidl
+++ b/core/java/android/os/INetworkManagementService.aidl
@@ -238,7 +238,8 @@
* Return global network statistics summarized at an interface level,
* without any UID-level granularity.
*/
- NetworkStats getNetworkStatsSummary();
+ NetworkStats getNetworkStatsSummaryDev();
+ NetworkStats getNetworkStatsSummaryXt();
/**
* Return detailed network statistics with UID-level granularity,
diff --git a/core/java/android/os/Message.java b/core/java/android/os/Message.java
index 4aa7fe2..0abc149 100644
--- a/core/java/android/os/Message.java
+++ b/core/java/android/os/Message.java
@@ -97,8 +97,8 @@
private static Message sPool;
private static int sPoolSize = 0;
- private static final int MAX_POOL_SIZE = 10;
-
+ private static final int MAX_POOL_SIZE = 50;
+
/**
* Return a new Message instance from the global pool. Allows us to
* avoid allocating new objects in many cases.
diff --git a/core/java/android/content/OperationCanceledException.java b/core/java/android/os/OperationCanceledException.java
similarity index 97%
rename from core/java/android/content/OperationCanceledException.java
rename to core/java/android/os/OperationCanceledException.java
index d783a07..b0cd663 100644
--- a/core/java/android/content/OperationCanceledException.java
+++ b/core/java/android/os/OperationCanceledException.java
@@ -14,7 +14,8 @@
* limitations under the License.
*/
-package android.content;
+package android.os;
+
/**
* An exception type that is thrown when an operation in progress is canceled.
diff --git a/core/java/android/os/Trace.java b/core/java/android/os/Trace.java
index 2a45506..7b6fd64 100644
--- a/core/java/android/os/Trace.java
+++ b/core/java/android/os/Trace.java
@@ -36,6 +36,16 @@
public static final long TRACE_TAG_WEBVIEW = 1L << 4;
public static final long TRACE_TAG_WINDOW_MANAGER = 1L << 5;
public static final long TRACE_TAG_ACTIVITY_MANAGER = 1L << 6;
+ public static final long TRACE_TAG_SYNC_MANAGER = 1L << 7;
+ public static final long TRACE_TAG_AUDIO = 1L << 8;
+
+ public static final int TRACE_FLAGS_START_BIT = 1;
+ public static final String[] TRACE_TAGS = {
+ "Graphics", "Input", "View", "WebView", "Window Manager",
+ "Activity Manager", "Sync Manager", "Audio"
+ };
+
+ public static final String PROPERTY_TRACE_TAG_ENABLEFLAGS = "debug.atrace.tags.enableflags";
private static final long sEnabledTags = nativeGetEnabledTags();
diff --git a/core/java/android/preference/MultiCheckPreference.java b/core/java/android/preference/MultiCheckPreference.java
new file mode 100644
index 0000000..6953075
--- /dev/null
+++ b/core/java/android/preference/MultiCheckPreference.java
@@ -0,0 +1,327 @@
+/*
+ * Copyright (C) 2012 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 android.preference;
+
+import java.util.Arrays;
+
+import android.app.AlertDialog.Builder;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.res.TypedArray;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.util.AttributeSet;
+
+/**
+ * @hide
+ * A {@link Preference} that displays a list of entries as
+ * a dialog which allow the user to toggle each individually on and off.
+ *
+ * @attr ref android.R.styleable#ListPreference_entries
+ * @attr ref android.R.styleable#ListPreference_entryValues
+ */
+public class MultiCheckPreference extends DialogPreference {
+ private CharSequence[] mEntries;
+ private String[] mEntryValues;
+ private boolean[] mSetValues;
+ private boolean[] mOrigValues;
+ private String mSummary;
+
+ public MultiCheckPreference(Context context, AttributeSet attrs) {
+ super(context, attrs);
+
+ TypedArray a = context.obtainStyledAttributes(attrs,
+ com.android.internal.R.styleable.ListPreference, 0, 0);
+ mEntries = a.getTextArray(com.android.internal.R.styleable.ListPreference_entries);
+ if (mEntries != null) {
+ setEntries(mEntries);
+ }
+ setEntryValuesCS(a.getTextArray(
+ com.android.internal.R.styleable.ListPreference_entryValues));
+ a.recycle();
+
+ /* Retrieve the Preference summary attribute since it's private
+ * in the Preference class.
+ */
+ a = context.obtainStyledAttributes(attrs,
+ com.android.internal.R.styleable.Preference, 0, 0);
+ mSummary = a.getString(com.android.internal.R.styleable.Preference_summary);
+ a.recycle();
+ }
+
+ public MultiCheckPreference(Context context) {
+ this(context, null);
+ }
+
+ /**
+ * Sets the human-readable entries to be shown in the list. This will be
+ * shown in subsequent dialogs.
+ * <p>
+ * Each entry must have a corresponding index in
+ * {@link #setEntryValues(CharSequence[])}.
+ *
+ * @param entries The entries.
+ * @see #setEntryValues(CharSequence[])
+ */
+ public void setEntries(CharSequence[] entries) {
+ mEntries = entries;
+ mSetValues = new boolean[entries.length];
+ mOrigValues = new boolean[entries.length];
+ }
+
+ /**
+ * @see #setEntries(CharSequence[])
+ * @param entriesResId The entries array as a resource.
+ */
+ public void setEntries(int entriesResId) {
+ setEntries(getContext().getResources().getTextArray(entriesResId));
+ }
+
+ /**
+ * The list of entries to be shown in the list in subsequent dialogs.
+ *
+ * @return The list as an array.
+ */
+ public CharSequence[] getEntries() {
+ return mEntries;
+ }
+
+ /**
+ * The array to find the value to save for a preference when an entry from
+ * entries is selected. If a user clicks on the second item in entries, the
+ * second item in this array will be saved to the preference.
+ *
+ * @param entryValues The array to be used as values to save for the preference.
+ */
+ public void setEntryValues(String[] entryValues) {
+ mEntryValues = entryValues;
+ Arrays.fill(mSetValues, false);
+ Arrays.fill(mOrigValues, false);
+ }
+
+ /**
+ * @see #setEntryValues(CharSequence[])
+ * @param entryValuesResId The entry values array as a resource.
+ */
+ public void setEntryValues(int entryValuesResId) {
+ setEntryValuesCS(getContext().getResources().getTextArray(entryValuesResId));
+ }
+
+ private void setEntryValuesCS(CharSequence[] values) {
+ setValues(null);
+ if (values != null) {
+ mEntryValues = new String[values.length];
+ for (int i=0; i<values.length; i++) {
+ mEntryValues[i] = values[i].toString();
+ }
+ }
+ }
+
+ /**
+ * Returns the array of values to be saved for the preference.
+ *
+ * @return The array of values.
+ */
+ public String[] getEntryValues() {
+ return mEntryValues;
+ }
+
+ /**
+ * Get the boolean state of a given value.
+ */
+ public boolean getValue(int index) {
+ return mSetValues[index];
+ }
+
+ /**
+ * Set the boolean state of a given value.
+ */
+ public void setValue(int index, boolean state) {
+ mSetValues[index] = state;
+ }
+
+ /**
+ * Sets the current values.
+ */
+ public void setValues(boolean[] values) {
+ if (mSetValues != null) {
+ Arrays.fill(mSetValues, false);
+ Arrays.fill(mOrigValues, false);
+ if (values != null) {
+ System.arraycopy(values, 0, mSetValues, 0,
+ values.length < mSetValues.length ? values.length : mSetValues.length);
+ }
+ }
+ }
+
+ /**
+ * Returns the summary of this ListPreference. If the summary
+ * has a {@linkplain java.lang.String#format String formatting}
+ * marker in it (i.e. "%s" or "%1$s"), then the current entry
+ * value will be substituted in its place.
+ *
+ * @return the summary with appropriate string substitution
+ */
+ @Override
+ public CharSequence getSummary() {
+ if (mSummary == null) {
+ return super.getSummary();
+ } else {
+ return mSummary;
+ }
+ }
+
+ /**
+ * Sets the summary for this Preference with a CharSequence.
+ * If the summary has a
+ * {@linkplain java.lang.String#format String formatting}
+ * marker in it (i.e. "%s" or "%1$s"), then the current entry
+ * value will be substituted in its place when it's retrieved.
+ *
+ * @param summary The summary for the preference.
+ */
+ @Override
+ public void setSummary(CharSequence summary) {
+ super.setSummary(summary);
+ if (summary == null && mSummary != null) {
+ mSummary = null;
+ } else if (summary != null && !summary.equals(mSummary)) {
+ mSummary = summary.toString();
+ }
+ }
+
+ /**
+ * Returns the currently selected values.
+ */
+ public boolean[] getValues() {
+ return mSetValues;
+ }
+
+ /**
+ * Returns the index of the given value (in the entry values array).
+ *
+ * @param value The value whose index should be returned.
+ * @return The index of the value, or -1 if not found.
+ */
+ public int findIndexOfValue(String value) {
+ if (value != null && mEntryValues != null) {
+ for (int i = mEntryValues.length - 1; i >= 0; i--) {
+ if (mEntryValues[i].equals(value)) {
+ return i;
+ }
+ }
+ }
+ return -1;
+ }
+
+ @Override
+ protected void onPrepareDialogBuilder(Builder builder) {
+ super.onPrepareDialogBuilder(builder);
+
+ if (mEntries == null || mEntryValues == null) {
+ throw new IllegalStateException(
+ "ListPreference requires an entries array and an entryValues array.");
+ }
+
+ mOrigValues = Arrays.copyOf(mSetValues, mSetValues.length);
+ builder.setMultiChoiceItems(mEntries, mSetValues,
+ new DialogInterface.OnMultiChoiceClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which, boolean isChecked) {
+ mSetValues[which] = isChecked;
+ }
+ });
+ }
+
+ @Override
+ protected void onDialogClosed(boolean positiveResult) {
+ super.onDialogClosed(positiveResult);
+
+ if (positiveResult) {
+ if (callChangeListener(getValues())) {
+ return;
+ }
+ }
+ System.arraycopy(mOrigValues, 0, mSetValues, 0, mSetValues.length);
+ }
+
+ @Override
+ protected Object onGetDefaultValue(TypedArray a, int index) {
+ return a.getString(index);
+ }
+
+ @Override
+ protected void onSetInitialValue(boolean restoreValue, Object defaultValue) {
+ }
+
+ @Override
+ protected Parcelable onSaveInstanceState() {
+ final Parcelable superState = super.onSaveInstanceState();
+ if (isPersistent()) {
+ // No need to save instance state since it's persistent
+ return superState;
+ }
+
+ final SavedState myState = new SavedState(superState);
+ myState.values = getValues();
+ return myState;
+ }
+
+ @Override
+ protected void onRestoreInstanceState(Parcelable state) {
+ if (state == null || !state.getClass().equals(SavedState.class)) {
+ // Didn't save state for us in onSaveInstanceState
+ super.onRestoreInstanceState(state);
+ return;
+ }
+
+ SavedState myState = (SavedState) state;
+ super.onRestoreInstanceState(myState.getSuperState());
+ setValues(myState.values);
+ }
+
+ private static class SavedState extends BaseSavedState {
+ boolean[] values;
+
+ public SavedState(Parcel source) {
+ super(source);
+ values = source.createBooleanArray();
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ super.writeToParcel(dest, flags);
+ dest.writeBooleanArray(values);
+ }
+
+ public SavedState(Parcelable superState) {
+ super(superState);
+ }
+
+ public static final Parcelable.Creator<SavedState> CREATOR =
+ new Parcelable.Creator<SavedState>() {
+ public SavedState createFromParcel(Parcel in) {
+ return new SavedState(in);
+ }
+
+ public SavedState[] newArray(int size) {
+ return new SavedState[size];
+ }
+ };
+ }
+
+}
diff --git a/core/java/android/preference/PreferenceScreen.java b/core/java/android/preference/PreferenceScreen.java
index 8b99459..c17111a 100644
--- a/core/java/android/preference/PreferenceScreen.java
+++ b/core/java/android/preference/PreferenceScreen.java
@@ -24,6 +24,7 @@
import android.os.Parcelable;
import android.text.TextUtils;
import android.util.AttributeSet;
+import android.view.LayoutInflater;
import android.view.View;
import android.view.Window;
import android.widget.AbsListView;
@@ -153,7 +154,12 @@
if (mListView != null) {
mListView.setAdapter(null);
}
- mListView = new ListView(context);
+
+ LayoutInflater inflater = (LayoutInflater)
+ context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ View childPrefScreen = inflater.inflate(
+ com.android.internal.R.layout.preference_list_fragment, null);
+ mListView = (ListView) childPrefScreen.findViewById(android.R.id.list);
bind(mListView);
// Set the title bar if title is available, else no title bar
@@ -164,7 +170,7 @@
} else {
dialog.setTitle(title);
}
- dialog.setContentView(mListView);
+ dialog.setContentView(childPrefScreen);
dialog.setOnDismissListener(this);
if (state != null) {
dialog.onRestoreInstanceState(state);
diff --git a/core/java/android/provider/CallLog.java b/core/java/android/provider/CallLog.java
index 6d14dfc..7824724 100644
--- a/core/java/android/provider/CallLog.java
+++ b/core/java/android/provider/CallLog.java
@@ -25,6 +25,7 @@
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
+import android.provider.ContactsContract.CommonDataKinds.Callable;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.DataUsageFeedback;
import android.text.TextUtils;
@@ -312,10 +313,12 @@
null);
} else {
final String phoneNumber = ci.phoneNumber != null ? ci.phoneNumber : number;
- cursor = resolver.query(Phone.CONTENT_URI,
+ cursor = resolver.query(
+ Uri.withAppendedPath(Callable.CONTENT_FILTER_URI,
+ Uri.encode(phoneNumber)),
new String[] { Phone._ID },
- Phone.CONTACT_ID + " =? AND " + Phone.NUMBER + " =?",
- new String[] { String.valueOf(ci.person_id), phoneNumber},
+ Phone.CONTACT_ID + " =?",
+ new String[] { String.valueOf(ci.person_id) },
null);
}
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 2c49bd2..ba8c4c9 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -1557,6 +1557,9 @@
* will likely be removed in a future release with support for
* audio/vibe feedback profiles.
*
+ * Not used anymore. On devices with vibrator, the user explicitly selects
+ * silent or vibrate mode.
+ * Kept for use by legacy database upgrade code in DatabaseHelper.
* @hide
*/
public static final String VIBRATE_IN_SILENT = "vibrate_in_silent";
@@ -1746,6 +1749,20 @@
public static final String USER_ROTATION = "user_rotation";
/**
+ * Whether the phone vibrates when it is ringing due to an incoming call. This will
+ * be used by Phone and Setting apps; it shouldn't affect other apps.
+ * The value is boolean (1 or 0).
+ *
+ * Note: this is not same as "vibrate on ring", which had been available until ICS.
+ * It was about AudioManager's setting and thus affected all the applications which
+ * relied on the setting, while this is purely about the vibration setting for incoming
+ * calls.
+ *
+ * @hide
+ */
+ public static final String VIBRATE_WHEN_RINGING = "vibrate_when_ringing";
+
+ /**
* Whether the audible DTMF tones are played by the dialer when dialing. The value is
* boolean (1 or 0).
*/
@@ -1983,7 +2000,6 @@
SCREEN_BRIGHTNESS,
SCREEN_BRIGHTNESS_MODE,
SCREEN_AUTO_BRIGHTNESS_ADJ,
- VIBRATE_ON,
VIBRATE_INPUT_DEVICES,
MODE_RINGER,
MODE_RINGER_STREAMS_AFFECTED,
@@ -2002,7 +2018,6 @@
VOLUME_ALARM + APPEND_FOR_LAST_AUDIBLE,
VOLUME_NOTIFICATION + APPEND_FOR_LAST_AUDIBLE,
VOLUME_BLUETOOTH_SCO + APPEND_FOR_LAST_AUDIBLE,
- VIBRATE_IN_SILENT,
TEXT_AUTO_REPLACE,
TEXT_AUTO_CAPS,
TEXT_AUTO_PUNCTUATE,
@@ -2029,6 +2044,7 @@
SIP_CALL_OPTIONS,
SIP_RECEIVE_CALLS,
POINTER_SPEED,
+ VIBRATE_WHEN_RINGING
};
// Settings moved to Settings.Secure
diff --git a/core/java/android/provider/SocialContract.java b/core/java/android/provider/SocialContract.java
deleted file mode 100644
index ee271ba..0000000
--- a/core/java/android/provider/SocialContract.java
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * Copyright (C) 2009 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 android.provider;
-
-import android.content.res.Resources;
-import android.graphics.BitmapFactory;
-import android.net.Uri;
-import android.provider.ContactsContract.Contacts;
-import android.provider.ContactsContract.Data;
-
-/**
- * The contract between the social provider and applications. Contains
- * definitions for the supported URIs and columns.
- *
- * @hide
- */
-public class SocialContract {
- /** The authority for the social provider */
- public static final String AUTHORITY = "com.android.social";
-
- /** A content:// style uri to the authority for the contacts provider */
- public static final Uri AUTHORITY_URI = Uri.parse("content://" + AUTHORITY);
-
- private interface ActivitiesColumns {
- /**
- * The package name to use when creating {@link Resources} objects for
- * this data row. This value is only designed for use when building user
- * interfaces, and should not be used to infer the owner.
- * <p>
- * Type: TEXT
- */
- public static final String RES_PACKAGE = "res_package";
-
- /**
- * The mime-type of this social activity.
- * <p>
- * Type: TEXT
- */
- public static final String MIMETYPE = "mimetype";
-
- /**
- * Internal raw identifier for this social activity. This field is
- * analogous to the <code>atom:id</code> element defined in RFC 4287.
- * <p>
- * Type: TEXT
- */
- public static final String RAW_ID = "raw_id";
-
- /**
- * Reference to another {@link Activities#RAW_ID} that this social activity
- * is replying to. This field is analogous to the
- * <code>thr:in-reply-to</code> element defined in RFC 4685.
- * <p>
- * Type: TEXT
- */
- public static final String IN_REPLY_TO = "in_reply_to";
-
- /**
- * Reference to the {@link android.provider.ContactsContract.Contacts#_ID} that authored
- * this social activity. This field is analogous to the <code>atom:author</code>
- * element defined in RFC 4287.
- * <p>
- * Type: INTEGER
- */
- public static final String AUTHOR_CONTACT_ID = "author_contact_id";
-
- /**
- * Optional reference to the {@link android.provider.ContactsContract.Contacts#_ID} this
- * social activity is targeted towards. If more than one direct target, this field may
- * be left undefined. This field is analogous to the
- * <code>activity:target</code> element defined in the Atom Activity
- * Extensions Internet-Draft.
- * <p>
- * Type: INTEGER
- */
- public static final String TARGET_CONTACT_ID = "target_contact_id";
-
- /**
- * Timestamp when this social activity was published, in a
- * {@link System#currentTimeMillis()} time base. This field is analogous
- * to the <code>atom:published</code> element defined in RFC 4287.
- * <p>
- * Type: INTEGER
- */
- public static final String PUBLISHED = "published";
-
- /**
- * Timestamp when the original social activity in a thread was
- * published. For activities that have an in-reply-to field specified, the
- * content provider will automatically populate this field with the
- * timestamp of the original activity.
- * <p>
- * This field is useful for sorting order of activities that keeps together all
- * messages in each thread.
- * <p>
- * Type: INTEGER
- */
- public static final String THREAD_PUBLISHED = "thread_published";
-
- /**
- * Title of this social activity. This field is analogous to the
- * <code>atom:title</code> element defined in RFC 4287.
- * <p>
- * Type: TEXT
- */
- public static final String TITLE = "title";
-
- /**
- * Summary of this social activity. This field is analogous to the
- * <code>atom:summary</code> element defined in RFC 4287.
- * <p>
- * Type: TEXT
- */
- public static final String SUMMARY = "summary";
-
- /**
- * A URI associated this social activity. This field is analogous to the
- * <code>atom:link rel="alternate"</code> element defined in RFC 4287.
- * <p>
- * Type: TEXT
- */
- public static final String LINK = "link";
-
- /**
- * Optional thumbnail specific to this social activity. This is the raw
- * bytes of an image that could be inflated using {@link BitmapFactory}.
- * <p>
- * Type: BLOB
- */
- public static final String THUMBNAIL = "thumbnail";
- }
-
- public static final class Activities implements BaseColumns, ActivitiesColumns {
- /**
- * This utility class cannot be instantiated
- */
- private Activities() {
- }
-
- /**
- * The content:// style URI for this table
- */
- public static final Uri CONTENT_URI = Uri.withAppendedPath(AUTHORITY_URI, "activities");
-
- /**
- * The content:// URI for this table filtered to the set of social activities
- * authored by a specific {@link android.provider.ContactsContract.Contacts#_ID}.
- */
- public static final Uri CONTENT_AUTHORED_BY_URI =
- Uri.withAppendedPath(CONTENT_URI, "authored_by");
-
- /**
- * The {@link Uri} for the latest social activity performed by any
- * raw contact aggregated under the specified {@link Contacts#_ID}. Will
- * also join with most-present {@link Presence} for this aggregate.
- */
- public static final Uri CONTENT_CONTACT_STATUS_URI =
- Uri.withAppendedPath(AUTHORITY_URI, "contact_status");
-
- /**
- * The MIME type of {@link #CONTENT_URI} providing a directory of social
- * activities.
- */
- public static final String CONTENT_TYPE = "vnd.android.cursor.dir/activity";
-
- /**
- * The MIME type of a {@link #CONTENT_URI} subdirectory of a single
- * social activity.
- */
- public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/activity";
- }
-
-}
diff --git a/core/java/android/server/BluetoothAdapterStateMachine.java b/core/java/android/server/BluetoothAdapterStateMachine.java
index 7711caa..2a994b2 100644
--- a/core/java/android/server/BluetoothAdapterStateMachine.java
+++ b/core/java/android/server/BluetoothAdapterStateMachine.java
@@ -39,7 +39,7 @@
* (BluetootOn)<----------------------<-
* | ^ -------------------->- |
* | | | |
- * TURN_OFF | | SCAN_MODE_CHANGED m1 | | USER_TURN_ON
+ * USER_TURN_OFF | | SCAN_MODE_CHANGED m1 | | USER_TURN_ON
* AIRPLANE_MODE_ON | | | |
* V | | |
* (Switching) (PerProcessState)
@@ -121,8 +121,10 @@
private static final int DEVICES_DISCONNECT_TIMEOUT = 103;
// Prepare Bluetooth timeout happens
private static final int PREPARE_BLUETOOTH_TIMEOUT = 104;
- // Bluetooth Powerdown timeout happens
- private static final int POWER_DOWN_TIMEOUT = 105;
+ // Bluetooth turn off wait timeout happens
+ private static final int TURN_OFF_TIMEOUT = 105;
+ // Bluetooth device power off wait timeout happens
+ private static final int POWER_DOWN_TIMEOUT = 106;
private Context mContext;
private BluetoothService mBluetoothService;
@@ -137,13 +139,17 @@
// this is the BluetoothAdapter state that reported externally
private int mPublicState;
+ // When turning off, broadcast STATE_OFF in the last HotOff state
+ // This is because we do HotOff -> PowerOff -> HotOff for USER_TURN_OFF
+ private boolean mDelayBroadcastStateOff;
// timeout value waiting for all the devices to be disconnected
private static final int DEVICES_DISCONNECT_TIMEOUT_TIME = 3000;
private static final int PREPARE_BLUETOOTH_TIMEOUT_TIME = 10000;
- private static final int POWER_DOWN_TIMEOUT_TIME = 5000;
+ private static final int TURN_OFF_TIMEOUT_TIME = 5000;
+ private static final int POWER_DOWN_TIMEOUT_TIME = 20;
BluetoothAdapterStateMachine(Context context, BluetoothService bluetoothService,
BluetoothAdapter bluetoothAdapter) {
@@ -168,6 +174,7 @@
setInitialState(mPowerOff);
mPublicState = BluetoothAdapter.STATE_OFF;
+ mDelayBroadcastStateOff = false;
}
/**
@@ -315,6 +322,10 @@
case SERVICE_RECORD_LOADED:
removeMessages(PREPARE_BLUETOOTH_TIMEOUT);
transitionTo(mHotOff);
+ if (mDelayBroadcastStateOff) {
+ broadcastState(BluetoothAdapter.STATE_OFF);
+ mDelayBroadcastStateOff = false;
+ }
break;
case PREPARE_BLUETOOTH_TIMEOUT:
Log.e(TAG, "Bluetooth adapter SDP failed to load");
@@ -373,8 +384,17 @@
case AIRPLANE_MODE_ON:
case TURN_COLD:
shutoffBluetooth();
+ // we cannot go to power off state yet, we need wait for the Bluetooth
+ // device power off. Unfortunately the stack does not give a event back
+ // so we wait a little bit here
+ sendMessageDelayed(POWER_DOWN_TIMEOUT,
+ POWER_DOWN_TIMEOUT_TIME);
+ break;
+ case POWER_DOWN_TIMEOUT:
transitionTo(mPowerOff);
- broadcastState(BluetoothAdapter.STATE_OFF);
+ if (!mDelayBroadcastStateOff) {
+ broadcastState(BluetoothAdapter.STATE_OFF);
+ }
break;
case AIRPLANE_MODE_OFF:
if (getBluetoothPersistedSetting()) {
@@ -402,6 +422,9 @@
recoverStateMachine(TURN_HOT, null);
}
break;
+ case TURN_HOT:
+ deferMessage(message);
+ break;
default:
return NOT_HANDLED;
}
@@ -436,14 +459,17 @@
}
break;
case POWER_STATE_CHANGED:
- removeMessages(POWER_DOWN_TIMEOUT);
+ removeMessages(TURN_OFF_TIMEOUT);
if (!((Boolean) message.obj)) {
if (mPublicState == BluetoothAdapter.STATE_TURNING_OFF) {
transitionTo(mHotOff);
- finishSwitchingOff();
- if (!mContext.getResources().getBoolean
- (com.android.internal.R.bool.config_bluetooth_adapter_quick_switch)) {
- deferMessage(obtainMessage(TURN_COLD));
+ mBluetoothService.finishDisable();
+ mBluetoothService.cleanupAfterFinishDisable();
+ deferMessage(obtainMessage(TURN_COLD));
+ if (mContext.getResources().getBoolean
+ (com.android.internal.R.bool.config_bluetooth_adapter_quick_switch)) {
+ deferMessage(obtainMessage(TURN_HOT));
+ mDelayBroadcastStateOff = true;
}
}
} else {
@@ -460,7 +486,7 @@
case ALL_DEVICES_DISCONNECTED:
removeMessages(DEVICES_DISCONNECT_TIMEOUT);
mBluetoothService.switchConnectable(false);
- sendMessageDelayed(POWER_DOWN_TIMEOUT, POWER_DOWN_TIMEOUT_TIME);
+ sendMessageDelayed(TURN_OFF_TIMEOUT, TURN_OFF_TIMEOUT_TIME);
break;
case DEVICES_DISCONNECT_TIMEOUT:
sendMessage(ALL_DEVICES_DISCONNECTED);
@@ -472,7 +498,7 @@
deferMessage(obtainMessage(TURN_HOT));
}
break;
- case POWER_DOWN_TIMEOUT:
+ case TURN_OFF_TIMEOUT:
transitionTo(mHotOff);
finishSwitchingOff();
// reset the hardware for error recovery
@@ -535,7 +561,7 @@
DEVICES_DISCONNECT_TIMEOUT_TIME);
} else {
mBluetoothService.switchConnectable(false);
- sendMessageDelayed(POWER_DOWN_TIMEOUT, POWER_DOWN_TIMEOUT_TIME);
+ sendMessageDelayed(TURN_OFF_TIMEOUT, TURN_OFF_TIMEOUT_TIME);
}
// we turn all the way to PowerOff with AIRPLANE_MODE_ON
@@ -609,7 +635,7 @@
}
break;
case POWER_STATE_CHANGED:
- removeMessages(POWER_DOWN_TIMEOUT);
+ removeMessages(TURN_OFF_TIMEOUT);
if (!((Boolean) message.obj)) {
transitionTo(mHotOff);
if (!mContext.getResources().getBoolean
@@ -627,7 +653,7 @@
}
}
break;
- case POWER_DOWN_TIMEOUT:
+ case TURN_OFF_TIMEOUT:
transitionTo(mHotOff);
Log.e(TAG, "Power-down timed out, resetting...");
deferMessage(obtainMessage(TURN_COLD));
@@ -674,12 +700,12 @@
perProcessCallback(false, (IBluetoothStateChangeCallback)message.obj);
if (mBluetoothService.isApplicationStateChangeTrackerEmpty()) {
mBluetoothService.switchConnectable(false);
- sendMessageDelayed(POWER_DOWN_TIMEOUT, POWER_DOWN_TIMEOUT_TIME);
+ sendMessageDelayed(TURN_OFF_TIMEOUT, TURN_OFF_TIMEOUT_TIME);
}
break;
case AIRPLANE_MODE_ON:
mBluetoothService.switchConnectable(false);
- sendMessageDelayed(POWER_DOWN_TIMEOUT, POWER_DOWN_TIMEOUT_TIME);
+ sendMessageDelayed(TURN_OFF_TIMEOUT, TURN_OFF_TIMEOUT_TIME);
allProcessesCallback(false);
// we turn all the way to PowerOff with AIRPLANE_MODE_ON
deferMessage(obtainMessage(AIRPLANE_MODE_ON));
diff --git a/core/java/android/server/BluetoothEventLoop.java b/core/java/android/server/BluetoothEventLoop.java
index 9c887a1..b758e7fa 100644
--- a/core/java/android/server/BluetoothEventLoop.java
+++ b/core/java/android/server/BluetoothEventLoop.java
@@ -268,6 +268,11 @@
*/
private void onDeviceCreated(String deviceObjectPath) {
String address = mBluetoothService.getAddressFromObjectPath(deviceObjectPath);
+ if (address == null) {
+ Log.e(TAG, "onDeviceCreated: device address null!" + " deviceObjectPath: " +
+ deviceObjectPath);
+ return;
+ }
if (!mBluetoothService.isRemoteDeviceInCache(address)) {
// Incoming connection, we haven't seen this device, add to cache.
String[] properties = mBluetoothService.getRemoteDeviceProperties(address);
@@ -275,7 +280,6 @@
addDevice(address, properties);
}
}
- return;
}
/**
diff --git a/core/java/android/server/BluetoothService.java b/core/java/android/server/BluetoothService.java
index a420734..3cf207f 100755
--- a/core/java/android/server/BluetoothService.java
+++ b/core/java/android/server/BluetoothService.java
@@ -526,6 +526,12 @@
return false;
}
switchConnectable(false);
+
+ // Bluetooth stack needs a small delay here before adding
+ // SDP records, otherwise dbus stalls for over 30 seconds 1 out of 50 runs
+ try {
+ Thread.sleep(20);
+ } catch (InterruptedException e) {}
updateSdpRecords();
return true;
}
@@ -593,6 +599,12 @@
// Add SDP records for profiles maintained by Android userspace
addReservedSdpRecords(uuids);
+ // Bluetooth stack need some a small delay here before adding more
+ // SDP records, otherwise dbus stalls for over 30 seconds 1 out of 50 runs
+ try {
+ Thread.sleep(20);
+ } catch (InterruptedException e) {}
+
if (R.getBoolean(com.android.internal.R.bool.config_bluetooth_default_profiles)) {
// Enable profiles maintained by Bluez userspace.
setBluetoothTetheringNative(true, BluetoothPanProfileHandler.NAP_ROLE,
diff --git a/core/java/android/service/textservice/SpellCheckerService.java b/core/java/android/service/textservice/SpellCheckerService.java
index c579e6e..77b22ed 100644
--- a/core/java/android/service/textservice/SpellCheckerService.java
+++ b/core/java/android/service/textservice/SpellCheckerService.java
@@ -397,14 +397,6 @@
}
wordStart = wordIterator.getBeginning(wordEnd);
}
- if (originalText.length() >= SpellChecker.WORD_ITERATOR_INTERVAL
- && wordItems.size() >= 2) {
- if (DBG) {
- Log.w(TAG, "Remove possibly divided word: "
- + wordItems.get(0).mTextInfo.getText());
- }
- wordItems.remove(0);
- }
return new SentenceTextInfoParams(originalTextInfo, wordItems);
}
diff --git a/core/java/android/text/SpannableStringBuilder.java b/core/java/android/text/SpannableStringBuilder.java
index 09c9438..0f30d25 100644
--- a/core/java/android/text/SpannableStringBuilder.java
+++ b/core/java/android/text/SpannableStringBuilder.java
@@ -308,6 +308,7 @@
resizeFor(mText.length + nbNewChars - mGapLength);
}
+ final boolean textIsRemoved = replacementLength == 0;
// The removal pass needs to be done before the gap is updated in order to broadcast the
// correct previous positions to the correct intersecting SpanWatchers
if (replacedLength > 0) { // no need for span fixup on pure insertion
@@ -319,12 +320,15 @@
while (i < mSpanCount) {
if ((mSpanFlags[i] & Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) ==
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE &&
- mSpanStarts[i] >= start && mSpanStarts[i] < mGapStart + mGapLength &&
- mSpanEnds[i] >= start && mSpanEnds[i] < mGapStart + mGapLength) {
+ mSpanStarts[i] >= start && mSpanStarts[i] < mGapStart + mGapLength &&
+ mSpanEnds[i] >= start && mSpanEnds[i] < mGapStart + mGapLength &&
+ // This condition indicates that the span would become empty
+ (textIsRemoved || mSpanStarts[i] > start || mSpanEnds[i] < mGapStart)) {
removeSpan(i);
- } else {
- i++;
+ continue; // do not increment i, spans will be shifted left in the array
}
+
+ i++;
}
}
@@ -338,7 +342,6 @@
if (replacedLength > 0) { // no need for span fixup on pure insertion
final boolean atEnd = (mGapStart + mGapLength == mText.length);
- final boolean textIsRemoved = replacementLength == 0;
for (int i = 0; i < mSpanCount; i++) {
final int startFlag = (mSpanFlags[i] & START_MASK) >> START_SHIFT;
@@ -390,9 +393,9 @@
return mGapStart + mGapLength;
}
} else { // MARK
- // MARKs should be moved to the start, with the exception of a mark located at the
- // end of the range (which will be < mGapStart + mGapLength since mGapLength > 0)
- // which should stay 'unchanged' at the end of the replaced text.
+ // MARKs should be moved to the start, with the exception of a mark located at
+ // the end of the range (which will be < mGapStart + mGapLength since mGapLength
+ // is > 0, which should stay 'unchanged' at the end of the replaced text.
if (textIsRemoved || offset < mGapStart - nbNewChars) {
return start;
} else {
diff --git a/core/java/android/text/TextDirectionHeuristic.java b/core/java/android/text/TextDirectionHeuristic.java
index 0bf64e4..513e11c 100644
--- a/core/java/android/text/TextDirectionHeuristic.java
+++ b/core/java/android/text/TextDirectionHeuristic.java
@@ -22,5 +22,5 @@
* @hide
*/
public interface TextDirectionHeuristic {
- /** @hide */ boolean isRtl(char[] text, int start, int count);
+ boolean isRtl(char[] text, int start, int count);
}
diff --git a/core/java/android/text/TextDirectionHeuristics.java b/core/java/android/text/TextDirectionHeuristics.java
index 6ca6161..be2840b 100644
--- a/core/java/android/text/TextDirectionHeuristics.java
+++ b/core/java/android/text/TextDirectionHeuristics.java
@@ -22,6 +22,7 @@
/**
* Some objects that implement TextDirectionHeuristic.
+ * @hide
*/
public class TextDirectionHeuristics {
diff --git a/core/java/android/util/LocaleUtil.java b/core/java/android/util/LocaleUtil.java
index 60526e1..93f5cd3 100644
--- a/core/java/android/util/LocaleUtil.java
+++ b/core/java/android/util/LocaleUtil.java
@@ -24,6 +24,7 @@
/**
* Various utilities for Locales
*
+ * @hide
*/
public class LocaleUtil {
@@ -40,7 +41,8 @@
* {@link View#LAYOUT_DIRECTION_LTR} or
* {@link View#LAYOUT_DIRECTION_RTL}.
*
- * Be careful: this code will need to be updated when vertical scripts will be supported
+ * Warning: this code does not support vertical scripts.
+ * @hide
*/
public static int getLayoutDirectionFromLocale(Locale locale) {
if (locale != null && !locale.equals(Locale.ROOT)) {
@@ -66,8 +68,7 @@
* {@link View#LAYOUT_DIRECTION_LTR} or
* {@link View#LAYOUT_DIRECTION_RTL}.
*
- * Be careful: this code will need to be updated when vertical scripts will be supported
- *
+ * Warning: this code does not support vertical scripts.
* @hide
*/
private static int getLayoutDirectionFromFirstChar(Locale locale) {
diff --git a/core/java/android/util/MathUtils.java b/core/java/android/util/MathUtils.java
index b35dd1e..13a692e 100644
--- a/core/java/android/util/MathUtils.java
+++ b/core/java/android/util/MathUtils.java
@@ -39,6 +39,10 @@
return amount < low ? low : (amount > high ? high : amount);
}
+ public static long constrain(long amount, long low, long high) {
+ return amount < low ? low : (amount > high ? high : amount);
+ }
+
public static float constrain(float amount, float low, float high) {
return amount < low ? low : (amount > high ? high : amount);
}
diff --git a/core/java/android/view/AccessibilityInteractionController.java b/core/java/android/view/AccessibilityInteractionController.java
index 6387148..881594d 100644
--- a/core/java/android/view/AccessibilityInteractionController.java
+++ b/core/java/android/view/AccessibilityInteractionController.java
@@ -126,6 +126,16 @@
}
}
+ private boolean isShown(View view) {
+ // The first two checks are made also made by isShown() which
+ // however traverses the tree up to the parent to catch that.
+ // Therefore, we do some fail fast check to minimize the up
+ // tree traversal.
+ return (view.mAttachInfo != null
+ && view.mAttachInfo.mWindowVisibility == View.VISIBLE
+ && view.isShown());
+ }
+
public void findAccessibilityNodeInfoByAccessibilityIdClientThread(
long accessibilityNodeId, int interactionId,
IAccessibilityInteractionConnectionCallback callback, int flags, int interrogatingPid,
@@ -174,7 +184,7 @@
} else {
root = findViewByAccessibilityId(accessibilityViewId);
}
- if (root != null && root.isDisplayedOnScreen()) {
+ if (root != null && isShown(root)) {
mPrefetcher.prefetchAccessibilityNodeInfos(root, virtualDescendantId, flags, infos);
}
} finally {
@@ -236,7 +246,7 @@
}
if (root != null) {
View target = root.findViewById(viewId);
- if (target != null && target.isDisplayedOnScreen()) {
+ if (target != null && isShown(target)) {
info = target.createAccessibilityNodeInfo();
}
}
@@ -298,7 +308,7 @@
} else {
root = mViewRootImpl.mView;
}
- if (root != null && root.isDisplayedOnScreen()) {
+ if (root != null && isShown(root)) {
AccessibilityNodeProvider provider = root.getAccessibilityNodeProvider();
if (provider != null) {
infos = provider.findAccessibilityNodeInfosByText(text,
@@ -315,7 +325,7 @@
final int viewCount = foundViews.size();
for (int i = 0; i < viewCount; i++) {
View foundView = foundViews.get(i);
- if (foundView.isDisplayedOnScreen()) {
+ if (isShown(foundView)) {
provider = foundView.getAccessibilityNodeProvider();
if (provider != null) {
List<AccessibilityNodeInfo> infosFromProvider =
@@ -390,7 +400,7 @@
} else {
root = mViewRootImpl.mView;
}
- if (root != null && root.isDisplayedOnScreen()) {
+ if (root != null && isShown(root)) {
switch (focusType) {
case AccessibilityNodeInfo.FOCUS_ACCESSIBILITY: {
View host = mViewRootImpl.mAccessibilityFocusedHost;
@@ -411,7 +421,7 @@
case AccessibilityNodeInfo.FOCUS_INPUT: {
// Input focus cannot go to virtual views.
View target = root.findFocus();
- if (target != null && target.isDisplayedOnScreen()) {
+ if (target != null && isShown(target)) {
focused = target.createAccessibilityNodeInfo();
}
} break;
@@ -477,7 +487,7 @@
} else {
root = mViewRootImpl.mView;
}
- if (root != null && root.isDisplayedOnScreen()) {
+ if (root != null && isShown(root)) {
if ((direction & View.FOCUS_ACCESSIBILITY) == View.FOCUS_ACCESSIBILITY) {
AccessibilityNodeProvider provider = root.getAccessibilityNodeProvider();
if (provider != null) {
@@ -565,7 +575,7 @@
} else {
target = mViewRootImpl.mView;
}
- if (target != null && target.isDisplayedOnScreen()) {
+ if (target != null && isShown(target)) {
AccessibilityNodeProvider provider = target.getAccessibilityNodeProvider();
if (provider != null) {
succeeded = provider.performAction(virtualDescendantId, action,
@@ -590,7 +600,7 @@
return null;
}
View foundView = root.findViewByAccessibilityId(accessibilityId);
- if (foundView != null && !foundView.isDisplayedOnScreen()) {
+ if (foundView != null && !isShown(foundView)) {
return null;
}
return foundView;
@@ -670,7 +680,7 @@
}
View child = children.getChildAt(i);
if (child.getAccessibilityViewId() != current.getAccessibilityViewId()
- && child.isDisplayedOnScreen()) {
+ && isShown(child)) {
AccessibilityNodeInfo info = null;
AccessibilityNodeProvider provider = child.getAccessibilityNodeProvider();
if (provider == null) {
@@ -706,7 +716,7 @@
return;
}
View child = children.getChildAt(i);
- if (child.isDisplayedOnScreen()) {
+ if (isShown(child)) {
AccessibilityNodeProvider provider = child.getAccessibilityNodeProvider();
if (provider == null) {
AccessibilityNodeInfo info = child.createAccessibilityNodeInfo();
diff --git a/core/java/android/view/AccessibilityIterators.java b/core/java/android/view/AccessibilityIterators.java
new file mode 100644
index 0000000..386c866d
--- /dev/null
+++ b/core/java/android/view/AccessibilityIterators.java
@@ -0,0 +1,352 @@
+/*
+ * Copyright (C) 2012 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 android.view;
+
+import android.content.ComponentCallbacks;
+import android.content.Context;
+import android.content.pm.ActivityInfo;
+import android.content.res.Configuration;
+
+import java.text.BreakIterator;
+import java.util.Locale;
+
+/**
+ * This class contains the implementation of text segment iterators
+ * for accessibility support.
+ *
+ * Note: Such iterators are needed in the view package since we want
+ * to be able to iterator over content description of any view.
+ *
+ * @hide
+ */
+public final class AccessibilityIterators {
+
+ /**
+ * @hide
+ */
+ public static interface TextSegmentIterator {
+ public int[] following(int current);
+ public int[] preceding(int current);
+ }
+
+ /**
+ * @hide
+ */
+ public static abstract class AbstractTextSegmentIterator implements TextSegmentIterator {
+ protected static final int DONE = -1;
+
+ protected String mText;
+
+ private final int[] mSegment = new int[2];
+
+ public void initialize(String text) {
+ mText = text;
+ }
+
+ protected int[] getRange(int start, int end) {
+ if (start < 0 || end < 0 || start == end) {
+ return null;
+ }
+ mSegment[0] = start;
+ mSegment[1] = end;
+ return mSegment;
+ }
+ }
+
+ static class CharacterTextSegmentIterator extends AbstractTextSegmentIterator
+ implements ComponentCallbacks {
+ private static CharacterTextSegmentIterator sInstance;
+
+ private final Context mAppContext;
+
+ protected BreakIterator mImpl;
+
+ public static CharacterTextSegmentIterator getInstance(Context context) {
+ if (sInstance == null) {
+ sInstance = new CharacterTextSegmentIterator(context);
+ }
+ return sInstance;
+ }
+
+ private CharacterTextSegmentIterator(Context context) {
+ mAppContext = context.getApplicationContext();
+ Locale locale = mAppContext.getResources().getConfiguration().locale;
+ onLocaleChanged(locale);
+ ViewRootImpl.addConfigCallback(this);
+ }
+
+ @Override
+ public void initialize(String text) {
+ super.initialize(text);
+ mImpl.setText(text);
+ }
+
+ @Override
+ public int[] following(int offset) {
+ final int textLegth = mText.length();
+ if (textLegth <= 0) {
+ return null;
+ }
+ if (offset >= textLegth) {
+ return null;
+ }
+ int start = -1;
+ if (offset < 0) {
+ offset = 0;
+ if (mImpl.isBoundary(offset)) {
+ start = offset;
+ }
+ }
+ if (start < 0) {
+ start = mImpl.following(offset);
+ }
+ if (start < 0) {
+ return null;
+ }
+ final int end = mImpl.following(start);
+ return getRange(start, end);
+ }
+
+ @Override
+ public int[] preceding(int offset) {
+ final int textLegth = mText.length();
+ if (textLegth <= 0) {
+ return null;
+ }
+ if (offset <= 0) {
+ return null;
+ }
+ int end = -1;
+ if (offset > mText.length()) {
+ offset = mText.length();
+ if (mImpl.isBoundary(offset)) {
+ end = offset;
+ }
+ }
+ if (end < 0) {
+ end = mImpl.preceding(offset);
+ }
+ if (end < 0) {
+ return null;
+ }
+ final int start = mImpl.preceding(end);
+ return getRange(start, end);
+ }
+
+ @Override
+ public void onConfigurationChanged(Configuration newConfig) {
+ Configuration oldConfig = mAppContext.getResources().getConfiguration();
+ final int changed = oldConfig.diff(newConfig);
+ if ((changed & ActivityInfo.CONFIG_LOCALE) != 0) {
+ Locale locale = newConfig.locale;
+ onLocaleChanged(locale);
+ }
+ }
+
+ @Override
+ public void onLowMemory() {
+ /* ignore */
+ }
+
+ protected void onLocaleChanged(Locale locale) {
+ mImpl = BreakIterator.getCharacterInstance(locale);
+ }
+ }
+
+ static class WordTextSegmentIterator extends CharacterTextSegmentIterator {
+ private static WordTextSegmentIterator sInstance;
+
+ public static WordTextSegmentIterator getInstance(Context context) {
+ if (sInstance == null) {
+ sInstance = new WordTextSegmentIterator(context);
+ }
+ return sInstance;
+ }
+
+ private WordTextSegmentIterator(Context context) {
+ super(context);
+ }
+
+ @Override
+ protected void onLocaleChanged(Locale locale) {
+ mImpl = BreakIterator.getWordInstance(locale);
+ }
+
+ @Override
+ public int[] following(int offset) {
+ final int textLegth = mText.length();
+ if (textLegth <= 0) {
+ return null;
+ }
+ if (offset >= mText.length()) {
+ return null;
+ }
+ int start = -1;
+ if (offset < 0) {
+ offset = 0;
+ if (mImpl.isBoundary(offset) && isLetterOrDigit(offset)) {
+ start = offset;
+ }
+ }
+ if (start < 0) {
+ while ((offset = mImpl.following(offset)) != DONE) {
+ if (isLetterOrDigit(offset)) {
+ start = offset;
+ break;
+ }
+ }
+ }
+ if (start < 0) {
+ return null;
+ }
+ final int end = mImpl.following(start);
+ return getRange(start, end);
+ }
+
+ @Override
+ public int[] preceding(int offset) {
+ final int textLegth = mText.length();
+ if (textLegth <= 0) {
+ return null;
+ }
+ if (offset <= 0) {
+ return null;
+ }
+ int end = -1;
+ if (offset > mText.length()) {
+ offset = mText.length();
+ if (mImpl.isBoundary(offset) && offset > 0 && isLetterOrDigit(offset - 1)) {
+ end = offset;
+ }
+ }
+ if (end < 0) {
+ while ((offset = mImpl.preceding(offset)) != DONE) {
+ if (offset > 0 && isLetterOrDigit(offset - 1)) {
+ end = offset;
+ break;
+ }
+ }
+ }
+ if (end < 0) {
+ return null;
+ }
+ final int start = mImpl.preceding(end);
+ return getRange(start, end);
+ }
+
+ private boolean isLetterOrDigit(int index) {
+ if (index >= 0 && index < mText.length()) {
+ final int codePoint = mText.codePointAt(index);
+ return Character.isLetterOrDigit(codePoint);
+ }
+ return false;
+ }
+ }
+
+ static class ParagraphTextSegmentIterator extends AbstractTextSegmentIterator {
+ private static ParagraphTextSegmentIterator sInstance;
+
+ public static ParagraphTextSegmentIterator getInstance() {
+ if (sInstance == null) {
+ sInstance = new ParagraphTextSegmentIterator();
+ }
+ return sInstance;
+ }
+
+ @Override
+ public int[] following(int offset) {
+ final int textLength = mText.length();
+ if (textLength <= 0) {
+ return null;
+ }
+ if (offset >= textLength) {
+ return null;
+ }
+ int start = -1;
+ if (offset < 0) {
+ start = 0;
+ } else {
+ for (int i = offset + 1; i < textLength; i++) {
+ if (mText.charAt(i) == '\n') {
+ start = i;
+ break;
+ }
+ }
+ }
+ while (start < textLength && mText.charAt(start) == '\n') {
+ start++;
+ }
+ if (start < 0) {
+ return null;
+ }
+ int end = start;
+ for (int i = end + 1; i < textLength; i++) {
+ end = i;
+ if (mText.charAt(i) == '\n') {
+ break;
+ }
+ }
+ while (end < textLength && mText.charAt(end) == '\n') {
+ end++;
+ }
+ return getRange(start, end);
+ }
+
+ @Override
+ public int[] preceding(int offset) {
+ final int textLength = mText.length();
+ if (textLength <= 0) {
+ return null;
+ }
+ if (offset <= 0) {
+ return null;
+ }
+ int end = -1;
+ if (offset > mText.length()) {
+ end = mText.length();
+ } else {
+ if (offset > 0 && mText.charAt(offset - 1) == '\n') {
+ offset--;
+ }
+ for (int i = offset - 1; i >= 0; i--) {
+ if (i > 0 && mText.charAt(i - 1) == '\n') {
+ end = i;
+ break;
+ }
+ }
+ }
+ if (end <= 0) {
+ return null;
+ }
+ int start = end;
+ while (start > 0 && mText.charAt(start - 1) == '\n') {
+ start--;
+ }
+ if (start == 0 && mText.charAt(start) == '\n') {
+ return null;
+ }
+ for (int i = start - 1; i >= 0; i--) {
+ start = i;
+ if (start > 0 && mText.charAt(i - 1) == '\n') {
+ break;
+ }
+ }
+ start = Math.max(0, start);
+ return getRange(start, end);
+ }
+ }
+}
diff --git a/core/java/android/view/ActionMode.java b/core/java/android/view/ActionMode.java
index 0ba5fdb..a359952 100644
--- a/core/java/android/view/ActionMode.java
+++ b/core/java/android/view/ActionMode.java
@@ -30,6 +30,7 @@
*/
public abstract class ActionMode {
private Object mTag;
+ private boolean mTitleOptionalHint;
/**
* Set a tag object associated with this ActionMode.
@@ -119,6 +120,18 @@
* @param titleOptional true if the title only presents optional information.
*/
public void setTitleOptionalHint(boolean titleOptional) {
+ mTitleOptionalHint = titleOptional;
+ }
+
+ /**
+ * @return true if this action mode has been given a hint to consider the
+ * title/subtitle display to be optional.
+ *
+ * @see #setTitleOptionalHint(boolean)
+ * @see #isTitleOptional()
+ */
+ public boolean getTitleOptionalHint() {
+ return mTitleOptionalHint;
}
/**
diff --git a/core/java/android/view/Choreographer.java b/core/java/android/view/Choreographer.java
index b319cd5..825f351 100644
--- a/core/java/android/view/Choreographer.java
+++ b/core/java/android/view/Choreographer.java
@@ -92,6 +92,7 @@
private boolean mFrameScheduled;
private boolean mCallbacksRunning;
private long mLastFrameTimeNanos;
+ private long mFrameIntervalNanos;
/**
* Callback type: Input callback. Runs first.
@@ -116,6 +117,8 @@
mHandler = new FrameHandler(looper);
mDisplayEventReceiver = USE_VSYNC ? new FrameDisplayEventReceiver(looper) : null;
mLastFrameTimeNanos = Long.MIN_VALUE;
+ mFrameIntervalNanos = (long)(1000000000 /
+ new Display(Display.DEFAULT_DISPLAY, null).getRefreshRate());
mCallbackQueues = new CallbackQueue[CALLBACK_LAST + 1];
for (int i = 0; i <= CALLBACK_LAST; i++) {
@@ -343,19 +346,39 @@
}
void doFrame(long timestampNanos, int frame) {
+ final long startNanos;
synchronized (mLock) {
if (!mFrameScheduled) {
return; // no work to do
}
+
+ startNanos = System.nanoTime();
+ final long jitterNanos = startNanos - timestampNanos;
+ if (jitterNanos >= mFrameIntervalNanos) {
+ final long lastFrameOffset = jitterNanos % mFrameIntervalNanos;
+ if (DEBUG) {
+ Log.d(TAG, "Missed vsync by " + (jitterNanos * 0.000001f) + " ms "
+ + "which is more than the frame interval of "
+ + (mFrameIntervalNanos * 0.000001f) + " ms! "
+ + "Setting frame time to " + (lastFrameOffset * 0.000001f)
+ + " ms in the past.");
+ }
+ timestampNanos = startNanos - lastFrameOffset;
+ }
+
+ if (timestampNanos < mLastFrameTimeNanos) {
+ if (DEBUG) {
+ Log.d(TAG, "Frame time appears to be going backwards. May be due to a "
+ + "previously skipped frame. Waiting for next vsync");
+ }
+ scheduleVsyncLocked();
+ return;
+ }
+
mFrameScheduled = false;
mLastFrameTimeNanos = timestampNanos;
}
- final long startNanos;
- if (DEBUG) {
- startNanos = System.nanoTime();
- }
-
doCallbacks(Choreographer.CALLBACK_INPUT);
doCallbacks(Choreographer.CALLBACK_ANIMATION);
doCallbacks(Choreographer.CALLBACK_TRAVERSAL);
diff --git a/core/java/android/view/Display.java b/core/java/android/view/Display.java
index bda8016..c947312 100644
--- a/core/java/android/view/Display.java
+++ b/core/java/android/view/Display.java
@@ -391,6 +391,15 @@
}
/**
+ * If the display is mirrored to an external HDMI display, returns the
+ * rotation of that display relative to its natural orientation.
+ * @hide
+ */
+ public int getExternalRotation() {
+ return Surface.ROTATION_0;
+ }
+
+ /**
* Gets display metrics based on an explicit assumed display size.
* @hide
*/
diff --git a/core/java/android/view/DisplayList.java b/core/java/android/view/DisplayList.java
index fba73fbd..3dab174 100644
--- a/core/java/android/view/DisplayList.java
+++ b/core/java/android/view/DisplayList.java
@@ -30,7 +30,7 @@
public abstract class DisplayList {
/**
* Flag used when calling
- * {@link HardwareCanvas#drawDisplayList(DisplayList, int, int, android.graphics.Rect, int)}.
+ * {@link HardwareCanvas#drawDisplayList(DisplayList, android.graphics.Rect, int)}
* When this flag is set, draw operations lying outside of the bounds of the
* display list will be culled early. It is recommeneded to always set this
* flag.
@@ -42,21 +42,21 @@
/**
* Indicates that the display list is done drawing.
*
- * @see HardwareCanvas#drawDisplayList(DisplayList, int, int, android.graphics.Rect, int)
+ * @see HardwareCanvas#drawDisplayList(DisplayList, android.graphics.Rect, int)
*/
public static final int STATUS_DONE = 0x0;
/**
* Indicates that the display list needs another drawing pass.
*
- * @see HardwareCanvas#drawDisplayList(DisplayList, int, int, android.graphics.Rect, int)
+ * @see HardwareCanvas#drawDisplayList(DisplayList, android.graphics.Rect, int)
*/
public static final int STATUS_DRAW = 0x1;
/**
* Indicates that the display list needs to re-execute its GL functors.
*
- * @see HardwareCanvas#drawDisplayList(DisplayList, int, int, android.graphics.Rect, int)
+ * @see HardwareCanvas#drawDisplayList(DisplayList, android.graphics.Rect, int)
* @see HardwareCanvas#callDrawGLFunction(int)
*/
public static final int STATUS_INVOKE = 0x2;
diff --git a/core/java/android/view/FocusFinder.java b/core/java/android/view/FocusFinder.java
index 98375ae..6bf1888 100644
--- a/core/java/android/view/FocusFinder.java
+++ b/core/java/android/view/FocusFinder.java
@@ -62,7 +62,7 @@
* @return The next focusable view, or null if none exists.
*/
public final View findNextFocus(ViewGroup root, View focused, int direction) {
- return findNextFocus(root, focused, mFocusedRect, direction);
+ return findNextFocus(root, focused, null, direction);
}
/**
@@ -122,34 +122,40 @@
int direction, ArrayList<View> focusables) {
final int directionMasked = (direction & ~View.FOCUS_ACCESSIBILITY);
if (focused != null) {
+ if (focusedRect == null) {
+ focusedRect = mFocusedRect;
+ }
// fill in interesting rect from focused
focused.getFocusedRect(focusedRect);
root.offsetDescendantRectToMyCoords(focused, focusedRect);
} else {
- // make up a rect at top left or bottom right of root
- switch (directionMasked) {
- case View.FOCUS_RIGHT:
- case View.FOCUS_DOWN:
- setFocusTopLeft(root, focusedRect);
- break;
- case View.FOCUS_FORWARD:
- if (root.isLayoutRtl()) {
- setFocusBottomRight(root, focusedRect);
- } else {
+ if (focusedRect == null) {
+ focusedRect = mFocusedRect;
+ // make up a rect at top left or bottom right of root
+ switch (directionMasked) {
+ case View.FOCUS_RIGHT:
+ case View.FOCUS_DOWN:
setFocusTopLeft(root, focusedRect);
- }
- break;
+ break;
+ case View.FOCUS_FORWARD:
+ if (root.isLayoutRtl()) {
+ setFocusBottomRight(root, focusedRect);
+ } else {
+ setFocusTopLeft(root, focusedRect);
+ }
+ break;
- case View.FOCUS_LEFT:
- case View.FOCUS_UP:
- setFocusBottomRight(root, focusedRect);
- break;
- case View.FOCUS_BACKWARD:
- if (root.isLayoutRtl()) {
- setFocusTopLeft(root, focusedRect);
- } else {
+ case View.FOCUS_LEFT:
+ case View.FOCUS_UP:
setFocusBottomRight(root, focusedRect);
- break;
+ break;
+ case View.FOCUS_BACKWARD:
+ if (root.isLayoutRtl()) {
+ setFocusTopLeft(root, focusedRect);
+ } else {
+ setFocusBottomRight(root, focusedRect);
+ break;
+ }
}
}
}
diff --git a/core/java/android/view/Gravity.java b/core/java/android/view/Gravity.java
index f031fe7..4547aa6 100644
--- a/core/java/android/view/Gravity.java
+++ b/core/java/android/view/Gravity.java
@@ -155,6 +155,7 @@
*
* @see {@link View#LAYOUT_DIRECTION_LTR}
* @see {@link View#LAYOUT_DIRECTION_RTL}
+ * @hide
*/
public static void apply(int gravity, int w, int h, Rect container,
Rect outRect, int layoutDirection) {
@@ -292,6 +293,7 @@
*
* @see {@link View#LAYOUT_DIRECTION_LTR}
* @see {@link View#LAYOUT_DIRECTION_RTL}
+ * @hide
*/
public static void apply(int gravity, int w, int h, Rect container,
int xAdj, int yAdj, Rect outRect, int layoutDirection) {
@@ -372,6 +374,7 @@
*
* @see {@link View#LAYOUT_DIRECTION_LTR}
* @see {@link View#LAYOUT_DIRECTION_RTL}
+ * @hide
*/
public static void applyDisplay(int gravity, Rect display, Rect inoutObj, int layoutDirection) {
int absGravity = getAbsoluteGravity(gravity, layoutDirection);
@@ -408,6 +411,7 @@
* @param gravity The gravity to convert to absolute (horizontal) values.
* @param layoutDirection The layout direction.
* @return gravity converted to absolute (horizontal) values.
+ * @hide
*/
public static int getAbsoluteGravity(int gravity, int layoutDirection) {
int result = gravity;
diff --git a/core/java/android/view/HardwareRenderer.java b/core/java/android/view/HardwareRenderer.java
index c0771c5..e25e2ef 100644
--- a/core/java/android/view/HardwareRenderer.java
+++ b/core/java/android/view/HardwareRenderer.java
@@ -152,7 +152,7 @@
/**
* Number of frames to profile.
*/
- private static final int PROFILE_MAX_FRAMES = 64;
+ private static final int PROFILE_MAX_FRAMES = 128;
/**
* Number of floats per profiled frame.
diff --git a/core/java/android/view/InputDevice.java b/core/java/android/view/InputDevice.java
index 85f435c..2ea0360 100755
--- a/core/java/android/view/InputDevice.java
+++ b/core/java/android/view/InputDevice.java
@@ -46,6 +46,7 @@
private final int mGeneration;
private final String mName;
private final String mDescriptor;
+ private final boolean mIsExternal;
private final int mSources;
private final int mKeyboardType;
private final KeyCharacterMap mKeyCharacterMap;
@@ -322,12 +323,14 @@
};
// Called by native code.
- private InputDevice(int id, int generation, String name, String descriptor, int sources,
+ private InputDevice(int id, int generation, String name, String descriptor,
+ boolean isExternal, int sources,
int keyboardType, KeyCharacterMap keyCharacterMap, boolean hasVibrator) {
mId = id;
mGeneration = generation;
mName = name;
mDescriptor = descriptor;
+ mIsExternal = isExternal;
mSources = sources;
mKeyboardType = keyboardType;
mKeyCharacterMap = keyCharacterMap;
@@ -339,6 +342,7 @@
mGeneration = in.readInt();
mName = in.readString();
mDescriptor = in.readString();
+ mIsExternal = in.readInt() != 0;
mSources = in.readInt();
mKeyboardType = in.readInt();
mKeyCharacterMap = KeyCharacterMap.CREATOR.createFromParcel(in);
@@ -414,7 +418,7 @@
* has a trackpad. Alternately, it may be that the input devices are simply
* indistinguishable, such as two keyboards made by the same manufacturer.
* </p><p>
- * The input device descriptor returned by {@link #getDescriptor} should only bt
+ * The input device descriptor returned by {@link #getDescriptor} should only be
* used when an application needs to remember settings associated with a particular
* input device. For all other purposes when referring to a logical
* {@link InputDevice} instance at runtime use the id returned by {@link #getId()}.
@@ -443,6 +447,18 @@
}
/**
+ * Returns true if the device is external (connected to USB or Bluetooth or some other
+ * peripheral bus), otherwise it is built-in.
+ *
+ * @return True if the device is external.
+ *
+ * @hide
+ */
+ public boolean isExternal() {
+ return mIsExternal;
+ }
+
+ /**
* Gets the name of this input device.
* @return The input device name.
*/
@@ -660,6 +676,7 @@
out.writeInt(mGeneration);
out.writeString(mName);
out.writeString(mDescriptor);
+ out.writeInt(mIsExternal ? 1 : 0);
out.writeInt(mSources);
out.writeInt(mKeyboardType);
mKeyCharacterMap.writeToParcel(out, flags);
@@ -689,6 +706,7 @@
description.append("Input Device ").append(mId).append(": ").append(mName).append("\n");
description.append(" Descriptor: ").append(mDescriptor).append("\n");
description.append(" Generation: ").append(mGeneration).append("\n");
+ description.append(" Location: ").append(mIsExternal ? "external" : "built-in").append("\n");
description.append(" Keyboard Type: ");
switch (mKeyboardType) {
diff --git a/core/java/android/view/Surface.java b/core/java/android/view/Surface.java
index 53af3c5..1011d7a 100644
--- a/core/java/android/view/Surface.java
+++ b/core/java/android/view/Surface.java
@@ -510,6 +510,8 @@
public native void setFreezeTint(int tint);
/** @hide */
public native void setFlags(int flags, int mask);
+ /** @hide */
+ public native void setActiveRect(Rect activeRect);
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index 092bcbd..9fa67ac 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -47,7 +47,6 @@
import android.os.RemoteException;
import android.os.SystemClock;
import android.os.SystemProperties;
-import android.text.TextUtils;
import android.util.AttributeSet;
import android.util.FloatProperty;
import android.util.LocaleUtil;
@@ -60,6 +59,10 @@
import android.util.SparseArray;
import android.util.TypedValue;
import android.view.ContextMenu.ContextMenuInfo;
+import android.view.AccessibilityIterators.TextSegmentIterator;
+import android.view.AccessibilityIterators.CharacterTextSegmentIterator;
+import android.view.AccessibilityIterators.WordTextSegmentIterator;
+import android.view.AccessibilityIterators.ParagraphTextSegmentIterator;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityEventSource;
import android.view.accessibility.AccessibilityManager;
@@ -340,10 +343,9 @@
* Padding can be used to offset the content of the view by a specific amount of
* pixels. For instance, a left padding of 2 will push the view's content by
* 2 pixels to the right of the left edge. Padding can be set using the
- * {@link #setPadding(int, int, int, int)} or {@link #setPaddingRelative(int, int, int, int)}
- * method and queried by calling {@link #getPaddingLeft()}, {@link #getPaddingTop()},
- * {@link #getPaddingRight()}, {@link #getPaddingBottom()}, {@link #getPaddingStart()},
- * {@link #getPaddingEnd()}.
+ * {@link #setPadding(int, int, int, int)} method and queried by calling
+ * {@link #getPaddingLeft()}, {@link #getPaddingTop()}, {@link #getPaddingRight()},
+ * {@link #getPaddingBottom()}.
* </p>
*
* <p>
@@ -537,9 +539,32 @@
* themselves rather than by putting them in a separate structure.
* </p>
*
+ * <a name="Properties"></a>
+ * <h3>Properties</h3>
+ * <p>
+ * The View class exposes an {@link #ALPHA} property, as well as several transform-related
+ * properties, such as {@link #TRANSLATION_X} and {@link #TRANSLATION_Y}. These properties are
+ * available both in the {@link Property} form as well as in similarly-named setter/getter
+ * methods (such as {@link #setAlpha(float)} for {@link #ALPHA}). These properties can
+ * be used to set persistent state associated with these rendering-related properties on the view.
+ * The properties and methods can also be used in conjunction with
+ * {@link android.animation.Animator Animator}-based animations, described more in the
+ * <a href="#Animation">Animation</a> section.
+ * </p>
+ *
* <a name="Animation"></a>
* <h3>Animation</h3>
* <p>
+ * Starting with Android 3.0, the preferred way of animating views is to use the
+ * {@link android.animation} package APIs. These {@link android.animation.Animator Animator}-based
+ * classes change actual properties of the View object, such as {@link #setAlpha(float) alpha} and
+ * {@link #setTranslationX(float) translationX}. This behavior is contrasted to that of the pre-3.0
+ * {@link android.view.animation.Animation Animation}-based classes, which instead animate only
+ * how the view is drawn on the display. In particular, the {@link ViewPropertyAnimator} class
+ * makes animating these View properties particularly easy and efficient.
+ * </p>
+ * <p>
+ * Alternatively, you can use the pre-3.0 animation classes to animate how Views are rendered.
* You can attach an {@link Animation} object to a view using
* {@link #setAnimation(Animation)} or
* {@link #startAnimation(Animation)}. The animation can alter the scale,
@@ -548,10 +573,6 @@
* subtree rooted by that node. When an animation is started, the framework will
* take care of redrawing the appropriate views until the animation completes.
* </p>
- * <p>
- * Starting with Android 3.0, the preferred way of animating views is to use the
- * {@link android.animation} package APIs.
- * </p>
*
* <a name="Security"></a>
* <h3>Security</h3>
@@ -606,8 +627,6 @@
* @attr ref android.R.styleable#View_paddingLeft
* @attr ref android.R.styleable#View_paddingRight
* @attr ref android.R.styleable#View_paddingTop
- * @attr ref android.R.styleable#View_paddingStart
- * @attr ref android.R.styleable#View_paddingEnd
* @attr ref android.R.styleable#View_saveEnabled
* @attr ref android.R.styleable#View_rotation
* @attr ref android.R.styleable#View_rotationX
@@ -629,7 +648,6 @@
* @attr ref android.R.styleable#View_scrollbarAlwaysDrawVerticalTrack
* @attr ref android.R.styleable#View_soundEffectsEnabled
* @attr ref android.R.styleable#View_tag
- * @attr ref android.R.styleable#View_textAlignment
* @attr ref android.R.styleable#View_transformPivotX
* @attr ref android.R.styleable#View_transformPivotY
* @attr ref android.R.styleable#View_translationX
@@ -1509,7 +1527,8 @@
| AccessibilityEvent.TYPE_VIEW_HOVER_EXIT
| AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED
| AccessibilityEvent.TYPE_VIEW_TEXT_SELECTION_CHANGED
- | AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED;
+ | AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED
+ | AccessibilityEvent.TYPE_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY;
/**
* Temporary Rect currently for use in setBackground(). This will probably
@@ -1575,6 +1594,11 @@
int mAccessibilityViewId = NO_ID;
/**
+ * @hide
+ */
+ private int mAccessibilityCursorPosition = -1;
+
+ /**
* The view's tag.
* {@hide}
*
@@ -1763,24 +1787,28 @@
/**
* Horizontal layout direction of this view is from Left to Right.
* Use with {@link #setLayoutDirection}.
+ * @hide
*/
public static final int LAYOUT_DIRECTION_LTR = 0;
/**
* Horizontal layout direction of this view is from Right to Left.
* Use with {@link #setLayoutDirection}.
+ * @hide
*/
public static final int LAYOUT_DIRECTION_RTL = 1;
/**
* Horizontal layout direction of this view is inherited from its parent.
* Use with {@link #setLayoutDirection}.
+ * @hide
*/
public static final int LAYOUT_DIRECTION_INHERIT = 2;
/**
* Horizontal layout direction of this view is from deduced from the default language
* script for the locale. Use with {@link #setLayoutDirection}.
+ * @hide
*/
public static final int LAYOUT_DIRECTION_LOCALE = 3;
@@ -1845,6 +1873,7 @@
/**
* Text direction is inherited thru {@link ViewGroup}
+ * @hide
*/
public static final int TEXT_DIRECTION_INHERIT = 0;
@@ -1852,6 +1881,7 @@
* Text direction is using "first strong algorithm". The first strong directional character
* determines the paragraph direction. If there is no strong directional character, the
* paragraph direction is the view's resolved layout direction.
+ * @hide
*/
public static final int TEXT_DIRECTION_FIRST_STRONG = 1;
@@ -1859,26 +1889,31 @@
* Text direction is using "any-RTL" algorithm. The paragraph direction is RTL if it contains
* any strong RTL character, otherwise it is LTR if it contains any strong LTR characters.
* If there are neither, the paragraph direction is the view's resolved layout direction.
+ * @hide
*/
public static final int TEXT_DIRECTION_ANY_RTL = 2;
/**
* Text direction is forced to LTR.
+ * @hide
*/
public static final int TEXT_DIRECTION_LTR = 3;
/**
* Text direction is forced to RTL.
+ * @hide
*/
public static final int TEXT_DIRECTION_RTL = 4;
/**
* Text direction is coming from the system Locale.
+ * @hide
*/
public static final int TEXT_DIRECTION_LOCALE = 5;
/**
* Default text direction is inherited
+ * @hide
*/
protected static int TEXT_DIRECTION_DEFAULT = TEXT_DIRECTION_INHERIT;
@@ -1936,6 +1971,7 @@
/*
* Default text alignment. The text alignment of this View is inherited from its parent.
* Use with {@link #setTextAlignment(int)}
+ * @hide
*/
public static final int TEXT_ALIGNMENT_INHERIT = 0;
@@ -1944,6 +1980,7 @@
* ALIGN_CENTER, or ALIGN_OPPOSITE, which are relative to each paragraph’s text direction.
*
* Use with {@link #setTextAlignment(int)}
+ * @hide
*/
public static final int TEXT_ALIGNMENT_GRAVITY = 1;
@@ -1951,6 +1988,7 @@
* Align to the start of the paragraph, e.g. ALIGN_NORMAL.
*
* Use with {@link #setTextAlignment(int)}
+ * @hide
*/
public static final int TEXT_ALIGNMENT_TEXT_START = 2;
@@ -1958,6 +1996,7 @@
* Align to the end of the paragraph, e.g. ALIGN_OPPOSITE.
*
* Use with {@link #setTextAlignment(int)}
+ * @hide
*/
public static final int TEXT_ALIGNMENT_TEXT_END = 3;
@@ -1965,6 +2004,7 @@
* Center the paragraph, e.g. ALIGN_CENTER.
*
* Use with {@link #setTextAlignment(int)}
+ * @hide
*/
public static final int TEXT_ALIGNMENT_CENTER = 4;
@@ -1973,6 +2013,7 @@
* layoutDirection is LTR, and ALIGN_RIGHT otherwise.
*
* Use with {@link #setTextAlignment(int)}
+ * @hide
*/
public static final int TEXT_ALIGNMENT_VIEW_START = 5;
@@ -1981,11 +2022,13 @@
* layoutDirection is LTR, and ALIGN_LEFT otherwise.
*
* Use with {@link #setTextAlignment(int)}
+ * @hide
*/
public static final int TEXT_ALIGNMENT_VIEW_END = 6;
/**
* Default text alignment is inherited
+ * @hide
*/
protected static int TEXT_ALIGNMENT_DEFAULT = TEXT_ALIGNMENT_GRAVITY;
@@ -4623,6 +4666,51 @@
}
/**
+ * Gets the location of this view in screen coordintates.
+ *
+ * @param outRect The output location
+ */
+ private void getBoundsOnScreen(Rect outRect) {
+ if (mAttachInfo == null) {
+ return;
+ }
+
+ RectF position = mAttachInfo.mTmpTransformRect;
+ position.set(0, 0, mRight - mLeft, mBottom - mTop);
+
+ if (!hasIdentityMatrix()) {
+ getMatrix().mapRect(position);
+ }
+
+ position.offset(mLeft, mTop);
+
+ ViewParent parent = mParent;
+ while (parent instanceof View) {
+ View parentView = (View) parent;
+
+ position.offset(-parentView.mScrollX, -parentView.mScrollY);
+
+ if (!parentView.hasIdentityMatrix()) {
+ parentView.getMatrix().mapRect(position);
+ }
+
+ position.offset(parentView.mLeft, parentView.mTop);
+
+ parent = parentView.mParent;
+ }
+
+ if (parent instanceof ViewRootImpl) {
+ ViewRootImpl viewRootImpl = (ViewRootImpl) parent;
+ position.offset(0, -viewRootImpl.mCurScrollY);
+ }
+
+ position.offset(mAttachInfo.mWindowLeft, mAttachInfo.mWindowTop);
+
+ outRect.set((int) (position.left + 0.5f), (int) (position.top + 0.5f),
+ (int) (position.right + 0.5f), (int) (position.bottom + 0.5f));
+ }
+
+ /**
* @see #onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo)
*
* Note: Called from the default {@link AccessibilityDelegate}.
@@ -4632,8 +4720,7 @@
getDrawingRect(bounds);
info.setBoundsInParent(bounds);
- getGlobalVisibleRect(bounds);
- bounds.offset(mAttachInfo.mWindowLeft, mAttachInfo.mWindowTop);
+ getBoundsOnScreen(bounds);
info.setBoundsInScreen(bounds);
if ((mPrivateFlags & IS_ROOT_NAMESPACE) == 0) {
@@ -4643,6 +4730,8 @@
}
}
+ info.setVisibleToUser(isVisibleToUser());
+
info.setPackageName(mContext.getPackageName());
info.setClassName(View.class.getName());
info.setContentDescription(getContentDescription());
@@ -4669,8 +4758,11 @@
}
}
- info.addAction(AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS);
- info.addAction(AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS);
+ if (!isAccessibilityFocused()) {
+ info.addAction(AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS);
+ } else {
+ info.addAction(AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS);
+ }
if (isClickable()) {
info.addAction(AccessibilityNodeInfo.ACTION_CLICK);
@@ -4680,20 +4772,23 @@
info.addAction(AccessibilityNodeInfo.ACTION_LONG_CLICK);
}
- if (getContentDescription() != null) {
- info.addAction(AccessibilityNodeInfo.ACTION_NEXT_AT_GRANULARITY);
- info.addAction(AccessibilityNodeInfo.ACTION_PREVIOUS_AT_GRANULARITY);
- info.setGranularities(AccessibilityNodeInfo.GRANULARITY_CHARACTER
- | AccessibilityNodeInfo.GRANULARITY_WORD);
+ if (mContentDescription != null && mContentDescription.length() > 0) {
+ info.addAction(AccessibilityNodeInfo.ACTION_NEXT_AT_MOVEMENT_GRANULARITY);
+ info.addAction(AccessibilityNodeInfo.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY);
+ info.setMovementGranularities(AccessibilityNodeInfo.MOVEMENT_GRANULARITY_CHARACTER
+ | AccessibilityNodeInfo.MOVEMENT_GRANULARITY_WORD
+ | AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PARAGRAPH);
}
}
/**
- * Computes whether this view is visible on the screen.
+ * Computes whether this view is visible to the user. Such a view is
+ * attached, visible, all its predecessors are visible, it is not clipped
+ * entirely by its predecessors, and has an alpha greater than zero.
*
* @return Whether the view is visible on the screen.
*/
- boolean isDisplayedOnScreen() {
+ private boolean isVisibleToUser() {
// The first two checks are made also made by isShown() which
// however traverses the tree up to the parent to catch that.
// Therefore, we do some fail fast check to minimize the up
@@ -5352,7 +5447,9 @@
* {@link #LAYOUT_DIRECTION_RTL},
* {@link #LAYOUT_DIRECTION_INHERIT} or
* {@link #LAYOUT_DIRECTION_LOCALE}.
+ *
* @attr ref android.R.styleable#View_layoutDirection
+ * @hide
*/
@ViewDebug.ExportedProperty(category = "layout", mapping = {
@ViewDebug.IntToString(from = LAYOUT_DIRECTION_LTR, to = "LTR"),
@@ -5374,6 +5471,7 @@
* {@link #LAYOUT_DIRECTION_LOCALE}.
*
* @attr ref android.R.styleable#View_layoutDirection
+ * @hide
*/
@RemotableViewMethod
public void setLayoutDirection(int layoutDirection) {
@@ -5393,6 +5491,7 @@
*
* @return {@link #LAYOUT_DIRECTION_RTL} if the layout direction is RTL or returns
* {@link #LAYOUT_DIRECTION_LTR} if the layout direction is not RTL.
+ * @hide
*/
@ViewDebug.ExportedProperty(category = "layout", mapping = {
@ViewDebug.IntToString(from = LAYOUT_DIRECTION_LTR, to = "RESOLVED_DIRECTION_LTR"),
@@ -5412,6 +5511,7 @@
* layout attribute and/or the inherited value from the parent
*
* @return true if the layout is right-to-left.
+ * @hide
*/
@ViewDebug.ExportedProperty(category = "layout")
public boolean isLayoutRtl() {
@@ -5423,6 +5523,11 @@
* app should not need to concern itself with saving and restoring, but that
* the framework should take special note to preserve when possible.
*
+ * <p>A view with transient state cannot be trivially rebound from an external
+ * data source, such as an adapter binding item views in a list. This may be
+ * because the view is performing an animation, tracking user selection
+ * of content, or similar.</p>
+ *
* @return true if the view has transient state
*/
@ViewDebug.ExportedProperty(category = "layout")
@@ -5436,6 +5541,11 @@
* so every call to setHasTransientState(true) should be paired with a later call
* to setHasTransientState(false).
*
+ * <p>A view with transient state cannot be trivially rebound from an external
+ * data source, such as an adapter binding item views in a list. This may be
+ * because the view is performing an animation, tracking user selection
+ * of content, or similar.</p>
+ *
* @param hasTransientState true if this view has transient state
*/
public void setHasTransientState(boolean hasTransientState) {
@@ -5900,7 +6010,8 @@
outViews.add(this);
}
} else if ((flags & FIND_VIEWS_WITH_CONTENT_DESCRIPTION) != 0
- && !TextUtils.isEmpty(searched) && !TextUtils.isEmpty(mContentDescription)) {
+ && (searched != null && searched.length() > 0)
+ && (mContentDescription != null && mContentDescription.length() > 0)) {
String searchedLowerCase = searched.toString().toLowerCase();
String contentDescriptionLowerCase = mContentDescription.toString().toLowerCase();
if (contentDescriptionLowerCase.contains(searchedLowerCase)) {
@@ -6001,6 +6112,10 @@
invalidate();
sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED);
notifyAccessibilityStateChanged();
+
+ // Clear the text navigation state.
+ setAccessibilityCursorPosition(-1);
+
// Try to move accessibility focus to the input focus.
View rootView = getRootView();
if (rootView != null) {
@@ -6328,9 +6443,9 @@
boolean includeForAccessibility() {
if (mAttachInfo != null) {
if (!mAttachInfo.mIncludeNotImportantViews) {
- return isImportantForAccessibility() && isDisplayedOnScreen();
+ return isImportantForAccessibility();
} else {
- return isDisplayedOnScreen();
+ return true;
}
}
return false;
@@ -6396,20 +6511,40 @@
/**
* Performs the specified accessibility action on the view. For
* possible accessibility actions look at {@link AccessibilityNodeInfo}.
+ * <p>
+ * If an {@link AccessibilityDelegate} has been specified via calling
+ * {@link #setAccessibilityDelegate(AccessibilityDelegate)} its
+ * {@link AccessibilityDelegate#performAccessibilityAction(View, int, Bundle)}
+ * is responsible for handling this call.
+ * </p>
*
* @param action The action to perform.
+ * @param arguments Optional action arguments.
* @return Whether the action was performed.
*/
- public boolean performAccessibilityAction(int action, Bundle args) {
+ public boolean performAccessibilityAction(int action, Bundle arguments) {
+ if (mAccessibilityDelegate != null) {
+ return mAccessibilityDelegate.performAccessibilityAction(this, action, arguments);
+ } else {
+ return performAccessibilityActionInternal(action, arguments);
+ }
+ }
+
+ /**
+ * @see #performAccessibilityAction(int, Bundle)
+ *
+ * Note: Called from the default {@link AccessibilityDelegate}.
+ */
+ boolean performAccessibilityActionInternal(int action, Bundle arguments) {
switch (action) {
case AccessibilityNodeInfo.ACTION_CLICK: {
if (isClickable()) {
- performClick();
+ return performClick();
}
} break;
case AccessibilityNodeInfo.ACTION_LONG_CLICK: {
if (isLongClickable()) {
- performLongClick();
+ return performLongClick();
}
} break;
case AccessibilityNodeInfo.ACTION_FOCUS: {
@@ -6449,14 +6584,155 @@
return true;
}
} break;
+ case AccessibilityNodeInfo.ACTION_NEXT_AT_MOVEMENT_GRANULARITY: {
+ if (arguments != null) {
+ final int granularity = arguments.getInt(
+ AccessibilityNodeInfo.ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT);
+ return nextAtGranularity(granularity);
+ }
+ } break;
+ case AccessibilityNodeInfo.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY: {
+ if (arguments != null) {
+ final int granularity = arguments.getInt(
+ AccessibilityNodeInfo.ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT);
+ return previousAtGranularity(granularity);
+ }
+ } break;
}
return false;
}
+ private boolean nextAtGranularity(int granularity) {
+ CharSequence text = getIterableTextForAccessibility();
+ if (text != null && text.length() > 0) {
+ return false;
+ }
+ TextSegmentIterator iterator = getIteratorForGranularity(granularity);
+ if (iterator == null) {
+ return false;
+ }
+ final int current = getAccessibilityCursorPosition();
+ final int[] range = iterator.following(current);
+ if (range == null) {
+ setAccessibilityCursorPosition(-1);
+ return false;
+ }
+ final int start = range[0];
+ final int end = range[1];
+ setAccessibilityCursorPosition(start);
+ sendViewTextTraversedAtGranularityEvent(
+ AccessibilityNodeInfo.ACTION_NEXT_AT_MOVEMENT_GRANULARITY,
+ granularity, start, end);
+ return true;
+ }
+
+ private boolean previousAtGranularity(int granularity) {
+ CharSequence text = getIterableTextForAccessibility();
+ if (text != null && text.length() > 0) {
+ return false;
+ }
+ TextSegmentIterator iterator = getIteratorForGranularity(granularity);
+ if (iterator == null) {
+ return false;
+ }
+ final int selectionStart = getAccessibilityCursorPosition();
+ final int current = selectionStart >= 0 ? selectionStart : text.length() + 1;
+ final int[] range = iterator.preceding(current);
+ if (range == null) {
+ setAccessibilityCursorPosition(-1);
+ return false;
+ }
+ final int start = range[0];
+ final int end = range[1];
+ setAccessibilityCursorPosition(end);
+ sendViewTextTraversedAtGranularityEvent(
+ AccessibilityNodeInfo.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY,
+ granularity, start, end);
+ return true;
+ }
+
+ /**
+ * Gets the text reported for accessibility purposes.
+ *
+ * @return The accessibility text.
+ *
+ * @hide
+ */
+ public CharSequence getIterableTextForAccessibility() {
+ return mContentDescription;
+ }
+
+ /**
+ * @hide
+ */
+ public int getAccessibilityCursorPosition() {
+ return mAccessibilityCursorPosition;
+ }
+
+ /**
+ * @hide
+ */
+ public void setAccessibilityCursorPosition(int position) {
+ mAccessibilityCursorPosition = position;
+ }
+
+ private void sendViewTextTraversedAtGranularityEvent(int action, int granularity,
+ int fromIndex, int toIndex) {
+ if (mParent == null) {
+ return;
+ }
+ AccessibilityEvent event = AccessibilityEvent.obtain(
+ AccessibilityEvent.TYPE_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY);
+ onInitializeAccessibilityEvent(event);
+ onPopulateAccessibilityEvent(event);
+ event.setFromIndex(fromIndex);
+ event.setToIndex(toIndex);
+ event.setAction(action);
+ event.setMovementGranularity(granularity);
+ mParent.requestSendAccessibilityEvent(this, event);
+ }
+
+ /**
+ * @hide
+ */
+ public TextSegmentIterator getIteratorForGranularity(int granularity) {
+ switch (granularity) {
+ case AccessibilityNodeInfo.MOVEMENT_GRANULARITY_CHARACTER: {
+ CharSequence text = getIterableTextForAccessibility();
+ if (text != null && text.length() > 0) {
+ CharacterTextSegmentIterator iterator =
+ CharacterTextSegmentIterator.getInstance(mContext);
+ iterator.initialize(text.toString());
+ return iterator;
+ }
+ } break;
+ case AccessibilityNodeInfo.MOVEMENT_GRANULARITY_WORD: {
+ CharSequence text = getIterableTextForAccessibility();
+ if (text != null && text.length() > 0) {
+ WordTextSegmentIterator iterator =
+ WordTextSegmentIterator.getInstance(mContext);
+ iterator.initialize(text.toString());
+ return iterator;
+ }
+ } break;
+ case AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PARAGRAPH: {
+ CharSequence text = getIterableTextForAccessibility();
+ if (text != null && text.length() > 0) {
+ ParagraphTextSegmentIterator iterator =
+ ParagraphTextSegmentIterator.getInstance();
+ iterator.initialize(text.toString());
+ return iterator;
+ }
+ } break;
+ }
+ return null;
+ }
+
/**
* @hide
*/
public void dispatchStartTemporaryDetach() {
+ clearAccessibilityFocus();
onStartTemporaryDetach();
}
@@ -9138,7 +9414,7 @@
}
public final boolean getLocalVisibleRect(Rect r) {
- Point offset = new Point();
+ final Point offset = mAttachInfo != null ? mAttachInfo.mPoint : new Point();
if (getGlobalVisibleRect(r, offset)) {
r.offset(-offset.x, -offset.y); // make r local
return true;
@@ -10820,22 +11096,30 @@
if ((mPrivateFlags & REQUEST_TRANSPARENT_REGIONS) != 0) {
mParent.requestTransparentRegion(this);
}
+
if ((mPrivateFlags & AWAKEN_SCROLL_BARS_ON_ATTACH) != 0) {
initialAwakenScrollBars();
mPrivateFlags &= ~AWAKEN_SCROLL_BARS_ON_ATTACH;
}
+
jumpDrawablesToCurrentState();
+
// Order is important here: LayoutDirection MUST be resolved before Padding
// and TextDirection
resolveLayoutDirection();
resolvePadding();
resolveTextDirection();
resolveTextAlignment();
+
clearAccessibilityFocus();
if (isFocused()) {
InputMethodManager imm = InputMethodManager.peekInstance();
imm.focusIn(this);
}
+
+ if (mAttachInfo != null && mDisplayList != null) {
+ mAttachInfo.mViewRootImpl.dequeueDisplayList(mDisplayList);
+ }
}
/**
@@ -10868,6 +11152,7 @@
* Resolve and cache the layout direction. LTR is set initially. This is implicitly supposing
* that the parent directionality can and will be resolved before its children.
* Will call {@link View#onResolvedLayoutDirectionChanged} when resolution is done.
+ * @hide
*/
public void resolveLayoutDirection() {
// Clear any previous layout direction resolution
@@ -10912,12 +11197,14 @@
* Called when layout direction has been resolved.
*
* The default implementation does nothing.
+ * @hide
*/
public void onResolvedLayoutDirectionChanged() {
}
/**
* Resolve padding depending on layout direction.
+ * @hide
*/
public void resolvePadding() {
// If the user specified the absolute padding (either with android:padding or
@@ -10977,6 +11264,7 @@
*
* @see {@link #LAYOUT_DIRECTION_LTR}
* @see {@link #LAYOUT_DIRECTION_RTL}
+ * @hide
*/
public void onPaddingChanged(int layoutDirection) {
}
@@ -10985,6 +11273,7 @@
* Check if layout direction resolution can be done.
*
* @return true if layout direction resolution can be done otherwise return false.
+ * @hide
*/
public boolean canResolveLayoutDirection() {
switch (getLayoutDirection()) {
@@ -10998,6 +11287,7 @@
/**
* Reset the resolved layout direction. Will call {@link View#onResolvedLayoutDirectionReset}
* when reset is done.
+ * @hide
*/
public void resetResolvedLayoutDirection() {
// Reset the current resolved bits
@@ -11014,6 +11304,7 @@
* resolved layout direction, or to inform child views that inherit their layout direction.
*
* The default implementation does nothing.
+ * @hide
*/
public void onResolvedLayoutDirectionReset() {
}
@@ -11023,6 +11314,7 @@
*
* @param locale Locale to check
* @return true if the Locale uses an RTL script.
+ * @hide
*/
protected static boolean isLayoutDirectionRtl(Locale locale) {
return (LAYOUT_DIRECTION_RTL == LocaleUtil.getLayoutDirectionFromLocale(locale));
@@ -11048,7 +11340,7 @@
if (mAttachInfo != null) {
if (mDisplayList != null) {
- mAttachInfo.mViewRootImpl.invalidateDisplayList(mDisplayList);
+ mAttachInfo.mViewRootImpl.enqueueDisplayList(mDisplayList);
}
mAttachInfo.mViewRootImpl.cancelInvalidate(this);
} else {
@@ -11063,7 +11355,6 @@
resetResolvedLayoutDirection();
resetResolvedTextAlignment();
resetAccessibilityStateChanged();
- clearAccessibilityFocus();
}
/**
@@ -11743,7 +12034,6 @@
boolean caching = false;
final HardwareCanvas canvas = displayList.start();
- int restoreCount = 0;
int width = mRight - mLeft;
int height = mBottom - mTop;
@@ -12376,10 +12666,6 @@
return more;
}
- void setDisplayListProperties() {
- setDisplayListProperties(mDisplayList);
- }
-
/**
* This method is called by getDisplayList() when a display list is created or re-rendered.
* It sets or resets the current value of all properties on that display list (resetting is
@@ -13327,6 +13613,7 @@
* Return the layout direction of a given Drawable.
*
* @param who the Drawable to query
+ * @hide
*/
public int getResolvedLayoutDirection(Drawable who) {
return (who == mBackground) ? getResolvedLayoutDirection() : LAYOUT_DIRECTION_DEFAULT;
@@ -13762,19 +14049,13 @@
/**
* Sets the relative padding. The view may add on the space required to display
* the scrollbars, depending on the style and visibility of the scrollbars.
- * So the values returned from {@link #getPaddingStart}, {@link #getPaddingTop},
- * {@link #getPaddingEnd} and {@link #getPaddingBottom} may be different
* from the values set in this call.
*
- * @attr ref android.R.styleable#View_padding
- * @attr ref android.R.styleable#View_paddingBottom
- * @attr ref android.R.styleable#View_paddingStart
- * @attr ref android.R.styleable#View_paddingEnd
- * @attr ref android.R.styleable#View_paddingTop
* @param start the start padding in pixels
* @param top the top padding in pixels
* @param end the end padding in pixels
* @param bottom the bottom padding in pixels
+ * @hide
*/
public void setPaddingRelative(int start, int top, int end, int bottom) {
mUserPaddingStart = start;
@@ -13828,6 +14109,7 @@
* required to display the scrollbars as well.
*
* @return the start padding in pixels
+ * @hide
*/
public int getPaddingStart() {
return (getResolvedLayoutDirection() == LAYOUT_DIRECTION_RTL) ?
@@ -13851,6 +14133,7 @@
* required to display the scrollbars as well.
*
* @return the end padding in pixels
+ * @hide
*/
public int getPaddingEnd() {
return (getResolvedLayoutDirection() == LAYOUT_DIRECTION_RTL) ?
@@ -13859,11 +14142,10 @@
/**
* Return if the padding as been set thru relative values
- * {@link #setPaddingRelative(int, int, int, int)} or thru
- * @attr ref android.R.styleable#View_paddingStart or
- * @attr ref android.R.styleable#View_paddingEnd
+ * {@link #setPaddingRelative(int, int, int, int)}
*
* @return true if the padding is relative or false if it is not.
+ * @hide
*/
public boolean isPaddingRelative() {
return mUserPaddingRelative;
@@ -15183,6 +15465,18 @@
}
}
+ /** @hide */
+ public void setDisabledSystemUiVisibility(int flags) {
+ if (mAttachInfo != null) {
+ if (mAttachInfo.mDisabledSystemUiVisibility != flags) {
+ mAttachInfo.mDisabledSystemUiVisibility = flags;
+ if (mParent != null) {
+ mParent.recomputeViewAttributes(this);
+ }
+ }
+ }
+ }
+
/**
* Creates an image that the system displays during the drag and drop
* operation. This is called a "drag shadow". The default implementation
@@ -15707,6 +16001,7 @@
* {@link #TEXT_DIRECTION_LTR},
* {@link #TEXT_DIRECTION_RTL},
* {@link #TEXT_DIRECTION_LOCALE}
+ * @hide
*/
@ViewDebug.ExportedProperty(category = "text", mapping = {
@ViewDebug.IntToString(from = TEXT_DIRECTION_INHERIT, to = "INHERIT"),
@@ -15731,6 +16026,7 @@
* {@link #TEXT_DIRECTION_LTR},
* {@link #TEXT_DIRECTION_RTL},
* {@link #TEXT_DIRECTION_LOCALE}
+ * @hide
*/
public void setTextDirection(int textDirection) {
if (getTextDirection() != textDirection) {
@@ -15760,6 +16056,7 @@
* {@link #TEXT_DIRECTION_LTR},
* {@link #TEXT_DIRECTION_RTL},
* {@link #TEXT_DIRECTION_LOCALE}
+ * @hide
*/
public int getResolvedTextDirection() {
// The text direction will be resolved only if needed
@@ -15772,6 +16069,7 @@
/**
* Resolve the text direction. Will call {@link View#onResolvedTextDirectionChanged} when
* resolution is done.
+ * @hide
*/
public void resolveTextDirection() {
// Reset any previous text direction resolution
@@ -15832,6 +16130,7 @@
* resolution should override this method.
*
* The default implementation does nothing.
+ * @hide
*/
public void onResolvedTextDirectionChanged() {
}
@@ -15840,6 +16139,7 @@
* Check if text direction resolution can be done.
*
* @return true if text direction resolution can be done otherwise return false.
+ * @hide
*/
public boolean canResolveTextDirection() {
switch (getTextDirection()) {
@@ -15854,6 +16154,7 @@
* Reset resolved text direction. Text direction can be resolved with a call to
* getResolvedTextDirection(). Will call {@link View#onResolvedTextDirectionReset} when
* reset is done.
+ * @hide
*/
public void resetResolvedTextDirection() {
mPrivateFlags2 &= ~(TEXT_DIRECTION_RESOLVED | TEXT_DIRECTION_RESOLVED_MASK);
@@ -15864,6 +16165,7 @@
* Called when text direction is reset. Subclasses that care about text direction reset should
* override this method and do a reset of the text direction of their children. The default
* implementation does nothing.
+ * @hide
*/
public void onResolvedTextDirectionReset() {
}
@@ -15881,6 +16183,7 @@
* {@link #TEXT_ALIGNMENT_TEXT_END},
* {@link #TEXT_ALIGNMENT_VIEW_START},
* {@link #TEXT_ALIGNMENT_VIEW_END}
+ * @hide
*/
@ViewDebug.ExportedProperty(category = "text", mapping = {
@ViewDebug.IntToString(from = TEXT_ALIGNMENT_INHERIT, to = "INHERIT"),
@@ -15909,6 +16212,7 @@
* {@link #TEXT_ALIGNMENT_VIEW_END}
*
* @attr ref android.R.styleable#View_textAlignment
+ * @hide
*/
public void setTextAlignment(int textAlignment) {
if (textAlignment != getTextAlignment()) {
@@ -15938,6 +16242,7 @@
* {@link #TEXT_ALIGNMENT_TEXT_END},
* {@link #TEXT_ALIGNMENT_VIEW_START},
* {@link #TEXT_ALIGNMENT_VIEW_END}
+ * @hide
*/
@ViewDebug.ExportedProperty(category = "text", mapping = {
@ViewDebug.IntToString(from = TEXT_ALIGNMENT_INHERIT, to = "INHERIT"),
@@ -15959,6 +16264,7 @@
/**
* Resolve the text alignment. Will call {@link View#onResolvedTextAlignmentChanged} when
* resolution is done.
+ * @hide
*/
public void resolveTextAlignment() {
// Reset any previous text alignment resolution
@@ -16023,6 +16329,7 @@
* Check if text alignment resolution can be done.
*
* @return true if text alignment resolution can be done otherwise return false.
+ * @hide
*/
public boolean canResolveTextAlignment() {
switch (getTextAlignment()) {
@@ -16038,6 +16345,7 @@
* resolution should override this method.
*
* The default implementation does nothing.
+ * @hide
*/
public void onResolvedTextAlignmentChanged() {
}
@@ -16046,6 +16354,7 @@
* Reset resolved text alignment. Text alignment can be resolved with a call to
* getResolvedTextAlignment(). Will call {@link View#onResolvedTextAlignmentReset} when
* reset is done.
+ * @hide
*/
public void resetResolvedTextAlignment() {
// Reset any previous text alignment resolution
@@ -16057,6 +16366,7 @@
* Called when text alignment is reset. Subclasses that care about text alignment reset should
* override this method and do a reset of the text alignment of their children. The default
* implementation does nothing.
+ * @hide
*/
public void onResolvedTextAlignmentReset() {
}
@@ -16752,6 +17062,12 @@
boolean mUse32BitDrawingCache;
/**
+ * Describes the parts of the window that are currently completely
+ * obscured by system UI elements.
+ */
+ final Rect mSystemInsets = new Rect();
+
+ /**
* For windows that are full-screen but using insets to layout inside
* of the screen decorations, these are the current insets for the
* content of the window.
@@ -16838,6 +17154,11 @@
int mSystemUiVisibility;
/**
+ * Hack to force certain system UI visibility flags to be cleared.
+ */
+ int mDisabledSystemUiVisibility;
+
+ /**
* True if a view in this hierarchy has an OnSystemUiVisibilityChangeListener
* attached.
*/
@@ -16932,6 +17253,11 @@
final boolean mDebugLayout = SystemProperties.getBoolean(DEBUG_LAYOUT_PROPERTY, false);
/**
+ * Point used to compute visible regions.
+ */
+ final Point mPoint = new Point();
+
+ /**
* Creates a new set of attachment information with the specified
* events handler and thread.
*
@@ -17156,6 +17482,26 @@
}
/**
+ * Performs the specified accessibility action on the view. For
+ * possible accessibility actions look at {@link AccessibilityNodeInfo}.
+ * <p>
+ * The default implementation behaves as
+ * {@link View#performAccessibilityAction(int, Bundle)
+ * View#performAccessibilityAction(int, Bundle)} for the case of
+ * no accessibility delegate been set.
+ * </p>
+ *
+ * @param action The action to perform.
+ * @return Whether the action was performed.
+ *
+ * @see View#performAccessibilityAction(int, Bundle)
+ * View#performAccessibilityAction(int, Bundle)
+ */
+ public boolean performAccessibilityAction(View host, int action, Bundle args) {
+ return host.performAccessibilityActionInternal(action, args);
+ }
+
+ /**
* Sends an accessibility event. This method behaves exactly as
* {@link #sendAccessibilityEvent(View, int)} but takes as an argument an
* empty {@link AccessibilityEvent} and does not perform a check whether
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java
index bb7b3f8..acfca26 100644
--- a/core/java/android/view/ViewGroup.java
+++ b/core/java/android/view/ViewGroup.java
@@ -348,6 +348,8 @@
* This constant is a {@link #setLayoutMode(int) layoutMode}.
* Clip bounds are the raw values of {@link #getLeft() left}, {@link #getTop() top},
* {@link #getRight() right} and {@link #getBottom() bottom}.
+ *
+ * @hide
*/
public static final int CLIP_BOUNDS = 0;
@@ -356,6 +358,8 @@
* Optical bounds describe where a widget appears to be. They sit inside the clip
* bounds which need to cover a larger area to allow other effects,
* such as shadows and glows, to be drawn.
+ *
+ * @hide
*/
public static final int OPTICAL_BOUNDS = 1;
@@ -3582,6 +3586,8 @@
clearChildFocus = true;
}
+ view.clearAccessibilityFocus();
+
cancelTouchTarget(view);
cancelHoverTarget(view);
@@ -3665,6 +3671,8 @@
clearChildFocus = view;
}
+ view.clearAccessibilityFocus();
+
cancelTouchTarget(view);
cancelHoverTarget(view);
@@ -3738,6 +3746,8 @@
clearChildFocus = view;
}
+ view.clearAccessibilityFocus();
+
cancelTouchTarget(view);
cancelHoverTarget(view);
@@ -3786,6 +3796,8 @@
child.clearFocus();
}
+ child.clearAccessibilityFocus();
+
cancelTouchTarget(child);
cancelHoverTarget(child);
@@ -3938,59 +3950,6 @@
// through
final boolean drawAnimation = (child.mPrivateFlags & DRAW_ANIMATION) == DRAW_ANIMATION;
- //noinspection PointlessBooleanExpression
- if (!HardwareRenderer.RENDER_DIRTY_REGIONS) {
- if (dirty == null) {
- if (child.mLayerType != LAYER_TYPE_NONE) {
- mPrivateFlags |= INVALIDATED;
- mPrivateFlags &= ~DRAWING_CACHE_VALID;
- child.mLocalDirtyRect.setEmpty();
- }
- do {
- View view = null;
- if (parent instanceof View) {
- view = (View) parent;
- if (view.mLayerType != LAYER_TYPE_NONE) {
- view.mLocalDirtyRect.setEmpty();
- if (view.getParent() instanceof View) {
- final View grandParent = (View) view.getParent();
- grandParent.mPrivateFlags |= INVALIDATED;
- grandParent.mPrivateFlags &= ~DRAWING_CACHE_VALID;
- }
- }
- if ((view.mPrivateFlags & DIRTY_MASK) != 0) {
- // already marked dirty - we're done
- break;
- }
- }
-
- if (drawAnimation) {
- if (view != null) {
- view.mPrivateFlags |= DRAW_ANIMATION;
- } else if (parent instanceof ViewRootImpl) {
- ((ViewRootImpl) parent).mIsAnimating = true;
- }
- }
-
- if (parent instanceof ViewRootImpl) {
- ((ViewRootImpl) parent).invalidate();
- parent = null;
- } else if (view != null) {
- if ((view.mPrivateFlags & DRAWN) == DRAWN ||
- (view.mPrivateFlags & DRAWING_CACHE_VALID) == DRAWING_CACHE_VALID) {
- view.mPrivateFlags &= ~DRAWING_CACHE_VALID;
- view.mPrivateFlags |= DIRTY;
- parent = view.mParent;
- } else {
- parent = null;
- }
- }
- } while (parent != null);
- }
-
- return;
- }
-
// Check whether the child that requests the invalidate is fully opaque
// Views being animated or transformed are not considered opaque because we may
// be invalidating their old position and need the parent to paint behind them.
@@ -4025,12 +3984,6 @@
View view = null;
if (parent instanceof View) {
view = (View) parent;
- if (view.mLayerType != LAYER_TYPE_NONE &&
- view.getParent() instanceof View) {
- final View grandParent = (View) view.getParent();
- grandParent.mPrivateFlags |= INVALIDATED;
- grandParent.mPrivateFlags &= ~DRAWING_CACHE_VALID;
- }
}
if (drawAnimation) {
@@ -4103,6 +4056,7 @@
location[CHILD_TOP_INDEX] = top;
if (mLayerType != LAYER_TYPE_NONE) {
+ mPrivateFlags |= INVALIDATED;
mLocalDirtyRect.union(dirty);
}
@@ -4121,6 +4075,7 @@
}
if (mLayerType != LAYER_TYPE_NONE) {
+ mPrivateFlags |= INVALIDATED;
mLocalDirtyRect.union(dirty);
}
@@ -4596,6 +4551,8 @@
* @return the layout mode to use during layout operations
*
* @see #setLayoutMode(int)
+ *
+ * @hide
*/
public int getLayoutMode() {
return mLayoutMode;
@@ -4610,6 +4567,8 @@
* @param layoutMode the layout mode to use during layout operations
*
* @see #getLayoutMode()
+ *
+ * @hide
*/
public void setLayoutMode(int layoutMode) {
if (mLayoutMode != layoutMode) {
@@ -5286,6 +5245,9 @@
}
}
+ /**
+ * @hide
+ */
@Override
public void onResolvedLayoutDirectionReset() {
// Take care of resetting the children resolution too
@@ -5298,6 +5260,9 @@
}
}
+ /**
+ * @hide
+ */
@Override
public void onResolvedTextDirectionReset() {
// Take care of resetting the children resolution too
@@ -5310,6 +5275,9 @@
}
}
+ /**
+ * @hide
+ */
@Override
public void onResolvedTextAlignmentReset() {
// Take care of resetting the children resolution too
@@ -5500,6 +5468,7 @@
*
* {@link View#LAYOUT_DIRECTION_LTR}
* {@link View#LAYOUT_DIRECTION_RTL}
+ * @hide
*/
public void onResolveLayoutDirection(int layoutDirection) {
}
@@ -5591,6 +5560,7 @@
* The start margin in pixels of the child.
* Call {@link ViewGroup#setLayoutParams(LayoutParams)} after reassigning a new value
* to this field.
+ * @hide
*/
@ViewDebug.ExportedProperty(category = "layout")
public int startMargin = DEFAULT_RELATIVE;
@@ -5599,6 +5569,7 @@
* The end margin in pixels of the child.
* Call {@link ViewGroup#setLayoutParams(LayoutParams)} after reassigning a new value
* to this field.
+ * @hide
*/
@ViewDebug.ExportedProperty(category = "layout")
public int endMargin = DEFAULT_RELATIVE;
@@ -5717,7 +5688,6 @@
* @attr ref android.R.styleable#ViewGroup_MarginLayout_layout_marginTop
* @attr ref android.R.styleable#ViewGroup_MarginLayout_layout_marginEnd
* @attr ref android.R.styleable#ViewGroup_MarginLayout_layout_marginBottom
- *
* @hide
*/
public void setMarginsRelative(int start, int top, int end, int bottom) {
@@ -5733,6 +5703,7 @@
* @attr ref android.R.styleable#ViewGroup_MarginLayout_layout_marginStart
*
* @return the start margin in pixels.
+ * @hide
*/
public int getMarginStart() {
return startMargin;
@@ -5744,6 +5715,7 @@
* @attr ref android.R.styleable#ViewGroup_MarginLayout_layout_marginEnd
*
* @return the end margin in pixels.
+ * @hide
*/
public int getMarginEnd() {
return endMargin;
@@ -5756,6 +5728,7 @@
* @attr ref android.R.styleable#ViewGroup_MarginLayout_layout_marginEnd
*
* @return true if either marginStart or marginEnd has been set
+ * @hide
*/
public boolean isMarginRelative() {
return (startMargin != DEFAULT_RELATIVE) || (endMargin != DEFAULT_RELATIVE);
@@ -5764,6 +5737,7 @@
/**
* This will be called by {@link android.view.View#requestLayout()}. Left and Right margins
* may be overridden depending on layout direction.
+ * @hide
*/
@Override
public void onResolveLayoutDirection(int layoutDirection) {
diff --git a/core/java/android/view/ViewPropertyAnimator.java b/core/java/android/view/ViewPropertyAnimator.java
index ec37acf..2012db2 100644
--- a/core/java/android/view/ViewPropertyAnimator.java
+++ b/core/java/android/view/ViewPropertyAnimator.java
@@ -624,14 +624,20 @@
/**
* The View associated with this ViewPropertyAnimator will have its
* {@link View#setLayerType(int, android.graphics.Paint) layer type} set to
- * {@link View#LAYER_TYPE_HARDWARE} for the duration of the next animation. This state
- * is not persistent, either on the View or on this ViewPropertyAnimator: the layer type
- * of the View will be restored when the animation ends to what it was when this method was
- * called, and this setting on ViewPropertyAnimator is only valid for the next animation.
- * Note that calling this method and then independently setting the layer type of the View
- * (by a direct call to {@link View#setLayerType(int, android.graphics.Paint)}) will result
- * in some inconsistency, including having the layer type restored to its pre-withLayer()
- * value when the animation ends.
+ * {@link View#LAYER_TYPE_HARDWARE} for the duration of the next animation.
+ * As stated in the documentation for {@link View#LAYER_TYPE_HARDWARE},
+ * the actual type of layer used internally depends on the runtime situation of the
+ * view. If the activity and this view are hardware-accelerated, then the layer will be
+ * accelerated as well. If the activity or the view is not accelerated, then the layer will
+ * effectively be the same as {@link View#LAYER_TYPE_SOFTWARE}.
+ *
+ * <p>This state is not persistent, either on the View or on this ViewPropertyAnimator: the
+ * layer type of the View will be restored when the animation ends to what it was when this
+ * method was called, and this setting on ViewPropertyAnimator is only valid for the next
+ * animation. Note that calling this method and then independently setting the layer type of
+ * the View (by a direct call to {@link View#setLayerType(int, android.graphics.Paint)}) will
+ * result in some inconsistency, including having the layer type restored to its pre-withLayer()
+ * value when the animation ends.</p>
*
* @see View#setLayerType(int, android.graphics.Paint)
* @return This object, allowing calls to methods in this class to be chained.
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index 9565547..5f295cb 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -230,6 +230,7 @@
boolean mHasHadWindowFocus;
boolean mLastWasImTarget;
boolean mWindowsAnimating;
+ boolean mIsDrawing;
int mLastSystemUiVisibility;
// Pool of queued input events.
@@ -262,6 +263,7 @@
final Rect mPendingVisibleInsets = new Rect();
final Rect mPendingContentInsets = new Rect();
final Rect mPendingSystemInsets = new Rect();
+ final Rect mActiveRect = new Rect();
final ViewTreeObserver.InternalInsetsInfo mLastGivenInsets
= new ViewTreeObserver.InternalInsetsInfo();
@@ -271,7 +273,8 @@
final Configuration mPendingConfiguration = new Configuration();
class ResizedInfo {
- Rect coveredInsets;
+ Rect systemInsets;
+ Rect contentInsets;
Rect visibleInsets;
Configuration newConfig;
}
@@ -567,6 +570,7 @@
if (mTranslator != null) {
mTranslator.translateRectInScreenToAppWindow(mAttachInfo.mContentInsets);
}
+ mPendingSystemInsets.set(0, 0, 0, 0);
mPendingContentInsets.set(mAttachInfo.mContentInsets);
mPendingVisibleInsets.set(0, 0, 0, 0);
if (DEBUG_LAYOUT) Log.v(TAG, "Added window " + mWindow);
@@ -763,6 +767,9 @@
// preserve compatible window flag if exists.
int compatibleWindowFlag =
mWindowAttributes.flags & WindowManager.LayoutParams.FLAG_COMPATIBLE_WINDOW;
+ // transfer over system UI visibility values as they carry current state.
+ attrs.systemUiVisibility = mWindowAttributes.systemUiVisibility;
+ attrs.subtreeSystemUiVisibility = mWindowAttributes.subtreeSystemUiVisibility;
mWindowAttributesChangesFlag = mWindowAttributes.copyFrom(attrs);
mWindowAttributes.flags |= compatibleWindowFlag;
@@ -1019,6 +1026,7 @@
attachInfo.mSystemUiVisibility = 0;
attachInfo.mHasSystemUiListeners = false;
mView.dispatchCollectViewAttributes(attachInfo, 0);
+ attachInfo.mSystemUiVisibility &= ~attachInfo.mDisabledSystemUiVisibility;
if (attachInfo.mKeepScreenOn != oldScreenOn
|| attachInfo.mSystemUiVisibility != oldVis
|| attachInfo.mHasSystemUiListeners != oldHasSystemUiListeners) {
@@ -1219,6 +1227,7 @@
getRunQueue().executeActions(attachInfo.mHandler);
boolean insetsChanged = false;
+ boolean activeRectChanged = false;
boolean layoutRequested = mLayoutRequested && !mStopped;
if (layoutRequested) {
@@ -1230,7 +1239,12 @@
// to opposite of the added touch mode.
mAttachInfo.mInTouchMode = !mAddedTouchMode;
ensureTouchModeLocally(mAddedTouchMode);
+ activeRectChanged = true;
} else {
+ if (!mPendingSystemInsets.equals(mAttachInfo.mSystemInsets)) {
+ mAttachInfo.mSystemInsets.set(mPendingSystemInsets);
+ activeRectChanged = true;
+ }
if (!mPendingContentInsets.equals(mAttachInfo.mContentInsets)) {
insetsChanged = true;
}
@@ -1383,7 +1397,11 @@
updateConfiguration(mPendingConfiguration, !mFirst);
mPendingConfiguration.seq = 0;
}
-
+
+ if (!mPendingSystemInsets.equals(mAttachInfo.mSystemInsets)) {
+ activeRectChanged = true;
+ mAttachInfo.mSystemInsets.set(mPendingSystemInsets);
+ }
contentInsetsChanged = !mPendingContentInsets.equals(
mAttachInfo.mContentInsets);
visibleInsetsChanged = !mPendingVisibleInsets.equals(
@@ -1486,6 +1504,7 @@
// before actually drawing them, so it can display then
// all at once.
newSurface = true;
+ activeRectChanged = true;
mFullRedrawNeeded = true;
mPreviousTransparentRegion.setEmpty();
@@ -1550,8 +1569,11 @@
// !!FIXME!! This next section handles the case where we did not get the
// window size we asked for. We should avoid this by getting a maximum size from
// the window session beforehand.
- mWidth = frame.width();
- mHeight = frame.height();
+ if (mWidth != frame.width() || mHeight != frame.height()) {
+ activeRectChanged = true;
+ mWidth = frame.width();
+ mHeight = frame.height();
+ }
if (mSurfaceHolder != null) {
// The app owns the surface; tell it about what is going on.
@@ -1667,6 +1689,14 @@
}
}
+ if (activeRectChanged && mSurface.isValid()) {
+ mActiveRect.set(attachInfo.mSystemInsets.left, attachInfo.mSystemInsets.top,
+ mWidth - attachInfo.mSystemInsets.right,
+ mHeight - attachInfo.mSystemInsets.bottom);
+ //Log.i(TAG, "Active rect " + mWindowAttributes.getTitle() + ": " + mActiveRect);
+ mSurface.setActiveRect(mActiveRect);
+ }
+
final boolean didLayout = layoutRequested && !mStopped;
boolean triggerGlobalLayoutListener = didLayout
|| attachInfo.mRecomputeGlobalAttributes;
@@ -2009,10 +2039,12 @@
final boolean fullRedrawNeeded = mFullRedrawNeeded;
mFullRedrawNeeded = false;
+ mIsDrawing = true;
Trace.traceBegin(Trace.TRACE_TAG_VIEW, "draw");
try {
draw(fullRedrawNeeded);
} finally {
+ mIsDrawing = false;
Trace.traceEnd(Trace.TRACE_TAG_VIEW);
}
@@ -2781,7 +2813,8 @@
ResizedInfo ri = (ResizedInfo)msg.obj;
if (mWinFrame.width() == msg.arg1 && mWinFrame.height() == msg.arg2
- && mPendingContentInsets.equals(ri.coveredInsets)
+ && mPendingSystemInsets.equals(ri.systemInsets)
+ && mPendingContentInsets.equals(ri.contentInsets)
&& mPendingVisibleInsets.equals(ri.visibleInsets)
&& ((ResizedInfo)msg.obj).newConfig == null) {
break;
@@ -2797,7 +2830,8 @@
mWinFrame.right = msg.arg1;
mWinFrame.top = 0;
mWinFrame.bottom = msg.arg2;
- mPendingContentInsets.set(((ResizedInfo)msg.obj).coveredInsets);
+ mPendingSystemInsets.set(((ResizedInfo)msg.obj).systemInsets);
+ mPendingContentInsets.set(((ResizedInfo)msg.obj).contentInsets);
mPendingVisibleInsets.set(((ResizedInfo)msg.obj).visibleInsets);
if (msg.what == MSG_RESIZED_REPORT) {
mReportNextDraw = true;
@@ -3019,24 +3053,23 @@
// be when the window is first being added, and mFocused isn't
// set yet.
final View focused = mView.findFocus();
- if (focused != null) {
- if (focused.isFocusableInTouchMode()) {
- return true;
- }
+ if (focused != null && !focused.isFocusableInTouchMode()) {
+
final ViewGroup ancestorToTakeFocus =
findAncestorToTakeFocusInTouchMode(focused);
if (ancestorToTakeFocus != null) {
// there is an ancestor that wants focus after its descendants that
// is focusable in touch mode.. give it focus
return ancestorToTakeFocus.requestFocus();
+ } else {
+ // nothing appropriate to have focus in touch mode, clear it out
+ mView.unFocus();
+ mAttachInfo.mTreeObserver.dispatchOnGlobalFocusChange(focused, null);
+ mFocusedView = null;
+ mOldFocusedView = null;
+ return true;
}
}
- // nothing appropriate to have focus in touch mode, clear it out
- mView.unFocus();
- mAttachInfo.mTreeObserver.dispatchOnGlobalFocusChange(focused, null);
- mFocusedView = null;
- mOldFocusedView = null;
- return true;
}
}
return false;
@@ -3067,45 +3100,25 @@
private boolean leaveTouchMode() {
if (mView != null) {
- boolean inputFocusValid = false;
if (mView.hasFocus()) {
// i learned the hard way to not trust mFocusedView :)
mFocusedView = mView.findFocus();
if (!(mFocusedView instanceof ViewGroup)) {
// some view has focus, let it keep it
- inputFocusValid = true;
- } else if (((ViewGroup) mFocusedView).getDescendantFocusability() !=
+ return false;
+ } else if (((ViewGroup)mFocusedView).getDescendantFocusability() !=
ViewGroup.FOCUS_AFTER_DESCENDANTS) {
// some view group has focus, and doesn't prefer its children
// over itself for focus, so let them keep it.
- inputFocusValid = true;
+ return false;
}
}
- // In accessibility mode we always have a view that has the
- // accessibility focus and input focus follows it, i.e. we
- // try to give input focus to the accessibility focused view.
- if (!AccessibilityManager.getInstance(mView.mContext).isEnabled()) {
- // If the current input focus is not valid, find the best view to give
- // focus to in this brave new non-touch-mode world.
- if (!inputFocusValid) {
- final View focused = focusSearch(null, View.FOCUS_DOWN);
- if (focused != null) {
- return focused.requestFocus(View.FOCUS_DOWN);
- }
- }
- } else {
- // If the current input focus is not valid clear it but do not
- // give it to another view since the accessibility focus is
- // leading now and the input one follows.
- if (!inputFocusValid) {
- if (mFocusedView != null) {
- mView.unFocus();
- mAttachInfo.mTreeObserver.dispatchOnGlobalFocusChange(mFocusedView, null);
- mFocusedView = null;
- mOldFocusedView = null;
- return true;
- }
- }
+
+ // find the best view to give focus to in this brave new non-touch-mode
+ // world
+ final View focused = focusSearch(null, View.FOCUS_DOWN);
+ if (focused != null) {
+ return focused.requestFocus(View.FOCUS_DOWN);
}
}
return false;
@@ -3953,7 +3966,12 @@
if (immediate) {
doDie();
} else {
- destroyHardwareRenderer();
+ if (!mIsDrawing) {
+ destroyHardwareRenderer();
+ } else {
+ Log.e(TAG, "Attempting to destroy the window while drawing!\n" +
+ " window=" + this + ", title=" + mWindowAttributes.getTitle());
+ }
mHandler.sendEmptyMessage(MSG_DIE);
}
}
@@ -4027,15 +4045,16 @@
mHandler.sendMessage(msg);
}
- public void dispatchResized(int w, int h, Rect coveredInsets,
+ public void dispatchResized(int w, int h, Rect systemInsets, Rect contentInsets,
Rect visibleInsets, boolean reportDraw, Configuration newConfig) {
if (DEBUG_LAYOUT) Log.v(TAG, "Resizing " + this + ": w=" + w
- + " h=" + h + " coveredInsets=" + coveredInsets.toShortString()
+ + " h=" + h + " systemInsets=" + systemInsets.toShortString()
+ + " contentInsets=" + contentInsets.toShortString()
+ " visibleInsets=" + visibleInsets.toShortString()
+ " reportDraw=" + reportDraw);
Message msg = mHandler.obtainMessage(reportDraw ? MSG_RESIZED_REPORT :MSG_RESIZED);
if (mTranslator != null) {
- mTranslator.translateRectInScreenToAppWindow(coveredInsets);
+ mTranslator.translateRectInScreenToAppWindow(contentInsets);
mTranslator.translateRectInScreenToAppWindow(visibleInsets);
w *= mTranslator.applicationInvertedScale;
h *= mTranslator.applicationInvertedScale;
@@ -4043,7 +4062,8 @@
msg.arg1 = w;
msg.arg2 = h;
ResizedInfo ri = new ResizedInfo();
- ri.coveredInsets = new Rect(coveredInsets);
+ ri.systemInsets = new Rect(systemInsets);
+ ri.contentInsets = new Rect(contentInsets);
ri.visibleInsets = new Rect(visibleInsets);
ri.newConfig = newConfig;
msg.obj = ri;
@@ -4392,14 +4412,23 @@
mInvalidateOnAnimationRunnable.addViewRect(info);
}
- public void invalidateDisplayList(DisplayList displayList) {
+ public void enqueueDisplayList(DisplayList displayList) {
mDisplayLists.add(displayList);
mHandler.removeMessages(MSG_INVALIDATE_DISPLAY_LIST);
Message msg = mHandler.obtainMessage(MSG_INVALIDATE_DISPLAY_LIST);
mHandler.sendMessage(msg);
}
-
+
+ public void dequeueDisplayList(DisplayList displayList) {
+ if (mDisplayLists.remove(displayList)) {
+ displayList.invalidate();
+ if (mDisplayLists.size() == 0) {
+ mHandler.removeMessages(MSG_INVALIDATE_DISPLAY_LIST);
+ }
+ }
+ }
+
public void cancelInvalidate(View view) {
mHandler.removeMessages(MSG_INVALIDATE, view);
// fixme: might leak the AttachInfo.InvalidateInfo objects instead of returning
@@ -4694,8 +4723,8 @@
Rect visibleInsets, boolean reportDraw, Configuration newConfig) {
final ViewRootImpl viewAncestor = mViewAncestor.get();
if (viewAncestor != null) {
- viewAncestor.dispatchResized(w, h, contentInsets, visibleInsets, reportDraw,
- newConfig);
+ viewAncestor.dispatchResized(w, h, systemInsets, contentInsets,
+ visibleInsets, reportDraw, newConfig);
}
}
diff --git a/core/java/android/view/ViewTreeObserver.java b/core/java/android/view/ViewTreeObserver.java
index 1c5d436..6a8a60a 100644
--- a/core/java/android/view/ViewTreeObserver.java
+++ b/core/java/android/view/ViewTreeObserver.java
@@ -20,7 +20,6 @@
import android.graphics.Region;
import java.util.ArrayList;
-import java.util.concurrent.CopyOnWriteArrayList;
/**
* A view tree observer is used to register listeners that can be notified of global
@@ -32,12 +31,12 @@
* for more information.
*/
public final class ViewTreeObserver {
- private CopyOnWriteArrayList<OnGlobalFocusChangeListener> mOnGlobalFocusListeners;
- private CopyOnWriteArrayList<OnGlobalLayoutListener> mOnGlobalLayoutListeners;
- private CopyOnWriteArrayList<OnTouchModeChangeListener> mOnTouchModeChangeListeners;
- private CopyOnWriteArrayList<OnComputeInternalInsetsListener> mOnComputeInternalInsetsListeners;
- private CopyOnWriteArrayList<OnScrollChangedListener> mOnScrollChangedListeners;
- private ArrayList<OnPreDrawListener> mOnPreDrawListeners;
+ private CopyOnWriteArray<OnGlobalFocusChangeListener> mOnGlobalFocusListeners;
+ private CopyOnWriteArray<OnGlobalLayoutListener> mOnGlobalLayoutListeners;
+ private CopyOnWriteArray<OnTouchModeChangeListener> mOnTouchModeChangeListeners;
+ private CopyOnWriteArray<OnComputeInternalInsetsListener> mOnComputeInternalInsetsListeners;
+ private CopyOnWriteArray<OnScrollChangedListener> mOnScrollChangedListeners;
+ private CopyOnWriteArray<OnPreDrawListener> mOnPreDrawListeners;
private ArrayList<OnDrawListener> mOnDrawListeners;
private boolean mAlive = true;
@@ -147,7 +146,7 @@
* windows behind it should be placed.
*/
public final Rect contentInsets = new Rect();
-
+
/**
* Offsets from the frame of the window at which windows behind it
* are visible.
@@ -166,13 +165,13 @@
* can be touched.
*/
public static final int TOUCHABLE_INSETS_FRAME = 0;
-
+
/**
* Option for {@link #setTouchableInsets(int)}: the area inside of
* the content insets can be touched.
*/
public static final int TOUCHABLE_INSETS_CONTENT = 1;
-
+
/**
* Option for {@link #setTouchableInsets(int)}: the area inside of
* the visible insets can be touched.
@@ -195,7 +194,7 @@
}
int mTouchableInsets;
-
+
void reset() {
contentInsets.setEmpty();
visibleInsets.setEmpty();
@@ -231,7 +230,7 @@
mTouchableInsets = other.mTouchableInsets;
}
}
-
+
/**
* Interface definition for a callback to be invoked when layout has
* completed and the client can compute its interior insets.
@@ -328,7 +327,7 @@
checkIsAlive();
if (mOnGlobalFocusListeners == null) {
- mOnGlobalFocusListeners = new CopyOnWriteArrayList<OnGlobalFocusChangeListener>();
+ mOnGlobalFocusListeners = new CopyOnWriteArray<OnGlobalFocusChangeListener>();
}
mOnGlobalFocusListeners.add(listener);
@@ -363,7 +362,7 @@
checkIsAlive();
if (mOnGlobalLayoutListeners == null) {
- mOnGlobalLayoutListeners = new CopyOnWriteArrayList<OnGlobalLayoutListener>();
+ mOnGlobalLayoutListeners = new CopyOnWriteArray<OnGlobalLayoutListener>();
}
mOnGlobalLayoutListeners.add(listener);
@@ -413,7 +412,7 @@
checkIsAlive();
if (mOnPreDrawListeners == null) {
- mOnPreDrawListeners = new ArrayList<OnPreDrawListener>();
+ mOnPreDrawListeners = new CopyOnWriteArray<OnPreDrawListener>();
}
mOnPreDrawListeners.add(listener);
@@ -485,7 +484,7 @@
checkIsAlive();
if (mOnScrollChangedListeners == null) {
- mOnScrollChangedListeners = new CopyOnWriteArrayList<OnScrollChangedListener>();
+ mOnScrollChangedListeners = new CopyOnWriteArray<OnScrollChangedListener>();
}
mOnScrollChangedListeners.add(listener);
@@ -519,7 +518,7 @@
checkIsAlive();
if (mOnTouchModeChangeListeners == null) {
- mOnTouchModeChangeListeners = new CopyOnWriteArrayList<OnTouchModeChangeListener>();
+ mOnTouchModeChangeListeners = new CopyOnWriteArray<OnTouchModeChangeListener>();
}
mOnTouchModeChangeListeners.add(listener);
@@ -558,7 +557,7 @@
if (mOnComputeInternalInsetsListeners == null) {
mOnComputeInternalInsetsListeners =
- new CopyOnWriteArrayList<OnComputeInternalInsetsListener>();
+ new CopyOnWriteArray<OnComputeInternalInsetsListener>();
}
mOnComputeInternalInsetsListeners.add(listener);
@@ -622,10 +621,16 @@
// perform the dispatching. The iterator is a safe guard against listeners that
// could mutate the list by calling the various add/remove methods. This prevents
// the array from being modified while we iterate it.
- final CopyOnWriteArrayList<OnGlobalFocusChangeListener> listeners = mOnGlobalFocusListeners;
+ final CopyOnWriteArray<OnGlobalFocusChangeListener> listeners = mOnGlobalFocusListeners;
if (listeners != null && listeners.size() > 0) {
- for (OnGlobalFocusChangeListener listener : listeners) {
- listener.onGlobalFocusChanged(oldFocus, newFocus);
+ CopyOnWriteArray.Access<OnGlobalFocusChangeListener> access = listeners.start();
+ try {
+ int count = access.size();
+ for (int i = 0; i < count; i++) {
+ access.get(i).onGlobalFocusChanged(oldFocus, newFocus);
+ }
+ } finally {
+ listeners.end();
}
}
}
@@ -640,10 +645,16 @@
// perform the dispatching. The iterator is a safe guard against listeners that
// could mutate the list by calling the various add/remove methods. This prevents
// the array from being modified while we iterate it.
- final CopyOnWriteArrayList<OnGlobalLayoutListener> listeners = mOnGlobalLayoutListeners;
+ final CopyOnWriteArray<OnGlobalLayoutListener> listeners = mOnGlobalLayoutListeners;
if (listeners != null && listeners.size() > 0) {
- for (OnGlobalLayoutListener listener : listeners) {
- listener.onGlobalLayout();
+ CopyOnWriteArray.Access<OnGlobalLayoutListener> access = listeners.start();
+ try {
+ int count = access.size();
+ for (int i = 0; i < count; i++) {
+ access.get(i).onGlobalLayout();
+ }
+ } finally {
+ listeners.end();
}
}
}
@@ -658,17 +669,17 @@
*/
@SuppressWarnings("unchecked")
public final boolean dispatchOnPreDraw() {
- // NOTE: we *must* clone the listener list to perform the dispatching.
- // The clone is a safe guard against listeners that
- // could mutate the list by calling the various add/remove methods. This prevents
- // the array from being modified while we process it.
boolean cancelDraw = false;
- if (mOnPreDrawListeners != null && mOnPreDrawListeners.size() > 0) {
- final ArrayList<OnPreDrawListener> listeners =
- (ArrayList<OnPreDrawListener>) mOnPreDrawListeners.clone();
- int numListeners = listeners.size();
- for (int i = 0; i < numListeners; ++i) {
- cancelDraw |= !(listeners.get(i).onPreDraw());
+ final CopyOnWriteArray<OnPreDrawListener> listeners = mOnPreDrawListeners;
+ if (listeners != null && listeners.size() > 0) {
+ CopyOnWriteArray.Access<OnPreDrawListener> access = listeners.start();
+ try {
+ int count = access.size();
+ for (int i = 0; i < count; i++) {
+ cancelDraw |= !(access.get(i).onPreDraw());
+ }
+ } finally {
+ listeners.end();
}
}
return cancelDraw;
@@ -693,11 +704,17 @@
* @param inTouchMode True if the touch mode is now enabled, false otherwise.
*/
final void dispatchOnTouchModeChanged(boolean inTouchMode) {
- final CopyOnWriteArrayList<OnTouchModeChangeListener> listeners =
+ final CopyOnWriteArray<OnTouchModeChangeListener> listeners =
mOnTouchModeChangeListeners;
if (listeners != null && listeners.size() > 0) {
- for (OnTouchModeChangeListener listener : listeners) {
- listener.onTouchModeChanged(inTouchMode);
+ CopyOnWriteArray.Access<OnTouchModeChangeListener> access = listeners.start();
+ try {
+ int count = access.size();
+ for (int i = 0; i < count; i++) {
+ access.get(i).onTouchModeChanged(inTouchMode);
+ }
+ } finally {
+ listeners.end();
}
}
}
@@ -710,10 +727,16 @@
// perform the dispatching. The iterator is a safe guard against listeners that
// could mutate the list by calling the various add/remove methods. This prevents
// the array from being modified while we iterate it.
- final CopyOnWriteArrayList<OnScrollChangedListener> listeners = mOnScrollChangedListeners;
+ final CopyOnWriteArray<OnScrollChangedListener> listeners = mOnScrollChangedListeners;
if (listeners != null && listeners.size() > 0) {
- for (OnScrollChangedListener listener : listeners) {
- listener.onScrollChanged();
+ CopyOnWriteArray.Access<OnScrollChangedListener> access = listeners.start();
+ try {
+ int count = access.size();
+ for (int i = 0; i < count; i++) {
+ access.get(i).onScrollChanged();
+ }
+ } finally {
+ listeners.end();
}
}
}
@@ -722,11 +745,11 @@
* Returns whether there are listeners for computing internal insets.
*/
final boolean hasComputeInternalInsetsListeners() {
- final CopyOnWriteArrayList<OnComputeInternalInsetsListener> listeners =
+ final CopyOnWriteArray<OnComputeInternalInsetsListener> listeners =
mOnComputeInternalInsetsListeners;
return (listeners != null && listeners.size() > 0);
}
-
+
/**
* Calls all listeners to compute the current insets.
*/
@@ -735,12 +758,105 @@
// perform the dispatching. The iterator is a safe guard against listeners that
// could mutate the list by calling the various add/remove methods. This prevents
// the array from being modified while we iterate it.
- final CopyOnWriteArrayList<OnComputeInternalInsetsListener> listeners =
+ final CopyOnWriteArray<OnComputeInternalInsetsListener> listeners =
mOnComputeInternalInsetsListeners;
if (listeners != null && listeners.size() > 0) {
- for (OnComputeInternalInsetsListener listener : listeners) {
- listener.onComputeInternalInsets(inoutInfo);
+ CopyOnWriteArray.Access<OnComputeInternalInsetsListener> access = listeners.start();
+ try {
+ int count = access.size();
+ for (int i = 0; i < count; i++) {
+ access.get(i).onComputeInternalInsets(inoutInfo);
+ }
+ } finally {
+ listeners.end();
}
}
}
+
+ /**
+ * Copy on write array. This array is not thread safe, and only one loop can
+ * iterate over this array at any given time. This class avoids allocations
+ * until a concurrent modification happens.
+ *
+ * Usage:
+ *
+ * CopyOnWriteArray.Access<MyData> access = array.start();
+ * try {
+ * for (int i = 0; i < access.size(); i++) {
+ * MyData d = access.get(i);
+ * }
+ * } finally {
+ * access.end();
+ * }
+ */
+ static class CopyOnWriteArray<T> {
+ private ArrayList<T> mData = new ArrayList<T>();
+ private ArrayList<T> mDataCopy;
+
+ private final Access<T> mAccess = new Access<T>();
+
+ private boolean mStart;
+
+ static class Access<T> {
+ private ArrayList<T> mData;
+ private int mSize;
+
+ T get(int index) {
+ return mData.get(index);
+ }
+
+ int size() {
+ return mSize;
+ }
+ }
+
+ CopyOnWriteArray() {
+ }
+
+ private ArrayList<T> getArray() {
+ if (mStart) {
+ if (mDataCopy == null) mDataCopy = new ArrayList<T>(mData);
+ return mDataCopy;
+ }
+ return mData;
+ }
+
+ Access<T> start() {
+ if (mStart) throw new IllegalStateException("Iteration already started");
+ mStart = true;
+ mDataCopy = null;
+ mAccess.mData = mData;
+ mAccess.mSize = mData.size();
+ return mAccess;
+ }
+
+ void end() {
+ if (!mStart) throw new IllegalStateException("Iteration not started");
+ mStart = false;
+ if (mDataCopy != null) {
+ mData = mDataCopy;
+ }
+ mDataCopy = null;
+ }
+
+ int size() {
+ return getArray().size();
+ }
+
+ void add(T item) {
+ getArray().add(item);
+ }
+
+ void addAll(CopyOnWriteArray<T> array) {
+ getArray().addAll(array.mData);
+ }
+
+ void remove(T item) {
+ getArray().remove(item);
+ }
+
+ void clear() {
+ getArray().clear();
+ }
+ }
}
diff --git a/core/java/android/view/WindowManagerPolicy.java b/core/java/android/view/WindowManagerPolicy.java
index 94762b9..388cfb3 100644
--- a/core/java/android/view/WindowManagerPolicy.java
+++ b/core/java/android/view/WindowManagerPolicy.java
@@ -91,6 +91,11 @@
public final static int FLAG_BRIGHT_HERE = 0x20000000;
public final static int FLAG_PASS_TO_USER = 0x40000000;
+ // Flags used for indicating whether the internal and/or external input devices
+ // of some type are available.
+ public final static int PRESENCE_INTERNAL = 1 << 0;
+ public final static int PRESENCE_EXTERNAL = 1 << 1;
+
public final static boolean WATCH_POINTER = false;
/**
@@ -516,8 +521,13 @@
*
* @param config The Configuration being computed, for you to change as
* desired.
+ * @param keyboardPresence Flags that indicate whether internal or external
+ * keyboards are present.
+ * @param navigationPresence Flags that indicate whether internal or external
+ * navigation devices are present.
*/
- public void adjustConfigurationLw(Configuration config);
+ public void adjustConfigurationLw(Configuration config, int keyboardPresence,
+ int navigationPresence);
/**
* Assign a window type to a layer. Allows you to control how different
@@ -1007,7 +1017,7 @@
/**
* Called when we have finished booting and can now display the home
- * screen to the user. This wilWl happen after systemReady(), and at
+ * screen to the user. This will happen after systemReady(), and at
* this point the display is active.
*/
public void enableScreenAfterBoot();
@@ -1090,6 +1100,13 @@
public void stopScreenSaver();
/**
+ * Set the last used input method window state. This state is used to make IME transition
+ * smooth.
+ * @hide
+ */
+ public void setLastInputMethodWindowLw(WindowState ime, WindowState target);
+
+ /**
* Print the WindowManagerPolicy's state into the given stream.
*
* @param prefix Text to print at the front of each line.
diff --git a/core/java/android/view/WindowOrientationListener.java b/core/java/android/view/WindowOrientationListener.java
index c28b220..4c34dd4 100755
--- a/core/java/android/view/WindowOrientationListener.java
+++ b/core/java/android/view/WindowOrientationListener.java
@@ -21,6 +21,7 @@
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
+import android.os.SystemProperties;
import android.util.FloatMath;
import android.util.Log;
import android.util.Slog;
@@ -34,20 +35,15 @@
* "App/Activity/Screen Orientation" to ensure that all orientation
* modes still work correctly.
*
- * You can also visualize the behavior of the WindowOrientationListener by
- * enabling the window orientation listener log using the Development Settings
- * in the Dev Tools application (Development.apk)
- * and running frameworks/base/tools/orientationplot/orientationplot.py.
- *
- * More information about how to tune this algorithm in
- * frameworks/base/tools/orientationplot/README.txt.
+ * You can also visualize the behavior of the WindowOrientationListener.
+ * Refer to frameworks/base/tools/orientationplot/README.txt for details.
*
* @hide
*/
public abstract class WindowOrientationListener {
private static final String TAG = "WindowOrientationListener";
- private static final boolean DEBUG = false;
- private static final boolean localLOGV = DEBUG || false;
+ private static final boolean LOG = SystemProperties.getBoolean(
+ "debug.orientation.log", false);
private static final boolean USE_GRAVITY_SENSOR = false;
@@ -56,7 +52,6 @@
private int mRate;
private Sensor mSensor;
private SensorEventListenerImpl mSensorEventListener;
- boolean mLogEnabled;
int mCurrentRotation = -1;
/**
@@ -100,7 +95,9 @@
return;
}
if (mEnabled == false) {
- if (localLOGV) Log.d(TAG, "WindowOrientationListener enabled");
+ if (LOG) {
+ Log.d(TAG, "WindowOrientationListener enabled");
+ }
mSensorManager.registerListener(mSensorEventListener, mSensor, mRate);
mEnabled = true;
}
@@ -115,7 +112,9 @@
return;
}
if (mEnabled == true) {
- if (localLOGV) Log.d(TAG, "WindowOrientationListener disabled");
+ if (LOG) {
+ Log.d(TAG, "WindowOrientationListener disabled");
+ }
mSensorManager.unregisterListener(mSensorEventListener);
mEnabled = false;
}
@@ -165,16 +164,6 @@
public abstract void onProposedRotationChanged(int rotation);
/**
- * Enables or disables the window orientation listener logging for use with
- * the orientationplot.py tool.
- * Logging is usually enabled via Development Settings. (See class comments.)
- * @param enable True to enable logging.
- */
- public void setLogEnabled(boolean enable) {
- mLogEnabled = enable;
- }
-
- /**
* This class filters the raw accelerometer data and tries to detect actual changes in
* orientation. This is a very ill-defined problem so there are a lot of tweakable parameters,
* but here's the outline:
@@ -238,11 +227,16 @@
// can change.
private static final long PROPOSAL_MIN_TIME_SINCE_FLAT_ENDED_NANOS = 500 * NANOS_PER_MS;
- // The mininum amount of time that must have elapsed since the device stopped
+ // The minimum amount of time that must have elapsed since the device stopped
// swinging (time since device appeared to be in the process of being put down
// or put away into a pocket) before the proposed rotation can change.
private static final long PROPOSAL_MIN_TIME_SINCE_SWING_ENDED_NANOS = 300 * NANOS_PER_MS;
+ // The minimum amount of time that must have elapsed since the device stopped
+ // undergoing external acceleration before the proposed rotation can change.
+ private static final long PROPOSAL_MIN_TIME_SINCE_ACCELERATION_ENDED_NANOS =
+ 500 * NANOS_PER_MS;
+
// If the tilt angle remains greater than the specified angle for a minimum of
// the specified time, then the device is deemed to be lying flat
// (just chillin' on a table).
@@ -300,10 +294,15 @@
// singularities in the tilt and orientation calculations.
//
// In both cases, we postpone choosing an orientation.
+ //
+ // However, we need to tolerate some acceleration because the angular momentum
+ // of turning the device can skew the observed acceleration for a short period of time.
+ private static final float NEAR_ZERO_MAGNITUDE = 1; // m/s^2
+ private static final float ACCELERATION_TOLERANCE = 4; // m/s^2
private static final float MIN_ACCELERATION_MAGNITUDE =
- SensorManager.STANDARD_GRAVITY * 0.3f;
+ SensorManager.STANDARD_GRAVITY - ACCELERATION_TOLERANCE;
private static final float MAX_ACCELERATION_MAGNITUDE =
- SensorManager.STANDARD_GRAVITY * 1.25f;
+ SensorManager.STANDARD_GRAVITY + ACCELERATION_TOLERANCE;
// Maximum absolute tilt angle at which to consider orientation data. Beyond this (i.e.
// when screen is facing the sky or ground), we completely ignore orientation data.
@@ -353,6 +352,9 @@
// Timestamp when the device last appeared to be swinging.
private long mSwingTimestampNanos;
+ // Timestamp when the device last appeared to be undergoing external acceleration.
+ private long mAccelerationTimestampNanos;
+
// History of observed tilt angles.
private static final int TILT_HISTORY_SIZE = 40;
private float[] mTiltHistory = new float[TILT_HISTORY_SIZE];
@@ -374,15 +376,13 @@
@Override
public void onSensorChanged(SensorEvent event) {
- final boolean log = mOrientationListener.mLogEnabled;
-
// The vector given in the SensorEvent points straight up (towards the sky) under ideal
// conditions (the phone is not accelerating). I'll call this up vector elsewhere.
float x = event.values[ACCELEROMETER_DATA_X];
float y = event.values[ACCELEROMETER_DATA_Y];
float z = event.values[ACCELEROMETER_DATA_Z];
- if (log) {
+ if (LOG) {
Slog.v(TAG, "Raw acceleration vector: "
+ "x=" + x + ", y=" + y + ", z=" + z
+ ", magnitude=" + FloatMath.sqrt(x * x + y * y + z * z));
@@ -399,7 +399,7 @@
if (now < then
|| now > then + MAX_FILTER_DELTA_TIME_NANOS
|| (x == 0 && y == 0 && z == 0)) {
- if (log) {
+ if (LOG) {
Slog.v(TAG, "Resetting orientation listener.");
}
reset();
@@ -409,7 +409,7 @@
x = alpha * (x - mLastFilteredX) + mLastFilteredX;
y = alpha * (y - mLastFilteredY) + mLastFilteredY;
z = alpha * (z - mLastFilteredZ) + mLastFilteredZ;
- if (log) {
+ if (LOG) {
Slog.v(TAG, "Filtered acceleration vector: "
+ "x=" + x + ", y=" + y + ", z=" + z
+ ", magnitude=" + FloatMath.sqrt(x * x + y * y + z * z));
@@ -421,18 +421,24 @@
mLastFilteredY = y;
mLastFilteredZ = z;
+ boolean isAccelerating = false;
boolean isFlat = false;
boolean isSwinging = false;
if (!skipSample) {
// Calculate the magnitude of the acceleration vector.
final float magnitude = FloatMath.sqrt(x * x + y * y + z * z);
- if (magnitude < MIN_ACCELERATION_MAGNITUDE
- || magnitude > MAX_ACCELERATION_MAGNITUDE) {
- if (log) {
- Slog.v(TAG, "Ignoring sensor data, magnitude out of range.");
+ if (magnitude < NEAR_ZERO_MAGNITUDE) {
+ if (LOG) {
+ Slog.v(TAG, "Ignoring sensor data, magnitude too close to zero.");
}
clearPredictedRotation();
} else {
+ // Determine whether the device appears to be undergoing external acceleration.
+ if (isAccelerating(magnitude)) {
+ isAccelerating = true;
+ mAccelerationTimestampNanos = now;
+ }
+
// Calculate the tilt angle.
// This is the angle between the up vector and the x-y plane (the plane of
// the screen) in a range of [-90, 90] degrees.
@@ -441,6 +447,7 @@
// 90 degrees: screen horizontal and facing the sky (on table)
final int tiltAngle = (int) Math.round(
Math.asin(z / magnitude) * RADIANS_TO_DEGREES);
+ addTiltHistoryEntry(now, tiltAngle);
// Determine whether the device appears to be flat or swinging.
if (isFlat(now)) {
@@ -451,12 +458,11 @@
isSwinging = true;
mSwingTimestampNanos = now;
}
- addTiltHistoryEntry(now, tiltAngle);
// If the tilt angle is too close to horizontal then we cannot determine
// the orientation angle of the screen.
if (Math.abs(tiltAngle) > MAX_TILT) {
- if (log) {
+ if (LOG) {
Slog.v(TAG, "Ignoring sensor data, tilt angle too high: "
+ "tiltAngle=" + tiltAngle);
}
@@ -483,7 +489,7 @@
&& isOrientationAngleAcceptable(nearestRotation,
orientationAngle)) {
updatePredictedRotation(now, nearestRotation);
- if (log) {
+ if (LOG) {
Slog.v(TAG, "Predicted: "
+ "tiltAngle=" + tiltAngle
+ ", orientationAngle=" + orientationAngle
@@ -493,7 +499,7 @@
* 0.000001f));
}
} else {
- if (log) {
+ if (LOG) {
Slog.v(TAG, "Ignoring sensor data, no predicted rotation: "
+ "tiltAngle=" + tiltAngle
+ ", orientationAngle=" + orientationAngle);
@@ -511,15 +517,18 @@
}
// Write final statistics about where we are in the orientation detection process.
- if (log) {
+ if (LOG) {
Slog.v(TAG, "Result: currentRotation=" + mOrientationListener.mCurrentRotation
+ ", proposedRotation=" + mProposedRotation
+ ", predictedRotation=" + mPredictedRotation
+ ", timeDeltaMS=" + timeDeltaMS
+ + ", isAccelerating=" + isAccelerating
+ ", isFlat=" + isFlat
+ ", isSwinging=" + isSwinging
+ ", timeUntilSettledMS=" + remainingMS(now,
mPredictedRotationTimestampNanos + PROPOSAL_SETTLE_TIME_NANOS)
+ + ", timeUntilAccelerationDelayExpiredMS=" + remainingMS(now,
+ mAccelerationTimestampNanos + PROPOSAL_MIN_TIME_SINCE_ACCELERATION_ENDED_NANOS)
+ ", timeUntilFlatDelayExpiredMS=" + remainingMS(now,
mFlatTimestampNanos + PROPOSAL_MIN_TIME_SINCE_FLAT_ENDED_NANOS)
+ ", timeUntilSwingDelayExpiredMS=" + remainingMS(now,
@@ -528,7 +537,7 @@
// Tell the listener.
if (mProposedRotation != oldProposedRotation && mProposedRotation >= 0) {
- if (log) {
+ if (LOG) {
Slog.v(TAG, "Proposed rotation changed! proposedRotation=" + mProposedRotation
+ ", oldProposedRotation=" + oldProposedRotation);
}
@@ -618,6 +627,12 @@
return false;
}
+ // The last acceleration state must have been sufficiently long ago.
+ if (now < mAccelerationTimestampNanos
+ + PROPOSAL_MIN_TIME_SINCE_ACCELERATION_ENDED_NANOS) {
+ return false;
+ }
+
// Looks good!
return true;
}
@@ -627,6 +642,7 @@
mProposedRotation = -1;
mFlatTimestampNanos = Long.MIN_VALUE;
mSwingTimestampNanos = Long.MIN_VALUE;
+ mAccelerationTimestampNanos = Long.MIN_VALUE;
clearPredictedRotation();
clearTiltHistory();
}
@@ -643,6 +659,11 @@
}
}
+ private boolean isAccelerating(float magnitude) {
+ return magnitude < MIN_ACCELERATION_MAGNITUDE
+ || magnitude > MAX_ACCELERATION_MAGNITUDE;
+ }
+
private void clearTiltHistory() {
mTiltHistoryTimestampNanos[0] = Long.MIN_VALUE;
mTiltHistoryIndex = 1;
diff --git a/core/java/android/view/accessibility/AccessibilityEvent.java b/core/java/android/view/accessibility/AccessibilityEvent.java
index 6d1166e..1a2a194 100644
--- a/core/java/android/view/accessibility/AccessibilityEvent.java
+++ b/core/java/android/view/accessibility/AccessibilityEvent.java
@@ -226,9 +226,9 @@
* <li>{@link #getContentDescription()} - The content description of the source.</li>
* </ul>
* </p>
- * <b>View text traversed at granularity</b> - represents the event of traversing the
+ * <b>View text traversed at movement granularity</b> - represents the event of traversing the
* text of a view at a given granularity. For example, moving to the next word.</br>
- * <em>Type:</em> {@link #TYPE_VIEW_TEXT_TRAVERSED_AT_GRANULARITY} </br>
+ * <em>Type:</em> {@link #TYPE_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY} </br>
* <em>Properties:</em></br>
* <ul>
* <li>{@link #getEventType()} - The type of the event.</li>
@@ -236,11 +236,19 @@
* <li>{@link #getClassName()} - The class name of the source.</li>
* <li>{@link #getPackageName()} - The package name of the source.</li>
* <li>{@link #getEventTime()} - The event time.</li>
- * <li>{@link #getText()} - The text of the current text at the granularity.</li>
+ * <li>{@link #getMovementGranularity()} - Sets the granularity at which a view's text
+ * was traversed.</li>
+ * <li>{@link #getText()} - The text of the source's sub-tree.</li>
+ * <li>{@link #getFromIndex()} - The start of the next/previous text at the specified granularity
+ * - inclusive.</li>
+ * <li>{@link #getToIndex()} - The end of the next/previous text at the specified granularity
+ * - exclusive.</li>
* <li>{@link #isPassword()} - Whether the source is password.</li>
* <li>{@link #isEnabled()} - Whether the source is enabled.</li>
* <li>{@link #getContentDescription()} - The content description of the source.</li>
- * <li>{@link #getGranularity()} - Sets the granularity at which a view's text was traversed.</li>
+ * <li>{@link #getMovementGranularity()} - Sets the granularity at which a view's text
+ * was traversed.</li>
+ * <li>{@link #getAction()} - Gets traversal action which specifies the direction.</li>
* </ul>
* </p>
* <p>
@@ -597,9 +605,9 @@
public static final int TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED = 0x00010000;
/**
- * Represents the event of traversing the text of a view at a given granularity.
+ * Represents the event of traversing the text of a view at a given movement granularity.
*/
- public static final int TYPE_VIEW_TEXT_TRAVERSED_AT_GRANULARITY = 0x00020000;
+ public static final int TYPE_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY = 0x00020000;
/**
* Mask for {@link AccessibilityEvent} all types.
@@ -619,7 +627,7 @@
* @see #TYPE_VIEW_SCROLLED
* @see #TYPE_VIEW_TEXT_SELECTION_CHANGED
* @see #TYPE_ANNOUNCEMENT
- * @see #TYPE_VIEW_TEXT_TRAVERSED_AT_GRANULARITY
+ * @see #TYPE_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY
*/
public static final int TYPES_ALL_MASK = 0xFFFFFFFF;
@@ -633,7 +641,8 @@
private int mEventType;
private CharSequence mPackageName;
private long mEventTime;
- int mGranularity;
+ int mMovementGranularity;
+ int mAction;
private final ArrayList<AccessibilityRecord> mRecords = new ArrayList<AccessibilityRecord>();
@@ -651,7 +660,8 @@
void init(AccessibilityEvent event) {
super.init(event);
mEventType = event.mEventType;
- mGranularity = event.mGranularity;
+ mMovementGranularity = event.mMovementGranularity;
+ mAction = event.mAction;
mEventTime = event.mEventTime;
mPackageName = event.mPackageName;
}
@@ -769,24 +779,45 @@
}
/**
- * Sets the text granularity that was traversed.
+ * Sets the movement granularity that was traversed.
*
* @param granularity The granularity.
*
* @throws IllegalStateException If called from an AccessibilityService.
*/
- public void setGranularity(int granularity) {
+ public void setMovementGranularity(int granularity) {
enforceNotSealed();
- mGranularity = granularity;
+ mMovementGranularity = granularity;
}
/**
- * Gets the text granularity that was traversed.
+ * Gets the movement granularity that was traversed.
*
* @return The granularity.
*/
- public int getGranularity() {
- return mGranularity;
+ public int getMovementGranularity() {
+ return mMovementGranularity;
+ }
+
+ /**
+ * Sets the performed action that triggered this event.
+ *
+ * @param action The action.
+ *
+ * @throws IllegalStateException If called from an AccessibilityService.
+ */
+ public void setAction(int action) {
+ enforceNotSealed();
+ mAction = action;
+ }
+
+ /**
+ * Gets the performed action that triggered this event.
+ *
+ * @return The action.
+ */
+ public int getAction() {
+ return mAction;
}
/**
@@ -877,7 +908,8 @@
protected void clear() {
super.clear();
mEventType = 0;
- mGranularity = 0;
+ mMovementGranularity = 0;
+ mAction = 0;
mPackageName = null;
mEventTime = 0;
while (!mRecords.isEmpty()) {
@@ -894,7 +926,8 @@
public void initFromParcel(Parcel parcel) {
mSealed = (parcel.readInt() == 1);
mEventType = parcel.readInt();
- mGranularity = parcel.readInt();
+ mMovementGranularity = parcel.readInt();
+ mAction = parcel.readInt();
mPackageName = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(parcel);
mEventTime = parcel.readLong();
mConnectionId = parcel.readInt();
@@ -945,7 +978,8 @@
public void writeToParcel(Parcel parcel, int flags) {
parcel.writeInt(isSealed() ? 1 : 0);
parcel.writeInt(mEventType);
- parcel.writeInt(mGranularity);
+ parcel.writeInt(mMovementGranularity);
+ parcel.writeInt(mAction);
TextUtils.writeToParcel(mPackageName, parcel, 0);
parcel.writeLong(mEventTime);
parcel.writeInt(mConnectionId);
@@ -1002,7 +1036,8 @@
builder.append("EventType: ").append(eventTypeToString(mEventType));
builder.append("; EventTime: ").append(mEventTime);
builder.append("; PackageName: ").append(mPackageName);
- builder.append("; Granularity: ").append(mGranularity);
+ builder.append("; MovementGranularity: ").append(mMovementGranularity);
+ builder.append("; Action: ").append(mAction);
builder.append(super.toString());
if (DEBUG) {
builder.append("\n");
@@ -1083,8 +1118,8 @@
return "TYPE_VIEW_ACCESSIBILITY_FOCUSED";
case TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED:
return "TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED";
- case TYPE_VIEW_TEXT_TRAVERSED_AT_GRANULARITY:
- return "TYPE_CURRENT_AT_GRANULARITY_CHANGED";
+ case TYPE_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY:
+ return "TYPE_CURRENT_AT_GRANULARITY_MOVEMENT_CHANGED";
default:
return null;
}
diff --git a/core/java/android/view/accessibility/AccessibilityNodeInfo.java b/core/java/android/view/accessibility/AccessibilityNodeInfo.java
index aec18fe..6b14ba5 100644
--- a/core/java/android/view/accessibility/AccessibilityNodeInfo.java
+++ b/core/java/android/view/accessibility/AccessibilityNodeInfo.java
@@ -102,12 +102,12 @@
public static final int ACTION_CLEAR_SELECTION = 0x00000008;
/**
- * Action that long clicks on the node info.
+ * Action that clicks on the node info.
*/
public static final int ACTION_CLICK = 0x00000010;
/**
- * Action that clicks on the node.
+ * Action that long clicks on the node.
*/
public static final int ACTION_LONG_CLICK = 0x00000020;
@@ -123,53 +123,56 @@
/**
* Action that requests to go to the next entity in this node's text
- * at a given granularity. For example, move to the next character, word, etc.
+ * at a given movement granularity. For example, move to the next character,
+ * word, etc.
* <p>
- * <strong>Arguments:</strong> {@link #ACTION_ARGUMENT_GRANULARITY_INT}<br>
+ * <strong>Arguments:</strong> {@link #ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT}<br>
* <strong>Example:</strong>
* <code><pre><p>
* Bundle arguments = new Bundle();
- * arguments.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_GRANULARITY_INT,
- * AccessibilityNodeInfo.GRANULARITY_CHARACTER);
- * info.performAction(AccessibilityNodeInfo.ACTION_NEXT_AT_GRANULARITY, arguments);
+ * arguments.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT,
+ * AccessibilityNodeInfo.MOVEMENT_GRANULARITY_CHARACTER);
+ * info.performAction(AccessibilityNodeInfo.ACTION_NEXT_AT_MOVEMENT_GRANULARITY, arguments);
* </code></pre></p>
* </p>
*
- * @see #setGranularities(int)
- * @see #getGranularities()
+ * @see #setMovementGranularities(int)
+ * @see #getMovementGranularities()
*
- * @see #GRANULARITY_CHARACTER
- * @see #GRANULARITY_WORD
- * @see #GRANULARITY_LINE
- * @see #GRANULARITY_PARAGRAPH
- * @see #GRANULARITY_PAGE
+ * @see #MOVEMENT_GRANULARITY_CHARACTER
+ * @see #MOVEMENT_GRANULARITY_WORD
+ * @see #MOVEMENT_GRANULARITY_LINE
+ * @see #MOVEMENT_GRANULARITY_PARAGRAPH
+ * @see #MOVEMENT_GRANULARITY_PAGE
*/
- public static final int ACTION_NEXT_AT_GRANULARITY = 0x00000100;
+ public static final int ACTION_NEXT_AT_MOVEMENT_GRANULARITY = 0x00000100;
/**
* Action that requests to go to the previous entity in this node's text
- * at a given granularity. For example, move to the next character, word, etc.
+ * at a given movement granularity. For example, move to the next character,
+ * word, etc.
* <p>
- * <strong>Arguments:</strong> {@link #ACTION_ARGUMENT_GRANULARITY_INT}<br>
+ * <strong>Arguments:</strong> {@link #ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT}<br>
* <strong>Example:</strong>
* <code><pre><p>
* Bundle arguments = new Bundle();
- * arguments.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_GRANULARITY_INT,
- * AccessibilityNodeInfo.GRANULARITY_CHARACTER);
- * info.performAction(AccessibilityNodeInfo.ACTION_PREVIOUS_AT_GRANULARITY, arguments);
+ * arguments.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT,
+ * AccessibilityNodeInfo.MOVEMENT_GRANULARITY_CHARACTER);
+ * info.performAction(AccessibilityNodeInfo.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY,
+ * arguments);
* </code></pre></p>
* </p>
*
- * @see #setGranularities(int)
- * @see #getGranularities()
+ * @see #setMovementGranularities(int)
+ * @see #getMovementGranularities()
*
- * @see #GRANULARITY_CHARACTER
- * @see #GRANULARITY_WORD
- * @see #GRANULARITY_LINE
- * @see #GRANULARITY_PARAGRAPH
- * @see #GRANULARITY_PAGE
+ * @see #MOVEMENT_GRANULARITY_CHARACTER
+ * @see #MOVEMENT_GRANULARITY_WORD
+ * @see #MOVEMENT_GRANULARITY_LINE
+ * @see #MOVEMENT_GRANULARITY_PARAGRAPH
+ * @see #MOVEMENT_GRANULARITY_PAGE
*/
- public static final int ACTION_PREVIOUS_AT_GRANULARITY = 0x00000200;
+ public static final int ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY = 0x00000200;
/**
* Action to move to the next HTML element of a given type. For example, move
@@ -202,14 +205,15 @@
public static final int ACTION_PREVIOUS_HTML_ELEMENT = 0x00000800;
/**
- * Argument for which text granularity to be used when traversing the node text.
+ * Argument for which movement granularity to be used when traversing the node text.
* <p>
* <strong>Type:</strong> int<br>
- * <strong>Actions:</strong> {@link #ACTION_NEXT_AT_GRANULARITY},
- * {@link #ACTION_PREVIOUS_AT_GRANULARITY}
+ * <strong>Actions:</strong> {@link #ACTION_NEXT_AT_MOVEMENT_GRANULARITY},
+ * {@link #ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY}
* </p>
*/
- public static final String ACTION_ARGUMENT_GRANULARITY_INT = "ACTION_ARGUMENT_GRANULARITY_INT";
+ public static final String ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT =
+ "ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT";
/**
* Argument for which HTML element to get moving to the next/previous HTML element.
@@ -232,32 +236,32 @@
*/
public static final int FOCUS_ACCESSIBILITY = 2;
- // Granularities
+ // Movement granularities
/**
- * Granularity bit for traversing the text of a node by character.
+ * Movement granularity bit for traversing the text of a node by character.
*/
- public static final int GRANULARITY_CHARACTER = 0x00000001;
+ public static final int MOVEMENT_GRANULARITY_CHARACTER = 0x00000001;
/**
- * Granularity bit for traversing the text of a node by word.
+ * Movement granularity bit for traversing the text of a node by word.
*/
- public static final int GRANULARITY_WORD = 0x00000002;
+ public static final int MOVEMENT_GRANULARITY_WORD = 0x00000002;
/**
- * Granularity bit for traversing the text of a node by line.
+ * Movement granularity bit for traversing the text of a node by line.
*/
- public static final int GRANULARITY_LINE = 0x00000004;
+ public static final int MOVEMENT_GRANULARITY_LINE = 0x00000004;
/**
- * Granularity bit for traversing the text of a node by paragraph.
+ * Movement granularity bit for traversing the text of a node by paragraph.
*/
- public static final int GRANULARITY_PARAGRAPH = 0x00000008;
+ public static final int MOVEMENT_GRANULARITY_PARAGRAPH = 0x00000008;
/**
- * Granularity bit for traversing the text of a node by page.
+ * Movement granularity bit for traversing the text of a node by page.
*/
- public static final int GRANULARITY_PAGE = 0x00000010;
+ public static final int MOVEMENT_GRANULARITY_PAGE = 0x00000010;
// Boolean attributes.
@@ -283,6 +287,8 @@
private static final int PROPERTY_ACCESSIBILITY_FOCUSED = 0x00000400;
+ private static final int PROPERTY_VISIBLE_TO_USER = 0x00000800;
+
/**
* Bits that provide the id of a virtual descendant of a view.
*/
@@ -362,7 +368,7 @@
private final SparseLongArray mChildNodeIds = new SparseLongArray();
private int mActions;
- private int mGranularities;
+ private int mMovementGranularities;
private int mConnectionId = UNDEFINED;
@@ -586,7 +592,7 @@
}
/**
- * Sets the text granularities for traversing the text of this node.
+ * Sets the movement granularities for traversing the text of this node.
* <p>
* <strong>Note:</strong> Cannot be called from an
* {@link android.accessibilityservice.AccessibilityService}.
@@ -597,18 +603,18 @@
*
* @throws IllegalStateException If called from an AccessibilityService.
*/
- public void setGranularities(int granularities) {
+ public void setMovementGranularities(int granularities) {
enforceNotSealed();
- mGranularities = granularities;
+ mMovementGranularities = granularities;
}
/**
- * Gets the granularities for traversing the text of this node.
+ * Gets the movement granularities for traversing the text of this node.
*
* @return The bit mask with granularities.
*/
- public int getGranularities() {
- return mGranularities;
+ public int getMovementGranularities() {
+ return mMovementGranularities;
}
/**
@@ -906,6 +912,31 @@
}
/**
+ * Sets whether this node is visible to the user.
+ *
+ * @return Whether the node is visible to the user.
+ */
+ public boolean isVisibleToUser() {
+ return getBooleanProperty(PROPERTY_VISIBLE_TO_USER);
+ }
+
+ /**
+ * Sets whether this node is visible to the user.
+ * <p>
+ * <strong>Note:</strong> Cannot be called from an
+ * {@link android.accessibilityservice.AccessibilityService}.
+ * This class is made immutable before being delivered to an AccessibilityService.
+ * </p>
+ *
+ * @param visibleToUser Whether the node is visible to the user.
+ *
+ * @throws IllegalStateException If called from an AccessibilityService.
+ */
+ public void setVisibleToUser(boolean visibleToUser) {
+ setBooleanProperty(PROPERTY_VISIBLE_TO_USER, visibleToUser);
+ }
+
+ /**
* Gets whether this node is accessibility focused.
*
* @return True if the node is accessibility focused.
@@ -1412,7 +1443,7 @@
parcel.writeInt(mActions);
- parcel.writeInt(mGranularities);
+ parcel.writeInt(mMovementGranularities);
parcel.writeInt(mBooleanProperties);
@@ -1446,7 +1477,7 @@
mContentDescription = other.mContentDescription;
mActions= other.mActions;
mBooleanProperties = other.mBooleanProperties;
- mGranularities = other.mGranularities;
+ mMovementGranularities = other.mMovementGranularities;
final int otherChildIdCount = other.mChildNodeIds.size();
for (int i = 0; i < otherChildIdCount; i++) {
mChildNodeIds.put(i, other.mChildNodeIds.valueAt(i));
@@ -1484,7 +1515,7 @@
mActions = parcel.readInt();
- mGranularities = parcel.readInt();
+ mMovementGranularities = parcel.readInt();
mBooleanProperties = parcel.readInt();
@@ -1503,7 +1534,7 @@
mParentNodeId = ROOT_NODE_ID;
mWindowId = UNDEFINED;
mConnectionId = UNDEFINED;
- mGranularities = 0;
+ mMovementGranularities = 0;
mChildNodeIds.clear();
mBoundsInParent.set(0, 0, 0, 0);
mBoundsInScreen.set(0, 0, 0, 0);
@@ -1531,31 +1562,47 @@
return "ACTION_SELECT";
case ACTION_CLEAR_SELECTION:
return "ACTION_CLEAR_SELECTION";
+ case ACTION_CLICK:
+ return "ACTION_CLICK";
+ case ACTION_LONG_CLICK:
+ return "ACTION_LONG_CLICK";
+ case ACTION_ACCESSIBILITY_FOCUS:
+ return "ACTION_ACCESSIBILITY_FOCUS";
+ case ACTION_CLEAR_ACCESSIBILITY_FOCUS:
+ return "ACTION_CLEAR_ACCESSIBILITY_FOCUS";
+ case ACTION_NEXT_AT_MOVEMENT_GRANULARITY:
+ return "ACTION_NEXT_AT_MOVEMENT_GRANULARITY";
+ case ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY:
+ return "ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY";
+ case ACTION_NEXT_HTML_ELEMENT:
+ return "ACTION_NEXT_HTML_ELEMENT";
+ case ACTION_PREVIOUS_HTML_ELEMENT:
+ return "ACTION_PREVIOUS_HTML_ELEMENT";
default:
throw new IllegalArgumentException("Unknown action: " + action);
}
}
/**
- * Gets the human readable granularity symbolic name.
+ * Gets the human readable movement granularity symbolic name.
*
- * @param granularity The action.
+ * @param granularity The granularity.
* @return The symbolic name.
*/
- private static String getGranularitySymbolicName(int granularity) {
+ private static String getMovementGranularitySymbolicName(int granularity) {
switch (granularity) {
- case GRANULARITY_CHARACTER:
- return "GRANULARITY_CHARACTER";
- case GRANULARITY_WORD:
- return "GRANULARITY_WORD";
- case GRANULARITY_LINE:
- return "GRANULARITY_LINE";
- case GRANULARITY_PARAGRAPH:
- return "GRANULARITY_PARAGRAPH";
- case GRANULARITY_PAGE:
- return "GRANULARITY_PAGE";
+ case MOVEMENT_GRANULARITY_CHARACTER:
+ return "MOVEMENT_GRANULARITY_CHARACTER";
+ case MOVEMENT_GRANULARITY_WORD:
+ return "MOVEMENT_GRANULARITY_WORD";
+ case MOVEMENT_GRANULARITY_LINE:
+ return "MOVEMENT_GRANULARITY_LINE";
+ case MOVEMENT_GRANULARITY_PARAGRAPH:
+ return "MOVEMENT_GRANULARITY_PARAGRAPH";
+ case MOVEMENT_GRANULARITY_PAGE:
+ return "MOVEMENT_GRANULARITY_PAGE";
default:
- throw new IllegalArgumentException("Unknown granularity: " + granularity);
+ throw new IllegalArgumentException("Unknown movement granularity: " + granularity);
}
}
@@ -1606,12 +1653,12 @@
builder.append("; virtualDescendantId: " + getVirtualDescendantId(mSourceNodeId));
builder.append("; mParentNodeId: " + mParentNodeId);
- int granularities = mGranularities;
- builder.append("; granularities: [");
+ int granularities = mMovementGranularities;
+ builder.append("; MovementGranularities: [");
while (granularities != 0) {
final int granularity = 1 << Integer.numberOfTrailingZeros(granularities);
granularities &= ~granularity;
- builder.append(getGranularitySymbolicName(granularity));
+ builder.append(getMovementGranularitySymbolicName(granularity));
if (granularities != 0) {
builder.append(", ");
}
diff --git a/core/java/android/view/accessibility/AccessibilityRecord.java b/core/java/android/view/accessibility/AccessibilityRecord.java
index 78a7d46..5c60a12 100644
--- a/core/java/android/view/accessibility/AccessibilityRecord.java
+++ b/core/java/android/view/accessibility/AccessibilityRecord.java
@@ -135,7 +135,12 @@
*/
public void setSource(View root, int virtualDescendantId) {
enforceNotSealed();
- final boolean important = (root != null) ? root.isImportantForAccessibility() : true;
+ final boolean important;
+ if (virtualDescendantId == UNDEFINED) {
+ important = (root != null) ? root.isImportantForAccessibility() : true;
+ } else {
+ important = true;
+ }
setBooleanProperty(PROPERTY_IMPORTANT_FOR_ACCESSIBILITY, important);
mSourceWindowId = (root != null) ? root.getAccessibilityWindowId() : UNDEFINED;
final int rootViewId = (root != null) ? root.getAccessibilityViewId() : UNDEFINED;
diff --git a/core/java/android/view/inputmethod/InputMethodSubtype.java b/core/java/android/view/inputmethod/InputMethodSubtype.java
index c22750e..b7c94a3 100644
--- a/core/java/android/view/inputmethod/InputMethodSubtype.java
+++ b/core/java/android/view/inputmethod/InputMethodSubtype.java
@@ -58,7 +58,7 @@
private final String mSubtypeLocale;
private final String mSubtypeMode;
private final String mSubtypeExtraValue;
- private HashMap<String, String> mExtraValueHashMapCache;
+ private volatile HashMap<String, String> mExtraValueHashMapCache;
/**
* Constructor.
@@ -237,18 +237,22 @@
private HashMap<String, String> getExtraValueHashMap() {
if (mExtraValueHashMapCache == null) {
- mExtraValueHashMapCache = new HashMap<String, String>();
- final String[] pairs = mSubtypeExtraValue.split(EXTRA_VALUE_PAIR_SEPARATOR);
- final int N = pairs.length;
- for (int i = 0; i < N; ++i) {
- final String[] pair = pairs[i].split(EXTRA_VALUE_KEY_VALUE_SEPARATOR);
- if (pair.length == 1) {
- mExtraValueHashMapCache.put(pair[0], null);
- } else if (pair.length > 1) {
- if (pair.length > 2) {
- Slog.w(TAG, "ExtraValue has two or more '='s");
+ synchronized(this) {
+ if (mExtraValueHashMapCache == null) {
+ mExtraValueHashMapCache = new HashMap<String, String>();
+ final String[] pairs = mSubtypeExtraValue.split(EXTRA_VALUE_PAIR_SEPARATOR);
+ final int N = pairs.length;
+ for (int i = 0; i < N; ++i) {
+ final String[] pair = pairs[i].split(EXTRA_VALUE_KEY_VALUE_SEPARATOR);
+ if (pair.length == 1) {
+ mExtraValueHashMapCache.put(pair[0], null);
+ } else if (pair.length > 1) {
+ if (pair.length > 2) {
+ Slog.w(TAG, "ExtraValue has two or more '='s");
+ }
+ mExtraValueHashMapCache.put(pair[0], pair[1]);
+ }
}
- mExtraValueHashMapCache.put(pair[0], pair[1]);
}
}
}
diff --git a/core/java/android/webkit/AutoCompletePopup.java b/core/java/android/webkit/AutoCompletePopup.java
index 21d5e02..87e878b 100644
--- a/core/java/android/webkit/AutoCompletePopup.java
+++ b/core/java/android/webkit/AutoCompletePopup.java
@@ -28,12 +28,15 @@
import android.widget.Filterable;
import android.widget.ListAdapter;
import android.widget.ListPopupWindow;
+import android.widget.PopupWindow.OnDismissListener;
-class AutoCompletePopup implements OnItemClickListener, Filter.FilterListener {
+class AutoCompletePopup implements OnItemClickListener, Filter.FilterListener,
+ OnDismissListener{
private static class AnchorView extends View {
AnchorView(Context context) {
super(context);
setFocusable(false);
+ setVisibility(INVISIBLE);
}
}
private static final int AUTOFILL_FORM = 100;
@@ -48,17 +51,10 @@
private WebViewClassic.WebViewInputConnection mInputConnection;
private WebViewClassic mWebView;
- public AutoCompletePopup(Context context,
- WebViewClassic webView,
+ public AutoCompletePopup(WebViewClassic webView,
WebViewClassic.WebViewInputConnection inputConnection) {
mInputConnection = inputConnection;
mWebView = webView;
- mPopup = new ListPopupWindow(context);
- mAnchor = new AnchorView(context);
- mWebView.getWebView().addView(mAnchor);
- mPopup.setOnItemClickListener(this);
- mPopup.setAnchorView(mAnchor);
- mPopup.setPromptPosition(ListPopupWindow.POSITION_PROMPT_BELOW);
mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
@@ -72,6 +68,9 @@
}
public boolean onKeyPreIme(int keyCode, KeyEvent event) {
+ if (mPopup == null) {
+ return false;
+ }
if (keyCode == KeyEvent.KEYCODE_BACK && mPopup.isShowing()) {
// special case for the back key, we do not even try to send it
// to the drop down list but instead, consume it immediately
@@ -112,11 +111,14 @@
public void clearAdapter() {
mAdapter = null;
mFilter = null;
- mPopup.dismiss();
- mPopup.setAdapter(null);
+ if (mPopup != null) {
+ mPopup.dismiss();
+ mPopup.setAdapter(null);
+ }
}
public <T extends ListAdapter & Filterable> void setAdapter(T adapter) {
+ ensurePopup();
mPopup.setAdapter(adapter);
mAdapter = adapter;
if (adapter != null) {
@@ -129,6 +131,7 @@
}
public void resetRect() {
+ ensurePopup();
int left = mWebView.contentToViewX(mWebView.mEditTextContentBounds.left);
int right = mWebView.contentToViewX(mWebView.mEditTextContentBounds.right);
int width = right - left;
@@ -164,6 +167,9 @@
// AdapterView.OnItemClickListener implementation
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+ if (mPopup == null) {
+ return;
+ }
if (id == 0 && position == 0 && mInputConnection.getIsAutoFillable()) {
mText = "";
pushTextToInputConnection();
@@ -206,6 +212,7 @@
@Override
public void onFilterComplete(int count) {
+ ensurePopup();
boolean showDropDown = (count > 0) &&
(mInputConnection.getIsAutoFillable() || mText.length() > 0);
if (showDropDown) {
@@ -219,5 +226,23 @@
mPopup.dismiss();
}
}
+
+ @Override
+ public void onDismiss() {
+ mWebView.getWebView().removeView(mAnchor);
+ }
+
+ private void ensurePopup() {
+ if (mPopup == null) {
+ mPopup = new ListPopupWindow(mWebView.getContext());
+ mAnchor = new AnchorView(mWebView.getContext());
+ mWebView.getWebView().addView(mAnchor);
+ mPopup.setOnItemClickListener(this);
+ mPopup.setAnchorView(mAnchor);
+ mPopup.setPromptPosition(ListPopupWindow.POSITION_PROMPT_BELOW);
+ } else if (mWebView.getWebView().indexOfChild(mAnchor) < 0) {
+ mWebView.getWebView().addView(mAnchor);
+ }
+ }
}
diff --git a/core/java/android/webkit/BrowserFrame.java b/core/java/android/webkit/BrowserFrame.java
index c169de4..fe812af 100644
--- a/core/java/android/webkit/BrowserFrame.java
+++ b/core/java/android/webkit/BrowserFrame.java
@@ -56,6 +56,8 @@
import java.util.Set;
import org.apache.harmony.security.provider.cert.X509CertImpl;
+import org.apache.harmony.xnet.provider.jsse.OpenSSLDSAPrivateKey;
+import org.apache.harmony.xnet.provider.jsse.OpenSSLRSAPrivateKey;
class BrowserFrame extends Handler {
@@ -1104,12 +1106,23 @@
SslClientCertLookupTable table = SslClientCertLookupTable.getInstance();
if (table.IsAllowed(hostAndPort)) {
// previously allowed
- nativeSslClientCert(handle,
- table.PrivateKey(hostAndPort),
- table.CertificateChain(hostAndPort));
+ PrivateKey pkey = table.PrivateKey(hostAndPort);
+ if (pkey instanceof OpenSSLRSAPrivateKey) {
+ nativeSslClientCert(handle,
+ ((OpenSSLRSAPrivateKey)pkey).getPkeyContext(),
+ table.CertificateChain(hostAndPort));
+ } else if (pkey instanceof OpenSSLDSAPrivateKey) {
+ nativeSslClientCert(handle,
+ ((OpenSSLDSAPrivateKey)pkey).getPkeyContext(),
+ table.CertificateChain(hostAndPort));
+ } else {
+ nativeSslClientCert(handle,
+ pkey.getEncoded(),
+ table.CertificateChain(hostAndPort));
+ }
} else if (table.IsDenied(hostAndPort)) {
// previously denied
- nativeSslClientCert(handle, null, null);
+ nativeSslClientCert(handle, 0, null);
} else {
// previously ignored or new
mCallbackProxy.onReceivedClientCertRequest(
@@ -1296,7 +1309,11 @@
private native void nativeSslCertErrorCancel(int handle, int certError);
native void nativeSslClientCert(int handle,
- byte[] pkcs8EncodedPrivateKey,
+ int ctx,
+ byte[][] asn1DerEncodedCertificateChain);
+
+ native void nativeSslClientCert(int handle,
+ byte[] pkey,
byte[][] asn1DerEncodedCertificateChain);
/**
diff --git a/core/java/android/webkit/ClientCertRequestHandler.java b/core/java/android/webkit/ClientCertRequestHandler.java
index f862613..6570a9b8 100644
--- a/core/java/android/webkit/ClientCertRequestHandler.java
+++ b/core/java/android/webkit/ClientCertRequestHandler.java
@@ -21,6 +21,8 @@
import java.security.cert.CertificateEncodingException;
import java.security.cert.X509Certificate;
import org.apache.harmony.xnet.provider.jsse.NativeCrypto;
+import org.apache.harmony.xnet.provider.jsse.OpenSSLDSAPrivateKey;
+import org.apache.harmony.xnet.provider.jsse.OpenSSLRSAPrivateKey;
/**
* ClientCertRequestHandler: class responsible for handling client
@@ -50,20 +52,23 @@
* Proceed with the specified private key and client certificate chain.
*/
public void proceed(PrivateKey privateKey, X509Certificate[] chain) {
- final byte[] privateKeyBytes = privateKey.getEncoded();
- final byte[][] chainBytes;
try {
- chainBytes = NativeCrypto.encodeCertificates(chain);
- mTable.Allow(mHostAndPort, privateKeyBytes, chainBytes);
- post(new Runnable() {
- public void run() {
- mBrowserFrame.nativeSslClientCert(mHandle, privateKeyBytes, chainBytes);
- }
- });
+ byte[][] chainBytes = NativeCrypto.encodeCertificates(chain);
+ mTable.Allow(mHostAndPort, privateKey, chainBytes);
+
+ if (privateKey instanceof OpenSSLRSAPrivateKey) {
+ setSslClientCertFromCtx(((OpenSSLRSAPrivateKey)privateKey).getPkeyContext(),
+ chainBytes);
+ } else if (privateKey instanceof OpenSSLDSAPrivateKey) {
+ setSslClientCertFromCtx(((OpenSSLDSAPrivateKey)privateKey).getPkeyContext(),
+ chainBytes);
+ } else {
+ setSslClientCertFromPKCS8(privateKey.getEncoded(),chainBytes);
+ }
} catch (CertificateEncodingException e) {
post(new Runnable() {
public void run() {
- mBrowserFrame.nativeSslClientCert(mHandle, null, null);
+ mBrowserFrame.nativeSslClientCert(mHandle, 0, null);
return;
}
});
@@ -71,12 +76,34 @@
}
/**
+ * Proceed with the specified private key bytes and client certificate chain.
+ */
+ private void setSslClientCertFromCtx(final int ctx, final byte[][] chainBytes) {
+ post(new Runnable() {
+ public void run() {
+ mBrowserFrame.nativeSslClientCert(mHandle, ctx, chainBytes);
+ }
+ });
+ }
+
+ /**
+ * Proceed with the specified private key context and client certificate chain.
+ */
+ private void setSslClientCertFromPKCS8(final byte[] key, final byte[][] chainBytes) {
+ post(new Runnable() {
+ public void run() {
+ mBrowserFrame.nativeSslClientCert(mHandle, key, chainBytes);
+ }
+ });
+ }
+
+ /**
* Igore the request for now, the user may be prompted again.
*/
public void ignore() {
post(new Runnable() {
public void run() {
- mBrowserFrame.nativeSslClientCert(mHandle, null, null);
+ mBrowserFrame.nativeSslClientCert(mHandle, 0, null);
}
});
}
@@ -88,7 +115,7 @@
mTable.Deny(mHostAndPort);
post(new Runnable() {
public void run() {
- mBrowserFrame.nativeSslClientCert(mHandle, null, null);
+ mBrowserFrame.nativeSslClientCert(mHandle, 0, null);
}
});
}
diff --git a/core/java/android/webkit/SslClientCertLookupTable.java b/core/java/android/webkit/SslClientCertLookupTable.java
index 630debd..c52b7e8 100644
--- a/core/java/android/webkit/SslClientCertLookupTable.java
+++ b/core/java/android/webkit/SslClientCertLookupTable.java
@@ -16,6 +16,7 @@
package android.webkit;
+import java.security.PrivateKey;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
@@ -26,7 +27,7 @@
*/
final class SslClientCertLookupTable {
private static SslClientCertLookupTable sTable;
- private final Map<String, byte[]> privateKeys;
+ private final Map<String, PrivateKey> privateKeys;
private final Map<String, byte[][]> certificateChains;
private final Set<String> denied;
@@ -38,12 +39,12 @@
}
private SslClientCertLookupTable() {
- privateKeys = new HashMap<String, byte[]>();
+ privateKeys = new HashMap<String, PrivateKey>();
certificateChains = new HashMap<String, byte[][]>();
denied = new HashSet<String>();
}
- public void Allow(String host_and_port, byte[] privateKey, byte[][] chain) {
+ public void Allow(String host_and_port, PrivateKey privateKey, byte[][] chain) {
privateKeys.put(host_and_port, privateKey);
certificateChains.put(host_and_port, chain);
denied.remove(host_and_port);
@@ -63,7 +64,7 @@
return denied.contains(host_and_port);
}
- public byte[] PrivateKey(String host_and_port) {
+ public PrivateKey PrivateKey(String host_and_port) {
return privateKeys.get(host_and_port);
}
diff --git a/core/java/android/webkit/WebHistoryItem.java b/core/java/android/webkit/WebHistoryItem.java
index ccf3d6b..788d05c 100644
--- a/core/java/android/webkit/WebHistoryItem.java
+++ b/core/java/android/webkit/WebHistoryItem.java
@@ -32,12 +32,8 @@
private static int sNextId = 0;
// Unique identifier.
private final int mId;
- // The title of this item's document.
- private String mTitle;
- // The base url of this item.
- private String mUrl;
- // The original requested url of this item.
- private String mOriginalUrl;
+ // A point to a native WebHistoryItem instance which contains the actual data
+ private int mNativeBridge;
// The favicon for this item.
private Bitmap mFavicon;
// The pre-flattened data used for saving the state.
@@ -55,10 +51,19 @@
* Basic constructor that assigns a unique id to the item. Called by JNI
* only.
*/
- private WebHistoryItem() {
+ private WebHistoryItem(int nativeBridge) {
synchronized (WebHistoryItem.class) {
mId = sNextId++;
}
+ mNativeBridge = nativeBridge;
+ nativeRef(mNativeBridge);
+ }
+
+ protected void finalize() throws Throwable {
+ if (mNativeBridge != 0) {
+ nativeUnref(mNativeBridge);
+ mNativeBridge = 0;
+ }
}
/**
@@ -66,7 +71,6 @@
* @param data The pre-flattened data coming from restoreState.
*/
/*package*/ WebHistoryItem(byte[] data) {
- mUrl = null; // This will be updated natively
mFlattenedData = data;
synchronized (WebHistoryItem.class) {
mId = sNextId++;
@@ -78,12 +82,14 @@
* @param item The history item to clone.
*/
private WebHistoryItem(WebHistoryItem item) {
- mUrl = item.mUrl;
- mTitle = item.mTitle;
mFlattenedData = item.mFlattenedData;
- mFavicon = item.mFavicon;
mId = item.mId;
-}
+ mFavicon = item.mFavicon;
+ mNativeBridge = item.mNativeBridge;
+ if (mNativeBridge != 0) {
+ nativeRef(mNativeBridge);
+ }
+ }
/**
* Return an identifier for this history item. If an item is a copy of
@@ -106,7 +112,8 @@
* to synchronize this method.
*/
public String getUrl() {
- return mUrl;
+ if (mNativeBridge == 0) return null;
+ return nativeGetUrl(mNativeBridge);
}
/**
@@ -116,7 +123,8 @@
* @return The original url of this history item.
*/
public String getOriginalUrl() {
- return mOriginalUrl;
+ if (mNativeBridge == 0) return null;
+ return nativeGetOriginalUrl(mNativeBridge);
}
/**
@@ -126,7 +134,8 @@
* to synchronize this method.
*/
public String getTitle() {
- return mTitle;
+ if (mNativeBridge == 0) return null;
+ return nativeGetTitle(mNativeBridge);
}
/**
@@ -136,6 +145,9 @@
* to synchronize this method.
*/
public Bitmap getFavicon() {
+ if (mFavicon == null && mNativeBridge != 0) {
+ mFavicon = nativeGetFavicon(mNativeBridge);
+ }
return mFavicon;
}
@@ -156,7 +168,7 @@
}
try {
- URL url = new URL(mOriginalUrl);
+ URL url = new URL(getOriginalUrl());
mTouchIconUrlServerDefault = new URL(url.getProtocol(), url.getHost(), url.getPort(),
"/apple-touch-icon.png").toString();
} catch (MalformedURLException e) {
@@ -214,6 +226,9 @@
* to synchronize this method.
*/
/*package*/ byte[] getFlattenedData() {
+ if (mNativeBridge != 0) {
+ return nativeGetFlattenedData(mNativeBridge);
+ }
return mFlattenedData;
}
@@ -223,7 +238,8 @@
* to synchronize this method.
*/
/*package*/ void inflate(int nativeFrame) {
- inflate(nativeFrame, mFlattenedData);
+ mNativeBridge = inflate(nativeFrame, mFlattenedData);
+ mFlattenedData = null;
}
/**
@@ -235,15 +251,13 @@
/* Natively inflate this item, this method is called in the WebCore thread.
*/
- private native void inflate(int nativeFrame, byte[] data);
+ private native int inflate(int nativeFrame, byte[] data);
+ private native void nativeRef(int nptr);
+ private native void nativeUnref(int nptr);
+ private native String nativeGetTitle(int nptr);
+ private native String nativeGetUrl(int nptr);
+ private native String nativeGetOriginalUrl(int nptr);
+ private native byte[] nativeGetFlattenedData(int nptr);
+ private native Bitmap nativeGetFavicon(int nptr);
- /* Called by jni when the item is updated */
- private void update(String url, String originalUrl, String title,
- Bitmap favicon, byte[] data) {
- mUrl = url;
- mOriginalUrl = originalUrl;
- mTitle = title;
- mFavicon = favicon;
- mFlattenedData = data;
- }
}
diff --git a/core/java/android/webkit/WebViewClassic.java b/core/java/android/webkit/WebViewClassic.java
index a9b32b8..057c3d1 100644
--- a/core/java/android/webkit/WebViewClassic.java
+++ b/core/java/android/webkit/WebViewClassic.java
@@ -102,6 +102,7 @@
import android.webkit.WebViewCore.DrawData;
import android.webkit.WebViewCore.EventHub;
import android.webkit.WebViewCore.TextFieldInitData;
+import android.webkit.WebViewCore.TextSelectionData;
import android.webkit.WebViewCore.TouchHighlightData;
import android.webkit.WebViewCore.WebKitHitTest;
import android.widget.AbsoluteLayout;
@@ -148,24 +149,6 @@
@SuppressWarnings("deprecation")
public final class WebViewClassic implements WebViewProvider, WebViewProvider.ScrollDelegate,
WebViewProvider.ViewDelegate {
- private class InnerGlobalLayoutListener implements ViewTreeObserver.OnGlobalLayoutListener {
- @Override
- public void onGlobalLayout() {
- if (mWebView.isShown()) {
- setGLRectViewport();
- }
- }
- }
-
- private class InnerScrollChangedListener implements ViewTreeObserver.OnScrollChangedListener {
- @Override
- public void onScrollChanged() {
- if (mWebView.isShown()) {
- setGLRectViewport();
- }
- }
- }
-
/**
* InputConnection used for ContentEditable. This captures changes
* to the text and sends them either as key strokes or text changes.
@@ -616,12 +599,6 @@
}
}
- // The listener to capture global layout change event.
- private InnerGlobalLayoutListener mGlobalLayoutListener = null;
-
- // The listener to capture scroll event.
- private InnerScrollChangedListener mScrollChangedListener = null;
-
// if AUTO_REDRAW_HACK is true, then the CALL key will toggle redrawing
// the screen all-the-time. Good for profiling our drawing code
static private final boolean AUTO_REDRAW_HACK = false;
@@ -632,6 +609,10 @@
// The presumed scroll rate for the first scroll of edit text
static private final long TEXT_SCROLL_FIRST_SCROLL_MS = 16;
+ // Buffer pixels of the caret rectangle when moving edit text into view
+ // after resize.
+ static private final int EDIT_RECT_BUFFER = 10;
+
// true means redraw the screen all-the-time. Only with AUTO_REDRAW_HACK
private boolean mAutoRedraw;
@@ -643,10 +624,10 @@
private ZoomManager mZoomManager;
- private final Rect mGLRectViewport = new Rect();
- private final Rect mViewRectViewport = new Rect();
+ private final Rect mInvScreenRect = new Rect();
+ private final Rect mScreenRect = new Rect();
private final RectF mVisibleContentRect = new RectF();
- private boolean mGLViewportEmpty = false;
+ private boolean mIsWebViewVisible = true;
WebViewInputConnection mInputConnection = null;
private int mFieldPointer;
private PastePopupWindow mPasteWindow;
@@ -934,7 +915,7 @@
private Paint mTouchCrossHairColor;
private int mTouchHighlightX;
private int mTouchHighlightY;
- private long mTouchHighlightRequested;
+ private boolean mShowTapHighlight;
// Basically this proxy is used to tell the Video to update layer tree at
// SetBaseLayer time and to pause when WebView paused.
@@ -984,7 +965,6 @@
static final int REQUEST_KEYBOARD = 118;
static final int SHOW_FULLSCREEN = 120;
static final int HIDE_FULLSCREEN = 121;
- static final int REPLACE_BASE_CONTENT = 123;
static final int UPDATE_MATCH_COUNT = 126;
static final int CENTER_FIT_RECT = 127;
static final int SET_SCROLLBAR_MODES = 129;
@@ -1316,6 +1296,12 @@
case WebViewInputDispatcher.EVENT_TYPE_TOUCH:
onHandleUiTouchEvent(event);
break;
+ case WebViewInputDispatcher.EVENT_TYPE_CLICK:
+ if (mFocusedNode != null && mFocusedNode.mIntentUrl != null) {
+ mWebView.playSoundEffect(SoundEffectConstants.CLICK);
+ overrideLoading(mFocusedNode.mIntentUrl);
+ }
+ break;
}
}
@@ -2968,7 +2954,10 @@
// updated when we get out of that mode.
if (!mDrawHistory) {
// repin our scroll, taking into account the new content size
- updateScrollCoordinates(pinLocX(getScrollX()), pinLocY(getScrollY()));
+ if (updateScrollCoordinates(pinLocX(getScrollX()),
+ pinLocY(getScrollY()))) {
+ invalidate();
+ }
if (!mScroller.isFinished()) {
// We are in the middle of a scroll. Repin the final scroll
// position.
@@ -3039,21 +3028,14 @@
r.bottom = viewToContentY(r.bottom);
}
- private Rect mContentVisibleRect = new Rect();
+ private final Rect mTempContentVisibleRect = new Rect();
// Sets r to be our visible rectangle in content coordinates. We use this
// method on the native side to compute the position of the fixed layers.
// Uses floating coordinates (necessary to correctly place elements when
// the scale factor is not 1)
private void calcOurContentVisibleRectF(RectF r) {
- calcOurVisibleRect(mContentVisibleRect);
- r.left = viewToContentXf(mContentVisibleRect.left) / mWebView.getScaleX();
- // viewToContentY will remove the total height of the title bar. Add
- // the visible height back in to account for the fact that if the title
- // bar is partially visible, the part of the visible rect which is
- // displaying our content is displaced by that amount.
- r.top = viewToContentYf(mContentVisibleRect.top + getVisibleTitleHeightImpl()) / mWebView.getScaleY();
- r.right = viewToContentXf(mContentVisibleRect.right) / mWebView.getScaleX();
- r.bottom = viewToContentYf(mContentVisibleRect.bottom) / mWebView.getScaleY();
+ calcOurVisibleRect(mTempContentVisibleRect);
+ viewToContentVisibleRect(r, mTempContentVisibleRect);
}
static class ViewSizeData {
@@ -3316,7 +3298,8 @@
}
public int getPageBackgroundColor() {
- return nativeGetBackgroundColor();
+ if (mNativeClass == 0) return Color.WHITE;
+ return nativeGetBackgroundColor(mNativeClass);
}
/**
@@ -3735,7 +3718,7 @@
private void scrollLayerTo(int x, int y) {
int dx = mScrollingLayerRect.left - x;
int dy = mScrollingLayerRect.top - y;
- if (dx == 0 && dy == 0) {
+ if ((dx == 0 && dy == 0) || mNativeClass == 0) {
return;
}
if (mSelectingText) {
@@ -3756,7 +3739,7 @@
mEditTextContentBounds.offset(dx, dy);
mAutoCompletePopup.resetRect();
}
- nativeScrollLayer(mCurrentScrollingLayerId, x, y);
+ nativeScrollLayer(mNativeClass, mCurrentScrollingLayerId, x, y);
mScrollingLayerRect.left = x;
mScrollingLayerRect.top = y;
mWebViewCore.sendMessage(WebViewCore.EventHub.SCROLL_LAYER, mCurrentScrollingLayerId,
@@ -4207,17 +4190,17 @@
// decide which adornments to draw
int extras = DRAW_EXTRAS_NONE;
- if (!mFindIsUp && mSelectingText) {
+ if (!mFindIsUp && mShowTextSelectionExtra) {
extras = DRAW_EXTRAS_SELECTION;
}
calcOurContentVisibleRectF(mVisibleContentRect);
if (canvas.isHardwareAccelerated()) {
- Rect glRectViewport = mGLViewportEmpty ? null : mGLRectViewport;
- Rect viewRectViewport = mGLViewportEmpty ? null : mViewRectViewport;
+ Rect invScreenRect = mIsWebViewVisible ? mInvScreenRect : null;
+ Rect screenRect = mIsWebViewVisible ? mScreenRect : null;
- int functor = nativeCreateDrawGLFunction(mNativeClass, glRectViewport,
- viewRectViewport, mVisibleContentRect, getScale(), extras);
+ int functor = nativeCreateDrawGLFunction(mNativeClass, invScreenRect,
+ screenRect, mVisibleContentRect, getScale(), extras);
((HardwareCanvas) canvas).callDrawGLFunction(functor);
if (mHardwareAccelSkia != getSettings().getHardwareAccelSkiaEnabled()) {
mHardwareAccelSkia = getSettings().getHardwareAccelSkiaEnabled();
@@ -4232,14 +4215,8 @@
df = mScrollFilter;
}
canvas.setDrawFilter(df);
- // XXX: Revisit splitting content. Right now it causes a
- // synchronization problem with layers.
- int content = nativeDraw(canvas, mVisibleContentRect, mBackgroundColor,
- extras, false);
+ nativeDraw(canvas, mVisibleContentRect, mBackgroundColor, extras);
canvas.setDrawFilter(null);
- if (!mBlockWebkitViewMessages && content != 0) {
- mWebViewCore.sendMessage(EventHub.SPLIT_PICTURE_SET, content, 0);
- }
}
canvas.restoreToCount(saveCount);
@@ -4362,7 +4339,9 @@
}
private void removeTouchHighlight() {
- mWebViewCore.removeMessages(EventHub.HIT_TEST);
+ if (mWebViewCore != null) {
+ mWebViewCore.removeMessages(EventHub.HIT_TEST);
+ }
mPrivateHandler.removeMessages(HIT_TEST_RESULT);
setTouchHighlightRects(null);
}
@@ -4477,7 +4456,7 @@
if (mNativeClass == 0) {
return 0;
}
- return nativeGetBaseLayer();
+ return nativeGetBaseLayer(mNativeClass);
}
private void onZoomAnimationStart() {
@@ -4535,11 +4514,13 @@
private void startSelectingText() {
mSelectingText = true;
+ mShowTextSelectionExtra = true;
mHandleAlphaAnimator.setIntValues(255);
mHandleAlphaAnimator.start();
}
private void endSelectingText() {
mSelectingText = false;
+ mShowTextSelectionExtra = false;
mHandleAlphaAnimator.setIntValues(0);
mHandleAlphaAnimator.start();
}
@@ -4687,8 +4668,7 @@
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
if (mInputConnection == null) {
mInputConnection = new WebViewInputConnection();
- mAutoCompletePopup = new AutoCompletePopup(mContext, this,
- mInputConnection);
+ mAutoCompletePopup = new AutoCompletePopup(this, mInputConnection);
}
mInputConnection.setupEditorInfo(outAttrs);
return mInputConnection;
@@ -5312,9 +5292,6 @@
mSelectCallback.finish();
mSelectCallback = null;
}
- if (!mIsCaretSelection) {
- updateWebkitSelection();
- }
invalidate(); // redraw without selection
mAutoScrollX = 0;
mAutoScrollY = 0;
@@ -5400,15 +5377,6 @@
@Override
public void onAttachedToWindow() {
if (mWebView.hasWindowFocus()) setActive(true);
- final ViewTreeObserver treeObserver = mWebView.getViewTreeObserver();
- if (mGlobalLayoutListener == null) {
- mGlobalLayoutListener = new InnerGlobalLayoutListener();
- treeObserver.addOnGlobalLayoutListener(mGlobalLayoutListener);
- }
- if (mScrollChangedListener == null) {
- mScrollChangedListener = new InnerScrollChangedListener();
- treeObserver.addOnScrollChangedListener(mScrollChangedListener);
- }
addAccessibilityApisToJavaScript();
@@ -5421,16 +5389,6 @@
mZoomManager.dismissZoomPicker();
if (mWebView.hasWindowFocus()) setActive(false);
- final ViewTreeObserver treeObserver = mWebView.getViewTreeObserver();
- if (mGlobalLayoutListener != null) {
- treeObserver.removeGlobalOnLayoutListener(mGlobalLayoutListener);
- mGlobalLayoutListener = null;
- }
- if (mScrollChangedListener != null) {
- treeObserver.removeOnScrollChangedListener(mScrollChangedListener);
- mScrollChangedListener = null;
- }
-
removeAccessibilityApisFromJavaScript();
updateHwAccelerated();
@@ -5540,29 +5498,53 @@
}
}
- void setGLRectViewport() {
+ // updateRectsForGL() happens almost every draw call, in order to avoid creating
+ // any object in this code path, we move the local variable out to be a private
+ // final member, and we marked them as mTemp*.
+ private final Point mTempVisibleRectOffset = new Point();
+ private final Rect mTempVisibleRect = new Rect();
+
+ void updateRectsForGL() {
// Use the getGlobalVisibleRect() to get the intersection among the parents
// visible == false means we're clipped - send a null rect down to indicate that
// we should not draw
- boolean visible = mWebView.getGlobalVisibleRect(mGLRectViewport);
+ boolean visible = mWebView.getGlobalVisibleRect(mTempVisibleRect, mTempVisibleRectOffset);
+ mInvScreenRect.set(mTempVisibleRect);
if (visible) {
// Then need to invert the Y axis, just for GL
View rootView = mWebView.getRootView();
int rootViewHeight = rootView.getHeight();
- mViewRectViewport.set(mGLRectViewport);
- int savedWebViewBottom = mGLRectViewport.bottom;
- mGLRectViewport.bottom = rootViewHeight - mGLRectViewport.top - getVisibleTitleHeightImpl();
- mGLRectViewport.top = rootViewHeight - savedWebViewBottom;
- mGLViewportEmpty = false;
+ mScreenRect.set(mInvScreenRect);
+ int savedWebViewBottom = mInvScreenRect.bottom;
+ mInvScreenRect.bottom = rootViewHeight - mInvScreenRect.top - getVisibleTitleHeightImpl();
+ mInvScreenRect.top = rootViewHeight - savedWebViewBottom;
+ mIsWebViewVisible = true;
} else {
- mGLViewportEmpty = true;
+ mIsWebViewVisible = false;
}
- calcOurContentVisibleRectF(mVisibleContentRect);
- nativeUpdateDrawGLFunction(mNativeClass, mGLViewportEmpty ? null : mGLRectViewport,
- mGLViewportEmpty ? null : mViewRectViewport,
+
+ mTempVisibleRect.offset(-mTempVisibleRectOffset.x, -mTempVisibleRectOffset.y);
+ viewToContentVisibleRect(mVisibleContentRect, mTempVisibleRect);
+
+ nativeUpdateDrawGLFunction(mNativeClass, mIsWebViewVisible ? mInvScreenRect : null,
+ mIsWebViewVisible ? mScreenRect : null,
mVisibleContentRect, getScale());
}
+ // Input : viewRect, rect in view/screen coordinate.
+ // Output: contentRect, rect in content/document coordinate.
+ private void viewToContentVisibleRect(RectF contentRect, Rect viewRect) {
+ contentRect.left = viewToContentXf(viewRect.left) / mWebView.getScaleX();
+ // viewToContentY will remove the total height of the title bar. Add
+ // the visible height back in to account for the fact that if the title
+ // bar is partially visible, the part of the visible rect which is
+ // displaying our content is displaced by that amount.
+ contentRect.top = viewToContentYf(viewRect.top + getVisibleTitleHeightImpl())
+ / mWebView.getScaleY();
+ contentRect.right = viewToContentXf(viewRect.right) / mWebView.getScaleX();
+ contentRect.bottom = viewToContentYf(viewRect.bottom) / mWebView.getScaleY();
+ }
+
@Override
public boolean setFrame(int left, int top, int right, int bottom) {
boolean changed = mWebViewPrivate.super_setFrame(left, top, right, bottom);
@@ -5575,7 +5557,7 @@
// notify the WebKit about the new dimensions.
sendViewSizeZoom(false);
}
- setGLRectViewport();
+ updateRectsForGL();
return changed;
}
@@ -5597,9 +5579,76 @@
// However, do not update the base layer as that hasn't changed
setNewPicture(mLoadedPicture, false);
}
+ if (mIsEditingText) {
+ scrollEditIntoView();
+ }
relocateAutoCompletePopup();
}
+ /**
+ * Scrolls the edit field into view using the minimum scrolling necessary.
+ * If the edit field is too large to fit in the visible window, the caret
+ * dimensions are used so that at least the caret is visible.
+ * A buffer of EDIT_RECT_BUFFER in view pixels is used to offset the
+ * edit rectangle to ensure a margin with the edge of the screen.
+ */
+ private void scrollEditIntoView() {
+ Rect visibleRect = new Rect(viewToContentX(getScrollX()),
+ viewToContentY(getScrollY()),
+ viewToContentX(getScrollX() + getWidth()),
+ viewToContentY(getScrollY() + getViewHeightWithTitle()));
+ if (visibleRect.contains(mEditTextContentBounds)) {
+ return; // no need to scroll
+ }
+ syncSelectionCursors();
+ final int buffer = Math.max(1, viewToContentDimension(EDIT_RECT_BUFFER));
+ Rect showRect = new Rect(
+ Math.max(0, mEditTextContentBounds.left - buffer),
+ Math.max(0, mEditTextContentBounds.top - buffer),
+ mEditTextContentBounds.right + buffer,
+ mEditTextContentBounds.bottom + buffer);
+ Point caretTop = calculateCaretTop();
+ if (visibleRect.width() < mEditTextContentBounds.width()) {
+ // The whole edit won't fit in the width, so use the caret rect
+ if (mSelectCursorBase.x < caretTop.x) {
+ showRect.left = Math.max(0, mSelectCursorBase.x - buffer);
+ showRect.right = caretTop.x + buffer;
+ } else {
+ showRect.left = Math.max(0, caretTop.x - buffer);
+ showRect.right = mSelectCursorBase.x + buffer;
+ }
+ }
+ if (visibleRect.height() < mEditTextContentBounds.height()) {
+ // The whole edit won't fit in the height, so use the caret rect
+ if (mSelectCursorBase.y > caretTop.y) {
+ showRect.top = Math.max(0, caretTop.y - buffer);
+ showRect.bottom = mSelectCursorBase.y + buffer;
+ } else {
+ showRect.top = Math.max(0, mSelectCursorBase.y - buffer);
+ showRect.bottom = caretTop.y + buffer;
+ }
+ }
+
+ if (visibleRect.contains(showRect)) {
+ return; // no need to scroll
+ }
+
+ int scrollX = visibleRect.left;
+ if (visibleRect.left > showRect.left) {
+ scrollX = showRect.left;
+ } else if (visibleRect.right < showRect.right) {
+ scrollX = Math.max(0, showRect.right - visibleRect.width());
+ }
+ int scrollY = visibleRect.top;
+ if (visibleRect.top > showRect.top) {
+ scrollY = showRect.top;
+ } else if (visibleRect.bottom < showRect.bottom) {
+ scrollY = Math.max(0, showRect.bottom - visibleRect.height());
+ }
+
+ contentScrollTo(scrollX, scrollY, false);
+ }
+
@Override
public void onScrollChanged(int l, int t, int oldl, int oldt) {
if (!mInOverScrollMode) {
@@ -5699,10 +5748,13 @@
// See if there is a layer at x, y and switch to TOUCH_DRAG_LAYER_MODE if a
// layer is found.
private void startScrollingLayer(float x, float y) {
+ if (mNativeClass == 0)
+ return;
+
int contentX = viewToContentX((int) x + getScrollX());
int contentY = viewToContentY((int) y + getScrollY());
- mCurrentScrollingLayerId = nativeScrollableLayer(contentX, contentY,
- mScrollingLayerRect, mScrollingLayerBounds);
+ mCurrentScrollingLayerId = nativeScrollableLayer(mNativeClass,
+ contentX, contentY, mScrollingLayerRect, mScrollingLayerBounds);
if (mCurrentScrollingLayerId != 0) {
mTouchMode = TOUCH_DRAG_LAYER_MODE;
}
@@ -5743,6 +5795,7 @@
if (mInputDispatcher.postPointerEvent(ev, getScrollX(),
getScrollY() - getTitleHeight(), mZoomManager.getInvScale())) {
+ mInputDispatcher.dispatchUiEvents();
return true;
} else {
Log.w(LOGTAG, "mInputDispatcher rejected the event!");
@@ -5808,12 +5861,15 @@
data.mX = contentX;
data.mY = contentY;
data.mNativeLayerRect = new Rect();
- data.mNativeLayer = nativeScrollableLayer(
- contentX, contentY, data.mNativeLayerRect, null);
+ if (mNativeClass != 0) {
+ data.mNativeLayer = nativeScrollableLayer(mNativeClass,
+ contentX, contentY, data.mNativeLayerRect, null);
+ } else {
+ data.mNativeLayer = 0;
+ }
data.mSlop = viewToContentDimension(mNavSlop);
removeTouchHighlight();
- if (!mBlockWebkitViewMessages) {
- mTouchHighlightRequested = SystemClock.uptimeMillis();
+ if (!mBlockWebkitViewMessages && mWebViewCore != null) {
mWebViewCore.sendMessageAtFrontOfQueue(
EventHub.HIT_TEST, data);
}
@@ -6008,10 +6064,8 @@
}
if (deltaX * deltaX + deltaY * deltaY > mTouchSlopSquare) {
mHeldMotionless = MOTIONLESS_FALSE;
- nativeSetIsScrolling(true);
} else {
mHeldMotionless = MOTIONLESS_TRUE;
- nativeSetIsScrolling(false);
keepScrollBarsVisible = true;
}
@@ -6381,10 +6435,14 @@
mSelectDraggingTextQuad.p4.x, mSelectDraggingTextQuad.p3.x);
float newY = scaleCoordinate(scale,
mSelectDraggingTextQuad.p4.y, mSelectDraggingTextQuad.p3.y);
- int x = Math.max(mEditTextContentBounds.left,
- Math.min(mEditTextContentBounds.right, Math.round(newX)));
- int y = Math.max(mEditTextContentBounds.top,
- Math.min(mEditTextContentBounds.bottom, Math.round(newY)));
+ int x = Math.round(newX);
+ int y = Math.round(newY);
+ if (mIsEditingText) {
+ x = Math.max(mEditTextContentBounds.left,
+ Math.min(mEditTextContentBounds.right, x));
+ y = Math.max(mEditTextContentBounds.top,
+ Math.min(mEditTextContentBounds.bottom, y));
+ }
mSelectDraggingCursor.set(x, y);
}
@@ -6429,6 +6487,7 @@
private int mTrackballXMove = 0;
private int mTrackballYMove = 0;
private boolean mSelectingText = false;
+ private boolean mShowTextSelectionExtra = false;
private boolean mSelectionStarted = false;
private static final int TRACKBALL_KEY_TIMEOUT = 1000;
private static final int TRACKBALL_TIMEOUT = 200;
@@ -7245,10 +7304,6 @@
mZoomManager.updateDefaultZoomDensity(density);
break;
}
- case REPLACE_BASE_CONTENT: {
- nativeReplaceBaseContent(msg.arg1);
- break;
- }
case NEW_PICTURE_MSG_ID: {
// called for new content
final WebViewCore.DrawData draw = (WebViewCore.DrawData) msg.obj;
@@ -7583,6 +7638,8 @@
case UPDATE_CONTENT_BOUNDS:
mEditTextContentBounds.set((Rect) msg.obj);
+ nativeMapLayerRect(mNativeClass, mEditTextLayerId,
+ mEditTextContentBounds);
break;
case SCROLL_EDIT_TEXT:
@@ -7609,6 +7666,34 @@
public Context getContext() {
return WebViewClassic.this.getContext();
}
+
+ @Override
+ public boolean shouldInterceptTouchEvent(MotionEvent event) {
+ if (!mSelectingText) {
+ return false;
+ }
+ ensureSelectionHandles();
+ int y = Math.round(event.getY() - getTitleHeight() + getScrollY());
+ int x = Math.round(event.getX() + getScrollX());
+ boolean isPressingHandle;
+ if (mIsCaretSelection) {
+ isPressingHandle = mSelectHandleCenter.getBounds()
+ .contains(x, y);
+ } else {
+ isPressingHandle =
+ mSelectHandleLeft.getBounds().contains(x, y)
+ || mSelectHandleRight.getBounds().contains(x, y);
+ }
+ return isPressingHandle;
+ }
+
+ @Override
+ public void showTapHighlight(boolean show) {
+ if (mShowTapHighlight != show) {
+ mShowTapHighlight = show;
+ invalidate();
+ }
+ }
}
private void setHitTestTypeFromUrl(String url) {
@@ -7671,16 +7756,7 @@
if (mFocusedNode.mHasFocus && mFocusedNode.mEditable) {
return false;
}
- long delay = SystemClock.uptimeMillis() - mTouchHighlightRequested;
- if (delay < ViewConfiguration.getTapTimeout()) {
- Rect r = mTouchHighlightRegion.getBounds();
- mWebView.postInvalidateDelayed(delay, r.left, r.top, r.right, r.bottom);
- return false;
- }
- if (mInputDispatcher == null) {
- return false;
- }
- return mInputDispatcher.shouldShowTapHighlight();
+ return mShowTapHighlight;
}
@@ -7933,6 +8009,13 @@
}
nativeSetTextSelection(mNativeClass, data.mSelectTextPtr);
+ if (data.mSelectionReason == TextSelectionData.REASON_ACCESSIBILITY_INJECTOR) {
+ selectionDone();
+ mShowTextSelectionExtra = true;
+ invalidate();
+ return;
+ }
+
if (data.mSelectTextPtr != 0 &&
(data.mStart != data.mEnd ||
(mFieldPointer == nodePointer && mFieldPointer != 0))) {
@@ -8200,6 +8283,12 @@
@Override
public void run() {
+ if (mWebViewCore == null
+ || getWebView().getWindowToken() == null
+ || getWebView().getViewRootImpl() == null) {
+ // We've been detached and/or destroyed since this was posted
+ return;
+ }
final ListView listView = (ListView) LayoutInflater.from(mContext)
.inflate(com.android.internal.R.layout.select_dialog, null);
final MyArrayListAdapter adapter = new MyArrayListAdapter();
@@ -8423,18 +8512,6 @@
}
/**
- * Draw the HTML page into the specified canvas. This call ignores any
- * view-specific zoom, scroll offset, or other changes. It does not draw
- * any view-specific chrome, such as progress or URL bars.
- *
- * only needs to be accessible to Browser and testing
- */
- public void drawPage(Canvas canvas) {
- calcOurContentVisibleRectF(mVisibleContentRect);
- nativeDraw(canvas, mVisibleContentRect, 0, 0, false);
- }
-
- /**
* Enable the communication b/t the webView and VideoViewProxy
*
* only used by the Browser
@@ -8567,28 +8644,21 @@
private native void nativeDebugDump();
private native void nativeDestroy();
- /**
- * Draw the picture set with a background color and extra. If
- * "splitIfNeeded" is true and the return value is not 0, the return value
- * MUST be passed to WebViewCore with SPLIT_PICTURE_SET message so that the
- * native allocation can be freed.
- */
- private native int nativeDraw(Canvas canvas, RectF visibleRect,
- int color, int extra, boolean splitIfNeeded);
+ private native void nativeDraw(Canvas canvas, RectF visibleRect,
+ int color, int extra);
private native void nativeDumpDisplayTree(String urlOrNull);
private native boolean nativeEvaluateLayersAnimations(int nativeInstance);
- private native int nativeCreateDrawGLFunction(int nativeInstance, Rect rect,
- Rect viewRect, RectF visibleRect, float scale, int extras);
+ private native int nativeCreateDrawGLFunction(int nativeInstance, Rect invScreenRect,
+ Rect screenRect, RectF visibleContentRect, float scale, int extras);
private native int nativeGetDrawGLFunction(int nativeInstance);
- private native void nativeUpdateDrawGLFunction(int nativeInstance, Rect rect, Rect viewRect,
- RectF visibleRect, float scale);
+ private native void nativeUpdateDrawGLFunction(int nativeInstance, Rect invScreenRect,
+ Rect screenRect, RectF visibleContentRect, float scale);
private native String nativeGetSelection();
private native Rect nativeLayerBounds(int layer);
private native void nativeSetHeightCanMeasure(boolean measure);
private native boolean nativeSetBaseLayer(int nativeInstance,
int layer, boolean showVisualIndicator, boolean isPictureAfterFirstLayout);
- private native int nativeGetBaseLayer();
- private native void nativeReplaceBaseContent(int content);
+ private native int nativeGetBaseLayer(int nativeInstance);
private native void nativeCopyBaseContentToPicture(Picture pict);
private native boolean nativeHasContent();
private native void nativeStopGL();
@@ -8604,18 +8674,19 @@
private native void nativeUseHardwareAccelSkia(boolean enabled);
// Returns a pointer to the scrollable LayerAndroid at the given point.
- private native int nativeScrollableLayer(int x, int y, Rect scrollRect,
+ private native int nativeScrollableLayer(int nativeInstance, int x, int y, Rect scrollRect,
Rect scrollBounds);
/**
* Scroll the specified layer.
+ * @param nativeInstance Native WebView instance
* @param layer Id of the layer to scroll, as determined by nativeScrollableLayer.
* @param newX Destination x position to which to scroll.
* @param newY Destination y position to which to scroll.
* @return True if the layer is successfully scrolled.
*/
- private native boolean nativeScrollLayer(int layer, int newX, int newY);
+ private native boolean nativeScrollLayer(int nativeInstance, int layer, int newX, int newY);
private native void nativeSetIsScrolling(boolean isScrolling);
- private native int nativeGetBackgroundColor();
+ private native int nativeGetBackgroundColor(int nativeInstance);
native boolean nativeSetProperty(String key, String value);
native String nativeGetProperty(String key);
/**
diff --git a/core/java/android/webkit/WebViewCore.java b/core/java/android/webkit/WebViewCore.java
index 12c9d69..661bbf8 100644
--- a/core/java/android/webkit/WebViewCore.java
+++ b/core/java/android/webkit/WebViewCore.java
@@ -143,6 +143,7 @@
private int mHighUsageDeltaMb;
private int mChromeCanFocusDirection;
+ private int mTextSelectionChangeReason = TextSelectionData.REASON_UNKNOWN;
// The thread name used to identify the WebCore thread and for use in
// debugging other classes that require operation within the WebCore thread.
@@ -610,12 +611,6 @@
private native boolean nativeFocusBoundsChanged(int nativeClass);
- /**
- * Splits slow parts of the picture set. Called from the webkit thread after
- * WebView.nativeDraw() returns content to be split.
- */
- private native void nativeSplitContent(int nativeClass, int content);
-
private native boolean nativeKey(int nativeClass, int keyCode,
int unichar, int repeatCount, boolean isShift, boolean isAlt,
boolean isSym, boolean isDown);
@@ -867,6 +862,8 @@
}
static class TextSelectionData {
+ static final int REASON_UNKNOWN = 0;
+ static final int REASON_ACCESSIBILITY_INJECTOR = 1;
public TextSelectionData(int start, int end, int selectTextPtr) {
mStart = start;
mEnd = end;
@@ -875,6 +872,7 @@
int mStart;
int mEnd;
int mSelectTextPtr;
+ int mSelectionReason = TextSelectionData.REASON_UNKNOWN;
}
static class TouchUpData {
@@ -1018,7 +1016,7 @@
"WEBKIT_DRAW", // = 130;
"131", // = 131;
"POST_URL", // = 132;
- "SPLIT_PICTURE_SET", // = 133;
+ "", // = 133;
"CLEAR_CONTENT", // = 134;
"", // = 135;
"", // = 136;
@@ -1094,7 +1092,6 @@
static final int WEBKIT_DRAW = 130;
static final int POST_URL = 132;
- static final int SPLIT_PICTURE_SET = 133;
static final int CLEAR_CONTENT = 134;
// UI nav messages
@@ -1551,12 +1548,16 @@
break;
case MODIFY_SELECTION:
+ mTextSelectionChangeReason
+ = TextSelectionData.REASON_ACCESSIBILITY_INJECTOR;
String modifiedSelectionString =
nativeModifySelection(mNativeClass, msg.arg1,
msg.arg2);
mWebViewClassic.mPrivateHandler.obtainMessage(
WebViewClassic.SELECTION_STRING_CHANGED,
modifiedSelectionString).sendToTarget();
+ mTextSelectionChangeReason
+ = TextSelectionData.REASON_UNKNOWN;
break;
case LISTBOX_CHOICES:
@@ -1611,13 +1612,6 @@
data.mOrigin, data.mAllow, data.mRemember);
break;
- case SPLIT_PICTURE_SET:
- nativeSplitContent(mNativeClass, msg.arg1);
- mWebViewClassic.mPrivateHandler.obtainMessage(
- WebViewClassic.REPLACE_BASE_CONTENT, msg.arg1, 0);
- mSplitPictureIsScheduled = false;
- break;
-
case CLEAR_CONTENT:
// Clear the view so that onDraw() will draw nothing
// but white background
@@ -1879,7 +1873,6 @@
private synchronized void removeMessages() {
// reset mDrawIsScheduled flag as WEBKIT_DRAW may be removed
mDrawIsScheduled = false;
- mSplitPictureIsScheduled = false;
if (mMessages != null) {
mMessages.clear();
} else {
@@ -2141,20 +2134,9 @@
return usedQuota;
}
- // called from UI thread
- void splitContent(int content) {
- if (!mSplitPictureIsScheduled) {
- mSplitPictureIsScheduled = true;
- sendMessage(EventHub.SPLIT_PICTURE_SET, content, 0);
- }
- }
-
// Used to avoid posting more than one draw message.
private boolean mDrawIsScheduled;
- // Used to avoid posting more than one split picture message.
- private boolean mSplitPictureIsScheduled;
-
// Used to suspend drawing.
private boolean mDrawIsPaused;
@@ -2789,13 +2771,19 @@
}
}
+ private TextSelectionData createTextSelection(int start, int end, int selPtr) {
+ TextSelectionData data = new TextSelectionData(start, end, selPtr);
+ data.mSelectionReason = mTextSelectionChangeReason;
+ return data;
+ }
+
// called by JNI
private void updateTextSelection(int pointer, int start, int end,
int textGeneration, int selectionPtr) {
if (mWebViewClassic != null) {
Message.obtain(mWebViewClassic.mPrivateHandler,
WebViewClassic.UPDATE_TEXT_SELECTION_MSG_ID, pointer, textGeneration,
- new TextSelectionData(start, end, selectionPtr)).sendToTarget();
+ createTextSelection(start, end, selectionPtr)).sendToTarget();
}
}
@@ -2829,7 +2817,7 @@
Message.obtain(mWebViewClassic.mPrivateHandler,
WebViewClassic.UPDATE_TEXT_SELECTION_MSG_ID,
initData.mFieldPointer, 0,
- new TextSelectionData(start, end, selectionPtr))
+ createTextSelection(start, end, selectionPtr))
.sendToTarget();
}
diff --git a/core/java/android/webkit/WebViewInputDispatcher.java b/core/java/android/webkit/WebViewInputDispatcher.java
index b612a3b..9541435 100644
--- a/core/java/android/webkit/WebViewInputDispatcher.java
+++ b/core/java/android/webkit/WebViewInputDispatcher.java
@@ -22,7 +22,6 @@
import android.os.Message;
import android.os.SystemClock;
import android.util.Log;
-import android.view.InputDevice;
import android.view.MotionEvent;
import android.view.ViewConfiguration;
@@ -100,6 +99,8 @@
private boolean mPostDoNotSendTouchEventsToWebKitUntilNextGesture;
private boolean mPostLongPressScheduled;
private boolean mPostClickScheduled;
+ private boolean mPostShowTapHighlightScheduled;
+ private boolean mPostHideTapHighlightScheduled;
private int mPostLastWebKitXOffset;
private int mPostLastWebKitYOffset;
private float mPostLastWebKitScale;
@@ -134,6 +135,7 @@
private static final int LONG_PRESS_TIMEOUT =
ViewConfiguration.getLongPressTimeout() + TAP_TIMEOUT;
private static final int DOUBLE_TAP_TIMEOUT = ViewConfiguration.getDoubleTapTimeout();
+ private static final int PRESSED_STATE_DURATION = ViewConfiguration.getPressedStateDuration();
/**
* Event type: Indicates a touch event type.
@@ -311,14 +313,17 @@
}
unscheduleLongPressLocked();
unscheduleClickLocked();
+ hideTapCandidateLocked();
return false;
}
- if (mPostSendTouchEventsToWebKit
- && mPostDoNotSendTouchEventsToWebKitUntilNextGesture
- && action == MotionEvent.ACTION_DOWN) {
- // Recover from a previous web kit timeout.
- mPostDoNotSendTouchEventsToWebKitUntilNextGesture = false;
+ if (action == MotionEvent.ACTION_DOWN && mPostSendTouchEventsToWebKit) {
+ if (mUiCallbacks.shouldInterceptTouchEvent(eventToEnqueue)) {
+ mPostDoNotSendTouchEventsToWebKitUntilNextGesture = true;
+ } else if (mPostDoNotSendTouchEventsToWebKitUntilNextGesture) {
+ // Recover from a previous web kit timeout.
+ mPostDoNotSendTouchEventsToWebKitUntilNextGesture = false;
+ }
}
}
@@ -348,12 +353,6 @@
}
}
- public boolean shouldShowTapHighlight() {
- synchronized (mLock) {
- return mPostLongPressScheduled || mPostClickScheduled;
- }
- }
-
private void postLongPress() {
synchronized (mLock) {
if (!mPostLongPressScheduled) {
@@ -384,6 +383,64 @@
}
}
+ private void hideTapCandidateLocked() {
+ unscheduleHideTapHighlightLocked();
+ unscheduleShowTapHighlightLocked();
+ mUiCallbacks.showTapHighlight(false);
+ }
+
+ private void showTapCandidateLocked() {
+ unscheduleHideTapHighlightLocked();
+ unscheduleShowTapHighlightLocked();
+ mUiCallbacks.showTapHighlight(true);
+ scheduleHideTapHighlightLocked();
+ }
+
+ private void scheduleShowTapHighlightLocked() {
+ unscheduleShowTapHighlightLocked();
+ mPostShowTapHighlightScheduled = true;
+ mUiHandler.sendEmptyMessageDelayed(UiHandler.MSG_SHOW_TAP_HIGHLIGHT,
+ TAP_TIMEOUT);
+ }
+
+ private void unscheduleShowTapHighlightLocked() {
+ if (mPostShowTapHighlightScheduled) {
+ mPostShowTapHighlightScheduled = false;
+ mUiHandler.removeMessages(UiHandler.MSG_SHOW_TAP_HIGHLIGHT);
+ }
+ }
+
+ private void scheduleHideTapHighlightLocked() {
+ unscheduleHideTapHighlightLocked();
+ mPostHideTapHighlightScheduled = true;
+ mUiHandler.sendEmptyMessageDelayed(UiHandler.MSG_HIDE_TAP_HIGHLIGHT,
+ PRESSED_STATE_DURATION);
+ }
+
+ private void unscheduleHideTapHighlightLocked() {
+ if (mPostHideTapHighlightScheduled) {
+ mPostHideTapHighlightScheduled = false;
+ mUiHandler.removeMessages(UiHandler.MSG_HIDE_TAP_HIGHLIGHT);
+ }
+ }
+
+ private void postShowTapHighlight(boolean show) {
+ synchronized (mLock) {
+ if (show) {
+ if (!mPostShowTapHighlightScheduled) {
+ return;
+ }
+ mPostShowTapHighlightScheduled = false;
+ } else {
+ if (!mPostHideTapHighlightScheduled) {
+ return;
+ }
+ mPostHideTapHighlightScheduled = false;
+ }
+ mUiCallbacks.showTapHighlight(show);
+ }
+ }
+
private void scheduleClickLocked() {
unscheduleClickLocked();
mPostClickScheduled = true;
@@ -403,6 +460,7 @@
return;
}
mPostClickScheduled = false;
+ showTapCandidateLocked();
MotionEvent event = mPostTouchStream.getLastEvent();
if (event == null || event.getAction() != MotionEvent.ACTION_UP) {
@@ -441,6 +499,7 @@
private void enqueueDoubleTapLocked(MotionEvent event) {
unscheduleClickLocked();
+ hideTapCandidateLocked();
MotionEvent eventToEnqueue = MotionEvent.obtainNoHistory(event);
DispatchEvent d = obtainDispatchEventLocked(eventToEnqueue, EVENT_TYPE_DOUBLE_TAP, 0,
mPostLastWebKitXOffset, mPostLastWebKitYOffset, mPostLastWebKitScale);
@@ -457,6 +516,7 @@
if ((deltaX * deltaX + deltaY * deltaY) > mTouchSlopSquared) {
unscheduleLongPressLocked();
mIsTapCandidate = false;
+ hideTapCandidateLocked();
}
}
@@ -473,14 +533,17 @@
|| event.getPointerCount() > 1) {
unscheduleLongPressLocked();
unscheduleClickLocked();
+ hideTapCandidateLocked();
mIsDoubleTapCandidate = false;
mIsTapCandidate = false;
+ hideTapCandidateLocked();
} else if (action == MotionEvent.ACTION_DOWN) {
checkForDoubleTapOnDownLocked(event);
scheduleLongPressLocked();
mIsTapCandidate = true;
mInitialDownX = event.getX();
mInitialDownY = event.getY();
+ scheduleShowTapHighlightLocked();
} else if (action == MotionEvent.ACTION_UP) {
unscheduleLongPressLocked();
if (isClickCandidateLocked(event)) {
@@ -489,6 +552,8 @@
} else {
scheduleClickLocked();
}
+ } else {
+ hideTapCandidateLocked();
}
} else if (action == MotionEvent.ACTION_MOVE) {
checkForSlopLocked(event);
@@ -949,6 +1014,21 @@
* @param flags The event's dispatch flags.
*/
public void dispatchUiEvent(MotionEvent event, int eventType, int flags);
+
+ /**
+ * Asks the UI thread whether this touch event stream should be
+ * intercepted based on the touch down event.
+ * @param event The touch down event.
+ * @return true if the UI stream wants the touch stream without going
+ * through webkit or false otherwise.
+ */
+ public boolean shouldInterceptTouchEvent(MotionEvent event);
+
+ /**
+ * Inform's the UI that it should show the tap highlight
+ * @param show True if it should show the highlight, false if it should hide it
+ */
+ public void showTapHighlight(boolean show);
}
/* Implemented by {@link WebViewCore} to perform operations on the web kit thread. */
@@ -975,6 +1055,8 @@
public static final int MSG_WEBKIT_TIMEOUT = 2;
public static final int MSG_LONG_PRESS = 3;
public static final int MSG_CLICK = 4;
+ public static final int MSG_SHOW_TAP_HIGHLIGHT = 5;
+ public static final int MSG_HIDE_TAP_HIGHLIGHT = 6;
public UiHandler(Looper looper) {
super(looper);
@@ -995,6 +1077,12 @@
case MSG_CLICK:
postClick();
break;
+ case MSG_SHOW_TAP_HIGHLIGHT:
+ postShowTapHighlight(true);
+ break;
+ case MSG_HIDE_TAP_HIGHLIGHT:
+ postShowTapHighlight(false);
+ break;
default:
throw new IllegalStateException("Unknown message type: " + msg.what);
}
diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java
index a2531f8..3aafba5 100644
--- a/core/java/android/widget/AbsListView.java
+++ b/core/java/android/widget/AbsListView.java
@@ -25,6 +25,7 @@
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.TransitionDrawable;
+import android.os.Bundle;
import android.os.Debug;
import android.os.Handler;
import android.os.Parcel;
@@ -57,6 +58,7 @@
import android.view.ViewParent;
import android.view.ViewTreeObserver;
import android.view.accessibility.AccessibilityEvent;
+import android.view.accessibility.AccessibilityManager;
import android.view.accessibility.AccessibilityNodeInfo;
import android.view.animation.Interpolator;
import android.view.animation.LinearInterpolator;
@@ -648,6 +650,11 @@
private int mGlowPaddingLeft;
private int mGlowPaddingRight;
+ /**
+ * Used for interacting with list items from an accessibility service.
+ */
+ private ListItemAccessibilityDelegate mAccessibilityDelegate;
+
private int mLastAccessibilityScrollEventFromIndex;
private int mLastAccessibilityScrollEventToIndex;
@@ -2121,9 +2128,77 @@
child.setLayoutParams(lp);
}
+ if (AccessibilityManager.getInstance(mContext).isEnabled()) {
+ if (mAccessibilityDelegate == null) {
+ mAccessibilityDelegate = new ListItemAccessibilityDelegate();
+ }
+ child.setAccessibilityDelegate(mAccessibilityDelegate);
+ }
+
return child;
}
+ class ListItemAccessibilityDelegate extends AccessibilityDelegate {
+ @Override
+ public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) {
+ super.onInitializeAccessibilityNodeInfo(host, info);
+
+ final int position = getPositionForView(host);
+
+ if (position == INVALID_POSITION) {
+ return;
+ }
+
+ if (isClickable()) {
+ info.addAction(AccessibilityNodeInfo.ACTION_CLICK);
+ info.setClickable(true);
+ }
+
+ if (isLongClickable()) {
+ info.addAction(AccessibilityNodeInfo.ACTION_LONG_CLICK);
+ info.setLongClickable(true);
+ }
+
+ info.addAction(AccessibilityNodeInfo.ACTION_SELECT);
+
+ if (position == getSelectedItemPosition()) {
+ info.setSelected(true);
+ }
+ }
+
+ @Override
+ public boolean performAccessibilityAction(View host, int action, Bundle arguments) {
+ final int position = getPositionForView(host);
+
+ if (position == INVALID_POSITION) {
+ return false;
+ }
+
+ final long id = getItemIdAtPosition(position);
+
+ switch (action) {
+ case AccessibilityNodeInfo.ACTION_SELECT:
+ setSelection(position);
+ return true;
+ case AccessibilityNodeInfo.ACTION_CLICK:
+ if (!super.performAccessibilityAction(host, action, arguments)) {
+ return performItemClick(host, position, id);
+ }
+ return true;
+ case AccessibilityNodeInfo.ACTION_LONG_CLICK:
+ if (!super.performAccessibilityAction(host, action, arguments)) {
+ return performLongPress(host, position, id);
+ }
+ return true;
+ case AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS:
+ smoothScrollToPosition(position);
+ break;
+ }
+
+ return super.performAccessibilityAction(host, action, arguments);
+ }
+ }
+
void positionSelector(int position, View sel) {
if (position != INVALID_POSITION) {
mSelectorPosition = position;
@@ -3179,6 +3254,13 @@
mActivePointerId = ev.getPointerId(pointerIndex);
}
final int y = (int) ev.getY(pointerIndex);
+
+ if (mDataChanged) {
+ // Re-sync everything if data has been changed
+ // since the scroll operation can query the adapter.
+ layoutChildren();
+ }
+
switch (mTouchMode) {
case TOUCH_MODE_DOWN:
case TOUCH_MODE_TAP:
@@ -3978,7 +4060,7 @@
}
class PositionScroller implements Runnable {
- private static final int SCROLL_DURATION = 400;
+ private static final int SCROLL_DURATION = 200;
private static final int MOVE_DOWN_POS = 1;
private static final int MOVE_UP_POS = 2;
@@ -3999,21 +4081,37 @@
mExtraScroll = ViewConfiguration.get(mContext).getScaledFadingEdgeLength();
}
- void start(int position) {
+ void start(final int position) {
stop();
+ if (mDataChanged) {
+ // Wait until we're back in a stable state to try this.
+ post(new Runnable() {
+ @Override public void run() {
+ start(position);
+ }
+ });
+ return;
+ }
+
+ final int childCount = getChildCount();
+ if (childCount == 0) {
+ // Can't scroll without children.
+ return;
+ }
+
final int firstPos = mFirstPosition;
- final int lastPos = firstPos + getChildCount() - 1;
+ final int lastPos = firstPos + childCount - 1;
int viewTravelCount;
- if (position <= firstPos) {
+ if (position < firstPos) {
viewTravelCount = firstPos - position + 1;
mMode = MOVE_UP_POS;
- } else if (position >= lastPos) {
+ } else if (position > lastPos) {
viewTravelCount = position - lastPos + 1;
mMode = MOVE_DOWN_POS;
} else {
- // Already on screen, nothing to do
+ scrollToVisible(position, INVALID_POSITION, SCROLL_DURATION);
return;
}
@@ -4029,7 +4127,7 @@
postOnAnimation(this);
}
- void start(int position, int boundPosition) {
+ void start(final int position, final int boundPosition) {
stop();
if (boundPosition == INVALID_POSITION) {
@@ -4037,11 +4135,27 @@
return;
}
+ if (mDataChanged) {
+ // Wait until we're back in a stable state to try this.
+ post(new Runnable() {
+ @Override public void run() {
+ start(position, boundPosition);
+ }
+ });
+ return;
+ }
+
+ final int childCount = getChildCount();
+ if (childCount == 0) {
+ // Can't scroll without children.
+ return;
+ }
+
final int firstPos = mFirstPosition;
- final int lastPos = firstPos + getChildCount() - 1;
+ final int lastPos = firstPos + childCount - 1;
int viewTravelCount;
- if (position <= firstPos) {
+ if (position < firstPos) {
final int boundPosFromLast = lastPos - boundPosition;
if (boundPosFromLast < 1) {
// Moving would shift our bound position off the screen. Abort.
@@ -4057,7 +4171,7 @@
viewTravelCount = posTravel;
mMode = MOVE_UP_POS;
}
- } else if (position >= lastPos) {
+ } else if (position > lastPos) {
final int boundPosFromFirst = boundPosition - firstPos;
if (boundPosFromFirst < 1) {
// Moving would shift our bound position off the screen. Abort.
@@ -4074,7 +4188,7 @@
mMode = MOVE_DOWN_POS;
}
} else {
- // Already on screen, nothing to do
+ scrollToVisible(position, boundPosition, SCROLL_DURATION);
return;
}
@@ -4094,9 +4208,26 @@
startWithOffset(position, offset, SCROLL_DURATION);
}
- void startWithOffset(int position, int offset, int duration) {
+ void startWithOffset(final int position, int offset, final int duration) {
stop();
+ if (mDataChanged) {
+ // Wait until we're back in a stable state to try this.
+ final int postOffset = offset;
+ post(new Runnable() {
+ @Override public void run() {
+ startWithOffset(position, postOffset, duration);
+ }
+ });
+ return;
+ }
+
+ final int childCount = getChildCount();
+ if (childCount == 0) {
+ // Can't scroll without children.
+ return;
+ }
+
offset += getPaddingTop();
mTargetPos = position;
@@ -4106,7 +4237,6 @@
mMode = MOVE_OFFSET;
final int firstPos = mFirstPosition;
- final int childCount = getChildCount();
final int lastPos = firstPos + childCount - 1;
int viewTravelCount;
@@ -4130,6 +4260,60 @@
postOnAnimation(this);
}
+ /**
+ * Scroll such that targetPos is in the visible padded region without scrolling
+ * boundPos out of view. Assumes targetPos is onscreen.
+ */
+ void scrollToVisible(int targetPos, int boundPos, int duration) {
+ final int firstPos = mFirstPosition;
+ final int childCount = getChildCount();
+ final int lastPos = firstPos + childCount - 1;
+ final int paddedTop = mListPadding.top;
+ final int paddedBottom = getHeight() - mListPadding.bottom;
+
+ if (targetPos < firstPos || targetPos > lastPos) {
+ Log.w(TAG, "scrollToVisible called with targetPos " + targetPos +
+ " not visible [" + firstPos + ", " + lastPos + "]");
+ }
+ if (boundPos < firstPos || boundPos > lastPos) {
+ // boundPos doesn't matter, it's already offscreen.
+ boundPos = INVALID_POSITION;
+ }
+
+ final View targetChild = getChildAt(targetPos - firstPos);
+ final int targetTop = targetChild.getTop();
+ final int targetBottom = targetChild.getBottom();
+ int scrollBy = 0;
+
+ if (targetBottom > paddedBottom) {
+ scrollBy = targetBottom - paddedBottom;
+ }
+ if (targetTop < paddedTop) {
+ scrollBy = targetTop - paddedTop;
+ }
+
+ if (scrollBy == 0) {
+ return;
+ }
+
+ if (boundPos >= 0) {
+ final View boundChild = getChildAt(boundPos - firstPos);
+ final int boundTop = boundChild.getTop();
+ final int boundBottom = boundChild.getBottom();
+ final int absScroll = Math.abs(scrollBy);
+
+ if (scrollBy < 0 && boundBottom + absScroll > paddedBottom) {
+ // Don't scroll the bound view off the bottom of the screen.
+ scrollBy = Math.max(0, boundBottom - paddedBottom);
+ } else if (scrollBy > 0 && boundTop - absScroll < paddedTop) {
+ // Don't scroll the bound view off the top of the screen.
+ scrollBy = Math.min(0, boundTop - paddedTop);
+ }
+ }
+
+ smoothScrollBy(scrollBy, duration);
+ }
+
void stop() {
removeCallbacks(this);
}
@@ -4425,7 +4609,7 @@
if (distance == 0 || mItemCount == 0 || childCount == 0 ||
(firstPos == 0 && getChildAt(0).getTop() == topLimit && distance < 0) ||
- (lastPos == mItemCount - 1 &&
+ (lastPos == mItemCount &&
getChildAt(childCount - 1).getBottom() == bottomLimit && distance > 0)) {
mFlingRunnable.endFling();
if (mPositionScroller != null) {
@@ -5562,6 +5746,7 @@
// Don't reclaim header or footer views, or views that should be ignored
if (lp != null && mRecycler.shouldRecycleViewType(lp.viewType)) {
views.add(child);
+ child.setAccessibilityDelegate(null);
if (listener != null) {
// Pretend they went through the scrap heap
listener.onMovedToScrapHeap(child);
@@ -6117,6 +6302,7 @@
mScrapViews[viewType].add(scrap);
}
+ scrap.setAccessibilityDelegate(null);
if (mRecyclerListener != null) {
mRecyclerListener.onMovedToScrapHeap(scrap);
}
@@ -6178,6 +6364,7 @@
lp.scrappedFromPosition = mFirstActivePosition + i;
scrapViews.add(victim);
+ victim.setAccessibilityDelegate(null);
if (hasListener) {
mRecyclerListener.onMovedToScrapHeap(victim);
}
@@ -6210,6 +6397,16 @@
removeDetachedView(scrapPile.remove(size--), false);
}
}
+
+ if (mTransientStateViews != null) {
+ for (int i = 0; i < mTransientStateViews.size(); i++) {
+ final View v = mTransientStateViews.valueAt(i);
+ if (!v.hasTransientState()) {
+ mTransientStateViews.removeAt(i);
+ i--;
+ }
+ }
+ }
}
/**
diff --git a/core/java/android/widget/AccessibilityIterators.java b/core/java/android/widget/AccessibilityIterators.java
new file mode 100644
index 0000000..e800e8d
--- /dev/null
+++ b/core/java/android/widget/AccessibilityIterators.java
@@ -0,0 +1,219 @@
+/*
+ * Copyright (C) 2012 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 android.widget;
+
+import android.graphics.Rect;
+import android.text.Layout;
+import android.text.Spannable;
+import android.view.AccessibilityIterators.AbstractTextSegmentIterator;
+
+/**
+ * This class contains the implementation of text segment iterators
+ * for accessibility support.
+ */
+final class AccessibilityIterators {
+
+ static class LineTextSegmentIterator extends AbstractTextSegmentIterator {
+ private static LineTextSegmentIterator sLineInstance;
+
+ protected static final int DIRECTION_START = -1;
+ protected static final int DIRECTION_END = 1;
+
+ protected Layout mLayout;
+
+ public static LineTextSegmentIterator getInstance() {
+ if (sLineInstance == null) {
+ sLineInstance = new LineTextSegmentIterator();
+ }
+ return sLineInstance;
+ }
+
+ public void initialize(Spannable text, Layout layout) {
+ mText = text.toString();
+ mLayout = layout;
+ }
+
+ @Override
+ public int[] following(int offset) {
+ final int textLegth = mText.length();
+ if (textLegth <= 0) {
+ return null;
+ }
+ if (offset >= mText.length()) {
+ return null;
+ }
+ int nextLine = -1;
+ if (offset < 0) {
+ nextLine = mLayout.getLineForOffset(0);
+ } else {
+ final int currentLine = mLayout.getLineForOffset(offset);
+ if (currentLine < mLayout.getLineCount() - 1) {
+ nextLine = currentLine + 1;
+ }
+ }
+ if (nextLine < 0) {
+ return null;
+ }
+ final int start = getLineEdgeIndex(nextLine, DIRECTION_START);
+ final int end = getLineEdgeIndex(nextLine, DIRECTION_END) + 1;
+ return getRange(start, end);
+ }
+
+ @Override
+ public int[] preceding(int offset) {
+ final int textLegth = mText.length();
+ if (textLegth <= 0) {
+ return null;
+ }
+ if (offset <= 0) {
+ return null;
+ }
+ int previousLine = -1;
+ if (offset > mText.length()) {
+ previousLine = mLayout.getLineForOffset(mText.length());
+ } else {
+ final int currentLine = mLayout.getLineForOffset(offset - 1);
+ if (currentLine > 0) {
+ previousLine = currentLine - 1;
+ }
+ }
+ if (previousLine < 0) {
+ return null;
+ }
+ final int start = getLineEdgeIndex(previousLine, DIRECTION_START);
+ final int end = getLineEdgeIndex(previousLine, DIRECTION_END) + 1;
+ return getRange(start, end);
+ }
+
+ protected int getLineEdgeIndex(int lineNumber, int direction) {
+ final int paragraphDirection = mLayout.getParagraphDirection(lineNumber);
+ if (direction * paragraphDirection < 0) {
+ return mLayout.getLineStart(lineNumber);
+ } else {
+ return mLayout.getLineEnd(lineNumber) - 1;
+ }
+ }
+ }
+
+ static class PageTextSegmentIterator extends LineTextSegmentIterator {
+ private static PageTextSegmentIterator sPageInstance;
+
+ private TextView mView;
+
+ private final Rect mTempRect = new Rect();
+
+ public static PageTextSegmentIterator getInstance() {
+ if (sPageInstance == null) {
+ sPageInstance = new PageTextSegmentIterator();
+ }
+ return sPageInstance;
+ }
+
+ public void initialize(TextView view) {
+ super.initialize((Spannable) view.getIterableTextForAccessibility(), view.getLayout());
+ mView = view;
+ }
+
+ @Override
+ public int[] following(int offset) {
+ final int textLegth = mText.length();
+ if (textLegth <= 0) {
+ return null;
+ }
+ if (offset >= mText.length()) {
+ return null;
+ }
+ if (!mView.getGlobalVisibleRect(mTempRect)) {
+ return null;
+ }
+
+ final int currentLine = mLayout.getLineForOffset(offset);
+ final int currentLineTop = mLayout.getLineTop(currentLine);
+ final int pageHeight = mTempRect.height() - mView.getTotalPaddingTop()
+ - mView.getTotalPaddingBottom();
+
+ final int nextPageStartLine;
+ final int nextPageEndLine;
+ if (offset < 0) {
+ nextPageStartLine = currentLine;
+ final int nextPageEndY = currentLineTop + pageHeight;
+ nextPageEndLine = mLayout.getLineForVertical(nextPageEndY);
+ } else {
+ final int nextPageStartY = currentLineTop + pageHeight;
+ nextPageStartLine = mLayout.getLineForVertical(nextPageStartY) + 1;
+ if (mLayout.getLineTop(nextPageStartLine) <= nextPageStartY) {
+ return null;
+ }
+ final int nextPageEndY = nextPageStartY + pageHeight;
+ nextPageEndLine = mLayout.getLineForVertical(nextPageEndY);
+ }
+
+ final int start = getLineEdgeIndex(nextPageStartLine, DIRECTION_START);
+ final int end = getLineEdgeIndex(nextPageEndLine, DIRECTION_END) + 1;
+
+ return getRange(start, end);
+ }
+
+ @Override
+ public int[] preceding(int offset) {
+ final int textLegth = mText.length();
+ if (textLegth <= 0) {
+ return null;
+ }
+ if (offset <= 0) {
+ return null;
+ }
+ if (!mView.getGlobalVisibleRect(mTempRect)) {
+ return null;
+ }
+
+ final int currentLine = mLayout.getLineForOffset(offset);
+ final int currentLineTop = mLayout.getLineTop(currentLine);
+ final int pageHeight = mTempRect.height() - mView.getTotalPaddingTop()
+ - mView.getTotalPaddingBottom();
+
+ final int previousPageStartLine;
+ final int previousPageEndLine;
+ if (offset > mText.length()) {
+ final int prevousPageStartY = mLayout.getHeight() - pageHeight;
+ if (prevousPageStartY < 0) {
+ return null;
+ }
+ previousPageStartLine = mLayout.getLineForVertical(prevousPageStartY);
+ previousPageEndLine = mLayout.getLineCount() - 1;
+ } else {
+ final int prevousPageStartY;
+ if (offset == mText.length()) {
+ prevousPageStartY = mLayout.getHeight() - 2 * pageHeight;
+ } else {
+ prevousPageStartY = currentLineTop - 2 * pageHeight;
+ }
+ if (prevousPageStartY < 0) {
+ return null;
+ }
+ previousPageStartLine = mLayout.getLineForVertical(prevousPageStartY);
+ final int previousPageEndY = prevousPageStartY + pageHeight;
+ previousPageEndLine = mLayout.getLineForVertical(previousPageEndY) - 1;
+ }
+
+ final int start = getLineEdgeIndex(previousPageStartLine, DIRECTION_START);
+ final int end = getLineEdgeIndex(previousPageEndLine, DIRECTION_END) + 1;
+
+ return getRange(start, end);
+ }
+ }
+}
diff --git a/core/java/android/widget/ActivityChooserModel.java b/core/java/android/widget/ActivityChooserModel.java
index c53b5f6..c6104bc 100644
--- a/core/java/android/widget/ActivityChooserModel.java
+++ b/core/java/android/widget/ActivityChooserModel.java
@@ -23,7 +23,6 @@
import android.database.DataSetObservable;
import android.database.DataSetObserver;
import android.os.AsyncTask;
-import android.os.Handler;
import android.text.TextUtils;
import android.util.Log;
import android.util.Xml;
@@ -42,10 +41,8 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
-import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
-import java.util.Set;
/**
* <p>
@@ -239,7 +236,7 @@
/**
* List of activities that can handle the current intent.
*/
- private final List<ActivityResolveInfo> mActivites = new ArrayList<ActivityResolveInfo>();
+ private final List<ActivityResolveInfo> mActivities = new ArrayList<ActivityResolveInfo>();
/**
* List with historical choice records.
@@ -278,18 +275,18 @@
/**
* Flag whether choice history can be read. In general many clients can
- * share the same data model and {@link #readHistoricalData()} may be called
+ * share the same data model and {@link #readHistoricalDataIfNeeded()} may be called
* by arbitrary of them any number of times. Therefore, this class guarantees
* that the very first read succeeds and subsequent reads can be performed
- * only after a call to {@link #persistHistoricalData()} followed by change
+ * only after a call to {@link #persistHistoricalDataIfNeeded()} followed by change
* of the share records.
*/
private boolean mCanReadHistoricalData = true;
/**
* Flag whether the choice history was read. This is used to enforce that
- * before calling {@link #persistHistoricalData()} a call to
- * {@link #persistHistoricalData()} has been made. This aims to avoid a
+ * before calling {@link #persistHistoricalDataIfNeeded()} a call to
+ * {@link #persistHistoricalDataIfNeeded()} has been made. This aims to avoid a
* scenario in which a choice history file exits, it is not read yet and
* it is overwritten. Note that always all historical records are read in
* full and the file is rewritten. This is necessary since we need to
@@ -299,16 +296,16 @@
/**
* Flag whether the choice records have changed. In general many clients can
- * share the same data model and {@link #persistHistoricalData()} may be called
+ * share the same data model and {@link #persistHistoricalDataIfNeeded()} may be called
* by arbitrary of them any number of times. Therefore, this class guarantees
* that choice history will be persisted only if it has changed.
*/
private boolean mHistoricalRecordsChanged = true;
/**
- * Hander for scheduling work on client tread.
+ * Flag whether to reload the activities for the current intent.
*/
- private final Handler mHandler = new Handler();
+ private boolean mReloadActivities = false;
/**
* Policy for controlling how the model handles chosen activities.
@@ -346,7 +343,6 @@
dataModel = new ActivityChooserModel(context, historyFileName);
sDataModelRegistry.put(historyFileName, dataModel);
}
- dataModel.readHistoricalData();
return dataModel;
}
}
@@ -383,7 +379,8 @@
return;
}
mIntent = intent;
- loadActivitiesLocked();
+ mReloadActivities = true;
+ ensureConsistentState();
}
}
@@ -407,7 +404,8 @@
*/
public int getActivityCount() {
synchronized (mInstanceLock) {
- return mActivites.size();
+ ensureConsistentState();
+ return mActivities.size();
}
}
@@ -421,7 +419,8 @@
*/
public ResolveInfo getActivity(int index) {
synchronized (mInstanceLock) {
- return mActivites.get(index).resolveInfo;
+ ensureConsistentState();
+ return mActivities.get(index).resolveInfo;
}
}
@@ -433,15 +432,18 @@
* @return The index if found, -1 otherwise.
*/
public int getActivityIndex(ResolveInfo activity) {
- List<ActivityResolveInfo> activities = mActivites;
- final int activityCount = activities.size();
- for (int i = 0; i < activityCount; i++) {
- ActivityResolveInfo currentActivity = activities.get(i);
- if (currentActivity.resolveInfo == activity) {
- return i;
+ synchronized (mInstanceLock) {
+ ensureConsistentState();
+ List<ActivityResolveInfo> activities = mActivities;
+ final int activityCount = activities.size();
+ for (int i = 0; i < activityCount; i++) {
+ ActivityResolveInfo currentActivity = activities.get(i);
+ if (currentActivity.resolveInfo == activity) {
+ return i;
+ }
}
+ return INVALID_INDEX;
}
- return INVALID_INDEX;
}
/**
@@ -462,30 +464,34 @@
* @see OnChooseActivityListener
*/
public Intent chooseActivity(int index) {
- ActivityResolveInfo chosenActivity = mActivites.get(index);
+ synchronized (mInstanceLock) {
+ ensureConsistentState();
- ComponentName chosenName = new ComponentName(
- chosenActivity.resolveInfo.activityInfo.packageName,
- chosenActivity.resolveInfo.activityInfo.name);
+ ActivityResolveInfo chosenActivity = mActivities.get(index);
- Intent choiceIntent = new Intent(mIntent);
- choiceIntent.setComponent(chosenName);
+ ComponentName chosenName = new ComponentName(
+ chosenActivity.resolveInfo.activityInfo.packageName,
+ chosenActivity.resolveInfo.activityInfo.name);
- if (mActivityChoserModelPolicy != null) {
- // Do not allow the policy to change the intent.
- Intent choiceIntentCopy = new Intent(choiceIntent);
- final boolean handled = mActivityChoserModelPolicy.onChooseActivity(this,
- choiceIntentCopy);
- if (handled) {
- return null;
+ Intent choiceIntent = new Intent(mIntent);
+ choiceIntent.setComponent(chosenName);
+
+ if (mActivityChoserModelPolicy != null) {
+ // Do not allow the policy to change the intent.
+ Intent choiceIntentCopy = new Intent(choiceIntent);
+ final boolean handled = mActivityChoserModelPolicy.onChooseActivity(this,
+ choiceIntentCopy);
+ if (handled) {
+ return null;
+ }
}
+
+ HistoricalRecord historicalRecord = new HistoricalRecord(chosenName,
+ System.currentTimeMillis(), DEFAULT_HISTORICAL_RECORD_WEIGHT);
+ addHisoricalRecord(historicalRecord);
+
+ return choiceIntent;
}
-
- HistoricalRecord historicalRecord = new HistoricalRecord(chosenName,
- System.currentTimeMillis(), DEFAULT_HISTORICAL_RECORD_WEIGHT);
- addHisoricalRecord(historicalRecord);
-
- return choiceIntent;
}
/**
@@ -494,7 +500,9 @@
* @param listener The listener.
*/
public void setOnChooseActivityListener(OnChooseActivityListener listener) {
- mActivityChoserModelPolicy = listener;
+ synchronized (mInstanceLock) {
+ mActivityChoserModelPolicy = listener;
+ }
}
/**
@@ -508,8 +516,9 @@
*/
public ResolveInfo getDefaultActivity() {
synchronized (mInstanceLock) {
- if (!mActivites.isEmpty()) {
- return mActivites.get(0).resolveInfo;
+ ensureConsistentState();
+ if (!mActivities.isEmpty()) {
+ return mActivities.get(0).resolveInfo;
}
}
return null;
@@ -526,72 +535,50 @@
* @param index The index of the activity to set as default.
*/
public void setDefaultActivity(int index) {
- ActivityResolveInfo newDefaultActivity = mActivites.get(index);
- ActivityResolveInfo oldDefaultActivity = mActivites.get(0);
-
- final float weight;
- if (oldDefaultActivity != null) {
- // Add a record with weight enough to boost the chosen at the top.
- weight = oldDefaultActivity.weight - newDefaultActivity.weight
- + DEFAULT_ACTIVITY_INFLATION;
- } else {
- weight = DEFAULT_HISTORICAL_RECORD_WEIGHT;
- }
-
- ComponentName defaultName = new ComponentName(
- newDefaultActivity.resolveInfo.activityInfo.packageName,
- newDefaultActivity.resolveInfo.activityInfo.name);
- HistoricalRecord historicalRecord = new HistoricalRecord(defaultName,
- System.currentTimeMillis(), weight);
- addHisoricalRecord(historicalRecord);
- }
-
- /**
- * Reads the history data from the backing file if the latter
- * was provided. Calling this method more than once before a call
- * to {@link #persistHistoricalData()} has been made has no effect.
- * <p>
- * <strong>Note:</strong> Historical data is read asynchronously and
- * as soon as the reading is completed any registered
- * {@link DataSetObserver}s will be notified. Also no historical
- * data is read until this method is invoked.
- * <p>
- */
- private void readHistoricalData() {
synchronized (mInstanceLock) {
- if (!mCanReadHistoricalData || !mHistoricalRecordsChanged) {
- return;
+ ensureConsistentState();
+
+ ActivityResolveInfo newDefaultActivity = mActivities.get(index);
+ ActivityResolveInfo oldDefaultActivity = mActivities.get(0);
+
+ final float weight;
+ if (oldDefaultActivity != null) {
+ // Add a record with weight enough to boost the chosen at the top.
+ weight = oldDefaultActivity.weight - newDefaultActivity.weight
+ + DEFAULT_ACTIVITY_INFLATION;
+ } else {
+ weight = DEFAULT_HISTORICAL_RECORD_WEIGHT;
}
- mCanReadHistoricalData = false;
- mReadShareHistoryCalled = true;
- if (!TextUtils.isEmpty(mHistoryFileName)) {
- AsyncTask.SERIAL_EXECUTOR.execute(new HistoryLoader());
- }
+
+ ComponentName defaultName = new ComponentName(
+ newDefaultActivity.resolveInfo.activityInfo.packageName,
+ newDefaultActivity.resolveInfo.activityInfo.name);
+ HistoricalRecord historicalRecord = new HistoricalRecord(defaultName,
+ System.currentTimeMillis(), weight);
+ addHisoricalRecord(historicalRecord);
}
}
/**
* Persists the history data to the backing file if the latter
- * was provided. Calling this method before a call to {@link #readHistoricalData()}
+ * was provided. Calling this method before a call to {@link #readHistoricalDataIfNeeded()}
* throws an exception. Calling this method more than one without choosing an
* activity has not effect.
*
* @throws IllegalStateException If this method is called before a call to
- * {@link #readHistoricalData()}.
+ * {@link #readHistoricalDataIfNeeded()}.
*/
- private void persistHistoricalData() {
- synchronized (mInstanceLock) {
- if (!mReadShareHistoryCalled) {
- throw new IllegalStateException("No preceding call to #readHistoricalData");
- }
- if (!mHistoricalRecordsChanged) {
- return;
- }
- mHistoricalRecordsChanged = false;
- mCanReadHistoricalData = true;
- if (!TextUtils.isEmpty(mHistoryFileName)) {
- AsyncTask.SERIAL_EXECUTOR.execute(new HistoryPersister());
- }
+ private void persistHistoricalDataIfNeeded() {
+ if (!mReadShareHistoryCalled) {
+ throw new IllegalStateException("No preceding call to #readHistoricalData");
+ }
+ if (!mHistoricalRecordsChanged) {
+ return;
+ }
+ mHistoricalRecordsChanged = false;
+ if (!TextUtils.isEmpty(mHistoryFileName)) {
+ new PersistHistoryAsyncTask().executeOnExecutor(AsyncTask.SERIAL_EXECUTOR,
+ new ArrayList<HistoricalRecord>(mHistoricalRecords), mHistoryFileName);
}
}
@@ -608,21 +595,7 @@
return;
}
mActivitySorter = activitySorter;
- sortActivities();
- }
- }
-
- /**
- * Sorts the activities based on history and an intent. If
- * a sorter is not specified this a default implementation is used.
- *
- * @see #setActivitySorter(ActivitySorter)
- */
- private void sortActivities() {
- synchronized (mInstanceLock) {
- if (mActivitySorter != null && !mActivites.isEmpty()) {
- mActivitySorter.sort(mIntent, mActivites,
- Collections.unmodifiableList(mHistoricalRecords));
+ if (sortActivitiesIfNeeded()) {
notifyChanged();
}
}
@@ -647,8 +620,10 @@
return;
}
mHistoryMaxSize = historyMaxSize;
- pruneExcessiveHistoricalRecordsLocked();
- sortActivities();
+ pruneExcessiveHistoricalRecordsIfNeeded();
+ if (sortActivitiesIfNeeded()) {
+ notifyChanged();
+ }
}
}
@@ -670,6 +645,7 @@
*/
public int getHistorySize() {
synchronized (mInstanceLock) {
+ ensureConsistentState();
return mHistoricalRecords.size();
}
}
@@ -681,36 +657,107 @@
}
/**
+ * Ensures the model is in a consistent state which is the
+ * activities for the current intent have been loaded, the
+ * most recent history has been read, and the activities
+ * are sorted.
+ */
+ private void ensureConsistentState() {
+ boolean stateChanged = loadActivitiesIfNeeded();
+ stateChanged |= readHistoricalDataIfNeeded();
+ pruneExcessiveHistoricalRecordsIfNeeded();
+ if (stateChanged) {
+ sortActivitiesIfNeeded();
+ notifyChanged();
+ }
+ }
+
+ /**
+ * Sorts the activities if necessary which is if there is a
+ * sorter, there are some activities to sort, and there is some
+ * historical data.
+ *
+ * @return Whether sorting was performed.
+ */
+ private boolean sortActivitiesIfNeeded() {
+ if (mActivitySorter != null && mIntent != null
+ && !mActivities.isEmpty() && !mHistoricalRecords.isEmpty()) {
+ mActivitySorter.sort(mIntent, mActivities,
+ Collections.unmodifiableList(mHistoricalRecords));
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Loads the activities for the current intent if needed which is
+ * if they are not already loaded for the current intent.
+ *
+ * @return Whether loading was performed.
+ */
+ private boolean loadActivitiesIfNeeded() {
+ if (mReloadActivities && mIntent != null) {
+ mReloadActivities = false;
+ mActivities.clear();
+ List<ResolveInfo> resolveInfos = mContext.getPackageManager()
+ .queryIntentActivities(mIntent, 0);
+ final int resolveInfoCount = resolveInfos.size();
+ for (int i = 0; i < resolveInfoCount; i++) {
+ ResolveInfo resolveInfo = resolveInfos.get(i);
+ mActivities.add(new ActivityResolveInfo(resolveInfo));
+ }
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Reads the historical data if necessary which is it has
+ * changed, there is a history file, and there is not persist
+ * in progress.
+ *
+ * @return Whether reading was performed.
+ */
+ private boolean readHistoricalDataIfNeeded() {
+ if (mCanReadHistoricalData && mHistoricalRecordsChanged &&
+ !TextUtils.isEmpty(mHistoryFileName)) {
+ mCanReadHistoricalData = false;
+ mReadShareHistoryCalled = true;
+ readHistoricalDataImpl();
+ return true;
+ }
+ return false;
+ }
+
+ /**
* Adds a historical record.
*
* @param historicalRecord The record to add.
* @return True if the record was added.
*/
private boolean addHisoricalRecord(HistoricalRecord historicalRecord) {
- synchronized (mInstanceLock) {
- final boolean added = mHistoricalRecords.add(historicalRecord);
- if (added) {
- mHistoricalRecordsChanged = true;
- pruneExcessiveHistoricalRecordsLocked();
- persistHistoricalData();
- sortActivities();
- }
- return added;
+ final boolean added = mHistoricalRecords.add(historicalRecord);
+ if (added) {
+ mHistoricalRecordsChanged = true;
+ pruneExcessiveHistoricalRecordsIfNeeded();
+ persistHistoricalDataIfNeeded();
+ sortActivitiesIfNeeded();
+ notifyChanged();
}
+ return added;
}
/**
- * Prunes older excessive records to guarantee {@link #mHistoryMaxSize}.
+ * Prunes older excessive records to guarantee maxHistorySize.
*/
- private void pruneExcessiveHistoricalRecordsLocked() {
- List<HistoricalRecord> choiceRecords = mHistoricalRecords;
- final int pruneCount = choiceRecords.size() - mHistoryMaxSize;
+ private void pruneExcessiveHistoricalRecordsIfNeeded() {
+ final int pruneCount = mHistoricalRecords.size() - mHistoryMaxSize;
if (pruneCount <= 0) {
return;
}
mHistoricalRecordsChanged = true;
for (int i = 0; i < pruneCount; i++) {
- HistoricalRecord prunedRecord = choiceRecords.remove(0);
+ HistoricalRecord prunedRecord = mHistoricalRecords.remove(0);
if (DEBUG) {
Log.i(LOG_TAG, "Pruned: " + prunedRecord);
}
@@ -718,46 +765,13 @@
}
/**
- * Loads the activities.
- */
- private void loadActivitiesLocked() {
- mActivites.clear();
- if (mIntent != null) {
- List<ResolveInfo> resolveInfos =
- mContext.getPackageManager().queryIntentActivities(mIntent, 0);
- final int resolveInfoCount = resolveInfos.size();
- for (int i = 0; i < resolveInfoCount; i++) {
- ResolveInfo resolveInfo = resolveInfos.get(i);
- mActivites.add(new ActivityResolveInfo(resolveInfo));
- }
- sortActivities();
- } else {
- notifyChanged();
- }
- }
-
- /**
- * Prunes historical records for a package that goes away.
+ * Gets whether the given observer is already registered.
*
- * @param packageName The name of the package that goes away.
+ * @param observer The observer.
+ * @return True if already registered.
*/
- private void pruneHistoricalRecordsForPackageLocked(String packageName) {
- boolean recordsRemoved = false;
-
- List<HistoricalRecord> historicalRecords = mHistoricalRecords;
- for (int i = 0; i < historicalRecords.size(); i++) {
- HistoricalRecord historicalRecord = historicalRecords.get(i);
- String recordPackageName = historicalRecord.activity.getPackageName();
- if (recordPackageName.equals(packageName)) {
- historicalRecords.remove(historicalRecord);
- recordsRemoved = true;
- }
- }
-
- if (recordsRemoved) {
- mHistoricalRecordsChanged = true;
- sortActivities();
- }
+ public boolean isRegisteredObserver(DataSetObserver observer) {
+ return mObservers.contains(observer);
}
/**
@@ -964,112 +978,72 @@
/**
* Command for reading the historical records from a file off the UI thread.
*/
- private final class HistoryLoader implements Runnable {
-
- public void run() {
- FileInputStream fis = null;
- try {
- fis = mContext.openFileInput(mHistoryFileName);
- } catch (FileNotFoundException fnfe) {
- if (DEBUG) {
- Log.i(LOG_TAG, "Could not open historical records file: " + mHistoryFileName);
- }
- return;
+ private void readHistoricalDataImpl() {
+ FileInputStream fis = null;
+ try {
+ fis = mContext.openFileInput(mHistoryFileName);
+ } catch (FileNotFoundException fnfe) {
+ if (DEBUG) {
+ Log.i(LOG_TAG, "Could not open historical records file: " + mHistoryFileName);
}
- try {
- XmlPullParser parser = Xml.newPullParser();
- parser.setInput(fis, null);
+ return;
+ }
+ try {
+ XmlPullParser parser = Xml.newPullParser();
+ parser.setInput(fis, null);
- int type = XmlPullParser.START_DOCUMENT;
- while (type != XmlPullParser.END_DOCUMENT && type != XmlPullParser.START_TAG) {
- type = parser.next();
+ int type = XmlPullParser.START_DOCUMENT;
+ while (type != XmlPullParser.END_DOCUMENT && type != XmlPullParser.START_TAG) {
+ type = parser.next();
+ }
+
+ if (!TAG_HISTORICAL_RECORDS.equals(parser.getName())) {
+ throw new XmlPullParserException("Share records file does not start with "
+ + TAG_HISTORICAL_RECORDS + " tag.");
+ }
+
+ List<HistoricalRecord> historicalRecords = mHistoricalRecords;
+ historicalRecords.clear();
+
+ while (true) {
+ type = parser.next();
+ if (type == XmlPullParser.END_DOCUMENT) {
+ break;
+ }
+ if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) {
+ continue;
+ }
+ String nodeName = parser.getName();
+ if (!TAG_HISTORICAL_RECORD.equals(nodeName)) {
+ throw new XmlPullParserException("Share records file not well-formed.");
}
- if (!TAG_HISTORICAL_RECORDS.equals(parser.getName())) {
- throw new XmlPullParserException("Share records file does not start with "
- + TAG_HISTORICAL_RECORDS + " tag.");
- }
-
- List<HistoricalRecord> readRecords = new ArrayList<HistoricalRecord>();
-
- while (true) {
- type = parser.next();
- if (type == XmlPullParser.END_DOCUMENT) {
- break;
- }
- if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) {
- continue;
- }
- String nodeName = parser.getName();
- if (!TAG_HISTORICAL_RECORD.equals(nodeName)) {
- throw new XmlPullParserException("Share records file not well-formed.");
- }
-
- String activity = parser.getAttributeValue(null, ATTRIBUTE_ACTIVITY);
- final long time =
- Long.parseLong(parser.getAttributeValue(null, ATTRIBUTE_TIME));
- final float weight =
- Float.parseFloat(parser.getAttributeValue(null, ATTRIBUTE_WEIGHT));
-
- HistoricalRecord readRecord = new HistoricalRecord(activity, time,
- weight);
- readRecords.add(readRecord);
-
- if (DEBUG) {
- Log.i(LOG_TAG, "Read " + readRecord.toString());
- }
- }
+ String activity = parser.getAttributeValue(null, ATTRIBUTE_ACTIVITY);
+ final long time =
+ Long.parseLong(parser.getAttributeValue(null, ATTRIBUTE_TIME));
+ final float weight =
+ Float.parseFloat(parser.getAttributeValue(null, ATTRIBUTE_WEIGHT));
+ HistoricalRecord readRecord = new HistoricalRecord(activity, time, weight);
+ historicalRecords.add(readRecord);
if (DEBUG) {
- Log.i(LOG_TAG, "Read " + readRecords.size() + " historical records.");
+ Log.i(LOG_TAG, "Read " + readRecord.toString());
}
+ }
- synchronized (mInstanceLock) {
- Set<HistoricalRecord> uniqueShareRecords =
- new LinkedHashSet<HistoricalRecord>(readRecords);
-
- // Make sure no duplicates. Example: Read a file with
- // one record, add one record, persist the two records,
- // add a record, read the persisted records - the
- // read two records should not be added again.
- List<HistoricalRecord> historicalRecords = mHistoricalRecords;
- final int historicalRecordsCount = historicalRecords.size();
- for (int i = historicalRecordsCount - 1; i >= 0; i--) {
- HistoricalRecord historicalRecord = historicalRecords.get(i);
- uniqueShareRecords.add(historicalRecord);
- }
-
- if (historicalRecords.size() == uniqueShareRecords.size()) {
- return;
- }
-
- // Make sure the oldest records go to the end.
- historicalRecords.clear();
- historicalRecords.addAll(uniqueShareRecords);
-
- mHistoricalRecordsChanged = true;
-
- // Do this on the client thread since the client may be on the UI
- // thread, wait for data changes which happen during sorting, and
- // perform UI modification based on the data change.
- mHandler.post(new Runnable() {
- public void run() {
- pruneExcessiveHistoricalRecordsLocked();
- sortActivities();
- }
- });
- }
- } catch (XmlPullParserException xppe) {
- Log.e(LOG_TAG, "Error reading historical recrod file: " + mHistoryFileName, xppe);
- } catch (IOException ioe) {
- Log.e(LOG_TAG, "Error reading historical recrod file: " + mHistoryFileName, ioe);
- } finally {
- if (fis != null) {
- try {
- fis.close();
- } catch (IOException ioe) {
- /* ignore */
- }
+ if (DEBUG) {
+ Log.i(LOG_TAG, "Read " + historicalRecords.size() + " historical records.");
+ }
+ } catch (XmlPullParserException xppe) {
+ Log.e(LOG_TAG, "Error reading historical recrod file: " + mHistoryFileName, xppe);
+ } catch (IOException ioe) {
+ Log.e(LOG_TAG, "Error reading historical recrod file: " + mHistoryFileName, ioe);
+ } finally {
+ if (fis != null) {
+ try {
+ fis.close();
+ } catch (IOException ioe) {
+ /* ignore */
}
}
}
@@ -1078,21 +1052,21 @@
/**
* Command for persisting the historical records to a file off the UI thread.
*/
- private final class HistoryPersister implements Runnable {
+ private final class PersistHistoryAsyncTask extends AsyncTask<Object, Void, Void> {
- public void run() {
+ @Override
+ @SuppressWarnings("unchecked")
+ public Void doInBackground(Object... args) {
+ List<HistoricalRecord> historicalRecords = (List<HistoricalRecord>) args[0];
+ String hostoryFileName = (String) args[1];
+
FileOutputStream fos = null;
- List<HistoricalRecord> records = null;
-
- synchronized (mInstanceLock) {
- records = new ArrayList<HistoricalRecord>(mHistoricalRecords);
- }
try {
- fos = mContext.openFileOutput(mHistoryFileName, Context.MODE_PRIVATE);
+ fos = mContext.openFileOutput(hostoryFileName, Context.MODE_PRIVATE);
} catch (FileNotFoundException fnfe) {
- Log.e(LOG_TAG, "Error writing historical recrod file: " + mHistoryFileName, fnfe);
- return;
+ Log.e(LOG_TAG, "Error writing historical recrod file: " + hostoryFileName, fnfe);
+ return null;
}
XmlSerializer serializer = Xml.newSerializer();
@@ -1102,11 +1076,12 @@
serializer.startDocument("UTF-8", true);
serializer.startTag(null, TAG_HISTORICAL_RECORDS);
- final int recordCount = records.size();
+ final int recordCount = historicalRecords.size();
for (int i = 0; i < recordCount; i++) {
- HistoricalRecord record = records.remove(0);
+ HistoricalRecord record = historicalRecords.remove(0);
serializer.startTag(null, TAG_HISTORICAL_RECORD);
- serializer.attribute(null, ATTRIBUTE_ACTIVITY, record.activity.flattenToString());
+ serializer.attribute(null, ATTRIBUTE_ACTIVITY,
+ record.activity.flattenToString());
serializer.attribute(null, ATTRIBUTE_TIME, String.valueOf(record.time));
serializer.attribute(null, ATTRIBUTE_WEIGHT, String.valueOf(record.weight));
serializer.endTag(null, TAG_HISTORICAL_RECORD);
@@ -1128,6 +1103,7 @@
} catch (IOException ioe) {
Log.e(LOG_TAG, "Error writing historical recrod file: " + mHistoryFileName, ioe);
} finally {
+ mCanReadHistoricalData = true;
if (fos != null) {
try {
fos.close();
@@ -1136,6 +1112,7 @@
}
}
}
+ return null;
}
}
@@ -1145,33 +1122,8 @@
private final class DataModelPackageMonitor extends PackageMonitor {
@Override
- public void onPackageAdded(String packageName, int uid) {
- synchronized (mInstanceLock) {
- loadActivitiesLocked();
- }
- }
-
- @Override
- public void onPackageAppeared(String packageName, int reason) {
- synchronized (mInstanceLock) {
- loadActivitiesLocked();
- }
- }
-
- @Override
- public void onPackageRemoved(String packageName, int uid) {
- synchronized (mInstanceLock) {
- pruneHistoricalRecordsForPackageLocked(packageName);
- loadActivitiesLocked();
- }
- }
-
- @Override
- public void onPackageDisappeared(String packageName, int reason) {
- synchronized (mInstanceLock) {
- pruneHistoricalRecordsForPackageLocked(packageName);
- loadActivitiesLocked();
- }
+ public void onSomePackagesChanged() {
+ mReloadActivities = true;
}
}
}
diff --git a/core/java/android/widget/ActivityChooserView.java b/core/java/android/widget/ActivityChooserView.java
index be6b4e2..0c0bb1e 100644
--- a/core/java/android/widget/ActivityChooserView.java
+++ b/core/java/android/widget/ActivityChooserView.java
@@ -20,8 +20,10 @@
import android.content.Context;
import android.content.Intent;
+import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
+import android.content.res.Configuration;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.database.DataSetObserver;
@@ -174,6 +176,11 @@
private int mDefaultActionButtonContentDescription;
/**
+ * Whether this view has a default activity affordance.
+ */
+ private boolean mHasDefaultActivity;
+
+ /**
* Create a new instance.
*
* @param context The application environment.
@@ -245,6 +252,8 @@
Resources resources = context.getResources();
mListPopupMaxWidth = Math.max(resources.getDisplayMetrics().widthPixels / 2,
resources.getDimensionPixelSize(com.android.internal.R.dimen.config_prefDialogWidth));
+
+ updateHasDefaultActivity();
}
/**
@@ -258,6 +267,21 @@
}
}
+ @Override
+ protected void onConfigurationChanged(Configuration newConfig) {
+ Configuration oldConfig = mContext.getResources().getConfiguration();
+ final int changed = oldConfig.diff(newConfig);
+ if ((changed & ActivityInfo.CONFIG_SCREEN_SIZE) != 0
+ || (changed & ActivityInfo.CONFIG_ORIENTATION) != 0) {
+ updateHasDefaultActivity();
+ }
+ }
+
+ private void updateHasDefaultActivity() {
+ mHasDefaultActivity = mContext.getResources().getBoolean(
+ R.bool.activity_chooser_view_has_default_activity);
+ }
+
/**
* Sets the background for the button that expands the activity
* overflow list.
@@ -383,7 +407,8 @@
protected void onAttachedToWindow() {
super.onAttachedToWindow();
ActivityChooserModel dataModel = mAdapter.getDataModel();
- if (dataModel != null) {
+ if (dataModel != null
+ && !dataModel.isRegisteredObserver(mModelDataSetOberver)) {
dataModel.registerObserver(mModelDataSetOberver);
}
mIsAttachedToWindow = true;
@@ -393,7 +418,8 @@
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
ActivityChooserModel dataModel = mAdapter.getDataModel();
- if (dataModel != null) {
+ if (dataModel != null
+ && dataModel.isRegisteredObserver(mModelDataSetOberver)) {
dataModel.unregisterObserver(mModelDataSetOberver);
}
ViewTreeObserver viewTreeObserver = getViewTreeObserver();
@@ -496,7 +522,7 @@
// Default activity button.
final int activityCount = mAdapter.getActivityCount();
final int historySize = mAdapter.getHistorySize();
- if (activityCount > 0 && historySize > 0) {
+ if (mHasDefaultActivity && activityCount > 0 && historySize > 0) {
mDefaultActivityButton.setVisibility(VISIBLE);
ResolveInfo activity = mAdapter.getDefaultActivity();
PackageManager packageManager = mContext.getPackageManager();
@@ -512,9 +538,9 @@
}
// Activity chooser content.
if (mDefaultActivityButton.getVisibility() == VISIBLE) {
- mActivityChooserContent.setBackgroundDrawable(mActivityChooserContentBackground);
+ mActivityChooserContent.setBackground(mActivityChooserContentBackground);
} else {
- mActivityChooserContent.setBackgroundDrawable(null);
+ mActivityChooserContent.setBackground(null);
}
}
@@ -577,7 +603,7 @@
// OnLongClickListener#onLongClick
@Override
public boolean onLongClick(View view) {
- if (view == mDefaultActivityButton) {
+ if (mHasDefaultActivity && view == mDefaultActivityButton) {
if (mAdapter.getCount() > 0) {
mIsSelectingDefaultActivity = true;
showPopupUnchecked(mInitialActivityCount);
@@ -630,14 +656,16 @@
public void setDataModel(ActivityChooserModel dataModel) {
ActivityChooserModel oldDataModel = mAdapter.getDataModel();
- if (oldDataModel != null && isShown()) {
+ if (oldDataModel != null) {
oldDataModel.unregisterObserver(mModelDataSetOberver);
}
mDataModel = dataModel;
- if (dataModel != null && isShown()) {
+ if (dataModel != null) {
dataModel.registerObserver(mModelDataSetOberver);
+ notifyDataSetChanged();
+ } else {
+ notifyDataSetInvalidated();
}
- notifyDataSetChanged();
}
@Override
diff --git a/core/java/android/widget/AppSecurityPermissions.java b/core/java/android/widget/AppSecurityPermissions.java
index b409e26..64f6c07 100755
--- a/core/java/android/widget/AppSecurityPermissions.java
+++ b/core/java/android/widget/AppSecurityPermissions.java
@@ -18,7 +18,9 @@
import com.android.internal.R;
+import android.app.AlertDialog;
import android.content.Context;
+import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
@@ -27,14 +29,13 @@
import android.content.pm.PermissionInfo;
import android.graphics.drawable.Drawable;
import android.os.Parcel;
-import android.text.Spannable;
-import android.text.SpannableString;
import android.text.SpannableStringBuilder;
import android.text.TextUtils;
-import android.text.style.ForegroundColorSpan;
+import android.util.AttributeSet;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
+import android.view.ViewGroup;
import java.text.Collator;
import java.util.ArrayList;
@@ -42,7 +43,6 @@
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -58,16 +58,65 @@
*
* {@hide}
*/
-public class AppSecurityPermissions implements View.OnClickListener {
+public class AppSecurityPermissions {
- private enum State {
- NO_PERMS,
- DANGEROUS_ONLY,
- NORMAL_ONLY,
- BOTH
+ public static final int WHICH_PERSONAL = 1<<0;
+ public static final int WHICH_DEVICE = 1<<1;
+ public static final int WHICH_NEW = 1<<2;
+ public static final int WHICH_ALL = 0xffff;
+
+ private final static String TAG = "AppSecurityPermissions";
+ private boolean localLOGV = false;
+ private Context mContext;
+ private LayoutInflater mInflater;
+ private PackageManager mPm;
+ private PackageInfo mInstalledPackageInfo;
+ private final Map<String, MyPermissionGroupInfo> mPermGroups
+ = new HashMap<String, MyPermissionGroupInfo>();
+ private final List<MyPermissionGroupInfo> mPermGroupsList
+ = new ArrayList<MyPermissionGroupInfo>();
+ private final PermissionGroupInfoComparator mPermGroupComparator;
+ private final PermissionInfoComparator mPermComparator;
+ private List<MyPermissionInfo> mPermsList;
+ private CharSequence mNewPermPrefix;
+ private Drawable mNormalIcon;
+ private Drawable mDangerousIcon;
+
+ static class MyPermissionGroupInfo extends PermissionGroupInfo {
+ CharSequence mLabel;
+
+ final ArrayList<MyPermissionInfo> mNewPermissions = new ArrayList<MyPermissionInfo>();
+ final ArrayList<MyPermissionInfo> mPersonalPermissions = new ArrayList<MyPermissionInfo>();
+ final ArrayList<MyPermissionInfo> mDevicePermissions = new ArrayList<MyPermissionInfo>();
+ final ArrayList<MyPermissionInfo> mAllPermissions = new ArrayList<MyPermissionInfo>();
+
+ MyPermissionGroupInfo(PermissionInfo perm) {
+ name = perm.packageName;
+ packageName = perm.packageName;
+ }
+
+ MyPermissionGroupInfo(PermissionGroupInfo info) {
+ super(info);
+ }
+
+ public Drawable loadGroupIcon(PackageManager pm) {
+ if (icon != 0) {
+ return loadIcon(pm);
+ } else {
+ ApplicationInfo appInfo;
+ try {
+ appInfo = pm.getApplicationInfo(packageName, 0);
+ return appInfo.loadIcon(pm);
+ } catch (NameNotFoundException e) {
+ }
+ }
+ return null;
+ }
}
static class MyPermissionInfo extends PermissionInfo {
+ CharSequence mLabel;
+
/**
* PackageInfo.requestedPermissionsFlags for the new package being installed.
*/
@@ -99,46 +148,108 @@
}
}
- private final static String TAG = "AppSecurityPermissions";
- private boolean localLOGV = false;
- private Context mContext;
- private LayoutInflater mInflater;
- private PackageManager mPm;
- private LinearLayout mPermsView;
- private Map<String, CharSequence> mNewMap;
- private Map<String, CharSequence> mDangerousMap;
- private Map<String, CharSequence> mNormalMap;
- private List<MyPermissionInfo> mPermsList;
- private String mDefaultGrpLabel;
- private String mDefaultGrpName="DefaultGrp";
- private String mPermFormat;
- private CharSequence mNewPermPrefix;
- private Drawable mNormalIcon;
- private Drawable mDangerousIcon;
- private boolean mExpanded;
- private Drawable mShowMaxIcon;
- private Drawable mShowMinIcon;
- private View mShowMore;
- private TextView mShowMoreText;
- private ImageView mShowMoreIcon;
- private State mCurrentState;
- private LinearLayout mNonDangerousList;
- private LinearLayout mDangerousList;
- private LinearLayout mNewList;
- private HashMap<String, CharSequence> mGroupLabelCache;
- private View mNoPermsView;
+ public static class PermissionItemView extends LinearLayout implements View.OnClickListener {
+ MyPermissionGroupInfo mGroup;
+ MyPermissionInfo mPerm;
+ AlertDialog mDialog;
+
+ public PermissionItemView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ setClickable(true);
+ }
+
+ public void setPermission(MyPermissionGroupInfo grp, MyPermissionInfo perm,
+ boolean first, CharSequence newPermPrefix) {
+ mGroup = grp;
+ mPerm = perm;
+
+ ImageView permGrpIcon = (ImageView) findViewById(R.id.perm_icon);
+ TextView permNameView = (TextView) findViewById(R.id.perm_name);
+
+ PackageManager pm = getContext().getPackageManager();
+ Drawable icon = null;
+ if (first) {
+ icon = grp.loadGroupIcon(pm);
+ }
+ CharSequence label = perm.mLabel;
+ if (perm.mNew && newPermPrefix != null) {
+ // If this is a new permission, format it appropriately.
+ SpannableStringBuilder builder = new SpannableStringBuilder();
+ Parcel parcel = Parcel.obtain();
+ TextUtils.writeToParcel(newPermPrefix, parcel, 0);
+ parcel.setDataPosition(0);
+ CharSequence newStr = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(parcel);
+ parcel.recycle();
+ builder.append(newStr);
+ builder.append(label);
+ label = builder;
+ }
+
+ permGrpIcon.setImageDrawable(icon);
+ permNameView.setText(label);
+ setOnClickListener(this);
+ }
+
+ @Override
+ public void onClick(View v) {
+ if (mGroup != null && mPerm != null) {
+ if (mDialog != null) {
+ mDialog.dismiss();
+ }
+ PackageManager pm = getContext().getPackageManager();
+ AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
+ builder.setTitle(mGroup.mLabel);
+ if (mPerm.descriptionRes != 0) {
+ builder.setMessage(mPerm.loadDescription(pm));
+ } else {
+ CharSequence appName;
+ try {
+ ApplicationInfo app = pm.getApplicationInfo(mPerm.packageName, 0);
+ appName = app.loadLabel(pm);
+ } catch (NameNotFoundException e) {
+ appName = mPerm.packageName;
+ }
+ StringBuilder sbuilder = new StringBuilder(128);
+ sbuilder.append(getContext().getString(
+ R.string.perms_description_app, appName));
+ sbuilder.append("\n\n");
+ sbuilder.append(mPerm.name);
+ builder.setMessage(sbuilder.toString());
+ }
+ builder.setCancelable(true);
+ builder.setIcon(mGroup.loadGroupIcon(pm));
+ mDialog = builder.show();
+ mDialog.setCanceledOnTouchOutside(true);
+ }
+ }
+
+ @Override
+ protected void onDetachedFromWindow() {
+ super.onDetachedFromWindow();
+ if (mDialog != null) {
+ mDialog.dismiss();
+ }
+ }
+ }
public AppSecurityPermissions(Context context, List<PermissionInfo> permList) {
mContext = context;
mPm = mContext.getPackageManager();
+ loadResources();
+ mPermComparator = new PermissionInfoComparator();
+ mPermGroupComparator = new PermissionGroupInfoComparator();
for (PermissionInfo pi : permList) {
mPermsList.add(new MyPermissionInfo(pi));
}
+ setPermissions(mPermsList);
}
public AppSecurityPermissions(Context context, String packageName) {
mContext = context;
mPm = mContext.getPackageManager();
+ loadResources();
+ mPermComparator = new PermissionInfoComparator();
+ mPermGroupComparator = new PermissionGroupInfoComparator();
mPermsList = new ArrayList<MyPermissionInfo>();
Set<MyPermissionInfo> permSet = new HashSet<MyPermissionInfo>();
PackageInfo pkgInfo;
@@ -155,11 +266,15 @@
for(MyPermissionInfo tmpInfo : permSet) {
mPermsList.add(tmpInfo);
}
+ setPermissions(mPermsList);
}
-
+
public AppSecurityPermissions(Context context, PackageParser.Package pkg) {
mContext = context;
mPm = mContext.getPackageManager();
+ loadResources();
+ mPermComparator = new PermissionInfoComparator();
+ mPermGroupComparator = new PermissionGroupInfoComparator();
mPermsList = new ArrayList<MyPermissionInfo>();
Set<MyPermissionInfo> permSet = new HashSet<MyPermissionInfo>();
if(pkg == null) {
@@ -193,10 +308,20 @@
for (MyPermissionInfo tmpInfo : permSet) {
mPermsList.add(tmpInfo);
}
+ setPermissions(mPermsList);
}
-
+
+ private void loadResources() {
+ // Pick up from framework resources instead.
+ mNewPermPrefix = mContext.getText(R.string.perms_new_perm_prefix);
+ mNormalIcon = mContext.getResources().getDrawable(R.drawable.ic_text_dot);
+ mDangerousIcon = mContext.getResources().getDrawable(R.drawable.ic_bullet_key_permission);
+ }
+
/**
- * Utility to retrieve a view displaying a single permission.
+ * Utility to retrieve a view displaying a single permission. This provides
+ * the old UI layout for permissions; it is only here for the device admin
+ * settings to continue to use.
*/
public static View getPermissionItemView(Context context,
CharSequence grpName, CharSequence description, boolean dangerous) {
@@ -204,10 +329,14 @@
Context.LAYOUT_INFLATER_SERVICE);
Drawable icon = context.getResources().getDrawable(dangerous
? R.drawable.ic_bullet_key_permission : R.drawable.ic_text_dot);
- return getPermissionItemView(context, inflater, grpName,
+ return getPermissionItemViewOld(context, inflater, grpName,
description, dangerous, icon);
}
+ public PackageInfo getInstalledPackageInfo() {
+ return mInstalledPackageInfo;
+ }
+
private void getAllUsedPermissions(int sharedUid, Set<MyPermissionInfo> permSet) {
String sharedPkgList[] = mPm.getPackagesForUid(sharedUid);
if(sharedPkgList == null || (sharedPkgList.length == 0)) {
@@ -239,6 +368,7 @@
if ((strList == null) || (strList.length == 0)) {
return;
}
+ mInstalledPackageInfo = installedPkgInfo;
for (int i=0; i<strList.length; i++) {
String permName = strList[i];
// If we are only looking at an existing app, then we only
@@ -270,13 +400,42 @@
// to see, so skip it.
continue;
}
+ final String origGroupName = tmpPermInfo.group;
+ String groupName = origGroupName;
+ if (groupName == null) {
+ groupName = tmpPermInfo.packageName;
+ tmpPermInfo.group = groupName;
+ }
+ MyPermissionGroupInfo group = mPermGroups.get(groupName);
+ if (group == null) {
+ PermissionGroupInfo grp = null;
+ if (origGroupName != null) {
+ grp = mPm.getPermissionGroupInfo(origGroupName, 0);
+ }
+ if (grp != null) {
+ group = new MyPermissionGroupInfo(grp);
+ } else {
+ // We could be here either because the permission
+ // didn't originally specify a group or the group it
+ // gave couldn't be found. In either case, we consider
+ // its group to be the permission's package name.
+ tmpPermInfo.group = tmpPermInfo.packageName;
+ group = mPermGroups.get(tmpPermInfo.group);
+ if (group == null) {
+ group = new MyPermissionGroupInfo(tmpPermInfo);
+ }
+ group = new MyPermissionGroupInfo(tmpPermInfo);
+ }
+ mPermGroups.put(tmpPermInfo.group, group);
+ }
+ final boolean newPerm = installedPkgInfo != null
+ && (existingFlags&PackageInfo.REQUESTED_PERMISSION_GRANTED) == 0;
MyPermissionInfo myPerm = new MyPermissionInfo(tmpPermInfo);
myPerm.mNewReqFlags = flagsList[i];
myPerm.mExistingReqFlags = existingFlags;
// This is a new permission if the app is already installed and
// doesn't currently hold this permission.
- myPerm.mNew = installedPkgInfo != null
- && (existingFlags&PackageInfo.REQUESTED_PERMISSION_GRANTED) == 0;
+ myPerm.mNew = newPerm;
permSet.add(myPerm);
} catch (NameNotFoundException e) {
Log.i(TAG, "Ignoring unknown permission:"+permName);
@@ -285,149 +444,99 @@
}
public int getPermissionCount() {
- return mPermsList.size();
+ return getPermissionCount(WHICH_ALL);
+ }
+
+ private List<MyPermissionInfo> getPermissionList(MyPermissionGroupInfo grp, int which) {
+ if (which == WHICH_NEW) {
+ return grp.mNewPermissions;
+ } else if (which == WHICH_PERSONAL) {
+ return grp.mPersonalPermissions;
+ } else if (which == WHICH_DEVICE) {
+ return grp.mDevicePermissions;
+ } else {
+ return grp.mAllPermissions;
+ }
+ }
+
+ public int getPermissionCount(int which) {
+ int N = 0;
+ for (int i=0; i<mPermGroupsList.size(); i++) {
+ N += getPermissionList(mPermGroupsList.get(i), which).size();
+ }
+ return N;
}
public View getPermissionsView() {
-
+ return getPermissionsView(WHICH_ALL);
+ }
+
+ public View getPermissionsView(int which) {
mInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- mPermsView = (LinearLayout) mInflater.inflate(R.layout.app_perms_summary, null);
- mShowMore = mPermsView.findViewById(R.id.show_more);
- mShowMoreIcon = (ImageView) mShowMore.findViewById(R.id.show_more_icon);
- mShowMoreText = (TextView) mShowMore.findViewById(R.id.show_more_text);
- mNewList = (LinearLayout) mPermsView.findViewById(R.id.new_perms_list);
- mDangerousList = (LinearLayout) mPermsView.findViewById(R.id.dangerous_perms_list);
- mNonDangerousList = (LinearLayout) mPermsView.findViewById(R.id.non_dangerous_perms_list);
- mNoPermsView = mPermsView.findViewById(R.id.no_permissions);
- // Set up the LinearLayout that acts like a list item.
- mShowMore.setClickable(true);
- mShowMore.setOnClickListener(this);
- mShowMore.setFocusable(true);
+ LinearLayout permsView = (LinearLayout) mInflater.inflate(R.layout.app_perms_summary, null);
+ LinearLayout displayList = (LinearLayout) permsView.findViewById(R.id.perms_list);
+ View noPermsView = permsView.findViewById(R.id.no_permissions);
- // Pick up from framework resources instead.
- mDefaultGrpLabel = mContext.getString(R.string.default_permission_group);
- mPermFormat = mContext.getString(R.string.permissions_format);
- mNewPermPrefix = mContext.getText(R.string.perms_new_perm_prefix);
- mNormalIcon = mContext.getResources().getDrawable(R.drawable.ic_text_dot);
- mDangerousIcon = mContext.getResources().getDrawable(R.drawable.ic_bullet_key_permission);
- mShowMaxIcon = mContext.getResources().getDrawable(R.drawable.expander_close_holo_dark);
- mShowMinIcon = mContext.getResources().getDrawable(R.drawable.expander_open_holo_dark);
-
- // Set permissions view
- setPermissions(mPermsList);
- return mPermsView;
- }
+ displayPermissions(mPermGroupsList, displayList, which);
+ if (displayList.getChildCount() <= 0) {
+ noPermsView.setVisibility(View.VISIBLE);
+ }
- /**
- * Utility method that concatenates two strings defined by mPermFormat.
- * a null value is returned if both str1 and str2 are null, if one of the strings
- * is null the other non null value is returned without formatting
- * this is to placate initial error checks
- */
- private CharSequence formatPermissions(CharSequence groupDesc, CharSequence permDesc,
- boolean newPerms) {
- if (permDesc == null) {
- return groupDesc;
- }
- // Sometimes people write permission names with a trailing period;
- // strip that if it appears.
- int len = permDesc.length();
- if (len > 0 && permDesc.charAt(len-1) == '.') {
- permDesc = (permDesc.toString()).substring(0, len-1);
- }
- if (newPerms) {
- if (true) {
- // If this is a new permission, format it appropriately.
- SpannableStringBuilder builder = new SpannableStringBuilder();
- if (groupDesc != null) {
- // The previous permissions go in front, with a newline
- // separating them.
- builder.append(groupDesc);
- builder.append("\n");
- }
- Parcel parcel = Parcel.obtain();
- TextUtils.writeToParcel(mNewPermPrefix, parcel, 0);
- parcel.setDataPosition(0);
- CharSequence newStr = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(parcel);
- parcel.recycle();
- builder.append(newStr);
- builder.append(permDesc);
- return builder;
- } else {
- // If this is a new permission, format it appropriately.
- SpannableStringBuilder builder = new SpannableStringBuilder(permDesc);
- builder.insert(0, mNewPermPrefix);
- if (groupDesc != null) {
- // The previous permissions go in front, with a newline
- // separating them.
- builder.insert(0, "\n");
- builder.insert(0, groupDesc);
- }
- return builder;
- }
- }
- if (groupDesc == null) {
- return permDesc;
- }
- // groupDesc and permDesc are non null
- return String.format(mPermFormat, groupDesc, permDesc.toString());
- }
-
- private CharSequence getGroupLabel(String grpName) {
- if (grpName == null) {
- //return default label
- return mDefaultGrpLabel;
- }
- CharSequence cachedLabel = mGroupLabelCache.get(grpName);
- if (cachedLabel != null) {
- return cachedLabel;
- }
- PermissionGroupInfo pgi;
- try {
- pgi = mPm.getPermissionGroupInfo(grpName, 0);
- } catch (NameNotFoundException e) {
- Log.i(TAG, "Invalid group name:" + grpName);
- return null;
- }
- CharSequence label = pgi.loadLabel(mPm).toString();
- mGroupLabelCache.put(grpName, label);
- return label;
+ return permsView;
}
/**
* Utility method that displays permissions from a map containing group name and
* list of permission descriptions.
*/
- private void displayPermissions(Map<String, CharSequence> permInfoMap,
- LinearLayout permListView, boolean dangerous) {
+ private void displayPermissions(List<MyPermissionGroupInfo> groups,
+ LinearLayout permListView, int which) {
permListView.removeAllViews();
- Set<String> permInfoStrSet = permInfoMap.keySet();
- for (String loopPermGrpInfoStr : permInfoStrSet) {
- CharSequence grpLabel = getGroupLabel(loopPermGrpInfoStr);
- //guaranteed that grpLabel wont be null since permissions without groups
- //will belong to the default group
- if(localLOGV) Log.i(TAG, "Adding view group:" + grpLabel + ", desc:"
- + permInfoMap.get(loopPermGrpInfoStr));
- permListView.addView(getPermissionItemView(grpLabel,
- permInfoMap.get(loopPermGrpInfoStr), dangerous));
+ int spacing = (int)(8*mContext.getResources().getDisplayMetrics().density);
+
+ for (int i=0; i<groups.size(); i++) {
+ MyPermissionGroupInfo grp = groups.get(i);
+ final List<MyPermissionInfo> perms = getPermissionList(grp, which);
+ for (int j=0; j<perms.size(); j++) {
+ MyPermissionInfo perm = perms.get(j);
+ View view = getPermissionItemView(grp, perm, j == 0,
+ which != WHICH_NEW ? mNewPermPrefix : null);
+ LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
+ ViewGroup.LayoutParams.MATCH_PARENT,
+ ViewGroup.LayoutParams.WRAP_CONTENT);
+ if (j == 0) {
+ lp.topMargin = spacing;
+ }
+ if (j == grp.mAllPermissions.size()-1) {
+ lp.bottomMargin = spacing;
+ }
+ if (permListView.getChildCount() == 0) {
+ lp.topMargin *= 2;
+ }
+ permListView.addView(view, lp);
+ }
}
}
- private void displayNoPermissions() {
- mNoPermsView.setVisibility(View.VISIBLE);
+ private PermissionItemView getPermissionItemView(MyPermissionGroupInfo grp,
+ MyPermissionInfo perm, boolean first, CharSequence newPermPrefix) {
+ return getPermissionItemView(mContext, mInflater, grp, perm, first, newPermPrefix);
}
- private View getPermissionItemView(CharSequence grpName, CharSequence permList,
- boolean dangerous) {
- return getPermissionItemView(mContext, mInflater, grpName, permList,
- dangerous, dangerous ? mDangerousIcon : mNormalIcon);
+ private static PermissionItemView getPermissionItemView(Context context, LayoutInflater inflater,
+ MyPermissionGroupInfo grp, MyPermissionInfo perm, boolean first,
+ CharSequence newPermPrefix) {
+ PermissionItemView permView = (PermissionItemView)inflater.inflate(
+ R.layout.app_permission_item, null);
+ permView.setPermission(grp, perm, first, newPermPrefix);
+ return permView;
}
- private static View getPermissionItemView(Context context, LayoutInflater inflater,
+ private static View getPermissionItemViewOld(Context context, LayoutInflater inflater,
CharSequence grpName, CharSequence permList, boolean dangerous, Drawable icon) {
- View permView = inflater.inflate(R.layout.app_permission_item, null);
+ View permView = inflater.inflate(R.layout.app_permission_item_old, null);
TextView permGrpView = (TextView) permView.findViewById(R.id.permission_group);
TextView permDescView = (TextView) permView.findViewById(R.id.permission_list);
@@ -444,41 +553,6 @@
return permView;
}
- private void showPermissions() {
-
- switch(mCurrentState) {
- case NO_PERMS:
- displayNoPermissions();
- break;
-
- case DANGEROUS_ONLY:
- displayPermissions(mNewMap, mNewList, true);
- displayPermissions(mDangerousMap, mDangerousList, true);
- break;
-
- case NORMAL_ONLY:
- displayPermissions(mNewMap, mNewList, true);
- displayPermissions(mNormalMap, mNonDangerousList, false);
- break;
-
- case BOTH:
- displayPermissions(mNewMap, mNewList, true);
- displayPermissions(mDangerousMap, mDangerousList, true);
- if (mExpanded) {
- displayPermissions(mNormalMap, mNonDangerousList, false);
- mShowMoreIcon.setImageDrawable(mShowMaxIcon);
- mShowMoreText.setText(R.string.perms_hide);
- mNonDangerousList.setVisibility(View.VISIBLE);
- } else {
- mShowMoreIcon.setImageDrawable(mShowMinIcon);
- mShowMoreText.setText(R.string.perms_show_all);
- mNonDangerousList.setVisibility(View.GONE);
- }
- mShowMore.setVisibility(View.VISIBLE);
- break;
- }
- }
-
private boolean isDisplayablePermission(PermissionInfo pInfo, int newReqFlags,
int existingReqFlags) {
final int base = pInfo.protectionLevel & PermissionInfo.PROTECTION_MASK_BASE;
@@ -496,79 +570,45 @@
}
return false;
}
-
- /*
- * Utility method that aggregates all permission descriptions categorized by group
- * Say group1 has perm11, perm12, perm13, the group description will be
- * perm11_Desc, perm12_Desc, perm13_Desc
- */
- private void aggregateGroupDescs(Map<String, List<MyPermissionInfo> > map,
- Map<String, CharSequence> retMap, boolean newPerms) {
- if(map == null) {
- return;
- }
- if(retMap == null) {
- return;
- }
- Set<String> grpNames = map.keySet();
- Iterator<String> grpNamesIter = grpNames.iterator();
- while(grpNamesIter.hasNext()) {
- CharSequence grpDesc = null;
- String grpNameKey = grpNamesIter.next();
- List<MyPermissionInfo> grpPermsList = map.get(grpNameKey);
- if(grpPermsList == null) {
- continue;
- }
- for(PermissionInfo permInfo: grpPermsList) {
- CharSequence permDesc = permInfo.loadLabel(mPm);
- grpDesc = formatPermissions(grpDesc, permDesc, newPerms);
- }
- // Insert grpDesc into map
- if(grpDesc != null) {
- if(localLOGV) Log.i(TAG, "Group:"+grpNameKey+" description:"+grpDesc.toString());
- retMap.put(grpNameKey, grpDesc);
- }
- }
- }
- private static class PermissionInfoComparator implements Comparator<PermissionInfo> {
- private PackageManager mPm;
+ private static class PermissionGroupInfoComparator implements Comparator<MyPermissionGroupInfo> {
private final Collator sCollator = Collator.getInstance();
- PermissionInfoComparator(PackageManager pm) {
- mPm = pm;
+ PermissionGroupInfoComparator() {
}
- public final int compare(PermissionInfo a, PermissionInfo b) {
- CharSequence sa = a.loadLabel(mPm);
- CharSequence sb = b.loadLabel(mPm);
- return sCollator.compare(sa, sb);
+ public final int compare(MyPermissionGroupInfo a, MyPermissionGroupInfo b) {
+ if (((a.flags^b.flags)&PermissionGroupInfo.FLAG_PERSONAL_INFO) != 0) {
+ return ((a.flags&PermissionGroupInfo.FLAG_PERSONAL_INFO) != 0) ? -1 : 1;
+ }
+ if (a.priority != b.priority) {
+ return a.priority > b.priority ? -1 : 1;
+ }
+ return sCollator.compare(a.mLabel, b.mLabel);
}
}
+ private static class PermissionInfoComparator implements Comparator<MyPermissionInfo> {
+ private final Collator sCollator = Collator.getInstance();
+ PermissionInfoComparator() {
+ }
+ public final int compare(MyPermissionInfo a, MyPermissionInfo b) {
+ return sCollator.compare(a.mLabel, b.mLabel);
+ }
+ }
+
+ private void addPermToList(List<MyPermissionInfo> permList,
+ MyPermissionInfo pInfo) {
+ if (pInfo.mLabel == null) {
+ pInfo.mLabel = pInfo.loadLabel(mPm);
+ }
+ int idx = Collections.binarySearch(permList, pInfo, mPermComparator);
+ if(localLOGV) Log.i(TAG, "idx="+idx+", list.size="+permList.size());
+ if (idx < 0) {
+ idx = -idx-1;
+ permList.add(idx, pInfo);
+ }
+ }
+
private void setPermissions(List<MyPermissionInfo> permList) {
- mGroupLabelCache = new HashMap<String, CharSequence>();
- //add the default label so that uncategorized permissions can go here
- mGroupLabelCache.put(mDefaultGrpName, mDefaultGrpLabel);
-
- // Map containing group names and a list of permissions under that group
- // that are new from the current install
- mNewMap = new HashMap<String, CharSequence>();
- // Map containing group names and a list of permissions under that group
- // categorized as dangerous
- mDangerousMap = new HashMap<String, CharSequence>();
- // Map containing group names and a list of permissions under that group
- // categorized as normal
- mNormalMap = new HashMap<String, CharSequence>();
-
- // Additional structures needed to ensure that permissions are unique under
- // each group
- Map<String, List<MyPermissionInfo>> newMap =
- new HashMap<String, List<MyPermissionInfo>>();
- Map<String, List<MyPermissionInfo>> dangerousMap =
- new HashMap<String, List<MyPermissionInfo>>();
- Map<String, List<MyPermissionInfo> > normalMap =
- new HashMap<String, List<MyPermissionInfo>>();
- PermissionInfoComparator permComparator = new PermissionInfoComparator(mPm);
-
if (permList != null) {
// First pass to group permissions
for (MyPermissionInfo pInfo : permList) {
@@ -577,51 +617,43 @@
if(localLOGV) Log.i(TAG, "Permission:"+pInfo.name+" is not displayable");
continue;
}
- Map<String, List<MyPermissionInfo> > permInfoMap;
- if (pInfo.mNew) {
- permInfoMap = newMap;
- } else if ((pInfo.protectionLevel&PermissionInfo.PROTECTION_MASK_BASE)
- == PermissionInfo.PROTECTION_DANGEROUS) {
- permInfoMap = dangerousMap;
- } else {
- permInfoMap = normalMap;
- }
- String grpName = (pInfo.group == null) ? mDefaultGrpName : pInfo.group;
- if(localLOGV) Log.i(TAG, "Permission:"+pInfo.name+" belongs to group:"+grpName);
- List<MyPermissionInfo> grpPermsList = permInfoMap.get(grpName);
- if(grpPermsList == null) {
- grpPermsList = new ArrayList<MyPermissionInfo>();
- permInfoMap.put(grpName, grpPermsList);
- grpPermsList.add(pInfo);
- } else {
- int idx = Collections.binarySearch(grpPermsList, pInfo, permComparator);
- if(localLOGV) Log.i(TAG, "idx="+idx+", list.size="+grpPermsList.size());
- if (idx < 0) {
- idx = -idx-1;
- grpPermsList.add(idx, pInfo);
+ MyPermissionGroupInfo group = mPermGroups.get(pInfo.group);
+ if (group != null) {
+ pInfo.mLabel = pInfo.loadLabel(mPm);
+ addPermToList(group.mAllPermissions, pInfo);
+ if (pInfo.mNew) {
+ addPermToList(group.mNewPermissions, pInfo);
+ }
+ if ((group.flags&PermissionGroupInfo.FLAG_PERSONAL_INFO) != 0) {
+ addPermToList(group.mPersonalPermissions, pInfo);
+ } else {
+ addPermToList(group.mDevicePermissions, pInfo);
}
}
}
- // Second pass to actually form the descriptions
- // Look at dangerous permissions first
- aggregateGroupDescs(newMap, mNewMap, true);
- aggregateGroupDescs(dangerousMap, mDangerousMap, false);
- aggregateGroupDescs(normalMap, mNormalMap, false);
}
- mCurrentState = State.NO_PERMS;
- if (mNewMap.size() > 0 || mDangerousMap.size() > 0) {
- mCurrentState = (mNormalMap.size() > 0) ? State.BOTH : State.DANGEROUS_ONLY;
- } else if(mNormalMap.size() > 0) {
- mCurrentState = State.NORMAL_ONLY;
+ for (MyPermissionGroupInfo pgrp : mPermGroups.values()) {
+ if (pgrp.labelRes != 0 || pgrp.nonLocalizedLabel != null) {
+ pgrp.mLabel = pgrp.loadLabel(mPm);
+ } else {
+ ApplicationInfo app;
+ try {
+ app = mPm.getApplicationInfo(pgrp.packageName, 0);
+ pgrp.mLabel = app.loadLabel(mPm);
+ } catch (NameNotFoundException e) {
+ pgrp.mLabel = pgrp.loadLabel(mPm);
+ }
+ }
+ mPermGroupsList.add(pgrp);
}
- if(localLOGV) Log.i(TAG, "mCurrentState=" + mCurrentState);
- showPermissions();
- }
-
- public void onClick(View v) {
- if(localLOGV) Log.i(TAG, "mExpanded="+mExpanded);
- mExpanded = !mExpanded;
- showPermissions();
+ Collections.sort(mPermGroupsList, mPermGroupComparator);
+ if (false) {
+ for (MyPermissionGroupInfo grp : mPermGroupsList) {
+ Log.i("foo", "Group " + grp.name + " personal="
+ + ((grp.flags&PermissionGroupInfo.FLAG_PERSONAL_INFO) != 0)
+ + " priority=" + grp.priority);
+ }
+ }
}
}
diff --git a/core/java/android/widget/AutoCompleteTextView.java b/core/java/android/widget/AutoCompleteTextView.java
index de11fe9..e5199f6 100644
--- a/core/java/android/widget/AutoCompleteTextView.java
+++ b/core/java/android/widget/AutoCompleteTextView.java
@@ -218,6 +218,8 @@
*
* @param hint the text to be displayed to the user
*
+ * @see #getCompletionHint()
+ *
* @attr ref android.R.styleable#AutoCompleteTextView_completionHint
*/
public void setCompletionHint(CharSequence hint) {
@@ -237,7 +239,20 @@
mHintView = null;
}
}
-
+
+ /**
+ * Gets the optional hint text displayed at the bottom of the the matching list.
+ *
+ * @return The hint text, if any
+ *
+ * @see #setCompletionHint(CharSequence)
+ *
+ * @attr ref android.R.styleable#AutoCompleteTextView_completionHint
+ */
+ public CharSequence getCompletionHint() {
+ return mHintText;
+ }
+
/**
* <p>Returns the current width for the auto-complete drop down list. This can
* be a fixed width, or {@link ViewGroup.LayoutParams#MATCH_PARENT} to fill the screen, or
@@ -468,6 +483,8 @@
* @return the minimum number of characters to type to show the drop down
*
* @see #setThreshold(int)
+ *
+ * @attr ref android.R.styleable#AutoCompleteTextView_completionThreshold
*/
public int getThreshold() {
return mThreshold;
diff --git a/core/java/android/widget/CalendarView.java b/core/java/android/widget/CalendarView.java
index 2a74f6a..b06da06 100644
--- a/core/java/android/widget/CalendarView.java
+++ b/core/java/android/widget/CalendarView.java
@@ -421,6 +421,8 @@
* Sets the number of weeks to be shown.
*
* @param count The shown week count.
+ *
+ * @attr ref android.R.styleable#CalendarView_shownWeekCount
*/
public void setShownWeekCount(int count) {
if (mShownWeekCount != count) {
@@ -433,6 +435,8 @@
* Gets the number of weeks to be shown.
*
* @return The shown week count.
+ *
+ * @attr ref android.R.styleable#CalendarView_shownWeekCount
*/
public int getShownWeekCount() {
return mShownWeekCount;
@@ -442,6 +446,8 @@
* Sets the background color for the selected week.
*
* @param color The week background color.
+ *
+ * @attr ref android.R.styleable#CalendarView_selectedWeekBackgroundColor
*/
public void setSelectedWeekBackgroundColor(int color) {
if (mSelectedWeekBackgroundColor != color) {
@@ -460,6 +466,8 @@
* Gets the background color for the selected week.
*
* @return The week background color.
+ *
+ * @attr ref android.R.styleable#CalendarView_selectedWeekBackgroundColor
*/
public int getSelectedWeekBackgroundColor() {
return mSelectedWeekBackgroundColor;
@@ -469,6 +477,8 @@
* Sets the color for the dates of the focused month.
*
* @param color The focused month date color.
+ *
+ * @attr ref android.R.styleable#CalendarView_focusedMonthDateColor
*/
public void setFocusedMonthDateColor(int color) {
if (mFocusedMonthDateColor != color) {
@@ -487,6 +497,8 @@
* Gets the color for the dates in the focused month.
*
* @return The focused month date color.
+ *
+ * @attr ref android.R.styleable#CalendarView_focusedMonthDateColor
*/
public int getFocusedMonthDateColor() {
return mFocusedMonthDateColor;
@@ -496,6 +508,8 @@
* Sets the color for the dates of a not focused month.
*
* @param color A not focused month date color.
+ *
+ * @attr ref android.R.styleable#CalendarView_unfocusedMonthDateColor
*/
public void setUnfocusedMonthDateColor(int color) {
if (mUnfocusedMonthDateColor != color) {
@@ -514,6 +528,8 @@
* Gets the color for the dates in a not focused month.
*
* @return A not focused month date color.
+ *
+ * @attr ref android.R.styleable#CalendarView_unfocusedMonthDateColor
*/
public int getUnfocusedMonthDateColor() {
return mFocusedMonthDateColor;
@@ -523,6 +539,8 @@
* Sets the color for the week numbers.
*
* @param color The week number color.
+ *
+ * @attr ref android.R.styleable#CalendarView_weekNumberColor
*/
public void setWeekNumberColor(int color) {
if (mWeekNumberColor != color) {
@@ -537,6 +555,8 @@
* Gets the color for the week numbers.
*
* @return The week number color.
+ *
+ * @attr ref android.R.styleable#CalendarView_weekNumberColor
*/
public int getWeekNumberColor() {
return mWeekNumberColor;
@@ -546,6 +566,8 @@
* Sets the color for the separator line between weeks.
*
* @param color The week separator color.
+ *
+ * @attr ref android.R.styleable#CalendarView_weekSeparatorLineColor
*/
public void setWeekSeparatorLineColor(int color) {
if (mWeekSeparatorLineColor != color) {
@@ -558,6 +580,8 @@
* Gets the color for the separator line between weeks.
*
* @return The week separator color.
+ *
+ * @attr ref android.R.styleable#CalendarView_weekSeparatorLineColor
*/
public int getWeekSeparatorLineColor() {
return mWeekSeparatorLineColor;
@@ -568,6 +592,8 @@
* the end of the selected date.
*
* @param resourceId The vertical bar drawable resource id.
+ *
+ * @attr ref android.R.styleable#CalendarView_selectedDateVerticalBar
*/
public void setSelectedDateVerticalBar(int resourceId) {
Drawable drawable = getResources().getDrawable(resourceId);
@@ -579,6 +605,8 @@
* the end of the selected date.
*
* @param drawable The vertical bar drawable.
+ *
+ * @attr ref android.R.styleable#CalendarView_selectedDateVerticalBar
*/
public void setSelectedDateVerticalBar(Drawable drawable) {
if (mSelectedDateVerticalBar != drawable) {
@@ -607,6 +635,8 @@
* Sets the text appearance for the week day abbreviation of the calendar header.
*
* @param resourceId The text appearance resource id.
+ *
+ * @attr ref android.R.styleable#CalendarView_weekDayTextAppearance
*/
public void setWeekDayTextAppearance(int resourceId) {
if (mWeekDayTextAppearanceResId != resourceId) {
@@ -619,6 +649,8 @@
* Gets the text appearance for the week day abbreviation of the calendar header.
*
* @return The text appearance resource id.
+ *
+ * @attr ref android.R.styleable#CalendarView_weekDayTextAppearance
*/
public int getWeekDayTextAppearance() {
return mWeekDayTextAppearanceResId;
@@ -628,6 +660,8 @@
* Sets the text appearance for the calendar dates.
*
* @param resourceId The text appearance resource id.
+ *
+ * @attr ref android.R.styleable#CalendarView_dateTextAppearance
*/
public void setDateTextAppearance(int resourceId) {
if (mDateTextAppearanceResId != resourceId) {
@@ -641,6 +675,8 @@
* Gets the text appearance for the calendar dates.
*
* @return The text appearance resource id.
+ *
+ * @attr ref android.R.styleable#CalendarView_dateTextAppearance
*/
public int getDateTextAppearance() {
return mDateTextAppearanceResId;
@@ -683,6 +719,8 @@
* <p>
*
* @return The minimal supported date.
+ *
+ * @attr ref android.R.styleable#CalendarView_minDate
*/
public long getMinDate() {
return mMinDate.getTimeInMillis();
@@ -694,6 +732,8 @@
* zone.
*
* @param minDate The minimal supported date.
+ *
+ * @attr ref android.R.styleable#CalendarView_minDate
*/
public void setMinDate(long minDate) {
mTempDate.setTimeInMillis(minDate);
@@ -731,6 +771,8 @@
* <p>
*
* @return The maximal supported date.
+ *
+ * @attr ref android.R.styleable#CalendarView_maxDate
*/
public long getMaxDate() {
return mMaxDate.getTimeInMillis();
@@ -742,6 +784,8 @@
* zone.
*
* @param maxDate The maximal supported date.
+ *
+ * @attr ref android.R.styleable#CalendarView_maxDate
*/
public void setMaxDate(long maxDate) {
mTempDate.setTimeInMillis(maxDate);
@@ -767,6 +811,8 @@
* Sets whether to show the week number.
*
* @param showWeekNumber True to show the week number.
+ *
+ * @attr ref android.R.styleable#CalendarView_showWeekNumber
*/
public void setShowWeekNumber(boolean showWeekNumber) {
if (mShowWeekNumber == showWeekNumber) {
@@ -781,6 +827,8 @@
* Gets whether to show the week number.
*
* @return True if showing the week number.
+ *
+ * @attr ref android.R.styleable#CalendarView_showWeekNumber
*/
public boolean getShowWeekNumber() {
return mShowWeekNumber;
@@ -798,6 +846,8 @@
* @see Calendar#FRIDAY
* @see Calendar#SATURDAY
* @see Calendar#SUNDAY
+ *
+ * @attr ref android.R.styleable#CalendarView_firstDayOfWeek
*/
public int getFirstDayOfWeek() {
return mFirstDayOfWeek;
@@ -815,6 +865,8 @@
* @see Calendar#FRIDAY
* @see Calendar#SATURDAY
* @see Calendar#SUNDAY
+ *
+ * @attr ref android.R.styleable#CalendarView_firstDayOfWeek
*/
public void setFirstDayOfWeek(int firstDayOfWeek) {
if (mFirstDayOfWeek == firstDayOfWeek) {
diff --git a/core/java/android/widget/CheckedTextView.java b/core/java/android/widget/CheckedTextView.java
index 02bb4f3..278192c 100644
--- a/core/java/android/widget/CheckedTextView.java
+++ b/core/java/android/widget/CheckedTextView.java
@@ -35,6 +35,8 @@
* {@link android.widget.ListView#setChoiceMode(int) setChoiceMode} has been set to
* something other than {@link android.widget.ListView#CHOICE_MODE_NONE CHOICE_MODE_NONE}.
*
+ * @attr ref android.R.styleable#CheckedTextView_checked
+ * @attr ref android.R.styleable#CheckedTextView_checkMark
*/
public class CheckedTextView extends TextView implements Checkable {
private boolean mChecked;
@@ -100,6 +102,11 @@
* when {@link #isChecked()} is true.
*
* @param resid The Drawable to use for the checkmark.
+ *
+ * @see #setCheckMarkDrawable(Drawable)
+ * @see #getCheckMarkDrawable()
+ *
+ * @attr ref android.R.styleable#CheckedTextView_checkMark
*/
public void setCheckMarkDrawable(int resid) {
if (resid != 0 && resid == mCheckMarkResource) {
@@ -119,6 +126,11 @@
* Set the checkmark to a given Drawable. This will be drawn when {@link #isChecked()} is true.
*
* @param d The Drawable to use for the checkmark.
+ *
+ * @see #setCheckMarkDrawable(int)
+ * @see #getCheckMarkDrawable()
+ *
+ * @attr ref android.R.styleable#CheckedTextView_checkMark
*/
public void setCheckMarkDrawable(Drawable d) {
if (mCheckMarkDrawable != null) {
@@ -142,6 +154,20 @@
resolvePadding();
}
+ /**
+ * Gets the checkmark drawable
+ *
+ * @return The drawable use to represent the checkmark, if any.
+ *
+ * @see #setCheckMarkDrawable(Drawable)
+ * @see #setCheckMarkDrawable(int)
+ *
+ * @attr ref android.R.styleable#CheckedTextView_checkMark
+ */
+ public Drawable getCheckMarkDrawable() {
+ return mCheckMarkDrawable;
+ }
+
@Override
public void onPaddingChanged(int layoutDirection) {
int newPadding = (mCheckMarkDrawable != null) ?
diff --git a/core/java/android/widget/Editor.java b/core/java/android/widget/Editor.java
index a18b64c..4b7ec9a 100644
--- a/core/java/android/widget/Editor.java
+++ b/core/java/android/widget/Editor.java
@@ -1223,8 +1223,6 @@
private void drawHardwareAccelerated(Canvas canvas, Layout layout, Path highlight,
Paint highlightPaint, int cursorOffsetVertical) {
- final int width = mTextView.getWidth();
-
final long lineRange = layout.getLineRangeForDraw(canvas);
int firstLine = TextUtils.unpackRangeStartFromLong(lineRange);
int lastLine = TextUtils.unpackRangeEndFromLong(lineRange);
@@ -1243,10 +1241,6 @@
int[] blockIndices = dynamicLayout.getBlockIndices();
final int numberOfBlocks = dynamicLayout.getNumberOfBlocks();
- final int scrollX = mTextView.getScrollX();
- final int scrollY = mTextView.getScrollY();
- canvas.translate(scrollX, scrollY);
-
int endOfPreviousBlock = -1;
int searchStartIndex = 0;
for (int i = 0; i < numberOfBlocks; i++) {
@@ -1274,34 +1268,43 @@
final int blockBeginLine = endOfPreviousBlock + 1;
final int top = layout.getLineTop(blockBeginLine);
final int bottom = layout.getLineBottom(blockEndLine);
+ int left = 0;
+ int right = mTextView.getWidth();
+ if (mTextView.getHorizontallyScrolling()) {
+ float min = Float.MAX_VALUE;
+ float max = Float.MIN_VALUE;
+ for (int line = blockBeginLine; line <= blockEndLine; line++) {
+ min = Math.min(min, layout.getLineLeft(line));
+ max = Math.max(max, layout.getLineRight(line));
+ }
+ left = (int) min;
+ right = (int) (max + 0.5f);
+ }
final HardwareCanvas hardwareCanvas = blockDisplayList.start();
try {
- hardwareCanvas.setViewport(width, bottom - top);
+ // Tighten the bounds of the viewport to the actual text size
+ hardwareCanvas.setViewport(right - left, bottom - top);
// The dirty rect should always be null for a display list
hardwareCanvas.onPreDraw(null);
// drawText is always relative to TextView's origin, this translation brings
- // this range of text back to the top of the viewport
- hardwareCanvas.translate(-scrollX, -top);
+ // this range of text back to the top left corner of the viewport
+ hardwareCanvas.translate(-left, -top);
layout.drawText(hardwareCanvas, blockBeginLine, blockEndLine);
- hardwareCanvas.translate(scrollX, top);
+ // No need to untranslate, previous context is popped after drawDisplayList
} finally {
hardwareCanvas.onPostDraw();
blockDisplayList.end();
- blockDisplayList.setLeftTopRightBottom(0, top, width, bottom);
+ blockDisplayList.setLeftTopRightBottom(left, top, right, bottom);
// Same as drawDisplayList below, handled by our TextView's parent
blockDisplayList.setClipChildren(false);
}
}
- // TODO When View.USE_DISPLAY_LIST_PROPERTIES is the only code path, the
- // width and height parameters should be removed and the bounds set above in
- // setLeftTopRightBottom should be used instead for quick rejection.
((HardwareCanvas) canvas).drawDisplayList(blockDisplayList, null,
0 /* no child clipping, our TextView parent enforces it */);
+
endOfPreviousBlock = blockEndLine;
-
- canvas.translate(-scrollX, -scrollY);
}
} else {
// Boring layout is used for empty and hint text
diff --git a/core/java/android/widget/HorizontalScrollView.java b/core/java/android/widget/HorizontalScrollView.java
index c2559a5..1986450 100644
--- a/core/java/android/widget/HorizontalScrollView.java
+++ b/core/java/android/widget/HorizontalScrollView.java
@@ -536,10 +536,15 @@
switch (action & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN: {
- mIsBeingDragged = getChildCount() != 0;
- if (!mIsBeingDragged) {
+ if (getChildCount() == 0) {
return false;
}
+ if ((mIsBeingDragged = !mScroller.isFinished())) {
+ final ViewParent parent = getParent();
+ if (parent != null) {
+ parent.requestDisallowInterceptTouchEvent(true);
+ }
+ }
/*
* If being flinged and user touches, stop the fling. isFinished
@@ -555,11 +560,23 @@
break;
}
case MotionEvent.ACTION_MOVE:
+ final int activePointerIndex = ev.findPointerIndex(mActivePointerId);
+ final int x = (int) ev.getX(activePointerIndex);
+ int deltaX = mLastMotionX - x;
+ if (!mIsBeingDragged && Math.abs(deltaX) > mTouchSlop) {
+ final ViewParent parent = getParent();
+ if (parent != null) {
+ parent.requestDisallowInterceptTouchEvent(true);
+ }
+ mIsBeingDragged = true;
+ if (deltaX > 0) {
+ deltaX -= mTouchSlop;
+ } else {
+ deltaX += mTouchSlop;
+ }
+ }
if (mIsBeingDragged) {
// Scroll to follow the motion event
- final int activePointerIndex = ev.findPointerIndex(mActivePointerId);
- final int x = (int) ev.getX(activePointerIndex);
- final int deltaX = (int) (mLastMotionX - x);
mLastMotionX = x;
final int oldX = mScrollX;
diff --git a/core/java/android/widget/ImageView.java b/core/java/android/widget/ImageView.java
index 7593bff..cf28da4 100644
--- a/core/java/android/widget/ImageView.java
+++ b/core/java/android/widget/ImageView.java
@@ -193,6 +193,9 @@
}
}
+ /**
+ * @hide
+ */
@Override
public int getResolvedLayoutDirection(Drawable dr) {
return (dr == mDrawable) ?
diff --git a/core/java/android/widget/LinearLayout.java b/core/java/android/widget/LinearLayout.java
index 5ed005f..2391898d 100644
--- a/core/java/android/widget/LinearLayout.java
+++ b/core/java/android/widget/LinearLayout.java
@@ -867,7 +867,7 @@
// We have no limit, so make all weighted views as tall as the largest child.
// Children will have already been measured once.
- if (useLargestChild && widthMode == MeasureSpec.UNSPECIFIED) {
+ if (useLargestChild && heightMode != MeasureSpec.EXACTLY) {
for (int i = 0; i < count; i++) {
final View child = getVirtualChildAt(i);
@@ -1283,7 +1283,7 @@
// We have no limit, so make all weighted views as wide as the largest child.
// Children will have already been measured once.
- if (useLargestChild && widthMode == MeasureSpec.UNSPECIFIED) {
+ if (useLargestChild && widthMode != MeasureSpec.EXACTLY) {
for (int i = 0; i < count; i++) {
final View child = getVirtualChildAt(i);
diff --git a/core/java/android/widget/ProgressBar.java b/core/java/android/widget/ProgressBar.java
index 0b49404..f3f18d5 100644
--- a/core/java/android/widget/ProgressBar.java
+++ b/core/java/android/widget/ProgressBar.java
@@ -211,6 +211,7 @@
private boolean mOnlyIndeterminate;
private Transformation mTransformation;
private AlphaAnimation mAnimation;
+ private boolean mHasAnimation;
private Drawable mIndeterminateDrawable;
private Drawable mProgressDrawable;
private Drawable mCurrentDrawable;
@@ -670,18 +671,14 @@
if (mUiThreadId == Thread.currentThread().getId()) {
doRefreshProgress(id, progress, fromUser, true);
} else {
- RefreshProgressRunnable r;
- if (mRefreshProgressRunnable != null) {
- // Use cached RefreshProgressRunnable if available
- r = mRefreshProgressRunnable;
- } else {
- // Make a new one
- r = new RefreshProgressRunnable();
+ if (mRefreshProgressRunnable == null) {
+ mRefreshProgressRunnable = new RefreshProgressRunnable();
}
+
final RefreshData rd = RefreshData.obtain(id, progress, fromUser);
mRefreshData.add(rd);
if (mAttached && !mRefreshIsPosted) {
- post(r);
+ post(mRefreshProgressRunnable);
mRefreshIsPosted = true;
}
}
@@ -860,14 +857,26 @@
if (mIndeterminateDrawable instanceof Animatable) {
mShouldStartAnimationDrawable = true;
- mAnimation = null;
+ mHasAnimation = false;
} else {
+ mHasAnimation = true;
+
if (mInterpolator == null) {
mInterpolator = new LinearInterpolator();
}
- mTransformation = new Transformation();
- mAnimation = new AlphaAnimation(0.0f, 1.0f);
+ if (mTransformation == null) {
+ mTransformation = new Transformation();
+ } else {
+ mTransformation.clear();
+ }
+
+ if (mAnimation == null) {
+ mAnimation = new AlphaAnimation(0.0f, 1.0f);
+ } else {
+ mAnimation.reset();
+ }
+
mAnimation.setRepeatMode(mBehavior);
mAnimation.setRepeatCount(Animation.INFINITE);
mAnimation.setDuration(mDuration);
@@ -881,8 +890,7 @@
* <p>Stop the indeterminate progress animation.</p>
*/
void stopAnimation() {
- mAnimation = null;
- mTransformation = null;
+ mHasAnimation = false;
if (mIndeterminateDrawable instanceof Animatable) {
((Animatable) mIndeterminateDrawable).stop();
mShouldStartAnimationDrawable = false;
@@ -967,6 +975,9 @@
}
}
+ /**
+ * @hide
+ */
@Override
public int getResolvedLayoutDirection(Drawable who) {
return (who == mProgressDrawable || who == mIndeterminateDrawable) ?
@@ -1027,7 +1038,7 @@
canvas.save();
canvas.translate(mPaddingLeft, mPaddingTop);
long time = getDrawingTime();
- if (mAnimation != null) {
+ if (mHasAnimation) {
mAnimation.getTransformation(time, mTransformation);
float scale = mTransformation.getAlpha();
try {
diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java
index e628bc1..56c4bd8 100644
--- a/core/java/android/widget/RemoteViews.java
+++ b/core/java/android/widget/RemoteViews.java
@@ -22,6 +22,8 @@
import android.content.Context;
import android.content.Intent;
import android.content.IntentSender;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.res.Configuration;
import android.graphics.Bitmap;
@@ -29,6 +31,7 @@
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.net.Uri;
+import android.os.Build;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
@@ -490,7 +493,14 @@
if (mIsWidgetCollectionChild) {
Log.e("RemoteViews", "Cannot setOnClickPendingIntent for collection item " +
"(id: " + viewId + ")");
- // TODO: return; We'll let this slide until apps are up to date.
+ ApplicationInfo appInfo = root.getContext().getApplicationInfo();
+
+ // We let this slide for HC and ICS so as to not break compatibility. It should have
+ // been disabled from the outset, but was left open by accident.
+ if (appInfo != null &&
+ appInfo.targetSdkVersion >= Build.VERSION_CODES.JELLY_BEAN) {
+ return;
+ }
}
if (target != null) {
@@ -1546,15 +1556,13 @@
}
/**
- * Equivalent to calling {@link
- * TextView#setCompoundDrawablesRelativeWithIntrinsicBounds(int, int, int, int)}.
- *
* @param viewId The id of the view whose text should change
- * @param start The id of a drawable to place before the text (relative to the
+ * @param start The id of a drawable to place before the text (relative to the
* layout direction), or 0
* @param top The id of a drawable to place above the text, or 0
* @param end The id of a drawable to place after the text, or 0
- * @param bottom The id of a drawable to place below the text, or 0
+ * @param bottom The id of a drawable to place below the text, or 0
+ * @hide
*/
public void setTextViewCompoundDrawablesRelative(int viewId, int start, int top, int end, int bottom) {
addAction(new TextViewDrawableAction(viewId, true, start, top, end, bottom));
diff --git a/core/java/android/widget/ScrollView.java b/core/java/android/widget/ScrollView.java
index 0f0dbae..f912c66 100644
--- a/core/java/android/widget/ScrollView.java
+++ b/core/java/android/widget/ScrollView.java
@@ -482,6 +482,10 @@
if (mScrollStrictSpan == null) {
mScrollStrictSpan = StrictMode.enterCriticalSpan("ScrollView-scroll");
}
+ final ViewParent parent = getParent();
+ if (parent != null) {
+ parent.requestDisallowInterceptTouchEvent(true);
+ }
}
break;
}
@@ -546,10 +550,15 @@
switch (action & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN: {
- mIsBeingDragged = getChildCount() != 0;
- if (!mIsBeingDragged) {
+ if (getChildCount() == 0) {
return false;
}
+ if ((mIsBeingDragged = !mScroller.isFinished())) {
+ final ViewParent parent = getParent();
+ if (parent != null) {
+ parent.requestDisallowInterceptTouchEvent(true);
+ }
+ }
/*
* If being flinged and user touches, stop the fling. isFinished
@@ -569,11 +578,23 @@
break;
}
case MotionEvent.ACTION_MOVE:
+ final int activePointerIndex = ev.findPointerIndex(mActivePointerId);
+ final int y = (int) ev.getY(activePointerIndex);
+ int deltaY = mLastMotionY - y;
+ if (!mIsBeingDragged && Math.abs(deltaY) > mTouchSlop) {
+ final ViewParent parent = getParent();
+ if (parent != null) {
+ parent.requestDisallowInterceptTouchEvent(true);
+ }
+ mIsBeingDragged = true;
+ if (deltaY > 0) {
+ deltaY -= mTouchSlop;
+ } else {
+ deltaY += mTouchSlop;
+ }
+ }
if (mIsBeingDragged) {
// Scroll to follow the motion event
- final int activePointerIndex = ev.findPointerIndex(mActivePointerId);
- final int y = (int) ev.getY(activePointerIndex);
- final int deltaY = mLastMotionY - y;
mLastMotionY = y;
final int oldX = mScrollX;
diff --git a/core/java/android/widget/SearchView.java b/core/java/android/widget/SearchView.java
index 561326e..521597b 100644
--- a/core/java/android/widget/SearchView.java
+++ b/core/java/android/widget/SearchView.java
@@ -576,6 +576,8 @@
/**
* Returns the default iconified state of the search field.
* @return
+ *
+ * @attr ref android.R.styleable#SearchView_iconifiedByDefault
*/
public boolean isIconfiedByDefault() {
return mIconifiedByDefault;
@@ -696,6 +698,8 @@
* Gets the specified maximum width in pixels, if set. Returns zero if
* no maximum width was specified.
* @return the maximum width of the view
+ *
+ * @attr ref android.R.styleable#SearchView_maxWidth
*/
public int getMaxWidth() {
return mMaxWidth;
diff --git a/core/java/android/widget/ShareActionProvider.java b/core/java/android/widget/ShareActionProvider.java
index 080b87d..21840ca 100644
--- a/core/java/android/widget/ShareActionProvider.java
+++ b/core/java/android/widget/ShareActionProvider.java
@@ -44,6 +44,7 @@
* <code>
* // In Activity#onCreateOptionsMenu
* public boolean onCreateOptionsMenu(Menu menu) {
+ * getManuInflater().inflate(R.menu.my_menu, menu);
* // Get the menu item.
* MenuItem menuItem = menu.findItem(R.id.my_menu_item);
* // Get the provider and hold onto it to set/change the share intent.
@@ -239,8 +240,25 @@
* <p>
* <strong>Note:</strong> The history file name can be set any time, however
* only the action views created by {@link #onCreateActionView()} after setting
- * the file name will be backed by the provided file.
+ * the file name will be backed by the provided file. Therefore, if you want to
+ * use different history files for sharing specific types of content, every time
+ * you change the history file {@link #setShareHistoryFileName(String)} you must
+ * call {@link android.app.Activity#invalidateOptionsMenu()} to recreate the
+ * action view. You should <strong>not</strong> call
+ * {@link android.app.Activity#invalidateOptionsMenu()} from
+ * {@link android.app.Activity#onCreateOptionsMenu(Menu)}.
* <p>
+ * <code>
+ * private void doShare(Intent intent) {
+ * if (IMAGE.equals(intent.getMimeType())) {
+ * mShareActionProvider.setHistoryFileName(SHARE_IMAGE_HISTORY_FILE_NAME);
+ * } else if (TEXT.equals(intent.getMimeType())) {
+ * mShareActionProvider.setHistoryFileName(SHARE_TEXT_HISTORY_FILE_NAME);
+ * }
+ * mShareActionProvider.setIntent(intent);
+ * invalidateOptionsMenu();
+ * }
+ * <code>
*
* @param shareHistoryFile The share history file name.
*/
diff --git a/core/java/android/widget/SpellChecker.java b/core/java/android/widget/SpellChecker.java
index 98e45fb..ebf8a4a 100644
--- a/core/java/android/widget/SpellChecker.java
+++ b/core/java/android/widget/SpellChecker.java
@@ -21,10 +21,12 @@
import android.text.Selection;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
+import android.text.TextUtils;
import android.text.method.WordIterator;
import android.text.style.SpellCheckSpan;
import android.text.style.SuggestionSpan;
import android.util.Log;
+import android.util.LruCache;
import android.view.textservice.SentenceSuggestionsInfo;
import android.view.textservice.SpellCheckerSession;
import android.view.textservice.SpellCheckerSession.SpellCheckerSessionListener;
@@ -95,6 +97,10 @@
private Runnable mSpellRunnable;
+ private static final int SUGGESTION_SPAN_CACHE_SIZE = 10;
+ private final LruCache<Long, SuggestionSpan> mSuggestionSpanCache =
+ new LruCache<Long, SuggestionSpan>(SUGGESTION_SPAN_CACHE_SIZE);
+
public SpellChecker(TextView textView) {
mTextView = textView;
@@ -126,6 +132,7 @@
// Restore SpellCheckSpans in pool
for (int i = 0; i < mLength; i++) {
+ // Resets id and progress to invalidate spell check span
mSpellCheckSpans[i].setSpellCheckInProgress(false);
mIds[i] = -1;
}
@@ -133,6 +140,7 @@
// Remove existing misspelled SuggestionSpans
mTextView.removeMisspelledSpans((Editable) mTextView.getText());
+ mSuggestionSpanCache.evictAll();
}
private void setLocale(Locale locale) {
@@ -199,6 +207,7 @@
public void removeSpellCheckSpan(SpellCheckSpan spellCheckSpan) {
for (int i = 0; i < mLength; i++) {
if (mSpellCheckSpans[i] == spellCheckSpan) {
+ // Resets id and progress to invalidate spell check span
mSpellCheckSpans[i].setSpellCheckInProgress(false);
mIds[i] = -1;
return;
@@ -211,6 +220,9 @@
}
public void spellCheck(int start, int end) {
+ if (DBG) {
+ Log.d(TAG, "Start spell-checking: " + start + ", " + end);
+ }
final Locale locale = mTextView.getTextServicesLocale();
final boolean isSessionActive = isSessionActive();
if (mCurrentLocale == null || (!(mCurrentLocale.equals(locale)))) {
@@ -238,6 +250,9 @@
}
}
+ if (DBG) {
+ Log.d(TAG, "new spell parser.");
+ }
// No available parser found in pool, create a new one
SpellParser[] newSpellParsers = new SpellParser[length + 1];
System.arraycopy(mSpellParsers, 0, newSpellParsers, 0, length);
@@ -260,13 +275,22 @@
for (int i = 0; i < mLength; i++) {
final SpellCheckSpan spellCheckSpan = mSpellCheckSpans[i];
- if (spellCheckSpan.isSpellCheckInProgress()) continue;
+ if (mIds[i] < 0 || spellCheckSpan.isSpellCheckInProgress()) continue;
final int start = editable.getSpanStart(spellCheckSpan);
final int end = editable.getSpanEnd(spellCheckSpan);
// Do not check this word if the user is currently editing it
- if (start >= 0 && end > start && (selectionEnd < start || selectionStart > end)) {
+ final boolean isEditing;
+ if (mIsSentenceSpellCheckSupported) {
+ // Allow the overlap of the cursor and the first boundary of the spell check span
+ // no to skip the spell check of the following word because the
+ // following word will never be spell-checked even if the user finishes composing
+ isEditing = selectionEnd <= start || selectionStart > end;
+ } else {
+ isEditing = selectionEnd < start || selectionStart > end;
+ }
+ if (start >= 0 && end > start && isEditing) {
final String word = (editable instanceof SpannableStringBuilder) ?
((SpannableStringBuilder) editable).substring(start, end) :
editable.subSequence(start, end).toString();
@@ -372,6 +396,9 @@
}
private void scheduleNewSpellCheck() {
+ if (DBG) {
+ Log.i(TAG, "schedule new spell check.");
+ }
if (mSpellRunnable == null) {
mSpellRunnable = new Runnable() {
@Override
@@ -400,12 +427,6 @@
if (spellCheckSpanStart < 0 || spellCheckSpanEnd <= spellCheckSpanStart)
return; // span was removed in the meantime
- final int suggestionsCount = suggestionsInfo.getSuggestionsCount();
- if (suggestionsCount <= 0) {
- // A negative suggestion count is possible
- return;
- }
-
final int start;
final int end;
if (offset != USE_SPAN_RANGE && length != USE_SPAN_RANGE) {
@@ -416,13 +437,33 @@
end = spellCheckSpanEnd;
}
- String[] suggestions = new String[suggestionsCount];
- for (int i = 0; i < suggestionsCount; i++) {
- suggestions[i] = suggestionsInfo.getSuggestionAt(i);
+ final int suggestionsCount = suggestionsInfo.getSuggestionsCount();
+ String[] suggestions;
+ if (suggestionsCount > 0) {
+ suggestions = new String[suggestionsCount];
+ for (int i = 0; i < suggestionsCount; i++) {
+ suggestions[i] = suggestionsInfo.getSuggestionAt(i);
+ }
+ } else {
+ suggestions = ArrayUtils.emptyArray(String.class);
}
SuggestionSpan suggestionSpan = new SuggestionSpan(mTextView.getContext(), suggestions,
SuggestionSpan.FLAG_EASY_CORRECT | SuggestionSpan.FLAG_MISSPELLED);
+ // TODO: Remove mIsSentenceSpellCheckSupported by extracting an interface
+ // to share the logic of word level spell checker and sentence level spell checker
+ if (mIsSentenceSpellCheckSupported) {
+ final Long key = Long.valueOf(TextUtils.packRangeInLong(start, end));
+ final SuggestionSpan tempSuggestionSpan = mSuggestionSpanCache.get(key);
+ if (tempSuggestionSpan != null) {
+ if (DBG) {
+ Log.i(TAG, "Cached span on the same position is cleard. "
+ + editable.subSequence(start, end));
+ }
+ editable.removeSpan(tempSuggestionSpan);
+ }
+ mSuggestionSpanCache.put(key, suggestionSpan);
+ }
editable.setSpan(suggestionSpan, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mTextView.invalidateRegion(start, end, false /* No cursor involved */);
@@ -447,10 +488,17 @@
}
private void setRangeSpan(Editable editable, int start, int end) {
+ if (DBG) {
+ Log.d(TAG, "set next range span: " + start + ", " + end);
+ }
editable.setSpan(mRange, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
private void removeRangeSpan(Editable editable) {
+ if (DBG) {
+ Log.d(TAG, "Remove range span." + editable.getSpanStart(editable)
+ + editable.getSpanEnd(editable));
+ }
editable.removeSpan(mRange);
}
@@ -484,6 +532,9 @@
wordEnd = mWordIterator.getEnd(wordStart);
}
if (wordEnd == BreakIterator.DONE) {
+ if (DBG) {
+ Log.i(TAG, "No more spell check.");
+ }
removeRangeSpan(editable);
return;
}
@@ -499,47 +550,75 @@
boolean scheduleOtherSpellCheck = false;
if (mIsSentenceSpellCheckSupported) {
- int regionEnd;
if (wordIteratorWindowEnd < end) {
+ if (DBG) {
+ Log.i(TAG, "schedule other spell check.");
+ }
// Several batches needed on that region. Cut after last previous word
- regionEnd = mWordIterator.preceding(wordIteratorWindowEnd);
scheduleOtherSpellCheck = true;
- } else {
- regionEnd = mWordIterator.preceding(end);
}
- boolean correct = regionEnd != BreakIterator.DONE;
+ int spellCheckEnd = mWordIterator.preceding(wordIteratorWindowEnd);
+ boolean correct = spellCheckEnd != BreakIterator.DONE;
if (correct) {
- regionEnd = mWordIterator.getEnd(regionEnd);
- correct = regionEnd != BreakIterator.DONE;
+ spellCheckEnd = mWordIterator.getEnd(spellCheckEnd);
+ correct = spellCheckEnd != BreakIterator.DONE;
}
if (!correct) {
- editable.removeSpan(mRange);
+ if (DBG) {
+ Log.i(TAG, "Incorrect range span.");
+ }
+ removeRangeSpan(editable);
return;
}
- // Stop spell checking when there are no characters in the range.
- if (wordEnd < start) {
- return;
- }
- // TODO: Find the start position of the sentence.
- final int spellCheckStart = wordStart;
- if (regionEnd <= spellCheckStart) {
- return;
- }
- final int selectionStart = Selection.getSelectionStart(editable);
- final int selectionEnd = Selection.getSelectionEnd(editable);
- if (DBG) {
- Log.d(TAG, "addSpellCheckSpan: "
- + editable.subSequence(spellCheckStart, regionEnd)
- + ", regionEnd = " + regionEnd + ", spellCheckStart = "
- + spellCheckStart + ", sel start = " + selectionStart + ", sel end ="
- + selectionEnd);
- }
- // Do not check this word if the user is currently editing it
- if (spellCheckStart >= 0 && regionEnd > spellCheckStart
- && (selectionEnd < spellCheckStart || selectionStart > regionEnd)) {
- addSpellCheckSpan(editable, spellCheckStart, regionEnd);
- }
- wordStart = regionEnd;
+ do {
+ // TODO: Find the start position of the sentence.
+ int spellCheckStart = wordStart;
+ boolean createSpellCheckSpan = true;
+ // Cancel or merge overlapped spell check spans
+ for (int i = 0; i < mLength; ++i) {
+ final SpellCheckSpan spellCheckSpan = mSpellCheckSpans[i];
+ if (mIds[i] < 0 || spellCheckSpan.isSpellCheckInProgress()) {
+ continue;
+ }
+ final int spanStart = editable.getSpanStart(spellCheckSpan);
+ final int spanEnd = editable.getSpanEnd(spellCheckSpan);
+ if (spanEnd < spellCheckStart || spellCheckEnd < spanStart) {
+ // No need to merge
+ continue;
+ }
+ if (spanStart <= spellCheckStart && spellCheckEnd <= spanEnd) {
+ // There is a completely overlapped spell check span
+ // skip this span
+ createSpellCheckSpan = false;
+ if (DBG) {
+ Log.i(TAG, "The range is overrapped. Skip spell check.");
+ }
+ break;
+ }
+ removeSpellCheckSpan(spellCheckSpan);
+ spellCheckStart = Math.min(spanStart, spellCheckStart);
+ spellCheckEnd = Math.max(spanEnd, spellCheckEnd);
+ }
+
+ if (DBG) {
+ Log.d(TAG, "addSpellCheckSpan: "
+ + ", End = " + spellCheckEnd + ", Start = " + spellCheckStart
+ + ", next = " + scheduleOtherSpellCheck + "\n"
+ + editable.subSequence(spellCheckStart, spellCheckEnd));
+ }
+
+ // Stop spell checking when there are no characters in the range.
+ if (spellCheckEnd < start) {
+ break;
+ }
+ if (spellCheckEnd <= spellCheckStart) {
+ break;
+ }
+ if (createSpellCheckSpan) {
+ addSpellCheckSpan(editable, spellCheckStart, spellCheckEnd);
+ }
+ } while (false);
+ wordStart = spellCheckEnd;
} else {
while (wordStart <= end) {
if (wordEnd >= start && wordEnd > wordStart) {
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java
index b2ad25d..555c974 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -26,7 +26,6 @@
import android.content.res.TypedArray;
import android.content.res.XmlResourceParser;
import android.graphics.Canvas;
-import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Rect;
@@ -91,6 +90,7 @@
import android.util.FloatMath;
import android.util.Log;
import android.util.TypedValue;
+import android.view.AccessibilityIterators.TextSegmentIterator;
import android.view.ActionMode;
import android.view.DragEvent;
import android.view.Gravity;
@@ -397,7 +397,7 @@
/**
* EditText specific data, created on demand when one of the Editor fields is used.
- * See {@link #createEditorIfNeeded(String)}.
+ * See {@link #createEditorIfNeeded()}.
*/
private Editor mEditor;
@@ -798,20 +798,20 @@
break;
case com.android.internal.R.styleable.TextView_imeOptions:
- createEditorIfNeeded("IME options specified in constructor");
+ createEditorIfNeeded();
mEditor.createInputContentTypeIfNeeded();
mEditor.mInputContentType.imeOptions = a.getInt(attr,
mEditor.mInputContentType.imeOptions);
break;
case com.android.internal.R.styleable.TextView_imeActionLabel:
- createEditorIfNeeded("IME action label specified in constructor");
+ createEditorIfNeeded();
mEditor.createInputContentTypeIfNeeded();
mEditor.mInputContentType.imeActionLabel = a.getText(attr);
break;
case com.android.internal.R.styleable.TextView_imeActionId:
- createEditorIfNeeded("IME action id specified in constructor");
+ createEditorIfNeeded();
mEditor.createInputContentTypeIfNeeded();
mEditor.mInputContentType.imeActionId = a.getInt(attr,
mEditor.mInputContentType.imeActionId);
@@ -883,7 +883,7 @@
}
try {
- createEditorIfNeeded("inputMethod in ctor");
+ createEditorIfNeeded();
mEditor.mKeyListener = (KeyListener) c.newInstance();
} catch (InstantiationException ex) {
throw new RuntimeException(ex);
@@ -898,7 +898,7 @@
mEditor.mInputType = EditorInfo.TYPE_CLASS_TEXT;
}
} else if (digits != null) {
- createEditorIfNeeded("digits in ctor");
+ createEditorIfNeeded();
mEditor.mKeyListener = DigitsKeyListener.getInstance(digits.toString());
// If no input type was specified, we will default to generic
// text, since we can't tell the IME about the set of digits
@@ -910,11 +910,11 @@
// If set, the input type overrides what was set using the deprecated singleLine flag.
singleLine = !isMultilineInputType(inputType);
} else if (phone) {
- createEditorIfNeeded("dialer in ctor");
+ createEditorIfNeeded();
mEditor.mKeyListener = DialerKeyListener.getInstance();
mEditor.mInputType = inputType = EditorInfo.TYPE_CLASS_PHONE;
} else if (numeric != 0) {
- createEditorIfNeeded("numeric in ctor");
+ createEditorIfNeeded();
mEditor.mKeyListener = DigitsKeyListener.getInstance((numeric & SIGNED) != 0,
(numeric & DECIMAL) != 0);
inputType = EditorInfo.TYPE_CLASS_NUMBER;
@@ -951,7 +951,7 @@
break;
}
- createEditorIfNeeded("text input in ctor");
+ createEditorIfNeeded();
mEditor.mKeyListener = TextKeyListener.getInstance(autotext, cap);
mEditor.mInputType = inputType;
} else if (isTextSelectable()) {
@@ -964,7 +964,7 @@
// So that selection can be changed using arrow keys and touch is handled.
setMovementMethod(ArrowKeyMovementMethod.getInstance());
} else if (editable) {
- createEditorIfNeeded("editable input in ctor");
+ createEditorIfNeeded();
mEditor.mKeyListener = TextKeyListener.getInstance();
mEditor.mInputType = EditorInfo.TYPE_CLASS_TEXT;
} else {
@@ -987,7 +987,7 @@
webPasswordInputType, numberPasswordInputType);
if (selectallonfocus) {
- createEditorIfNeeded("selectallonfocus in constructor");
+ createEditorIfNeeded();
mEditor.mSelectAllOnFocus = true;
if (bufferType == BufferType.NORMAL)
@@ -1250,6 +1250,8 @@
*
* Note: The content of the return value should not be modified. If you want
* a modifiable one, you should make your own copy first.
+ *
+ * @attr ref android.R.styleable#TextView_text
*/
@ViewDebug.CapturedViewProperty
public CharSequence getText() {
@@ -1294,6 +1296,13 @@
/**
* @return the current key listener for this TextView.
* This will frequently be null for non-EditText TextViews.
+ *
+ * @attr ref android.R.styleable#TextView_numeric
+ * @attr ref android.R.styleable#TextView_digits
+ * @attr ref android.R.styleable#TextView_phoneNumber
+ * @attr ref android.R.styleable#TextView_inputMethod
+ * @attr ref android.R.styleable#TextView_capitalize
+ * @attr ref android.R.styleable#TextView_autoText
*/
public final KeyListener getKeyListener() {
return mEditor == null ? null : mEditor.mKeyListener;
@@ -1326,7 +1335,7 @@
fixFocusableAndClickableSettings();
if (input != null) {
- createEditorIfNeeded("input is not null");
+ createEditorIfNeeded();
try {
mEditor.mInputType = mEditor.mKeyListener.getInputType();
} catch (IncompatibleClassChangeError e) {
@@ -1346,7 +1355,7 @@
private void setKeyListenerOnly(KeyListener input) {
if (mEditor == null && input == null) return; // null is the default value
- createEditorIfNeeded("setKeyListenerOnly");
+ createEditorIfNeeded();
if (mEditor.mKeyListener != input) {
mEditor.mKeyListener = input;
if (input != null && !(mText instanceof Editable)) {
@@ -1408,6 +1417,9 @@
* @return the current transformation method for this TextView.
* This will frequently be null except for single-line and password
* fields.
+ *
+ * @attr ref android.R.styleable#TextView_password
+ * @attr ref android.R.styleable#TextView_singleLine
*/
public final TransformationMethod getTransformationMethod() {
return mTransformation;
@@ -1500,6 +1512,7 @@
/**
* Returns the start padding of the view, plus space for the start
* Drawable if any.
+ * @hide
*/
public int getCompoundPaddingStart() {
resolveDrawables();
@@ -1515,6 +1528,7 @@
/**
* Returns the end padding of the view, plus space for the end
* Drawable if any.
+ * @hide
*/
public int getCompoundPaddingEnd() {
resolveDrawables();
@@ -1612,6 +1626,7 @@
/**
* Returns the total start padding of the view, including the start
* Drawable if any.
+ * @hide
*/
public int getTotalPaddingStart() {
return getCompoundPaddingStart();
@@ -1620,6 +1635,7 @@
/**
* Returns the total end padding of the view, including the end
* Drawable if any.
+ * @hide
*/
public int getTotalPaddingEnd() {
return getCompoundPaddingEnd();
@@ -1822,6 +1838,7 @@
* @attr ref android.R.styleable#TextView_drawableTop
* @attr ref android.R.styleable#TextView_drawableEnd
* @attr ref android.R.styleable#TextView_drawableBottom
+ * @hide
*/
public void setCompoundDrawablesRelative(Drawable start, Drawable top,
Drawable end, Drawable bottom) {
@@ -1943,6 +1960,7 @@
* @attr ref android.R.styleable#TextView_drawableTop
* @attr ref android.R.styleable#TextView_drawableEnd
* @attr ref android.R.styleable#TextView_drawableBottom
+ * @hide
*/
@android.view.RemotableViewMethod
public void setCompoundDrawablesRelativeWithIntrinsicBounds(int start, int top, int end,
@@ -1966,6 +1984,7 @@
* @attr ref android.R.styleable#TextView_drawableTop
* @attr ref android.R.styleable#TextView_drawableEnd
* @attr ref android.R.styleable#TextView_drawableBottom
+ * @hide
*/
public void setCompoundDrawablesRelativeWithIntrinsicBounds(Drawable start, Drawable top,
Drawable end, Drawable bottom) {
@@ -1988,6 +2007,11 @@
/**
* Returns drawables for the left, top, right, and bottom borders.
+ *
+ * @attr ref android.R.styleable#TextView_drawableLeft
+ * @attr ref android.R.styleable#TextView_drawableTop
+ * @attr ref android.R.styleable#TextView_drawableRight
+ * @attr ref android.R.styleable#TextView_drawableBottom
*/
public Drawable[] getCompoundDrawables() {
final Drawables dr = mDrawables;
@@ -2002,6 +2026,12 @@
/**
* Returns drawables for the start, top, end, and bottom borders.
+ *
+ * @attr ref android.R.styleable#TextView_drawableStart
+ * @attr ref android.R.styleable#TextView_drawableTop
+ * @attr ref android.R.styleable#TextView_drawableEnd
+ * @attr ref android.R.styleable#TextView_drawableBottom
+ * @hide
*/
public Drawable[] getCompoundDrawablesRelative() {
final Drawables dr = mDrawables;
@@ -2040,6 +2070,8 @@
/**
* Returns the padding between the compound drawables and the text.
+ *
+ * @attr ref android.R.styleable#TextView_drawablePadding
*/
public int getCompoundDrawablePadding() {
final Drawables dr = mDrawables;
@@ -2235,6 +2267,8 @@
* {@link #setTypeface(Typeface, int)} to get the appearance
* that you actually want.
*
+ * @see #getTypeface()
+ *
* @attr ref android.R.styleable#TextView_typeface
* @attr ref android.R.styleable#TextView_textStyle
*/
@@ -2253,6 +2287,11 @@
/**
* @return the current typeface and style in which the text is being
* displayed.
+ *
+ * @see #setTypeface(Typeface)
+ *
+ * @attr ref android.R.styleable#TextView_typeface
+ * @attr ref android.R.styleable#TextView_textStyle
*/
public Typeface getTypeface() {
return mTextPaint.getTypeface();
@@ -2262,6 +2301,9 @@
* Sets the text color for all the states (normal, selected,
* focused) to be this color.
*
+ * @see #setTextColor(ColorStateList)
+ * @see #getTextColors()
+ *
* @attr ref android.R.styleable#TextView_textColor
*/
@android.view.RemotableViewMethod
@@ -2273,6 +2315,11 @@
/**
* Sets the text color.
*
+ * @see #setTextColor(int)
+ * @see #getTextColors()
+ * @see #setHintTextColor(ColorStateList)
+ * @see #setLinkTextColor(ColorStateList)
+ *
* @attr ref android.R.styleable#TextView_textColor
*/
public void setTextColor(ColorStateList colors) {
@@ -2285,9 +2332,12 @@
}
/**
- * Return the set of text colors.
+ * Gets the text colors for the different states (normal, selected, focused) of the TextView.
*
- * @return Returns the set of text colors.
+ * @see #setTextColor(ColorStateList)
+ * @see #setTextColor(int)
+ *
+ * @attr ref android.R.styleable#TextView_textColor
*/
public final ColorStateList getTextColors() {
return mTextColor;
@@ -2316,13 +2366,24 @@
}
/**
+ * @return the color used to display the selection highlight
+ *
+ * @see #setHighlightColor(int)
+ *
+ * @attr ref android.R.styleable#TextView_textColorHighlight
+ */
+ public int getHighlightColor() {
+ return mHighlightColor;
+ }
+
+ /**
* Sets whether the soft input method will be made visible when this
* TextView gets focused. The default is true.
* @hide
*/
@android.view.RemotableViewMethod
public final void setShowSoftInputOnFocus(boolean show) {
- createEditorIfNeeded("setShowSoftInputOnFocus");
+ createEditorIfNeeded();
mEditor.mShowSoftInputOnFocus = show;
}
@@ -2358,6 +2419,52 @@
}
/**
+ * Gets the radius of the shadow layer.
+ *
+ * @return the radius of the shadow layer. If 0, the shadow layer is not visible
+ *
+ * @see #setShadowLayer(float, float, float, int)
+ *
+ * @attr ref android.R.styleable#TextView_shadowRadius
+ */
+ public float getShadowRadius() {
+ return mShadowRadius;
+ }
+
+ /**
+ * @return the horizontal offset of the shadow layer
+ *
+ * @see #setShadowLayer(float, float, float, int)
+ *
+ * @attr ref android.R.styleable#TextView_shadowDx
+ */
+ public float getShadowDx() {
+ return mShadowDx;
+ }
+
+ /**
+ * @return the vertical offset of the shadow layer
+ *
+ * @see #setShadowLayer(float, float, float, int)
+ *
+ * @attr ref android.R.styleable#TextView_shadowDy
+ */
+ public float getShadowDy() {
+ return mShadowDy;
+ }
+
+ /**
+ * @return the color of the shadow layer
+ *
+ * @see #setShadowLayer(float, float, float, int)
+ *
+ * @attr ref android.R.styleable#TextView_shadowColor
+ */
+ public int getShadowColor() {
+ return mTextPaint.shadowColor;
+ }
+
+ /**
* @return the base paint used for the text. Please use this only to
* consult the Paint's properties and not to change them.
*/
@@ -2418,7 +2525,12 @@
}
/**
- * Sets the color of the hint text.
+ * Sets the color of the hint text for all the states (disabled, focussed, selected...) of this
+ * TextView.
+ *
+ * @see #setHintTextColor(ColorStateList)
+ * @see #getHintTextColors()
+ * @see #setTextColor(int)
*
* @attr ref android.R.styleable#TextView_textColorHint
*/
@@ -2431,6 +2543,11 @@
/**
* Sets the color of the hint text.
*
+ * @see #getHintTextColors()
+ * @see #setHintTextColor(int)
+ * @see #setTextColor(ColorStateList)
+ * @see #setLinkTextColor(ColorStateList)
+ *
* @attr ref android.R.styleable#TextView_textColorHint
*/
public final void setHintTextColor(ColorStateList colors) {
@@ -2439,9 +2556,14 @@
}
/**
- * <p>Return the color used to paint the hint text.</p>
+ * @return the color of the hint text, for the different states of this TextView.
*
- * @return Returns the list of hint text colors.
+ * @see #setHintTextColor(ColorStateList)
+ * @see #setHintTextColor(int)
+ * @see #setTextColor(ColorStateList)
+ * @see #setLinkTextColor(ColorStateList)
+ *
+ * @attr ref android.R.styleable#TextView_textColorHint
*/
public final ColorStateList getHintTextColors() {
return mHintTextColor;
@@ -2459,6 +2581,9 @@
/**
* Sets the color of links in the text.
*
+ * @see #setLinkTextColor(ColorStateList)
+ * @see #getLinkTextColors()
+ *
* @attr ref android.R.styleable#TextView_textColorLink
*/
@android.view.RemotableViewMethod
@@ -2470,6 +2595,11 @@
/**
* Sets the color of links in the text.
*
+ * @see #setLinkTextColor(int)
+ * @see #getLinkTextColors()
+ * @see #setTextColor(ColorStateList)
+ * @see #setHintTextColor(ColorStateList)
+ *
* @attr ref android.R.styleable#TextView_textColorLink
*/
public final void setLinkTextColor(ColorStateList colors) {
@@ -2478,9 +2608,13 @@
}
/**
- * <p>Returns the color used to paint links in the text.</p>
+ * @return the list of colors used to paint the links in the text, for the different states of
+ * this TextView
*
- * @return Returns the list of link text colors.
+ * @see #setLinkTextColor(ColorStateList)
+ * @see #setLinkTextColor(int)
+ *
+ * @attr ref android.R.styleable#TextView_textColorLink
*/
public final ColorStateList getLinkTextColors() {
return mLinkTextColor;
@@ -2598,6 +2732,8 @@
* Setting this value overrides any other (minimum) height setting. A single line TextView will
* set this value to 1.
*
+ * @see #getMinLines()
+ *
* @attr ref android.R.styleable#TextView_minLines
*/
@android.view.RemotableViewMethod
@@ -2610,6 +2746,18 @@
}
/**
+ * @return the minimum number of lines displayed in this TextView, or -1 if the minimum
+ * height was set in pixels instead using {@link #setMinHeight(int) or #setHeight(int)}.
+ *
+ * @see #setMinLines(int)
+ *
+ * @attr ref android.R.styleable#TextView_minLines
+ */
+ public int getMinLines() {
+ return mMinMode == LINES ? mMinimum : -1;
+ }
+
+ /**
* Makes the TextView at least this many pixels tall.
*
* Setting this value overrides any other (minimum) number of lines setting.
@@ -2626,6 +2774,18 @@
}
/**
+ * @return the minimum height of this TextView expressed in pixels, or -1 if the minimum
+ * height was set in number of lines instead using {@link #setMinLines(int) or #setLines(int)}.
+ *
+ * @see #setMinHeight(int)
+ *
+ * @attr ref android.R.styleable#TextView_minHeight
+ */
+ public int getMinHeight() {
+ return mMinMode == PIXELS ? mMinimum : -1;
+ }
+
+ /**
* Makes the TextView at most this many lines tall.
*
* Setting this value overrides any other (maximum) height setting.
@@ -2642,6 +2802,18 @@
}
/**
+ * @return the maximum number of lines displayed in this TextView, or -1 if the maximum
+ * height was set in pixels instead using {@link #setMaxHeight(int) or #setHeight(int)}.
+ *
+ * @see #setMaxLines(int)
+ *
+ * @attr ref android.R.styleable#TextView_maxLines
+ */
+ public int getMaxLines() {
+ return mMaxMode == LINES ? mMaximum : -1;
+ }
+
+ /**
* Makes the TextView at most this many pixels tall. This option is mutually exclusive with the
* {@link #setMaxLines(int)} method.
*
@@ -2659,6 +2831,18 @@
}
/**
+ * @return the maximum height of this TextView expressed in pixels, or -1 if the maximum
+ * height was set in number of lines instead using {@link #setMaxLines(int) or #setLines(int)}.
+ *
+ * @see #setMaxHeight(int)
+ *
+ * @attr ref android.R.styleable#TextView_maxHeight
+ */
+ public int getMaxHeight() {
+ return mMaxMode == PIXELS ? mMaximum : -1;
+ }
+
+ /**
* Makes the TextView exactly this many lines tall.
*
* Note that setting this value overrides any other (minimum / maximum) number of lines or
@@ -2709,6 +2893,19 @@
}
/**
+ * @return the minimum width of the TextView, expressed in ems or -1 if the minimum width
+ * was set in pixels instead (using {@link #setMinWidth(int)} or {@link #setWidth(int)}).
+ *
+ * @see #setMinEms(int)
+ * @see #setEms(int)
+ *
+ * @attr ref android.R.styleable#TextView_minEms
+ */
+ public int getMinEms() {
+ return mMinWidthMode == EMS ? mMinWidth : -1;
+ }
+
+ /**
* Makes the TextView at least this many pixels wide
*
* @attr ref android.R.styleable#TextView_minWidth
@@ -2723,6 +2920,19 @@
}
/**
+ * @return the minimum width of the TextView, in pixels or -1 if the minimum width
+ * was set in ems instead (using {@link #setMinEms(int)} or {@link #setEms(int)}).
+ *
+ * @see #setMinWidth(int)
+ * @see #setWidth(int)
+ *
+ * @attr ref android.R.styleable#TextView_minWidth
+ */
+ public int getMinWidth() {
+ return mMinWidthMode == PIXELS ? mMinWidth : -1;
+ }
+
+ /**
* Makes the TextView at most this many ems wide
*
* @attr ref android.R.styleable#TextView_maxEms
@@ -2737,6 +2947,19 @@
}
/**
+ * @return the maximum width of the TextView, expressed in ems or -1 if the maximum width
+ * was set in pixels instead (using {@link #setMaxWidth(int)} or {@link #setWidth(int)}).
+ *
+ * @see #setMaxEms(int)
+ * @see #setEms(int)
+ *
+ * @attr ref android.R.styleable#TextView_maxEms
+ */
+ public int getMaxEms() {
+ return mMaxWidthMode == EMS ? mMaxWidth : -1;
+ }
+
+ /**
* Makes the TextView at most this many pixels wide
*
* @attr ref android.R.styleable#TextView_maxWidth
@@ -2751,8 +2974,26 @@
}
/**
+ * @return the maximum width of the TextView, in pixels or -1 if the maximum width
+ * was set in ems instead (using {@link #setMaxEms(int)} or {@link #setEms(int)}).
+ *
+ * @see #setMaxWidth(int)
+ * @see #setWidth(int)
+ *
+ * @attr ref android.R.styleable#TextView_maxWidth
+ */
+ public int getMaxWidth() {
+ return mMaxWidthMode == PIXELS ? mMaxWidth : -1;
+ }
+
+ /**
* Makes the TextView exactly this many ems wide
*
+ * @see #setMaxEms(int)
+ * @see #setMinEms(int)
+ * @see #getMinEms()
+ * @see #getMaxEms()
+ *
* @attr ref android.R.styleable#TextView_ems
*/
@android.view.RemotableViewMethod
@@ -2769,6 +3010,11 @@
* You could do the same thing by specifying this number in the
* LayoutParams.
*
+ * @see #setMaxWidth(int)
+ * @see #setMinWidth(int)
+ * @see #getMinWidth()
+ * @see #getMaxWidth()
+ *
* @attr ref android.R.styleable#TextView_width
*/
@android.view.RemotableViewMethod
@@ -2780,7 +3026,6 @@
invalidate();
}
-
/**
* Sets line spacing for this TextView. Each line will have its height
* multiplied by <code>mult</code> and have <code>add</code> added to it.
@@ -2802,6 +3047,34 @@
}
/**
+ * Gets the line spacing multiplier
+ *
+ * @return the value by which each line's height is multiplied to get its actual height.
+ *
+ * @see #setLineSpacing(float, float)
+ * @see #getLineSpacingExtra()
+ *
+ * @attr ref android.R.styleable#TextView_lineSpacingMultiplier
+ */
+ public float getLineSpacingMultiplier() {
+ return mSpacingMult;
+ }
+
+ /**
+ * Gets the line spacing extra space
+ *
+ * @return the extra space that is added to the height of each lines of this TextView.
+ *
+ * @see #setLineSpacing(float, float)
+ * @see #getLineSpacingMultiplier()
+ *
+ * @attr ref android.R.styleable#TextView_lineSpacingExtra
+ */
+ public float getLineSpacingExtra() {
+ return mSpacingAdd;
+ }
+
+ /**
* Convenience method: Append the specified text to the TextView's
* display buffer, upgrading it to BufferType.EDITABLE if it was
* not already editable.
@@ -2990,7 +3263,7 @@
Selection.setSelection((Spannable) mText, ss.selStart, ss.selEnd);
if (ss.frozenWithFocus) {
- createEditorIfNeeded("restore instance with focus");
+ createEditorIfNeeded();
mEditor.mFrozenWithFocus = true;
}
}
@@ -3151,7 +3424,7 @@
if (type == BufferType.EDITABLE || getKeyListener() != null ||
needEditableForNotification) {
- createEditorIfNeeded("setText with BufferType.EDITABLE or non null mInput");
+ createEditorIfNeeded();
Editable t = mEditableFactory.newEditable(text);
text = t;
setFilters(t, mFilters);
@@ -3495,7 +3768,7 @@
*/
public void setRawInputType(int type) {
if (type == InputType.TYPE_NULL && mEditor == null) return; //TYPE_NULL is the default value
- createEditorIfNeeded("non null input type");
+ createEditorIfNeeded();
mEditor.mInputType = type;
}
@@ -3538,7 +3811,7 @@
}
setRawInputType(type);
if (direct) {
- createEditorIfNeeded("setInputType");
+ createEditorIfNeeded();
mEditor.mKeyListener = input;
} else {
setKeyListenerOnly(input);
@@ -3564,7 +3837,7 @@
* @attr ref android.R.styleable#TextView_imeOptions
*/
public void setImeOptions(int imeOptions) {
- createEditorIfNeeded("IME options specified");
+ createEditorIfNeeded();
mEditor.createInputContentTypeIfNeeded();
mEditor.mInputContentType.imeOptions = imeOptions;
}
@@ -3591,7 +3864,7 @@
* @attr ref android.R.styleable#TextView_imeActionId
*/
public void setImeActionLabel(CharSequence label, int actionId) {
- createEditorIfNeeded("IME action label specified");
+ createEditorIfNeeded();
mEditor.createInputContentTypeIfNeeded();
mEditor.mInputContentType.imeActionLabel = label;
mEditor.mInputContentType.imeActionId = actionId;
@@ -3628,7 +3901,7 @@
* modifier will, however, allow the user to insert a newline character.
*/
public void setOnEditorActionListener(OnEditorActionListener l) {
- createEditorIfNeeded("Editor action listener set");
+ createEditorIfNeeded();
mEditor.createInputContentTypeIfNeeded();
mEditor.mInputContentType.onEditorActionListener = l;
}
@@ -3725,7 +3998,7 @@
* @attr ref android.R.styleable#TextView_privateImeOptions
*/
public void setPrivateImeOptions(String type) {
- createEditorIfNeeded("Private IME option set");
+ createEditorIfNeeded();
mEditor.createInputContentTypeIfNeeded();
mEditor.mInputContentType.privateImeOptions = type;
}
@@ -3753,7 +4026,7 @@
* @attr ref android.R.styleable#TextView_editorExtras
*/
public void setInputExtras(int xmlResId) throws XmlPullParserException, IOException {
- createEditorIfNeeded("Input extra set");
+ createEditorIfNeeded();
XmlResourceParser parser = getResources().getXml(xmlResId);
mEditor.createInputContentTypeIfNeeded();
mEditor.mInputContentType.extras = new Bundle();
@@ -3772,7 +4045,7 @@
*/
public Bundle getInputExtras(boolean create) {
if (mEditor == null && !create) return null;
- createEditorIfNeeded("get Input extra");
+ createEditorIfNeeded();
if (mEditor.mInputContentType == null) {
if (!create) return null;
mEditor.createInputContentTypeIfNeeded();
@@ -3824,7 +4097,7 @@
* be cleared (and you should provide a <code>null</code> icon as well).
*/
public void setError(CharSequence error, Drawable icon) {
- createEditorIfNeeded("setError");
+ createEditorIfNeeded();
mEditor.setError(error, icon);
}
@@ -3883,6 +4156,8 @@
/**
* Returns the current list of input filters.
+ *
+ * @attr ref android.R.styleable#TextView_maxLength
*/
public InputFilter[] getFilters() {
return mFilters;
@@ -4276,6 +4551,9 @@
}
}
+ /**
+ * @hide
+ */
@Override
public int getResolvedLayoutDirection(Drawable who) {
if (who == null) return View.LAYOUT_DIRECTION_LTR;
@@ -4331,7 +4609,7 @@
public void setTextIsSelectable(boolean selectable) {
if (!selectable && mEditor == null) return; // false is default value with no edit data
- createEditorIfNeeded("setTextIsSelectable");
+ createEditorIfNeeded();
if (mEditor.mTextIsSelectable == selectable) return;
mEditor.mTextIsSelectable = selectable;
@@ -5144,7 +5422,7 @@
* @return Returns true if the text was successfully extracted, else false.
*/
public boolean extractText(ExtractedTextRequest request, ExtractedText outText) {
- createEditorIfNeeded("extractText");
+ createEditorIfNeeded();
return mEditor.extractText(request, outText);
}
@@ -5639,6 +5917,8 @@
* room for accents that go above the normal ascent and descent.
* The default is true.
*
+ * @see #getIncludeFontPadding()
+ *
* @attr ref android.R.styleable#TextView_includeFontPadding
*/
public void setIncludeFontPadding(boolean includepad) {
@@ -5653,6 +5933,18 @@
}
}
+ /**
+ * Gets whether the TextView includes extra top and bottom padding to make
+ * room for accents that go above the normal ascent and descent.
+ *
+ * @see #setIncludeFontPadding(boolean)
+ *
+ * @attr ref android.R.styleable#TextView_includeFontPadding
+ */
+ public boolean getIncludeFontPadding() {
+ return mIncludePad;
+ }
+
private static final BoringLayout.Metrics UNKNOWN_BORING = new BoringLayout.Metrics();
@Override
@@ -6504,6 +6796,8 @@
* Sets how many times to repeat the marquee animation. Only applied if the
* TextView has marquee enabled. Set to -1 to repeat indefinitely.
*
+ * @see #getMarqueeRepeatLimit()
+ *
* @attr ref android.R.styleable#TextView_marqueeRepeatLimit
*/
public void setMarqueeRepeatLimit(int marqueeLimit) {
@@ -6511,6 +6805,21 @@
}
/**
+ * Gets the number of times the marquee animation is repeated. Only meaningful if the
+ * TextView has marquee enabled.
+ *
+ * @return the number of times the marquee animation is repeated. -1 if the animation
+ * repeats indefinitely
+ *
+ * @see #setMarqueeRepeatLimit(int)
+ *
+ * @attr ref android.R.styleable#TextView_marqueeRepeatLimit
+ */
+ public int getMarqueeRepeatLimit() {
+ return mMarqueeRepeatLimit;
+ }
+
+ /**
* Returns where, if anywhere, words that are longer than the view
* is wide should be ellipsized.
*/
@@ -6527,7 +6836,7 @@
*/
@android.view.RemotableViewMethod
public void setSelectAllOnFocus(boolean selectAllOnFocus) {
- createEditorIfNeeded("setSelectAllOnFocus");
+ createEditorIfNeeded();
mEditor.mSelectAllOnFocus = selectAllOnFocus;
if (selectAllOnFocus && !(mText instanceof Spannable)) {
@@ -6536,14 +6845,17 @@
}
/**
- * Set whether the cursor is visible. The default is true.
+ * Set whether the cursor is visible. The default is true. Note that this property only
+ * makes sense for editable TextView.
+ *
+ * @see #isCursorVisible()
*
* @attr ref android.R.styleable#TextView_cursorVisible
*/
@android.view.RemotableViewMethod
public void setCursorVisible(boolean visible) {
if (visible && mEditor == null) return; // visible is the default value with no edit data
- createEditorIfNeeded("setCursorVisible");
+ createEditorIfNeeded();
if (mEditor.mCursorVisible != visible) {
mEditor.mCursorVisible = visible;
invalidate();
@@ -6555,6 +6867,18 @@
}
}
+ /**
+ * @return whether or not the cursor is visible (assuming this TextView is editable)
+ *
+ * @see #setCursorVisible(boolean)
+ *
+ * @attr ref android.R.styleable#TextView_cursorVisible
+ */
+ public boolean isCursorVisible() {
+ // true is the default value
+ return mEditor == null ? true : mEditor.mCursorVisible;
+ }
+
private boolean canMarquee() {
int width = (mRight - mLeft - getCompoundPaddingLeft() - getCompoundPaddingRight());
return width > 0 && (mLayout.getLineWidth(0) > width ||
@@ -7388,6 +7712,17 @@
if (!isPassword) {
info.setText(getTextForAccessibility());
}
+
+ if (TextUtils.isEmpty(getContentDescription())
+ && !TextUtils.isEmpty(mText)) {
+ info.addAction(AccessibilityNodeInfo.ACTION_NEXT_AT_MOVEMENT_GRANULARITY);
+ info.addAction(AccessibilityNodeInfo.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY);
+ info.setMovementGranularities(AccessibilityNodeInfo.MOVEMENT_GRANULARITY_CHARACTER
+ | AccessibilityNodeInfo.MOVEMENT_GRANULARITY_WORD
+ | AccessibilityNodeInfo.MOVEMENT_GRANULARITY_LINE
+ | AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PARAGRAPH
+ | AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PAGE);
+ }
}
@Override
@@ -7402,12 +7737,13 @@
}
/**
- * Gets the text reported for accessibility purposes. It is the
- * text if not empty or the hint.
+ * Gets the text reported for accessibility purposes.
*
* @return The accessibility text.
+ *
+ * @hide
*/
- private CharSequence getTextForAccessibility() {
+ public CharSequence getTextForAccessibility() {
CharSequence text = getText();
if (TextUtils.isEmpty(text)) {
text = getHint();
@@ -7578,7 +7914,7 @@
* that case, to allow for quick replacement.
*/
public void setCustomSelectionActionModeCallback(ActionMode.Callback actionModeCallback) {
- createEditorIfNeeded("custom selection action mode set");
+ createEditorIfNeeded();
mEditor.mCustomSelectionActionModeCallback = actionModeCallback;
}
@@ -7949,16 +8285,82 @@
* Also note that for performance reasons, the mEditor is created when needed, but not
* reset when no more edit-specific fields are needed.
*/
- private void createEditorIfNeeded(String reason) {
+ private void createEditorIfNeeded() {
if (mEditor == null) {
- if (!(this instanceof EditText)) {
- Log.e(LOG_TAG + " EDITOR", "Creating an Editor on a regular TextView. " + reason);
- }
mEditor = new Editor(this);
- } else {
- if (!(this instanceof EditText)) {
- Log.d(LOG_TAG + " EDITOR", "Redundant Editor creation. " + reason);
+ }
+ }
+
+ /**
+ * @hide
+ */
+ @Override
+ public CharSequence getIterableTextForAccessibility() {
+ if (getContentDescription() == null) {
+ if (!(mText instanceof Spannable)) {
+ setText(mText, BufferType.SPANNABLE);
}
+ return mText;
+ }
+ return super.getIterableTextForAccessibility();
+ }
+
+ /**
+ * @hide
+ */
+ @Override
+ public TextSegmentIterator getIteratorForGranularity(int granularity) {
+ switch (granularity) {
+ case AccessibilityNodeInfo.MOVEMENT_GRANULARITY_LINE: {
+ Spannable text = (Spannable) getIterableTextForAccessibility();
+ if (!TextUtils.isEmpty(text) && getLayout() != null) {
+ AccessibilityIterators.LineTextSegmentIterator iterator =
+ AccessibilityIterators.LineTextSegmentIterator.getInstance();
+ iterator.initialize(text, getLayout());
+ return iterator;
+ }
+ } break;
+ case AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PAGE: {
+ Spannable text = (Spannable) getIterableTextForAccessibility();
+ if (!TextUtils.isEmpty(text) && getLayout() != null) {
+ AccessibilityIterators.PageTextSegmentIterator iterator =
+ AccessibilityIterators.PageTextSegmentIterator.getInstance();
+ iterator.initialize(this);
+ return iterator;
+ }
+ } break;
+ }
+ return super.getIteratorForGranularity(granularity);
+ }
+
+ /**
+ * @hide
+ */
+ @Override
+ public int getAccessibilityCursorPosition() {
+ if (TextUtils.isEmpty(getContentDescription())) {
+ return getSelectionEnd();
+ } else {
+ return super.getAccessibilityCursorPosition();
+ }
+ }
+
+ /**
+ * @hide
+ */
+ @Override
+ public void setAccessibilityCursorPosition(int index) {
+ if (getAccessibilityCursorPosition() == index) {
+ return;
+ }
+ if (TextUtils.isEmpty(getContentDescription())) {
+ if (index >= 0) {
+ Selection.setSelection((Spannable) mText, index);
+ } else {
+ Selection.removeSelection((Spannable) mText);
+ }
+ } else {
+ super.setAccessibilityCursorPosition(index);
}
}
diff --git a/core/java/com/android/internal/app/ActionBarImpl.java b/core/java/com/android/internal/app/ActionBarImpl.java
index d0071e3..2cbd9cc902 100644
--- a/core/java/com/android/internal/app/ActionBarImpl.java
+++ b/core/java/com/android/internal/app/ActionBarImpl.java
@@ -39,8 +39,8 @@
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
-import android.os.Build;
import android.os.Handler;
+import android.util.Log;
import android.util.TypedValue;
import android.view.ActionMode;
import android.view.ContextThemeWrapper;
@@ -110,10 +110,14 @@
private int mCurWindowVisibility = View.VISIBLE;
+ private boolean mHiddenByApp;
+ private boolean mHiddenBySystem;
+ private boolean mShowingForMode;
+
+ private boolean mNowShowing = true;
+
private Animator mCurrentShowAnim;
- private Animator mCurrentModeAnim;
private boolean mShowHideAnimationEnabled;
- boolean mWasHiddenBeforeMode;
final AnimatorListener mHideListener = new AnimatorListenerAdapter() {
@Override
@@ -129,6 +133,9 @@
mContainerView.setTransitioning(false);
mCurrentShowAnim = null;
completeDeferredDestroyActionMode();
+ if (mOverlayLayout != null) {
+ mOverlayLayout.requestFitSystemWindows();
+ }
}
};
@@ -184,8 +191,15 @@
mContextDisplayMode = mActionView.isSplitActionBar() ?
CONTEXT_DISPLAY_SPLIT : CONTEXT_DISPLAY_NORMAL;
+ // This was initially read from the action bar style
+ final int current = mActionView.getDisplayOptions();
+ final boolean homeAsUp = (current & DISPLAY_HOME_AS_UP) != 0;
+ if (homeAsUp) {
+ mDisplayHomeAsUpSet = true;
+ }
+
ActionBarPolicy abp = ActionBarPolicy.get(mContext);
- setHomeButtonEnabled(abp.enableHomeButtonByDefault());
+ setHomeButtonEnabled(abp.enableHomeButtonByDefault() || homeAsUp);
setHasEmbeddedTabs(abp.hasEmbeddedTabs());
}
@@ -423,16 +437,13 @@
}
public ActionMode startActionMode(ActionMode.Callback callback) {
- boolean wasHidden = false;
if (mActionMode != null) {
- wasHidden = mWasHiddenBeforeMode;
mActionMode.finish();
}
mContextView.killMode();
ActionModeImpl mode = new ActionModeImpl(callback);
if (mode.dispatchOnCreate()) {
- mWasHiddenBeforeMode = !isShowing() || wasHidden;
mode.invalidate();
mContextView.initForMode(mode);
animateToMode(true);
@@ -577,21 +588,91 @@
@Override
public void show() {
- show(true, false);
+ if (mHiddenByApp) {
+ mHiddenByApp = false;
+ updateVisibility(false);
+ }
}
- public void show(boolean markHiddenBeforeMode, boolean alwaysAnimate) {
+ private void showForActionMode() {
+ if (!mShowingForMode) {
+ mShowingForMode = true;
+ if (mOverlayLayout != null) {
+ mOverlayLayout.setShowingForActionMode(true);
+ }
+ updateVisibility(false);
+ }
+ }
+
+ public void showForSystem() {
+ if (mHiddenBySystem) {
+ mHiddenBySystem = false;
+ updateVisibility(true);
+ }
+ }
+
+ @Override
+ public void hide() {
+ if (!mHiddenByApp) {
+ mHiddenByApp = true;
+ updateVisibility(false);
+ }
+ }
+
+ private void hideForActionMode() {
+ if (mShowingForMode) {
+ mShowingForMode = false;
+ if (mOverlayLayout != null) {
+ mOverlayLayout.setShowingForActionMode(false);
+ }
+ updateVisibility(false);
+ }
+ }
+
+ public void hideForSystem() {
+ if (!mHiddenBySystem) {
+ mHiddenBySystem = true;
+ updateVisibility(true);
+ }
+ }
+
+ private static boolean checkShowingFlags(boolean hiddenByApp, boolean hiddenBySystem,
+ boolean showingForMode) {
+ if (showingForMode) {
+ return true;
+ } else if (hiddenByApp || hiddenBySystem) {
+ return false;
+ } else {
+ return true;
+ }
+ }
+
+ private void updateVisibility(boolean fromSystem) {
+ // Based on the current state, should we be hidden or shown?
+ final boolean shown = checkShowingFlags(mHiddenByApp, mHiddenBySystem,
+ mShowingForMode);
+
+ if (shown) {
+ if (!mNowShowing) {
+ mNowShowing = true;
+ doShow(fromSystem);
+ }
+ } else {
+ if (mNowShowing) {
+ mNowShowing = false;
+ doHide(fromSystem);
+ }
+ }
+ }
+
+ public void doShow(boolean fromSystem) {
if (mCurrentShowAnim != null) {
mCurrentShowAnim.end();
}
- if (mTopVisibilityView.getVisibility() == View.VISIBLE) {
- if (markHiddenBeforeMode) mWasHiddenBeforeMode = false;
- return;
- }
mTopVisibilityView.setVisibility(View.VISIBLE);
if (mCurWindowVisibility == View.VISIBLE && (mShowHideAnimationEnabled
- || alwaysAnimate)) {
+ || fromSystem)) {
mTopVisibilityView.setAlpha(0);
mTopVisibilityView.setTranslationY(-mTopVisibilityView.getHeight());
AnimatorSet anim = new AnimatorSet();
@@ -610,6 +691,18 @@
}
anim.setInterpolator(AnimationUtils.loadInterpolator(mContext,
com.android.internal.R.interpolator.decelerate_quad));
+ anim.setDuration(mContext.getResources().getInteger(
+ com.android.internal.R.integer.config_mediumAnimTime));
+ // If this is being shown from the system, add a small delay.
+ // This is because we will also be animating in the status bar,
+ // and these two elements can't be done in lock-step. So we give
+ // a little time for the status bar to start its animation before
+ // the action bar animates. (This corresponds to the corresponding
+ // case when hiding, where the status bar has a small delay before
+ // starting.)
+ if (fromSystem) {
+ anim.setStartDelay(100);
+ }
anim.addListener(mShowListener);
mCurrentShowAnim = anim;
anim.start();
@@ -618,23 +711,18 @@
mContainerView.setTranslationY(0);
mShowListener.onAnimationEnd(null);
}
+ if (mOverlayLayout != null) {
+ mOverlayLayout.requestFitSystemWindows();
+ }
}
- @Override
- public void hide() {
- hide(false);
- }
-
- public void hide(boolean alwaysAnimate) {
+ public void doHide(boolean fromSystem) {
if (mCurrentShowAnim != null) {
mCurrentShowAnim.end();
}
- if (mTopVisibilityView.getVisibility() == View.GONE) {
- return;
- }
if (mCurWindowVisibility == View.VISIBLE && (mShowHideAnimationEnabled
- || alwaysAnimate)) {
+ || fromSystem)) {
mTopVisibilityView.setAlpha(1);
mContainerView.setTransitioning(true);
AnimatorSet anim = new AnimatorSet();
@@ -653,6 +741,8 @@
}
anim.setInterpolator(AnimationUtils.loadInterpolator(mContext,
com.android.internal.R.interpolator.accelerate_quad));
+ anim.setDuration(mContext.getResources().getInteger(
+ com.android.internal.R.integer.config_mediumAnimTime));
anim.addListener(mHideListener);
mCurrentShowAnim = anim;
anim.start();
@@ -662,15 +752,18 @@
}
public boolean isShowing() {
- return mTopVisibilityView.getVisibility() == View.VISIBLE;
+ return mNowShowing;
+ }
+
+ public boolean isSystemShowing() {
+ return !mHiddenBySystem;
}
void animateToMode(boolean toActionMode) {
if (toActionMode) {
- show(false, false);
- }
- if (mCurrentModeAnim != null) {
- mCurrentModeAnim.end();
+ showForActionMode();
+ } else {
+ hideForActionMode();
}
mActionView.animateToVisibility(toActionMode ? View.GONE : View.VISIBLE);
@@ -729,11 +822,13 @@
return;
}
- // If we were hidden before the mode was shown, defer the onDestroy
- // callback until the animation is finished and associated relayout
- // is about to happen. This lets apps better anticipate visibility
- // and layout behavior.
- if (mWasHiddenBeforeMode) {
+ // If this change in state is going to cause the action bar
+ // to be hidden, defer the onDestroy callback until the animation
+ // is finished and associated relayout is about to happen. This lets
+ // apps better anticipate visibility and layout behavior.
+ if (!checkShowingFlags(mHiddenByApp, mHiddenBySystem, false)) {
+ // With the current state but the action bar hidden, our
+ // overall showing state is going to be false.
mDeferredDestroyActionMode = this;
mDeferredModeDestroyCallback = mCallback;
} else {
@@ -747,10 +842,6 @@
mActionView.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
mActionMode = null;
-
- if (mWasHiddenBeforeMode) {
- hide();
- }
}
@Override
@@ -810,6 +901,7 @@
@Override
public void setTitleOptionalHint(boolean titleOptional) {
+ super.setTitleOptionalHint(titleOptional);
mContextView.setTitleOptional(titleOptional);
}
diff --git a/core/java/com/android/internal/app/IMediaContainerService.aidl b/core/java/com/android/internal/app/IMediaContainerService.aidl
index 727c094..c9f7a58 100755
--- a/core/java/com/android/internal/app/IMediaContainerService.aidl
+++ b/core/java/com/android/internal/app/IMediaContainerService.aidl
@@ -18,6 +18,7 @@
import android.net.Uri;
import android.os.ParcelFileDescriptor;
+import android.content.pm.ContainerEncryptionParams;
import android.content.pm.PackageInfoLite;
import android.content.res.ObbInfo;
@@ -25,9 +26,9 @@
String copyResourceToContainer(in Uri packageURI, String containerId, String key,
String resFileName, String publicResFileName, boolean isExternal,
boolean isForwardLocked);
- int copyResource(in Uri packageURI,
- in ParcelFileDescriptor outStream);
- PackageInfoLite getMinimalPackageInfo(in Uri fileUri, in int flags, in long threshold);
+ int copyResource(in Uri packageURI, in ContainerEncryptionParams encryptionParams,
+ in ParcelFileDescriptor outStream);
+ PackageInfoLite getMinimalPackageInfo(in String packagePath, in int flags, in long threshold);
boolean checkInternalFreeStorage(in Uri fileUri, boolean isForwardLocked, in long threshold);
boolean checkExternalFreeStorage(in Uri fileUri, boolean isForwardLocked);
ObbInfo getObbInfo(in String filename);
diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java
index 5862d3e..614f73f 100644
--- a/core/java/com/android/internal/app/ResolverActivity.java
+++ b/core/java/com/android/internal/app/ResolverActivity.java
@@ -19,15 +19,17 @@
import com.android.internal.R;
import com.android.internal.content.PackageMonitor;
+import android.app.ActivityManager;
import android.content.ComponentName;
import android.content.Context;
-import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.ActivityInfo;
import android.content.pm.LabeledIntent;
import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.ResolveInfo;
+import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
@@ -38,8 +40,8 @@
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
-import android.widget.CheckBox;
-import android.widget.CompoundButton;
+import android.widget.Button;
+import android.widget.GridView;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
@@ -56,13 +58,21 @@
* which there is more than one matching activity, allowing the user to decide
* which to go to. It is not normally used directly by application developers.
*/
-public class ResolverActivity extends AlertActivity implements
- DialogInterface.OnClickListener, CheckBox.OnCheckedChangeListener {
- private ResolveListAdapter mAdapter;
- private CheckBox mAlwaysCheck;
- private TextView mClearDefaultHint;
- private PackageManager mPm;
+public class ResolverActivity extends AlertActivity implements AdapterView.OnItemClickListener {
+ private static final String TAG = "ResolverActivity";
+ private ResolveListAdapter mAdapter;
+ private PackageManager mPm;
+ private boolean mAlwaysUseOption;
+ private boolean mShowExtended;
+ private GridView mGrid;
+ private Button mAlwaysButton;
+ private Button mOnceButton;
+ private int mIconDpi;
+ private int mIconSize;
+ private int mMaxColumns;
+
+ private boolean mRegistered;
private final PackageMonitor mPackageMonitor = new PackageMonitor() {
@Override public void onSomePackagesChanged() {
mAdapter.handlePackagesChanged();
@@ -90,66 +100,154 @@
protected void onCreate(Bundle savedInstanceState, Intent intent,
CharSequence title, Intent[] initialIntents, List<ResolveInfo> rList,
boolean alwaysUseOption) {
+ setTheme(R.style.Theme_DeviceDefault_Light_Dialog_Alert);
super.onCreate(savedInstanceState);
mPm = getPackageManager();
+ mAlwaysUseOption = alwaysUseOption;
+ mMaxColumns = getResources().getInteger(R.integer.config_maxResolverActivityColumns);
intent.setComponent(null);
AlertController.AlertParams ap = mAlertParams;
ap.mTitle = title;
- ap.mOnClickListener = this;
mPackageMonitor.register(this, getMainLooper(), false);
+ mRegistered = true;
- if (alwaysUseOption) {
- LayoutInflater inflater = (LayoutInflater) getSystemService(
- Context.LAYOUT_INFLATER_SERVICE);
- ap.mView = inflater.inflate(R.layout.always_use_checkbox, null);
- mAlwaysCheck = (CheckBox)ap.mView.findViewById(com.android.internal.R.id.alwaysUse);
- mAlwaysCheck.setText(R.string.alwaysUse);
- mAlwaysCheck.setOnCheckedChangeListener(this);
- mClearDefaultHint = (TextView)ap.mView.findViewById(
- com.android.internal.R.id.clearDefaultHint);
- mClearDefaultHint.setVisibility(View.GONE);
- }
+ final ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
+ mIconDpi = am.getLauncherLargeIconDensity();
+ mIconSize = am.getLauncherLargeIconSize();
+
mAdapter = new ResolveListAdapter(this, intent, initialIntents, rList);
int count = mAdapter.getCount();
if (count > 1) {
- ap.mAdapter = mAdapter;
+ ap.mView = getLayoutInflater().inflate(R.layout.resolver_grid, null);
+ mGrid = (GridView) ap.mView.findViewById(R.id.resolver_grid);
+ mGrid.setAdapter(mAdapter);
+ mGrid.setOnItemClickListener(this);
+ mGrid.setOnItemLongClickListener(new ItemLongClickListener());
+
+ if (alwaysUseOption) {
+ mGrid.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
+ }
+
+ resizeGrid();
} else if (count == 1) {
startActivity(mAdapter.intentForPosition(0));
+ mPackageMonitor.unregister();
+ mRegistered = false;
finish();
return;
} else {
- ap.mMessage = getResources().getText(com.android.internal.R.string.noApplications);
+ ap.mMessage = getResources().getText(R.string.noApplications);
}
setupAlert();
- ListView lv = mAlert.getListView();
- if (lv != null) {
- lv.setOnItemLongClickListener(new ItemLongClickListener());
+ if (alwaysUseOption) {
+ final ViewGroup buttonLayout = (ViewGroup) findViewById(R.id.button_bar);
+ buttonLayout.setVisibility(View.VISIBLE);
+ mAlwaysButton = (Button) buttonLayout.findViewById(R.id.button_always);
+ mOnceButton = (Button) buttonLayout.findViewById(R.id.button_once);
}
}
+ void resizeGrid() {
+ final int itemCount = mAdapter.getCount();
+ mGrid.setNumColumns(Math.min(itemCount, mMaxColumns));
+ }
+
+ Drawable getIcon(Resources res, int resId) {
+ Drawable result;
+ try {
+ result = res.getDrawableForDensity(resId, mIconDpi);
+ } catch (Resources.NotFoundException e) {
+ result = null;
+ }
+
+ return result;
+ }
+
+ Drawable loadIconForResolveInfo(ResolveInfo ri) {
+ Drawable dr;
+ try {
+ if (ri.resolvePackageName != null && ri.icon != 0) {
+ dr = getIcon(mPm.getResourcesForApplication(ri.resolvePackageName), ri.icon);
+ if (dr != null) {
+ return dr;
+ }
+ }
+ final int iconRes = ri.getIconResource();
+ if (iconRes != 0) {
+ dr = getIcon(mPm.getResourcesForApplication(ri.activityInfo.packageName), iconRes);
+ if (dr != null) {
+ return dr;
+ }
+ }
+ } catch (NameNotFoundException e) {
+ Log.e(TAG, "Couldn't find resources for package", e);
+ }
+ return ri.loadIcon(mPm);
+ }
+
@Override
protected void onRestart() {
super.onRestart();
- mPackageMonitor.register(this, getMainLooper(), false);
+ if (!mRegistered) {
+ mPackageMonitor.register(this, getMainLooper(), false);
+ mRegistered = true;
+ }
mAdapter.handlePackagesChanged();
}
@Override
protected void onStop() {
super.onStop();
- mPackageMonitor.unregister();
+ if (mRegistered) {
+ mPackageMonitor.unregister();
+ mRegistered = false;
+ }
}
- public void onClick(DialogInterface dialog, int which) {
+ @Override
+ protected void onRestoreInstanceState(Bundle savedInstanceState) {
+ super.onRestoreInstanceState(savedInstanceState);
+ if (mAlwaysUseOption) {
+ final int checkedPos = mGrid.getCheckedItemPosition();
+ final boolean enabled = checkedPos != GridView.INVALID_POSITION;
+ mAlwaysButton.setEnabled(enabled);
+ mOnceButton.setEnabled(enabled);
+ if (enabled) {
+ mGrid.setSelection(checkedPos);
+ }
+ }
+ }
+
+ @Override
+ public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+ if (mAlwaysUseOption) {
+ final int checkedPos = mGrid.getCheckedItemPosition();
+ final boolean enabled = checkedPos != GridView.INVALID_POSITION;
+ mAlwaysButton.setEnabled(enabled);
+ mOnceButton.setEnabled(enabled);
+ if (enabled) {
+ mGrid.smoothScrollToPosition(checkedPos);
+ }
+ } else {
+ startSelected(position, false);
+ }
+ }
+
+ public void onButtonClick(View v) {
+ final int id = v.getId();
+ startSelected(mGrid.getCheckedItemPosition(), id == R.id.button_always);
+ dismiss();
+ }
+
+ void startSelected(int which, boolean always) {
ResolveInfo ri = mAdapter.resolveInfoForPosition(which);
Intent intent = mAdapter.intentForPosition(which);
- boolean alwaysCheck = (mAlwaysCheck != null && mAlwaysCheck.isChecked());
- onIntentSelected(ri, intent, alwaysCheck);
+ onIntentSelected(ri, intent, always);
finish();
}
@@ -239,6 +337,12 @@
}
}
+ void showAppDetails(ResolveInfo ri) {
+ Intent in = new Intent().setAction("android.settings.APPLICATION_DETAILS_SETTINGS")
+ .setData(Uri.fromParts("package", ri.activityInfo.packageName, null));
+ startActivity(in);
+ }
+
private final class DisplayResolveInfo {
ResolveInfo ri;
CharSequence displayLabel;
@@ -275,12 +379,18 @@
}
public void handlePackagesChanged() {
+ final int oldItemCount = getCount();
rebuildList();
notifyDataSetChanged();
if (mList.size() <= 0) {
// We no longer have any items... just finish the activity.
finish();
}
+
+ final int newItemCount = getCount();
+ if (newItemCount != oldItemCount) {
+ resizeGrid();
+ }
}
private void rebuildList() {
@@ -289,7 +399,7 @@
} else {
mCurrentResolveList = mPm.queryIntentActivities(
mIntent, PackageManager.MATCH_DEFAULT_ONLY
- | (mAlwaysCheck != null ? PackageManager.GET_RESOLVED_FILTER : 0));
+ | (mAlwaysUseOption ? PackageManager.GET_RESOLVED_FILTER : 0));
}
int N;
if ((mCurrentResolveList != null) && ((N = mCurrentResolveList.size()) > 0)) {
@@ -353,6 +463,7 @@
r0 = mCurrentResolveList.get(0);
int start = 0;
CharSequence r0Label = r0.loadLabel(mPm);
+ mShowExtended = false;
for (int i = 1; i < N; i++) {
if (r0Label == null) {
r0Label = r0.activityInfo.packageName;
@@ -383,6 +494,7 @@
// No duplicate labels. Use label for entry at start
mList.add(new DisplayResolveInfo(ro, roLabel, null, null));
} else {
+ mShowExtended = true;
boolean usePkg = false;
CharSequence startApp = ro.activityInfo.applicationInfo.loadLabel(mPm);
if (startApp == null) {
@@ -463,6 +575,11 @@
if (convertView == null) {
view = mInflater.inflate(
com.android.internal.R.layout.resolve_list_item, parent, false);
+
+ // Fix the icon size even if we have different sized resources
+ ImageView icon = (ImageView)view.findViewById(R.id.icon);
+ ViewGroup.LayoutParams lp = (ViewGroup.LayoutParams) icon.getLayoutParams();
+ lp.width = lp.height = mIconSize;
} else {
view = convertView;
}
@@ -475,37 +592,25 @@
TextView text2 = (TextView)view.findViewById(com.android.internal.R.id.text2);
ImageView icon = (ImageView)view.findViewById(R.id.icon);
text.setText(info.displayLabel);
- if (info.extendedInfo != null) {
+ if (mShowExtended) {
text2.setVisibility(View.VISIBLE);
text2.setText(info.extendedInfo);
} else {
text2.setVisibility(View.GONE);
}
if (info.displayIcon == null) {
- info.displayIcon = info.ri.loadIcon(mPm);
+ info.displayIcon = loadIconForResolveInfo(info.ri);
}
icon.setImageDrawable(info.displayIcon);
}
}
- public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
- if (mClearDefaultHint == null) return;
-
- if(isChecked) {
- mClearDefaultHint.setVisibility(View.VISIBLE);
- } else {
- mClearDefaultHint.setVisibility(View.GONE);
- }
- }
-
class ItemLongClickListener implements AdapterView.OnItemLongClickListener {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
ResolveInfo ri = mAdapter.resolveInfoForPosition(position);
- Intent in = new Intent().setAction("android.settings.APPLICATION_DETAILS_SETTINGS")
- .setData(Uri.fromParts("package", ri.activityInfo.packageName, null));
- startActivity(in);
+ showAppDetails(ri);
return true;
}
diff --git a/core/java/com/android/internal/appwidget/IAppWidgetService.aidl b/core/java/com/android/internal/appwidget/IAppWidgetService.aidl
index 327fe07..7df45cf 100644
--- a/core/java/com/android/internal/appwidget/IAppWidgetService.aidl
+++ b/core/java/com/android/internal/appwidget/IAppWidgetService.aidl
@@ -43,8 +43,8 @@
// for AppWidgetManager
//
void updateAppWidgetIds(in int[] appWidgetIds, in RemoteViews views);
- void updateAppWidgetExtras(int appWidgetId, in Bundle extras);
- Bundle getAppWidgetExtras(int appWidgetId);
+ void updateAppWidgetOptions(int appWidgetId, in Bundle extras);
+ Bundle getAppWidgetOptions(int appWidgetId);
void partiallyUpdateAppWidgetIds(in int[] appWidgetIds, in RemoteViews views);
void updateAppWidgetProvider(in ComponentName provider, in RemoteViews views);
void notifyAppWidgetViewDataChanged(in int[] appWidgetIds, int viewId);
diff --git a/core/java/com/android/internal/content/PackageHelper.java b/core/java/com/android/internal/content/PackageHelper.java
index 48ed561..246b0c9 100644
--- a/core/java/com/android/internal/content/PackageHelper.java
+++ b/core/java/com/android/internal/content/PackageHelper.java
@@ -57,25 +57,25 @@
public static final int APP_INSTALL_INTERNAL = 1;
public static final int APP_INSTALL_EXTERNAL = 2;
- public static IMountService getMountService() {
+ public static IMountService getMountService() throws RemoteException {
IBinder service = ServiceManager.getService("mount");
if (service != null) {
return IMountService.Stub.asInterface(service);
} else {
Log.e(TAG, "Can't get mount service");
+ throw new RemoteException("Could not contact mount service");
}
- return null;
}
public static String createSdDir(int sizeMb, String cid, String sdEncKey, int uid,
boolean isExternal) {
// Create mount point via MountService
- IMountService mountService = getMountService();
-
- if (localLOGV)
- Log.i(TAG, "Size of container " + sizeMb + " MB");
-
try {
+ IMountService mountService = getMountService();
+
+ if (localLOGV)
+ Log.i(TAG, "Size of container " + sizeMb + " MB");
+
int rc = mountService.createSecureContainer(cid, sizeMb, "ext4", sdEncKey, uid,
isExternal);
if (rc != StorageResultCode.OperationSucceeded) {
diff --git a/core/java/com/android/internal/net/NetworkStatsFactory.java b/core/java/com/android/internal/net/NetworkStatsFactory.java
index d59585f..8b222f0 100644
--- a/core/java/com/android/internal/net/NetworkStatsFactory.java
+++ b/core/java/com/android/internal/net/NetworkStatsFactory.java
@@ -24,20 +24,12 @@
import android.net.NetworkStats;
import android.os.StrictMode;
import android.os.SystemClock;
-import android.util.Slog;
import com.android.internal.util.ProcFileReader;
-import com.google.android.collect.Lists;
-import com.google.android.collect.Sets;
-import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
-import java.io.FileReader;
import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.StringTokenizer;
import libcore.io.IoUtils;
@@ -50,14 +42,10 @@
// TODO: consider moving parsing to native code
- /** Path to {@code /proc/net/dev}. */
- @Deprecated
- private final File mStatsIface;
- /** Path to {@code /proc/net/xt_qtaguid/iface_stat}. */
- @Deprecated
- private final File mStatsXtIface;
/** Path to {@code /proc/net/xt_qtaguid/iface_stat_all}. */
private final File mStatsXtIfaceAll;
+ /** Path to {@code /proc/net/xt_qtaguid/iface_stat_fmt}. */
+ private final File mStatsXtIfaceFmt;
/** Path to {@code /proc/net/xt_qtaguid/stats}. */
private final File mStatsXtUid;
@@ -67,28 +55,20 @@
// @VisibleForTesting
public NetworkStatsFactory(File procRoot) {
- mStatsIface = new File(procRoot, "net/dev");
- mStatsXtUid = new File(procRoot, "net/xt_qtaguid/stats");
- mStatsXtIface = new File(procRoot, "net/xt_qtaguid/iface_stat");
mStatsXtIfaceAll = new File(procRoot, "net/xt_qtaguid/iface_stat_all");
+ mStatsXtIfaceFmt = new File(procRoot, "net/xt_qtaguid/iface_stat_fmt");
+ mStatsXtUid = new File(procRoot, "net/xt_qtaguid/stats");
}
/**
- * Parse and return interface-level summary {@link NetworkStats}. Values
- * monotonically increase since device boot, and may include details about
- * inactive interfaces.
+ * Parse and return interface-level summary {@link NetworkStats} measured
+ * using {@code /proc/net/dev} style hooks, which may include non IP layer
+ * traffic. Values monotonically increase since device boot, and may include
+ * details about inactive interfaces.
*
* @throws IllegalStateException when problem parsing stats.
*/
- public NetworkStats readNetworkStatsSummary() throws IllegalStateException {
- if (mStatsXtIfaceAll.exists()) {
- return readNetworkStatsSummarySingleFile();
- } else {
- return readNetworkStatsSummaryMultipleFiles();
- }
- }
-
- private NetworkStats readNetworkStatsSummarySingleFile() {
+ public NetworkStats readNetworkStatsSummaryDev() throws IllegalStateException {
final StrictMode.ThreadPolicy savedPolicy = StrictMode.allowThreadDiskReads();
final NetworkStats stats = new NetworkStats(SystemClock.elapsedRealtime(), 6);
@@ -137,79 +117,40 @@
}
/**
- * @deprecated remove once {@code iface_stat_all} is merged to all kernels.
+ * Parse and return interface-level summary {@link NetworkStats}. Designed
+ * to return only IP layer traffic. Values monotonically increase since
+ * device boot, and may include details about inactive interfaces.
+ *
+ * @throws IllegalStateException when problem parsing stats.
*/
- @Deprecated
- private NetworkStats readNetworkStatsSummaryMultipleFiles() {
+ public NetworkStats readNetworkStatsSummaryXt() throws IllegalStateException {
final StrictMode.ThreadPolicy savedPolicy = StrictMode.allowThreadDiskReads();
+ // return null when kernel doesn't support
+ if (!mStatsXtIfaceFmt.exists()) return null;
+
final NetworkStats stats = new NetworkStats(SystemClock.elapsedRealtime(), 6);
final NetworkStats.Entry entry = new NetworkStats.Entry();
- final HashSet<String> knownIfaces = Sets.newHashSet();
- final HashSet<String> activeIfaces = Sets.newHashSet();
-
- // collect any historical stats and active state
- for (String iface : fileListWithoutNull(mStatsXtIface)) {
- final File ifacePath = new File(mStatsXtIface, iface);
-
- final long active = readSingleLongFromFile(new File(ifacePath, "active"));
- if (active == 1) {
- knownIfaces.add(iface);
- activeIfaces.add(iface);
- } else if (active == 0) {
- knownIfaces.add(iface);
- } else {
- continue;
- }
-
- entry.iface = iface;
- entry.uid = UID_ALL;
- entry.set = SET_ALL;
- entry.tag = TAG_NONE;
- entry.rxBytes = readSingleLongFromFile(new File(ifacePath, "rx_bytes"));
- entry.rxPackets = readSingleLongFromFile(new File(ifacePath, "rx_packets"));
- entry.txBytes = readSingleLongFromFile(new File(ifacePath, "tx_bytes"));
- entry.txPackets = readSingleLongFromFile(new File(ifacePath, "tx_packets"));
-
- stats.addValues(entry);
- }
-
- final ArrayList<String> values = Lists.newArrayList();
-
- BufferedReader reader = null;
+ ProcFileReader reader = null;
try {
- reader = new BufferedReader(new FileReader(mStatsIface));
+ // open and consume header line
+ reader = new ProcFileReader(new FileInputStream(mStatsXtIfaceFmt));
+ reader.finishLine();
- // skip first two header lines
- reader.readLine();
- reader.readLine();
+ while (reader.hasMoreData()) {
+ entry.iface = reader.nextString();
+ entry.uid = UID_ALL;
+ entry.set = SET_ALL;
+ entry.tag = TAG_NONE;
- // parse remaining lines
- String line;
- while ((line = reader.readLine()) != null) {
- splitLine(line, values);
+ entry.rxBytes = reader.nextLong();
+ entry.rxPackets = reader.nextLong();
+ entry.txBytes = reader.nextLong();
+ entry.txPackets = reader.nextLong();
- try {
- entry.iface = values.get(0);
- entry.uid = UID_ALL;
- entry.set = SET_ALL;
- entry.tag = TAG_NONE;
- entry.rxBytes = Long.parseLong(values.get(1));
- entry.rxPackets = Long.parseLong(values.get(2));
- entry.txBytes = Long.parseLong(values.get(9));
- entry.txPackets = Long.parseLong(values.get(10));
-
- if (activeIfaces.contains(entry.iface)) {
- // combine stats when iface is active
- stats.combineValues(entry);
- } else if (!knownIfaces.contains(entry.iface)) {
- // add stats when iface is unknown
- stats.addValues(entry);
- }
- } catch (NumberFormatException e) {
- Slog.w(TAG, "problem parsing stats row '" + line + "': " + e);
- }
+ stats.addValues(entry);
+ reader.finishLine();
}
} catch (NullPointerException e) {
throw new IllegalStateException("problem parsing stats: " + e);
@@ -221,7 +162,6 @@
IoUtils.closeQuietly(reader);
StrictMode.setThreadPolicy(savedPolicy);
}
-
return stats;
}
@@ -286,41 +226,4 @@
return stats;
}
-
- /**
- * Split given line into {@link ArrayList}.
- */
- @Deprecated
- private static void splitLine(String line, ArrayList<String> outSplit) {
- outSplit.clear();
-
- final StringTokenizer t = new StringTokenizer(line, " \t\n\r\f:");
- while (t.hasMoreTokens()) {
- outSplit.add(t.nextToken());
- }
- }
-
- /**
- * Utility method to read a single plain-text {@link Long} from the given
- * {@link File}, usually from a {@code /proc/} filesystem.
- */
- private static long readSingleLongFromFile(File file) {
- try {
- final byte[] buffer = IoUtils.readFileAsByteArray(file.toString());
- return Long.parseLong(new String(buffer).trim());
- } catch (NumberFormatException e) {
- return -1;
- } catch (IOException e) {
- return -1;
- }
- }
-
- /**
- * Wrapper for {@link File#list()} that returns empty array instead of
- * {@code null}.
- */
- private static String[] fileListWithoutNull(File file) {
- final String[] list = file.list();
- return list != null ? list : new String[0];
- }
}
diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java
index 86118b1..5157385 100644
--- a/core/java/com/android/internal/os/BatteryStatsImpl.java
+++ b/core/java/com/android/internal/os/BatteryStatsImpl.java
@@ -5719,7 +5719,7 @@
if (SystemProperties.getBoolean(PROP_QTAGUID_ENABLED, false)) {
try {
- mNetworkSummaryCache = mNetworkStatsFactory.readNetworkStatsSummary();
+ mNetworkSummaryCache = mNetworkStatsFactory.readNetworkStatsSummaryDev();
} catch (IllegalStateException e) {
Log.wtf(TAG, "problem reading network stats", e);
}
diff --git a/core/java/com/android/internal/view/StandaloneActionMode.java b/core/java/com/android/internal/view/StandaloneActionMode.java
index 4b681ec..fae7ea1 100644
--- a/core/java/com/android/internal/view/StandaloneActionMode.java
+++ b/core/java/com/android/internal/view/StandaloneActionMode.java
@@ -73,6 +73,7 @@
@Override
public void setTitleOptionalHint(boolean titleOptional) {
+ super.setTitleOptionalHint(titleOptional);
mContextView.setTitleOptional(titleOptional);
}
diff --git a/core/java/com/android/internal/view/menu/ActionMenuItemView.java b/core/java/com/android/internal/view/menu/ActionMenuItemView.java
index d5c2018..449194b 100644
--- a/core/java/com/android/internal/view/menu/ActionMenuItemView.java
+++ b/core/java/com/android/internal/view/menu/ActionMenuItemView.java
@@ -70,8 +70,13 @@
setOnClickListener(this);
setOnLongClickListener(this);
- // Save the inflated padding for later, we'll need it.
- mSavedPaddingLeft = getPaddingLeft();
+ mSavedPaddingLeft = -1;
+ }
+
+ @Override
+ public void setPadding(int l, int t, int r, int b) {
+ mSavedPaddingLeft = l;
+ super.setPadding(l, t, r, b);
}
public MenuItemImpl getItemData() {
@@ -217,8 +222,9 @@
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
final boolean textVisible = hasText();
- if (textVisible) {
- setPadding(mSavedPaddingLeft, getPaddingTop(), getPaddingRight(), getPaddingBottom());
+ if (textVisible && mSavedPaddingLeft >= 0) {
+ super.setPadding(mSavedPaddingLeft, getPaddingTop(),
+ getPaddingRight(), getPaddingBottom());
}
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
@@ -240,7 +246,7 @@
// a little coercion. Pad in to center the icon after we've measured.
final int w = getMeasuredWidth();
final int dw = mIcon.getIntrinsicWidth();
- setPadding((w - dw) / 2, getPaddingTop(), getPaddingRight(), getPaddingBottom());
+ super.setPadding((w - dw) / 2, getPaddingTop(), getPaddingRight(), getPaddingBottom());
}
}
}
diff --git a/core/java/com/android/internal/view/menu/ActionMenuView.java b/core/java/com/android/internal/view/menu/ActionMenuView.java
index af67d55..f54575b 100644
--- a/core/java/com/android/internal/view/menu/ActionMenuView.java
+++ b/core/java/com/android/internal/view/menu/ActionMenuView.java
@@ -17,6 +17,7 @@
import android.content.Context;
import android.content.res.Configuration;
+import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.View;
@@ -25,6 +26,8 @@
import android.view.accessibility.AccessibilityEvent;
import android.widget.LinearLayout;
+import com.android.internal.R;
+
/**
* @hide
*/
@@ -43,6 +46,7 @@
private int mMinCellSize;
private int mGeneratedItemPadding;
private int mMeasuredExtraWidth;
+ private int mMaxItemHeight;
public ActionMenuView(Context context) {
this(context, null);
@@ -54,6 +58,11 @@
final float density = context.getResources().getDisplayMetrics().density;
mMinCellSize = (int) (MIN_CELL_SIZE * density);
mGeneratedItemPadding = (int) (GENERATED_ITEM_PADDING * density);
+
+ TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ActionBar,
+ R.attr.actionBarStyle, 0);
+ mMaxItemHeight = a.getDimensionPixelSize(R.styleable.ActionBar_height, 0);
+ a.recycle();
}
public void setPresenter(ActionMenuPresenter presenter) {
@@ -116,6 +125,11 @@
final int widthPadding = getPaddingLeft() + getPaddingRight();
final int heightPadding = getPaddingTop() + getPaddingBottom();
+ final int itemHeightSpec = heightMode == MeasureSpec.EXACTLY
+ ? MeasureSpec.makeMeasureSpec(heightSize - heightPadding, MeasureSpec.EXACTLY)
+ : MeasureSpec.makeMeasureSpec(
+ Math.min(mMaxItemHeight, heightSize - heightPadding), MeasureSpec.AT_MOST);
+
widthSize -= widthPadding;
// Divide the view into cells.
@@ -167,7 +181,7 @@
final int cellsAvailable = lp.isOverflowButton ? 1 : cellsRemaining;
final int cellsUsed = measureChildForCells(child, cellSize, cellsAvailable,
- heightMeasureSpec, heightPadding);
+ itemHeightSpec, heightPadding);
maxCellsUsed = Math.max(maxCellsUsed, cellsUsed);
if (lp.expandable) expandableItemCount++;
@@ -298,7 +312,6 @@
// Remeasure any items that have had extra space allocated to them.
if (needsExpansion) {
- int heightSpec = MeasureSpec.makeMeasureSpec(heightSize - heightPadding, heightMode);
for (int i = 0; i < childCount; i++) {
final View child = getChildAt(i);
final LayoutParams lp = (LayoutParams) child.getLayoutParams();
@@ -306,7 +319,8 @@
if (!lp.expanded) continue;
final int width = lp.cellsUsed * cellSize + lp.extraPixels;
- child.measure(MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY), heightSpec);
+ child.measure(MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY),
+ itemHeightSpec);
}
}
diff --git a/core/java/com/android/internal/view/menu/ListMenuPresenter.java b/core/java/com/android/internal/view/menu/ListMenuPresenter.java
index a331bec..b3e2d27 100644
--- a/core/java/com/android/internal/view/menu/ListMenuPresenter.java
+++ b/core/java/com/android/internal/view/menu/ListMenuPresenter.java
@@ -220,7 +220,6 @@
private int mExpandedIndex = -1;
public MenuAdapter() {
- registerDataSetObserver(new ExpandedIndexObserver());
findExpandedIndex();
}
@@ -273,12 +272,11 @@
}
mExpandedIndex = -1;
}
- }
- private class ExpandedIndexObserver extends DataSetObserver {
@Override
- public void onChanged() {
- mAdapter.findExpandedIndex();
+ public void notifyDataSetChanged() {
+ findExpandedIndex();
+ super.notifyDataSetChanged();
}
}
}
diff --git a/core/java/com/android/internal/view/menu/MenuPopupHelper.java b/core/java/com/android/internal/view/menu/MenuPopupHelper.java
index 329b457..cacc86b 100644
--- a/core/java/com/android/internal/view/menu/MenuPopupHelper.java
+++ b/core/java/com/android/internal/view/menu/MenuPopupHelper.java
@@ -307,7 +307,6 @@
public MenuAdapter(MenuBuilder menu) {
mAdapterMenu = menu;
- registerDataSetObserver(new ExpandedIndexObserver());
findExpandedIndex();
}
@@ -363,12 +362,11 @@
}
mExpandedIndex = -1;
}
- }
- private class ExpandedIndexObserver extends DataSetObserver {
@Override
- public void onChanged() {
- mAdapter.findExpandedIndex();
+ public void notifyDataSetChanged() {
+ findExpandedIndex();
+ super.notifyDataSetChanged();
}
}
}
diff --git a/core/java/com/android/internal/widget/ActionBarOverlayLayout.java b/core/java/com/android/internal/widget/ActionBarOverlayLayout.java
index d1652df..a129496 100644
--- a/core/java/com/android/internal/widget/ActionBarOverlayLayout.java
+++ b/core/java/com/android/internal/widget/ActionBarOverlayLayout.java
@@ -22,6 +22,7 @@
import android.content.res.TypedArray;
import android.graphics.Rect;
import android.util.AttributeSet;
+import android.util.Log;
import android.view.View;
import android.widget.FrameLayout;
@@ -76,6 +77,26 @@
}
}
+ public void setShowingForActionMode(boolean showing) {
+ if (showing) {
+ // Here's a fun hack: if the status bar is currently being hidden,
+ // and the application has asked for stable content insets, then
+ // we will end up with the action mode action bar being shown
+ // without the status bar, but moved below where the status bar
+ // would be. Not nice. Trying to have this be positioned
+ // correctly is not easy (basically we need yet *another* content
+ // inset from the window manager to know where to put it), so
+ // instead we will just temporarily force the status bar to be shown.
+ if ((getWindowSystemUiVisibility() & (SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
+ | SYSTEM_UI_FLAG_LAYOUT_STABLE))
+ == (SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | SYSTEM_UI_FLAG_LAYOUT_STABLE)) {
+ setDisabledSystemUiVisibility(SYSTEM_UI_FLAG_FULLSCREEN);
+ }
+ } else {
+ setDisabledSystemUiVisibility(0);
+ }
+ }
+
@Override
public void onWindowSystemUiVisibilityChanged(int visible) {
super.onWindowSystemUiVisibilityChanged(visible);
@@ -83,11 +104,13 @@
final int diff = mLastSystemUiVisibility ^ visible;
mLastSystemUiVisibility = visible;
final boolean barVisible = (visible&SYSTEM_UI_FLAG_FULLSCREEN) == 0;
- final boolean wasVisible = mActionBar != null ? mActionBar.isShowing() : true;
- if (barVisible != wasVisible || (diff&SYSTEM_UI_FLAG_LAYOUT_STABLE) != 0) {
+ final boolean wasVisible = mActionBar != null ? mActionBar.isSystemShowing() : true;
+ if (mActionBar != null) {
+ if (barVisible) mActionBar.showForSystem();
+ else mActionBar.hideForSystem();
+ }
+ if ((diff&SYSTEM_UI_FLAG_LAYOUT_STABLE) != 0) {
if (mActionBar != null) {
- if (barVisible) mActionBar.show(true, true);
- else mActionBar.hide(true);
requestFitSystemWindows();
}
}
diff --git a/core/java/com/android/internal/widget/multiwaveview/MultiWaveView.java b/core/java/com/android/internal/widget/multiwaveview/MultiWaveView.java
index 624dea8..a74ecd3 100644
--- a/core/java/com/android/internal/widget/multiwaveview/MultiWaveView.java
+++ b/core/java/com/android/internal/widget/multiwaveview/MultiWaveView.java
@@ -32,6 +32,7 @@
import android.util.AttributeSet;
import android.util.Log;
import android.util.TypedValue;
+import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.accessibility.AccessibilityEvent;
@@ -99,8 +100,11 @@
private float mTapRadius;
private float mWaveCenterX;
private float mWaveCenterY;
- private float mVerticalOffset;
+ private int mMaxTargetHeight;
+ private int mMaxTargetWidth;
private float mHorizontalOffset;
+ private float mVerticalOffset;
+
private float mOuterRadius = 0.0f;
private float mHitRadius = 0.0f;
private float mSnapMargin = 0.0f;
@@ -142,6 +146,9 @@
private int mTargetDescriptionsResourceId;
private int mDirectionDescriptionsResourceId;
private boolean mAlwaysTrackFinger;
+ private int mHorizontalInset;
+ private int mVerticalInset;
+ private int mGravity = Gravity.TOP;
public MultiWaveView(Context context) {
this(context, null);
@@ -153,10 +160,9 @@
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MultiWaveView);
mOuterRadius = a.getDimension(R.styleable.MultiWaveView_outerRadius, mOuterRadius);
- mHorizontalOffset = a.getDimension(R.styleable.MultiWaveView_horizontalOffset,
- mHorizontalOffset);
- mVerticalOffset = a.getDimension(R.styleable.MultiWaveView_verticalOffset,
- mVerticalOffset);
+// mHorizontalOffset = a.getDimension(R.styleable.MultiWaveView_horizontalOffset,
+// mHorizontalOffset);
+// mVerticalOffset = a.getDimension(R.styleable.MultiWaveView_verticalOffset, mVerticalOffset);
mHitRadius = a.getDimension(R.styleable.MultiWaveView_hitRadius, mHitRadius);
mSnapMargin = a.getDimension(R.styleable.MultiWaveView_snapMargin, mSnapMargin);
mVibrationDuration = a.getInt(R.styleable.MultiWaveView_vibrationDuration,
@@ -169,6 +175,7 @@
mOuterRing = new TargetDrawable(res,
a.peekValue(R.styleable.MultiWaveView_waveDrawable).resourceId);
mAlwaysTrackFinger = a.getBoolean(R.styleable.MultiWaveView_alwaysTrackFinger, false);
+ mGravity = a.getInt(R.styleable.MultiWaveView_gravity, Gravity.TOP);
// Read chevron animation drawables
final int chevrons[] = { R.styleable.MultiWaveView_leftChevronDrawable,
@@ -231,16 +238,16 @@
@Override
protected int getSuggestedMinimumWidth() {
- // View should be large enough to contain the background + target drawable on either edge
- return mOuterRing.getWidth()
- + (mTargetDrawables.size() > 0 ? (mTargetDrawables.get(0).getWidth()/2) : 0);
+ // View should be large enough to contain the background + handle and
+ // target drawable on either edge.
+ return mOuterRing.getWidth() + mMaxTargetWidth;
}
@Override
protected int getSuggestedMinimumHeight() {
- // View should be large enough to contain the unlock ring + target drawable on either edge
- return mOuterRing.getHeight()
- + (mTargetDrawables.size() > 0 ? (mTargetDrawables.get(0).getHeight()/2) : 0);
+ // View should be large enough to contain the unlock ring + target and
+ // target drawable on either edge
+ return mOuterRing.getHeight() + mMaxTargetHeight;
}
private int resolveMeasured(int measureSpec, int desired)
@@ -265,9 +272,10 @@
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
final int minimumWidth = getSuggestedMinimumWidth();
final int minimumHeight = getSuggestedMinimumHeight();
- int viewWidth = resolveMeasured(widthMeasureSpec, minimumWidth);
- int viewHeight = resolveMeasured(heightMeasureSpec, minimumHeight);
- setMeasuredDimension(viewWidth, viewHeight);
+ int computedWidth = resolveMeasured(widthMeasureSpec, minimumWidth);
+ int computedHeight = resolveMeasured(heightMeasureSpec, minimumHeight);
+ setupGravity((computedWidth - minimumWidth), (computedHeight - minimumHeight));
+ setMeasuredDimension(computedWidth, computedHeight);
}
private void switchToState(int state, float x, float y) {
@@ -521,14 +529,25 @@
TypedArray array = res.obtainTypedArray(resourceId);
int count = array.length();
ArrayList<TargetDrawable> targetDrawables = new ArrayList<TargetDrawable>(count);
+ int maxWidth = mHandleDrawable.getWidth();
+ int maxHeight = mHandleDrawable.getHeight();
for (int i = 0; i < count; i++) {
TypedValue value = array.peekValue(i);
- targetDrawables.add(new TargetDrawable(res, value != null ? value.resourceId : 0));
+ TargetDrawable target= new TargetDrawable(res, value != null ? value.resourceId : 0);
+ targetDrawables.add(target);
+ maxWidth = Math.max(maxWidth, target.getWidth());
+ maxHeight = Math.max(maxHeight, target.getHeight());
}
- array.recycle();
mTargetResourceId = resourceId;
mTargetDrawables = targetDrawables;
- updateTargetPositions();
+ if (mMaxTargetWidth != maxWidth || mMaxTargetHeight != maxHeight) {
+ mMaxTargetWidth = maxWidth;
+ mMaxTargetHeight = maxHeight;
+ requestLayout(); // required to resize layout and call updateTargetPositions()
+ } else {
+ updateTargetPositions();
+ }
+ array.recycle();
}
/**
@@ -638,23 +657,27 @@
boolean handled = false;
switch (action) {
case MotionEvent.ACTION_DOWN:
+ if (DEBUG) Log.v(TAG, "*** DOWN ***");
handleDown(event);
handled = true;
break;
case MotionEvent.ACTION_MOVE:
+ if (DEBUG) Log.v(TAG, "*** MOVE ***");
handleMove(event);
handled = true;
break;
case MotionEvent.ACTION_UP:
+ if (DEBUG) Log.v(TAG, "*** UP ***");
handleMove(event);
handleUp(event);
handled = true;
break;
case MotionEvent.ACTION_CANCEL:
- handleMove(event);
+ if (DEBUG) Log.v(TAG, "*** CANCEL ***");
+ // handleMove(event);
handleCancel(event);
handled = true;
break;
@@ -795,6 +818,11 @@
}
mGrabbedState = newState;
if (mOnTriggerListener != null) {
+ if (newState == OnTriggerListener.NO_HANDLE) {
+ mOnTriggerListener.onReleased(this, OnTriggerListener.CENTER_HANDLE);
+ } else {
+ mOnTriggerListener.onGrabbed(this, OnTriggerListener.CENTER_HANDLE);
+ }
mOnTriggerListener.onGrabbedStateChange(this, mGrabbedState);
}
}
@@ -832,13 +860,45 @@
moveHandleTo(centerX, centerY, false);
}
+ private void setupGravity(int dx, int dy) {
+ final int layoutDirection = getResolvedLayoutDirection();
+ final int absoluteGravity = Gravity.getAbsoluteGravity(mGravity, layoutDirection);
+
+ switch (absoluteGravity & Gravity.HORIZONTAL_GRAVITY_MASK) {
+ case Gravity.LEFT:
+ mHorizontalInset = 0;
+ break;
+ case Gravity.RIGHT:
+ mHorizontalInset = dx;
+ break;
+ case Gravity.CENTER_HORIZONTAL:
+ default:
+ mHorizontalInset = dx / 2;
+ break;
+ }
+ switch (absoluteGravity & Gravity.VERTICAL_GRAVITY_MASK) {
+ case Gravity.TOP:
+ mVerticalInset = 0;
+ break;
+ case Gravity.BOTTOM:
+ mVerticalInset = dy;
+ break;
+ case Gravity.CENTER_VERTICAL:
+ default:
+ mVerticalInset = dy / 2;
+ break;
+ }
+ }
+
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
final int width = right - left;
final int height = bottom - top;
- float newWaveCenterX = mHorizontalOffset + Math.max(width, mOuterRing.getWidth() ) / 2;
- float newWaveCenterY = mVerticalOffset + Math.max(height, mOuterRing.getHeight()) / 2;
+ float newWaveCenterX = mHorizontalOffset + mHorizontalInset
+ + Math.max(width, mMaxTargetWidth + mOuterRing.getWidth()) / 2;
+ float newWaveCenterY = mVerticalOffset + mVerticalInset
+ + Math.max(height, + mMaxTargetHeight + mOuterRing.getHeight()) / 2;
if (newWaveCenterX != mWaveCenterX || newWaveCenterY != mWaveCenterY) {
if (mWaveCenterX == 0 && mWaveCenterY == 0) {
performInitialLayout(newWaveCenterX, newWaveCenterY);
@@ -848,9 +908,8 @@
mOuterRing.setX(mWaveCenterX);
mOuterRing.setY(Math.max(mWaveCenterY, mWaveCenterY));
-
- updateTargetPositions();
}
+ updateTargetPositions();
if (DEBUG) dump();
}
diff --git a/core/java/com/android/server/NetworkManagementSocketTagger.java b/core/java/com/android/server/NetworkManagementSocketTagger.java
index c77992d..06ef4c9 100644
--- a/core/java/com/android/server/NetworkManagementSocketTagger.java
+++ b/core/java/com/android/server/NetworkManagementSocketTagger.java
@@ -16,20 +16,14 @@
package com.android.server;
-import android.net.NetworkStats;
import android.os.SystemProperties;
import android.util.Log;
import android.util.Slog;
import dalvik.system.SocketTagger;
-import libcore.io.IoUtils;
import java.io.FileDescriptor;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.math.BigInteger;
import java.net.SocketException;
-import java.nio.charset.Charsets;
/**
* Assigns tags to sockets for traffic stats.
@@ -141,8 +135,12 @@
* format like {@code 0x7fffffff00000000}.
*/
public static int kernelToTag(String string) {
- // TODO: migrate to direct integer instead of odd shifting
- return (int) (Long.decode(string) >> 32);
+ int length = string.length();
+ if (length > 10) {
+ return Long.decode(string.substring(0, length - 8)).intValue();
+ } else {
+ return 0;
+ }
}
private static native int native_tagSocketFd(FileDescriptor fd, int tag, int uid);
diff --git a/core/jni/Android.mk b/core/jni/Android.mk
index 523b2d5..cd0959b 100644
--- a/core/jni/Android.mk
+++ b/core/jni/Android.mk
@@ -218,6 +218,7 @@
libusbhost \
libharfbuzz \
libz \
+ libsuspend \
ifeq ($(USE_OPENGL_RENDERER),true)
LOCAL_SHARED_LIBRARIES += libhwui
diff --git a/core/jni/android/graphics/BitmapFactory.cpp b/core/jni/android/graphics/BitmapFactory.cpp
index 47ed2c1..3a6c5b0 100644
--- a/core/jni/android/graphics/BitmapFactory.cpp
+++ b/core/jni/android/graphics/BitmapFactory.cpp
@@ -360,6 +360,9 @@
// already have a pixelref installed.
pr = bitmap->pixelRef();
}
+ if (pr == NULL) {
+ return nullObjectReturn("Got null SkPixelRef");
+ }
if (!isMutable) {
// promise we will never change our pixels (great for sharing and pictures)
diff --git a/core/jni/android/graphics/Canvas.cpp b/core/jni/android/graphics/Canvas.cpp
index ef6af74..6b74705 100644
--- a/core/jni/android/graphics/Canvas.cpp
+++ b/core/jni/android/graphics/Canvas.cpp
@@ -69,7 +69,11 @@
SkImageRef_GlobalPool::SetRAMUsed(0);
SkGraphics::PurgeFontCache();
}
-
+
+ static void freeTextLayoutCaches(JNIEnv* env, jobject) {
+ TextLayoutEngine::getInstance().purgeCaches();
+ }
+
static jboolean isOpaque(JNIEnv* env, jobject jcanvas) {
NPE_CHECK_RETURN_ZERO(env, jcanvas);
SkCanvas* canvas = GraphicsJNI::getNativeCanvas(env, jcanvas);
@@ -986,7 +990,9 @@
(void*) SkCanvasGlue::drawTextOnPath__StringPathFFPaint},
{"native_drawPicture", "(II)V", (void*) SkCanvasGlue::drawPicture},
- {"freeCaches", "()V", (void*) SkCanvasGlue::freeCaches}
+ {"freeCaches", "()V", (void*) SkCanvasGlue::freeCaches},
+
+ {"freeTextLayoutCaches", "()V", (void*) SkCanvasGlue::freeTextLayoutCaches}
};
///////////////////////////////////////////////////////////////////////////////
diff --git a/core/jni/android/graphics/TextLayoutCache.cpp b/core/jni/android/graphics/TextLayoutCache.cpp
index a33b46a..673c38d 100644
--- a/core/jni/android/graphics/TextLayoutCache.cpp
+++ b/core/jni/android/graphics/TextLayoutCache.cpp
@@ -30,12 +30,13 @@
namespace android {
//--------------------------------------------------------------------------------------------------
-#define TYPEFACE_ARABIC "/system/fonts/DroidNaskh-Regular-Shift.ttf"
+#define TYPEFACE_ARABIC "/system/fonts/DroidNaskh-Regular-SystemUI.ttf"
#define TYPE_FACE_HEBREW_REGULAR "/system/fonts/DroidSansHebrew-Regular.ttf"
#define TYPE_FACE_HEBREW_BOLD "/system/fonts/DroidSansHebrew-Bold.ttf"
#define TYPEFACE_BENGALI "/system/fonts/Lohit-Bengali.ttf"
-#define TYPEFACE_DEVANAGARI "/system/fonts/Lohit-Devanagari.ttf"
-#define TYPEFACE_TAMIL "/system/fonts/Lohit-Tamil.ttf"
+#define TYPEFACE_DEVANAGARI_REGULAR "/system/fonts/DroidSansDevanagari-Regular.ttf"
+#define TYPEFACE_TAMIL_REGULAR "/system/fonts/DroidSansTamil-Regular.ttf"
+#define TYPEFACE_TAMIL_BOLD "/system/fonts/DroidSansTamil-Bold.ttf"
#define TYPEFACE_THAI "/system/fonts/DroidSansThai.ttf"
ANDROID_SINGLETON_STATIC_INSTANCE(TextLayoutEngine);
@@ -337,8 +338,9 @@
mHebrewBoldTypeface = NULL;
mBengaliTypeface = NULL;
mThaiTypeface = NULL;
- mDevanagariTypeface = NULL;
- mTamilTypeface = NULL;
+ mDevanagariRegularTypeface = NULL;
+ mTamilRegularTypeface = NULL;
+ mTamilBoldTypeface = NULL;
mFontRec.klass = &harfbuzzSkiaClass;
mFontRec.userData = 0;
@@ -364,8 +366,9 @@
SkSafeUnref(mHebrewBoldTypeface);
SkSafeUnref(mBengaliTypeface);
SkSafeUnref(mThaiTypeface);
- SkSafeUnref(mDevanagariTypeface);
- SkSafeUnref(mTamilTypeface);
+ SkSafeUnref(mDevanagariRegularTypeface);
+ SkSafeUnref(mTamilRegularTypeface);
+ SkSafeUnref(mTamilBoldTypeface);
deleteShaperItemGlyphArrays();
}
@@ -739,18 +742,18 @@
#endif
}
-
-size_t TextLayoutShaper::shapeFontRun(const SkPaint* paint, bool isRTL) {
- // Reset kerning
- mShaperItem.kerning_applied = false;
-
- // Update Harfbuzz Shaper
- mShaperItem.item.bidiLevel = isRTL;
-
- SkTypeface* typeface = paint->getTypeface();
-
+/**
+ * Return the first typeface in the logical change, starting with this typeface,
+ * that contains the specified unichar, or NULL if none is found.
+ *
+ * Note that this function does _not_ increment the reference count on the typeface, as the
+ * assumption is that its lifetime is managed elsewhere - in particular, the fallback typefaces
+ * for the default font live in a global cache.
+ */
+SkTypeface* TextLayoutShaper::typefaceForUnichar(const SkPaint* paint, SkTypeface* typeface,
+ SkUnichar unichar, HB_Script script) {
// Set the correct Typeface depending on the script
- switch (mShaperItem.item.script) {
+ switch (script) {
case HB_Script_Arabic:
typeface = getCachedTypeface(&mArabicTypeface, TYPEFACE_ARABIC);
#if DEBUG_GLYPHS
@@ -801,46 +804,66 @@
break;
case HB_Script_Devanagari:
- typeface = getCachedTypeface(&mDevanagariTypeface, TYPEFACE_DEVANAGARI);
+ typeface = getCachedTypeface(&mDevanagariRegularTypeface, TYPEFACE_DEVANAGARI_REGULAR);
#if DEBUG_GLYPHS
- ALOGD("Using Devanagari Typeface");
+ ALOGD("Using Devanagari Regular Typeface");
#endif
break;
case HB_Script_Tamil:
- typeface = getCachedTypeface(&mTamilTypeface, TYPEFACE_TAMIL);
+ if (typeface) {
+ switch (typeface->style()) {
+ case SkTypeface::kBold:
+ case SkTypeface::kBoldItalic:
+ typeface = getCachedTypeface(&mTamilBoldTypeface, TYPEFACE_TAMIL_BOLD);
#if DEBUG_GLYPHS
- ALOGD("Using Tamil Typeface");
+ ALOGD("Using Tamil Bold Typeface");
#endif
- break;
+ break;
- default:
- if (!typeface) {
- typeface = mDefaultTypeface;
+ case SkTypeface::kNormal:
+ case SkTypeface::kItalic:
+ default:
+ typeface = getCachedTypeface(&mTamilRegularTypeface, TYPEFACE_TAMIL_REGULAR);
#if DEBUG_GLYPHS
- ALOGD("Using Default Typeface");
+ ALOGD("Using Tamil Regular Typeface");
#endif
+ break;
+ }
} else {
+ typeface = getCachedTypeface(&mTamilRegularTypeface, TYPEFACE_TAMIL_REGULAR);
#if DEBUG_GLYPHS
- ALOGD("Using Paint Typeface");
+ ALOGD("Using Tamil Regular Typeface");
#endif
}
break;
- }
- mShapingPaint.setTypeface(typeface);
- mShaperItem.face = getCachedHBFace(typeface);
-
+ default:
#if DEBUG_GLYPHS
- ALOGD("Run typeface = %p, uniqueID = %d, hb_face = %p",
- typeface, typeface->uniqueID(), mShaperItem.face);
+ if (typeface) {
+ ALOGD("Using Paint Typeface");
+ }
#endif
+ break;
+ }
+ return typeface;
+}
+
+size_t TextLayoutShaper::shapeFontRun(const SkPaint* paint, bool isRTL) {
+ // Reset kerning
+ mShaperItem.kerning_applied = false;
+
+ // Update Harfbuzz Shaper
+ mShaperItem.item.bidiLevel = isRTL;
+
+ SkTypeface* typeface = paint->getTypeface();
// Get the glyphs base count for offsetting the glyphIDs returned by Harfbuzz
// This is needed as the Typeface used for shaping can be not the default one
// when we are shaping any script that needs to use a fallback Font.
// If we are a "common" script we dont need to shift
size_t baseGlyphCount = 0;
+ SkUnichar firstUnichar = 0;
switch (mShaperItem.item.script) {
case HB_Script_Arabic:
case HB_Script_Hebrew:
@@ -849,7 +872,11 @@
case HB_Script_Tamil:
case HB_Script_Thai:{
const uint16_t* text16 = (const uint16_t*)(mShaperItem.string + mShaperItem.item.pos);
- SkUnichar firstUnichar = SkUTF16_NextUnichar(&text16);
+ const uint16_t* text16End = text16 + mShaperItem.item.length;
+ firstUnichar = SkUTF16_NextUnichar(&text16);
+ while (firstUnichar == ' ' && text16 < text16End) {
+ firstUnichar = SkUTF16_NextUnichar(&text16);
+ }
baseGlyphCount = paint->getBaseGlyphCount(firstUnichar);
break;
}
@@ -857,6 +884,25 @@
break;
}
+ // We test the baseGlyphCount to see if the typeface supports the requested script
+ if (baseGlyphCount != 0) {
+ typeface = typefaceForUnichar(paint, typeface, firstUnichar, mShaperItem.item.script);
+ }
+
+ if (!typeface) {
+ typeface = mDefaultTypeface;
+#if DEBUG_GLYPHS
+ ALOGD("Using Default Typeface");
+#endif
+ }
+ mShapingPaint.setTypeface(typeface);
+ mShaperItem.face = getCachedHBFace(typeface);
+
+#if DEBUG_GLYPHS
+ ALOGD("Run typeface = %p, uniqueID = %d, hb_face = %p",
+ typeface, typeface->uniqueID(), mShaperItem.face);
+#endif
+
// Shape
assert(mShaperItem.item.length > 0); // Harfbuzz will overwrite other memory if length is 0.
ensureShaperItemGlyphArrays(mShaperItem.item.length * 3 / 2);
@@ -969,4 +1015,11 @@
return value;
}
+void TextLayoutEngine::purgeCaches() {
+#if USE_TEXT_LAYOUT_CACHE
+ mTextLayoutCache->clear();
+#endif
+}
+
+
} // namespace android
diff --git a/core/jni/android/graphics/TextLayoutCache.h b/core/jni/android/graphics/TextLayoutCache.h
index 3c834a4..027e888 100644
--- a/core/jni/android/graphics/TextLayoutCache.h
+++ b/core/jni/android/graphics/TextLayoutCache.h
@@ -194,8 +194,9 @@
SkTypeface* mHebrewBoldTypeface;
SkTypeface* mBengaliTypeface;
SkTypeface* mThaiTypeface;
- SkTypeface* mDevanagariTypeface;
- SkTypeface* mTamilTypeface;
+ SkTypeface* mDevanagariRegularTypeface;
+ SkTypeface* mTamilRegularTypeface;
+ SkTypeface* mTamilBoldTypeface;
/**
* Cache of Harfbuzz faces
@@ -217,6 +218,9 @@
*/
UnicodeString mBuffer;
+ SkTypeface* typefaceForUnichar(const SkPaint* paint, SkTypeface* typeface,
+ SkUnichar unichar, HB_Script script);
+
size_t shapeFontRun(const SkPaint* paint, bool isRTL);
void computeValues(const SkPaint* paint, const UChar* chars,
@@ -306,6 +310,9 @@
sp<TextLayoutValue> getValue(const SkPaint* paint, const jchar* text, jint start,
jint count, jint contextCount, jint dirFlags);
+
+ void purgeCaches();
+
private:
TextLayoutCache* mTextLayoutCache;
TextLayoutShaper* mShaper;
diff --git a/core/jni/android_hardware_SensorManager.cpp b/core/jni/android_hardware_SensorManager.cpp
index 9abfb3a..3c1b9c8 100644
--- a/core/jni/android_hardware_SensorManager.cpp
+++ b/core/jni/android_hardware_SensorManager.cpp
@@ -69,7 +69,7 @@
jstring vendor = env->NewStringUTF(list->getVendor().string());
env->SetObjectField(sensor, sensorOffsets.name, name);
env->SetObjectField(sensor, sensorOffsets.vendor, vendor);
- env->SetIntField(sensor, sensorOffsets.version, 1);
+ env->SetIntField(sensor, sensorOffsets.version, list->getVersion());
env->SetIntField(sensor, sensorOffsets.handle, list->getHandle());
env->SetIntField(sensor, sensorOffsets.type, list->getType());
env->SetFloatField(sensor, sensorOffsets.range, list->getMaxValue());
@@ -130,10 +130,13 @@
res = queue->waitForEvent();
if (res != NO_ERROR)
return -1;
+ // here we're guaranteed to have an event
res = queue->read(&event, 1);
+ ALOGE_IF(res==0, "sensors_data_poll: nothing to read after waitForEvent()");
}
- if (res < 0)
+ if (res <= 0) {
return -1;
+ }
jint accuracy = event.vector.status;
env->SetFloatArrayRegion(values, 0, 3, event.vector.v);
diff --git a/core/jni/android_os_Power.cpp b/core/jni/android_os_Power.cpp
index 48845f6..373abd4 100644
--- a/core/jni/android_os_Power.cpp
+++ b/core/jni/android_os_Power.cpp
@@ -24,6 +24,7 @@
#include <hardware/power.h>
#include <hardware_legacy/power.h>
#include <cutils/android_reboot.h>
+#include <suspend/autosuspend.h>
static struct power_module *sPowerModule;
@@ -70,8 +71,18 @@
static int
setScreenState(JNIEnv *env, jobject clazz, jboolean on)
{
- if (sPowerModule)
- sPowerModule->setInteractive(sPowerModule, on);
+ if (on) {
+ autosuspend_disable();
+ if (sPowerModule) {
+ sPowerModule->setInteractive(sPowerModule, true);
+ }
+ } else {
+ if (sPowerModule) {
+ sPowerModule->setInteractive(sPowerModule, false);
+ }
+ autosuspend_enable();
+ }
+
return 0;
}
diff --git a/core/jni/android_os_SystemProperties.cpp b/core/jni/android_os_SystemProperties.cpp
index 66af965..add616e 100644
--- a/core/jni/android_os_SystemProperties.cpp
+++ b/core/jni/android_os_SystemProperties.cpp
@@ -65,6 +65,7 @@
int len;
const char* key;
char buf[PROPERTY_VALUE_MAX];
+ char* end;
jint result = defJ;
if (keyJ == NULL) {
@@ -76,9 +77,10 @@
len = property_get(key, buf, "");
if (len > 0) {
- jint temp;
- if (sscanf(buf, "%d", &temp) == 1)
- result = temp;
+ result = strtol(buf, &end, 0);
+ if (end == buf) {
+ result = defJ;
+ }
}
env->ReleaseStringUTFChars(keyJ, key);
@@ -93,6 +95,7 @@
int len;
const char* key;
char buf[PROPERTY_VALUE_MAX];
+ char* end;
jlong result = defJ;
if (keyJ == NULL) {
@@ -104,9 +107,10 @@
len = property_get(key, buf, "");
if (len > 0) {
- jlong temp;
- if (sscanf(buf, "%lld", &temp) == 1)
- result = temp;
+ result = strtoll(buf, &end, 0);
+ if (end == buf) {
+ result = defJ;
+ }
}
env->ReleaseStringUTFChars(keyJ, key);
diff --git a/core/jni/android_view_InputDevice.cpp b/core/jni/android_view_InputDevice.cpp
index d1f0a6a..576f831 100644
--- a/core/jni/android_view_InputDevice.cpp
+++ b/core/jni/android_view_InputDevice.cpp
@@ -55,7 +55,7 @@
ScopedLocalRef<jobject> inputDeviceObj(env, env->NewObject(gInputDeviceClassInfo.clazz,
gInputDeviceClassInfo.ctor, deviceInfo.getId(), deviceInfo.getGeneration(),
- nameObj.get(), descriptorObj.get(),
+ nameObj.get(), descriptorObj.get(), deviceInfo.isExternal(),
deviceInfo.getSources(), deviceInfo.getKeyboardType(),
kcmObj.get(), deviceInfo.hasVibrator()));
@@ -87,7 +87,7 @@
gInputDeviceClassInfo.clazz = jclass(env->NewGlobalRef(gInputDeviceClassInfo.clazz));
GET_METHOD_ID(gInputDeviceClassInfo.ctor, gInputDeviceClassInfo.clazz,
- "<init>", "(IILjava/lang/String;Ljava/lang/String;IILandroid/view/KeyCharacterMap;Z)V");
+ "<init>", "(IILjava/lang/String;Ljava/lang/String;ZIILandroid/view/KeyCharacterMap;Z)V");
GET_METHOD_ID(gInputDeviceClassInfo.addMotionRange, gInputDeviceClassInfo.clazz,
"addMotionRange", "(IIFFFF)V");
diff --git a/core/jni/android_view_Surface.cpp b/core/jni/android_view_Surface.cpp
index a60467b..8c4c42ab 100644
--- a/core/jni/android_view_Surface.cpp
+++ b/core/jni/android_view_Surface.cpp
@@ -345,6 +345,32 @@
}
}
+static void Surface_setActiveRect(JNIEnv* env, jobject thiz, jobject activeRect)
+{
+ const sp<Surface>& surface(getSurface(env, thiz));
+ if (!Surface::isValid(surface)) {
+ doThrowIAE(env);
+ return;
+ }
+
+ android_native_rect_t nativeRect;
+ if (activeRect) {
+ nativeRect.left = env->GetIntField(activeRect, ro.l);
+ nativeRect.top = env->GetIntField(activeRect, ro.t);
+ nativeRect.right = env->GetIntField(activeRect, ro.r);
+ nativeRect.bottom= env->GetIntField(activeRect, ro.b);
+ } else {
+ doThrowIAE(env, "activeRect may not be null");
+ return;
+ }
+
+ int err = native_window_set_active_rect(surface.get(), &nativeRect);
+ if (err != NO_ERROR) {
+ doThrowRE(env, String8::format(
+ "Surface::setActiveRect returned an error: %d", err).string());
+ }
+}
+
static jobject Surface_lockCanvas(JNIEnv* env, jobject clazz, jobject dirtyRect)
{
const sp<Surface>& surface(getSurface(env, clazz));
@@ -889,6 +915,7 @@
{"readFromParcel", "(Landroid/os/Parcel;)V", (void*)Surface_readFromParcel },
{"writeToParcel", "(Landroid/os/Parcel;I)V", (void*)Surface_writeToParcel },
{"isConsumerRunningBehind", "()Z", (void*)Surface_isConsumerRunningBehind },
+ {"setActiveRect", "(Landroid/graphics/Rect;)V", (void*)Surface_setActiveRect },
};
void nativeClassInit(JNIEnv* env, jclass clazz)
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 471a496..dbc60f9 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -139,38 +139,11 @@
<eat-comment />
<!-- Used for permissions that can be used to make the user spend money
- without their direct involvement. For example, this is the group
- for permissions that allow you to directly place phone calls,
- directly send SMS messages, etc. -->
+ without their direct involvement. -->
<permission-group android:name="android.permission-group.COST_MONEY"
android:label="@string/permgrouplab_costMoney"
android:description="@string/permgroupdesc_costMoney" />
- <!-- Allows an application to send SMS messages. -->
- <permission android:name="android.permission.SEND_SMS"
- android:permissionGroup="android.permission-group.COST_MONEY"
- android:protectionLevel="dangerous"
- android:label="@string/permlab_sendSms"
- android:description="@string/permdesc_sendSms" />
-
- <!-- Allows an application to send SMS messages via the Messaging app with no user
- input or confirmation.
- @hide -->
- <permission android:name="android.permission.SEND_SMS_NO_CONFIRMATION"
- android:permissionGroup="android.permission-group.COST_MONEY"
- android:protectionLevel="signature|system"
- android:label="@string/permlab_sendSmsNoConfirmation"
- android:description="@string/permdesc_sendSmsNoConfirmation" />
-
- <!-- Allows an application to initiate a phone call without going through
- the Dialer user interface for the user to confirm the call
- being placed. -->
- <permission android:name="android.permission.CALL_PHONE"
- android:permissionGroup="android.permission-group.COST_MONEY"
- android:protectionLevel="dangerous"
- android:label="@string/permlab_callPhone"
- android:description="@string/permdesc_callPhone" />
-
<!-- ================================== -->
<!-- Permissions for accessing messages -->
<!-- ================================== -->
@@ -182,7 +155,26 @@
receiving or reading an MMS. -->
<permission-group android:name="android.permission-group.MESSAGES"
android:label="@string/permgrouplab_messages"
- android:description="@string/permgroupdesc_messages" />
+ android:icon="@drawable/perm_group_messages"
+ android:description="@string/permgroupdesc_messages"
+ android:permissionGroupFlags="personalInfo"
+ android:priority="360"/>
+
+ <!-- Allows an application to send SMS messages. -->
+ <permission android:name="android.permission.SEND_SMS"
+ android:permissionGroup="android.permission-group.MESSAGES"
+ android:protectionLevel="dangerous"
+ android:label="@string/permlab_sendSms"
+ android:description="@string/permdesc_sendSms" />
+
+ <!-- Allows an application to send SMS messages via the Messaging app with no user
+ input or confirmation.
+ @hide -->
+ <permission android:name="android.permission.SEND_SMS_NO_CONFIRMATION"
+ android:permissionGroup="android.permission-group.MESSAGES"
+ android:protectionLevel="signature|system"
+ android:label="@string/permlab_sendSmsNoConfirmation"
+ android:description="@string/permdesc_sendSmsNoConfirmation" />
<!-- Allows an application to monitor incoming SMS messages, to record
or perform processing on them. -->
@@ -248,21 +240,25 @@
android:description="@string/permdesc_receiveWapPush" />
<!-- =============================================================== -->
- <!-- Permissions for accessing personal info (contacts and calendar) -->
+ <!-- Permissions for accessing social info (contacts and social) -->
<!-- =============================================================== -->
<eat-comment />
- <!-- Used for permissions that provide access to the user's private data,
- such as contacts, calendar events, e-mail messages, etc. This includes
+ <!-- Used for permissions that provide access to the user's social connections,
+ such as contacts, call logs, social stream, etc. This includes
both reading and writing of this data (which should generally be
expressed as two distinct permissions). -->
- <permission-group android:name="android.permission-group.PERSONAL_INFO"
- android:label="@string/permgrouplab_personalInfo"
- android:description="@string/permgroupdesc_personalInfo" />
+
+ <permission-group android:name="android.permission-group.SOCIAL_INFO"
+ android:label="@string/permgrouplab_socialInfo"
+ android:icon="@drawable/perm_group_social_info"
+ android:description="@string/permgroupdesc_socialInfo"
+ android:permissionGroupFlags="personalInfo"
+ android:priority="320" />
<!-- Allows an application to read the user's contacts data. -->
<permission android:name="android.permission.READ_CONTACTS"
- android:permissionGroup="android.permission-group.PERSONAL_INFO"
+ android:permissionGroup="android.permission-group.SOCIAL_INFO"
android:protectionLevel="dangerous"
android:label="@string/permlab_readContacts"
android:description="@string/permdesc_readContacts" />
@@ -270,14 +266,14 @@
<!-- Allows an application to write (but not read) the user's
contacts data. -->
<permission android:name="android.permission.WRITE_CONTACTS"
- android:permissionGroup="android.permission-group.PERSONAL_INFO"
+ android:permissionGroup="android.permission-group.SOCIAL_INFO"
android:protectionLevel="dangerous"
android:label="@string/permlab_writeContacts"
android:description="@string/permdesc_writeContacts" />
<!-- Allows an application to read the user's call log. -->
<permission android:name="android.permission.READ_CALL_LOG"
- android:permissionGroup="android.permission-group.PERSONAL_INFO"
+ android:permissionGroup="android.permission-group.SOCIAL_INFO"
android:protectionLevel="dangerous"
android:label="@string/permlab_readCallLog"
android:description="@string/permdesc_readCallLog" />
@@ -285,11 +281,41 @@
<!-- Allows an application to write (but not read) the user's
contacts data. -->
<permission android:name="android.permission.WRITE_CALL_LOG"
- android:permissionGroup="android.permission-group.PERSONAL_INFO"
+ android:permissionGroup="android.permission-group.SOCIAL_INFO"
android:protectionLevel="dangerous"
android:label="@string/permlab_writeCallLog"
android:description="@string/permdesc_writeCallLog" />
+ <!-- Allows an application to read from the user's social stream. -->
+ <permission android:name="android.permission.READ_SOCIAL_STREAM"
+ android:permissionGroup="android.permission-group.SOCIAL_INFO"
+ android:protectionLevel="dangerous"
+ android:label="@string/permlab_readSocialStream"
+ android:description="@string/permdesc_readSocialStream" />
+
+ <!-- Allows an application to write (but not read) the user's
+ social stream data. -->
+ <permission android:name="android.permission.WRITE_SOCIAL_STREAM"
+ android:permissionGroup="android.permission-group.SOCIAL_INFO"
+ android:protectionLevel="dangerous"
+ android:label="@string/permlab_writeSocialStream"
+ android:description="@string/permdesc_writeSocialStream" />
+
+ <!-- =============================================================== -->
+ <!-- Permissions for accessing information about the device owner -->
+ <!-- =============================================================== -->
+ <eat-comment />
+
+ <!-- Used for permissions that provide access to information about the device
+ user such as profile information. This includes both reading and
+ writing of this data (which should generally be expressed as two
+ distinct permissions). -->
+ <permission-group android:name="android.permission-group.PERSONAL_INFO"
+ android:label="@string/permgrouplab_personalInfo"
+ android:icon="@drawable/perm_group_personal_info"
+ android:description="@string/permgroupdesc_personalInfo"
+ android:permissionGroupFlags="personalInfo"
+ android:priority="310" />
<!-- Allows an application to read the user's personal profile data. -->
<permission android:name="android.permission.READ_PROFILE"
@@ -306,20 +332,19 @@
android:label="@string/permlab_writeProfile"
android:description="@string/permdesc_writeProfile" />
- <!-- Allows an application to read from the user's social stream. -->
- <permission android:name="android.permission.READ_SOCIAL_STREAM"
- android:permissionGroup="android.permission-group.PERSONAL_INFO"
- android:protectionLevel="dangerous"
- android:label="@string/permlab_readSocialStream"
- android:description="@string/permdesc_readSocialStream" />
+ <!-- =============================================================== -->
+ <!-- Permissions for accessing the device calendar -->
+ <!-- =============================================================== -->
+ <eat-comment />
- <!-- Allows an application to write (but not read) the user's
- social stream data. -->
- <permission android:name="android.permission.WRITE_SOCIAL_STREAM"
- android:permissionGroup="android.permission-group.PERSONAL_INFO"
- android:protectionLevel="dangerous"
- android:label="@string/permlab_writeSocialStream"
- android:description="@string/permdesc_writeSocialStream" />
+ <!-- Used for permissions that provide access to the device
+ calendar to create / view events.-->
+ <permission-group android:name="android.permission-group.CALENDAR"
+ android:label="@string/permgrouplab_calendar"
+ android:icon="@drawable/perm_group_calendar"
+ android:description="@string/permgroupdesc_calendar"
+ android:permissionGroupFlags="personalInfo"
+ android:priority="290" />
<!-- Allows an application to read the user's calendar data. -->
<permission android:name="android.permission.READ_CALENDAR"
@@ -336,28 +361,63 @@
android:label="@string/permlab_writeCalendar"
android:description="@string/permdesc_writeCalendar" />
+ <!-- =============================================================== -->
+ <!-- Permissions for accessing the user dictionary-->
+ <!-- =============================================================== -->
+ <eat-comment />
+
+ <!-- Used for permissions that provide access to the user
+ calendar to create / view events.-->
+ <permission-group android:name="android.permission-group.USER_DICTIONARY"
+ android:label="@string/permgrouplab_dictionary"
+ android:icon="@drawable/perm_group_user_dictionary"
+ android:description="@string/permgroupdesc_dictionary"
+ android:permissionGroupFlags="personalInfo"
+ android:priority="170" />
+
<!-- Allows an application to read the user dictionary. This should
really only be required by an IME, or a dictionary editor like
- the Settings app.
- @hide Pending API council approval -->
+ the Settings app. -->
<permission android:name="android.permission.READ_USER_DICTIONARY"
- android:permissionGroup="android.permission-group.PERSONAL_INFO"
+ android:permissionGroup="android.permission-group.USER_DICTIONARY"
android:protectionLevel="dangerous"
android:label="@string/permlab_readDictionary"
android:description="@string/permdesc_readDictionary" />
- <!-- Allows an application to write to the user dictionary.
- @hide Pending API council approval -->
+ <!-- Used for permissions that provide access to the user
+ calendar to create / view events.-->
+ <permission-group android:name="android.permission-group.WRITE_USER_DICTIONARY"
+ android:label="@string/permgrouplab_writeDictionary"
+ android:icon="@drawable/perm_group_user_dictionary_write"
+ android:description="@string/permgroupdesc_writeDictionary"
+ android:permissionGroupFlags="personalInfo"
+ android:priority="160" />
+
+ <!-- Allows an application to write to the user dictionary. -->
<permission android:name="android.permission.WRITE_USER_DICTIONARY"
- android:permissionGroup="android.permission-group.PERSONAL_INFO"
+ android:permissionGroup="android.permission-group.WRITE_USER_DICTIONARY"
android:protectionLevel="normal"
android:label="@string/permlab_writeDictionary"
android:description="@string/permdesc_writeDictionary" />
+ <!-- =============================================================== -->
+ <!-- Permissions for accessing the user bookmarks -->
+ <!-- =============================================================== -->
+ <eat-comment />
+
+ <!-- Used for permissions that provide access to the user
+ bookmarks and browser history.-->
+ <permission-group android:name="android.permission-group.BOOKMARKS"
+ android:label="@string/permgrouplab_bookmarks"
+ android:icon="@drawable/perm_group_bookmarks"
+ android:description="@string/permgroupdesc_bookmarks"
+ android:permissionGroupFlags="personalInfo"
+ android:priority="300" />
+
<!-- Allows an application to read (but not write) the user's
browsing history and bookmarks. -->
<permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS"
- android:permissionGroup="android.permission-group.PERSONAL_INFO"
+ android:permissionGroup="android.permission-group.BOOKMARKS"
android:label="@string/permlab_readHistoryBookmarks"
android:description="@string/permdesc_readHistoryBookmarks"
android:protectionLevel="dangerous" />
@@ -365,22 +425,48 @@
<!-- Allows an application to write (but not read) the user's
browsing history and bookmarks. -->
<permission android:name="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS"
- android:permissionGroup="android.permission-group.PERSONAL_INFO"
+ android:permissionGroup="android.permission-group.BOOKMARKS"
android:label="@string/permlab_writeHistoryBookmarks"
android:description="@string/permdesc_writeHistoryBookmarks"
android:protectionLevel="dangerous" />
+ <!-- =============================================================== -->
+ <!-- Permissions for setting the device alarm -->
+ <!-- =============================================================== -->
+ <eat-comment />
+
+ <!-- Used for permissions that provide access to the user voicemail box. -->
+ <permission-group android:name="android.permission-group.DEVICE_ALARMS"
+ android:label="@string/permgrouplab_deviceAlarms"
+ android:icon="@drawable/perm_group_device_alarms"
+ android:description="@string/permgroupdesc_deviceAlarms"
+ android:permissionGroupFlags="personalInfo"
+ android:priority="210" />
+
<!-- Allows an application to broadcast an Intent to set an alarm for the
user. -->
<permission android:name="com.android.alarm.permission.SET_ALARM"
- android:permissionGroup="android.permission-group.PERSONAL_INFO"
+ android:permissionGroup="android.permission-group.DEVICE_ALARMS"
android:label="@string/permlab_setAlarm"
android:description="@string/permdesc_setAlarm"
android:protectionLevel="normal" />
+ <!-- =============================================================== -->
+ <!-- Permissions for accessing the user voicemail -->
+ <!-- =============================================================== -->
+ <eat-comment />
+
+ <!-- Used for permissions that provide access to the user voicemail box. -->
+ <permission-group android:name="android.permission-group.VOICEMAIL"
+ android:label="@string/permgrouplab_voicemail"
+ android:icon="@drawable/perm_group_voicemail"
+ android:description="@string/permgroupdesc_voicemail"
+ android:permissionGroupFlags="personalInfo"
+ android:priority="280" />
+
<!-- Allows an application to add voicemails into the system. -->
<permission android:name="com.android.voicemail.permission.ADD_VOICEMAIL"
- android:permissionGroup="android.permission-group.PERSONAL_INFO"
+ android:permissionGroup="android.permission-group.VOICEMAIL"
android:protectionLevel="dangerous"
android:label="@string/permlab_addVoicemail"
android:description="@string/permdesc_addVoicemail" />
@@ -394,7 +480,10 @@
location. -->
<permission-group android:name="android.permission-group.LOCATION"
android:label="@string/permgrouplab_location"
- android:description="@string/permgroupdesc_location" />
+ android:icon="@drawable/perm_group_location"
+ android:description="@string/permgroupdesc_location"
+ android:permissionGroupFlags="personalInfo"
+ android:priority="330" />
<!-- Allows an application to access fine (e.g., GPS) location -->
<permission android:name="android.permission.ACCESS_FINE_LOCATION"
@@ -441,7 +530,9 @@
or other related network operations. -->
<permission-group android:name="android.permission-group.NETWORK"
android:label="@string/permgrouplab_network"
- android:description="@string/permgroupdesc_network" />
+ android:icon="@drawable/perm_group_network"
+ android:description="@string/permgroupdesc_network"
+ android:priority="270" />
<!-- Allows applications to open network sockets. -->
<permission android:name="android.permission.INTERNET"
@@ -463,6 +554,13 @@
android:protectionLevel="normal"
android:description="@string/permdesc_accessWifiState"
android:label="@string/permlab_accessWifiState" />
+
+ <!-- Allows applications to change Wi-Fi connectivity state -->
+ <permission android:name="android.permission.CHANGE_WIFI_STATE"
+ android:permissionGroup="android.permission-group.NETWORK"
+ android:protectionLevel="normal"
+ android:description="@string/permdesc_changeWifiState"
+ android:label="@string/permlab_changeWifiState" />
<!-- @hide -->
<permission android:name="android.permission.ACCESS_WIMAX_STATE"
@@ -470,36 +568,57 @@
android:protectionLevel="normal"
android:description="@string/permdesc_accessWimaxState"
android:label="@string/permlab_accessWimaxState" />
+
+ <!-- @hide -->
+ <permission android:name="android.permission.CHANGE_WIMAX_STATE"
+ android:permissionGroup="android.permission-group.NETWORK"
+ android:protectionLevel="dangerous"
+ android:description="@string/permdesc_changeWimaxState"
+ android:label="@string/permlab_changeWimaxState" />
+
+ <!-- ======================================= -->
+ <!-- Permissions for short range, peripheral networks -->
+ <!-- ======================================= -->
+ <eat-comment />
+
+ <!-- Used for permissions that provide access to other devices through Bluetooth.-->
+ <permission-group android:name="android.permission-group.BLUETOOTH_NETWORK"
+ android:label="@string/permgrouplab_bluetoothNetwork"
+ android:icon="@drawable/perm_group_bluetooth"
+ android:description="@string/permgroupdesc_bluetoothNetwork"
+ android:priority="260" />
+
<!-- Allows applications to connect to paired bluetooth devices -->
<permission android:name="android.permission.BLUETOOTH"
- android:permissionGroup="android.permission-group.NETWORK"
+ android:permissionGroup="android.permission-group.BLUETOOTH_NETWORK"
android:protectionLevel="dangerous"
android:description="@string/permdesc_bluetooth"
android:label="@string/permlab_bluetooth" />
+
+ <!-- Allows applications to discover and pair bluetooth devices -->
+ <permission android:name="android.permission.BLUETOOTH_ADMIN"
+ android:permissionGroup="android.permission-group.BLUETOOTH_NETWORK"
+ android:protectionLevel="dangerous"
+ android:description="@string/permdesc_bluetoothAdmin"
+ android:label="@string/permlab_bluetoothAdmin" />
+
+ <!-- Used for permissions that provide access to network services that
+ are for peripherals and other nearby devices. These networks
+ generally do not provide IP based networking or internet access.-->
+ <permission-group android:name="android.permission-group.SHORTRANGE_NETWORK"
+ android:label="@string/permgrouplab_shortrangeNetwork"
+ android:icon="@drawable/perm_group_shortrange_network"
+ android:description="@string/permgroupdesc_shortrangeNetwork"
+ android:priority="250" />
<!-- Allows applications to perform I/O operations over NFC -->
<permission android:name="android.permission.NFC"
- android:permissionGroup="android.permission-group.NETWORK"
+ android:permissionGroup="android.permission-group.SHORTRANGE_NETWORK"
android:protectionLevel="dangerous"
android:description="@string/permdesc_nfc"
android:label="@string/permlab_nfc" />
- <!-- Allows an application to use SIP service -->
- <permission android:name="android.permission.USE_SIP"
- android:permissionGroup="android.permission-group.NETWORK"
- android:protectionLevel="dangerous"
- android:description="@string/permdesc_use_sip"
- android:label="@string/permlab_use_sip" />
-
- <!-- Allows applications to call into AccountAuthenticators. Only
- the system can get this permission. -->
- <permission android:name="android.permission.ACCOUNT_MANAGER"
- android:permissionGroup="android.permission-group.ACCOUNTS"
- android:protectionLevel="signature"
- android:description="@string/permdesc_accountManagerService"
- android:label="@string/permlab_accountManagerService" />
-
- <!-- Allows an internal user to use privaledged ConnectivityManager
+ <!-- Allows an internal user to use privileged ConnectivityManager
APIs.
@hide -->
<permission android:name="android.permission.CONNECTIVITY_INTERNAL"
@@ -515,7 +634,10 @@
by the Account Manager. -->
<permission-group android:name="android.permission-group.ACCOUNTS"
android:label="@string/permgrouplab_accounts"
- android:description="@string/permgroupdesc_accounts" />
+ android:icon="@drawable/perm_group_accounts"
+ android:description="@string/permgroupdesc_accounts"
+ android:permissionGroupFlags="personalInfo"
+ android:priority="200" />
<!-- Allows access to the list of accounts in the Accounts Service -->
<permission android:name="android.permission.GET_ACCOUNTS"
@@ -546,6 +668,77 @@
android:label="@string/permlab_manageAccounts"
android:description="@string/permdesc_manageAccounts" />
+ <!-- Allows applications to call into AccountAuthenticators. Only
+ the system can get this permission. -->
+ <permission android:name="android.permission.ACCOUNT_MANAGER"
+ android:permissionGroup="android.permission-group.ACCOUNTS"
+ android:protectionLevel="signature"
+ android:description="@string/permdesc_accountManagerService"
+ android:label="@string/permlab_accountManagerService" />
+
+ <!-- ================================== -->
+ <!-- Permissions for accessing hardware that may effect battery life-->
+ <!-- ================================== -->
+ <eat-comment />
+
+ <!-- Used for permissions that provide direct access to the hardware on
+ the device that has an effect on battery life. This includes vibrator,
+ flashlight, etc. -->
+
+ <permission-group android:name="android.permission-group.AFFECTS_BATTERY"
+ android:label="@string/permgrouplab_affectsBattery"
+ android:icon="@drawable/perm_group_affects_battery"
+ android:description="@string/permgroupdesc_affectsBattery"
+ android:priority="180" />
+
+ <!-- Allows applications to enter Wi-Fi Multicast mode -->
+ <permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"
+ android:permissionGroup="android.permission-group.AFFECTS_BATTERY"
+ android:protectionLevel="normal"
+ android:description="@string/permdesc_changeWifiMulticastState"
+ android:label="@string/permlab_changeWifiMulticastState" />
+
+ <!-- Allows access to the vibrator -->
+ <permission android:name="android.permission.VIBRATE"
+ android:permissionGroup="android.permission-group.AFFECTS_BATTERY"
+ android:protectionLevel="normal"
+ android:label="@string/permlab_vibrate"
+ android:description="@string/permdesc_vibrate" />
+
+ <!-- Allows access to the flashlight -->
+ <permission android:name="android.permission.FLASHLIGHT"
+ android:permissionGroup="android.permission-group.AFFECTS_BATTERY"
+ android:protectionLevel="normal"
+ android:label="@string/permlab_flashlight"
+ android:description="@string/permdesc_flashlight" />
+
+ <!-- Allows using PowerManager WakeLocks to keep processor from sleeping or screen
+ from dimming -->
+ <permission android:name="android.permission.WAKE_LOCK"
+ android:permissionGroup="android.permission-group.AFFECTS_BATTERY"
+ android:protectionLevel="normal"
+ android:label="@string/permlab_wakeLock"
+ android:description="@string/permdesc_wakeLock" />
+
+ <!-- ==================================================== -->
+ <!-- Permissions related to changing audio settings -->
+ <!-- ==================================================== -->
+
+ <!-- Used for permissions that provide direct access to speaker settings
+ the device. -->
+ <permission-group android:name="android.permission-group.AUDIO_SETTINGS"
+ android:label="@string/permgrouplab_audioSettings"
+ android:icon="@drawable/perm_group_audio_settings"
+ android:description="@string/permgroupdesc_audioSettings"
+ android:priority="130" />
+
+ <!-- Allows an application to modify global audio settings -->
+ <permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"
+ android:permissionGroup="android.permission-group.AUDIO_SETTINGS"
+ android:protectionLevel="normal"
+ android:label="@string/permlab_modifyAudioSettings"
+ android:description="@string/permdesc_modifyAudioSettings" />
+
<!-- ================================== -->
<!-- Permissions for accessing hardware -->
<!-- ================================== -->
@@ -555,48 +748,8 @@
the device. This includes audio, the camera, vibrator, etc. -->
<permission-group android:name="android.permission-group.HARDWARE_CONTROLS"
android:label="@string/permgrouplab_hardwareControls"
- android:description="@string/permgroupdesc_hardwareControls" />
-
- <!-- Allows an application to modify global audio settings -->
- <permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"
- android:permissionGroup="android.permission-group.HARDWARE_CONTROLS"
- android:protectionLevel="dangerous"
- android:label="@string/permlab_modifyAudioSettings"
- android:description="@string/permdesc_modifyAudioSettings" />
-
- <!-- Allows an application to record audio -->
- <permission android:name="android.permission.RECORD_AUDIO"
- android:permissionGroup="android.permission-group.HARDWARE_CONTROLS"
- android:protectionLevel="dangerous"
- android:label="@string/permlab_recordAudio"
- android:description="@string/permdesc_recordAudio" />
-
- <!-- Required to be able to access the camera device.
- <p>This will automatically enforce the <a
- href="{@docRoot}guide/topics/manifest/uses-feature-element.html">{@code
- <uses-feature>}</a> manifest element for <em>all</em> camera features.
- If you do not require all camera features or can properly operate if a camera
- is not available, then you must modify your manifest as appropriate in order to
- install on devices that don't support all camera features.</p> -->
- <permission android:name="android.permission.CAMERA"
- android:permissionGroup="android.permission-group.HARDWARE_CONTROLS"
- android:protectionLevel="dangerous"
- android:label="@string/permlab_camera"
- android:description="@string/permdesc_camera" />
-
- <!-- Allows access to the vibrator -->
- <permission android:name="android.permission.VIBRATE"
- android:permissionGroup="android.permission-group.HARDWARE_CONTROLS"
- android:protectionLevel="normal"
- android:label="@string/permlab_vibrate"
- android:description="@string/permdesc_vibrate" />
-
- <!-- Allows access to the flashlight -->
- <permission android:name="android.permission.FLASHLIGHT"
- android:permissionGroup="android.permission-group.HARDWARE_CONTROLS"
- android:protectionLevel="normal"
- android:label="@string/permlab_flashlight"
- android:description="@string/permdesc_flashlight" />
+ android:description="@string/permgroupdesc_hardwareControls"
+ android:priority="260"/>
<!-- Allows an application to manage preferences and permissions for USB devices
@hide -->
@@ -634,18 +787,68 @@
android:protectionLevel="signature" />
<!-- =========================================== -->
+ <!-- Permissions associated with audio capture -->
+ <!-- =========================================== -->
+ <eat-comment />
+
+ <!-- Used for permissions that are associated with accessing
+ microphone audio from the device. Note that phone calls also capture audio
+ but are in a separate (more visible) permission group. -->
+ <permission-group android:name="android.permission-group.MICROPHONE"
+ android:label="@string/permgrouplab_microphone"
+ android:icon="@drawable/perm_group_microphone"
+ android:description="@string/permgroupdesc_microphone"
+ android:permissionGroupFlags="personalInfo"
+ android:priority="340" />
+
+ <!-- Allows an application to record audio -->
+ <permission android:name="android.permission.RECORD_AUDIO"
+ android:permissionGroup="android.permission-group.MICROPHONE"
+ android:protectionLevel="dangerous"
+ android:label="@string/permlab_recordAudio" />
+
+
+ <!-- =========================================== -->
+ <!-- Permissions associated with camera and image capture -->
+ <!-- =========================================== -->
+ <eat-comment />
+
+ <!-- Used for permissions that are associated with accessing
+ camera or capturing images/video from the device. -->
+ <permission-group android:name="android.permission-group.CAMERA"
+ android:label="@string/permgrouplab_camera"
+ android:icon="@drawable/perm_group_camera"
+ android:description="@string/permgroupdesc_camera"
+ android:permissionGroupFlags="personalInfo"
+ android:priority="350" />
+
+ <!-- Required to be able to access the camera device.
+ <p>This will automatically enforce the <a
+ href="{@docRoot}guide/topics/manifest/uses-feature-element.html">{@code
+ <uses-feature>}</a> manifest element for <em>all</em> camera features.
+ If you do not require all camera features or can properly operate if a camera
+ is not available, then you must modify your manifest as appropriate in order to
+ install on devices that don't support all camera features.</p> -->
+ <permission android:name="android.permission.CAMERA"
+ android:permissionGroup="android.permission-group.CAMERA"
+ android:protectionLevel="dangerous"
+ android:label="@string/permlab_camera"
+ android:description="@string/permdesc_camera" />
+
+ <!-- =========================================== -->
<!-- Permissions associated with telephony state -->
<!-- =========================================== -->
<eat-comment />
<!-- Used for permissions that are associated with accessing and modifyign
- telephony state: intercepting outgoing calls, reading
- and modifying the phone state. Note that
- placing phone calls is not in this group, since that is in the
- more important "takin' yer moneys" group. -->
+ telephony state: placing calls, intercepting outgoing calls, reading
+ and modifying the phone state. -->
<permission-group android:name="android.permission-group.PHONE_CALLS"
android:label="@string/permgrouplab_phoneCalls"
- android:description="@string/permgroupdesc_phoneCalls" />
+ android:icon="@drawable/perm_group_phone_calls"
+ android:description="@string/permgroupdesc_phoneCalls"
+ android:permissionGroupFlags="personalInfo"
+ android:priority="370" />
<!-- Allows an application to monitor, modify, or abort outgoing
calls. -->
@@ -676,6 +879,22 @@
android:permissionGroup="android.permission-group.PHONE_CALLS"
android:protectionLevel="signature|system" />
+ <!-- Allows an application to initiate a phone call without going through
+ the Dialer user interface for the user to confirm the call
+ being placed. -->
+ <permission android:name="android.permission.CALL_PHONE"
+ android:permissionGroup="android.permission-group.PHONE_CALLS"
+ android:protectionLevel="dangerous"
+ android:label="@string/permlab_callPhone"
+ android:description="@string/permdesc_callPhone" />
+
+ <!-- Allows an application to use SIP service -->
+ <permission android:name="android.permission.USE_SIP"
+ android:permissionGroup="android.permission-group.PHONE_CALLS"
+ android:protectionLevel="dangerous"
+ android:description="@string/permdesc_use_sip"
+ android:label="@string/permlab_use_sip" />
+
<!-- ================================== -->
<!-- Permissions for sdcard interaction -->
<!-- ================================== -->
@@ -684,7 +903,10 @@
<!-- Group of permissions that are related to SD card access. -->
<permission-group android:name="android.permission-group.STORAGE"
android:label="@string/permgrouplab_storage"
- android:description="@string/permgroupdesc_storage" />
+ android:icon="@drawable/perm_group_storage"
+ android:description="@string/permgroupdesc_storage"
+ android:permissionGroupFlags="personalInfo"
+ android:priority="240" />
<!-- Allows an application to read from external storage -->
<permission android:name="android.permission.READ_EXTERNAL_STORAGE"
@@ -708,45 +930,44 @@
android:description="@string/permdesc_mediaStorageWrite"
android:protectionLevel="signature|system" />
- <!-- ============================================ -->
- <!-- Permissions for low-level system interaction -->
- <!-- ============================================ -->
+ <!-- ================================== -->
+ <!-- Permissions for screenlock -->
+ <!-- ================================== -->
<eat-comment />
- <!-- Group of permissions that are related to system APIs. Many
- of these are not permissions the user will be expected to understand,
- and such permissions should generally be marked as "normal" protection
- level so they don't get displayed. This can also, however, be used
- for miscellaneous features that provide access to the operating system,
- such as writing the global system settings. -->
- <permission-group android:name="android.permission-group.SYSTEM_TOOLS"
- android:label="@string/permgrouplab_systemTools"
- android:description="@string/permgroupdesc_systemTools" />
+ <!-- Group of permissions that are related to the screenlock. -->
+ <permission-group android:name="android.permission-group.SCREENLOCK"
+ android:label="@string/permgrouplab_storage"
+ android:icon="@drawable/perm_group_screenlock"
+ android:permissionGroupFlags="personalInfo"
+ android:description="@string/permgroupdesc_storage"
+ android:priority="230" />
- <!-- Allows an application to read or write the system settings. -->
- <permission android:name="android.permission.WRITE_SETTINGS"
- android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
+ <!-- Allows applications to disable the keyguard -->
+ <permission android:name="android.permission.DISABLE_KEYGUARD"
+ android:permissionGroup="android.permission-group.SCREENLOCK"
android:protectionLevel="dangerous"
- android:label="@string/permlab_writeSettings"
- android:description="@string/permdesc_writeSettings" />
+ android:description="@string/permdesc_disableKeyguard"
+ android:label="@string/permlab_disableKeyguard" />
- <!-- Allows an application to modify the Google service map. -->
- <permission android:name="android.permission.WRITE_GSERVICES"
- android:protectionLevel="signature|system"
- android:label="@string/permlab_writeGservices"
- android:description="@string/permdesc_writeGservices" />
+ <!-- ================================== -->
+ <!-- Permissions to access other installed applications -->
+ <!-- ================================== -->
+ <eat-comment />
- <!-- Allows an application to expand or collapse the status bar. -->
- <permission android:name="android.permission.EXPAND_STATUS_BAR"
- android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
- android:protectionLevel="normal"
- android:label="@string/permlab_expandStatusBar"
- android:description="@string/permdesc_expandStatusBar" />
+ <!-- Group of permissions that are related to the other applications
+ installed on the system. Examples include such as listing
+ running apps, or killing background processes. -->
+ <permission-group android:name="android.permission-group.APP_INFO"
+ android:label="@string/permgrouplab_appInfo"
+ android:icon="@drawable/perm_group_app_info"
+ android:description="@string/permgroupdesc_appInfo"
+ android:priority="220" />
<!-- Allows an application to get information about the currently
or recently running tasks. -->
<permission android:name="android.permission.GET_TASKS"
- android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
+ android:permissionGroup="android.permission-group.APP_INFO"
android:protectionLevel="dangerous"
android:label="@string/permlab_getTasks"
android:description="@string/permdesc_getTasks" />
@@ -762,14 +983,14 @@
<!-- Allows an application to change the Z-order of tasks -->
<permission android:name="android.permission.REORDER_TASKS"
- android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
- android:protectionLevel="dangerous"
+ android:permissionGroup="android.permission-group.APP_INFO"
+ android:protectionLevel="normal"
android:label="@string/permlab_reorderTasks"
android:description="@string/permdesc_reorderTasks" />
<!-- @hide Allows an application to change to remove/kill tasks -->
<permission android:name="android.permission.REMOVE_TASKS"
- android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
+ android:permissionGroup="android.permission-group.APP_INFO"
android:protectionLevel="signature"
android:label="@string/permlab_removeTasks"
android:description="@string/permdesc_removeTasks" />
@@ -782,6 +1003,167 @@
android:label="@string/permlab_startAnyActivity"
android:description="@string/permdesc_startAnyActivity" />
+ <!-- @deprecated The {@link android.app.ActivityManager#restartPackage}
+ API is no longer supported. -->
+ <permission android:name="android.permission.RESTART_PACKAGES"
+ android:permissionGroup="android.permission-group.APP_INFO"
+ android:protectionLevel="normal"
+ android:label="@string/permlab_killBackgroundProcesses"
+ android:description="@string/permdesc_killBackgroundProcesses" />
+
+ <!-- Allows an application to call
+ {@link android.app.ActivityManager#killBackgroundProcesses}. -->
+ <permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"
+ android:permissionGroup="android.permission-group.APP_INFO"
+ android:protectionLevel="normal"
+ android:label="@string/permlab_killBackgroundProcesses"
+ android:description="@string/permdesc_killBackgroundProcesses" />
+
+ <!-- ================================== -->
+ <!-- Permissions affecting the display of other applications -->
+ <!-- ================================== -->
+ <eat-comment />
+
+ <!-- Group of permissions that allow manipulation of how
+ another application displays UI to the user. -->
+ <permission-group android:name="android.permission-group.DISPLAY"
+ android:label="@string/permgrouplab_display"
+ android:icon="@drawable/perm_group_display"
+ android:description="@string/permgroupdesc_display"
+ android:priority="190"/>
+
+ <!-- Allows an application to open windows using the type
+ {@link android.view.WindowManager.LayoutParams#TYPE_SYSTEM_ALERT},
+ shown on top of all other applications. Very few applications
+ should use this permission; these windows are intended for
+ system-level interaction with the user. -->
+ <permission android:name="android.permission.SYSTEM_ALERT_WINDOW"
+ android:permissionGroup="android.permission-group.DISPLAY"
+ android:protectionLevel="dangerous"
+ android:label="@string/permlab_systemAlertWindow"
+ android:description="@string/permdesc_systemAlertWindow" />
+
+ <!-- ================================== -->
+ <!-- Permissions affecting the system wallpaper -->
+ <!-- ================================== -->
+ <eat-comment />
+
+ <!-- Group of permissions that allow manipulation of how
+ another application displays UI to the user. -->
+ <permission-group android:name="android.permission-group.WALLPAPER"
+ android:label="@string/permgrouplab_wallpaper"
+ android:icon="@drawable/perm_group_wallpaper"
+ android:description="@string/permgroupdesc_wallpaper"
+ android:priority="150" />
+
+ <!-- Allows applications to set the wallpaper -->
+ <permission android:name="android.permission.SET_WALLPAPER"
+ android:permissionGroup="android.permission-group.WALLPAPER"
+ android:protectionLevel="normal"
+ android:label="@string/permlab_setWallpaper"
+ android:description="@string/permdesc_setWallpaper" />
+
+ <!-- Allows applications to set the wallpaper hints -->
+ <permission android:name="android.permission.SET_WALLPAPER_HINTS"
+ android:permissionGroup="android.permission-group.WALLPAPER"
+ android:protectionLevel="normal"
+ android:label="@string/permlab_setWallpaperHints"
+ android:description="@string/permdesc_setWallpaperHints" />
+
+ <!-- ============================================ -->
+ <!-- Permissions for changing the system clock -->
+ <!-- ============================================ -->
+ <eat-comment />
+
+ <!-- Group of permissions that are related to system clock. -->
+ <permission-group android:name="android.permission-group.SYSTEM_CLOCK"
+ android:label="@string/permgrouplab_systemClock"
+ android:icon="@drawable/perm_group_system_clock"
+ android:description="@string/permgroupdesc_systemClock"
+ android:priority="140" />
+
+ <!-- Allows applications to set the system time -->
+ <permission android:name="android.permission.SET_TIME"
+ android:protectionLevel="signature|system"
+ android:label="@string/permlab_setTime"
+ android:description="@string/permdesc_setTime" />
+
+ <!-- Allows applications to set the system time zone -->
+ <permission android:name="android.permission.SET_TIME_ZONE"
+ android:permissionGroup="android.permission-group.SYSTEM_CLOCK"
+ android:protectionLevel="normal"
+ android:label="@string/permlab_setTimeZone"
+ android:description="@string/permdesc_setTimeZone" />
+
+ <!-- ==================================================== -->
+ <!-- Permissions related to changing status bar -->
+ <!-- ==================================================== -->
+
+ <!-- Used for permissions that change the status bar -->
+ <permission-group android:name="android.permission-group.STATUS_BAR"
+ android:label="@string/permgrouplab_statusBar"
+ android:icon="@drawable/perm_group_status_bar"
+ android:description="@string/permgroupdesc_statusBar"
+ android:priority="110" />
+
+ <!-- Allows an application to expand or collapse the status bar. -->
+ <permission android:name="android.permission.EXPAND_STATUS_BAR"
+ android:permissionGroup="android.permission-group.STATUS_BAR"
+ android:protectionLevel="normal"
+ android:label="@string/permlab_expandStatusBar"
+ android:description="@string/permdesc_expandStatusBar" />
+
+ <!-- ==================================================== -->
+ <!-- Permissions related to accessing sync settings -->
+ <!-- ==================================================== -->
+
+ <!-- Used for permissions that access the sync settings or sync
+ related information. -->
+ <permission-group android:name="android.permission-group.SYNC_SETTINGS"
+ android:label="@string/permgrouplab_syncSettings"
+ android:icon="@drawable/perm_group_sync_settings"
+ android:description="@string/permgroupdesc_syncSettings"
+ android:priority="120" />
+
+ <!-- Allows applications to read the sync settings -->
+ <permission android:name="android.permission.READ_SYNC_SETTINGS"
+ android:permissionGroup="android.permission-group.SYNC_SETTINGS"
+ android:protectionLevel="normal"
+ android:description="@string/permdesc_readSyncSettings"
+ android:label="@string/permlab_readSyncSettings" />
+
+ <!-- Allows applications to write the sync settings -->
+ <permission android:name="android.permission.WRITE_SYNC_SETTINGS"
+ android:permissionGroup="android.permission-group.SYNC_SETTINGS"
+ android:protectionLevel="normal"
+ android:description="@string/permdesc_writeSyncSettings"
+ android:label="@string/permlab_writeSyncSettings" />
+
+ <!-- Allows applications to read the sync stats -->
+ <permission android:name="android.permission.READ_SYNC_STATS"
+ android:permissionGroup="android.permission-group.SYNC_SETTINGS"
+ android:protectionLevel="normal"
+ android:description="@string/permdesc_readSyncStats"
+ android:label="@string/permlab_readSyncStats" />
+
+
+ <!-- ============================================ -->
+ <!-- Permissions for low-level system interaction -->
+ <!-- ============================================ -->
+ <eat-comment />
+
+ <!-- Group of permissions that are related to system APIs. Many
+ of these are not permissions the user will be expected to understand,
+ and such permissions should generally be marked as "normal" protection
+ level so they don't get displayed. This can also, however, be used
+ for miscellaneous features that provide access to the operating system,
+ such as writing the global system settings. -->
+ <permission-group android:name="android.permission-group.SYSTEM_TOOLS"
+ android:label="@string/permgrouplab_systemTools"
+ android:icon="@drawable/perm_group_system_tools"
+ android:description="@string/permgroupdesc_systemTools"
+ android:priority="100" />
+
<!-- @hide Change the screen compatibility mode of applications -->
<permission android:name="android.permission.SET_SCREEN_COMPATIBILITY"
android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
@@ -793,25 +1175,37 @@
as locale. -->
<permission android:name="android.permission.CHANGE_CONFIGURATION"
android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
- android:protectionLevel="dangerous"
+ android:protectionLevel="signature|system|development"
android:label="@string/permlab_changeConfiguration"
android:description="@string/permdesc_changeConfiguration" />
- <!-- @deprecated The {@link android.app.ActivityManager#restartPackage}
- API is no longer supported. -->
- <permission android:name="android.permission.RESTART_PACKAGES"
+ <!-- Allows an application to read or write the system settings. -->
+ <permission android:name="android.permission.WRITE_SETTINGS"
android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
android:protectionLevel="normal"
- android:label="@string/permlab_killBackgroundProcesses"
- android:description="@string/permdesc_killBackgroundProcesses" />
+ android:label="@string/permlab_writeSettings"
+ android:description="@string/permdesc_writeSettings" />
- <!-- Allows an application to call
- {@link android.app.ActivityManager#killBackgroundProcesses}. -->
- <permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"
+ <!-- Allows an application to modify the Google service map. -->
+ <permission android:name="android.permission.WRITE_GSERVICES"
+ android:protectionLevel="signature|system"
+ android:label="@string/permlab_writeGservices"
+ android:description="@string/permdesc_writeGservices" />
+
+ <!-- @hide Change the screen compatibility mode of applications -->
+ <permission android:name="android.permission.SET_SCREEN_COMPATIBILITY"
android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
- android:protectionLevel="normal"
- android:label="@string/permlab_killBackgroundProcesses"
- android:description="@string/permdesc_killBackgroundProcesses" />
+ android:protectionLevel="signature"
+ android:label="@string/permlab_setScreenCompatibility"
+ android:description="@string/permdesc_setScreenCompatibility" />
+
+ <!-- Allows an application to modify the current configuration, such
+ as locale. -->
+ <permission android:name="android.permission.CHANGE_CONFIGURATION"
+ android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
+ android:protectionLevel="system|signature"
+ android:label="@string/permlab_changeConfiguration"
+ android:description="@string/permdesc_changeConfiguration" />
<!-- Allows an application to call
{@link android.app.ActivityManager#forceStopPackage}.
@@ -830,31 +1224,18 @@
android:label="@string/permlab_retrieve_window_content"
android:description="@string/permdesc_retrieve_window_content" />
- <!-- Allows an application to open windows using the type
- {@link android.view.WindowManager.LayoutParams#TYPE_SYSTEM_ALERT},
- shown on top of all other applications. Very few applications
- should use this permission; these windows are intended for
- system-level interaction with the user. -->
- <permission android:name="android.permission.SYSTEM_ALERT_WINDOW"
- android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
- android:protectionLevel="dangerous"
- android:label="@string/permlab_systemAlertWindow"
- android:description="@string/permdesc_systemAlertWindow" />
-
<!-- Modify the global animation scaling factor. -->
<permission android:name="android.permission.SET_ANIMATION_SCALE"
android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
- android:protectionLevel="dangerous"
+ android:protectionLevel="signature|system|development"
android:label="@string/permlab_setAnimationScale"
android:description="@string/permdesc_setAnimationScale" />
<!-- @deprecated This functionality will be removed in the future; please do
- not use.
-
- Allow an application to make its activities persistent. -->
+ not use. Allow an application to make its activities persistent. -->
<permission android:name="android.permission.PERSISTENT_ACTIVITY"
android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
- android:protectionLevel="dangerous"
+ android:protectionLevel="normal"
android:label="@string/permlab_persistentActivity"
android:description="@string/permdesc_persistentActivity" />
@@ -901,52 +1282,17 @@
android:label="@string/permlab_broadcastSticky"
android:description="@string/permdesc_broadcastSticky" />
- <!-- Allows using PowerManager WakeLocks to keep processor from sleeping or screen
- from dimming -->
- <permission android:name="android.permission.WAKE_LOCK"
- android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
- android:protectionLevel="dangerous"
- android:label="@string/permlab_wakeLock"
- android:description="@string/permdesc_wakeLock" />
-
- <!-- Allows applications to set the wallpaper -->
- <permission android:name="android.permission.SET_WALLPAPER"
- android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
- android:protectionLevel="normal"
- android:label="@string/permlab_setWallpaper"
- android:description="@string/permdesc_setWallpaper" />
-
- <!-- Allows applications to set the wallpaper hints -->
- <permission android:name="android.permission.SET_WALLPAPER_HINTS"
- android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
- android:protectionLevel="normal"
- android:label="@string/permlab_setWallpaperHints"
- android:description="@string/permdesc_setWallpaperHints" />
-
- <!-- Allows applications to set the system time -->
- <permission android:name="android.permission.SET_TIME"
- android:protectionLevel="signature|system"
- android:label="@string/permlab_setTime"
- android:description="@string/permdesc_setTime" />
-
- <!-- Allows applications to set the system time zone -->
- <permission android:name="android.permission.SET_TIME_ZONE"
- android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
- android:protectionLevel="dangerous"
- android:label="@string/permlab_setTimeZone"
- android:description="@string/permdesc_setTimeZone" />
-
<!-- Allows mounting and unmounting file systems for removable storage. -->
<permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
- android:protectionLevel="dangerous"
+ android:protectionLevel="system|signature"
android:label="@string/permlab_mount_unmount_filesystems"
android:description="@string/permdesc_mount_unmount_filesystems" />
<!-- Allows formatting file systems for removable storage. -->
<permission android:name="android.permission.MOUNT_FORMAT_FILESYSTEMS"
android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
- android:protectionLevel="dangerous"
+ android:protectionLevel="system|signature"
android:label="@string/permlab_mount_format_filesystems"
android:description="@string/permdesc_mount_format_filesystems" />
@@ -990,34 +1336,6 @@
android:label="@string/permlab_asec_rename"
android:description="@string/permdesc_asec_rename" />
- <!-- Allows applications to disable the keyguard -->
- <permission android:name="android.permission.DISABLE_KEYGUARD"
- android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
- android:protectionLevel="dangerous"
- android:description="@string/permdesc_disableKeyguard"
- android:label="@string/permlab_disableKeyguard" />
-
- <!-- Allows applications to read the sync settings -->
- <permission android:name="android.permission.READ_SYNC_SETTINGS"
- android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
- android:protectionLevel="normal"
- android:description="@string/permdesc_readSyncSettings"
- android:label="@string/permlab_readSyncSettings" />
-
- <!-- Allows applications to write the sync settings -->
- <permission android:name="android.permission.WRITE_SYNC_SETTINGS"
- android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
- android:protectionLevel="dangerous"
- android:description="@string/permdesc_writeSyncSettings"
- android:label="@string/permlab_writeSyncSettings" />
-
- <!-- Allows applications to read the sync stats -->
- <permission android:name="android.permission.READ_SYNC_STATS"
- android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
- android:protectionLevel="normal"
- android:description="@string/permdesc_readSyncStats"
- android:label="@string/permlab_readSyncStats" />
-
<!-- Allows applications to write the apn settings -->
<permission android:name="android.permission.WRITE_APN_SETTINGS"
android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
@@ -1041,37 +1359,10 @@
<!-- Allows applications to change network connectivity state -->
<permission android:name="android.permission.CHANGE_NETWORK_STATE"
android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
- android:protectionLevel="dangerous"
+ android:protectionLevel="normal"
android:description="@string/permdesc_changeNetworkState"
android:label="@string/permlab_changeNetworkState" />
- <!-- Allows applications to change Wi-Fi connectivity state -->
- <permission android:name="android.permission.CHANGE_WIFI_STATE"
- android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
- android:protectionLevel="dangerous"
- android:description="@string/permdesc_changeWifiState"
- android:label="@string/permlab_changeWifiState" />
-
- <!-- @hide -->
- <permission android:name="android.permission.CHANGE_WIMAX_STATE"
- android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
- android:protectionLevel="dangerous"
- android:description="@string/permdesc_changeWimaxState"
- android:label="@string/permlab_changeWimaxState" />
- <!-- Allows applications to enter Wi-Fi Multicast mode -->
- <permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"
- android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
- android:protectionLevel="dangerous"
- android:description="@string/permdesc_changeWifiMulticastState"
- android:label="@string/permlab_changeWifiMulticastState" />
-
- <!-- Allows applications to discover and pair bluetooth devices -->
- <permission android:name="android.permission.BLUETOOTH_ADMIN"
- android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
- android:protectionLevel="dangerous"
- android:description="@string/permdesc_bluetoothAdmin"
- android:label="@string/permlab_bluetoothAdmin" />
-
<!-- Allows an application to clear the caches of all installed
applications on the device. -->
<permission android:name="android.permission.CLEAR_APP_CACHE"
@@ -1098,7 +1389,8 @@
purposes. -->
<permission-group android:name="android.permission-group.DEVELOPMENT_TOOLS"
android:label="@string/permgrouplab_developmentTools"
- android:description="@string/permgroupdesc_developmentTools" />
+ android:description="@string/permgroupdesc_developmentTools"
+ android:priority="310" />
<!-- Allows an application to read or write the secure system settings. -->
<permission android:name="android.permission.WRITE_SECURE_SETTINGS"
@@ -1302,7 +1594,8 @@
android:protectionLevel="signature" />
<!-- Allows low-level access to setting the keyboard layout.
- Not for use by normal applications. -->
+ Not for use by normal applications.
+ @hide -->
<permission android:name="android.permission.SET_KEYBOARD_LAYOUT"
android:label="@string/permlab_setKeyboardLayout"
android:description="@string/permdesc_setKeyboardLayout"
diff --git a/core/res/res/anim/task_open_enter.xml b/core/res/res/anim-land/task_close_enter.xml
similarity index 68%
copy from core/res/res/anim/task_open_enter.xml
copy to core/res/res/anim-land/task_close_enter.xml
index 8341806..805ff6c 100644
--- a/core/res/res/anim/task_open_enter.xml
+++ b/core/res/res/anim-land/task_close_enter.xml
@@ -19,16 +19,25 @@
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:background="#ff000000" android:shareInterpolator="false" android:zAdjustment="top">
- <scale android:fromXScale=".8" android:toXScale="1.0"
- android:fromYScale=".8" android:toYScale="1.0"
- android:pivotX="50%p" android:pivotY="50%p"
- android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
- android:interpolator="@interpolator/decelerate_quad"
- android:startOffset="400"
- android:duration="300" />
+
<alpha android:fromAlpha="0" android:toAlpha="1.0"
android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
android:interpolator="@interpolator/decelerate_quad"
- android:startOffset="400"
- android:duration="300"/>
+ android:startOffset="150"
+ android:duration="350"/>
+
+ <translate android:fromXDelta="-140%" android:toXDelta="0"
+ android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
+ android:interpolator="@interpolator/decelerate_cubic"
+ android:startOffset="150"
+ android:duration="350"/>
+
+ <scale android:fromXScale=".6" android:toXScale="1.0"
+ android:fromYScale=".6" android:toYScale="1.0"
+ android:pivotX="50%p" android:pivotY="50%p"
+ android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
+ android:interpolator="@interpolator/decelerate_quad"
+ android:startOffset="150"
+ android:duration="350" />
+
</set>
\ No newline at end of file
diff --git a/core/res/res/anim/task_open_exit.xml b/core/res/res/anim-land/task_close_exit.xml
similarity index 82%
rename from core/res/res/anim/task_open_exit.xml
rename to core/res/res/anim-land/task_close_exit.xml
index af1a4a9..3e97149 100644
--- a/core/res/res/anim/task_open_exit.xml
+++ b/core/res/res/anim-land/task_close_exit.xml
@@ -21,20 +21,23 @@
android:background="#ff000000" android:shareInterpolator="false" android:zAdjustment="normal">
<alpha android:fromAlpha="1.0" android:toAlpha="0"
android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
- android:interpolator="@interpolator/decelerate_cubic"
- android:duration="300"/>
+ android:interpolator="@interpolator/accelerate_quad"
+ android:duration="350"/>
+
+ <translate android:fromXDelta="0" android:toXDelta="140%"
+ android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
+ android:interpolator="@interpolator/decelerate_quad"
+ android:duration="350"/>
+
<scale android:fromXScale="1.0" android:toXScale="0.6"
android:fromYScale="1.0" android:toYScale="0.6"
- android:pivotX="50%p" android:pivotY="50%p"
android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
- android:interpolator="@interpolator/accelerate_quad"
- android:duration="500" />
- <translate android:fromYDelta="0" android:toYDelta="-100%"
- android:interpolator="@interpolator/accelerate_quad"
- android:duration="500"/>
+ android:pivotX="50%p" android:pivotY="50%p"
+ android:interpolator="@interpolator/decelerate_cubic"
+ android:duration="350" />
<!-- This is needed to keep the animation running while task_open_enter completes -->
<alpha android:fromAlpha="1.0" android:toAlpha="1.0"
android:interpolator="@interpolator/accelerate_quad"
- android:duration="700" />
+ android:duration="500" />
</set>
\ No newline at end of file
diff --git a/core/res/res/anim/task_open_enter.xml b/core/res/res/anim-land/task_open_enter.xml
similarity index 68%
rename from core/res/res/anim/task_open_enter.xml
rename to core/res/res/anim-land/task_open_enter.xml
index 8341806..fb1c5d6 100644
--- a/core/res/res/anim/task_open_enter.xml
+++ b/core/res/res/anim-land/task_open_enter.xml
@@ -19,16 +19,25 @@
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:background="#ff000000" android:shareInterpolator="false" android:zAdjustment="top">
- <scale android:fromXScale=".8" android:toXScale="1.0"
- android:fromYScale=".8" android:toYScale="1.0"
- android:pivotX="50%p" android:pivotY="50%p"
- android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
- android:interpolator="@interpolator/decelerate_quad"
- android:startOffset="400"
- android:duration="300" />
+
<alpha android:fromAlpha="0" android:toAlpha="1.0"
android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
android:interpolator="@interpolator/decelerate_quad"
- android:startOffset="400"
- android:duration="300"/>
+ android:startOffset="150"
+ android:duration="350"/>
+
+ <translate android:fromXDelta="140%" android:toXDelta="0"
+ android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
+ android:interpolator="@interpolator/decelerate_cubic"
+ android:startOffset="150"
+ android:duration="350"/>
+
+ <scale android:fromXScale=".6" android:toXScale="1.0"
+ android:fromYScale=".6" android:toYScale="1.0"
+ android:pivotX="50%p" android:pivotY="50%p"
+ android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
+ android:interpolator="@interpolator/decelerate_quad"
+ android:startOffset="150"
+ android:duration="350" />
+
</set>
\ No newline at end of file
diff --git a/core/res/res/anim/task_open_exit.xml b/core/res/res/anim-land/task_open_exit.xml
similarity index 82%
copy from core/res/res/anim/task_open_exit.xml
copy to core/res/res/anim-land/task_open_exit.xml
index af1a4a9..8d15324 100644
--- a/core/res/res/anim/task_open_exit.xml
+++ b/core/res/res/anim-land/task_open_exit.xml
@@ -21,20 +21,23 @@
android:background="#ff000000" android:shareInterpolator="false" android:zAdjustment="normal">
<alpha android:fromAlpha="1.0" android:toAlpha="0"
android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
- android:interpolator="@interpolator/decelerate_cubic"
- android:duration="300"/>
+ android:interpolator="@interpolator/accelerate_quad"
+ android:duration="350"/>
+
+ <translate android:fromXDelta="0" android:toXDelta="-140%"
+ android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
+ android:interpolator="@interpolator/decelerate_quad"
+ android:duration="350"/>
+
<scale android:fromXScale="1.0" android:toXScale="0.6"
android:fromYScale="1.0" android:toYScale="0.6"
- android:pivotX="50%p" android:pivotY="50%p"
android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
- android:interpolator="@interpolator/accelerate_quad"
- android:duration="500" />
- <translate android:fromYDelta="0" android:toYDelta="-100%"
- android:interpolator="@interpolator/accelerate_quad"
- android:duration="500"/>
+ android:pivotX="50%p" android:pivotY="50%p"
+ android:interpolator="@interpolator/decelerate_cubic"
+ android:duration="350" />
<!-- This is needed to keep the animation running while task_open_enter completes -->
<alpha android:fromAlpha="1.0" android:toAlpha="1.0"
android:interpolator="@interpolator/accelerate_quad"
- android:duration="700" />
+ android:duration="500" />
</set>
\ No newline at end of file
diff --git a/core/res/res/anim/task_open_enter.xml b/core/res/res/anim-port/task_close_enter.xml
similarity index 68%
copy from core/res/res/anim/task_open_enter.xml
copy to core/res/res/anim-port/task_close_enter.xml
index 8341806..1806eed 100644
--- a/core/res/res/anim/task_open_enter.xml
+++ b/core/res/res/anim-port/task_close_enter.xml
@@ -19,16 +19,25 @@
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:background="#ff000000" android:shareInterpolator="false" android:zAdjustment="top">
- <scale android:fromXScale=".8" android:toXScale="1.0"
- android:fromYScale=".8" android:toYScale="1.0"
- android:pivotX="50%p" android:pivotY="50%p"
- android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
- android:interpolator="@interpolator/decelerate_quad"
- android:startOffset="400"
- android:duration="300" />
+
<alpha android:fromAlpha="0" android:toAlpha="1.0"
android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
android:interpolator="@interpolator/decelerate_quad"
- android:startOffset="400"
- android:duration="300"/>
+ android:startOffset="150"
+ android:duration="350"/>
+
+ <translate android:fromYDelta="-140%" android:toYDelta="0"
+ android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
+ android:interpolator="@interpolator/decelerate_cubic"
+ android:startOffset="150"
+ android:duration="350"/>
+
+ <scale android:fromXScale=".6" android:toXScale="1.0"
+ android:fromYScale=".6" android:toYScale="1.0"
+ android:pivotX="50%p" android:pivotY="50%p"
+ android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
+ android:interpolator="@interpolator/decelerate_quad"
+ android:startOffset="150"
+ android:duration="350" />
+
</set>
\ No newline at end of file
diff --git a/core/res/res/anim/task_open_exit.xml b/core/res/res/anim-port/task_close_exit.xml
similarity index 82%
copy from core/res/res/anim/task_open_exit.xml
copy to core/res/res/anim-port/task_close_exit.xml
index af1a4a9..958a7a2 100644
--- a/core/res/res/anim/task_open_exit.xml
+++ b/core/res/res/anim-port/task_close_exit.xml
@@ -21,20 +21,23 @@
android:background="#ff000000" android:shareInterpolator="false" android:zAdjustment="normal">
<alpha android:fromAlpha="1.0" android:toAlpha="0"
android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
- android:interpolator="@interpolator/decelerate_cubic"
- android:duration="300"/>
+ android:interpolator="@interpolator/accelerate_quad"
+ android:duration="350"/>
+
+ <translate android:fromYDelta="0" android:toYDelta="140%"
+ android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
+ android:interpolator="@interpolator/decelerate_quad"
+ android:duration="350"/>
+
<scale android:fromXScale="1.0" android:toXScale="0.6"
android:fromYScale="1.0" android:toYScale="0.6"
- android:pivotX="50%p" android:pivotY="50%p"
android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
- android:interpolator="@interpolator/accelerate_quad"
- android:duration="500" />
- <translate android:fromYDelta="0" android:toYDelta="-100%"
- android:interpolator="@interpolator/accelerate_quad"
- android:duration="500"/>
+ android:pivotX="50%p" android:pivotY="50%p"
+ android:interpolator="@interpolator/decelerate_cubic"
+ android:duration="350" />
<!-- This is needed to keep the animation running while task_open_enter completes -->
<alpha android:fromAlpha="1.0" android:toAlpha="1.0"
android:interpolator="@interpolator/accelerate_quad"
- android:duration="700" />
+ android:duration="500" />
</set>
\ No newline at end of file
diff --git a/core/res/res/anim/task_open_enter.xml b/core/res/res/anim-port/task_open_enter.xml
similarity index 68%
copy from core/res/res/anim/task_open_enter.xml
copy to core/res/res/anim-port/task_open_enter.xml
index 8341806..54a2d93 100644
--- a/core/res/res/anim/task_open_enter.xml
+++ b/core/res/res/anim-port/task_open_enter.xml
@@ -19,16 +19,25 @@
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:background="#ff000000" android:shareInterpolator="false" android:zAdjustment="top">
- <scale android:fromXScale=".8" android:toXScale="1.0"
- android:fromYScale=".8" android:toYScale="1.0"
- android:pivotX="50%p" android:pivotY="50%p"
- android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
- android:interpolator="@interpolator/decelerate_quad"
- android:startOffset="400"
- android:duration="300" />
+
<alpha android:fromAlpha="0" android:toAlpha="1.0"
android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
android:interpolator="@interpolator/decelerate_quad"
- android:startOffset="400"
- android:duration="300"/>
+ android:startOffset="150"
+ android:duration="350"/>
+
+ <translate android:fromYDelta="140%" android:toYDelta="0"
+ android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
+ android:interpolator="@interpolator/decelerate_cubic"
+ android:startOffset="150"
+ android:duration="350"/>
+
+ <scale android:fromXScale=".6" android:toXScale="1.0"
+ android:fromYScale=".6" android:toYScale="1.0"
+ android:pivotX="50%p" android:pivotY="50%p"
+ android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
+ android:interpolator="@interpolator/decelerate_quad"
+ android:startOffset="150"
+ android:duration="350" />
+
</set>
\ No newline at end of file
diff --git a/core/res/res/anim/task_open_exit.xml b/core/res/res/anim-port/task_open_exit.xml
similarity index 82%
copy from core/res/res/anim/task_open_exit.xml
copy to core/res/res/anim-port/task_open_exit.xml
index af1a4a9..18e6550 100644
--- a/core/res/res/anim/task_open_exit.xml
+++ b/core/res/res/anim-port/task_open_exit.xml
@@ -21,20 +21,23 @@
android:background="#ff000000" android:shareInterpolator="false" android:zAdjustment="normal">
<alpha android:fromAlpha="1.0" android:toAlpha="0"
android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
- android:interpolator="@interpolator/decelerate_cubic"
- android:duration="300"/>
+ android:interpolator="@interpolator/accelerate_quad"
+ android:duration="350"/>
+
+ <translate android:fromYDelta="0" android:toYDelta="-140%"
+ android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
+ android:interpolator="@interpolator/decelerate_quad"
+ android:duration="350"/>
+
<scale android:fromXScale="1.0" android:toXScale="0.6"
android:fromYScale="1.0" android:toYScale="0.6"
- android:pivotX="50%p" android:pivotY="50%p"
android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
- android:interpolator="@interpolator/accelerate_quad"
- android:duration="500" />
- <translate android:fromYDelta="0" android:toYDelta="-100%"
- android:interpolator="@interpolator/accelerate_quad"
- android:duration="500"/>
+ android:pivotX="50%p" android:pivotY="50%p"
+ android:interpolator="@interpolator/decelerate_cubic"
+ android:duration="350" />
<!-- This is needed to keep the animation running while task_open_enter completes -->
<alpha android:fromAlpha="1.0" android:toAlpha="1.0"
android:interpolator="@interpolator/accelerate_quad"
- android:duration="700" />
+ android:duration="500" />
</set>
\ No newline at end of file
diff --git a/core/res/res/anim/task_open_enter.xml b/core/res/res/anim-sw720dp/task_close_enter.xml
similarity index 68%
copy from core/res/res/anim/task_open_enter.xml
copy to core/res/res/anim-sw720dp/task_close_enter.xml
index 8341806..1806eed 100644
--- a/core/res/res/anim/task_open_enter.xml
+++ b/core/res/res/anim-sw720dp/task_close_enter.xml
@@ -19,16 +19,25 @@
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:background="#ff000000" android:shareInterpolator="false" android:zAdjustment="top">
- <scale android:fromXScale=".8" android:toXScale="1.0"
- android:fromYScale=".8" android:toYScale="1.0"
- android:pivotX="50%p" android:pivotY="50%p"
- android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
- android:interpolator="@interpolator/decelerate_quad"
- android:startOffset="400"
- android:duration="300" />
+
<alpha android:fromAlpha="0" android:toAlpha="1.0"
android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
android:interpolator="@interpolator/decelerate_quad"
- android:startOffset="400"
- android:duration="300"/>
+ android:startOffset="150"
+ android:duration="350"/>
+
+ <translate android:fromYDelta="-140%" android:toYDelta="0"
+ android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
+ android:interpolator="@interpolator/decelerate_cubic"
+ android:startOffset="150"
+ android:duration="350"/>
+
+ <scale android:fromXScale=".6" android:toXScale="1.0"
+ android:fromYScale=".6" android:toYScale="1.0"
+ android:pivotX="50%p" android:pivotY="50%p"
+ android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
+ android:interpolator="@interpolator/decelerate_quad"
+ android:startOffset="150"
+ android:duration="350" />
+
</set>
\ No newline at end of file
diff --git a/core/res/res/anim/task_open_exit.xml b/core/res/res/anim-sw720dp/task_close_exit.xml
similarity index 82%
copy from core/res/res/anim/task_open_exit.xml
copy to core/res/res/anim-sw720dp/task_close_exit.xml
index af1a4a9..958a7a2 100644
--- a/core/res/res/anim/task_open_exit.xml
+++ b/core/res/res/anim-sw720dp/task_close_exit.xml
@@ -21,20 +21,23 @@
android:background="#ff000000" android:shareInterpolator="false" android:zAdjustment="normal">
<alpha android:fromAlpha="1.0" android:toAlpha="0"
android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
- android:interpolator="@interpolator/decelerate_cubic"
- android:duration="300"/>
+ android:interpolator="@interpolator/accelerate_quad"
+ android:duration="350"/>
+
+ <translate android:fromYDelta="0" android:toYDelta="140%"
+ android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
+ android:interpolator="@interpolator/decelerate_quad"
+ android:duration="350"/>
+
<scale android:fromXScale="1.0" android:toXScale="0.6"
android:fromYScale="1.0" android:toYScale="0.6"
- android:pivotX="50%p" android:pivotY="50%p"
android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
- android:interpolator="@interpolator/accelerate_quad"
- android:duration="500" />
- <translate android:fromYDelta="0" android:toYDelta="-100%"
- android:interpolator="@interpolator/accelerate_quad"
- android:duration="500"/>
+ android:pivotX="50%p" android:pivotY="50%p"
+ android:interpolator="@interpolator/decelerate_cubic"
+ android:duration="350" />
<!-- This is needed to keep the animation running while task_open_enter completes -->
<alpha android:fromAlpha="1.0" android:toAlpha="1.0"
android:interpolator="@interpolator/accelerate_quad"
- android:duration="700" />
+ android:duration="500" />
</set>
\ No newline at end of file
diff --git a/core/res/res/anim/task_open_enter.xml b/core/res/res/anim-sw720dp/task_open_enter.xml
similarity index 68%
copy from core/res/res/anim/task_open_enter.xml
copy to core/res/res/anim-sw720dp/task_open_enter.xml
index 8341806..54a2d93 100644
--- a/core/res/res/anim/task_open_enter.xml
+++ b/core/res/res/anim-sw720dp/task_open_enter.xml
@@ -19,16 +19,25 @@
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:background="#ff000000" android:shareInterpolator="false" android:zAdjustment="top">
- <scale android:fromXScale=".8" android:toXScale="1.0"
- android:fromYScale=".8" android:toYScale="1.0"
- android:pivotX="50%p" android:pivotY="50%p"
- android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
- android:interpolator="@interpolator/decelerate_quad"
- android:startOffset="400"
- android:duration="300" />
+
<alpha android:fromAlpha="0" android:toAlpha="1.0"
android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
android:interpolator="@interpolator/decelerate_quad"
- android:startOffset="400"
- android:duration="300"/>
+ android:startOffset="150"
+ android:duration="350"/>
+
+ <translate android:fromYDelta="140%" android:toYDelta="0"
+ android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
+ android:interpolator="@interpolator/decelerate_cubic"
+ android:startOffset="150"
+ android:duration="350"/>
+
+ <scale android:fromXScale=".6" android:toXScale="1.0"
+ android:fromYScale=".6" android:toYScale="1.0"
+ android:pivotX="50%p" android:pivotY="50%p"
+ android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
+ android:interpolator="@interpolator/decelerate_quad"
+ android:startOffset="150"
+ android:duration="350" />
+
</set>
\ No newline at end of file
diff --git a/core/res/res/anim/task_open_exit.xml b/core/res/res/anim-sw720dp/task_open_exit.xml
similarity index 82%
copy from core/res/res/anim/task_open_exit.xml
copy to core/res/res/anim-sw720dp/task_open_exit.xml
index af1a4a9..18e6550 100644
--- a/core/res/res/anim/task_open_exit.xml
+++ b/core/res/res/anim-sw720dp/task_open_exit.xml
@@ -21,20 +21,23 @@
android:background="#ff000000" android:shareInterpolator="false" android:zAdjustment="normal">
<alpha android:fromAlpha="1.0" android:toAlpha="0"
android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
- android:interpolator="@interpolator/decelerate_cubic"
- android:duration="300"/>
+ android:interpolator="@interpolator/accelerate_quad"
+ android:duration="350"/>
+
+ <translate android:fromYDelta="0" android:toYDelta="-140%"
+ android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
+ android:interpolator="@interpolator/decelerate_quad"
+ android:duration="350"/>
+
<scale android:fromXScale="1.0" android:toXScale="0.6"
android:fromYScale="1.0" android:toYScale="0.6"
- android:pivotX="50%p" android:pivotY="50%p"
android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
- android:interpolator="@interpolator/accelerate_quad"
- android:duration="500" />
- <translate android:fromYDelta="0" android:toYDelta="-100%"
- android:interpolator="@interpolator/accelerate_quad"
- android:duration="500"/>
+ android:pivotX="50%p" android:pivotY="50%p"
+ android:interpolator="@interpolator/decelerate_cubic"
+ android:duration="350" />
<!-- This is needed to keep the animation running while task_open_enter completes -->
<alpha android:fromAlpha="1.0" android:toAlpha="1.0"
android:interpolator="@interpolator/accelerate_quad"
- android:duration="700" />
+ android:duration="500" />
</set>
\ No newline at end of file
diff --git a/core/res/res/anim/task_close_enter.xml b/core/res/res/anim/task_close_enter.xml
deleted file mode 100644
index dad8c1f..0000000
--- a/core/res/res/anim/task_close_enter.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-** Copyright 2009, 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.
-*/
--->
-
-<set xmlns:android="http://schemas.android.com/apk/res/android"
- android:background="#ff000000" android:shareInterpolator="false" android:zAdjustment="normal">
- <alpha android:fromAlpha="0" android:toAlpha="1"
- android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
- android:interpolator="@interpolator/decelerate_cubic"
- android:startOffset="600"
- android:duration="200"/>
- <scale android:fromXScale="0.6" android:toXScale="1.0"
- android:fromYScale="0.6" android:toYScale="1.0"
- android:pivotX="50%p" android:pivotY="50%p"
- android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
- android:interpolator="@interpolator/decelerate_cubic"
- android:startOffset="350"
- android:duration="400" />
- <translate android:fromYDelta="-100%" android:toYDelta="0"
- android:interpolator="@interpolator/decelerate_cubic"
- android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
- android:startOffset="350"
- android:duration="400"/>
-</set>
\ No newline at end of file
diff --git a/core/res/res/anim/task_close_exit.xml b/core/res/res/anim/task_close_exit.xml
deleted file mode 100644
index 485c91d..0000000
--- a/core/res/res/anim/task_close_exit.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-** Copyright 2009, 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.
-*/
--->
-
-<set xmlns:android="http://schemas.android.com/apk/res/android"
- android:background="#ff000000" android:shareInterpolator="false" android:zAdjustment="top">
- <scale android:fromXScale="1.0" android:toXScale=".8"
- android:fromYScale="1.0" android:toYScale=".8"
- android:pivotX="50%p" android:pivotY="50%p"
- android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
- android:interpolator="@interpolator/decelerate_cubic"
- android:duration="300" />
- <alpha android:fromAlpha="1.0" android:toAlpha="0"
- android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
- android:interpolator="@interpolator/decelerate_cubic"
- android:duration="300"/>
-
- <!-- This is needed to keep the animation running while task_close_enter completes -->
- <alpha android:fromAlpha="1.0" android:toAlpha="1.0"
- android:duration="600" />
-</set>
\ No newline at end of file
diff --git a/core/res/res/anim/wallpaper_open_exit.xml b/core/res/res/anim/wallpaper_open_exit.xml
index 8a2582e..905743e 100644
--- a/core/res/res/anim/wallpaper_open_exit.xml
+++ b/core/res/res/anim/wallpaper_open_exit.xml
@@ -20,13 +20,13 @@
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" android:zAdjustment="top">
<alpha android:fromAlpha="1.0" android:toAlpha="0.0"
- android:interpolator="@interpolator/decelerate_cubic"
+ android:interpolator="@interpolator/linear"
android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
android:duration="200" />
<scale android:fromXScale="1.0" android:toXScale="0.4"
android:fromYScale="1.0" android:toYScale="0.4"
android:pivotX="50%p" android:pivotY="50%p"
- android:interpolator="@interpolator/decelerate_cubic"
+ android:interpolator="@interpolator/decelerate_quad"
android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
- android:duration="300" />
+ android:duration="250" />
</set>
\ No newline at end of file
diff --git a/core/res/res/drawable-hdpi/perm_group_accounts.png b/core/res/res/drawable-hdpi/perm_group_accounts.png
new file mode 100644
index 0000000..db59ab0
--- /dev/null
+++ b/core/res/res/drawable-hdpi/perm_group_accounts.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/perm_group_affects_battery.png b/core/res/res/drawable-hdpi/perm_group_affects_battery.png
new file mode 100644
index 0000000..8ca8154
--- /dev/null
+++ b/core/res/res/drawable-hdpi/perm_group_affects_battery.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/perm_group_app_info.png b/core/res/res/drawable-hdpi/perm_group_app_info.png
new file mode 100644
index 0000000..b03e2f3
--- /dev/null
+++ b/core/res/res/drawable-hdpi/perm_group_app_info.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/perm_group_audio_settings.png b/core/res/res/drawable-hdpi/perm_group_audio_settings.png
new file mode 100644
index 0000000..4e652a8
--- /dev/null
+++ b/core/res/res/drawable-hdpi/perm_group_audio_settings.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/perm_group_bluetooth.png b/core/res/res/drawable-hdpi/perm_group_bluetooth.png
new file mode 100644
index 0000000..0f28454
--- /dev/null
+++ b/core/res/res/drawable-hdpi/perm_group_bluetooth.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/perm_group_bookmarks.png b/core/res/res/drawable-hdpi/perm_group_bookmarks.png
new file mode 100644
index 0000000..06f63445
--- /dev/null
+++ b/core/res/res/drawable-hdpi/perm_group_bookmarks.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/perm_group_calendar.png b/core/res/res/drawable-hdpi/perm_group_calendar.png
new file mode 100644
index 0000000..c0a4dfd
--- /dev/null
+++ b/core/res/res/drawable-hdpi/perm_group_calendar.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/perm_group_camera.png b/core/res/res/drawable-hdpi/perm_group_camera.png
new file mode 100644
index 0000000..cbc07b0
--- /dev/null
+++ b/core/res/res/drawable-hdpi/perm_group_camera.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/perm_group_device_alarms.png b/core/res/res/drawable-hdpi/perm_group_device_alarms.png
new file mode 100644
index 0000000..d44b9de
--- /dev/null
+++ b/core/res/res/drawable-hdpi/perm_group_device_alarms.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/perm_group_display.png b/core/res/res/drawable-hdpi/perm_group_display.png
new file mode 100644
index 0000000..e8afece
--- /dev/null
+++ b/core/res/res/drawable-hdpi/perm_group_display.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/perm_group_location.png b/core/res/res/drawable-hdpi/perm_group_location.png
new file mode 100644
index 0000000..dc2f8ef
--- /dev/null
+++ b/core/res/res/drawable-hdpi/perm_group_location.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/perm_group_messages.png b/core/res/res/drawable-hdpi/perm_group_messages.png
new file mode 100644
index 0000000..680c178
--- /dev/null
+++ b/core/res/res/drawable-hdpi/perm_group_messages.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/perm_group_microphone.png b/core/res/res/drawable-hdpi/perm_group_microphone.png
new file mode 100644
index 0000000..a73a945
--- /dev/null
+++ b/core/res/res/drawable-hdpi/perm_group_microphone.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/perm_group_network.png b/core/res/res/drawable-hdpi/perm_group_network.png
new file mode 100644
index 0000000..c750e2a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/perm_group_network.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/perm_group_personal_info.png b/core/res/res/drawable-hdpi/perm_group_personal_info.png
new file mode 100644
index 0000000..130e7ad
--- /dev/null
+++ b/core/res/res/drawable-hdpi/perm_group_personal_info.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/perm_group_phone_calls.png b/core/res/res/drawable-hdpi/perm_group_phone_calls.png
new file mode 100644
index 0000000..577855b
--- /dev/null
+++ b/core/res/res/drawable-hdpi/perm_group_phone_calls.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/perm_group_screenlock.png b/core/res/res/drawable-hdpi/perm_group_screenlock.png
new file mode 100644
index 0000000..9c5143d
--- /dev/null
+++ b/core/res/res/drawable-hdpi/perm_group_screenlock.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/perm_group_shortrange_network.png b/core/res/res/drawable-hdpi/perm_group_shortrange_network.png
new file mode 100644
index 0000000..554a4e4
--- /dev/null
+++ b/core/res/res/drawable-hdpi/perm_group_shortrange_network.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/perm_group_social_info.png b/core/res/res/drawable-hdpi/perm_group_social_info.png
new file mode 100644
index 0000000..134990b
--- /dev/null
+++ b/core/res/res/drawable-hdpi/perm_group_social_info.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/perm_group_status_bar.png b/core/res/res/drawable-hdpi/perm_group_status_bar.png
new file mode 100644
index 0000000..bda963b
--- /dev/null
+++ b/core/res/res/drawable-hdpi/perm_group_status_bar.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/perm_group_storage.png b/core/res/res/drawable-hdpi/perm_group_storage.png
new file mode 100644
index 0000000..e6b3965
--- /dev/null
+++ b/core/res/res/drawable-hdpi/perm_group_storage.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/perm_group_sync_settings.png b/core/res/res/drawable-hdpi/perm_group_sync_settings.png
new file mode 100644
index 0000000..be70866
--- /dev/null
+++ b/core/res/res/drawable-hdpi/perm_group_sync_settings.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/perm_group_system_clock.png b/core/res/res/drawable-hdpi/perm_group_system_clock.png
new file mode 100644
index 0000000..75794c3
--- /dev/null
+++ b/core/res/res/drawable-hdpi/perm_group_system_clock.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/perm_group_system_tools.png b/core/res/res/drawable-hdpi/perm_group_system_tools.png
new file mode 100644
index 0000000..3fd4385
--- /dev/null
+++ b/core/res/res/drawable-hdpi/perm_group_system_tools.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/perm_group_user_dictionary.png b/core/res/res/drawable-hdpi/perm_group_user_dictionary.png
new file mode 100644
index 0000000..98a0894
--- /dev/null
+++ b/core/res/res/drawable-hdpi/perm_group_user_dictionary.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/perm_group_user_dictionary_write.png b/core/res/res/drawable-hdpi/perm_group_user_dictionary_write.png
new file mode 100644
index 0000000..784ea0f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/perm_group_user_dictionary_write.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/perm_group_voicemail.png b/core/res/res/drawable-hdpi/perm_group_voicemail.png
new file mode 100644
index 0000000..b08b153
--- /dev/null
+++ b/core/res/res/drawable-hdpi/perm_group_voicemail.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/perm_group_wallpaper.png b/core/res/res/drawable-hdpi/perm_group_wallpaper.png
new file mode 100644
index 0000000..cf073a4
--- /dev/null
+++ b/core/res/res/drawable-hdpi/perm_group_wallpaper.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/perm_group_accounts.png b/core/res/res/drawable-mdpi/perm_group_accounts.png
new file mode 100644
index 0000000..3dd4043
--- /dev/null
+++ b/core/res/res/drawable-mdpi/perm_group_accounts.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/perm_group_affects_battery.png b/core/res/res/drawable-mdpi/perm_group_affects_battery.png
new file mode 100644
index 0000000..7291916
--- /dev/null
+++ b/core/res/res/drawable-mdpi/perm_group_affects_battery.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/perm_group_app_info.png b/core/res/res/drawable-mdpi/perm_group_app_info.png
new file mode 100644
index 0000000..8ba65bd
--- /dev/null
+++ b/core/res/res/drawable-mdpi/perm_group_app_info.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/perm_group_audio_settings.png b/core/res/res/drawable-mdpi/perm_group_audio_settings.png
new file mode 100644
index 0000000..f2f461b
--- /dev/null
+++ b/core/res/res/drawable-mdpi/perm_group_audio_settings.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/perm_group_bluetooth.png b/core/res/res/drawable-mdpi/perm_group_bluetooth.png
new file mode 100644
index 0000000..6db6fde
--- /dev/null
+++ b/core/res/res/drawable-mdpi/perm_group_bluetooth.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/perm_group_bookmarks.png b/core/res/res/drawable-mdpi/perm_group_bookmarks.png
new file mode 100644
index 0000000..f908e14
--- /dev/null
+++ b/core/res/res/drawable-mdpi/perm_group_bookmarks.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/perm_group_calendar.png b/core/res/res/drawable-mdpi/perm_group_calendar.png
new file mode 100644
index 0000000..5905973
--- /dev/null
+++ b/core/res/res/drawable-mdpi/perm_group_calendar.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/perm_group_camera.png b/core/res/res/drawable-mdpi/perm_group_camera.png
new file mode 100644
index 0000000..be1c9e6
--- /dev/null
+++ b/core/res/res/drawable-mdpi/perm_group_camera.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/perm_group_device_alarms.png b/core/res/res/drawable-mdpi/perm_group_device_alarms.png
new file mode 100644
index 0000000..48d6d6a
--- /dev/null
+++ b/core/res/res/drawable-mdpi/perm_group_device_alarms.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/perm_group_display.png b/core/res/res/drawable-mdpi/perm_group_display.png
new file mode 100644
index 0000000..e10609c
--- /dev/null
+++ b/core/res/res/drawable-mdpi/perm_group_display.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/perm_group_location.png b/core/res/res/drawable-mdpi/perm_group_location.png
new file mode 100644
index 0000000..e79ec25
--- /dev/null
+++ b/core/res/res/drawable-mdpi/perm_group_location.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/perm_group_messages.png b/core/res/res/drawable-mdpi/perm_group_messages.png
new file mode 100644
index 0000000..dfb3ba7
--- /dev/null
+++ b/core/res/res/drawable-mdpi/perm_group_messages.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/perm_group_microphone.png b/core/res/res/drawable-mdpi/perm_group_microphone.png
new file mode 100644
index 0000000..9bab315
--- /dev/null
+++ b/core/res/res/drawable-mdpi/perm_group_microphone.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/perm_group_network.png b/core/res/res/drawable-mdpi/perm_group_network.png
new file mode 100644
index 0000000..f2798a7
--- /dev/null
+++ b/core/res/res/drawable-mdpi/perm_group_network.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/perm_group_personal_info.png b/core/res/res/drawable-mdpi/perm_group_personal_info.png
new file mode 100644
index 0000000..6233a82
--- /dev/null
+++ b/core/res/res/drawable-mdpi/perm_group_personal_info.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/perm_group_phone_calls.png b/core/res/res/drawable-mdpi/perm_group_phone_calls.png
new file mode 100644
index 0000000..ff3ffd5
--- /dev/null
+++ b/core/res/res/drawable-mdpi/perm_group_phone_calls.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/perm_group_screenlock.png b/core/res/res/drawable-mdpi/perm_group_screenlock.png
new file mode 100644
index 0000000..abfe6e4
--- /dev/null
+++ b/core/res/res/drawable-mdpi/perm_group_screenlock.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/perm_group_shortrange_network.png b/core/res/res/drawable-mdpi/perm_group_shortrange_network.png
new file mode 100644
index 0000000..5d73375
--- /dev/null
+++ b/core/res/res/drawable-mdpi/perm_group_shortrange_network.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/perm_group_social_info.png b/core/res/res/drawable-mdpi/perm_group_social_info.png
new file mode 100644
index 0000000..c862f9e
--- /dev/null
+++ b/core/res/res/drawable-mdpi/perm_group_social_info.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/perm_group_status_bar.png b/core/res/res/drawable-mdpi/perm_group_status_bar.png
new file mode 100644
index 0000000..4158fa6
--- /dev/null
+++ b/core/res/res/drawable-mdpi/perm_group_status_bar.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/perm_group_storage.png b/core/res/res/drawable-mdpi/perm_group_storage.png
new file mode 100644
index 0000000..3dcfb22
--- /dev/null
+++ b/core/res/res/drawable-mdpi/perm_group_storage.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/perm_group_sync_settings.png b/core/res/res/drawable-mdpi/perm_group_sync_settings.png
new file mode 100644
index 0000000..5a0e5ff
--- /dev/null
+++ b/core/res/res/drawable-mdpi/perm_group_sync_settings.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/perm_group_system_clock.png b/core/res/res/drawable-mdpi/perm_group_system_clock.png
new file mode 100644
index 0000000..e4d5743
--- /dev/null
+++ b/core/res/res/drawable-mdpi/perm_group_system_clock.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/perm_group_system_tools.png b/core/res/res/drawable-mdpi/perm_group_system_tools.png
new file mode 100644
index 0000000..fc7337d
--- /dev/null
+++ b/core/res/res/drawable-mdpi/perm_group_system_tools.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/perm_group_user_dictionary.png b/core/res/res/drawable-mdpi/perm_group_user_dictionary.png
new file mode 100644
index 0000000..92864ba
--- /dev/null
+++ b/core/res/res/drawable-mdpi/perm_group_user_dictionary.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/perm_group_user_dictionary_write.png b/core/res/res/drawable-mdpi/perm_group_user_dictionary_write.png
new file mode 100644
index 0000000..9f48713
--- /dev/null
+++ b/core/res/res/drawable-mdpi/perm_group_user_dictionary_write.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/perm_group_voicemail.png b/core/res/res/drawable-mdpi/perm_group_voicemail.png
new file mode 100644
index 0000000..a34d689
--- /dev/null
+++ b/core/res/res/drawable-mdpi/perm_group_voicemail.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/perm_group_wallpaper.png b/core/res/res/drawable-mdpi/perm_group_wallpaper.png
new file mode 100644
index 0000000..b990e7f
--- /dev/null
+++ b/core/res/res/drawable-mdpi/perm_group_wallpaper.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/perm_group_accounts.png b/core/res/res/drawable-xhdpi/perm_group_accounts.png
new file mode 100644
index 0000000..74cd33b
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/perm_group_accounts.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/perm_group_affects_battery.png b/core/res/res/drawable-xhdpi/perm_group_affects_battery.png
new file mode 100644
index 0000000..d4a9bb5d
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/perm_group_affects_battery.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/perm_group_app_info.png b/core/res/res/drawable-xhdpi/perm_group_app_info.png
new file mode 100644
index 0000000..46089e5
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/perm_group_app_info.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/perm_group_audio_settings.png b/core/res/res/drawable-xhdpi/perm_group_audio_settings.png
new file mode 100644
index 0000000..2f7cbc3
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/perm_group_audio_settings.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/perm_group_bluetooth.png b/core/res/res/drawable-xhdpi/perm_group_bluetooth.png
new file mode 100644
index 0000000..6bbde52
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/perm_group_bluetooth.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/perm_group_bookmarks.png b/core/res/res/drawable-xhdpi/perm_group_bookmarks.png
new file mode 100644
index 0000000..1277d03
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/perm_group_bookmarks.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/perm_group_calendar.png b/core/res/res/drawable-xhdpi/perm_group_calendar.png
new file mode 100644
index 0000000..3c7f2d3
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/perm_group_calendar.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/perm_group_camera.png b/core/res/res/drawable-xhdpi/perm_group_camera.png
new file mode 100644
index 0000000..a454554
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/perm_group_camera.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/perm_group_device_alarms.png b/core/res/res/drawable-xhdpi/perm_group_device_alarms.png
new file mode 100644
index 0000000..1bb151c
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/perm_group_device_alarms.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/perm_group_display.png b/core/res/res/drawable-xhdpi/perm_group_display.png
new file mode 100644
index 0000000..9e36cf8
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/perm_group_display.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/perm_group_location.png b/core/res/res/drawable-xhdpi/perm_group_location.png
new file mode 100644
index 0000000..4c49521
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/perm_group_location.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/perm_group_messages.png b/core/res/res/drawable-xhdpi/perm_group_messages.png
new file mode 100644
index 0000000..f046d46
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/perm_group_messages.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/perm_group_microphone.png b/core/res/res/drawable-xhdpi/perm_group_microphone.png
new file mode 100644
index 0000000..bdb66e2
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/perm_group_microphone.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/perm_group_network.png b/core/res/res/drawable-xhdpi/perm_group_network.png
new file mode 100644
index 0000000..fe1adad
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/perm_group_network.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/perm_group_personal_info.png b/core/res/res/drawable-xhdpi/perm_group_personal_info.png
new file mode 100644
index 0000000..1ae418f
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/perm_group_personal_info.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/perm_group_phone_calls.png b/core/res/res/drawable-xhdpi/perm_group_phone_calls.png
new file mode 100644
index 0000000..288e15c
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/perm_group_phone_calls.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/perm_group_screenlock.png b/core/res/res/drawable-xhdpi/perm_group_screenlock.png
new file mode 100644
index 0000000..bf3ec34
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/perm_group_screenlock.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/perm_group_shortrange_network.png b/core/res/res/drawable-xhdpi/perm_group_shortrange_network.png
new file mode 100644
index 0000000..5e1e240
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/perm_group_shortrange_network.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/perm_group_social_info.png b/core/res/res/drawable-xhdpi/perm_group_social_info.png
new file mode 100644
index 0000000..2111a83
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/perm_group_social_info.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/perm_group_status_bar.png b/core/res/res/drawable-xhdpi/perm_group_status_bar.png
new file mode 100644
index 0000000..ce65380
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/perm_group_status_bar.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/perm_group_storage.png b/core/res/res/drawable-xhdpi/perm_group_storage.png
new file mode 100644
index 0000000..4cd5c9b
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/perm_group_storage.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/perm_group_sync_settings.png b/core/res/res/drawable-xhdpi/perm_group_sync_settings.png
new file mode 100644
index 0000000..24eb579
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/perm_group_sync_settings.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/perm_group_system_clock.png b/core/res/res/drawable-xhdpi/perm_group_system_clock.png
new file mode 100644
index 0000000..36d1294
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/perm_group_system_clock.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/perm_group_system_tools.png b/core/res/res/drawable-xhdpi/perm_group_system_tools.png
new file mode 100644
index 0000000..7b6cdd8
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/perm_group_system_tools.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/perm_group_user_dictionary.png b/core/res/res/drawable-xhdpi/perm_group_user_dictionary.png
new file mode 100644
index 0000000..c0106bb
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/perm_group_user_dictionary.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/perm_group_user_dictionary_write.png b/core/res/res/drawable-xhdpi/perm_group_user_dictionary_write.png
new file mode 100644
index 0000000..36bb395
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/perm_group_user_dictionary_write.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/perm_group_voicemail.png b/core/res/res/drawable-xhdpi/perm_group_voicemail.png
new file mode 100644
index 0000000..eb17a63
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/perm_group_voicemail.png
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/perm_group_wallpaper.png b/core/res/res/drawable-xhdpi/perm_group_wallpaper.png
new file mode 100644
index 0000000..be4663c
--- /dev/null
+++ b/core/res/res/drawable-xhdpi/perm_group_wallpaper.png
Binary files differ
diff --git a/core/res/res/layout-sw600dp/keyguard_screen_password_landscape.xml b/core/res/res/layout-sw600dp/keyguard_screen_password_landscape.xml
index 2495b67..ff65c61 100644
--- a/core/res/res/layout-sw600dp/keyguard_screen_password_landscape.xml
+++ b/core/res/res/layout-sw600dp/keyguard_screen_password_landscape.xml
@@ -156,8 +156,8 @@
<RelativeLayout
android:id="@+id/faceLockAreaView"
android:visibility="invisible"
- android:layout_width="512dip"
- android:layout_height="512dip"
+ android:layout_width="530dip"
+ android:layout_height="530dip"
android:layout_centerInParent="true"
android:background="@drawable/intro_bg">
diff --git a/core/res/res/layout-sw600dp/keyguard_screen_password_portrait.xml b/core/res/res/layout-sw600dp/keyguard_screen_password_portrait.xml
index 36d4a2a..60401c9 100644
--- a/core/res/res/layout-sw600dp/keyguard_screen_password_portrait.xml
+++ b/core/res/res/layout-sw600dp/keyguard_screen_password_portrait.xml
@@ -159,8 +159,8 @@
<RelativeLayout
android:id="@+id/faceLockAreaView"
android:visibility="invisible"
- android:layout_width="512dip"
- android:layout_height="512dip"
+ android:layout_width="440dip"
+ android:layout_height="440dip"
android:layout_centerInParent="true"
android:background="@drawable/intro_bg">
diff --git a/core/res/res/layout-sw600dp/keyguard_screen_sim_pin_portrait.xml b/core/res/res/layout-sw600dp/keyguard_screen_sim_pin_portrait.xml
index d8bea56..1be4462 100644
--- a/core/res/res/layout-sw600dp/keyguard_screen_sim_pin_portrait.xml
+++ b/core/res/res/layout-sw600dp/keyguard_screen_sim_pin_portrait.xml
@@ -57,12 +57,13 @@
android:background="@android:drawable/edit_text">
<!-- displays dots as user enters pin -->
- <TextView android:id="@+id/pinDisplay"
+ <EditText android:id="@+id/pinDisplay"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:maxLines="1"
android:textAppearance="?android:attr/textAppearanceLargeInverse"
+ android:textColor="@android:color/primary_text_holo_light"
android:textStyle="bold"
android:inputType="textPassword"
/>
diff --git a/core/res/res/layout-sw600dp/keyguard_screen_tab_unlock.xml b/core/res/res/layout-sw600dp/keyguard_screen_tab_unlock.xml
index 73dadb4..66cf98d 100644
--- a/core/res/res/layout-sw600dp/keyguard_screen_tab_unlock.xml
+++ b/core/res/res/layout-sw600dp/keyguard_screen_tab_unlock.xml
@@ -85,10 +85,10 @@
<com.android.internal.widget.multiwaveview.MultiWaveView
android:id="@+id/unlock_widget"
android:orientation="horizontal"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_alignParentBottom="true"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
android:layout_gravity="center"
+ android:gravity="center"
android:targetDrawables="@array/lockscreen_targets_with_camera"
android:targetDescriptions="@array/lockscreen_target_descriptions_with_camera"
@@ -99,8 +99,6 @@
android:snapMargin="@dimen/multiwaveview_snap_margin"
android:hitRadius="@dimen/multiwaveview_hit_radius"
android:rightChevronDrawable="@drawable/ic_lockscreen_chevron_right"
- android:horizontalOffset="0dip"
- android:verticalOffset="60dip"
android:feedbackCount="3"
android:vibrationDuration="20"
/>
diff --git a/core/res/res/layout-sw600dp/keyguard_screen_tab_unlock_land.xml b/core/res/res/layout-sw600dp/keyguard_screen_tab_unlock_land.xml
index 10b1ace..65b442b 100644
--- a/core/res/res/layout-sw600dp/keyguard_screen_tab_unlock_land.xml
+++ b/core/res/res/layout-sw600dp/keyguard_screen_tab_unlock_land.xml
@@ -84,10 +84,11 @@
<com.android.internal.widget.multiwaveview.MultiWaveView
android:id="@+id/unlock_widget"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
android:layout_rowSpan="7"
android:layout_gravity="center_vertical|center_horizontal"
+ android:gravity="center"
android:targetDrawables="@array/lockscreen_targets_with_camera"
android:targetDescriptions="@array/lockscreen_target_descriptions_with_camera"
@@ -100,8 +101,6 @@
android:rightChevronDrawable="@drawable/ic_lockscreen_chevron_right"
android:feedbackCount="3"
android:vibrationDuration="20"
- android:horizontalOffset="0dip"
- android:verticalOffset="0dip"
/>
<!-- emergency call button shown when sim is PUKd and tab_selector is hidden -->
diff --git a/core/res/res/layout-sw600dp/keyguard_screen_unlock_landscape.xml b/core/res/res/layout-sw600dp/keyguard_screen_unlock_landscape.xml
index 53ecbac..68499f4 100644
--- a/core/res/res/layout-sw600dp/keyguard_screen_unlock_landscape.xml
+++ b/core/res/res/layout-sw600dp/keyguard_screen_unlock_landscape.xml
@@ -127,8 +127,8 @@
<RelativeLayout
android:id="@+id/faceLockAreaView"
android:visibility="invisible"
- android:layout_width="512dip"
- android:layout_height="512dip"
+ android:layout_width="530dip"
+ android:layout_height="530dip"
android:layout_centerInParent="true"
android:background="@drawable/intro_bg">
diff --git a/core/res/res/layout-sw600dp/keyguard_screen_unlock_portrait.xml b/core/res/res/layout-sw600dp/keyguard_screen_unlock_portrait.xml
index 577668f..086757d 100644
--- a/core/res/res/layout-sw600dp/keyguard_screen_unlock_portrait.xml
+++ b/core/res/res/layout-sw600dp/keyguard_screen_unlock_portrait.xml
@@ -122,8 +122,8 @@
<RelativeLayout
android:id="@+id/faceLockAreaView"
android:visibility="invisible"
- android:layout_width="512dip"
- android:layout_height="512dip"
+ android:layout_width="440dip"
+ android:layout_height="440dip"
android:layout_centerInParent="true"
android:background="@drawable/intro_bg">
diff --git a/core/res/res/layout/app_permission_item.xml b/core/res/res/layout/app_permission_item.xml
index 1bd267f..c448bd1 100644
--- a/core/res/res/layout/app_permission_item.xml
+++ b/core/res/res/layout/app_permission_item.xml
@@ -19,37 +19,33 @@
Contains the group name and a list of permission labels under the group.
-->
-<RelativeLayout
+<view class="android.widget.AppSecurityPermissions$PermissionItemView"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
- android:layout_height="wrap_content">
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ android:background="?android:attr/selectableItemBackground">
<ImageView
android:id="@+id/perm_icon"
- android:layout_width="30dip"
- android:layout_height="30dip"
- android:layout_alignParentLeft="true"
+ android:layout_width="32dp"
+ android:layout_height="32dp"
+ android:layout_marginLeft="16dp"
+ android:layout_marginRight="8dp"
android:scaleType="fitCenter" />
-
- <TextView
- android:id="@+id/permission_group"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textStyle="bold"
- android:paddingLeft="6dip"
- android:layout_toRightOf="@id/perm_icon"
+ <ImageView
android:layout_width="wrap_content"
- android:layout_height="wrap_content" />
+ android:layout_height="match_parent"
+ android:background="?android:attr/dividerVertical" />
<TextView
- android:id="@+id/permission_list"
+ android:id="@+id/perm_name"
android:textAppearance="?android:attr/textAppearanceSmall"
- android:layout_marginTop="-4dip"
- android:paddingBottom="8dip"
- android:paddingLeft="6dip"
- android:layout_below="@id/permission_group"
- android:layout_toRightOf="@id/perm_icon"
+ android:textSize="16sp"
+ android:layout_marginLeft="8dp"
android:layout_width="wrap_content"
- android:layout_height="wrap_content" />
+ android:layout_height="wrap_content"
+ android:layout_gravity="top|left" />
-</RelativeLayout>
+</view>
diff --git a/core/res/res/layout/app_permission_item_old.xml b/core/res/res/layout/app_permission_item_old.xml
new file mode 100644
index 0000000..1bd267f
--- /dev/null
+++ b/core/res/res/layout/app_permission_item_old.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2008 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.
+-->
+
+<!--
+ Defines the layout of a single permission item.
+ Contains the group name and a list of permission labels under the group.
+-->
+
+<RelativeLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+
+ <ImageView
+ android:id="@+id/perm_icon"
+ android:layout_width="30dip"
+ android:layout_height="30dip"
+ android:layout_alignParentLeft="true"
+ android:scaleType="fitCenter" />
+
+
+ <TextView
+ android:id="@+id/permission_group"
+ android:textAppearance="?android:attr/textAppearanceMedium"
+ android:textStyle="bold"
+ android:paddingLeft="6dip"
+ android:layout_toRightOf="@id/perm_icon"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content" />
+
+ <TextView
+ android:id="@+id/permission_list"
+ android:textAppearance="?android:attr/textAppearanceSmall"
+ android:layout_marginTop="-4dip"
+ android:paddingBottom="8dip"
+ android:paddingLeft="6dip"
+ android:layout_below="@id/permission_group"
+ android:layout_toRightOf="@id/perm_icon"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content" />
+
+</RelativeLayout>
diff --git a/core/res/res/layout/app_perms_summary.xml b/core/res/res/layout/app_perms_summary.xml
index 77dbc2e..509c502 100755
--- a/core/res/res/layout/app_perms_summary.xml
+++ b/core/res/res/layout/app_perms_summary.xml
@@ -26,88 +26,17 @@
android:id="@+id/no_permissions"
android:text="@string/no_permissions"
android:textAppearance="?android:attr/textAppearanceMedium"
- android:paddingLeft="16dip"
- android:paddingRight="12dip"
+ android:paddingLeft="8dp"
+ android:paddingRight="8dp"
android:visibility="gone"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
- <!-- List view containing list of new permissions categorized by groups. -->
+ <!-- Populated with all permissions. -->
<LinearLayout
- android:id="@+id/new_perms_list"
+ android:id="@+id/perms_list"
android:orientation="vertical"
android:layout_width="match_parent"
- android:paddingLeft="16dip"
- android:paddingRight="12dip"
- android:layout_height="wrap_content" />
-
- <!-- List view containing list of dangerous permissions categorized by groups. -->
- <LinearLayout
- android:id="@+id/dangerous_perms_list"
- android:orientation="vertical"
- android:layout_width="match_parent"
- android:paddingLeft="16dip"
- android:paddingRight="12dip"
- android:layout_height="wrap_content" />
-
- <!-- Clickable area letting user display additional permissions. -->
- <LinearLayout
- android:id="@+id/show_more"
- android:orientation="vertical"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:visibility="gone"
- android:layout_marginTop="12dip"
- android:layout_marginBottom="16dip">
-
- <View
- android:layout_width="match_parent"
- android:layout_height="1dip"
- android:background="?android:attr/listDivider" />
-
- <LinearLayout
- android:orientation="horizontal"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:paddingTop="16dip"
- android:paddingBottom="12dip"
- android:paddingLeft="16dip"
- android:duplicateParentState="true"
- android:background="?android:attr/selectableItemBackground">
-
- <TextView
- android:id="@+id/show_more_text"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:duplicateParentState="true"
- android:layout_alignTop="@+id/show_more_icon"
- android:layout_gravity="center_vertical"
- android:paddingLeft="36dip"
- android:layout_weight="1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content" />
-
- <ImageView
- android:id="@id/show_more_icon"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginRight="12dip" />
-
- </LinearLayout>
-
- <View
- android:layout_width="match_parent"
- android:layout_height="1dip"
- android:background="?android:attr/listDivider" />
-
- </LinearLayout>
-
- <!-- List view containing list of permissions that aren't dangerous. -->
- <LinearLayout
- android:id="@+id/non_dangerous_perms_list"
- android:orientation="vertical"
- android:paddingLeft="16dip"
- android:paddingRight="12dip"
- android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
diff --git a/core/res/res/layout/keyguard_screen_sim_pin_portrait.xml b/core/res/res/layout/keyguard_screen_sim_pin_portrait.xml
index 6e8a645..9ca351c 100644
--- a/core/res/res/layout/keyguard_screen_sim_pin_portrait.xml
+++ b/core/res/res/layout/keyguard_screen_sim_pin_portrait.xml
@@ -57,12 +57,13 @@
android:background="@android:drawable/edit_text">
<!-- displays dots as user enters pin -->
- <TextView android:id="@+id/pinDisplay"
+ <EditText android:id="@+id/pinDisplay"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:maxLines="1"
android:textAppearance="?android:attr/textAppearanceLargeInverse"
+ android:textColor="@android:color/primary_text_holo_light"
android:textStyle="bold"
android:inputType="textPassword"
/>
diff --git a/core/res/res/layout/keyguard_screen_sim_puk_landscape.xml b/core/res/res/layout/keyguard_screen_sim_puk_landscape.xml
index 722dc26..56e6426 100644
--- a/core/res/res/layout/keyguard_screen_sim_puk_landscape.xml
+++ b/core/res/res/layout/keyguard_screen_sim_puk_landscape.xml
@@ -122,14 +122,16 @@
android:background="@android:drawable/edit_text">
<!-- displays dots as user enters new pin -->
- <TextView android:id="@+id/pinDisplay"
+ <EditText android:id="@+id/pinDisplay"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:maxLines="1"
android:textAppearance="?android:attr/textAppearanceLargeInverse"
+ android:textColor="@android:color/primary_text_holo_light"
android:textStyle="bold"
android:inputType="textPassword"
+ android:hint="@android:string/keyguard_password_enter_pin_prompt"
/>
<ImageButton android:id="@+id/pinDel"
diff --git a/core/res/res/layout/keyguard_screen_tab_unlock.xml b/core/res/res/layout/keyguard_screen_tab_unlock.xml
index 0ec8f75..3fd3023 100644
--- a/core/res/res/layout/keyguard_screen_tab_unlock.xml
+++ b/core/res/res/layout/keyguard_screen_tab_unlock.xml
@@ -129,6 +129,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
+ android:gravity="top"
android:targetDrawables="@array/lockscreen_targets_with_camera"
android:targetDescriptions="@array/lockscreen_target_descriptions_with_camera"
@@ -139,8 +140,6 @@
android:snapMargin="@dimen/multiwaveview_snap_margin"
android:hitRadius="@dimen/multiwaveview_hit_radius"
android:rightChevronDrawable="@drawable/ic_lockscreen_chevron_right"
- android:horizontalOffset="0dip"
- android:verticalOffset="60dip"
android:feedbackCount="3"
android:vibrationDuration="20"
/>
diff --git a/core/res/res/layout/keyguard_screen_tab_unlock_land.xml b/core/res/res/layout/keyguard_screen_tab_unlock_land.xml
index 294f91e..cd03c10 100644
--- a/core/res/res/layout/keyguard_screen_tab_unlock_land.xml
+++ b/core/res/res/layout/keyguard_screen_tab_unlock_land.xml
@@ -131,9 +131,10 @@
<!-- Column 2 -->
<com.android.internal.widget.multiwaveview.MultiWaveView
android:id="@+id/unlock_widget"
- android:layout_width="200dip"
+ android:layout_width="302dip"
android:layout_height="match_parent"
android:layout_rowSpan="7"
+ android:gravity="center"
android:targetDrawables="@array/lockscreen_targets_with_camera"
android:targetDescriptions="@array/lockscreen_target_descriptions_with_camera"
@@ -146,8 +147,6 @@
android:topChevronDrawable="@drawable/ic_lockscreen_chevron_up"
android:feedbackCount="3"
android:vibrationDuration="20"
- android:horizontalOffset="0dip"
- android:verticalOffset="0dip"
/>
<!-- Music transport control -->
diff --git a/core/res/res/layout/notification_template_base.xml b/core/res/res/layout/notification_template_base.xml
index 1dc6275..63d20e4 100644
--- a/core/res/res/layout/notification_template_base.xml
+++ b/core/res/res/layout/notification_template_base.xml
@@ -85,12 +85,15 @@
android:ellipsize="marquee"
android:visibility="gone"
/>
- <TextView android:id="@+id/big_text"
- android:textAppearance="@style/TextAppearance.StatusBar.EventContent"
+ <TextView android:id="@+id/overflow_title"
+ android:textAppearance="@style/TextAppearance.StatusBar.EventContent.Title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:singleLine="false"
+ android:singleLine="true"
+ android:ellipsize="marquee"
+ android:fadingEdge="horizontal"
android:visibility="gone"
+ android:layout_weight="1"
/>
<LinearLayout
android:id="@+id/line3"
@@ -136,14 +139,5 @@
android:visibility="gone"
style="?android:attr/progressBarStyleHorizontal"
/>
- <LinearLayout
- android:id="@+id/actions"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- android:visibility="gone"
- >
- <!-- actions will be added here -->
- </LinearLayout>
</LinearLayout>
</FrameLayout>
diff --git a/core/res/res/layout/notification_template_big_base.xml b/core/res/res/layout/notification_template_big_base.xml
index 5de584d..f8b24e2 100644
--- a/core/res/res/layout/notification_template_big_base.xml
+++ b/core/res/res/layout/notification_template_big_base.xml
@@ -43,106 +43,114 @@
android:gravity="center_vertical"
>
<LinearLayout
- android:id="@+id/line1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:orientation="horizontal"
+ android:minHeight="@dimen/notification_large_icon_height"
+ android:orientation="vertical"
>
- <TextView android:id="@+id/title"
- android:textAppearance="@style/TextAppearance.StatusBar.EventContent.Title"
+ <LinearLayout
+ android:id="@+id/line1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ >
+ <TextView android:id="@+id/title"
+ android:textAppearance="@style/TextAppearance.StatusBar.EventContent.Title"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:singleLine="true"
+ android:ellipsize="marquee"
+ android:fadingEdge="horizontal"
+ android:layout_weight="1"
+ />
+ <ViewStub android:id="@+id/time"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:layout_weight="0"
+ android:visibility="gone"
+ android:layout="@layout/notification_template_part_time"
+ />
+ <ViewStub android:id="@+id/chronometer"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:layout_weight="0"
+ android:visibility="gone"
+ android:layout="@layout/notification_template_part_chronometer"
+ />
+ </LinearLayout>
+ <TextView android:id="@+id/text2"
+ android:textAppearance="@style/TextAppearance.StatusBar.EventContent.Line2"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="-2dp"
+ android:layout_marginBottom="-2dp"
android:singleLine="true"
- android:ellipsize="marquee"
android:fadingEdge="horizontal"
- android:layout_weight="1"
- />
- <ViewStub android:id="@+id/time"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:layout_weight="0"
+ android:ellipsize="marquee"
android:visibility="gone"
- android:layout="@layout/notification_template_part_time"
/>
- <ViewStub android:id="@+id/chronometer"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:layout_weight="0"
- android:visibility="gone"
- android:layout="@layout/notification_template_part_chronometer"
- />
- </LinearLayout>
- <TextView android:id="@+id/text2"
- android:textAppearance="@style/TextAppearance.StatusBar.EventContent.Line2"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="-2dp"
- android:layout_marginBottom="-2dp"
- android:singleLine="true"
- android:fadingEdge="horizontal"
- android:ellipsize="marquee"
- android:visibility="gone"
- />
- <TextView android:id="@+id/big_text"
- android:textAppearance="@style/TextAppearance.StatusBar.EventContent"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:singleLine="false"
- android:visibility="gone"
- />
- <LinearLayout
- android:id="@+id/line3"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- >
- <TextView android:id="@+id/text"
+ <TextView android:id="@+id/big_text"
android:textAppearance="@style/TextAppearance.StatusBar.EventContent"
- android:layout_width="0dp"
+ android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_weight="1"
- android:layout_gravity="center"
- android:singleLine="true"
- android:ellipsize="marquee"
- android:fadingEdge="horizontal"
- />
- <TextView android:id="@+id/info"
- android:textAppearance="@style/TextAppearance.StatusBar.EventContent.Info"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:layout_weight="0"
- android:singleLine="true"
- android:gravity="center"
- android:paddingLeft="8dp"
- />
- <ImageView android:id="@+id/right_icon"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:layout_weight="0"
- android:scaleType="center"
- android:paddingLeft="8dp"
+ android:singleLine="false"
android:visibility="gone"
- android:drawableAlpha="180"
+ />
+ <LinearLayout
+ android:id="@+id/line3"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ >
+ <TextView android:id="@+id/text"
+ android:textAppearance="@style/TextAppearance.StatusBar.EventContent"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:layout_gravity="center"
+ android:singleLine="true"
+ android:ellipsize="marquee"
+ android:fadingEdge="horizontal"
+ />
+ <TextView android:id="@+id/info"
+ android:textAppearance="@style/TextAppearance.StatusBar.EventContent.Info"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:layout_weight="0"
+ android:singleLine="true"
+ android:gravity="center"
+ android:paddingLeft="8dp"
+ />
+ <ImageView android:id="@+id/right_icon"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:layout_weight="0"
+ android:scaleType="center"
+ android:paddingLeft="8dp"
+ android:visibility="gone"
+ android:drawableAlpha="180"
+ />
+ </LinearLayout>
+ <ProgressBar
+ android:id="@android:id/progress"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:visibility="gone"
+ style="?android:attr/progressBarStyleHorizontal"
/>
</LinearLayout>
- <ProgressBar
- android:id="@android:id/progress"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:visibility="gone"
- style="?android:attr/progressBarStyleHorizontal"
- />
<LinearLayout
- android:id="@+id/actions"
+ android:id="@+id/actions"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:orientation="vertical"
android:visibility="gone"
- >
- <!-- actions will be added here -->
+ >
+ <!-- actions will be added here -->
</LinearLayout>
</LinearLayout>
</FrameLayout>
diff --git a/core/res/res/layout/notification_template_big_text.xml b/core/res/res/layout/notification_template_big_text.xml
index b6d71e1..a225ab1 100644
--- a/core/res/res/layout/notification_template_big_text.xml
+++ b/core/res/res/layout/notification_template_big_text.xml
@@ -33,7 +33,6 @@
android:layout_height="wrap_content"
android:layout_gravity="fill_vertical"
android:layout_marginLeft="@dimen/notification_large_icon_width"
- android:minHeight="@dimen/notification_large_icon_height"
android:orientation="vertical"
android:paddingLeft="12dp"
android:paddingRight="12dp"
@@ -42,54 +41,82 @@
android:gravity="center_vertical"
>
<LinearLayout
- android:id="@+id/line1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:orientation="horizontal"
- >
- <TextView android:id="@+id/title"
- android:textAppearance="@style/TextAppearance.StatusBar.EventContent.Title"
+ android:minHeight="@dimen/notification_large_icon_height"
+ android:orientation="vertical"
+ >
+ <LinearLayout
+ android:id="@+id/line1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ >
+ <TextView android:id="@+id/title"
+ android:textAppearance="@style/TextAppearance.StatusBar.EventContent.Title"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:singleLine="true"
+ android:ellipsize="marquee"
+ android:fadingEdge="horizontal"
+ android:layout_weight="1"
+ />
+ <ViewStub android:id="@+id/time"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:layout_weight="0"
+ android:visibility="gone"
+ android:layout="@layout/notification_template_part_time"
+ />
+ <ViewStub android:id="@+id/chronometer"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:layout_weight="0"
+ android:visibility="gone"
+ android:layout="@layout/notification_template_part_chronometer"
+ />
+ </LinearLayout>
+ <TextView android:id="@+id/text2"
+ android:textAppearance="@style/TextAppearance.StatusBar.EventContent.Line2"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="-2dp"
+ android:layout_marginBottom="-2dp"
android:singleLine="true"
- android:ellipsize="marquee"
android:fadingEdge="horizontal"
- android:layout_weight="1"
- />
- <ViewStub android:id="@+id/time"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:layout_weight="0"
+ android:ellipsize="marquee"
android:visibility="gone"
- android:layout="@layout/notification_template_part_time"
/>
- <ViewStub android:id="@+id/chronometer"
- android:layout_width="wrap_content"
+ <TextView android:id="@+id/big_text"
+ android:textAppearance="@style/TextAppearance.StatusBar.EventContent"
+ android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:layout_weight="0"
+ android:layout_marginTop="2dp"
+ android:layout_marginBottom="2dp"
+ android:singleLine="false"
android:visibility="gone"
- android:layout="@layout/notification_template_part_chronometer"
/>
</LinearLayout>
- <TextView android:id="@+id/text2"
- android:textAppearance="@style/TextAppearance.StatusBar.EventContent.Line2"
+ <LinearLayout
+ android:id="@+id/actions"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_marginTop="-2dp"
- android:layout_marginBottom="-2dp"
+ android:orientation="vertical"
+ android:visibility="gone"
+ >
+ <!-- actions will be added here -->
+ </LinearLayout>
+ <TextView android:id="@+id/overflow_title"
+ android:textAppearance="@style/TextAppearance.StatusBar.EventContent.Title"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
android:singleLine="true"
- android:fadingEdge="horizontal"
android:ellipsize="marquee"
+ android:fadingEdge="horizontal"
android:visibility="gone"
- />
- <TextView android:id="@+id/big_text"
- android:textAppearance="@style/TextAppearance.StatusBar.EventContent"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:singleLine="false"
- android:visibility="gone"
+ android:layout_weight="1"
/>
<LinearLayout
android:id="@+id/line3"
@@ -135,13 +162,5 @@
android:visibility="gone"
style="?android:attr/progressBarStyleHorizontal"
/>
- <LinearLayout
- android:id="@+id/actions"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:visibility="gone"
- >
- <!-- actions will be added here -->
- </LinearLayout>
</LinearLayout>
</FrameLayout>
diff --git a/core/res/res/layout/notification_template_inbox.xml b/core/res/res/layout/notification_template_inbox.xml
index 82342d4..05a3d62 100644
--- a/core/res/res/layout/notification_template_inbox.xml
+++ b/core/res/res/layout/notification_template_inbox.xml
@@ -87,6 +87,8 @@
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="end"
+ android:paddingTop="4dp"
+ android:paddingBottom="4dp"
android:visibility="gone"
/>
<TextView android:id="@+id/inbox_text1"
@@ -95,6 +97,8 @@
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="end"
+ android:paddingTop="4dp"
+ android:paddingBottom="4dp"
android:visibility="gone"
/>
<TextView android:id="@+id/inbox_text2"
@@ -103,6 +107,8 @@
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="end"
+ android:paddingTop="4dp"
+ android:paddingBottom="4dp"
android:visibility="gone"
/>
<TextView android:id="@+id/inbox_text3"
@@ -111,6 +117,8 @@
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="end"
+ android:paddingTop="4dp"
+ android:paddingBottom="4dp"
android:visibility="gone"
/>
<TextView android:id="@+id/inbox_text4"
@@ -119,9 +127,30 @@
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="end"
+ android:paddingTop="4dp"
+ android:paddingBottom="4dp"
android:visibility="gone"
/>
<LinearLayout
+ android:id="@+id/actions"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:visibility="gone"
+ >
+ <!-- actions will be added here -->
+ </LinearLayout>
+ <TextView android:id="@+id/overflow_title"
+ android:textAppearance="@style/TextAppearance.StatusBar.EventContent.Title"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:singleLine="true"
+ android:ellipsize="marquee"
+ android:fadingEdge="horizontal"
+ android:visibility="gone"
+ android:layout_weight="1"
+ />
+ <LinearLayout
android:id="@+id/line3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -165,13 +194,5 @@
android:visibility="gone"
style="?android:attr/progressBarStyleHorizontal"
/>
- <LinearLayout
- android:id="@+id/actions"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:visibility="gone"
- >
- <!-- actions will be added here -->
- </LinearLayout>
</LinearLayout>
</FrameLayout>
diff --git a/core/res/res/layout/resolve_list_item.xml b/core/res/res/layout/resolve_list_item.xml
index c0404be..abeb7ba 100644
--- a/core/res/res/layout/resolve_list_item.xml
+++ b/core/res/res/layout/resolve_list_item.xml
@@ -18,39 +18,40 @@
*/
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:gravity="center_vertical"
- android:orientation="horizontal"
- android:minHeight="?android:attr/listPreferredItemHeight"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:paddingLeft="16dip"
- android:paddingRight="16dip">
+ android:gravity="center"
+ android:orientation="vertical"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:background="?android:attr/activatedBackgroundIndicator"
+ android:padding="16dp">
- <!-- Activity icon when presenting dialog -->
+ <!-- Extended activity info to distinguish between duplicate activity names -->
+ <TextView android:id="@android:id/text2"
+ android:textAppearance="?android:attr/textAppearance"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="center"
+ android:minLines="2"
+ android:maxLines="2"
+ android:paddingLeft="4dip"
+ android:paddingRight="4dip" />
+
+ <!-- Activity icon when presenting dialog
+ Size will be filled in by ResolverActivity -->
<ImageView android:id="@+id/icon"
- android:layout_width="@android:dimen/app_icon_size"
- android:layout_height="@android:dimen/app_icon_size"
- android:scaleType="fitCenter" />
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:scaleType="fitCenter" />
- <LinearLayout
- android:orientation="vertical"
- android:gravity="center_vertical"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content" >
- <!-- Activity name -->
- <TextView android:id="@android:id/text1"
- android:textAppearance="?android:attr/textAppearanceListItemSmall"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:maxLines="2"
- android:paddingLeft="16dip" />
- <!-- Extended activity info to distinguish between duplicate activity names -->
- <TextView android:id="@android:id/text2"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:maxLines="2"
- android:paddingLeft="16dip" />
- </LinearLayout>
+ <!-- Activity name -->
+ <TextView android:id="@android:id/text1"
+ android:textAppearance="?android:attr/textAppearanceSmall"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="center"
+ android:minLines="2"
+ android:maxLines="2"
+ android:paddingLeft="4dip"
+ android:paddingRight="4dip" />
</LinearLayout>
diff --git a/core/res/res/layout/resolver_grid.xml b/core/res/res/layout/resolver_grid.xml
new file mode 100644
index 0000000..4a0e84a
--- /dev/null
+++ b/core/res/res/layout/resolver_grid.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+* Copyright 2012, 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.
+*/
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:divider="?android:attr/dividerHorizontal"
+ android:showDividers="middle"
+ android:dividerPadding="0dip">
+ <FrameLayout android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_weight="1">
+ <GridView
+ android:layout_gravity="center"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:id="@+id/resolver_grid"
+ android:numColumns="4"
+ android:columnWidth="128dp"
+ android:padding="16dp"
+ android:clipToPadding="false"
+ android:scrollbarStyle="outsideOverlay" />
+ </FrameLayout>
+ <LinearLayout
+ android:id="@+id/button_bar"
+ android:visibility="gone"
+ style="?android:attr/buttonBarStyle"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ android:layoutDirection="locale"
+ android:measureWithLargestChild="true">
+ <Button android:id="@+id/button_always"
+ android:layout_width="wrap_content"
+ android:layout_gravity="right"
+ android:layout_weight="1"
+ android:maxLines="2"
+ android:minHeight="@dimen/alert_dialog_button_bar_height"
+ style="?android:attr/buttonBarButtonStyle"
+ android:textSize="14sp"
+ android:layout_height="wrap_content"
+ android:enabled="false"
+ android:text="@string/activity_resolver_use_always"
+ android:onClick="onButtonClick" />
+ <Button android:id="@+id/button_once"
+ android:layout_width="wrap_content"
+ android:layout_gravity="left"
+ android:layout_weight="1"
+ android:maxLines="2"
+ style="?android:attr/buttonBarButtonStyle"
+ android:textSize="14sp"
+ android:minHeight="@dimen/alert_dialog_button_bar_height"
+ android:layout_height="wrap_content"
+ android:enabled="false"
+ android:text="@string/activity_resolver_use_once"
+ android:onClick="onButtonClick" />
+ </LinearLayout>
+</LinearLayout>
\ No newline at end of file
diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml
index 4850bfe..7fa95c9 100644
--- a/core/res/res/values-af/strings.xml
+++ b/core/res/res/values-af/strings.xml
@@ -168,12 +168,84 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"Jou boodskappe"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"Lees en skryf jou SMS, e-pos en ander boodskappe."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Jou persoonlike inligting"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Direkte toegang tot jou kontakte en kalender wat op die tablet gestoor is."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Direkte toegang tot jou kontakte en kalender wat op die foon gestoor is."</string>
+ <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) -->
+ <skip />
+ <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) -->
+ <skip />
<string name="permgrouplab_location" msgid="635149742436692049">"Jou ligging"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"Monitor jou fisiese ligging."</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"Netwerkkommunikasie"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"Kry toegang tot verskeie netwerkfunksies."</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) -->
+ <skip />
+ <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) -->
+ <skip />
+ <!-- no translation found for permgrouplab_calendar (5863508437783683902) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_calendar (5777534316982184416) -->
+ <skip />
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) -->
+ <skip />
+ <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) -->
+ <skip />
+ <!-- no translation found for permgrouplab_voicemail (4162237145027592133) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) -->
+ <skip />
+ <!-- no translation found for permgrouplab_microphone (171539900250043464) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_microphone (7106618286905738408) -->
+ <skip />
+ <!-- no translation found for permgrouplab_camera (4820372495894586615) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_camera (2933667372289567714) -->
+ <skip />
+ <!-- no translation found for permgrouplab_appInfo (8028789762634147725) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) -->
+ <skip />
+ <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) -->
+ <skip />
+ <!-- no translation found for permgrouplab_systemClock (406535759236612992) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) -->
+ <skip />
+ <!-- no translation found for permgrouplab_statusBar (2095862568113945398) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) -->
+ <skip />
+ <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) -->
+ <skip />
<string name="permgrouplab_accounts" msgid="3359646291125325519">"Jou rekeninge"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"Kry toegang tot beskikbare rekeninge."</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Hardewarekontroles"</string>
@@ -184,6 +256,10 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Laervlak-toegang en -beheer van die stelsel."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Ontwikkelingshulpmiddels"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Kenmerke net nodig vir programontwikkelaars."</string>
+ <!-- no translation found for permgrouplab_display (4279909676036402636) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_display (6051002031933013714) -->
+ <skip />
<string name="permgrouplab_storage" msgid="1971118770546336966">"Stoor"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Gebruik die USB-berging."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Lees die SD-kaart."</string>
@@ -218,7 +294,7 @@
<string name="permlab_getTasks" msgid="6466095396623933906">"haal lopende programme op"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"Laat die program toe om inligting op te haal oor huidige en onlangse take. Kwaadwillige programme kan dalk private inligting oor ander programme ontdek."</string>
<string name="permlab_getDetailedTasks" msgid="6229468674753529501">"haal besonderhede van lopende programme op"</string>
- <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Laat die program toe om inligting op te haal oor huidige en onlangse take. Kwaadwillige programme kan dalk private inligting oor ander programme ontdek."</string>
+ <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Laat die program toe om inligting op te haal oor huidige en onlangse lopende take. Kwaadwillige programme kan dalk private inligting oor ander programme ontdek."</string>
<string name="permlab_reorderTasks" msgid="2018575526934422779">"herrangskik lopende programme"</string>
<string name="permdesc_reorderTasks" msgid="4175137612205663399">"Laat die program toe om take na die voorgrond en agtergrond te skuif. Kwaadwillige programme kan hulself sonder jou beheer na vore dwing."</string>
<string name="permlab_removeTasks" msgid="6821513401870377403">"stop lopende programme"</string>
@@ -335,18 +411,18 @@
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Laat die program toe om die stelsel se beveiligde instellingsdata te verander. Nie vir gebruik deur normale programme nie."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"verander die Google-dienstekaart"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"Laat die program toe om die Google-dienste-kaart te verander. Nie vir gebruik deur normale programme nie."</string>
- <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"laat loop as begin"</string>
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"laat loop wanneer begin"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Laat die program toe om homself te begin so gou as moontlik nadat die stelsel laai. Dit maak dat dit langer neem vir die tablet om te begin, en dit laat die foon toe om die tablet stadiger te maak omdat dit altyd loop."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Laat die program toe om homself te begin so gou as moontlik nadat die stelsel laai. Dit maak dat dit langer neem vir die foon om te begin, en dit laat die foon toe om die foon stadiger te maak omdat dit altyd loop."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"Stuur klewerige uitsending"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Laat die program toe om klewerige uitsendings te stuur, wat oorbly nadat die uitsending klaar is. Kwaadwillige programme kan die tablet stadig of onstabiel maak deurdat dit te veel geheue gebruik."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Laat die program toe om klewerige uitsendings te stuur, wat oorbly nadat die uitsending klaar is. Kwaadwillige programme kan die foon stadig of onstabiel maak deurdat dit te veel geheue gebruik."</string>
<string name="permlab_readContacts" msgid="8348481131899886131">"lees jou kontakte"</string>
- <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Laat die program toe om al die data oor jou kontakte wat op jou tablet geberg is te lees, insluitend hoe dikwels jy gebel, ge-epos of op ander maniere met spesifieke individue gekommunikeer het. Dit help met die outomatiese voltooiing van e-posadresse en ander gerieflike kenmerke. Kwaadwillige programme kan hierdie toestemming gebruik om jou kontakdata aan ander mense te stuur."</string>
- <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Laat die program toe om al die data oor jou kontakte wat op jou foon geberg is te lees, insluitend hoe dikwels jy gebel, ge-epos of op ander maniere met spesifieke individue gekommunikeer het. Dit help met die outomatiese voltooiing van e-posadresse en ander gerieflike kenmerke. Kwaadwillige programme kan hierdie toestemming gebruik om jou kontakdata aan ander mense te stuur."</string>
+ <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Laat die program toe om al die data oor jou kontakte wat op jou tablet geberg is te lees, insluitend hoe dikwels jy gebel, e-pos gestuur of op ander maniere met spesifieke individue gekommunikeer het. Dit help met die outomatiese voltooiing van e-posadresse en ander gerieflike kenmerke. Kwaadwillige programme kan hierdie toestemming gebruik om jou kontakdata aan ander mense te stuur."</string>
+ <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Laat die program toe om al die data oor jou kontakte wat op jou foon geberg is te lees, insluitend hoe dikwels jy gebel, e-pos gestuur of op ander maniere met spesifieke individue gekommunikeer het. Dit help met die outomatiese voltooiing van e-posadresse en ander gerieflike kenmerke. Kwaadwillige programme kan hierdie toestemming gebruik om jou kontakdata aan ander mense te stuur."</string>
<string name="permlab_writeContacts" msgid="5107492086416793544">"verander jou kontakte"</string>
- <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Laat die program toe om al die data oor jou kontakte wat op jou tablet geberg is te lees, insluitend hoe dikwels jy gebel, ge-epos of op ander maniere met spesifieke individue gekommunikeer het. Dit help met die outomateise voltooiing van e-posadresse en ander gerieflike kenmerke. Kwaadwillige programme kan hierdie toestemming gebruik om jou kontakdata uit te vee of te verander."</string>
- <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Laat die program toe om al die data oor jou kontakte wat op jou foon geberg is te lees, insluitend hoe dikwels jy gebel, ge-epos of op ander maniere met spesifieke individue gekommunikeer het. Dit help met die outomatiese voltooiing van e-posadresse en ander gerieflike kenmerke. Kwaadwillige programme kan hierdie toestemming gebruik om jou kontakdata uit te vee of te verander."</string>
+ <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Laat die program toe om al die data oor jou kontakte wat op jou tablet geberg is te verander, insluitend hoe dikwels jy gebel, e-pos gestuur of op ander maniere met spesifieke individue gekommunikeer het. Dit help met die outomateise voltooiing van e-posadresse en ander gerieflike kenmerke. Kwaadwillige programme kan hierdie toestemming gebruik om jou kontakdata uit te vee of te verander."</string>
+ <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Laat die program toe om al die data oor jou kontakte wat op jou foon geberg is te verander, insluitend hoe dikwels jy gebel, e-pos gestuur of op ander maniere met spesifieke individue gekommunikeer het. Dit help met die outomatiese voltooiing van e-posadresse en ander gerieflike kenmerke. Kwaadwillige programme kan hierdie toestemming gebruik om jou kontakdata uit te vee of te verander."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"lees oproeprekord"</string>
<string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Laat die program toe om jou tablet se oproeprekord, insluitende data oor inkomende en uitgaande oproepe, te lees. Kwaadwillige programme kan dit gebruik om jou data na ander mense te stuur."</string>
<string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Laat die program toe om jou foon se oproeprekord, insluitende data oor inkomende en uitgaande oproepe, te lees. Kwaadwillige programme kan dit gebruik om jou data na ander mense te stuur."</string>
@@ -396,10 +472,10 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"forseer foonherlaai"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Laat die program toe om die tablet te dwing om te herselflaai."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Laat die program toe om die foon te dwing om te herselflaai."</string>
- <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"gaan in by USB-geheue se lêerstelsel"</string>
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"gaan in by USB-berging se lêerstelsel"</string>
<string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"gaan in by SD-kaart se lêerstelsel"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Laat die program toe om lêerstelsels vir verwyderbare berging te heg of te ontheg."</string>
- <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"vee USB-geheue uit"</string>
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"vee USB-berging uit"</string>
<string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"vee SD-kaart uit"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Laat die program toe om verwyderbare geheue te formateer."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"kry inligting oor interne berging"</string>
@@ -519,12 +595,13 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Laat die program toe om enige private woorde, name en frases te lees wat die gebruiker in die gebruikerwoordeboek gestoor het."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"skryf na gebruikergedefinieerde woordeboek"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Laat die program toe om nuwe woorde in die gebruikerwoordeboek te skryf."</string>
- <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"lees jou USB-geheue se inhoud"</string>
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"lees jou USB-berging se inhoud"</string>
<string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"lees jou SD-kaart se inhoud"</string>
- <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Laat die program toe om die USB-geheue se inhoud te lees, wat foto\'s en media kan insluit."</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Laat die program toe om die USB-berging se inhoud te lees, wat foto\'s en media kan insluit."</string>
<string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Laat die program toe om die SD-kaart se inhoud te lees, wat foto\'s en media kan insluit."</string>
- <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"verander of vee die inhoud van jou USB-geheue uit"</string>
- <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"verander of vee die inhoud van jou SD-kaart uit"</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"verander of vee die inhoud van jou USB-berging uit"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
+ <skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Laat die program toe om die USB-geheue te skryf."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Laat die program toe om na die SD-kaart te skryf."</string>
<string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"verander/vee uit interne mediabergingsinhoud"</string>
@@ -702,6 +779,8 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Geen SIM-kaart in foon nie."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Steek \'n SIM-kaart in."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"Die SIM-kaart is weg of nie leesbaar nie. Steek \'n SIM-kaart in."</string>
+ <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) -->
+ <skip />
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Jou SIM-kaart is permanent gedeaktiveer."\n" Kontak jou draadlose diensverskaffer vir \'n ander SIM-kaart."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Vorigesnit-knoppie"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Volgendesnit-knoppie"</string>
@@ -779,7 +858,7 @@
<string name="autofill_emirate" msgid="2893880978835698818">"Emiraat"</string>
<string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"lees jou web-boekmerke en geskiedenis"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Laat die program toe om al die URL\'e te lees wat die blaaier besoek het, en al blaaier se boekmerke ook."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"skryf webboekmerke en geskiedenis"</string>
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"skryf webboekmerke en -geskiedenis"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Laat die program toe om die blaaier se geskiedenis of boekmerke wat op jou tablet gestoor is, te verander. Kwaadwillige programme kan dit gebruik om jou blaaier se data uit te vee of te verander."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Laat die program toe om die blaaier se geskiedenis of boekmerke wat op jou foon gestoor is, te verander. Kwaadwillige programme kan dit gebruik om jou blaaier se data uit te vee of te verander."</string>
<string name="permlab_setAlarm" msgid="1379294556362091814">"stel \'n wekker"</string>
@@ -1042,11 +1121,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Stel datum"</string>
<string name="date_time_set" msgid="5777075614321087758">"Stel"</string>
<string name="date_time_done" msgid="2507683751759308828">"Klaar"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"Verstek"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NUUT: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NUUT: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"Geen toestemmings benodig nie"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"Versteek"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"Wys alle"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"USB-geheue"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"USB gekoppel"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"Jy het via USB aan jou rekenaar gekoppel. Raak die knoppie hier onder as jy lêers tussen jou rekenaar en jou Android se USB-geheue wil kopieer."</string>
@@ -1275,4 +1353,8 @@
<string name="sending" msgid="3245653681008218030">"Stuur tans…"</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"Begin webblaaier?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"Aanvaar oproep?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml
index 003d4b3..42c88ae 100644
--- a/core/res/res/values-am/strings.xml
+++ b/core/res/res/values-am/strings.xml
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"መልዕክቶችዎ"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"ኤስ ኤም ኤስህን፣ ኢሜይልህን እና ሌላ መልዕክቶችህን አንብብና ፃፍ።"</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"የግል መረጃዎ"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"በጡባዊዎ ላይ የተከማቹ እውቂያዎች እና ቀን መቁጠሪያጋ ቀጥታ ይድረሱ።"</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"በስልኩ ላይ ወደ ተከማቸው ዕውቂያዎችዎ እና የቀን መቁጠሪያዎበቀጥታ ይድረሱ"</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"በእውቂያ ካርድህ ላይ ወደተከማቸ የአንተ መረጃ ቀጥተኛ መዳረሻ።"</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"ማህበራዊ መረጃህ"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"ወደ የእውቂያዎችህና የማህበራዊ ግንኙነቶችህ መረጃ ቀጥተኛ መዳረሻ።"</string>
<string name="permgrouplab_location" msgid="635149742436692049">"ስፍራዎ"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"ያለህበትን አካባቢ ተቆጣጠር።"</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"የአውታረ መረብ ግኑኙነት"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"የተለያዩ የአውታረ መረብ ባህሪያትን ድረስ።"</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"የድምጽ ቅንብሮች"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"የድምጽ ቅንብሮችን ቀይር።"</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"ባትሪ ላይ ተፅዕኖ ያሳርፋል"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"ባትሪ ቶሎ ሊጨርሱ የሚችሉ ባህርያትን ተጠቀም።"</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"ቀን መቁጠሪያ"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"ወደ ቀን መቁጠሪያና ክስተቶች ቀጥተኛ መዳረሻ።"</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"ዕልባቶች እና ታሪክ"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"ወደ ዕልባቶችና የአሳሽ ታሪክ ቀጥተኛ መዳረሻ።"</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"ማንቂያ"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"የማንቂያ ሰዓቱን አዘጋጅ።"</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"የድምፅ ፖስታ"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"ወደ የድምጽ ፖስታ ቀጥተኛ መዳረሻ።"</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"ማይክሮፎን"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"ድምጽ ለመቅረጽ ወደ ማይክሮፎኑ ቀጥተኛ መዳረሻ።"</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"ካሜራ"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"ለምስል ወይም ቪዲዮ ለመቅረጽ ቀጥተና መዳረሻ ለካሜራ።"</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"የመተግበሪያዎችህ መረጃ"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"በመሣሪያህ ላይ ያሉ የሌሎች መተግበሪያዎች ባህሪዎች ላይ ተፅዕኖ የማሳረፍ ችሎታ።"</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"ልጣፍ"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"የመሣሪያው ልጣፍ ቅንብሮቹን ቀይር።"</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"ሰዓት"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"የመሣሪያውን ሰዓት ወይም የሰዓት ሰቁን ቀይር።"</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"የሁኔታ አሞሌ"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"የመሣሪያ ሁኔታ አሞሌ ቅንብሮቹን ቀይር።"</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"የማመሳሰል ቅንብሮች"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"ወደ የማመሳሰል ቅንብሮች መዳረሻ።"</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"መለያዎችዎ"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">" ለተገኙት መለያዎች ድረስ"</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"የሃርድዌር ቁጥጥሮች"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"የስርዓቱ ዝቅተኛ-ደረጃ ድረስ እና ጠብቅ"</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"የግንባታ መሣሪያዎች"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"ባህሪያት ለመተግበሪያ ገንቢዎች ብቻ ያስፈልጋሉ።"</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"የሌላ መተግበሪያ ተጠቃሚ በይነገጽ"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"የሌሎች መተግበሪያዎች ተጠቃሚ በይነገጽ ተግብር።"</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"ማከማቻ"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"የUSB ማከማቻ ድረስ።"</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"SD ካርድ ድረስ"</string>
@@ -267,7 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"ትግበራ ሙሉ የመጠባበቂያ ማረጋገጫ UI ለማስነሳት ይፈቅዳል። በሌላ በማንኛውም እንዳይገለገል።"</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"ያልተፈቀደ Windows አሳይ"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"በውስጣዊ የስርዓት የተጠቃሚ በይነገፅ ለመጠቀም የተዘጋጁ መስኮቶችን ለመፍጠር ለመተግበሪያው ይፈቅዳሉ። ለመደበኛ መተግበሪያዎች አገልግሎት አይደለም።"</string>
- <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"በሌሎች መተግበሪያዎች ላይ ሳብ"</string>
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"በሌሎች መተግበሪያዎች ላይ ሳል"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"የስርዓት ማንቂያ መስኮትን ለማሳየት ለመተግበሪያው ይፈቅዳሉ፡፡ ተንኮል አዘል መተግበሪያዎች ጠቅላላውን ማሳያ ሊቆጣጠሩት ይችላሉ፡፡"</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"የሁሉንም እነማ ፍጥነት ቀይር"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"የአለም አቀፍ ተልወስዋሽ ምስሎች ፍጥነት(ፈጣን ወይም ቀርፋፋ ተልወስዋሽ ምስሎችን) በማንኛውም ጊዜ ለመለወጥ ለመተግበሪያው ይፈቅዳሉ።"</string>
@@ -335,7 +380,7 @@
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"የስርዓቱን ደህንነቱ የተጠበቀ ቅንጅቶችን ውሂብ ለመቀየር ለመተግበሪያው ይፈቅዳሉ፡፡ለመደበኛ ትግበራዎች አያስፈልግም።"</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"የGoogle አገልግሎቶች ካርታን ቀይር"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"ትግበራ የGoogle ካርታ አገልግሎቶችን ለመቀየር ይፈቅዳል።ለመደበኛ ትግበራዎች ጥቅም አይደለም።"</string>
- <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"ጅማሬ ላይ አሂድ"</string>
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"መነሻ ላይ አሂድ"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"ስርዓቱ ማስጀመር እንደጨረሰ ወዲያውኑ እራሱን እንዲያስጀምር ለመተግበሪያው ይፈቅዳሉ፡፡ ይሄ ጡባዊ ተኮን ለማስጀመር ብዙ ጊዜ ሊፈጅ ይችላል እና ሁልጊዜ በማስኬድ ጠቅላላውን ጡባዊ ተኮን እንዲቀራፈፍ ለመተግበሪያው ይፈቅዳል፡፡"</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"ወዲያውኑ ስርዓቱ ማስነሳት ሲጨርስ ራሱን እንዲያስጀምር ለመተግበሪያው ይፈቅዳሉ፡፡ ይሄ ስልኩን ለማስጀመር ብዙ ጊዜ እንዲወስድ ሊያደርገው ይችላል እና ሁልጊዜ በማስኬድ ሁሉንም ስልክ ለማንቀራፈፍ ለመተግበሪያው ይፈቅዳል፡፡"</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"ልጥፍ ዝርዝር ላክ"</string>
@@ -353,9 +398,9 @@
<string name="permlab_writeCallLog" msgid="8552045664743499354">"የጥሪ ምዝግብ ማስታወሻን ፃፍ"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"ስለ ገቢ እና ወጪ ጥሪዎችን ውሂብ ጨምሮ፣ የጡባዊተኮህን ምዝግብ ማስታወሻ ለመቀየር ለመተግበሪያው ይፈቅዳል። ይሄንን ተንኮል አዘል መተግበሪያዎች የስልክህን ምዝግብ ማስታወሻ ለመሰረዝ ወይም ለመለወጥ ሊጠቀሙበት ይችላሉ።"</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"ስለ ገቢ እና ወጪ ጥሪዎችን ውሂብ ጨምሮ፣ የስልክህን ምዝግብ ማስታወሻ ለመቀየር ለመተግበሪያው ይፈቅዳል። ይሄንን ተንኮል አዘል መተግበሪያዎች የስልክህን ምዝግብ ማስታወሻ ለመሰረዝ ወይም ለመለወጥ ሊጠቀሙበት ይችላሉ።"</string>
- <string name="permlab_readProfile" msgid="4701889852612716678">"የራስህ የእውቂያ ካርድ አንብብ"</string>
+ <string name="permlab_readProfile" msgid="4701889852612716678">"የራስህን የእውቂያ ካርድ አንብብ"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"ልክ እንደ አንተ ስም እና የዕውቂያ መረጃ ፣ በአንተ መሳሪያ ወስጥ የተከማቹ የግል መገለጫ መረጃ ለማንበብ ለመተግበሪያው ይፈቅዳሉ፡፡ይሄም ማለት ሌሎች መተግበሪያዎች ሊለዩህ ይችላሉ እና ለሌሎች የመገለጫ መረጃህን ይልካሉ፡፡"</string>
- <string name="permlab_writeProfile" msgid="907793628777397643">"የራስህ የዕውቂያ ካርድ አስተካክል"</string>
+ <string name="permlab_writeProfile" msgid="907793628777397643">"የራስህን የዕውቂያ ካርድ አስተካክል"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"ልክ እንደ አንተ ስም እና የዕውቂያ መረጃ ፣ በአንተ መሳሪያ ወስጥ የተከማቹ የግል መገለጫ መረጃ ለመለወጥ ወይም ለማከል ለመተግበሪያው ይፈቅዳሉ፡፡ይሄም ማለት ሌሎች መተግበሪያዎች ሊለዩህ ይችላሉ እና ለሌሎች የመገለጫ መረጃህን ይልካሉ፡፡"</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"የአንተን ማህበራዊ የውይይት ክፍሎች አንብብ"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">" ከአንተ ጓደኞች ማህበራዊ ዝማኔዎችን እንዲደርስባቸው እና እንዲያመሳስል ለመተግበሪያውይፈቅዳሉ፡፡ ተንኮል አዘል መተግበሪያዎች ይህን መዳረሻ ባንተና በጓደኞችህ መካከል በማህበራዊ አውታረመረቦች ያሉ የግል ተግባቦቶችን ለመዳረስ ሊጠቀሙበት ይችላሉ፡፡"</string>
@@ -452,7 +497,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"ለስልኩ ሀርድዌር ሙሉመድረስበመፍቀድእንደ ዝቅተኛ-ደረጃ አምራች ሙከራ አሂድ። የሚገኘው ስልኩ በአምራች ሙከራ ሁነታ ላይ ሲአሄድ ብቻ ነው።"</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"ልጣፍአዘጋጅ"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"የስረዓቱን ልጥፍ ለማዘጋጀት ለመተግበሪያው ይፈቅዳሉ ።"</string>
- <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"የግድግዳ ወረቀትህ መጠን አስተካክል"</string>
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"የልጣፍህን መጠን አስተካክል"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"የስርዓቱን ልጥፍ መጠንለማዘጋጀት ለመተግበሪያው ይፈቅዳሉ፡፡"</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"ስርዓትን ወደ ፋብሪካ ነባሪዎች ዳግም አስጀምር"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"ወደ ፋብሪካው ቅንብሮች ሙሉ በሙሉ ስርዓቱን ዳግም ለማስጀመር ለመተግበሪያው ይፈቅዳሉ ፤ ሁሉንም ውሂብ፣ አወቃቀር፣ እና የተጫኑ መተግበሪያዎችን በማጥፈት፡፡"</string>
@@ -519,12 +564,13 @@
<string name="permdesc_readDictionary" msgid="8977815988329283705">" ተጠቃሚው በተጠቃሚ መዝገበ ቃላት ሊያከማች የቻለውን ማንኛውም የግል ቃላት፣ ስሞች፣እና ሀረጎች ለማንበብ ለመተግበሪያው ይፈቅዳሉ፡፡"</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"በተጠቃሚ በተወሰነ መዝገበ ቃላት ፃፍ"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"በተጠቃሚ መዝገበ ቃላት ውስጥ አዲስ ቃል እንዲጽፍ ለመተግበሪያው ይፈቅዳሉ፡፡"</string>
- <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"የUSB ማከማቻህ ይዘቶችን አንብብ"</string>
- <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"የSD ካርድህ ይዘቶች አንብብ"</string>
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"የUSB ማከማቻህን ይዘቶች አንብብ"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"የSD ካርድህን ይዘቶች አንብብ"</string>
<string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"መተግበሪያው የUSB ማከማቻ ይዘቶችን እንዲያነብ ይፈቅዳል፣ ይህም ፎቶዎችና ሚዲያ ሊያካትት ይችላል።"</string>
<string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"መተግበሪያው የSD ካርድ ይዘቶችን እንዲያነብ ይፈቅዳል፣ ይህም ፎቶዎችና ሚዲያ ሊያካትት ይችላል።"</string>
- <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"የUSB ማከማቻህ ይዘቶችን ቀይር ወይም ሰርዝ"</string>
- <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"የSD ካርድህ ይዘቶችን ቀይር ወይም ሰርዝ"</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"የUSB ማከማቻህን ይዘቶች ቀይር ወይም ሰርዝ"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
+ <skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"ወደ USB ማህደረ ትውስታው ለመፃፍ ለመተግበሪያው ይፈቅዳሉ፡፡"</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"መተግበሪያውን ወደ SD ካርድ ለመፃፍ ይፈቅዳል።"</string>
<string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"የውስጥ ማህደረ መረጃ ማከማቻ ይዘቶችን ቀይር/ሰርዝ"</string>
@@ -702,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"በስልክ ውስጥ ምንም SIM ካርድ የለም።"</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"ሲም ካርድ አስገባ፡፡"</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM ካርዱ ጠፍቷል ወይም መነበብ አይችልም።እባክህ SIM ካርድ አስገባ።"</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"የማይሰራ ሲም ካርድ።"</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"SIM ካርድህ በቋሚነት ቦዝኗል።"\n" ለሌላ SIM ካርድ የገመድ አልባ አገልግሎት አቅራቢህ ጋር ተገናኝ።"</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"የቀድሞ ዝርዝር አዝራር"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"ቀጣይ ዝርዝር አዝራር"</string>
@@ -1042,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"ውሂብ አዘጋጅ"</string>
<string name="date_time_set" msgid="5777075614321087758">"አዘጋጅ"</string>
<string name="date_time_done" msgid="2507683751759308828">"ተጠናቋል"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"ነባሪ"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"አዲስ፦ "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"አዲስ፦ "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"ምንም ፍቃዶች አይጠየቁም"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"ደብቅ "</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"ሁሉንም አሳይ"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"USB ብዙ ማከማቻ"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"USB ተያይዟል"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"ከኮምፒዩተርህ ጋር በUSB በኩል አገናኝተሃል። በኮምፒዩተርህ እና በAndroid SD ማከማቻህ መካከል ፋይሎች ለመቅዳት ከፈለግህ ከዚህ በታች ያለውን አዝራር ንካ።"</string>
@@ -1275,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"በመላክ ላይ…"</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"ማሰሺያን አስነሳ?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"ጥሪ ተቀበል?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index dc9f221..35123de 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"رسائلك"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"قراءة وكتابة الرسائل القصيرة SMS والرسائل الإلكترونية والرسائل الأخرى."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"معلوماتك الشخصية"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"الدخول المباشر إلى جهات اتصالك والتقويم المخزنين على الجهاز اللوحي."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"الدخول المباشر إلى التقويم وجهات الاتصال المخزّنة على الهاتف."</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"الدخول المباشر إلى معلومات عنك، تم تخزينها في بطاقة الاتصال."</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"المعلومات الاجتماعية"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"الدخول المباشر إلى معلومات عن جهات الاتصال والاتصالات الاجتماعية."</string>
<string name="permgrouplab_location" msgid="635149742436692049">"موقعك"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"يمكنك مراقبة موقعك الفعلي."</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"اتصال الشبكة"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"يمكنك الدخول إلى ميزات متعددة عبر الشبكة."</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"إعدادات الصوت"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"تغيير إعدادات الصوت"</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"التأثير على البطارية"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"استخدم الميزات التي يمكن أن تؤدي إلى نفاد طاقة البطارية بسرعة."</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"التقويم"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"الدخول المباشر إلى التقويم والأحداث."</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"الإشارات المرجعية والسجل"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"الدخول المباشر إلى الإشارات المرجعية وسجل المتصفح."</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"المنبه"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"تعيين المنبه."</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"البريد الصوتي"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"الدخول المباشر إلى البريد الصوتي."</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"الميكروفون"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"الدخول المباشر إلى الميكروفون لتسجيل الصوت."</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"الكاميرا"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"الدخول المباشر إلى الكاميرا لالتقاط صورة أو تصوير مقطع فيديو."</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"معلومات التطبيقات"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"القدرة على التأثير في سلوك التطبيقات الأخرى بجهازك."</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"الخلفية"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"تغيير إعدادات خلفية الجهاز."</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"الساعة"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"تغيير وقت الجهاز أو المنطقة الزمنية."</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"شريط الحالة"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"تغيير إعدادات شريط حالة الجهاز."</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"إعدادات المزامنة"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"الدخول إلى إعدادات المزامنة."</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"حساباتك"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"الوصول إلى الحسابات المتاحة."</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"عناصر التحكم بالأجهزة"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"دخول المستوى الأقل والتحكم بالنظام."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"أدوات التطوير"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"الميزات مطلوبة لمطوّري التطبيقات فقط."</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"واجهة مستخدم تطبيقات أخرى"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"التأثير على واجهة المستخدم بالتطبيقات الأخرى."</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"التخزين"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"الدخول إلى وحدة تخزين USB."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"الدخول إلى بطاقة SD."</string>
@@ -218,7 +263,7 @@
<string name="permlab_getTasks" msgid="6466095396623933906">"استرداد التطبيقات التي قيد التشغيل"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"للسماح للتطبيق باسترداد معلومات حول المهام المُشغلة الحالية والحديثة. قد تكتشف التطبيقات الضارة معلومات خاصة حول التطبيقات الأخرى."</string>
<string name="permlab_getDetailedTasks" msgid="6229468674753529501">"استرداد تفاصيل التطبيقات قيد التشغيل"</string>
- <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"للسماح للتطبيق باسترداد معلومات تفصيلية حول المهام قيد التشغيل حاليًا ومؤخرًا. قد تكتشف التطبيقات الضارة معلومات خاصة حول التطبيقات الأخرى."</string>
+ <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"يسمح للتطبيق باسترداد معلومات تفصيلية حول المهام قيد التشغيل حاليًا ومؤخرًا. قد تكتشف التطبيقات الضارة معلومات خاصة حول التطبيقات الأخرى."</string>
<string name="permlab_reorderTasks" msgid="2018575526934422779">"إعادة ترتيب التطبيقات قيد التشغيل"</string>
<string name="permdesc_reorderTasks" msgid="4175137612205663399">"للسماح لتطبيق ما بنقل المهام إلى المقدمة والخلفية. قد تفرض التطبيقات الضارة نفسها إلى المقدمة بدون تحكم منك."</string>
<string name="permlab_removeTasks" msgid="6821513401870377403">"إيقاف التطبيقات التي قيد التشغيل"</string>
@@ -343,10 +388,10 @@
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"للسماح للتطبيق بإرسال بث طويل الزيارة، والذي يظل بعد انتهاء البث. قد تجعل التطبيقات الضارة الهاتف بطيئًا أو غير مستقر من خلال التسبب في استخدامه لمساحة كبيرة للغاية من الذاكرة."</string>
<string name="permlab_readContacts" msgid="8348481131899886131">"قراءة جهات الاتصال"</string>
<string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"للسماح للتطبيق بقراءة جميع البيانات عن جهات الاتصال المخزنة على جهازك اللوحي، بما في ذلك معدل الاتصال بأفراد معينين أو إرسال رسائل إلكترونية إليهم أو التواصل معهم بطرق أخرى. يفيد هذا ميزة الإكمال التلقائي لعناوين البريد الإلكتروني والميزات المناسبة الأخرى. ويمكن للتطبيقات الضارة استخدام هذا الإذن لإرسال بيانات الاتصال إلى أشخاص آخرين."</string>
- <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"للسماح للتطبيق بقراءة جميع البيانات عن جهات الاتصال المخزنة على هاتفك، بما في ذلك معدل الاتصال بأفراد معينين أو إرسال رسائل إلكترونية إليهم أو التواصل معهم بطرق أخرى. يفيد هذا ميزة الإكمال التلقائي لعناوين البريد الإلكتروني والميزات المناسبة الأخرى. ويمكن للتطبيقات الضارة استخدام هذا الإذن لإرسال بيانات الاتصال إلى أشخاص آخرين."</string>
+ <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"يسمح للتطبيق بقراءة جميع البيانات عن جهات الاتصال المخزنة على هاتفك، بما في ذلك معدل الاتصال بأفراد معينين أو إرسال رسائل إلكترونية إليهم أو التواصل معهم بطرق أخرى. يفيد هذا ميزة الإكمال التلقائي لعناوين البريد الإلكتروني والميزات المناسبة الأخرى. ويمكن للتطبيقات الضارة استخدام هذا الإذن لإرسال بيانات الاتصال إلى أشخاص آخرين."</string>
<string name="permlab_writeContacts" msgid="5107492086416793544">"تعديل جهات الاتصال"</string>
- <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"للسماح للتطبيق بتعديل البيانات عن جهات الاتصال المخزنة على جهازك اللوحي، بما في ذلك معدل الاتصال بأفراد معينين أو إرسال رسائل إلكترونية إليهم أو التواصل معهم بطرق أخرى. يفيد هذا ميزة الإكمال التلقائي لعناوين البريد الإلكتروني والميزات المناسبة الأخرى. ويمكن للتطبيقات الضارة استخدام هذا لمسح أو تعديل بيانات الاتصال."</string>
- <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"للسماح للتطبيق بتعديل البيانات عن جهات الاتصال المخزنة على هاتفك، بما في ذلك معدل الاتصال بأفراد معينين أو إرسال رسائل إلكترونية إليهم أو التواصل معهم بطرق أخرى. يفيد هذا ميزة الإكمال التلقائي لعناوين البريد الإلكتروني والميزات المناسبة الأخرى. ويمكن للتطبيقات الضارة استخدام هذا لمسح أو تعديل بيانات الاتصال."</string>
+ <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"يسمح للتطبيق بتعديل البيانات عن جهات الاتصال المخزنة على جهازك اللوحي، بما في ذلك معدل الاتصال بأفراد معينين أو إرسال رسائل إلكترونية إليهم أو التواصل معهم بطرق أخرى. يفيد هذا ميزة الإكمال التلقائي لعناوين البريد الإلكتروني والميزات المناسبة الأخرى. ويمكن للتطبيقات الضارة استخدام هذا لمسح أو تعديل بيانات الاتصال."</string>
+ <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"يسمح للتطبيق بتعديل البيانات عن جهات الاتصال المخزنة على هاتفك، بما في ذلك معدل الاتصال بأفراد معينين أو إرسال رسائل إلكترونية إليهم أو التواصل معهم بطرق أخرى. يفيد هذا ميزة الإكمال التلقائي لعناوين البريد الإلكتروني والميزات المناسبة الأخرى. ويمكن للتطبيقات الضارة استخدام هذا لمسح أو تعديل بيانات الاتصال."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"قراءة سجل المكالمات"</string>
<string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"للسماح للتطبيق بقراءة سجل المكالمات، بما في ذلك البيانات عن المكالمات الواردة والصادرة. وربما تستخدم التطبيقات الضارة هذا لإرسال بياناتك إلى أشخاص آخرين."</string>
<string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"للسماح للتطبيق بقراءة سجل مكالمات الهاتف، بما في ذلك البيانات عن المكالمات الواردة والصادرة. وربما تستخدم التطبيقات الضارة هذا لإرسال بياناتك إلى أشخاص آخرين."</string>
@@ -498,7 +543,7 @@
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"للسماح للتطبيق بعرض معلومات حول حالة WiMAX."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"تغيير حالة WiMAX"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"للسماح للتطبيق بالاتصال بشبكة WiMAX وقطع الاتصال بها."</string>
- <string name="permlab_bluetooth" msgid="6127769336339276828">"الإقران مع أجهزة بلوتوث"</string>
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"الاتصال بأجهزة بلوتوث"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"للسماح للتطبيق بعرض تهيئة جهاز البلوتوث اللوحي المحلي وإجراء اتصالات وقبولها مع الأجهزة المقترنة."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"للسماح للتطبيق بعرض تهيئة هاتف البلوتوث المحلي وإجراء اتصالات وقبولها مع الأجهزة المقترنة."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"التحكم في اتصال الحقل القريب"</string>
@@ -521,10 +566,11 @@
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"للسماح للتطبيق بكتابة كلمات جديدة في قاموس المستخدم."</string>
<string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"قراءة محتويات وحدة تخزين USB"</string>
<string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"قراءة محتويات بطاقة SD"</string>
- <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"للسماح للتطبيق بقراءة محتويات وحدة تخزين USB، والتي قد تتضمن صورًا ووسائط."</string>
- <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"للسماح للتطبيق بقراءة محتويات بطاقة SD، والتي قد تتضمن صورًا ووسائط."</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"يسمح للتطبيق بقراءة محتويات وحدة تخزين USB، والتي قد تتضمن صورًا ووسائط."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"يسمح للتطبيق بقراءة محتويات بطاقة SD، والتي قد تتضمن صورًا ووسائط."</string>
<string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"تعديل محتويات وحدة تخزين USB أو حذفها"</string>
- <string name="permlab_sdcardWrite" product="default" msgid="9084476432661578751">"تعديل محتويات بطاقة SD أو حذفها"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
+ <skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"للسماح للتطبيق بالكتابة إلى وحدة تخزين USB."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"للسماح للتطبيق بالكتابة إلى بطاقة SD."</string>
<string name="permlab_mediaStorageWrite" product="default" msgid="6859839199706879015">"تعديل/حذف محتويات وحدة تخزين الوسائط الداخلية"</string>
@@ -702,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"ليس هناك بطاقة SIM في الهاتف."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"أدخل بطاقة SIM."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"بطاقة SIM مفقودة أو غير قابلة للقراءة. أدخل بطاقة SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"بطاقة SIM غير قابلة للاستخدام."</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"تم تعطيل بطاقة SIM بشكل دائم."\n" اتصل بمقدم خدمة اللاسلكي للحصول على بطاقة SIM أخرى."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"زر المقطع الصوتي السابق"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"زر المقطع الصوتي التالي"</string>
@@ -777,9 +824,9 @@
<string name="autofill_parish" msgid="8202206105468820057">"الدائرة"</string>
<string name="autofill_area" msgid="3547409050889952423">"المنطقة"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"الإمارة"</string>
- <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"قراءة إشاراتك المرجعية والسجل"</string>
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"قراءة إشارات ويب والسجل"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"للسماح للتطبيق بقراءة جميع عناوين URL التي انتقل إليها المتصفح وجميع الإشارات المرجعية للمتصفح."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"كتابة الإشارات المرجعية والسجل في الويب"</string>
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"كتابة إشارات ويب والسجل"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"للسماح للتطبيق بتعديل سجل المتصفح أو الإشارات المرجعية المخزّنة على الجهاز اللوحي. يمكن أن تستخدم التطبيقات الضارة ذلك لمسح بيانات المتصفح أو تعديلها."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"للسماح للتطبيق بتعديل سجل المتصفح أو الإشارات المرجعية المخزّنة على الهاتف. يمكن أن تستخدم التطبيقات الضارة ذلك لمسح بيانات المتصفح أو تعديلها."</string>
<string name="permlab_setAlarm" msgid="1379294556362091814">"تعيين منبه"</string>
@@ -1042,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"تعيين التاريخ"</string>
<string name="date_time_set" msgid="5777075614321087758">"تعيين"</string>
<string name="date_time_done" msgid="2507683751759308828">"تم"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"افتراضي"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"جديد: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"جديد: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"لا أذونات مطلوبة"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"إخفاء"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"عرض الكل"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"تخزين USB كبير السعة"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"USB متصل"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"لقد اتصلت بجهاز الكمبيوتر من خلال USB. المس الزر أدناه إذا كنت تريد نسخ الملفات بين جهاز الكمبيوتر ووحدة تخزين USB في Android."</string>
@@ -1275,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"جارٍ الإرسال..."</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"تشغيل المتصفح؟"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"هل تريد قبول المكالمة؟"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml
index f68d2fd..bc50211 100644
--- a/core/res/res/values-be/strings.xml
+++ b/core/res/res/values-be/strings.xml
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"Вашыя паведамленні"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"Счытваць і запісваць вашы SMS-паведамленні, паведамленні электроннай пошты і іншыя паведамленні."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Вашая персанальная інфармацыя"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Прамы доступ да кантактаў і календара, якія захоўваюцца на планшэце."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Прамы доступ да кантактаў і календара, захаваных на тэлефоне."</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Прамы доступ да інфармацыі пра вас, якая захоўваецца на вашай кантактнай карце."</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Ваша сацыяльная інфармацыя"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Прамы доступ да інфармацыі аб вашых кантактах і сацыяльных сувязях."</string>
<string name="permgrouplab_location" msgid="635149742436692049">"Ваша месцазнаходжанне"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"Кантраляваць сваё фізічнае месцазнаходжанне."</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"Сеткавая сувязь"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"Доступ да розных функцый сеткі."</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Налады гуку"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Змена налад гуку."</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Уплывае на батарэю"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Выкарыстоўвайць магчымасці, якія могуць хутка разрадзіць батарэю."</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"Каляндар"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Прамы доступ да календара і мерапрыемстваў."</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Закладкі і гісторыя"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Прамы доступ да закладак і гісторыі браўзера."</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Будзільнік"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Усталяваць будзільнік."</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Галасавая пошта"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Прамы доступ да галасавой пошты."</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"Мікрафон"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Прамы доступ да мікрафону для запісу гуку."</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"Камера"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"Прамы доступ да камеры, каб зрабіць здымак ці зняць відэа."</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Інфармацыя аб вашых прыкладаннях"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Магчымасць уплываць на паводзіны іншых прыкладанняў на вашай прыладзе."</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Шпалеры"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Змяніць налады шпалер прылады."</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"Гадзіннік"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Змяніць час або часавы пояс прылады."</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Радок стану"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Змяніць налады прылады ў радку стану."</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Налады сінхранізацыі"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Доступ да налад сінхранізацыі."</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"Вашыя ўліковыя запісы"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"Доступ да дзеючых уліковых запісаў."</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Кіраванне апаратным забеспячэннем"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Ніжні ўзровень доступу і кіравання сістэмай."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Сродкі распрацоўкі"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Функцыi, патрэбныя толькі для распрацоўшчыкаў прыкладанняў."</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"Карыстальніцкі інтэрфейс іншага прыкладання"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"Уплыў карыстальніцкіх інтэрфейсаў іншых прыкладанняў."</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"Сховішча"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Атрымаць доступ да USB-назапашвальнiка."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Доступ да SD-карты."</string>
@@ -193,14 +238,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"Дазваляе прыкладанням быць радком стану."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"разгарнуць/згарнуць радок стану"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Дазваляе прыкладанню разгортваць ці згортваць радок стану."</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"перанакіраванне зыходзячых выклікіаў"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Дазваляе прыкладанням апрацоўваць выходныя выклікі і змяняць набіраны нумар. Шкоднасныя прыкладаннi могуць адсочваць, перанакіроўваць ці прадухіляць выходныя выклікі."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"атрыманне тэкставых паведамленняў (SMS)"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"Дазваляе прыкладанням атрымліваць і апрацоўваць SMS-паведамленні. Шкоднасныя прыкладанні могуць адсочваць вашыя паведамленні або выдаляць іх, не паказваючы вам."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"атрыманне тэкставых паведамленняў (MMS)"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"Дазваляе прыкладанням атрымліваць і апрацоўваць MMS-паведамленні. Шкоднасныя прыкладанні могуць адсочваць вашы паведамленні або выдаляць іх, не паказваючы вам."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"атрымліваць экстраныя трансляцыі"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Дазваляе прыкладанням атрымліваць і апрацоўваць экстраныя паведамленні. Гэты дазвол даступны толькі для сістэмных прыкладанняў."</string>
@@ -210,16 +252,13 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"Дазваляе прыкладанням дасылаць SMS-паведамленні. Шкоднасныя прыкладанні могуць каштаваць вам грошай з-за адпраўкі паведамленняў без вашага пацвярджэння."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"адпраўляць SMS-паведамленні без пацверджання"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Дазваляе прыкладанню дасылаць SMS-паведамленні. Шкоднасныя прыкладанні могуць каштаваць вам грошай з-за адпраўкі паведамленняў без вашага пацверджання."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"чытанне сваiх тэкставых паведамленняў (SMS ці MMS)"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Дазваляе прыкладанням чытаць SMS-паведамленні, якія захоўваюцца на планшэце ці SIM-карце. Шкоднасныя прыкладанні могуць чытаць вашы канфідэнцыйныя паведамленні."</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Дазваляе прыкладанню счытваць SMS-паведамленні, якія захоўваюцца ў тэлефоне або на SIM-карце. Шкоднасныя прыкладанні могуць чытаць вашы канфідэнцыйныя паведамленні."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"рэдагаванне тэкставых паведамленняў (SMS ці MMS)"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Дазваляе прыкладанню запісваць дадзеныя ў SMS-паведамленні, якія захоўваюцца на планшэце або на SIM-карце. Шкоднасныя прыкладанні могуць выдаляць вашы паведамленні."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Дазваляе прыкладанням запісваць дадзеныя ў SMS-паведамленні, якія захоўваюцца ў тэлефоне або на SIM-карце. Шкоднасныя прыкладанні могуць выдаляць вашы паведамленні."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"атрыманне тэкставых паведамленняў (WAP)"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Дазваляе прыкладанням атрымліваць і апрацоўваць WAP-паведамленні. Шкоднасныя прыкладанні могуць адсочваць вашы паведамленні або выдаляць іх, не паказваючы вам."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"атрымаць запушчаныя прыкладанні"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"Дазваляе прыкладанням атрымліваць інфармацыю пра бягучыя і нядаўна запушчаныя заданнi. Шкоднасныя прыкладанні могуць атрымліваць асабістую інфармацыю пра іншыя прыкладаннi."</string>
@@ -235,13 +274,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Дазваляе прыкладанню кіраваць рэжымам сумяшчальнасці экранаў іншых прыкладанняў. Шкоднаснае ПЗ можа перашкодзiць працы іншых прыкладанняў."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"уключыць адладку прыкладання"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"Дазваляе прыкладанням уключаць адладку для іншага прыкладання. Шкоднасныя прыкладанні могуць выкарыстоўваць гэта, каб спыняць іншыя прыкладанні."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"змена налад адлюстравання ў сістэме"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Дазваляе прыкладанням змяняць бягучую канфігурацыю, напрыклад мову цi агульны памер шрыфта."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"дазваляць рэжым \"У аўтамабілі\""</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"Дазваляе прыкладанню ўключаць рэжым гучнай сувязi."</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"закрыццё іншых прыкладанняў"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Дазваляе прыкладанням спыняць фонавыя працэсы іншых прыкладанняў, нават калі памяці дастаткова."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"прымусова спыніць іншыя прыкладанні"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Дазваляе прыкладанням прымусова спыняць іншыя прыкладанні."</string>
@@ -265,8 +302,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Дазваляе прыкладанням перадаваць апавяшчэнне, што паведамленне WAP PUSH не было атрымана. Шкоднасныя прыкладанні могуць выкарыстоўваць гэта, каб падрабляць атрыманне MMS-паведамлення або непрыкметна замяняць змесціва любой вэб-старонкі на шкоднасную версiю."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"абмяжоўваць колькасць запушчаных працэсаў"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Дазваляе прыкладанням кантраляваць максімальную колькасць запушчаных працэсаў. Не патрабуецца для звычайных прыкладанняў."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"прымусовае закрыццё фонавых прыкладанняў"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Дазваляе прыкладанням кантраляваць, ці будуць працэсы заўсёды завяршацца, як толькі яны пераходзяць у фонавы рэжым. Не патрабуецца для звычайных прыкладанняў."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"змяняць статыстыку батарэі"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"Дазваляе прыкладанням змяняць сабраную статыстыку акумулятара. Не для выкарыстання звычайнымі прыкладаннямі."</string>
@@ -276,8 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Дазваляе прыкладанням запускаць поўны інтэрфейс карыстальніка пацвярджэння рэзервавання. Не для выкарыстання звычайнымі прыкладаннямі."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"паказваць несанкцыянаваныя вокны"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Дазваляе прыкладанням ствараць вокны, прызначаныя для выкарыстання ўнутраным інтэрфейсам карыстальніка сістэмы. Не для выкарыстання звычайнымі прыкладаннямі."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"прыарытэт перад іншымі прыкладаннямі"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Дазваляе прыкладанням паказваць вокны апавяшчэння сістэмы. Шкоднасныя прыкладанні могуць захоплiваць увесь экран."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"зменяць агульную хуткасць анімацыі"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Дазваляе прыкладанням у любы час змяняць агульную хуткасць анімацыі (хутчэй ці павольней)."</string>
@@ -339,26 +374,22 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Дазваляе прыкладанню прадастаўляць або адмяняць пэўныя дазволы для гэтага або іншых прыкладанняў. Шкоднасныя прыкладаннi могуць выкарыстоўваць гэта, каб атрымаць доступ да функцый, якiя вы iм не прадаставiлi."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"усталяваць пажаданыя прыкладанні"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Дазваляе прыкладанням змяняць вашы пажаданыя прыкладанні. Шкоднасныя прыкладанні могуць непрыкметна змяняць запушчаныя прыкладанні, падмяняючы існуючыя прыкладанні, каб збiраць вашы асабістыя дадзеныя."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"змена сістэмных налад"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"Дазваляе прыкладаннем змяняць дадзеныя налад сістэмы. Шкоднасныя прыкладанні могуць пашкодзіць канфігурацыю вашай сістэмы."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"змяняць параметры бяспекі сістэмы"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Дазваляе прыкладанням змяняць дадзеныя параметраў бяспекі сістэмы. Не для выкарыстання звычайнымі прыкладаннямі."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"змяняць карту службаў Google"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"Дазваляе прыкладанням змяняць карту службаў Google. Не для выкарыстання звычайнымі прыкладаннямі."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"запуск пры загрузцы сістэмы"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Дазваляе прыкладанню самастойна запускацца, як толькі сістэма будзе цалкам загружана. Гэта можа павялічыць час запуску планшэту і дазволіць прыкладанню запаволіць увесь планшэт, прымушаючы яго працаваць заўсёды."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Дазваляе прыкладанням самастойна запускацца, як толькі сістэма будзе цалкам запушчана. Гэта можа павялічыць час запуску тэлефону і дазволіць прыкладанню запаволіць увесь тэлефон, прымушаючы яго працаваць заўсёды."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"адпраўляць нетэрмiновую рассылку"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Дазваляе прыкладанням дасылаць далейшыя звязаныя перадачы, якія застаюцца пасля заканчэння асноўнай перадачы. Шкоднасныя прыкладанні могуць зрабіць працу планшэта павольнай або няўстойлівай, прымушаючы яго выкарыстоўваць занадта шмат памяці."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Дазваляе прыкладанню дасылаць далейшыя звязаныя перадачы, якія застаюцца пасля заканчэння асноўнай перадачы. Шкоднасныя прыкладанні могуць зрабіць працу тэлефона павольнай або няўстойлівай, прымушаючы яго выкарыстоўваць занадта шмат памяці."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
+ <string name="permlab_readContacts" msgid="8348481131899886131">"чытанне кантактаў"</string>
<string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Дазваляе прыкладанням чытаць усе дадзеныя пра кантактах, якія захоўваюцца на планшэце, у тым ліку найбольш частыя, якiм вы тэлефанавалi, пiсалi па электроннай пошце ці ці з якiмi звязвалiся іншым спосабам. Гэта дазваляе аўтаматычна завяршаць адрасы электроннай пошты і іншыя зручныя функцыі. Шкоднасныя праграмы могуць выкарыстоўваць гэты дазвол, каб адпраўляць свае кантактныя дадзеныя іншым людзям."</string>
<string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Дазваляе прыкладанням чытаць усе дадзеныя пра кантактах, якія захоўваюцца ў тэлефоне, у тым ліку найбольш частыя, якiм вы тэлефанавалi, пiсалi па электроннай пошце ці звязвалiся з iмi іншым спосабам. Гэта дазваляе аўтаматычна завяршаць адрасы электроннай пошты і іншыя зручныя функцыі. Шкоднасныя праграмы могуць выкарыстоўваць гэты дазвол, каб адпраўляць свае кантактныя дадзеныя іншым людзям."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"змена кантактаў"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Дазваляе прыкладанням чытаць усе дадзеныя пра кантактах, якія захоўваюцца ў тэлефоне, у тым ліку найбольш частыя, якiм вы тэлефанавалi, пiсалi па электроннай пошце ці з якiмi звязвалiся іншым спосабам. Гэта дазваляе аўтаматычна завяршаць адрасы электроннай пошты і іншыя зручныя функцыі. Шкоднасныя праграмы могуць выкарыстоўваць гэты дазвол, каб адпраўляць свае кантактныя дадзеныя іншым людзям."</string>
<string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Дазваляе прыкладанням чытаць усе дадзеныя пра кантактах, якія захоўваюцца ў тэлефоне, у тым ліку найбольш частыя, якiм вы тэлефанавалi, пiсалi па электроннай пошце ці з якiмi звязвалiся іншым спосабам. Гэта дазваляе аўтаматычна завяршаць адрасы электроннай пошты і іншыя зручныя функцыі. Шкоднасныя праграмы могуць выкарыстоўваць гэты дазвол, каб адпраўляць свае кантактныя дадзеныя іншым людзям."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"чытанне гiсторыi выклікаў"</string>
@@ -367,11 +398,9 @@
<string name="permlab_writeCallLog" msgid="8552045664743499354">"запіс гiсторыi выклікаў"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Дазваляе прыкладанню змяняць гiсторыю выклiкаў планшэта, у тым лiку дадзеныя пра ўваходныя i зыходныя выклiкi. Шкоднасныя прыкладаннi могуць выкарыстоўваць гэта, каб выдаляць або змяняць гiсторыю выклікаў."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Дазваляе прыкладанням змяняць гiсторыю выклiкаў тэлефону, у тым лiку дадзеныя пра ўваходныя і зыходныя выклiкi. Шкоднасныя прыкладаннi могуць выкарыстоўваць гэта, каб выдаляць або змяняць гiсторыю выклікаў."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"чытанне сваёй кантактнай карты"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Дазваляе прыкладанням счытваць асабістую інфармацыю ў профілях, якая захоўваецца на вашай прыладзе, напрыклад, ваша імя і кантактную інфармацыю. Гэта азначае, што прыкладанне можа ідэнтыфікаваць вас і адправіць інфармацыю вашага профілю трэцім асобам."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"змена сваёй кантактнай карты"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Дазваляе прыкладанням змяняць ці дадаваць асабістую інфармацыю профіляў, захаваных на прыладзе, напрыклад ваша імя і кантактную інфармацыю. Такім чынам, іншыя прыкладанні могуць ідэнтыфікаваць вас і адпраўляць інфармацыю вашага профіля трэцім асобам."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"чытаць мой паток абнаўленняў"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Дазваляе прыкладанням атрымліваць доступ і сінхранізаваць абнаўленнi ад вас i вашых сяброў у сацыяльных сетках. З дапамогай шкоднасных прыкладанняў хтосьцi можа чытаць вашу асабiстую перапiску з сябрамі ў сацыяльных сетках."</string>
@@ -412,15 +441,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"прымусова перазагружаць тэлефон"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Дазваляе прыкладанням прымусова перазагружаць планшэт."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Дазваляе прыкладанням прымусова перазагружаць тэлефон."</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"файлавая сіст. USB-назапашв."</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"доступ да файлавай сістэмы SD-карты"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Дазваляе прыкладанням падключаць і адключаць файлавыя сістэмы для здымных назапашвальнікаў."</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"выдаленне дадзеных з USB-назапашвальніка"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"выдаленне дадзеных з SD-карты"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Дазваляе прыкладанням фарматаваць здымны назапашвальнiк."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"атрымаць інфармацыю аб унутранай памяці"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"Дазваляе прыкладанню атрымліваць інфармацыю пра ўнутраную памяць."</string>
@@ -432,8 +457,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Дазваляе прыкладанням падлучаць i адлучаць унутраную памяць."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"перайменаваць унутраную памяць"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"Дазваляе прыкладанням змяняць імя ўнутранай памяці."</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"кіраванне вібрацыяй"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"Дазваляе прыкладанням кіраваць вібрацыяй."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"кіраваць ўспышкай"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"Дазваляе прыкладанню кіраваць ліхтарыкам."</string>
@@ -458,8 +482,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"Дазваляе прыкладанням паведамляць сістэме, якая віджэты могуць быць выкарыстаны пэўнымі прыкладаннямі. Прыкладанне з гэтым дазволам можа прадастаўляць доступ да персанальных дадзеных іншым прыкладанням. Не для выкарыстання звычайнымі прыкладаннямі."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"змяняць стан тэлефона"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Дазваляе прыкладанням кіраваць тэлефоннымі функцыямі прылады. Прыкладанне з гэтым дазволам можа пераключаць сеткі, уключаць і выключаць радыё на тэлефоне і г. д., нават не паведамляючы пра гэта."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"чытанне статусу тэлефона і ідэнтыфікацыя"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"Дазваляе прыкладанням атрымліваць доступ да тэлефонных функцый прылады. Прыкладанне з гэтым дазволам можа вызначаць нумар тэлефона і серыйны нумар гэтага тэлефона ці актыўны выклік, нумар выкліканага абанента і г. д."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"прадухіліць планшэт ад пераходу ў рэжым сну"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"забараняць тэлефону пераходзіць ў рэжым сну"</string>
@@ -474,8 +497,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Запусціць як нізкаўзроўневы тэст вытворцы, што дазваляе атрымаць поўны доступ да абсталявання тэлефона. Даступна, толькі калі прылада працуе ў рэжыме тэста вытворцы."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"усталёўваць шпалеры"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"Дазваляе прыкладанням ксталёўваць сiстэмныя шпалеры."</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"наладка памеру шпалер"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Дазваляе прыкладанням задаваць падказкі па памеры сістэмных шпалер."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"скідаць сістэму да завадскіх наладаў"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"Дазваляе прыкладанню цалкам скідваць сістэму да заводскіх налад, выдаляючы ўсе дадзеныя, налады і ўсталяваныя прыкладанні."</string>
@@ -487,21 +509,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Дазваляе прыкладанню змяняць гадзінны пояс тэлефона."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"выступаць у якасці службы AccountManagerService"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"Дазваляе прыкладанням тэлефанаваць на AccountAuthenticators."</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"пошук уліковых запісаў на прыладзе"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Дазваляе прыкладанню атрымліваць спіс уліковых запісаў, вядомых планшэту."</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Дазваляе прыкладанню атрымліваць спіс уліковых запісаў, вядомых тэлефону."</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"стварэнне ўліковых запісаў і ўсталёўка пароляў"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Дазваляе прыкладанням выкарыстоўваць магчымасці сродку праверкі сапраўднасці ўліковых запісаў AccountManager, у тым ліку ствараць уліковыя запісы, атрымліваць і наладжваць паролі для іх."</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"даданне або выдаленне ўліковых запісаў"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"Дазваляе прыкладанням выконваць даданне і выдаленне ўліковых запісаў або выдаленне іх пароляў."</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"выкарыстанне ўліковых запісаў на прыладзе"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"Дазваляе прыкладанням запытваць ключы аўтэнтыфікаціі."</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"прагляд сеткавых злучэнняў"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"Дазваляе прыкладанню праглядаць стан усіх сетак."</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"поўны доступ да інтэрнэту"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Дазваляе прыкладанню ствараць сеткавыя сокеты."</string>
@@ -513,36 +530,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"Дазваляе прыкладанням змяняць стан прывязкі да сеткі."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"змяняць налады выкарыстання фонавых дадзеных"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Дазваляе прыкладанням змяняць налады выкарыстання зыходных дадзеных."</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"прагляд злучэнняў Wi-Fi"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"Дазваляе прыкладанням праглядаць інфармацыю аб стане Wi-Fi."</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"падключэнне да сеткі Wi-Fi і адключэнне ад яе"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"Дазваляе прыкладанням падлучацца і адключацца ад кропак доступу Wi-Fi і ўносіць змяненні ў наладжаныя сеткі Wi-Fi."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"дазваляе прыём Wi-Fi Multicast"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Дазваляе прыкладаннямм атрымліваць пакеты, якія не былі адрасаваня непасрэдна вашай прыладзе. Гэта можа быць карысна пры выяўленні службаў, даступных побач. У гэтым рэжыме выкарыстоўваецца больш энергіі, чым у рэжыме аднаадраснай перадачы."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"атрыманне доступу да налад прылады Bluetooth"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Дазваляе прыкладанням наладжваць лакальны планшэт Bluetooth, выяўляць і падлучаць выдаленыя прылады."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Дазваляе прыкладанням наладжваць лакальны тэлефон Bluetooth, а таксама знаходзіць выдаленыя прылады i падлучацца да ix."</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Прагляд злучэнняў WiMAX"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Дазваляе прыкладанням праглядаць інфармацыю пра стан WiMAX."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"Змяніць стан WiMAX"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Дазваляе прыкладанням падключацца і адключацца ад сеткі WiMAX."</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"падлучэнне да прылады Bluetooth"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Дазваляе прыкладанню праглядаць канфігурацыю лакальнага планшэту Bluetooth, а таксама здзяйсняць і прымаць злучэнні са спалучанымі прыладамі."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Дазваляе прыкладанню праглядаць канфігурацыю лакальнага тэлефона Bluetooth, а таксама здзяйсняць і прымаць злучэнні са спалучанымі прыладамі."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"кантроль Near Field Communication"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Дазваляе прыкладаннzv спалучацца з тэгамі, картамі і счытваючымі прыладамі Near Field Communication (NFC)."</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"адключэнне блакiроўкi экрана"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Дазваляе прыкладанням адключаць блакаванне клавіятуры і любыя сродкі абароны, звязаныя з паролем. Прыкладам гэтага з\'яўляецца адключэнне тэлефонам блакавання клавіятуры пры атрыманні ўваходнага выкліку і паўторнае ўключэнне блакавання клавіятуры, калі выклік завершаны."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"чытаць параметры сінхранізацыі"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Дазваляе прыкладанням змяняць налады сінхранізацыі, напрыклад, ці будзе сінхранізацыя ўключана для прыкладання People."</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"уключэнне ці адключэнне сінхранізацыi"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Дазваляе прыкладанню змяняць налады сінхранізацыі, напрыклад, ці будзе сінхранізацыя ўключана для прыкладання People."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"чытаць статыстыку сінхранізацыі"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"Дазваляе прыкладанню счытваць статыстыку сінхранізацыі, напрыклад гісторыю здзейсненых сінхранізацый."</string>
@@ -550,22 +560,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Дазваляе прыкладанням атрымліваць інфармацыю пра каналы, якія сінхранізуюцца ў бягучы момант."</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"запісваць каналы, на якія ёсць падпіска"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Дазваляе прыкладанням змяняць бягучыя каналы сінхранізавання. Шкоднасныя прыкладанні могуць змяняць вашы каналы сінхранізацыi."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"чытанне тэрмінаў, дададзеных у слоўнік"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Дазваляе прыкладанню счытваць любыя прыватныя словы, імёны і фразы, якія карыстальнік можа захоўваць у карыстальніцкім слоўніку."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"запісаць у карыстальніцкі слоўнік"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Дазваляе прыкладанням запісваць новыя словы ў карыстальніцкі слоўнік."</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"чытанне змесціва USB-назапашв."</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"чытанне змесціва SD-карты"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Дазваляе прыкладанням чытаць змесціва USB-назапашвальніка, які можа змяшчаць фатаграфіі і мультымедыйныя файлы."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Дазваляе прыкладанням чытаць змесціва карты памяці SD-карты, якая можа ўключаць фатаграфіі і мультымедыйныя файлы."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"зм. або выд. змес. USB-назап."</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Дазваляе прыкладаням выконваць запіс ва USB-назапашвальнік."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Дазваляе прыкладанням запісваць на SD-карту."</string>
@@ -744,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"У тэлефоне няма SIM-карты."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Усталюйце SIM-карту."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM-карта адсутнічае ці не чытаецца. Устаўце SIM-карту."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"SIM-карту немагчыма выкарыстоўваць"</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Ваша SIM-карта была адключана назаўсёды."\n" Звяжыцеся з аператарам бесправадной сувязі, каб атрымаць іншую SIM-карту."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Кнопка папярэдняй кампазiцыi"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Кнопка наступнай кампазiцыi"</string>
@@ -819,15 +824,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"Прыход"</string>
<string name="autofill_area" msgid="3547409050889952423">"Плошча"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"Эмірат"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"чытанне вэб-закладак і гісторыi"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Дазваляе прыкладанням счытваць усе URL, якія наведвалiся з браўзэра, а таксама ўсе закладкi браўзэра."</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"запіс вэб-закладак і гісторыi"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Дазваляе прыкладанням змяняць гісторыю браўзэра або закладкі, якія захоўваюцца на планшэце. Шкоднасныя прыкладанні могуць выкарыстоўваць гэту магчымасць для выдалення або змены дадзеных вашага браўзэра."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Дазваляе прыкладанням змяняць гісторыю браўзэра або закладак, захаваных у тэлефоне. Шкоднасныя прыкладанні могуць выкарыстоўваць гэту магчымасць для выдалення або змены дадзеных вашага браўзэра."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"усталёўка сігналу"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"Дазваляе прыкладанню ўсталёўваць сігнал на ўсталяваным прыкладанні будзільніка. Пэўныя прыкладанні будзільніка не могуць рэалізоўваць гэтую магчымасць."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"дадаць галасавое паведамленне"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"Дазваляе прыкладанням дадаваць паведамленні ў вашу скрыню галасавой пошты."</string>
@@ -1087,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Усталяваць дату"</string>
<string name="date_time_set" msgid="5777075614321087758">"Задаць"</string>
<string name="date_time_done" msgid="2507683751759308828">"Гатова"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"Па змаўчанні"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"НОВАЕ: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"НОВАЕ: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"Дазволу не патрабуецца"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"Не паказваць"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"Паказаць усе"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"Унiверсальны USB-назапашвальнік"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"USB падлучаны"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"Вы падлучаны да камп\'ютара праз USB. Націсніце на кнопку ніжэй, калі жадаеце капіраваць файлы з камп\'ютара на USB-назапашвальнік прылады Android і наадварот."</string>
@@ -1320,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"Адпраўка..."</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"Запусцiць браўзер?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"Прыняць выклік?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml
index 4fe74b4..90462b3 100644
--- a/core/res/res/values-bg/strings.xml
+++ b/core/res/res/values-bg/strings.xml
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"Вашите съобщения"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"Четене и запис на вашите SMS, имейли и други съобщения."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Вашите лични данни"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Пряк достъп до контактите и календара ви, съхранени в таблета."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Пряк достъп до контактите и календара ви, съхранени в телефона."</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Осъществяване на директен достъп до информация за вас, съхранявана в картата ви с данни за контакт."</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Социалната ви информация"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Осъществяване на директен достъп до информация за контактите и социалните ви връзки."</string>
<string name="permgrouplab_location" msgid="635149742436692049">"Местоположение"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"Наблюдавайте физическото си местоположение."</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"Мрежова комуникация"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"Осъществявайте достъп до различни мрежови функции."</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Настройки за звука"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Промяна на настройките за звукa."</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Оказване на влияние върху батерията"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Използване на функции, които могат бързо да изразходят батерията."</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"Календар"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Осъществяване на директен достъп до календара и събитията."</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Отметки и история"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Осъществяване на директен достъп до отметките и историята на браузъра."</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Будилник"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Навиване на будилника."</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Гласова поща"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Осъществяване на директен достъп до гласовата поща."</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"Микрофон"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Осъществяване на директен достъп до микрофона с цел записване на звук."</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"Камера"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"Осъществяване на директен достъп до камерата с цел заснемане на снимки или видеоклипове."</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Информация за приложенията ви"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Възможност за оказване на влияние върху поведението на други приложения на устройството ви."</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Тапет"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Промяна на настройките за тапет на устройството."</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"Часовник"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Промяна на часа или на часовата зона на устройството."</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Лента на състоянието"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Промяна на настройките за лентата на състоянието на устройството."</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Настройки за синхронизиране"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Осъществяване на достъп до настройките за синхронизиране."</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"Вашите профили"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"Достъп до наличните профили."</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Контрол върху хардуера"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Достъп и контрол на системата на ниско ниво."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Инструменти за програмиране"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Функции, необходими само за програмисти на приложения."</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"Други потребителски интерфейси на приложения"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"Оказване на влияниe върху потребителския интерфейс на други приложения."</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"Съхранение"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Достъп до USB хранилището."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Достъп до SD картата."</string>
@@ -193,14 +238,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"Разрешава на приложението да бъде лентата на състоянието."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"разгъване или свиване на лентата на състоянието"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Разрешава на приложението да разгъва или свива лентата на състоянието."</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"пренасочване на изходящите обаждания"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Разрешава на приложението да обработва изходящите обаждания и да променя номера, който да се набере. Злонамерените приложения могат да наблюдават, пренасочват или не допускат изходящи обаждания."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"получаване на текстови съобщения (SMS)"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"Разрешава на приложението да получава и обработва SMS съобщения. Злонамерените приложения могат да наблюдават съобщенията ви или да ги изтрият, без да ви ги покажат."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"получаване на текстови съобщения (MMS)"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"Разрешава на приложението да получава и обработва MMS съобщения. Злонамерените приложения могат да наблюдават съобщенията ви или да ги изтрият, без да ви ги покажат."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"получаване на спешни излъчвания"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Разрешава на приложението да получава и обработва спешни съобщения за излъчване. Това разрешение е налице само за системни приложения."</string>
@@ -210,16 +252,13 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"Разрешава на приложението да изпраща SMS съобщения. Злонамерените приложения могат да ви въвлекат в разходи, като изпращат съобщения без потвърждение от ваша страна."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"изпращане на SMS съобщения без потвърждаване"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Разрешава на приложението да изпраща SMS съобщения. Злонамерените приложения могат да ви въвлекат в разходи, като изпращат съобщения без потвърждение от ваша страна."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"четене на текстовите ви съобщения (SMS или MMS)"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Разрешава на приложението да чете SMS съобщенията, съхранени в таблета или в SIM картата ви. Злонамерените приложения могат да прочетат поверителните ви съобщения."</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Разрешава на приложението да чете SMS съобщенията, съхранени в телефона или в SIM картата ви. Злонамерените приложения могат да прочетат поверителните ви съобщения."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"редактиране на текстовите ви съобщения (SMS или MMS)"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Разрешава на приложението да записва в SMS съобщенията, съхранени в таблета или в SIM картата ви. Злонамерените приложения могат да изтрият съобщенията ви."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Разрешава на приложението да записва в SMS съобщенията, съхранени в телефона или в SIM картата ви. Злонамерените приложения могат да изтрият съобщенията ви."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"получаване на текстови съобщения (WAP)"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Разрешава на приложението да получава и обработва WAP съобщения. Злонамерените приложения могат да наблюдават съобщенията ви или да ги изтрият, без да ви ги покажат."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"извличане на изпълняваните приложения"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"Разрешава на приложението да извлича информация за задачите, изпълнявани понастоящем и неотдавна. Злонамерените приложения могат да открият поверителна информация за други приложения."</string>
@@ -235,13 +274,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Разрешава на приложението да контролира режима на съвместимост на екрана на други приложения. Злонамерените програми могат да нарушат поведението на други приложения."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"активиране на отстраняването на грешки в приложения"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"Разрешава на приложението да включва отстраняването на грешки за друго приложение. Злонамерените приложения могат да използват това, за да прекратят други приложения."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"промяна на настройките за екрана на системата"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Разрешава на приложението да променя текущата конфигурация, като например локала или цялостния размер на шрифта."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"активиране на мото режима"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"Разрешава на приложението да активира моторежима."</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"затваряне на другите приложения"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Разрешава на приложението да прекратява намиращи се на заден план процеси на други приложения дори и ако няма недостиг на памет."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"принудително спиране на други приложения"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Разрешава на приложението принудително да спира други приложения."</string>
@@ -265,8 +302,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Разрешава на приложението да излъчва известие, че е получено WAP PUSH съобщение. Злонамерените приложения могат да използват това, за да фалшифицират получаването на MMS или скрито да заменят съдържанието на произволна уеб страница със злонамерен вариант."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"ограничаване на броя изпълнявани процеси"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Разрешава на приложението да контролира максималния брой изпълнявани процеси. Нормалните приложения никога не се нуждаят от това."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"принудително затваряне на приложенията на заден план"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Разрешава на приложението да контролира дали дейностите винаги се завършват веднага щом минат на заден план. Нормалните приложения никога не се нуждаят от това."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"промяна на статистическите данни за батерията"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"Разрешава на приложението да променя събраните статистически данни за батерията. Не е предназначено за нормални приложения."</string>
@@ -276,8 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Разрешава на приложението да стартира потребителски интерфейс за потвърждаването на пълно резервно копие. Да не се използва от никое приложение."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"показване на неупълномощени прозорци"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Разрешава на приложението да създава прозорци, предназначени за употреба от вътрешния системен потребителски интерфейс. Не е предназначено за нормални приложения."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"изобразяване над други приложения"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Разрешава на приложението да показва прозорци за системни сигнали. Злонамерените приложения могат да завладеят целия екран."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"промяна на глобалната скорост на анимациите"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Разрешава на приложението да променя глобалната скорост на анимациите (по-бавни или по-бързи) по всяко време."</string>
@@ -339,26 +374,22 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Разрешава на приложението да дава или отменя конкретни разрешения за себе си или други приложения. Злонамерените програми могат да използват това, за да осъществяват неразрешен от вас достъп до функции."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"задаване на предпочитани приложения"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Разрешава на приложението да променя предпочитаните ви приложения. Злонамерените приложения могат скрито да променят приложенията, които се изпълняват, като ги фалшифицират, за да се сдобият с ваши лични данни."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"промяна на системните настройки"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"Разрешава на приложението да променя данните на настройките на системата. Злонамерените приложения могат да повредят конфигурацията на системата ви."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"промяна на защитените системни настройки"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Разрешава на приложението да променя данните на защитените настройки на системата. Не е предназначено за нормални приложения."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"промяна на картата на услугите на Google"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"Разрешава на приложението да променя картата на услугите на Google. Не е предназначено за нормални приложения."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"стартиране при пускане"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Разрешава на приложението да се стартира веднага щом системата завърши зареждането си. Това може да доведе до по-бавно стартиране на таблета и да позволи на приложението да забави таблета като цяло, тъй като се изпълнява постоянно."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Разрешава на приложението да се стартира веднага щом системата завърши зареждането си. Това може да доведе до по-бавно стартиране на телефона и да позволи на приложението да забави телефона като цяло, тъй като се изпълнява постоянно."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"изпращане на оставащи излъчвания"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Разрешава на приложението да изпраща оставащи излъчвания, които се запазват след края на излъчването. Злонамерените приложения могат да причинят бавна или нестабилна работа на таблета, като го накарат да използва твърде много памет."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Разрешава на приложението да изпраща оставащи излъчвания, които се запазват след края на излъчването. Злонамерените приложения могат да причинят бавна или нестабилна работа на телефона, като го накарат да използва твърде много памет."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
+ <string name="permlab_readContacts" msgid="8348481131899886131">"четене на контактите ви"</string>
<string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Разрешава на приложението да чете всички данни за съхранените на таблета ви контакти, включително честотата на обаждане, изпращане на имейли или общуване по друг начин с конкретни лица. Това помага при автоматичното довършване на имейл адресите и на други удобни функции. Злонамерените приложения могат да използват това разрешение, за да изпращат данните за контактите ви на други хора."</string>
<string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Разрешава на приложението да чете всички данни за съхранените на телефона ви контакти, включително честотата на обаждане, изпращане на имейли или общуване по друг начин с конкретни лица. Това помага при автоматичното довършване на имейл адресите и на други удобни функции. Злонамерените приложения могат да използват това разрешение, за да изпращат данните за контактите ви на други хора."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"промяна на контактите ви"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Разрешава на приложението да променя данните за съхранените на таблета ви контакти, включително честотата на обаждане, изпращане на имейли или общуване по друг начин с конкретни лица. Това помага при автоматичното довършване на имейл адресите и на други удобни функции. Злонамерените приложения могат да използват това, за да изтриват или променят данните за контактите ви."</string>
<string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Разрешава на приложението да променя данните за съхранените на телефона ви контакти, включително честотата на обаждане, изпращане на имейли или общуване по друг начин с конкретни лица. Това помага при автоматичното довършване на имейл адресите и на други удобни функции. Злонамерените приложения могат да използват това, за да изтриват или променят данните за контактите ви."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"четене на списъка с обаждания"</string>
@@ -367,11 +398,9 @@
<string name="permlab_writeCallLog" msgid="8552045664743499354">"запис на списъка с обаждания"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Разрешава на приложението да променя списъка с обаждания на таблета ви, включително данните за входящите и изходящите обаждания. Злонамерените приложения могат да използват това, за да изтрият или променят този списък."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Разрешава на приложението да променя списъка с обаждания на телефона ви, включително данните за входящите и изходящите обаждания. Злонамерените приложения могат да използват това, за да изтрият или променят този списък."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"четене на собств. ви карт. с данни за контакт"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Разрешава на приложението да чете информацията от личния потребителски профил, съхранена на устройството ви, например вашето име и данни за връзка. Това означава, че приложението може да ви идентифицира и да изпраща информацията за потребителския ви профил на други хора."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"промяна на собств. ви карт. с данни за контакт"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Разрешава на приложението да променя или добавя към личния потребителски профил информация, съхранена на устройството ви, като например вашето име и данни за връзка. Това означава, че приложението може да ви идентифицира и да изпраща информацията за потребителския ви профил на други хора."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"четене на социалния ви поток"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Разрешава на приложението да осъществява достъп и да синхронизира социални актуализации от вас и приятелите ви. Злонамерените приложения могат да използват това, за да четат частни съобщения помежду ви в социалните мрежи."</string>
@@ -412,15 +441,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"принудително рестартиране на телефона"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Разрешава на приложението принудително да рестартира таблета."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Разрешава на приложението принудително да рестартира телефона."</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"достъп до файл. система на USB хран."</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"достъп до файловата система на SD картата"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Разрешава на приложението да свързва или спира файлови системи за изваждащо се хранилище."</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"изтриване на USB хранилището"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"изтриване на SD картата"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Разрешава на приложението да форматира изваждащо се хранилище."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"получаване на информация за вътрешното хранилище"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"Разрешава на приложението да получава информация за вътрешното хранилище."</string>
@@ -432,8 +457,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Разрешава на приложението да свързва или спира вътрешното хранилище."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"преименуване на вътрешно хранилище"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"Разрешава на приложението да преименува вътрешното хранилище."</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"контролиране на вибрирането"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"Разрешава на приложението да контролира устройството за вибрация."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"контролиране на фенерчето"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"Разрешава на приложението да контролира фенерчето."</string>
@@ -458,8 +482,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"Разрешава на приложението да укаже на системата кои приспособления от кои приложения могат да се използват. Приложение с това разрешение може да предостави на други приложения достъп до лични данни. Не е предназначено за нормални приложения."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"промяна на състоянието на телефона"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Разрешава на приложението да контролира телефонните функции на устройството. Приложение с такова разрешение може да превключва между мрежи, да включва и изключва радиомодула на телефона и други подобни, без изобщо да ви известява."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"четене на състоянието и идентификационните данни на телефона"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"Разрешава на приложението достъп до телефонните функции на устройството. Приложение с такова разрешение може да определи телефонния и серийния номер на телефона, дали обаждането е активно, с кой номер е обаждането и други подобни."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"предотвратяване на спящия режим на таблета"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"предотвратява спящ режим на телефона"</string>
@@ -474,8 +497,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Изпълнява се като тест на ниско ниво от производителя, което позволява пълен достъп до хардуера на телефона. Налице е само когато телефонът работи в режим на тест от производителя."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"задаване на тапет"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"Разрешава на приложението да задава системния тапет."</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"коригиране на размера на тапета ви"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Разрешава на приложението да задава подсказките за размерите на системния тапет."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"възстановяване на системата до стандартните фабрични настройки"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"Разрешава на приложението изцяло да възстанови системата до фабричните настройки, изтривайки всички данни, конфигурацията и инсталираните приложения."</string>
@@ -487,21 +509,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Разрешава на приложението да променя часовата зона на телефона."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"действие като AccountManagerService"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"Разрешава на приложението да извиква модули AccountAuthenticator."</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"намиране на профили на устройството"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Разрешава на приложението да получава списъка с профили, известни на таблета."</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Разрешава на приложението да получава списъка с профили, известни на телефона."</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"създаване на профили и задаване на пароли"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Разрешава на приложението да използва възможностите на AccountManager за удостоверяване на профили, включително създаване на профили и получаване и задаване на паролите им."</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"добавяне или премахване на профили"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"Разрешава на приложението да извършва операции като добавяне и премахване на профили и изтриване на паролите им."</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"използване на профилите на устройството"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"Разрешава на приложението да подава заявка за означения за удостоверяване."</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"преглед на връзките с мрежата"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"Разрешава на приложението да вижда състоянието на всички мрежи."</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"пълен достъп до интернет"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Разрешава на приложението да създава мрежови сокети."</string>
@@ -513,36 +530,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"Разрешава на приложението да променя състоянието на споделената връзка с мрежата."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"промяна на настройката за използване на данни на заден план"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Разрешава на приложението да променя настройката за използване на данни на заден план."</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"преглед на връзките с Wi-Fi"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"Разрешава на приложението да вижда информацията за състоянието на Wi-Fi мрежата."</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"установяване и прекратяване на връзката с Wi-Fi"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"Разрешава на приложението да се свързва към Wi-Fi точки за достъп и да прекратява връзката с тях, както и да извършва промени в конфигурирани Wi-Fi мрежи."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"разрешаване на приемане на мултикаст през Wi-Fi мрежата"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Разрешава на приложението да получава пакети, които не са адресирани директно към устройството ви. Това може да е полезно при откриване на предлагани в района услуги. Консумира се повече енергия, отколкото в режим без мултикаст."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"достъп до настройките за Bluetooth"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Разрешава на приложението да конфигурира локалния таблет с Bluetooth, както и да открива и да се сдвоява с отдалечени устройства."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Разрешава на приложението да конфигурира локалния телефон с Bluetooth, както и да открива и да се сдвоява с отдалечени устройства."</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Преглед на връзките с WiMAX"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Разрешава на приложението да вижда информацията за състоянието на WiMAX мрежата."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"Промяна на състоянието на WiMAX мрежата"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Разрешава на приложението да се свързва към WiMAX мрежа и да прекратява връзката с нея."</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"сдвояване с устройства с Bluetooth"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Разрешава на приложението да вижда конфигурацията на локалния таблет с Bluetooth и да изгражда и приема връзки със сдвоени устройства."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Разрешава на приложението да вижда конфигурацията на локалния телефон с Bluetooth и да изгражда и приема връзки със сдвоени устройства."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"контролиране на комуникацията в близкото поле"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Разрешава на приложението да комуникира с маркери, карти и четци, ползващи комуникация в близкото поле (NFC)."</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"деактивиране на заключването на екрана ви"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Разрешава на приложението да деактивира заключването на клавиатурата и свързаната защита с парола. Това е допустимо, когато например телефонът деактивира заключването при получаване на входящо обаждане и после го активира отново, когато обаждането завърши."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"четене на настройките за синхронизиране"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Разрешава на приложението да чете настройките за синхронизиране, като например дали то е активирано за приложението Хора."</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"включване и изключване на синхронизирането"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Разрешава на приложението да променя настройките за синхронизиране, като например дали то е активирано за приложението Хора."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"четене на статистическите данни за синхронизиране"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"Разрешава на приложението да чете статистическите данни за синхронизирането, напр. историята на извършените синхронизирания."</string>
@@ -550,22 +560,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Разрешава на приложението да получи подробности за текущо синхронизираните емисии."</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"запис в емисиите с абонамент"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Разрешава на приложението да променя текущо синхронизираните ви емисии. Злонамерените приложения могат да ги променят."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"четене на думите, които сте добавили в речника"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Разрешава на приложението да чете частни думи, имена и фрази, които потребителят може да е съхранил в потребителския речник."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"запис в дефинирания от потребителя речник"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Разрешава на приложението да записва нови думи в потребителския речник."</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"четене на съдърж. от USB хран. ви"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"четене на съдържанието от SD картата ви"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Разр. на прилож. да чете съдърж. от USB хран., което може да вкл. снимки и мултимедия."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Разрешава на приложението да чете съдържание от SD картата, което може да включва снимки и мултимедия."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"промяна или изтрив. на съдърж. от USB хран. ви"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Разрешава на приложението да записва в USB."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Разрешава на приложението да записва върху SD картата."</string>
@@ -744,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"В телефона няма SIM карта."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Поставете SIM карта."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM картата липсва или е нечетлива. Поставете SIM карта."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"Неизползваема SIM карта."</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"SIM картата ви е деактивирана за постоянно."\n"Свържете се с оператора на безжичната си връзка, за да получите друга."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Бутон за предишния запис"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Бутон за следващия запис"</string>
@@ -819,15 +824,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"Община"</string>
<string name="autofill_area" msgid="3547409050889952423">"Район"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"Емирство"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"четене на вашите отметки и история в мрежата"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Разрешава на приложението да чете всички URL адреси, посетени от браузъра, и всички негови отметки."</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"запис на вашите отметки и история в мрежата"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Разрешава на приложението да променя историята или отметките на браузъра, съхранени в таблета ви. Злонамерените приложения може да използват това, за да изтрият или променят данните на браузъра ви."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Разрешава на приложението да променя историята или отметките на браузъра, съхранени в телефона ви. Злонамерените приложения може да използват това, за да изтрият или променят данните на браузъра ви."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"навиване на будилника"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"Разрешава на приложението да навие инсталирано приложение будилник. Някои будилници може да не изпълнят тази функция."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"добавяне на гласова поща"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"Разрешава на приложението да добавя съобщения към входящата ви гласова поща."</string>
@@ -1087,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Задаване на дата"</string>
<string name="date_time_set" msgid="5777075614321087758">"Задаване"</string>
<string name="date_time_done" msgid="2507683751759308828">"Готово"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"По подразбиране"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"НОВО: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"НОВО: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"Не се изискват разрешения"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"Скриване"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"Показване на всички"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"Масово USB хранилище"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"Връзка през USB"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"Свързахте се с компютъра си през USB. Докоснете долния бутон, ако искате да копирате файлове между компютъра и USB хранилището си от Android."</string>
@@ -1320,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"Изпраща се..."</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"Да се стартира ли браузърът?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"Да се приеме ли обаждането?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index fca9d5a..69d982b 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"Missatges"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"Llegeix i escriu SMS, correus electrònics i altres missatges."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Informació personal"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Accés directe als contactes i al calendari emmagatzemat a la tauleta."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Accés directe als contactes i al calendari emmagatzemats al telèfon."</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Accés directe a informació sobre tu, emmagatzemada a la targeta de contacte."</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Informació social"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Accés directe a informació sobre els teus contactes i sobre les teves connexions socials."</string>
<string name="permgrouplab_location" msgid="635149742436692049">"Ubicació"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"Supervisa la teva ubicació física."</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"Comunicació de xarxa"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"Accedeix a diverses funcions de xarxa."</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Configuració d\'àudio"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Canviar la configuració de l\'àudio."</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Afectar la bateria"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Fer servir funcions que poden consumir bateria ràpidament."</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"Calendari"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Accés directe a calendaris i a esdeveniments."</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Marcadors i historial"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Accés directe a l\'historial de marcadors i de navegació."</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Alarma"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Definir l\'alarma."</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Bústia de veu"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Accés directe a la bústia de veu."</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"Micròfon"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Accés directe al micròfon per enregistrar àudio."</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"Càmera"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"Accés directe a la càmera per a la captura d\'imatges o de vídeos."</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Informació de les aplicacions"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Capacitat d\'afectar el rendiment d\'altres aplicacions del dispositiu."</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Fons de pantalla"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Canviar la configuració del fons de pantalla del dispositiu."</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"Rellotge"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Canviar l\'hora o la zona horària del dispositiu."</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Barra d\'estat"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Canviar la configuració de la barra d\'estat del dispositiu."</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Configuració de sincronització"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Accedir a la configuració de sincronització."</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"Comptes"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"Accedeix als comptes disponibles."</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Controls de maquinari"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Accés de nivell inferior i control del sistema."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Eines de desenvolupament"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Funcions que només necessiten els desenvolupadors d\'aplicacions."</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"IU d\'altres aplicacions"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"Afectar la IU d\'altres aplicacions."</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"Emmagatzematge"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Accedeix a l\'emmag. USB."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Accedeix a la targeta SD."</string>
@@ -193,14 +238,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"Permet que l\'aplicació sigui la barra d\'estat."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"ampliar/reduir la barra d\'estat"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Permet que l\'aplicació ampliï o redueixi la barra d\'estat."</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"desviació de les trucades sortints"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Permet que l\'aplicació processi les trucades sortints i que canviï el número que es marcarà. Les aplicacions malicioses poden supervisar, redirigir o bloquejar les trucades sortints."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"recepció de missatges de text (SMS)"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"Permet que l\'aplicació rebi i processi missatges SMS. Les aplicacions malicioses poden supervisar els missatges o suprimir-los sense mostrar-te\'ls."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"recepció de missatges de text (MMS)"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"Permet que l\'aplicació rebi i processi missatges MMS. Les aplicacions malicioses poden supervisar els missatges o suprimir-los sense mostrar-te\'ls."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"recepció d\'emissions d\'emergència"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Permet que l\'aplicació rebi i processi missatges de difusió d\'emergència. Aquest permís només està disponible per a les aplicacions del sistema."</string>
@@ -210,16 +252,13 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"Permet que l\'aplicació enviï missatges SMS. Les aplicacions malicioses poden enviar missatges sense la teva confirmació, cosa que et pot fer gastar diners."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"enviament de missatges SMS sense confirmació"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Permet que l\'aplicació enviï missatges SMS. Les aplicacions malicioses poden enviar missatges sense la teva confirmació, cosa que et pot fer gastar diners."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"lectura dels missatges de text (SMS o MMS)"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Permet que l\'aplicació llegeixi missatges SMS emmagatzemats a la tauleta o a la targeta SIM. Les aplicacions malicioses poden llegir els teus missatges confidencials."</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Permet que l\'aplicació llegeixi missatges SMS emmagatzemats al telèfon o a la targeta SIM. Les aplicacions malicioses poden llegir els teus missatges confidencials."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"edició dels missatges de text (SMS o MMS)"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Permet que l\'aplicació llegeixi missatges SMS emmagatzemats a la tauleta o a la targeta SIM. Les aplicacions malicioses poden llegir els teus missatges confidencials."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Permet que l\'aplicació llegeixi missatges SMS emmagatzemats al telèfon o a la targeta SIM. Les aplicacions malicioses poden llegir els teus missatges confidencials."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"recepció de missatges de text (WAP)"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Permet que l\'aplicació rebi i processi missatges WAP. Les aplicacions malicioses poden supervisar els missatges o suprimir-los sense mostrar-te\'ls."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"recupera les aplicacions en execució"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"Permet que l\'aplicació recuperi informació sobre les tasques que s\'estan executant actualment i que s\'han executat recentment. Les aplicacions malicioses poden descobrir informació privada sobre altres aplicacions."</string>
@@ -235,13 +274,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Permet que l\'aplicació controli el mode de compatibilitat de pantalla d\'altres aplicacions. És possible que les aplicacions malicioses interrompin el comportament d\'altres aplicacions."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"activa la depuració d\'aplicacions"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"Permet que una aplicació activi la depuració per a una altra aplicació. Les aplicacions malicioses poden utilitzar aquesta funció per finalitzar altres aplicacions."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"canvi de la configuració de pantalla del sistema"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Permet que una aplicació canviï la configuració actual, com ara la configuració regional o la mida global del tipus de lletra."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"activar el mode de cotxe"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"Permet que l\'aplicació activi el mode de cotxe."</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"tancament d\'altres aplicacions"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Permet que l\'aplicació finalitzi els processos en segon pla d\'altres aplicacions, fins i tot si queda prou memòria."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"força l\'aturada d\'altres aplicacions"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Permet que l\'aplicació forci l\'aturada d\'altres aplicacions."</string>
@@ -265,8 +302,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Permet que l\'aplicació difongui una notificació que indica que s\'ha rebut un missatge d\'inserció WAP. Les aplicacions malicioses poden utilitzar-ho per falsificar la recepció dels missatges MMS o per substituir silenciosament el contingut d\'una pàgina web per variants malicioses."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"limitar el nombre de processos en execució"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Permet que l\'aplicació controli el nombre màxim de processos que s\'executaran. No s\'hauria de necessitar mai per a les aplicacions normals."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"com fer que es tanquin les aplicacions en segon pla"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Permet que l\'aplicació controli si les activitats sempre finalitzen quan passen a segon pla. No es necessita mai per a les aplicacions normals."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"modificar les estadístiques de la bateria"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"Permet que l\'aplicació modifiqui les estadístiques d\'ús dels components recopilades. No indicat per a les aplicacions normals."</string>
@@ -276,8 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Permet que l\'aplicació iniciï la IU de confirmació de còpia de seguretat completa. No la pot fer servir qualsevol aplicació."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"visualitzar finestres no autoritzades"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Permet que l\'aplicació creï finestres que utilitzarà la interfície d\'usuari del sistema intern. No indicat per a les aplicacions normals."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"crida d\'altres aplicacions"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Permet que l\'aplicació mostri finestres d\'alertes del sistema. Les aplicacions malicioses poden ocupar tota la pantalla."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"modificar la velocitat d\'animacions global"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Permet que l\'aplicació canviï la velocitat d\'animació global (animacions més ràpides o lentes) en qualsevol moment."</string>
@@ -339,26 +374,22 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Permet que una aplicació concedeixi o denegui permisos específics per a aquesta o per a altres aplicacions. És possible que les aplicacions malicioses ho facin servir per accedir a funcions a les quals no has concedit accés."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"defineix les aplicacions preferides"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Permet que l\'aplicació modifiqui les aplicacions preferides. Les aplicacions malicioses poden canviar silenciosament les aplicacions que s\'executen, falsejar les aplicacions existents o recollir dades privades de l\'usuari."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"modificació de la configuració del sistema"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"Permet que l\'aplicació modifiqui les dades de configuració del sistema. Les aplicacions malicioses poden malmetre la configuració del sistema."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"modificar la configuració de seguretat del sistema"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Permet que l\'aplicació modifiqui les dades de la configuració de seguretat del sistema. No indicat per a les aplicacions normals."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"modificar el mapa de serveis de Google"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"Permet que l\'aplicació modifiqui el mapa dels serveis de Google. No la poden fer servir les aplicacions normals."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"execució en iniciar"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Permet que l\'aplicació s\'iniciï tan bon punt el sistema hagi acabat d\'arrencar. Això pot fer que es trigui més a iniciar el telèfon i permetre a l\'aplicació alentir-ne el funcionament general en executar-se sempre."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Permet que l\'aplicació s\'iniciï tan bon punt el sistema hagi acabat d\'arrencar. Això pot fer que es trigui més a iniciar el telèfon i permetre a l\'aplicació alentir-ne el funcionament general si s\'executa sempre."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"enviar difusió permanent"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Permet que l\'aplicació enviï emissions permanents, que es conserven després de finalitzar l\'emissió. Les aplicacions malicioses poden alentir o desestabilitzar la tauleta si li fan utilitzar massa memòria."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Permet que l\'aplicació enviï emissions permanents, que es conserven després de finalitzar l\'emissió. Les aplicacions malicioses poden alentir o desestabilitzar el telèfon si li fan utilitzar massa memòria."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
+ <string name="permlab_readContacts" msgid="8348481131899886131">"lectura dels contactes"</string>
<string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Permet que l\'aplicació llegeixi totes les dades sobre els contactes emmagatzemades a la tauleta, inclosa la freqüència amb la qual has trucat a determinades persones, els has enviat correus electrònics o t\'hi has comunicat. Això ajuda a completar automàticament les adreces electròniques, i també és útil per a altres funcions. Les aplicacions malicioses poden fer servir aquest permís per enviar les teves dades de contacte a altres persones."</string>
<string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Permet que l\'aplicació llegeixi totes les dades sobre els contactes emmagatzemades al telèfon, inclosa la freqüència amb la qual has trucat a determinades persones, els has enviat correus electrònics o t\'hi has comunicat. Això ajuda a completar automàticament les adreces electròniques, i també és útil per a altres funcions. Les aplicacions malicioses poden fer servir aquest permís per enviar les teves dades de contacte a altres persones."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"modificació dels contactes"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Permet que l\'aplicació modifiqui les dades sobre els contactes emmagatzemades a la tauleta, inclosa la freqüència amb la qual has trucat a determinades persones, els has enviat correus electrònics o t\'hi has comunicat. Això ajuda a completar automàticament les adreces electròniques, i també és útil per a altres funcions. Les aplicacions malicioses poden fer servir aquest permís per esborrar o per modificar les teves dades de contacte."</string>
<string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Permet que l\'aplicació modifiqui les dades sobre els contactes emmagatzemades al telèfon, inclosa la freqüència amb la qual has trucat a determinades persones, els has enviat correus electrònics o t\'hi has comunicat. Això ajuda a completar automàticament les adreces electròniques, i també és útil per a altres funcions. Les aplicacions malicioses poden fer servir aquest permís per esborrar o per modificar les teves dades de contacte."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"lectura del registre de trucades"</string>
@@ -367,11 +398,9 @@
<string name="permlab_writeCallLog" msgid="8552045664743499354">"escriptura del registre de trucades"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Permet que l\'aplicació modifiqui el registre de trucades de la teva tauleta, incloses les dades de les trucades entrants i sortints. És possible que les aplicacions malicioses ho utilitzin per eliminar o per modificar el teu registre de trucades."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Permet que l\'aplicació modifiqui el registre de trucades del teu telèfon, incloses les dades de les trucades entrants i sortints. És possible que les aplicacions malicioses ho utilitzin per eliminar o per modificar el teu registre de trucades."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"lectura targeta de contacte"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Permet que l\'aplicació pugui llegir informació del perfil personal emmagatzemada al dispositiu, com ara el teu nom i la teva informació de contacte. Això significa que l\'aplicació et pot identificar i enviar la informació del teu perfil a altres persones."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"modificació targeta contacte"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Permet que l\'aplicació pugui canviar o afegir informació del perfil personal emmagatzemada al dispositiu, com ara el teu nom i la teva informació de contacte. Això significa que altres aplicacions et poden identificar i enviar la informació del teu perfil a d\'altres persones."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"llegeix el teu tauler d\'activitat social"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Permet que l\'aplicació accedeixi a les teves actualitzacions socials i a les dels teus amics i que les sincronitzi. Les aplicacions malicioses poden fer servir aquesta funció per llegir comunicacions privades entre tu i els teus amics a les xarxes socials."</string>
@@ -412,15 +441,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"forçar el reinici del telèfon"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Permet que l\'aplicació faci que es reiniciï la tauleta."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Permet que l\'aplicació faci que es reiniciï el telèfon."</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"accés sist. fitxers emmag. USB"</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"accés al sistema de fitxers de la targeta SD"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Permet que l\'aplicació instal·li i desinstal·li sistemes de fitxers per a l\'emmagatzematge extraïble."</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"esborrament emmagatzematge USB"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"esborrament de la targeta SD"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Permet que l\'aplicació formati l\'emmagatzematge extraïble."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"obtén informació sobre l\'emmagatzematge intern"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"Permet que l\'aplicació obtingui informació de l\'emmagatzematge intern."</string>
@@ -432,8 +457,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Permet que l\'aplicació instal·li/desinstal·li l\'emmagatzematge intern."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"canvia el nom de l\'emmagatzematge intern"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"Permet que l\'aplicació canviï el nom de l\'emmagatzematge intern."</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"control de la vibració"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"Permet que l\'aplicació controli el vibrador."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"controlar el flaix"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"Permet que l\'aplicació controli el flaix."</string>
@@ -458,8 +482,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"Permet que l\'aplicació indiqui al sistema quins widgets pot utilitzar cada aplicació. Amb aquest permís, les aplicacions poden concedir accés a les dades personals a altres aplicacions. No indicat per a les aplicacions normals."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"modificar l\'estat del telèfon"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Permet que l\'aplicació controli les funcions de telèfon del dispositiu. Una aplicació amb aquest permís pot canviar de xarxa, activar i desactivar la ràdio del telèfon i dur a terme accions semblants sense notificar-t\'ho."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"lectura de l\'estat i la identitat del telèfon"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"Permet que l\'aplicació accedeixi a les funcions de telèfon del dispositiu. Una aplicació amb aquest permís pot determinar el número de telèfon i el número de sèrie del telèfon, si una trucada està activa, el número al qual s\'ha connectat la trucada i informació d\'aquest tipus."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"evita que la tauleta entri en mode d\'inactivitat"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"impedir que el telèfon se suspengui"</string>
@@ -474,8 +497,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"S\'executa com a prova del fabricant de baix nivell, cosa que permet l\'accés total al maquinari del telèfon. Només està disponible quan un telèfon s\'executa en mode de proves del fabricant."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"definir fons de pantalla"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"Permet que l\'aplicació estableixi el fons de pantalla del sistema."</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"ajustament de la mida del fons de pantalla"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Permet que l\'aplicació defineixi els suggeriments de mida del fons de pantalla."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"restablir el sistema als valors predeterminats de fàbrica"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"Permet que l\'aplicació restableixi completament el sistema a la configuració de fàbrica, amb la qual cosa s\'esborren totes les dades, la configuració i les aplicacions instal·lades."</string>
@@ -487,21 +509,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Permet que l\'aplicació canviï la zona horària del telèfon."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"actuar com a AccountManagerService"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"Permet que una aplicació faci trucades a autenticadors de comptes."</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"cerca de comptes al dispositiu"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Permet que l\'aplicació obtingui la llista de comptes coneguts per la tauleta."</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Permet que l\'aplicació obtingui la llista de comptes que coneix el telèfon."</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"creació de comptes i definició de contrasenyes"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Permet que l\'aplicació utilitzi les funcions d\'autenticador de comptes del gestor de comptes, incloses la creació de comptes i l\'obtenció i la definició de les seves contrasenyes."</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"addició o eliminació de comptes"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"Permet que l\'aplicació dugui a terme operacions com ara afegir i eliminar comptes i suprimir-ne la contrasenya."</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"ús dels comptes al dispositiu"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"Permet que l\'aplicació sol·liciti testimonis d\'autenticació."</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"visualització de les connexions de xarxa"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"Permet que l\'aplicació visualitzi l\'estat de totes les xarxes."</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"accés total a Internet"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Permet que l\'aplicació pugui crear sòcols de xarxa."</string>
@@ -513,36 +530,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"Permet a l\'aplicació canviar l\'estat de la connectivitat de les xarxes compartides."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"canviar la configuració d\'ús de dades de referència"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Permet que l\'aplicació canviï la configuració d\'ús de les dades de fons."</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"visualització de les connexions Wi-Fi"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"Permet que l\'aplicació visualitzi la informació sobre l\'estat de la xarxa Wi-Fi."</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"connexió i desconnexió de la Wi-Fi"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"Permet que l\'aplicació es connecti i es desconnecti de punts d\'accés Wi-Fi i que faci canvis a les xarxes Wi-Fi configurades."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"permetre la recepció de multidifusió Wi-fi"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Permet que l\'aplicació rebi paquets que no estiguin adreçats directament al teu dispositiu. Pot ser útil en detectar els serveis que s\'ofereixen a prop. Consumeix més energia que el mode que no utilitza la multidestinació."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"accés a la configuració de Bluetooth"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Permet que l\'aplicació configuri la tauleta Bluetooth local i que cerqui i emparelli dispositius remots."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Permet que l\'aplicació configuri el telèfon Bluetooth local i que cerqui i emparelli dispositius remots."</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Visualització de les connexions WiMAX"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Permet que l\'aplicació visualitzi la informació sobre l\'estat de WiMAX."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"Canvia l\'estat de WiMAX"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Permet que l\'aplicació es connecti i es desconnecti de la xarxa WiMAX."</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"sincronització amb dispositius Bluetooth"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Permet que l\'aplicació mostri la configuració de la tauleta Bluetooth local i que estableixi i accepti connexions amb dispositius emparellats."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Permet que una aplicació visualitzi la configuració del telèfon Bluetooth local i que estableixi i accepti connexions amb els dispositius emparellats."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"controla Near Field Communication (NFC)"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Permet que l\'aplicació es comuniqui amb les etiquetes, les targetes i els lectors de Near Field Communication (NFC)."</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"desactivació del bloqueig de pantalla"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Permet que l\'aplicació desactivi el bloqueig del teclat i qualsevol element de seguretat de contrasenyes associat. Un exemple d\'això és la desactivació, per part del telèfon, del bloqueig del teclat en rebre una trucada telefònica entrant i, a continuació, la reactivació del bloqueig del teclat quan finalitza la trucada."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"llegir la configuració de sincronització"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Permet que l\'aplicació modifiqui la configuració de sincronització, com per exemple si està activada la sincronització per a l\'aplicació Persones."</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"activació o desactivació de la sincronització"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Permet que l\'aplicació modifiqui la configuració de sincronització, com per exemple si està activada la sincronització per a l\'aplicació Persones."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"llegir les estadístiques de sincronització"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"Permet que l\'aplicació llegeixi les estadístiques de sincronització; p. ex., l\'historial de sincronitzacions que s\'han produït."</string>
@@ -550,22 +560,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Permet que l\'aplicació obtingui detalls sobre els feeds sincronitzats actualment."</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"escriure feeds subscrits"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Permet que l\'aplicació modifiqui els feeds sincronitzats actualment. Les aplicacions malicioses poden canviar els teus feeds sincronitzats."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"lectura dels termes que afegeixes al diccionari"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Permet que l\'aplicació llegeixi les paraules, els noms i les frases privats que l\'usuari pot haver emmagatzemat al seu diccionari."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"escriu al diccionari definit per l\'usuari"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Permet que l\'aplicació escrigui paraules noves al diccionari de l\'usuari."</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"lectura contingut emmagat. USB"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"lectura del contingut de la targeta SD"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Permet que l\'aplicació llegeixi el contingut de l\'emmagatzematge USB, incloses les fotos i els fitxers multimèdia."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Permet que l\'aplicació llegeixi el contingut de la targeta SD, incloses les fotos i els fitxers multimèdia."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"modificació o supressió del contingut de l\'emmagatzematge USB"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Permet que l\'aplicació escrigui a l\'emmagatzematge USB."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Permet a l\'aplicació escriure a la targeta SD."</string>
@@ -744,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"No hi ha cap targeta SIM al telèfon."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Insereix una targeta SIM."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"Falta la targeta SIM o no es pot llegir. Insereix-ne una."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"Targeta SIM no utilitzable."</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"La targeta SIM està desactivada permanentment."\n" Contacta amb el teu proveïdor de serveis sense fil per obtenir-ne una altra."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Botó de pista anterior"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Botó de pista següent"</string>
@@ -819,15 +824,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"Districte"</string>
<string name="autofill_area" msgid="3547409050889952423">"Àrea"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"Emirat"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"lectura dels marcadors i l\'historial web"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Permet que l\'aplicació llegeixi tots els URL que ha visitat el navegador i totes les adreces d\'interès del navegador."</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"introducció de marcadors i d\'historial web"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Permet que l\'aplicació modifiqui l\'historial o els marcadors del navegador emmagatzemats a la tauleta. Les aplicacions malicioses poden utilitzar-ho per esborrar o per modificar les dades del navegador."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Permet a l\'aplicació modificar l\'historial o els marcadors del navegador emmagatzemats al telèfon. Les aplicacions malicioses poden utilitzar-ho per esborrar o modificar les dades del navegador."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"configuració d\'una alarma"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"Permet que l\'aplicació defineixi una alarma en una aplicació de despertador instal·lada. És possible que algunes aplicacions de despertador no incorporin aquesta funció."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"afegeix bústia de veu"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"Permet que l\'aplicació afegeixi missatges a la safata d\'entrada de la bústia de veu."</string>
@@ -1087,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Establiment de data"</string>
<string name="date_time_set" msgid="5777075614321087758">"Defineix"</string>
<string name="date_time_done" msgid="2507683751759308828">"Fet"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"Predeterminat"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NOU: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NOU: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"No cal cap permís"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"Amaga"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"Mostra\'ls tots"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"Emmagatzematge massiu USB"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"USB connectat"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"T\'has connectat a l\'equip mitjançant USB. Toca el botó següent si vols copiar els fitxers entre l\'equip i l\'emmagatzematge USB d\'Android."</string>
@@ -1320,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"S\'està enviant…"</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"Vols iniciar el navegador?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"Vols acceptar la trucada?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index c03942e..c77a21a 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"Vaše zprávy"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"Čtení a zápis zpráv SMS, e-mailů a dalších zpráv."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Vaše osobní informace"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Přímý přístup k vašim kontaktům a kalendáři v tabletu."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Přímý přístup k vašim kontaktům a kalendáři v telefonu."</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Přímý přístup k informacím o vás uložených na vaší vizitce"</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Informace o vašich kontaktech a sociálních sítích"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Přímý přístup k informacím o vašich kontaktech a sociálních propojeních"</string>
<string name="permgrouplab_location" msgid="635149742436692049">"Vaše poloha"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"Sledovat vaši fyzickou polohu."</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"Síťová komunikace"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"Přístup k různým funkcím sítě."</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Nastavení zvuku"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Změna nastavení zvuku"</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Vliv na baterii"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Používání funkcí, které mohou rychle vyčerpat baterii"</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"Kalendář"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Přímý přístup ke kalendáři a událostem"</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Záložky a historie"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Přímý přístup k záložkám a historii prohlížení"</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Budík"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Nastavení budíku"</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Hlasová schránka"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Přímý přístup do hlasové schránky"</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"Mikrofon"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Přímý přístup k mikrofonu a možnost nahrávání zvuku"</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"Fotoaparát"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"Přímý přístup k fotoaparátu a možnost pořizování fotografií a videí"</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Informace o vašich aplikacích"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Možnost ovlivnit chování dalších aplikací v zařízení"</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Tapeta"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Změna nastavení tapety zařízení"</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"Hodiny"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Změna času nebo časového pásma zařízení"</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Stavový řádek"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Změna nastavení stavového řádku zařízení"</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Synchronizace"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Přístup k nastavení synchronizace"</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"Vaše účty"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"Přístup k dostupným účtům."</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Řízení hardwaru"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Nízkoúrovňový přístup a kontrola nad systémem."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Nástroje pro vývojáře"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Funkce pouze pro vývojáře aplikací."</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"Uživatelské rozhraní dalších aplikací"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"Vliv na uživatelské rozhraní dalších aplikací"</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"Úložiště"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Přístup do úložiště USB."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Přístup ke kartě SD."</string>
@@ -193,14 +238,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"Umožňuje aplikaci být stavovým řádkem."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"rozbalení a sbalení stavového řádku"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Umožňuje aplikaci rozbalit či sbalit stavový řádek."</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"přesměrování odchozích hovorů"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Umožňuje aplikaci zpracovat odchozí hovory a měnit vytáčené číslo. Škodlivé aplikace mohou sledovat či přesměrovat příchozí hovory nebo jim zabránit."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"příjem textových zpráv (SMS)"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"Umožňuje aplikaci přijmout a zpracovat zprávy SMS. Škodlivé aplikace mohou sledovat vaše zprávy nebo je smazat, aniž by vám byly zobrazeny."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"příjem textových zpráv (MMS)"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"Umožňuje aplikaci přijmout a zpracovat zprávy MMS. Škodlivé aplikace mohou sledovat vaše zprávy nebo je smazat, aniž by se vám zobrazily."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"příjem nouzového vysílání"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Umožňuje aplikaci přijmout a zpracovat zprávy tísňového vysílání. Toto oprávnění je dostupné pouze pro systémové aplikace."</string>
@@ -210,16 +252,13 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"Umožňuje aplikaci odesílat zprávy SMS. Škodlivé aplikace vás mohou připravit o peníze odesíláním zpráv bez vašeho svolení."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"posílat zprávy SMS bez potvrzení"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Umožňuje aplikaci odesílat zprávy SMS. Škodlivé aplikace vás mohou připravit o peníze odesíláním zpráv bez vašeho svolení."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"čtení textových zpráv (SMS nebo MMS)"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Umožňuje aplikaci číst zprávy SMS uložené v tabletu nebo na SIM kartě. Škodlivé aplikace mohou číst důvěrné zprávy."</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Umožňuje aplikaci číst zprávy SMS uložené v telefonu nebo na SIM kartě. Škodlivé aplikace mohou číst důvěrné zprávy."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"úprava textových zpráv (SMS nebo MMS)"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Umožňuje aplikaci zapisování do zpráv SMS uložených v tabletu nebo na SIM kartě. Škodlivé aplikace mohou vaše zprávy smazat."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Umožňuje aplikaci zapisování do zpráv SMS uložených v telefonu nebo na SIM kartě. Škodlivé aplikace mohou vaše zprávy smazat."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"příjem textových zpráv (WAP)"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Umožňuje aplikaci přijmout a zpracovat zprávy WAP. Škodlivé aplikace mohou sledovat vaše zprávy nebo je smazat, aniž by vám byly zobrazeny."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"načtení spuštěných aplikací"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"Umožňuje aplikaci získat informace o aktuálně a naposledy spuštěných úlohách. Škodlivé aplikace mohou odhalit soukromé informace o ostatních aplikacích."</string>
@@ -235,13 +274,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Umožňuje aplikaci ovládat režim kompatibility obrazovky v ostatních aplikacích. Škodlivé aplikace mohou narušit chování ostatních aplikací."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"povolení ladění aplikací"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"Umožňuje aplikaci zapnout ladění jiné aplikace. Škodlivé aplikace mohou toto oprávnění použít k ukončení ostatních aplikací."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"změna systémových nastavení obrazovky"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Umožňuje aplikaci změnit aktuální konfiguraci, např. národní prostředí či obecnou velikost písma."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"aktivovat režim V autě"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"Umožňuje aplikaci aktivovat režim V autě."</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"zavření ostatních aplikací"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Umožňuje aplikaci ukončit procesy ostatních aplikací spuštěné na pozadí, a to i v případě, že je k dispozici dostatek paměti."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"vynucení zastavení jiných aplikací"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Umožňuje aplikaci vynutit zastavení jiných aplikací."</string>
@@ -265,8 +302,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Umožňuje aplikaci vysílat oznámení o přijetí zprávy WAP PUSH. Škodlivé aplikace mohou toto oprávnění použít k vytváření falešných přijatých zpráv MMS nebo utajenému nahrazení obsahu libovolné webové stránky jejich škodlivými variantami."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"omezení počtu spuštěných procesů"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Umožňuje aplikaci řídit maximální počet spuštěných procesů. Běžné aplikace toto oprávnění nikdy nepotřebují."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"vynucení zavření aplikací na pozadí"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Umožňuje aplikaci ovládat, zda budou činnosti po přechodu na pozadí vždy ukončeny. Běžné aplikace toto oprávnění nikdy nepožadují."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"změna statistických údajů o baterii"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"Umožňuje aplikaci upravit shromážděné statistiky o baterii. Toto oprávnění není určeno pro běžné aplikace."</string>
@@ -276,8 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Umožňuje aplikaci spustit uživatelské rozhraní potvrzení úplné zálohy. Toto oprávnění nesmí používat žádná aplikace."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"zobrazení nepovolených oken"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Umožňuje aplikaci vytvářet okna, která se budou používat v interním uživatelském rozhraní systému. Toto oprávnění není určeno pro běžné aplikace."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"kreslení přes další aplikace"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Umožňuje aplikaci zobrazit okna s výstrahami systému. Škodlivé aplikace mohou převzít kontrolu nad celou obrazovkou."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"změna globální rychlosti animace"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Umožňuje aplikaci kdykoliv globálně změnit rychlost animací (rychlejší či pomalejší animace)."</string>
@@ -339,26 +374,22 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Umožňuje aplikaci udělit nebo odebrat sobě samotné nebo jiným aplikacím určitá oprávnění. Škodlivé aplikace pomocí tohoto oprávnění mohou získat přístup k funkcím, které jste jim nepovolili."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"nastavení upřednostňovaných aplikací"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Umožňuje aplikaci upravit preferované aplikace. Škodlivé aplikace mohou tajně měnit běžící aplikace a přinutit stávající aplikace, aby shromažďovaly vaše soukromé údaje."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"změna nastavení systému"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"Umožňuje aplikaci upravit data nastavení systému. Škodlivé aplikace mohou poškodit konfiguraci systému."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"změny zabezpečených nastavení systému"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Umožňuje aplikaci upravit data nastavení zabezpečení systému. Toto oprávnění není určeno pro běžné aplikace."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"změna mapy služeb Google"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"Umožňuje aplikaci změnit mapu služeb Google. Toto oprávnění není určeno pro běžné aplikace."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"spuštění při startu"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Umožňuje aplikaci spuštění ihned po spuštění systému. Toto oprávnění může zpomalit spuštění tabletu a umožnit aplikaci celkově zpomalit tablet, protože bude neustále spuštěna."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Umožňuje aplikaci spuštění ihned po spuštění systému. Toto oprávnění může zpomalit spuštění telefonu a umožnit aplikaci celkově zpomalit telefon, protože bude neustále spuštěna."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"odeslání trvalého vysílání"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Umožňuje aplikaci odeslat trvalá vysílání, která přetrvávají i po skončení vysílání. Škodlivé aplikace mohou tablet zpomalit či způsobit jeho nestabilitu, protože bude používat příliš mnoho paměti."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Umožňuje aplikaci odeslat trvalá vysílání, která přetrvávají i po skončení vysílání. Škodlivé aplikace mohou telefon zpomalit či způsobit jeho nestabilitu, protože bude používat příliš mnoho paměti."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
+ <string name="permlab_readContacts" msgid="8348481131899886131">"čtení kontaktů"</string>
<string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Umožňuje aplikaci číst všechny údaje o kontaktech uložených v tabletu včetně toho, jak často voláte, posíláte e-maily nebo komunikujete jinými způsoby s konkrétními osobami. Pomáhá to při automatickém doplňování e-mailových adres a dalších užitečných funkcích. Škodlivé aplikace mohou toto povolení zneužít k posílání vašich kontaktních údajů jiným lidem."</string>
<string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Umožňuje aplikaci číst všechny údaje o kontaktech uložených v telefonu včetně toho, jak často voláte, posíláte e-maily nebo komunikujete jinými způsoby s konkrétními osobami. Pomáhá to při automatickém doplňování e-mailových adres a dalších užitečných funkcích. Škodlivé aplikace mohou toto povolení zneužít k posílání vašich kontaktních údajů jiným lidem."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"úprava kontaktů"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Umožňuje aplikaci upravovat všechny údaje o kontaktech uložených v tabletu včetně toho, jak často voláte, posíláte e-maily nebo komunikujete jinými způsoby s konkrétními osobami. Pomáhá to při automatickém doplňování e-mailových adres a dalších užitečných funkcích. Škodlivé aplikace mohou toto povolení zneužít k mazání nebo úpravě vašich kontaktních údajů."</string>
<string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Umožňuje aplikaci upravovat všechny údaje o kontaktech uložených v telefonu včetně toho, jak často voláte, posíláte e-maily nebo komunikujete jinými způsoby s konkrétními osobami. Pomáhá to při automatickém doplňování e-mailových adres a dalších užitečných funkcích. Škodlivé aplikace mohou toto povolení zneužít k mazání nebo úpravě vašich kontaktních údajů."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"číst seznam hovorů"</string>
@@ -367,11 +398,9 @@
<string name="permlab_writeCallLog" msgid="8552045664743499354">"zapisovat seznam hovorů"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Umožňuje aplikaci upravovat seznam hovorů vašeho tabletu, včetně dat o příchozích a odchozích hovorech. Škodlivé aplikace to mohou zneužít k vymazání nebo změnám seznamu hovorů."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Umožňuje aplikaci upravovat seznam hovorů vašeho telefonu, včetně dat o příchozích a odchozích hovorech. Škodlivé aplikace to mohou zneužít k vymazání nebo změnám seznamu hovorů."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"čtení vaší vlastní vizitky"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Umožňuje aplikaci číst údaje v osobním profilu uložené v zařízení, například jméno nebo kontaktní údaje. Znamená to, že vás ostatní aplikace mohou identifikovat a odeslat údaje z profilu dalším aplikacím."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"úprava vaší vlastní vizitky"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Umožňuje aplikaci změnit nebo přidat údaje v osobním profilu uložené v zařízení, například jméno nebo kontaktní údaje. Znamená to, že vás ostatní aplikace mohou identifikovat a odeslat údaje z profilu dalším aplikacím."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"číst váš sociální stream"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Umožňuje aplikaci přístup k sociálním aktualizacím od vás a vašich přátel a k synchronizaci těchto aktualizací. Škodlivé aplikace toho mohou využít ke čtení soukromé komunikace mezi vámi a vašimi přáteli v sociálních sítích."</string>
@@ -412,15 +441,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"vynucení restartování telefonu"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Umožňuje aplikaci vynutit restartování tabletu."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Umožňuje aplikaci vynutit restartování telefonu."</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"přístup k systému souborů v úložišti USB"</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"přístup k systému souborů na kartě SD"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Umožňuje aplikaci připojit či odpojit souborové systémy ve vyměnitelných úložištích."</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"smazání úložiště USB"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"smazání karty SD"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Umožňuje aplikaci formátovat vyměnitelná úložiště."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"získat informace o interním úložišti"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"Umožňuje aplikaci získat informace o interním úložišti."</string>
@@ -432,8 +457,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Umožňuje aplikaci připojit nebo odpojit interní úložiště."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"přejmenovat interní úložiště"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"Umožňuje aplikaci přejmenovat interní úložiště."</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"ovládání vibrací"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"Umožňuje aplikaci ovládat vibrace."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"ovládání kontrolky"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"Umožňuje aplikaci ovládat baterku."</string>
@@ -458,8 +482,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"Umožňuje aplikaci přikázat systému, které widgety mohou konkrétní aplikace používat. Aplikace s tímto oprávněním může ostatním aplikacím udělit přístup k osobním datům. Toto oprávnění není určeno pro běžné aplikace."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"změna stavu telefonu"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Umožňuje aplikaci ovládat telefonní funkce zařízení. Aplikace s tímto oprávněním smí bez upozornění přepínat sítě, zapínat a vypínat bezdrátový modul telefonu a podobně."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"čtení stavu a identity telefonu"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"Umožňuje aplikaci získat přístup k telefonním funkcím zařízení. Aplikace s tímto oprávněním může zjistit telefonní číslo a sériové číslo příslušného telefonu, zda je aktivní hovor, číslo, ke kterému je hovor připojen a podobně."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"zabránění přechodu tabletu do režimu spánku"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"zabránění přechodu telefonu do režimu spánku"</string>
@@ -474,8 +497,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Umožňuje aplikaci spuštění v režimu nízkoúrovňového testu výrobce a povolí přístup k hardwaru telefonu. K dispozici pouze, je-li telefon spuštěn v režimu testování výrobce."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"nastavení tapety"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"Umožňuje aplikaci nastavit tapetu systému."</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"úprava velikosti tapety"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Umožňuje aplikaci nastavit nápovědu pro velikost tapety systému."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"obnovení továrního nastavení systému"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"Umožňuje aplikaci zcela resetovat systém na tovární nastavení, vymazat všechna data, nastavení a nainstalované aplikace."</string>
@@ -487,21 +509,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Umožňuje aplikaci změnit časové pásmo telefonu."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"role služby AccountManagerService"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"Umožňuje aplikaci volat funkce AccountAuthenticator."</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"vyhledání účtů v zařízení"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Umožňuje aplikaci získat seznam účtů v tabletu."</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Umožňuje aplikaci získat seznam účtů v telefonu."</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"vytváření účtů a nastavení hesel"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Umožňuje aplikaci používat funkce aplikace AccountManager související s ověřováním účtů – včetně vytváření účtů a získávání a nastavování hesel."</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"přidání nebo odebrání účtů"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"Umožňuje aplikaci provádět operace, jako je přidávání nebo odebírání účtů nebo mazání jejich hesel."</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"používání účtů v zařízení"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"Umožňuje aplikaci požadovat ověřovací klíče."</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"zobrazení síťových připojení"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"Umožňuje aplikaci zobrazit stav všech sítí."</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"plný přístup k internetu"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Umožňuje aplikaci vytvořit síťové sokety."</string>
@@ -513,36 +530,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"Umožňuje aplikaci změnit stav sdíleného datového připojení k síti."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"změnit nastavení použití dat na pozadí"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Umožňuje aplikaci změnit nastavení použití dat na pozadí."</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"zobrazení připojení Wi-Fi"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"Umožňuje aplikaci zobrazit informace o stavu připojení Wi-Fi."</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"připojení k síti Wi-Fi a odpojení od sítě Wi-Fi"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"Umožňuje aplikaci připojit se k přístupovým bodům Wi-Fi či se od nich odpojit a provádět změny nakonfigurovaných sítí Wi-Fi."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"povolení příjmu Wi-Fi Multicast"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Umožňuje aplikaci přijímat pakety, které nebyly adresovány přímo vašemu zařízení. Pomocí této možnosti můžete objevit služby nabízené ve vaší blízkosti. Spotřeba energie je vyšší než u režimu bez vícesměrového vysílání (multicast)."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"přístup do nastavení Bluetooth"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Umožňuje aplikaci konfigurovat místní tablet s rozhraním Bluetooth a vyhledávat a párovat vzdálená zařízení."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Umožňuje aplikaci konfigurovat místní telefon s rozhraním Bluetooth a vyhledávat a párovat vzdálená zařízení."</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Zobrazit připojení WiMAX"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Umožňuje aplikaci zobrazit informace o stavu připojení WiMAX."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"Změnit stav připojení WiMAX"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Umožňuje aplikaci připojovat se k síti WiMAX a odpojovat se od ní."</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"párování se zařízeními Bluetooth"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Umožňuje aplikaci zobrazit konfiguraci místního tabletu s rozhraním Bluetooth, vytvářet připojení ke spárovaným zařízením a přijímat tato připojení."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Umožňuje aplikaci zobrazit konfiguraci místního telefonu s rozhraním Bluetooth, vytvářet připojení ke spárovaným zařízením a přijímat tato připojení."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"ovládat technologii NFC"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Umožňuje aplikaci komunikovat se štítky, kartami a čtečkami s podporou technologie NFC."</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"vypnutí zámku obrazovky"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Umožňuje aplikaci vypnout zámek kláves a související zabezpečení heslem. Příkladem oprávněného použití této funkce je vypnutí zámku klávesnice při příchozím hovoru a jeho opětovné zapnutí po skončení hovoru."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"čtení nastavení synchronizace"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Umožňuje aplikaci načíst nastavení synchronizace, např. zda má být povolena synchronizace aplikace Lidé."</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"vypnutí nebo zapnutí synchronizace"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Umožňuje aplikaci změnit nastavení synchronizace, např. zda má být povolena synchronizace aplikace Lidé."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"čtení statistických údajů o synchronizaci"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"Umožňuje aplikaci číst statistické informace o synchronizaci, např. historii proběhlých synchronizací."</string>
@@ -550,22 +560,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Umožňuje aplikaci získat podrobnosti o aktuálně synchronizovaných zdrojích."</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"zápis odebíraných zdrojů"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Umožňuje aplikaci upravit zdroje, které aktuálně synchronizujete. Škodlivé aplikace mohou synchronizované zdroje změnit."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"čtení výrazů přidaných do slovníku"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Umožní aplikaci číst soukromá slova, jména a fráze, která uživatel mohl uložit do svého slovníku."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"zápis do slovníku definovaného uživatelem"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Umožňuje aplikaci zapisovat nová slova do uživatelského slovníku."</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"čtení obsahu v úložišti USB"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"čtení obsahu na kartě SD"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Umožňuje aplikaci číst obsah úložiště USB, který může zahrnovat fotografie a média."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Umožňuje aplikaci číst obsah karty SD, který může zahrnovat fotografie a média."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"úprava nebo smazání obsahu v úložišti USB"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Umožňuje aplikaci zapisovat do úložiště USB."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Umožňuje aplikaci zapisovat na kartu SD."</string>
@@ -744,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"V telefonu není žádná SIM karta."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Vložte SIM kartu."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM karta chybí nebo je nečitelná. Vložte SIM kartu."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"Nepoužitelná karta SIM."</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Vaše SIM karta byla natrvalo zablokována."\n" Požádejte svého poskytovatele bezdrátových služeb o další SIM kartu."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Tlačítko Předchozí stopa"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Tlačítko Další stopa"</string>
@@ -819,15 +824,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"Farnost"</string>
<string name="autofill_area" msgid="3547409050889952423">"Oblast"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"Emirát"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"čtení webových záložek a historie"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Umožňuje aplikaci číst všechny navštívené adresy URL a záložky prohlížeče."</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"psaní webových záložek a historie"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Umožňuje aplikaci upravit historii prohlížeče nebo záložky uložené v tabletu. Škodlivé aplikace mohou toto oprávnění použít k vymazání nebo úpravě dat prohlížeče."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Umožňuje aplikaci upravit historii prohlížeče nebo záložky uložené v telefonu. Škodlivé aplikace mohou toto oprávnění použít k vymazání nebo úpravě dat prohlížeče."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"nastavení budíku"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"Umožňuje aplikaci nastavit budík v nainstalované aplikaci budík. Některé aplikace budík tuto funkci nemusí obsahovat."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"přidat hlasovou zprávu"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"Umožňuje aplikaci přidávat zprávy do hlasové schránky."</string>
@@ -1087,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Nastavení data"</string>
<string name="date_time_set" msgid="5777075614321087758">"Nastavit"</string>
<string name="date_time_done" msgid="2507683751759308828">"Hotovo"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"Výchozí"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NOVÉ: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NOVÉ: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"Nejsou vyžadována žádná oprávnění"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"Skrýt"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"Zobrazit vše"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"Velkokapacitní paměťové zařízení USB"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"USB připojeno"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"Připojili jste se k počítači pomocí rozhraní USB. Chcete-li kopírovat soubory z počítače do úložiště USB v zařízení Android či obráceně, klepněte na tlačítko níže."</string>
@@ -1320,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"Odesílání..."</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"Spustit prohlížeč?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"Přijmout hovor?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index f56fbae..5a5cda3 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"Dine beskeder"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"Læs og skriv sms-beskeder, e-mails og andre beskeder."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Dine personlige oplysninger"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Få direkte adgang til dine kontakter og din kalender, der er gemt på tabletcomputeren."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Få direkte adgang til dine kontakter og din kalender, der er gemt på telefonen."</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Direkte adgang til oplysninger om dig, som er gemt på dit kontaktkort."</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Dine sociale oplysninger"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Direkte adgang til oplysninger om dine kontaktpersoner og sociale forbindelser."</string>
<string name="permgrouplab_location" msgid="635149742436692049">"Din placering"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"Overvåg din fysiske placering."</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"Netværkskommunikation"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"Få adgang til forskellige netværksfunktioner."</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Lydindstillinger"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Skifte lydindstillinger."</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Påvirker batteriet"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Bruge funktioner, der hurtigt kan dræne batteriet."</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"Kalender"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Direkte adgang til kalender og begivenheder."</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Bogmærker og historik"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Direkte adgang til bogmærker og browserhistorik."</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Alarm"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Indstille vækkeuret."</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Telefonsvarer"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Direkte adgang til telefonsvarer."</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"Mikrofon"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Direkte adgang til mikrofonen, så der kan optages lyd."</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"Kamera"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"Direkte adgang til kamera, så der kan tages billeder eller optages video."</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Oplysninger om dine applikationer"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Evne til at påvirke andre applikationers adfærd på din enhed."</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Baggrund"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Ændre enhedens baggrundsindstillinger."</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"Ur"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Ændre klokkeslæt eller tidszone på enheden."</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Statusbjælke"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Ændre indstillinger for enhedens statusbjælke."</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Synkronisering"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Adgang til synkroniseringsindstillingerne."</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"Dine konti"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"Få adgang til de tilgængelige konti."</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Hardwarekontroller"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Adgang og kontrol til systemet på lavere niveau."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Udviklingsværktøjer"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Funktioner, der kun er nødvendige for udviklere af apps."</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"Andre applikationers brugergrænseflade"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"Påvirke brugergrænsefladen for andre applikationer."</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"Lagring"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Få adgang til USB-lager."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Få adgang til SD-kortet."</string>
@@ -193,14 +238,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"Tillader, at appen er statusbjælken."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"udvid/skjul statuslinje"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Tillader, at appen kan udvide og skjule statusbjælken."</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"omdirigere udgående opkald"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Tillader, at appen kan behandle udgående opkald og ændre det nummer, der ringes op til. Ondsindede apps kan overvåge, omdirigere eller forhindre udgående opkald."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"modtage tekstbeskeder (SMS)"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"Tillader, at appen kan modtage og behandle sms-beskeder. Ondsindede apps kan overvåge dine beskeder eller slette dem uden at vise dem til dig."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"modtage tekstbeskeder (MMS)"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"Tillader, at appen kan modtage og behandle mms-beskeder. Ondsindede apps kan overvåge dine beskeder eller slette dem uden at vise dem til dig."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"modtage nødudsendelser"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Tillader, at appen kan modtage og behandle nødtransmissioner. Denne tilladelse er kun tilgængelig for systemapps."</string>
@@ -210,16 +252,13 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"Tillader, at appen kan sende sms-beskeder. Ondsindede apps kan medføre store omkostninger ved at sende beskeder uden din bekræftelse."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"sende sms-meddelelser uden bekræftelse"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Tillader, at appen kan sende sms-beskeder. Ondsindede apps kan koste dig penge, hvis de sender beskeder uden din bekræftelse."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"læse dine tekstbeskeder (SMS eller MMS)"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Tillader, at appen kan læse sms-beskeder, der er gemt på din tablet eller dit SIM-kort. Ondsindede apps kan læse dine fortrolige beskeder."</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Tillader, at appen kan læse sms-beskeder, der er gemt på din telefon eller dit SIM-kort. Ondsindede apps kan læse dine fortrolige beskeder."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"redigere dine tekstbeskeder (SMS eller MMS)"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Tillader, at appen kan skrive til sms-beskeder, der er gemt på din tablet eller på SIM-kortet. Ondsindede apps kan slette dine beskeder."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Tillader, at appen kan skrive til sms-beskeder, der er gemt på din telefon eller dit SIM-kort. Ondsindede apps kan slette dine beskeder."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"modtage tekstbeskeder (WAP)"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Tillader, at appen kan modtage og behandle WAP-beskeder. Ondsindede apps kan overvåge dine beskeder eller slette dem uden at vise dem til dig."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"hente kørende apps"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"Tillader, at appen kan hente oplysninger om aktuelle og seneste opgaver. Ondsindede apps kan registrere private oplysninger om andre apps."</string>
@@ -235,13 +274,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Tillader, at appen kontrollerer kompatibilitetstilstanden for skærme i andre applikationer. Ondsindede applikationer kan forstyrre andre applikationers adfærd."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"aktivere fejlretning af appen"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"Tillader, at appen kan slå fejlretning til for en anden app. Ondsindede apps kan bruge dette til at afslutte andre apps."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"skifte systemets skærmindstillinger"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Tillader, at en app kan ændre den aktuelle konfiguration, f.eks. landestandarden eller den overordnede skriftstørrelse."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"aktivere biltilstand"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"Tillader, at appen kan aktivere biltilstand."</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"lukke andre apps"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Tillader, at appen kan afslutte baggrundsprocesser for andre apps, selvom der ikke mangler hukommelse."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"tvangsstandse andre apps"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Tillader, at appen kan tvinge andre apps til at stoppe."</string>
@@ -265,8 +302,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Tillader, at appen kan udsende en meddelelse om, at der er modtaget en WAP PUSH-besked. Ondsindede apps kan bruge dette til at forfalske modtagelse af mms-beskeder eller i det skjulte erstatte indholdet på en webside med ondsindede varianter."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"begræns antallet af kørende processer"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Tillader, at appen kan kontrollere det maksimale antal kørende processer. Dette er aldrig nødvendigt til normale apps."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"tvinge baggrundsapps til at lukke"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Tillader, at appen kan kontrollere, om aktiviteter altid afsluttes, så snart de går i baggrunden. Det er aldrig nødvendigt til normale apps."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"rediger batteristatistikker"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"Tillader, at appen kan ændre indsamlet batteristatistik. Anvendes ikke af normale apps."</string>
@@ -276,8 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Tillader, at appen kan åbne brugergrænsefladen til bekræftelse af komplet sikkerhedskopiering. Må ikke anvendes af nogen app."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"vis uautoriserede vinduer"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Tillader, at appen kan oprette vinduer, der er beregnet til brugergrænsefladen i det interne system. Anvendes ikke af normale apps."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"tegne over andre apps"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Tillader, at appen kan vise vinduer med systemmeddelelser. Ondsindede apps kan overtage hele skærmen."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"rediger global animationshastighed"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Tillader, at appen til enhver tid kan ændre den globale animationshastighed (hurtigere eller langsommere animationer)."</string>
@@ -339,26 +374,22 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Tillader, at en applikation udsteder eller tilbagekalder særlige tilladelser til den selv eller andre applikationer. Ondsindede applikationer kan bruge dette til at få adgang til funktioner uden din tilladelse."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"angive foretrukne apps"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Tillader, at appen kan ændre dine foretrukne apps. Ondsindede apps kan ubemærket ændre kørende apps derved udgive sig for at være dine eksisterende apps og på den måde indsamle private data fra dig."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"ændre systemindstillinger"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"Tillader, at appen kan ændre systemets indstillingsdata. Ondsindede apps kan ødelægge din systemkonfiguration."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"rediger sikre systemindstillinger"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Tillader, at appen kan ændrer systemets sikre indstillingsdata. Anvendes ikke af normale apps."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"rediger kortet over Google-tjenester"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"Tillader, at appen kan ændre kortet over Google-tjenester. Anvendes ikke af almindelige apps."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"køre ved opstart"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Tillader, at appen kan starte af sig selv, så snart systemet er færdig med at starte. Dette kan gøre tablettens opstartstid længere og give appen tilladelse til at gøre tabletten langsommere ved altid at lade appen køre."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Tillader, at appen kan åbne sig selv, når systemet er færdig med at starte op. Dette kan gøre opstarten af telefonen langsommere og generelt gøre systemet langsommere, når appen altid kører."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"send klæbende udsendelse"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Tillader, at appen kan sende klæbende udsendelser, der efterlades, selvom udsendelsen er slut. Ondsindede apps kan gøre din tablet langsom eller ustabil ved at tvinge den til at bruge for meget hukommelse."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Tillader, at appen kan sende klæbende udsendelser, der efterlades, når udsendelsen er slut. Ondsindede apps kan gøre din telefon langsom eller ustabil ved at tvinge den til at bruge for meget hukommelse."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
+ <string name="permlab_readContacts" msgid="8348481131899886131">"læse dine kontaktpersoner"</string>
<string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Tillader, at appen læser alle de data om dine kontaktpersoner, der er gemt på din tablet, herunder hvor ofte du har ringet til, sendt e-mail til eller på anden måde kommunikeret med bestemte individer. Dette hjælper i forbindelse med automatisk fuldførelse af e-mailadresser og andre nyttige funktioner. Ondsindede apps kan bruge denne tilladelse til at sende dine kontaktoplysninger til andre."</string>
<string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Tillader, at appen læser alle de data om dine kontaktpersoner, der er gemt på din telefon, herunder hvor ofte du har ringet til, sendt e-mail til eller på anden måde kommunikeret med bestemte individer. Dette hjælper i forbindelse med automatisk fuldførelse af e-mailadresser og andre nyttige funktioner. Ondsindede apps kan bruge denne tilladelse til at sende dine kontaktoplysninger til andre."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"ændre dine kontaktpersoner"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Tillader, at appen ændrer data om dine kontaktpersoner, der er gemt på tabletten, herunder hvor ofte du har ringet til, sendt e-mail til eller på anden måde kommunikeret med bestemte individer. Dette hjælper i forbindelse med automatisk fuldførelse af e-mailadresser og andre nyttige funktioner. Ondsindede apps kan bruge denne tilladelse til at sende dine kontaktoplysninger til andre."</string>
<string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Tillader, at appen ændrer data om dine kontaktpersoner, der er gemt på telefonen, herunder hvor ofte du har ringet til, sendt e-mail til eller på anden måde kommunikeret med bestemte individer. Dette hjælper i forbindelse med automatisk fuldførelse af e-mailadresser og andre nyttige funktioner. Ondsindede apps kan bruge denne tilladelse til at sende dine kontaktoplysninger til andre."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"læs opkaldsliste"</string>
@@ -367,11 +398,9 @@
<string name="permlab_writeCallLog" msgid="8552045664743499354">"skriv opkaldsliste"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Tillader, at appen ændrer din tablets opkaldsliste, herunder data om indgående og udgående opkald. Ondsindede apps kan bruge dette til at slette eller ændre din opkaldsliste."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Tillader, at appen ændrer telefonens opkaldsliste, herunder data om indgående og udgående opkald. Ondsindede apps kan bruge dette til at slette eller ændre din opkaldsliste."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"læse dit eget kontaktkort"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Tillader, at appen kan læse personlige profiloplysninger, der er gemt på din enhed, f.eks. dit navn og dine kontaktoplysninger. Det betyder, at appen kan identificere dig og sende dine profiloplysninger til andre."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"ændre dit eget kontaktkort"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Tillader, at appen kan ændre eller tilføje oplysninger på din personlige profil, der er gemt på din enhed, f.eks. dit navn eller kontaktoplysninger. Dette betyder, at andre apps kan identificere dig og sende profiloplysninger til andre."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"læs din sociale strøm"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Tillader, at appen kan få adgang til og synkronisere sociale opdateringer fra dig og dine venner. Ondsindede apps kan bruge dette til at læse privat kommunikation mellem dig og dine venner på sociale netværk."</string>
@@ -412,15 +441,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"tving telefon til at genstarte"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Tillader, at appen kan tvinge din tablet til at genstarte."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Tillader, at appen kan tvinge telefonen til at genstarte."</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"få adg. t USB-lagers filsystem"</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"få adgang til SD-kortets filsystem"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Tillader, at appen kan montere eller demontere filsystemer til flytbar lagring."</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"slette USB-lager"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"slette SD-kort"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Tillader, at appen kan formatere det flytbare lager."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"hente oplysninger om internt lager"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"Tillader, at appen kan få oplysninger om det interne lager."</string>
@@ -432,8 +457,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Tillader, at appen kan montere/demontere det interne lager."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"omdøbe internt lager"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"Tillader, at appen kan omdøbe det interne lager."</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"kontrollere vibration"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"Tillader, at appen kan kontrollere vibratoren."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"kontroller lommelygte"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"Tillader, at appen kan kontrollere lommelygten."</string>
@@ -458,8 +482,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"Tillader, at appen kan fortælle systemet, hvilke widgets der kan bruges af hvilke apps. En app med denne tilladelse kan give andre apps adgang til personlige data. Anvendes ikke af normale apps."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"rediger telefontilstand"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Tillader, at appen kan styre enhedens telefonfunktioner. En app med denne tilladelse kan skifte netværk, slå telefonsenderen til og fra og lignende uden at underrette dig."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"læse telefonens status og identitet"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"Tillader, at appen kan få adgang til enhedens telefonfunktioner. En app med denne tilladelse kan fastlægge telefonens telefon- og serienummer, om et opkald er aktivt, det nummer, som opkaldet er tilknyttet osv."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"afhold tabletcomputeren fra at gå i dvale"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"afholde telefonen fra at gå i dvale"</string>
@@ -474,8 +497,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Kør som en producenttest på lavt niveau. Giver fuld adgang til telefonens hardware. Kun tilgængeligt når en telefon kører i producenttesttilstand."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"angiv tapet"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"Tillader, at appen kan konfigurere systembaggrunden."</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"ændre størrelsen på din baggrund"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Tillader, at appen giver tips til systembaggrundens størrelse."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"nulstil system til fabriksstandarder"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"Tillader, at appen kan gendanne fabriksindstillingerne fuldstændigt, hvorved alle data, konfigurationer og installerede apps slettes."</string>
@@ -487,21 +509,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Tillader, at appen kan ændre tidszonen på din telefon."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"fungerer som kontoadministrationstjeneste"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"Tillader, at en app kan foretage opkald til kontogodkendere."</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"finde konti på enheden"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Tillader, at appen kan hente listen over konti, der er kendt på din tablet."</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Tillader, at appen kan hente listen over konti, der er kendt af telefonen."</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"oprette konti og angive adgangskoder"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Tillader, at en app kan bruge kontoadministratorens kontogodkendelsesegenskaber, bl.a. oprettelse af konti samt hentning og angivelse af deres adgangskoder."</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"tilføje eller fjerne konti"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"Tillader, at appen kan foretage handlinger såsom at tilføje og fjerne konti og slette adgangskoden."</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"bruge konti på enheden"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"Tillader, at appen kan anmode om godkendelsestokens."</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"få vist netværksforbindelser"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"Tillader, at appen kan vise tilstanden for alle netværk."</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"fuld internetadgang"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Tillader, at appen kan skabe netværkssockets."</string>
@@ -513,36 +530,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"Tillader, at appen kan ændre tilstand for en netværksforbindelse via netdeling."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"skift brugerindstilling for baggrundsdata"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Tillader, at appen kan ændre indstillingen for brug af baggrundsdata."</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"få vist Wi-Fi-forbindelser"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"Tillader, at appen kan få vist oplysninger om Wi-Fi-tilstanden."</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"oprette og afbryde Wi-Fi-forbindelse"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"Tillader, at appen kan oprette og afbryde forbindelsen til Wi-Fi-adgangspunkter samt foretage ændringer i konfigurerede Wi-Fi-netværk."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"tillad Wi-Fi-multicastmodtagelse"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Tillader, at appen kan modtage pakker, der ikke er direkte adresseret til din enhed. Dette kan være nyttigt ved tjenester, der tilbydes i nærheden. Der bruges mere strøm end ikke-multicasttilstanden."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"få adgang til Bluetooth-indstillinger"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Tillader, at appen kan konfigurere den lokale Bluetooth-tablet samt finde og parre med fjerne enheder."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Tillader, at appen kan konfigurere den lokale Bluetooth-telefon samt finde og parre med eksterne enheder."</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"få vist WiMAX-forbindelser"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Tillader, at appen får vist oplysninger om tilstanden for WiMAX."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"Skift WiMAX-tilstand"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Tillader, at appen opretter og afbryder forbindelse til WiMAX-netværket."</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"parre med Bluetooth-enheder"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Tillader, at appen kan se konfigurationen af den lokale Bluetooth-tablet og oprette og acceptere forbindelser med parrede enheder."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Tillader, at appen kan få vist konfigurationen af den lokale Bluetooth-telefon samt oprette og acceptere forbindelser med parrede enheder."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"kontrollere Near Field Communication"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Tillader, at appen kan kommunikere med NFC-tags (Near Field Communication), -kort og -læsere."</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"deaktivere din skærmlås"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Tillader, at appen kan deaktivere tastaturlåsen og al associeret adgangskodesikkerhed. Et legitimt eksempel på dette er, at telefonen deaktiverer tastaturlåsen ved indgående telefonopkald, og aktiverer tastaturlåsen igen, når opkaldet er afsluttet."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"læse indstillinger for synkronisering"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Tillader, at appen kan læse synkroniseringsindstillingerne, f.eks. om synkronisering er aktiveret for appen Personer."</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"slå synkronisering til og fra"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Tillader, at appen kan ændre indstillingerne for synkronisering, f.eks. om appen Personer skal synkroniseres."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"læse synkroniseringsstatistikker"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"Tillader, at appen kan læse synkroniseringsstatistikker, f.eks. synkroniseringshistorikken."</string>
@@ -550,22 +560,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Tillader, at appen kan hente oplysninger om de feeds, der synkroniseres."</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"skriv abonnerede feeds"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Tillader, at appen kan ændre dine synkroniserede feeds. Ondsindede apps kan ændre dine synkroniserede feeds."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"læse termer, som du har føjet til ordbogen"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Tillader, at appen kan læse alle private ord, navne og sætninger, som brugeren kan have gemt i brugerordbogen."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"skrive til brugerordbogen"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Tillader, at appen kan skrive nye ord i brugerordbogen."</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"læse USB-lagerets indhold"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"læse indholdet af dit SD-kort"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Tillader, at appen læser USB-lagerets indhold, herunder billeder og mediefiler."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Tillader, at appen læser SD-kortets indhold, som kan omfatte billeder og mediefiler."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"ændre eller slette indhold på USB-lager"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Lader appen skrive til USB."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Tillader, at appen kan skrive til SD-kortet."</string>
@@ -744,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Der er ikke noget SIM-kort i telefonen."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Indsæt et SIM-kort."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM-kortet mangler eller kan ikke læses. Indsæt et SIM-kort."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"Ubrugeligt SIM-kort."</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Dit SIM-kort er blevet permanent deaktiveret."\n"Kontakt din tjenesteudbyder for at få et nyt SIM-kort."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Knap til forrige nummer"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Knap til næste nummer"</string>
@@ -819,15 +824,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"Sogn"</string>
<string name="autofill_area" msgid="3547409050889952423">"Område"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"Emirat"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"læse dine webbogmærker og -historik"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Tillader, at appen kan læse alle de webadresser, som Browser har besøgt, og alle bogmærker i Browser."</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"skrive webbogmærker og -historik"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Tillader, at appen kan ændre historik eller bogmærker i Browser, som er gemt på din tablet. Ondsindede apps kan bruge dette til at slette eller ændre dine browserdata."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Tillader, at appen kan ændre browserhistorikken eller bogmærker, der er gemt på din telefon. Ondsindede apps kan bruge dette til at slette eller ændre dine browserdata."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"indstille en alarm"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"Tillader, at appen kan indstille en alarm i en installeret alarmapp. Nogle alarmapps har muligvis ikke denne funktion."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"tilføj telefonsvarer"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"Tillader, at appen kan tilføje beskeder på din telefonsvarer."</string>
@@ -1087,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Angiv dato"</string>
<string name="date_time_set" msgid="5777075614321087758">"Angiv"</string>
<string name="date_time_done" msgid="2507683751759308828">"Udført"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"Standard"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NYHED! "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NYHED! "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"Der kræves ingen tilladelser"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"Skjul"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"Vis alle"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"USB-masselager"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"USB er tilsluttet"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"Du har fået forbindelse til din computer via USB. Tryk på knappen nedenfor, hvis du vil kopiere filer mellem din computer og din Androids USB-lager."</string>
@@ -1320,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"Sender..."</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"Vil du starte browseren?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"Vil du besvare opkaldet?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index d3852bb..398313b 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"Ihre Nachrichten"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"SMS, E-Mails und andere Nachrichten lesen und schreiben"</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Ihre persönlichen Informationen"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Direkter Zugriff auf die Kontakte und den Kalender Ihres Tablets"</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Direkter Zugriff auf die Kontakte und den Kalender Ihres Telefons"</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Direkter Zugriff auf Informationen über Sie, die in Ihrer Kontaktkarte gespeichert sind"</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Ihre sozialen Informationen"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Direkter Zugriff auf Informationen über Ihre Kontakte und sozialen Verbindungen"</string>
<string name="permgrouplab_location" msgid="635149742436692049">"Ihren Standort"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"Ihren physischen Standort überwachen"</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"Netzkommunikation"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"Zugriff auf verschiedene Netzwerkfunktionen"</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Audioeinstellungen"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Audioeinstellungen ändern"</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Wirkt sich auf den Akku aus"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Funktionen nutzen, die den Akku schnell entladen"</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"Kalender"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Direkter Zugriff auf Kalender und Termine"</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Lesezeichen und Verlauf"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Direkter Zugriff auf Lesezeichen und Browserverlauf"</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Wecker"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Wecker stellen"</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Mailbox"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Direkter Zugriff auf Mailbox"</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"Mikrofon"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Direkter Zugriff auf das Mikrofon zur Audioaufnahme"</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"Kamera"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"Direkter Zugriff auf Kamera für Bild- oder Videoaufnahmen"</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Informationen zu Ihren Apps"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Einflussnahme auf das Verhalten anderer Apps auf Ihrem Gerät"</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Hintergrund"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Hintergrundeinstellungen des Geräts ändern"</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"Uhr"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Uhrzeit oder Zeitzone des Geräts ändern"</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Statusleiste"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Einstellungen in der Statusleiste des Geräts ändern"</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Synchronisierungseinstellungen"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Zugriff auf Synchronisierungseinstellungen"</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"Ihre Konten"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"Zugriff auf verfügbare Konten"</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Hardware-Steuerelemente"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Zugriff und Steuerung des Systems auf niedrigerer Ebene."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Entwickler-Tools"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Funktionen nur für App-Entwickler vorgesehen"</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"Benutzeroberfläche anderer Apps"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"Benutzeroberfläche anderer Apps beeinflussen"</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"Speicher"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Zugriff auf USB-Speicher"</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Zugriff auf SD-Karte"</string>
@@ -193,14 +238,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"Ermöglicht der App, zur Statusleiste zu werden"</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"Statusleiste ein-/ausblenden"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Ermöglicht der App, die Statusleiste ein- oder auszublenden"</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"Ausgehende Anrufe umleiten"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Ermöglicht der App, ausgehende Anrufe zu verarbeiten und die zu wählende Nummer zu ändern. Schädliche Apps können so ausgehende Anrufe überwachen, umleiten oder unterbinden."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"SMS empfangen"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"Ermöglicht der App, SMS zu empfangen und zu verarbeiten. Schädliche Apps können Ihre Nachrichten überwachen oder löschen, bevor sie angezeigt werden."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"MMS empfangen"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"Ermöglicht der App, MMS-Mitteilungen zu empfangen und zu verarbeiten. Schädliche Apps können so Ihre Nachrichten überwachen oder löschen, bevor sie angezeigt werden."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"Notfall-Broadcasts empfangen"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Ermöglicht der App, Notfall-Broadcasts zu empfangen und zu verarbeiten. Diese Berechtigung steht nur System-Apps zur Verfügung."</string>
@@ -210,16 +252,13 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"Ermöglicht der App das Senden von SMS. Bei schädlichen Apps können Kosten entstehen, wenn diese Nachrichten ohne Ihre Zustimmung versenden."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"SMS-Nachrichten ohne Bestätigung senden"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Ermöglicht der App das Senden von SMS. Bei schädlichen Apps können Kosten entstehen, wenn diese Nachrichten ohne Ihre Zustimmung versenden."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"SMS oder MMS lesen"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Ermöglicht der App, auf Ihrem Tablet oder Ihrer SIM-Karte gespeicherte SMS zu lesen. Schädliche Apps können so Ihre vertraulichen Nachrichten lesen."</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Ermöglicht der App, auf Ihrem Telefon oder Ihrer SIM-Karte gespeicherte SMS zu lesen. Schädliche Apps können so Ihre vertraulichen Nachrichten lesen."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"SMS oder MMS bearbeiten"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Ermöglicht der App, auf Ihrem Tablet oder Ihrer SIM-Karte gespeicherte SMS zu bearbeiten. Schädliche Apps können so Ihre Nachrichten löschen."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Ermöglicht der App, auf Ihrem Telefon oder Ihrer SIM-Karte gespeicherte SMS zu bearbeiten. Schädliche Apps können so Ihre Nachrichten löschen."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"Textnachrichten (WAP) empfangen"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Ermöglicht der App, WAP-Mitteilungen zu empfangen und zu verarbeiten. Schädliche Apps können so Ihre Nachrichten überwachen oder löschen, bevor sie angezeigt werden."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"aktive Apps abrufen"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"Ermöglicht der App, Informationen zu aktuellen und kürzlich ausgeführten Aufgaben abzurufen. Schädliche Apps können so geheime Informationen zu anderen Apps erhalten."</string>
@@ -235,13 +274,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Ermöglicht der App, den Bildschirmkompatibilitätsmodus anderer Apps zu steuern. Schädliche Apps können das Verhalten anderer Apps stören."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"Fehlerbeseitigung für App aktivieren"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"Ermöglicht der App, die Fehlerbeseitigung für eine andere App zu aktivieren. Schädliche Apps können so andere Apps beenden."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"System-Anzeigeeinstellungen ändern"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Ermöglicht der App, die aktuelle Konfiguration zu ändern, etwa die Sprache oder die Schriftgröße"</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"Automodus aktivieren"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"Ermöglicht der App, den Automodus zu aktivieren"</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"Andere Apps schließen"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Ermöglicht der App, Hintergrundprozesse anderer Apps auch bei ausreichendem Speicher zu beenden"</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"Beenden anderer Apps erzwingen"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Ermöglicht der App, das Beenden anderer Apps zu erzwingen"</string>
@@ -265,8 +302,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Ermöglicht der App, eine Benachrichtigung zu senden, dass eine WAP PUSH-Nachricht empfangen wurde. Schädliche Apps können so den Empfang von MMS vortäuschen oder unbemerkt den Inhalt einer beliebigen Webseite durch schädliche Inhalte ersetzen."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"Anzahl der laufenden Prozesse beschränken"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Ermöglicht der App, die maximale Anzahl an aktiven Prozessen zu steuern. Wird nie für normale Apps benötigt."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"Apps im Hintergrund schließen"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Überlässt der App die Entscheidung, ob Aktivitäten immer beendet werden, sobald sie in den Hintergrund rücken. Wird nie für normale Apps benötigt."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"Akku-Daten ändern"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"Ermöglicht der App, gesammelte Akkudaten zu ändern. Nicht für normale Apps vorgesehen."</string>
@@ -276,8 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Ermöglicht der App, die Benutzeroberfläche zur Bestätigung der vollständigen Sicherung zu starten. Kann nicht von jeder App verwendet werden."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"nicht autorisierte Fenster anzeigen"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Ermöglicht der App die Erstellung von Fenstern, die von der Benutzeroberfläche des internen Systems verwendet werden. Nicht für normale Apps vorgesehen."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"Über andere Apps ziehen"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Ermöglicht der App, Fenster mit Systemwarnungen anzuzeigen. Schädliche Apps können so den gesamten Bildschirm einnehmen."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"Allgemeine Animationsgeschwindigkeit einstellen"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Ermöglicht der App, die allgemeine Animationsgeschwindigkeit (langsamere oder schnellere Animationen) jederzeit anzupassen."</string>
@@ -339,26 +374,22 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Hiermit kann eine App sich selbst oder anderen Apps bestimmte Berechtigungen erteilen oder entziehen. Schädliche Apps können hierdurch Zugriff auf Funktionen erlangen, den Sie nicht gewährt haben."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"Bevorzugte Apps festlegen"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Ermöglicht der App, Änderungen an Ihren bevorzugten Apps vorzunehmen. Schädliche Apps können so aktive Apps ohne Ihr Wissen ändern, damit die vorhandenen Apps private Daten von Ihnen erfassen."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"Systemeinstellungen ändern"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"Ermöglicht der App, die Einstellungsdaten des Systems zu ändern. Schädliche Apps können so die Systemkonfiguration beschädigen."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"Sicherheitseinstellungen für das System ändern"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Ermöglicht der App, die Sicherheitseinstellungsdaten des Systems zu ändern. Nicht für normale Apps vorgesehen."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"Google Services Map ändern"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"Ermöglicht der App, Änderungen an der Karte für Google-Dienste vorzunehmen. Nicht für normale Apps vorgesehen."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"Beim Start ausführen"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Ermöglicht der App, sich selbst zu starten, sobald das System gebootet wurde. Dadurch kann es länger dauern, bis das Tablet gestartet wird, und durch die ständige Aktivität der App wird die gesamte Leistung des Tablets beeinträchtigt."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Ermöglicht der App, sich selbst zu starten, sobald das System gebootet wurde. Dadurch kann es länger dauern, bis das Telefon gestartet wird, und durch die ständige Aktivität der App wird die gesamte Leistung des Telefons beeinträchtigt."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"dauerhaften Broadcast senden"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Ermöglicht der App, dauerhafte Broadcasts zu senden, die auch nach Ende des Broadcasts bestehen bleiben. Schädliche Apps können das Tablet langsam oder unstabil machen, indem zuviel Speicherplatz belegt wird."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Ermöglicht der App, dauerhafte Broadcasts zu senden, die auch nach Ende des Broadcasts bestehen bleiben. Schädliche Apps können das Telefon langsam oder unstabil machen, indem zuviel Speicherplatz belegt wird."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
+ <string name="permlab_readContacts" msgid="8348481131899886131">"Kontakte lesen"</string>
<string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Ermöglicht der App, alle Daten Ihrer auf dem Tablet gespeicherten Kontakte zu lesen, einschließlich der Häufigkeit, mit der Sie angerufen, E-Mails gesendet oder auf andere Weise mit bestimmten Personen kommuniziert haben. Dadurch werden die automatische Vervollständigung von E-Mail-Adressen und andere praktische Funktionen verbessert. Schädliche Apps können mit dieser Berechtigung Ihre Kontaktdaten an andere Personen senden."</string>
<string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Ermöglicht der App, alle Daten Ihrer auf dem Telefon gespeicherten Kontakte zu lesen, einschließlich der Häufigkeit, mit der Sie angerufen, E-Mails gesendet oder auf andere Weise mit bestimmten Personen kommuniziert haben. Dadurch werden die automatische Vervollständigung von E-Mail-Adressen und andere praktische Funktionen verbessert. Schädliche Apps können mit dieser Berechtigung Ihre Kontaktdaten an andere Personen senden."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"Meine Kontakte ändern"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Ermöglicht der App, die Daten Ihrer auf dem Tablet gespeicherten Kontakte zu ändern, einschließlich der Häufigkeit, mit der Sie angerufen, E-Mails gesendet oder auf andere Weise mit bestimmten Personen kommuniziert haben. Dadurch werden die automatische Vervollständigung von E-Mail-Adressen und andere praktische Funktionen verbessert. Schädliche Apps können mit dieser Berechtigung Ihre Kontaktdaten ändern oder löschen."</string>
<string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Ermöglicht der App, die Daten Ihrer auf dem Telefon gespeicherten Kontakte zu ändern, einschließlich der Häufigkeit, mit der Sie angerufen, E-Mails gesendet oder auf andere Weise mit bestimmten Personen kommuniziert haben. Dadurch werden die automatische Vervollständigung von E-Mail-Adressen und andere praktische Funktionen verbessert. Schädliche Apps können mit dieser Berechtigung Ihre Kontaktdaten ändern oder löschen."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"Anrufprotokoll lesen"</string>
@@ -367,11 +398,9 @@
<string name="permlab_writeCallLog" msgid="8552045664743499354">"Anrufprotokoll bearbeiten"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Ermöglicht der App, das Anrufprotokoll Ihres Tablets zu ändern, einschließlich der Daten über ein- und ausgehende Anrufe. Schädliche Apps können so Ihr Anrufprotokoll löschen oder ändern."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Ermöglicht der App, das Anrufprotokoll Ihres Telefons zu ändern, einschließlich der Daten über ein- und ausgehende Anrufe. Schädliche Apps können so Ihr Anrufprotokoll löschen oder ändern."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"Meine Kontaktkarten lesen"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Ermöglicht der App, auf Ihrem Gerät gespeicherte persönliche Profilinformationen zu lesen, darunter Ihren Namen und Ihre Kontaktdaten. Die App kann Sie somit identifizieren und Ihre Profilinformationen an andere senden."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"Meine Kontaktkarten ändern"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Ermöglicht der App, auf Ihrem Gerät gespeicherte persönliche Profilinformationen zu ändern, darunter Ihren Namen und Ihre Kontaktdaten, sowie Informationen hinzuzufügen. Andere Apps können Sie so identifizieren und Ihre Profilinformationen an andere senden."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"In sozialem Stream lesen"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Ermöglicht der App, auf soziale Updates von Ihnen und Ihren Freunden zuzugreifen und diese zu synchronisieren. Schädliche Apps können so private Kommunikationen zwischen Ihnen und Ihren Freunden in sozialen Netzwerken lesen."</string>
@@ -412,15 +441,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"Neustart des Telefons erzwingen"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Ermöglicht der App, einen Neustart des Tablets zu erzwingen"</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Ermöglicht der App, einen Neustart des Telefons zu erzwingen"</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"Auf Dateisystem des USB-Speichers zugreifen"</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"Auf Dateisystem der SD-Karte zugreifen"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Ermöglicht der App, Dateisysteme für austauschbare Datenträger bereitzustellen oder die Bereitstellung aufzuheben"</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"USB-Speicher löschen"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"SD-Karteninhalt löschen"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Ermöglicht der App, austauschbare Datenträger zu formatieren"</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"Informationen zum internen Speicher abrufen"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"Ermöglicht der App, Informationen zum internen Speicher abzurufen"</string>
@@ -432,8 +457,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Ermöglicht der App, internen Speicher bereitzustellen bzw. zu trennen"</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"Internen Speicher umbenennen"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"Ermöglicht der App, den internen Speicher umzubenennen"</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"Vibrationsalarm steuern"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"Ermöglicht der App, den Vibrationsalarm zu steuern"</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"Lichtanzeige steuern"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"Ermöglicht der App, die Lichtanzeige zu steuern"</string>
@@ -458,8 +482,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"Ermöglicht der App, dem System zu melden, welche Widgets von welcher App verwendet werden können. Mit dieser Berechtigung können Apps anderen Apps Zugriff auf persönliche Daten gewähren. Nicht für normale Apps vorgesehen."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"Telefonstatus ändern"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Ermöglicht der App, die Telefonfunktionen des Geräts zu steuern. Eine App mit dieser Berechtigung kann das Netzwerk wechseln oder das Radio des Telefons ein- und ausschalten, ohne Sie darüber zu informieren."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"Telefonstatus und Identität abrufen"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"Ermöglicht der App, auf die Telefonfunktionen des Geräts zuzugreifen. Eine App mit dieser Berechtigung kann unter anderem die Telefon- und Seriennummer dieses Telefons ermitteln und feststellen, ob ein Anruf aktiv ist oder mit welcher Nummer der Anrufer verbunden ist."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"Standby-Modus des Tablets deaktivieren"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"Standby-Modus deaktivieren"</string>
@@ -474,8 +497,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Führt einen systemnahen Herstellertest durch, in dessen Rahmen auf die gesamte Telefon-Hardware zugegriffen werden kann. Nur verfügbar, wenn ein Telefon im Herstellertestmodus ausgeführt wird."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"Hintergrund festlegen"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"Ermöglicht der App, den Hintergrund des Systems festzulegen"</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"Größe des Hintergrundbildes anpassen"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Ermöglicht der App, die Größenhinweise für den Systemhintergrund festzulegen"</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"System auf Werkseinstellung zurücksetzen"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"Ermöglicht der App, das System komplett auf die Werkseinstellungen zurückzusetzen. Hierbei werden alle Daten, Konfigurationen und installierten Apps gelöscht."</string>
@@ -487,21 +509,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Ermöglicht der App, die Zeitzone des Telefons zu ändern"</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"Als Konto-Manager fungieren"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"Ermöglicht der App, Anrufe an Kontoauthentifizierer zu tätigen"</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"Konten auf dem Gerät suchen"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Ermöglicht der App, eine Liste der dem Tablet bekannten Konten abzurufen"</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Ermöglicht der App, eine Liste der dem Telefon bekannten Konten abzurufen"</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"Konten erstellen und Passwörter festlegen"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Ermöglicht der App, die Kontoauthentifizierungsfunktionen des Konto-Managers zu verwenden, einschließlich der Funktionen zum Erstellen von Konten sowie zum Abrufen und Festlegen der entsprechenden Passwörter"</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"Konten hinzufügen oder entfernen"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"Ermöglicht der App, Konten hinzuzufügen und zu entfernen oder deren Passwörter zu löschen"</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"Konten auf dem Gerät verwenden"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"Ermöglicht der App, Authentifizierungs-Token anzufordern"</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"Netzwerkverbindungen anzeigen"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"Ermöglicht der App, den Status aller Netzwerke anzuzeigen"</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"uneingeschränkter Internetzugriff"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Ermöglicht der App, Netzwerk-Sockets einzurichten"</string>
@@ -513,36 +530,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"Ermöglicht der App, den Status der Tethering-Konnektivität zu ändern"</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"Einstellung zur Verwendung von Hintergrunddaten ändern"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Ermöglicht der App, die Einstellung zur Verwendung von Hintergrunddaten zu ändern"</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"WLAN-Verbindungen anzeigen"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"Ermöglicht der App, die Informationen zum WLAN-Status einzusehen"</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"WLAN-Verbindungen herstellen und trennen"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"Ermöglicht der App, eine Verbindung zu den WLAN-Zugangspunkten herzustellen und diese zu trennen oder Änderungen an den konfigurierten WLAN-Netzwerken vorzunehmen"</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"WLAN-Multicast-Empfang zulassen"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Ermöglicht der App, Datenpakete zu empfangen, die nicht direkt an Ihr Gerät gerichtet sind. Dies kann bei der Erkennung von in der Nähe angebotenen Diensten hilfreich sein. Diese Einstellung verbraucht mehr Energie als der Nicht-Multicast-Modus."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"Auf Bluetooth-Einstellungen zugreifen"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Ermöglicht der App, das lokale Bluetooth-Tablet zu konfigurieren, Remote-Geräte zu erkennen und eine Verbindung zu diesen herzustellen"</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Ermöglicht der App, das lokale Bluetooth-Telefon zu konfigurieren, Remote-Geräte zu erkennen und eine Verbindung zu diesen herzustellen"</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"WiMAX-Verbindungen anzeigen"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Ermöglicht der App, Informationen über den Status von WiMAX anzuzeigen"</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"WiMAX-Status ändern"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Ermöglicht der App, eine Verbindung mit dem WiMAX-Netzwerk herzustellen bzw. zu trennen"</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"Pairing mit Bluetooth-Geräten durchführen"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Ermöglicht der App, die Konfiguration des lokalen Bluetooth-Tablets einzusehen und Verbindungen zu Partnergeräten herzustellen und zu akzeptieren"</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Ermöglicht der App, die Konfiguration des lokalen Bluetooth-Telefons einzusehen und Verbindungen mit Partnergeräten herzustellen und zu akzeptieren"</string>
<string name="permlab_nfc" msgid="4423351274757876953">"Nahfeldkommunikation steuern"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Ermöglicht der App die Kommunikation mit Tags für die Nahfeldkommunikation, Karten und Readern"</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"Bildschirmsperre deaktivieren"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Ermöglicht der App, die Tastensperre sowie den damit verbundenen Passwortschutz zu deaktivieren. So wird zum Beispiel die Tastensperre des Telefons deaktiviert, wenn ein Anruf eingeht, und nach Beendigung des Anrufs wieder aktiviert."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"Synchronisierungseinstellungen lesen"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Ermöglicht der App, die Synchronisierungseinstellungen zu lesen, etwa ob die Synchronisierung für die App \"Personen\" aktiviert ist oder nicht"</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"Synchronisierung aktivieren oder deaktivieren"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Ermöglicht der App, die Synchronisierungseinstellungen zu ändern, etwa ob die Synchronisierung für die App \"Personen\" aktiviert ist oder nicht"</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"Synchronisierungsstatistiken lesen"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"Ermöglicht der App, die Synchronisierungsstatistiken zu lesen, etwa den Verlauf der bereits durchgeführten Synchronisierungen"</string>
@@ -550,22 +560,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Ermöglicht der App, Details zu den zurzeit synchronisierten Feeds abzurufen"</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"abonnierte Feeds schreiben"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Ermöglicht der App, Änderungen an kürzlich synchronisierten Feeds vorzunehmen. Schädliche Apps können so Ihre synchronisierten Feeds ändern."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"Begriffe lesen, die Sie zum Wörterbuch hinzugefügt haben"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Ermöglicht der App, alle privaten Wörter, Namen und Ausdrücke zu lesen, die ein Nutzer in seinem Wörterbuch gespeichert hat"</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"In benutzerdefiniertes Wörterbuch schreiben"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Ermöglicht der App, dem Nutzerwörterbuch neue Einträge hinzuzufügen"</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"USB-Speicherinhalte lesen"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"SD-Karteninhalte lesen"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Ermöglicht der App, die Inhalte des USB-Speichers einschließlich Fotos und Medien, zu lesen"</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Ermöglicht der App, die Inhalte der SD-Karte einschließlich Fotos und Medien, zu lesen"</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"USB-Speicherinhalte ändern oder löschen"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Ermöglicht der App, in den USB-Speicher zu schreiben"</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Ermöglicht der App, auf die SD-Karte zu schreiben"</string>
@@ -744,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Keine SIM-Karte im Telefon"</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Legen Sie eine SIM-Karte ein."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM-Karte fehlt oder ist nicht lesbar. Bitte legen Sie eine SIM-Karte ein."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"SIM-Karte unbrauchbar"</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Ihre SIM-Karte wurde dauerhaft deaktiviert."\n" Wenden Sie sich an Ihren Mobilfunkanbieter, um eine andere SIM-Karte zu erhalten."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Schaltfläche für vorherigen Track"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Schaltfläche für nächsten Track"</string>
@@ -819,15 +824,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"Gemeinde"</string>
<string name="autofill_area" msgid="3547409050889952423">"Gebiet"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"Emirat"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"Lesezeichen für Webseiten und das Webprotokoll lesen"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Ermöglicht der App, alle URLs, die mit dem Browser besucht wurden, sowie alle Lesezeichen des Browsers zu lesen"</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"Lesezeichen für Webseiten setzen und das Webprotokoll aufzeichnen"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Ermöglicht der App, den auf Ihrem Tablet gespeicherten Browserverlauf oder die gespeicherten Lesezeichen zu ändern. Schädliche Apps können so Ihre Browserdaten löschen oder ändern."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Ermöglicht der App, den auf Ihrem Telefon gespeicherten Browserverlauf und die gespeicherten Lesezeichen zu ändern. Schädliche Apps können so Ihre Browserdaten löschen oder ändern."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"Wecker stellen"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"Ermöglicht der App, einen Alarm in einer installierten Wecker-App einzurichten. Einige Wecker-Apps implementieren diese Funktion möglicherweise nicht."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"Mailbox-Nachrichten hinzufügen"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"Ermöglicht der App, Nachrichten zu Ihrem Mailbox-Posteingang hinzuzufügen"</string>
@@ -988,7 +990,7 @@
<string name="chooseUsbActivity" msgid="6894748416073583509">"App für USB-Gerät auswählen"</string>
<string name="noApplications" msgid="2991814273936504689">"Diese Aktion kann von keiner App ausgeführt werden."</string>
<string name="aerr_title" msgid="1905800560317137752"></string>
- <string name="aerr_application" msgid="932628488013092776">"Leider wurde \"<xliff:g id="APPLICATION">%1$s</xliff:g>\" beendet."</string>
+ <string name="aerr_application" msgid="932628488013092776">"\"<xliff:g id="APPLICATION">%1$s</xliff:g>\" wurde leider beendet."</string>
<string name="aerr_process" msgid="4507058997035697579">"Leider wurde der Prozess <xliff:g id="PROCESS">%1$s</xliff:g> beendet."</string>
<string name="anr_title" msgid="4351948481459135709"></string>
<string name="anr_activity_application" msgid="1904477189057199066">"<xliff:g id="APPLICATION">%2$s</xliff:g> reagiert nicht."\n\n"Möchten Sie die App schließen?"</string>
@@ -1010,7 +1012,7 @@
<string name="android_upgrading_title" msgid="1584192285441405746">"Android wird aktualisiert..."</string>
<string name="android_upgrading_apk" msgid="7904042682111526169">"App <xliff:g id="NUMBER_0">%1$d</xliff:g> von <xliff:g id="NUMBER_1">%2$d</xliff:g> wird optimiert."</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"Apps werden gestartet."</string>
- <string name="android_upgrading_complete" msgid="1405954754112999229">"Start wird abgeschlossen."</string>
+ <string name="android_upgrading_complete" msgid="1405954754112999229">"Start wird abgeschlossen..."</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g> läuft"</string>
<string name="heavy_weight_notification_detail" msgid="1721681741617898865">"Zum Wechseln in die App berühren"</string>
<string name="heavy_weight_switcher_title" msgid="7153167085403298169">"Apps wechseln?"</string>
@@ -1087,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Datum festlegen"</string>
<string name="date_time_set" msgid="5777075614321087758">"Speichern"</string>
<string name="date_time_done" msgid="2507683751759308828">"Fertig"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"Standard"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"Neu: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"Neu: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"Keine Berechtigungen erforderlich"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"Ausblenden"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"Alle anzeigen"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"USB-Massenspeicher"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"USB-Verbindung"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"Sie haben eine USB-Verbindung mit Ihrem Computer hergestellt. Berühren Sie die Schaltfläche unten, wenn Sie Dateien von Ihrem Computer in den USB-Speicher Ihres Android-Geräts und umgekehrt kopieren möchten."</string>
@@ -1320,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"Wird gesendet..."</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"Browser starten?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"Anruf annehmen?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index 757d3e6..05dcf69 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"Τα μηνύματά σας"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"Ανάγνωση και εγγραφή μηνυμάτων SMS, μηνυμάτων ηλεκτρονικού ταχυδρομείου και άλλων μηνυμάτων."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Οι προσωπικές σας πληροφορίες"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Άμεση πρόσβαση στις επαφές και στο ημερολόγιό σας που είναι αποθηκευμένα στο tablet."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Άμεση πρόσβαση στις επαφές και στο ημερολόγιό σας που είναι αποθηκευμένα στο τηλέφωνο."</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Άμεση πρόσβαση σε πληροφορίες σχετικά με εσάς, οι οποίες είναι αποθηκευμένες στην κάρτα επαφών σας."</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Οι κοινωνικές πληροφορίες σας"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Άμεση πρόσβαση σε πληροφορίες σχετικά με τις επαφές και τις κοινωνικές συνδέσεις σας."</string>
<string name="permgrouplab_location" msgid="635149742436692049">"Η τοποθεσία σας"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"Παρακολούθηση της φυσικής τοποθεσίας σας."</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"Επικοινωνία δικτύου"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"Πρόσβαση σε διάφορες λειτουργίες δικτύου."</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Ρυθμίσεις ήχου"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Αλλαγή ρυθμίσεων ήχου."</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Επηρεάζει την μπαταρία"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Χρήση λειτουργιών που μπορούν να εξαντλήσουν γρήγορα την μπαταρία."</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"Ημερολόγιο"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Άμεση πρόσβαση σε ημερολόγιο και συμβάντα."</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Σελιδοδείκτες και ιστορικό"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Άμεση πρόσβαση σε σελιδοδείκτες και ιστορικού προγράμματος περιήγησης."</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Ξυπνητήρι"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Ρύθμιση ξυπνητηριού."</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Αυτόματος τηλεφωνητής"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Άμεση πρόσβαση στον αυτόματο τηλεφωνητή."</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"Μικρόφωνο"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Άμεση πρόσβαση στο μικρόφωνο για την εγγραφή ήχου."</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"Κάμερα"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"Άμεση πρόσβαση σε κάμερα για λήψη εικόνας ή βίντεο."</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Οι πληροφορίες των εφαρμογών σας"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Δυνατότητα επιρροής συμπεριφοράς άλλων εφαρμογών στη συσκευή σας."</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Ταπετσαρία"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Αλλαγή των ρυθμίσεων ταπετσαρίας συσκευής."</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"Ρολόι"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Αλλαγή της ώρας ή της ζώνης ώρας συσκευής."</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Γραμμή κατάστασης"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Αλλαγή των ρυθμίσεων γραμμής κατάστασης συσκευής."</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Ρυθμίσεις συγχρονισμού"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Πρόσβαση στις ρυθμίσεις συγχρονισμού."</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"Οι λογαριασμοί σας"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"Πρόσβαση στους διαθέσιμους λογαριασμούς."</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Στοιχεία ελέγχου υλικού"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Χαμηλού επιπέδου πρόσβαση και έλεγχος του συστήματος."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Εργαλεία ανάπτυξης"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Δυνατότητες που είναι απαραίτητες μόνο σε προγραμματιστές εφαρμογών."</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"Άλλες διεπαφές εφαρμογών"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"Επιρροή διεπαφής άλλων εφαρμογών."</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"Αποθηκευτικός χώρος"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Πρόσβαση στον χώρο αποθ. USB."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Πρόσβαση στην κάρτα SD."</string>
@@ -193,14 +238,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"Επιτρέπει στην εφαρμογή να αποτελεί τη γραμμή κατάστασης."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"ανάπτυξη/σύμπτυξη γραμμής κατάστασης"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Επιτρέπει στην εφαρμογή να αναπτύξει ή να συμπτύξει τη γραμμή κατάστασης."</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"αναδρομολόγηση εξερχόμενων κλήσεων"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Επιτρέπει στην εφαρμογή την επεξεργασία εξερχόμενων κλήσεων και την αλλαγή του αριθμού που προορίζεται για κλήση. Τυχόν κακόβουλες εφαρμογές ενδέχεται να παρακολουθούν, να ανακατευθύνουν ή να αποτρέπουν τις εξερχόμενες κλήσεις."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"λήψη μηνυμάτων κειμένου (SMS)"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"Επιτρέπει στην εφαρμογή τη λήψη και την επεξεργασία μηνυμάτων SMS. Τυχόν κακόβουλες εφαρμογές ενδέχεται να παρακολουθούν τα μηνύματά σας ή να τα διαγράφουν χωρίς να εμφανίζονται πρώτα σε εσάς."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"λήψη μηνυμάτων κειμένου (MMS)"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"Επιτρέπει στην εφαρμογή τη λήψη και την επεξεργασία μηνυμάτων MMS. Τυχόν κακόβουλες εφαρμογές ενδέχεται να παρακολουθούν τα μηνύματά σας ή να τα διαγράφουν χωρίς να εμφανίζονται πρώτα σε εσάς."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"λαμβάνει τις μεταδόσεις σε περιπτώσεις έκτακτης ανάγκης"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Επιτρέπει στην εφαρμογή τη λήψη και την επεξεργασία μηνυμάτων μετάδοσης. Αυτή η άδεια διατίθεται μόνο για εφαρμογές συστήματος."</string>
@@ -210,16 +252,13 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"Επιτρέπει στην εφαρμογή την αποστολή μηνυμάτων SMS. Τυχόν κακόβουλες εφαρμογές ενδέχεται να κοστίσουν μέσω της αποστολής μηνυμάτων χωρίς δική σας επιβεβαίωση."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"αποστολή μηνυμάτων SMS χωρίς επιβεβαίωση"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Επιτρέπει στην εφαρμογή την αποστολή μηνυμάτων SMS. Τυχόν κακόβουλες εφαρμογές ενδέχεται να κοστίσουν μέσω της αποστολής μηνυμάτων χωρίς δική σας επιβεβαίωση."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"ανάγνωση των μηνυμάτων κειμένου σας (SMS ή MMS)"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Επιτρέπει στην εφαρμογή την ανάγνωση μηνυμάτων SMS τα οποία βρίσκονται αποθηκευμένα στο tablet σας ή στην κάρτα SIM. Τυχόν κακόβουλες εφαρμογές ενδέχεται να διαβάσουν τα απόρρητα μηνύματά σας."</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Επιτρέπει στην εφαρμογή την ανάγνωση μηνυμάτων SMS τα οποία βρίσκονται αποθηκευμένα στο τηλέφωνό σας ή στην κάρτα SIM. Τυχόν κακόβουλες εφαρμογές ενδέχεται να διαβάσουν τα απόρρητα μηνύματά σας."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"επεξεργασία των μηνυμάτων κειμένου σας (SMS ή MMS)"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Επιτρέπει στην εφαρμογή την εγγραφή σε μηνύματα SMS που είναι αποθηκευμένα στο tablet σας ή στην κάρτα SIM. Τυχόν κακόβουλες εφαρμογές ενδέχεται να διαγράψουν τα μηνύματά σας."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Επιτρέπει στην εφαρμογή την εγγραφή σε μηνύματα SMS που είναι αποθηκευμένα στο τηλέφωνό σας ή στην κάρτα SIM. Τυχόν κακόβουλες εφαρμογές ενδέχεται να διαγράψουν τα μηνύματά σας."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"λήψη μηνυμάτων κειμένου (WAP)"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Επιτρέπει στην εφαρμογή τη λήψη και την επεξεργασία μηνυμάτων WAP. Τυχόν κακόβουλες εφαρμογές ενδέχεται να παρακολουθούν τα μηνύματά σας ή να τα διαγράφουν χωρίς να εμφανίζονται πρώτα σε εσάς."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"ανάκτηση εκτελούμενων εφαρμογών"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"Επιτρέπει στην εφαρμογή να ανακτήσει πληροφορίες σχετικά με τις τρέχουσες εκτελούμενες εργασίες και στις εργασίες που έχουν πρόσφατα εκτελεστεί. Τυχόν κακόβουλες εφαρμογές ενδέχεται να ανακαλύψουν ιδιωτικές πληροφορίες σχετικά με άλλες εφαρμογές."</string>
@@ -235,13 +274,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Επιτρέπει στην εφαρμογή να ελέγξει τη λειτουργία συμβατότητας της οθόνης με άλλες εφαρμογές. Οι κακόβουλες εφαρμογές μπορεί να επηρεάσουν τη συμπεριφορά άλλων εφαρμογών."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"ενεργοποίηση εντοπισμού σφαλμάτων εφαρμογής"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"Επιτρέπει στην εφαρμογή να ενεργοποιήσει τον εντοπισμό σφαλμάτων για μια άλλη εφαρμογή. Τυχόν κακόβουλες εφαρμογές ενδέχεται να χρησιμοποιήσουν αυτήν τη δυνατότητα για τον τερματισμό άλλων εφαρμογών."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"αλλαγή ρυθμίσεων προβολής συστήματος"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Επιτρέπει στην εφαρμογή την αλλαγή της τρέχουσας διαμόρφωσης, όπως είναι οι τοπικές ρυθμίσεις ή το μέγεθος γραμματοσειράς γενικά."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"ενεργοποίηση λειτουργίας αυτοκινήτου"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"Επιτρέπει στην εφαρμογή την ενεργοποίηση της λειτουργίας αυτοκινήτου."</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"κλείσιμο των άλλων εφαρμογών"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Επιτρέπει στην εφαρμογή τον τερματισμό των διεργασιών παρασκηνίου άλλων εφαρμογών, ακόμα και αν η μνήμη είναι επαρκής."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"επιβολή διακοπής άλλων εφαρμογών"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Επιτρέπει στην εφαρμογή να πραγματοποιήσει αναγκαστική διακοπή άλλων εφαρμογών."</string>
@@ -265,8 +302,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Επιτρέπει στην εφαρμογή τη μετάδοση μιας ειδοποίησης ότι έχει ληφθεί κάποιο μήνυμα WAP PUSH. Τυχόν κακόβουλες εφαρμογές ενδέχεται να χρησιμοποιήσουν αυτήν τη δυνατότητα για τη λήψη πλαστών μηνυμάτων MMS ή την εν αγνοία του χρήστη αντικατάσταση του περιεχομένου οποιασδήποτε ιστοσελίδας με κακόβουλες παραλλαγές."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"περιορισμός αριθμού εκτελούμενων διαδικασιών"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Επιτρέπει στην εφαρμογή τον έλεγχο του μέγιστου αριθμού διαδικασιών που θα εκτελούνται. Δεν είναι απαραίτητο για συνήθεις εφαρμογές."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"αναγκαστικός τερματισμός εφαρμογών στο παρασκήνιο"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Επιτρέπει στην εφαρμογή να ελέγχει αν οι δραστηριότητες ολοκληρώνονται πάντοτε μόλις μεταβούν στο φόντο. Δεν απαιτείται για συνήθεις εφαρμογές."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"τροποποίηση στατιστικών μπαταρίας"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"Επιτρέπει στην εφαρμογή την τροποποίηση στατιστικών μπαταρίας που έχουν συλλεχθεί. Δεν πρέπει να χρησιμοποιείται από συνήθεις εφαρμογές."</string>
@@ -276,8 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Επιτρέπει στην εφαρμογή την εκκίνηση της διεπαφής χρήστη επιβεβαίωσης δημιουργίας αντιγράφου ασφαλείας. Δεν προορίζεται για χρήση από οποιαδήποτε εφαρμογή."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"προβολή μη εξουσιοδοτημένων παραθύρων"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Επιτρέπει στην εφαρμογή τη δημιουργία παραθύρων τα οποία προορίζονται για χρήση από τη διεπαφή χρήστη του εσωτερικού συστήματος. Δεν προορίζεται για χρήση με συνήθεις εφαρμογές."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"σχεδίαση πάνω σε άλλες εφαρμογές"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Επιτρέπει στην εφαρμογή την εμφάνιση παραθύρων ειδοποίησης συστήματος. Τυχόν κακόβουλες εφαρμογές ενδέχεται εμφανιστούν σε ολόκληρη την οθόνη του τηλεφώνου."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"τροποποίηση καθολικής ταχύτητας κίνησης εικόνας"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Επιτρέπει στην εφαρμογή την αλλαγή της καθολικής ταχύτητας κίνησης (ταχύτερη ή βραδύτερη κίνηση) οποιαδήποτε στιγμή."</string>
@@ -339,26 +374,22 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Επιτρέπει σε μια εφαρμογή να εκχωρήσει ή να ανακαλέσει ειδικά δικαιώματα για αυτήν ή για άλλες εφαρμογές. Οι κακόβουλες εφαρμογές μπορεί να το χρησιμοποιήσουν αυτό ώστε να αποκτήσουν πρόσβαση σε λειτουργίες για τις οποίες δεν τους έχει εκχωρηθεί δικαίωμα."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"ορισμός προτιμώμενων εφαρμογών"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Επιτρέπει στην εφαρμογή την τροποποίηση των εφαρμογών της προτίμησής σας. Τυχόν κακόβουλες εφαρμογές ενδέχεται να να αλλάξουν χωρίς ειδοποίηση τις εφαρμογές που εκτελούνται, \"ξεγελώντας\" τις υπάρχουσες εφαρμογές ώστε να συλλέξουν ιδιωτικά δεδομένα από εσάς."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"τροποποίηση ρυθμίσεων συστήματος"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"Επιτρέπει στην εφαρμογή την τροποποίηση των δεδομένων των ρυθμίσεων του συστήματος. Τυχόν κακόβουλες εφαρμογές ενδέχεται να καταστρέψουν τη διαμόρφωση του συστήματός σας."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"τροποποίηση ασφαλών ρυθμίσεων συστήματος"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Επιτρέπει στην εφαρμογή την τροποποίηση των δεδομένων των ρυθμίσεων του συστήματος. Δεν προορίζεται για χρήση από συνήθεις εφαρμογές."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"μετατροπή του χάρτη υπηρεσιών Google"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"Επιτρέπει στην εφαρμογή την τροποποίηση του χάρτη υπηρεσιών Google. Δεν προορίζεται για χρήση από συνήθεις εφαρμογές."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"εκτέλεση κατά την έναρξη"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Επιτρέπει στην εφαρμογή να εκκινηθεί αμέσως μόλις ολοκληρωθεί η εκκίνηση του συστήματος. Αυτό ενδέχεται να καθυστερήσει την εκκίνηση του tablet και να προκαλέσει γενική μείωση της ταχύτητας λειτουργίας του tablet, καθώς η εφαρμογή θα εκτελείται συνεχώς."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Επιτρέπει στην εφαρμογή να εκκινηθεί αμέσως μόλις ολοκληρωθεί η εκκίνηση του συστήματος. Αυτό ενδέχεται να καθυστερήσει την εκκίνηση του τηλεφώνου και να προκαλέσει γενική μείωση της ταχύτητας λειτουργίας του τηλεφώνου, καθώς η εφαρμογή θα εκτελείται συνεχώς."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"αποστολή εκπομπής sticky"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Επιτρέπει στην εφαρμογή την αποστολή εκπομπών sticky, οι οποίες παραμένουν μετά το τέλος της εκπομπής. Τυχόν κακόβουλες εφαρμογές ενδέχεται να καταστήσουν τη λειτουργία του tablet αργή ή ασταθή προκαλώντας τη χρήση μεγάλου τμήματος της μνήμης."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Επιτρέπει στην εφαρμογή την αποστολή εκπομπών sticky, οι οποίες παραμένουν μετά το τέλος της εκπομπής. Τυχόν κακόβουλες εφαρμογές ενδέχεται να καταστήσουν τη λειτουργία του τηλεφώνου αργή ή ασταθή προκαλώντας τη χρήση μεγάλου τμήματος της μνήμης."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
+ <string name="permlab_readContacts" msgid="8348481131899886131">"ανάγνωση των επαφών σας"</string>
<string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Επιτρέπει στην εφαρμογή να διαβάζει όλα τα δεδομένα σχετικά με τις επαφές που έχουν αποθηκευτεί στο tablet σας, συμπεριλαμβανομένης της συχνότητας με την οποία κάνατε κλήσεις, στείλατε μηνύματα ηλεκτρονικού ταχυδρομείου ή επικοινωνήσατε με άλλους τρόπους με συγκεκριμένα άτομα. Αυτό βοηθάει με την αυτόματη συμπλήρωση των διευθύνσεων ηλεκτρονικού ταχυδρομείου και άλλες χρήσιμες λειτουργίες. Οι κακόβουλες εφαρμογές μπορούν να χρησιμοποιήσουν αυτήν την άδεια για να στείλουν τα στοιχεία επικοινωνίας σας σε άλλα άτομα."</string>
<string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Δίνει τη δυνατότητα στην εφαρμογή να διαβάζει όλα τα δεδομένα σχετικά με τις επαφές σας που έχουν αποθηκευτεί στο τηλέφωνό σας, συμπεριλαμβανομένης της συχνότητας με την οποία κάνατε κλήσεις, στείλατε μηνύματα ηλεκτρονικού ταχυδρομείου ή επικοινωνήσατε με άλλους τρόπους με συγκεκριμένα άτομα. Αυτό βοηθάει με την αυτόματη συμπλήρωση των διευθύνσεων ηλεκτρονικού ταχυδρομείου και άλλες χρήσιμες λειτουργίες. Οι κακόβουλες εφαρμογές μπορούν να χρησιμοποιήσουν αυτήν την άδεια για να στείλουν τα στοιχεία επικοινωνίας σας σε άλλα άτομα."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"τροποποίηση των επαφών σας"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Επιτρέπει στην εφαρμογή να τροποποιεί τα δεδομένα σχετικά με τις επαφές σας που έχουν αποθηκευτεί στο tablet σας, συμπεριλαμβανομένης της συχνότητας με την οποία κάνατε κλήσεις, στείλατε μηνύματα ηλεκτρονικού ταχυδρομείου ή επικοινωνήσατε με άλλους τρόπους με συγκεκριμένα άτομα. Αυτό βοηθάει με την αυτόματη συμπλήρωση των διευθύνσεων ηλεκτρονικού ταχυδρομείου και άλλες χρήσιμες λειτουργίες. Οι κακόβουλες εφαρμογές μπορούν να χρησιμοποιήσουν αυτήν την άδεια για να διαγράψουν ή να τροποποιήσουν τα στοιχεία επικοινωνίας σας."</string>
<string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Επιτρέπει στην εφαρμογή να τροποποιεί τα δεδομένα σχετικά με τις επαφές σας που έχουν αποθηκευτεί στο τηλέφωνό σας, συμπεριλαμβανομένης της συχνότητας με την οποία κάνατε κλήσεις, στείλατε μηνύματα ηλεκτρονικού ταχυδρομείου ή επικοινωνήσατε με άλλους τρόπους με συγκεκριμένα άτομα. Αυτό βοηθάει με την αυτόματη συμπλήρωση των διευθύνσεων ηλεκτρονικού ταχυδρομείου και άλλες χρήσιμες λειτουργίες. Οι κακόβουλες εφαρμογές μπορούν να χρησιμοποιήσουν αυτήν την άδεια για να διαγράψουν ή να τροποποιήσουν τα στοιχεία επικοινωνίας σας."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"ανάγνωση αρχείου καταγραφής κλήσεων"</string>
@@ -367,11 +398,9 @@
<string name="permlab_writeCallLog" msgid="8552045664743499354">"εγγραφή αρχείου καταγραφής κλήσεων"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Επιτρέπει στην εφαρμογή να τροποποιεί το αρχείο καταγραφής κλήσεων του tablet σας, συμπεριλαμβανομένων των δεδομένων σχετικά με τις εισερχόμενες και τις εξερχόμενες κλήσεις. Οι κακόβουλες εφαρμογές μπορεί να το χρησιμοποιήσουν για να διαγράψουν ή να τροποποιήσουν το αρχείο καταγραφής κλήσεων."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Επιτρέπει στην εφαρμογή να τροποποιεί το αρχείο καταγραφής κλήσεων του τηλεφώνου σας, συμπεριλαμβανομένων των δεδομένων σχετικά με τις εισερχόμενες και τις εξερχόμενες κλήσεις. Οι κακόβουλες εφαρμογές μπορεί να το χρησιμοποιήσουν για να διαγράψουν ή να τροποποιήσουν το αρχείο καταγραφής κλήσεων."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"ανάγνωση της κάρτας επαφής σας"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Επιτρέπει στην εφαρμογή την ανάγνωση προσωπικών πληροφοριών προφίλ οι οποίες είναι αποθηκευμένες στη συσκευή σας, όπως το όνομα και τα στοιχεία επικοινωνίας σας. Αυτό σημαίνει ότι η εφαρμογή μπορεί να σας αναγνωρίσει και να στείλει τις πληροφορίες σας προφίλ σε άλλους."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"τροποποίηση κάρτας επαφής"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Επιτρέπει στην εφαρμογή την αλλαγή ή την προσθήκη προσωπικών πληροφοριών προφίλ οι οποίες είναι αποθηκευμένες στη συσκευή σας, όπως το όνομα και τα στοιχεία επικοινωνίας σας. Αυτό σημαίνει ότι οι άλλες εφαρμογές μπορούν να σας αναγνωρίσουν και να στείλουν τις πληροφορίες σας προφίλ σε άλλους."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"διαβάστε τη ροή σας κοινωνικών δικτύων"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Επιτρέπει στην εφαρμογή να έχει πρόσβαση και να συγχρονίζει τις ενημερώσεις κοινωνικού περιεχομένου από τους φίλους σας. Τυχόν κακόβουλες εφαρμογές ενδέχεται να χρησιμοποιήσουν αυτήν τη δυνατότητα για να διαβάσουν απόρρητες επικοινωνίες μεταξύ εσάς και των φίλων σας σε κοινωνικά δίκτυα."</string>
@@ -412,15 +441,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"αναγκαστική επανεκκίνηση τηλεφώνου"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Επιτρέπει στην εφαρμογή να προκαλέσει αναγκαστική επανεκκίνηση του tablet."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Επιτρέπει στην εφαρμογή να προκαλέσει αναγκαστική επανεκκίνηση του τηλεφώνου."</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"πρόσβ. σε σύστ.αρχ.αποθ.χώρ.USB"</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"πρόσβαση στο σύστημα αρχείων της κάρτας SD"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Επιτρέπει στην εφαρμογή τη σύνδεση και αποσύνδεση συστημάτων αρχείων για αφαιρούμενο χώρο αποθήκευσης."</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"διαγραφή αποθ. χώρου USB"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"διαγραφή κάρτας SD"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Επιτρέπει στην εφαρμογή τη διαμόρφωση αφαιρούμενου χώρου αποθήκευσης."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"λήψη πληροφοριών στον εσωτερικό χώρο αποθήκευσης"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"Επιτρέπει στην εφαρμογή τη λήψη πληροφοριών στον εσωτερικό χώρο αποθήκευσης."</string>
@@ -432,8 +457,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Επιτρέπει στην εφαρμογή τη σύνδεση/αποσύνδεση του εσωτερικού χώρου αποθήκευσης."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"μετονομασία εσωτερικού αποθηκευτικού χώρου"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"Επιτρέπει στην εφαρμογή τη μετονομασία του εσωτερικού χώρου αποθήκευσης."</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"έλεγχος δόνησης"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"Επιτρέπει στην εφαρμογή τον έλεγχο της δόνησης."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"έλεγχος φακού"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"Επιτρέπει στην εφαρμογή τον έλεγχο του φακού."</string>
@@ -458,8 +482,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"Επιτρέπει στην εφαρμογή να ορίσει στο σύστημα ποια γραφικά στοιχεία μπορεί να χρησιμοποιήσει κάθε εφαρμογή. Με αυτή την άδεια, οι εφαρμογές μπορούν να παρέχουν πρόσβαση σε προσωπικά δεδομένα σε άλλες εφαρμογές. Δεν προορίζεται για χρήση με συνήθεις εφαρμογές."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"τροποποίηση κατάστασης τηλεφώνου"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Επιτρέπει στην εφαρμογή να ελέγχει τις λειτουργίες τηλεφώνου της συσκευής. Μια εφαρμογή η οποία διαθέτει αυτήν την άδεια μπορεί να κάνει εναλλαγή μεταξύ δικτύων, να ενεργοποιεί και να απενεργοποιεί το ραδιόφωνο του τηλεφώνου και άλλα, χωρίς να ειδοποιείστε."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"ανάγνωση κατάστασης και ταυτότητας τηλεφώνου"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"Επιτρέπει στην εφαρμογή την πρόσβαση στις λειτουργίες τηλεφώνου της συσκευής. Μια εφαρμογή με αυτή την άδεια μπορεί να προσδιορίσει τον τηλεφωνικό και τον σειριακό αριθμό του τηλεφώνου, αν μια κλήση είναι ενεργή ή όχι, τον τηλεφωνικό αριθμό της κλήσης κλπ."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"παρεμπόδιση μετάβασης του tablet σε κατάσταση αδράνειας"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"παρεμπόδιση μετάβασης του τηλεφώνου σε κατάσταση αδράνειας"</string>
@@ -474,8 +497,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Εκτέλεση ως χαμηλού επιπέδου δοκιμή κατασκευαστή, ώστε να επιτρέπεται πλήρης πρόσβαση στο υλικό του τηλεφώνου. Διαθέσιμο μόνο όταν το τηλέφωνο βρίσκεται σε λειτουργία δοκιμής κατασκευαστή."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"ορισμός ταπετσαρίας"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"Επιτρέπει στην εφαρμογή τον ορισμό της ταπετσαρίας συστήματος."</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"ρύθμιση του μεγέθους της ταπετσαρίας σας"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Επιτρέπει στην εφαρμογή τον ορισμό συμβουλών μεγέθους ταπετσαρίας συστήματος."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"επαναφορά συστήματος στις εργοστασιακές προεπιλογές"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"Επιτρέπει στην εφαρμογή την πλήρη επαναφορά του συστήματος στις εργοστασιακές του ρυθμίσεις, τη διαγραφή όλων των δεδομένων, τη διαμόρφωση και τις εγκατεστημένες εφαρμογές."</string>
@@ -487,21 +509,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Επιτρέπει στην εφαρμογή την αλλαγή της ζώνης ώρας του τηλεφώνου."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"ενεργεί ως AccountManagerService"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"Επιτρέπει στην εφαρμογή την πραγματοποίηση κλήσεων σε προγράμματα ελέγχου ταυτότητας λογαριασμού (AccountAuthenticators)."</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"εύρεση λογαριασμών στη συσκευή"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Επιτρέπει στην εφαρμογή να λάβει τη λίστα λογαριασμών του tablet."</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Επιτρέπει στην εφαρμογή να λάβει τη λίστα λογαριασμών του τηλεφώνου."</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"δημιουργία λογαριασμών και ορισμός κωδικών πρόσβασης"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Επιτρέπει στην εφαρμογή τη χρήση των δυνατοτήτων του προγράμματος ελέγχου ταυτότητας λογαριασμού του AccountManager, συμπεριλαμβανομένης της δημιουργίας λογαριασμών και της λήψης και ρύθμισης των κωδικών πρόσβασής τους."</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"προσθήκη ή κατάργηση λογαριασμών"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"Επιτρέπει στην εφαρμογή να εκτελεί ενέργειες όπως προσθήκη και κατάργηση λογαριασμών και διαγραφή των κωδικών πρόσβασής τους."</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"χρήση λογαριασμών στη συσκευή"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"Επιτρέπει στην εφαρμογή να ζητά διακριτικά ελέγχου ταυτότητας."</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"προβολή συνδέσεων δικτύου"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"Επιτρέπει στην εφαρμογή την προβολή της κατάστασης όλων των δικτύων."</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"πλήρης πρόσβαση στο Διαδίκτυο"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Επιτρέπει στην εφαρμογή τη δημιουργία υποδοχών δικτύου (sockets)."</string>
@@ -513,36 +530,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"Επιτρέπει στην εφαρμογή την αλλαγή της κατάστασης συνδεσιμότητας δικτύου."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"αλλαγή ρύθμισης της χρήσης δεδομένων στο παρασκήνιο"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Επιτρέπει στην εφαρμογή την αλλαγή της ρύθμισης χρήσης δεδομένων φόντου."</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"προβολή συνδέσεων Wi-Fi"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"Επιτρέπει στην εφαρμογή την προβολή των πληροφοριών σχετικά με την κατάσταση του Wi-Fi."</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"σύνδεση και αποσύνδεση από το Wi-Fi"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"Επιτρέπει στην εφαρμογή τη σύνδεση σε σημεία πρόσβασης Wi-Fi και την αποσύνδεση από αυτά, καθώς και την πραγματοποίηση αλλαγών σε διαμορφωμένα δίκτυα Wi-Fi."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"να επιτρέπεται η λήψη πολλαπλής διανομής Wi-Fi"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Επιτρέπει στην εφαρμογή να λαμβάνει πακέτα τα οποία δεν αποστέλλονται απευθείας στη συσκευή σας. Αυτό μπορεί να φανεί χρήσιμο κατά την ανακάλυψη υπηρεσιών που προσφέρονται σε κοντινές τοποθεσίες. Χρησιμοποιεί περισσότερη ενέργεια σε σχέση με την κατάσταση μη πολλαπλής διανομής."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"πρόσβαση στις ρυθμίσεις Bluetooth"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Επιτρέπει στην εφαρμογή τη διαμόρφωση του τοπικού tablet Bluetooth, τον εντοπισμό και τη σύζευξη με απομακρυσμένες συσκευές."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Επιτρέπει στην εφαρμογή τη διαμόρφωση του τοπικού tablet Bluetooth, τον εντοπισμό και τη σύζευξη με απομακρυσμένες συσκευές."</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Προβολή συνδέσεων WiMAX"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Επιτρέπει στην εφαρμογή την προβολή των πληροφοριών σχετικά με την κατάσταση του WiMAX."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"Αλλαγή κατάστασης WiMAX"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Επιτρέπει στην εφαρμογή τη σύνδεση και αποσύνδεση στο δίκτυο WiMAX."</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"σύζευξη με συσκευές Bluetooth"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Επιτρέπει στην εφαρμογή να προβάλει τη διαμόρφωση του τοπικού tablet Bluetooth και επίσης να πραγματοποιεί και να αποδέχεται συνδέσεις με συζευγμένες συσκευές."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Επιτρέπει στην εφαρμογή να προβάλει τη διαμόρφωση του τοπικού τηλεφώνου Bluetooth και επίσης να πραγματοποιεί και να αποδέχεται συνδέσεις με συζευγμένες συσκευές."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"έλεγχος Επικοινωνίας κοντινού πεδίου (Near Field Communication)"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Επιτρέπει στην εφαρμογή την επικοινωνία με ετικέτες, κάρτες και αναγνώστες της Επικοινωνίας κοντινού πεδίου (NFC)."</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"απενεργοποίηση κλειδώματος οθόνης"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Επιτρέπει στην εφαρμογή την απενεργοποίηση του κλειδώματος πληκτρολογίου και άλλης σχετικής ασφάλειας με κωδικό πρόσβασης. Για παράδειγμα, η απενεργοποίηση του κλειδώματος πληκτρολογίου όταν λαμβάνεται εισερχόμενη τηλεφωνική κλήση και η επανενεργοποίηση του κλειδώματος πληκτρολογίου όταν η κλήση τερματιστεί."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"ανάγνωση ρυθμίσεων συγχρονισμού"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Επιτρέπει στην εφαρμογή την ανάγνωση των ρυθμίσεων συγχρονισμού, όπως την ενεργοποίηση ή όχι του συγχρονισμού για την εφαρμογή \"Άτομα\"."</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"εναλλαγή ενεργοποίησης και απενεργοποίησης συγχρονισμού"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Επιτρέπει στην εφαρμογή την τροποποίηση των ρυθμίσεων συγχρονισμού, όπως την ενεργοποίηση ή όχι του συγχρονισμού για την εφαρμογή \"Άτομα\"."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"ανάγνωση στατιστικών συγχρονισμού"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"Επιτρέπει στην εφαρμογή την ανάγνωση των στατιστικών συγχρονισμού (π.χ. το ιστορικό των συγχρονισμών που έχουν πραγματοποιηθεί)."</string>
@@ -550,22 +560,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Επιτρέπει στην εφαρμογή τη λήψη λεπτομερειών σχετικά με τις τρέχουσες συγχρονισμένες ροές δεδομένων."</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"εγγραφή ροών δεδομένων στις οποίες έχετε εγγραφεί"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Επιτρέπει στην εφαρμογή να τροποποιήσει τις ροές δεδομένων, με τις οποίες είστε συγχρονισμένοι αυτήν τη στιγμή. Τυχόν κακόβουλες εφαρμογές ενδέχεται να αλλάξουν τις συγχρονισμένες ροές δεδομένων σας."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"ανάγνωση όρων που έχετε προσθέσει στο λεξικό"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Επιτρέπει στην εφαρμογή την ανάγνωση ιδιωτικών λέξεων, ονομάτων και φράσεων, τα οποία ο χρήστης ενδέχεται να έχει αποθηκεύσει στο λεξικό χρήστη."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"εγγραφή σε λεξικό καθορισμένο από τον χρήστη"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Επιτρέπει στην εφαρμογή την εγγραφή νέων λέξεων στο λεξικό χρήστη."</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"ανάγν. περιεχ. αποθηκ. χώρ.USB"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"ανάγνωση του περιεχομένου της κάρτας SD"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Επιτρ. η ανάγν. περ. αποθ. χώρ. USB, με φωτ. και μέσα"</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Επιτρέπει στην εφαρμογή την ανάγνωση του περιεχομένου της κάρτας SD, το οποίο μπορεί να περιλαμβάνει φωτογραφίες και μέσα."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"τροπ. ή διαγρ. περιεχ. αποθ. χώρ. USB"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Επιτρέπει στην εφαρμογή την εγγραφή στον αποθηκευτικό χώρο USB."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Επιτρέπει στην εφαρμογή την εγγραφή στην κάρτα SD."</string>
@@ -744,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Δεν υπάρχει κάρτα SIM στο τηλέφωνο."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Τοποθετήστε μια κάρτα SIM."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"Η κάρτα SIM δεν υπάρχει ή δεν είναι δυνατή η ανάγνωσή της. Τοποθετήστε μια κάρτα SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"Η κάρτα SIM δεν μπορεί να χρησιμοποιηθεί."</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Η κάρτα SIM έχει απενεργοποιηθεί οριστικά."\n" Επικοινωνήστε με τον παροχέα υπηρεσιών ασύρματου δικτύου για να λάβετε μια νέα κάρτα SIM."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Κουμπί προηγούμενου κομματιού"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Κουμπί επόμενου κομματιού"</string>
@@ -819,15 +824,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"Ενορία"</string>
<string name="autofill_area" msgid="3547409050889952423">"Περιοχή"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"Εμιράτο"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"ανάγνωση των σελιδοδεικτών και του ιστορικού ιστού σας"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Επιτρέπει στην εφαρμογή την ανάγνωση όλων των διευθύνσεων URL τις οποίες έχει επισκεφτεί το Πρόγραμμα περιήγησης, καθώς και όλων των σελιδοδεικτών του Προγράμματος περιήγησης."</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"εγγραφή σελιδοδεικτών και ιστορικού ιστού"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Επιτρέπει στην εφαρμογή την τροποποίηση του ιστορικού ή σελιδοδεικτών του Προγράμματος περιήγησης που βρίσκεται αποθηκευμένο στο tablet σας. Τυχόν κακόβουλες εφαρμογές ενδέχεται να χρησιμοποιούν αυτήν τη δυνατότητα για τη διαγραφή ή τροποποίηση των δεδομένων του Προγράμματος περιήγησής σας."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Επιτρέπει στην εφαρμογή την τροποποίηση του ιστορικού ή σελιδοδεικτών του Προγράμματος περιήγησης που βρίσκεται αποθηκευμένο στο τηλέφωνό σας. Τυχόν κακόβουλες εφαρμογές ενδέχεται να χρησιμοποιούν αυτήν τη δυνατότητα για τη διαγραφή ή τροποποίηση των δεδομένων του Προγράμματος περιήγησής σας."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"ρύθμιση ξυπνητηριού"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"Επιτρέπει στην εφαρμογή τη ρύθμιση μιας ειδοποίησης σε μια εγκατεστημένη εφαρμογή ξυπνητηριού. Ορισμένες εφαρμογές ξυπνητηριού ενδέχεται να μην μπορούν να ενσωματώσουν αυτήν τη λειτουργία."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"προσθήκη τηλεφωνητή"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"Επιτρέπει στην εφαρμογή να προσθέτει μηνύματα στα εισερχόμενα του αυτόματου τηλεφωνητή σας."</string>
@@ -1087,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Ορισμός ημερομηνίας"</string>
<string name="date_time_set" msgid="5777075614321087758">"Ορισμός"</string>
<string name="date_time_done" msgid="2507683751759308828">"Τέλος"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"Προεπιλεγμένο"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"ΝΕΟ: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"ΝΕΟ: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"Δεν απαιτούνται άδειες"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"Απόκρυψη"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"Εμφάνιση όλων"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"Μαζική αποθήκευση USB"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"Το USB είναι συνδεδεμένο"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"Συνδεθήκατε στον υπολογιστή σας μέσω USB. Αγγίξτε το παρακάτω κουμπί, αν θέλετε να κάνετε αντιγραφή αρχείων μεταξύ του υπολογιστή και του χώρου αποθήκευσης USB του Android."</string>
@@ -1320,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"Γίνεται αποστολή…"</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"Εκκίνηση προγράμματος περιήγησης;"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"Αποδοχή κλήσης;"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml
index 0febc2c..4af21ed 100644
--- a/core/res/res/values-en-rGB/strings.xml
+++ b/core/res/res/values-en-rGB/strings.xml
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"Your messages"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"Read and write your SMS, email and other messages."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Your personal information"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Direct access to your contacts and calendar stored on the tablet."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Direct access to your contacts and calendar stored on the phone."</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Direct access to information about you, stored in on your contact card."</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Your social information"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Direct access to information about your contacts and social connections."</string>
<string name="permgrouplab_location" msgid="635149742436692049">"Your location"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"Monitor your physical location."</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"Network communication"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"Access various network features."</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Audio Settings"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Change audio settings."</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Affects Battery"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Use features that can quickly drain battery."</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"Calendar"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Direct access to calendar and events."</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Bookmarks and History"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Direct access to bookmarks and browser history."</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Alarm"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Set the alarm clock."</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Voicemail"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Direct access to voicemail."</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"Microphone"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Direct access to the microphone to record audio."</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"Camera"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"Direct access to camera for image or video capture."</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Your applications information"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Ability to affect behaviour of other applications on your device."</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Wallpaper"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Change the device wallpaper settings."</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"Clock"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Change the device time or timezone."</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Status Bar"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Change the device status bar settings."</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Sync Settings"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Access to the sync settings."</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"Your accounts"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"Access the available accounts."</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Hardware controls"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Lower-level access and control of the system."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Development tools"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Features only needed for app developers."</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"Other Application UI"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"Effect the UI of other applications."</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"Storage"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Access the USB storage."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Access the SD card."</string>
@@ -193,14 +238,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"Allows the app to be the status bar."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"expand/collapse status bar"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Allows the app to expand or collapse the status bar."</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"reroute outgoing calls"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Allows the app to process outgoing calls and change the number to be dialled. Malicious apps may monitor, redirect or prevent outgoing calls."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"receive text messages (SMS)"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"Allows the app to receive and process SMS messages. Malicious apps may monitor your messages or delete them without showing them to you."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"receive text messages (MMS)"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"Allows the app to receive and process MMS messages. Malicious apps may monitor your messages or delete them without showing them to you."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"receive emergency broadcasts"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Allows the app to receive and process emergency broadcast messages. This permission is only available for system apps."</string>
@@ -210,16 +252,13 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"Allows the app to send SMS messages. Malicious apps may cost you money by sending messages without your confirmation."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"send SMS messages with no confirmation"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Allows the app to send SMS messages. Malicious apps may cost you money by sending messages without your confirmation."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"read your text messages (SMS or MMS)"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Allows the app to read SMS messages stored on your tablet or SIM card. Malicious apps may read your confidential messages."</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Allows the app to read SMS messages stored on your phone or SIM card. Malicious apps may read your confidential messages."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"edit your text messages (SMS or MMS)"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Allows the app to write to SMS messages stored on your tablet or SIM card. Malicious apps may delete your messages."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Allows the app to write to SMS messages stored on your phone or SIM card. Malicious apps may delete your messages."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"receive text messages (WAP)"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Allows the app to receive and process WAP messages. Malicious apps may monitor your messages or delete them without showing them to you."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"retrieve running apps"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"Allows the app to retrieve information about currently and recently running tasks. Malicious apps may discover private information about other apps."</string>
@@ -235,13 +274,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Allows the app to control the screen compatibility mode of other applications. Malicious applications may break the behaviour of other applications."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"enable app debugging"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"Allows the app to turn on debugging for another app. Malicious apps may use this to kill other apps."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"change system display settings"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Allows the app to change the current configuration, such as the locale or overall font size."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"enable car mode"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"Allows the app to enable the car mode."</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"close other apps"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Allows the app to kill background processes of other apps, even if memory isn\'t low."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"force stop other apps"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Allows the app to forcibly stop other apps."</string>
@@ -265,8 +302,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Allows the app to broadcast a notification that a WAP PUSH message has been received. Malicious apps may use this to forge MMS message receipt or to silently replace the content of any web page with malicious variants."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"limit number of running processes"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Allows the app to control the maximum number of processes that will run. Never needed for normal apps."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"force background apps to close"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Allows the app to control whether activities are always finished as soon as they go to the background. Never needed for normal apps."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"modify battery statistics"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"Allows the app to modify collected battery statistics. Not for use by normal apps."</string>
@@ -276,8 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Allows the app to launch the full backup confirmation UI. Not to be used by any app."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"display unauthorised windows"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Allows the app to create windows that are intended to be used by the internal system user interface. Not for use by normal apps."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"draw over other apps"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Allows the app to show system alert windows. Malicious apps may take over the entire screen."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"modify global animation speed"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Allows the app to change the global animation speed (faster or slower animations) at any time."</string>
@@ -339,26 +374,22 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Allows an application to grant or revoke specific permissions for it or other applications. Malicious applications may use this to access features for which you have not granted them permission."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"set preferred apps"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Allows the app to modify your preferred apps. Malicious apps may silently change the apps that are run, spoofing your existing apps to collect private data from you."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"modify system settings"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"Allows the app to modify the system\'s settings data. Malicious apps may corrupt your system\'s configuration."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"modify secure system settings"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Allows the app to modify the system\'s secure settings data. Not for use by normal apps."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"modify the Google services map"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"Allows the app to modify the Google services map. Not for use by normal apps."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"run at startup"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Allows the app to have itself started as soon as the system has finished booting. This can make it take longer to start the tablet and allow the app to slow down the overall tablet by always running."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Allows the app to have itself started as soon as the system has finished booting. This can make it take longer to start the phone and allow the app to slow down the overall phone by always running."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"send sticky broadcast"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Allows the app to send sticky broadcasts, which remain after the broadcast ends. Malicious apps may make the tablet slow or unstable by causing it to use too much memory."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Allows the app to send sticky broadcasts, which remain after the broadcast ends. Malicious apps may make the phone slow or unstable by causing it to use too much memory."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
+ <string name="permlab_readContacts" msgid="8348481131899886131">"read your contacts"</string>
<string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Allows the app to read all the data about your contacts stored on your tablet, including the frequency with which you\'ve called, emailed or communicated in other ways with specific individuals. This helps with auto-completion of email addresses and other convenient features. Malicious apps can use this permission to send your contact data to other people."</string>
<string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Allows the app to read all the data about your contacts stored on your phone, including the frequency with which you\'ve called, emailed or communicated in other ways with specific individuals. This helps with auto-completion of email addresses and other convenient features. Malicious apps can use this permission to send your contact data to other people."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"modify your contacts"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Allows the app to modify the data about your contacts stored on your tablet, including the frequency with which you\'ve called, emailed or communicated in other ways with specific individuals. This helps with auto-completion of email addresses and other convenient features. Malicious apps may use this to erase or modify your contact data."</string>
<string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Allows the app to modify the data about your contacts stored on your phone, including the frequency with which you\'ve called, emailed or communicated in other ways with specific individuals. This helps with auto-completion of email addresses and other convenient features. Malicious apps may use this to erase or modify your contact data."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"read call log"</string>
@@ -367,11 +398,9 @@
<string name="permlab_writeCallLog" msgid="8552045664743499354">"write call log"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Allows the app to modify your tablet\'s call log, including data about incoming and outgoing calls. Malicious apps may use this to erase or modify your call log."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Allows the app to modify your phone\'s call log, including data about incoming and outgoing calls. Malicious apps may use this to erase or modify your call log."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"read your own contact card"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Allows the app to read personal profile information stored on your device, such as your name and contact information. This means the app can identify you and send your profile information to others."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"modify your own contact card"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Allows the app to change or add to personal profile information stored on your device, such as your name and contact information. This means that other apps can identify you and send your profile information to others."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"read your social stream"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Allows the app to access and sync social updates from you and your friends. Malicious apps may use this to read private communications between you and your friends on social networks."</string>
@@ -412,15 +441,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"force phone reboot"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Allows the app to force the tablet to reboot."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Allows the app to force the phone to reboot."</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"access USB storage filesystem"</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"access SD Card filesystem"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Allows the app to mount and unmount file systems for removable storage."</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"Erase USB storage"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"erase SD Card"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Allows the app to format removable storage."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"get information on internal storage"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"Allows the application to access information on internal storage."</string>
@@ -432,8 +457,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Allows the app to mount/unmount internal storage."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"rename internal storage"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"Allows the app to rename internal storage."</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"control vibration"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"Allows the app to control the vibrator."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"control flashlight"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"Allows the app to control the flashlight."</string>
@@ -458,8 +482,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"Allows the app to tell the system which widgets can be used by which app. An app with this permission can give other apps access to personal data. Not for use by normal apps."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"modify phone status"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Allows the app to control the phone features of the device. An app with this permission can switch networks, turn the phone radio on and off and the like without ever notifying you."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"read phone status and identity"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"Allows the app to access the phone features of the device. An app with this permission can determine the phone number and serial number of this phone, whether a call is active, the number that call is connected to, etc."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"prevent tablet from sleeping"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"prevent phone from sleeping"</string>
@@ -474,8 +497,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Run as a low-level manufacturer test, allowing complete access to the phone hardware. Only available when a phone is running in manufacturer test mode."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"set wallpaper"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"Allows the app to set the system wallpaper."</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"adjust your wallpaper size"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Allows the app to set the system wallpaper size hints."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"reset system to factory defaults"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"Allows the app to completely reset the system to its factory settings, erasing all data, configuration and installed apps."</string>
@@ -487,21 +509,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Allows the app to change the phone\'s time zone."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"act as the Account Manager Service"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"Allows the app to make calls to Account Authenticators."</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"find accounts on the device"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Allows the app to get the list of accounts known by the tablet."</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Allows the app to get the list of accounts known by the phone."</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"create accounts and set passwords"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Allows the app to use the account authenticator capabilities of the Account Manager, including creating accounts and getting and setting their passwords."</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"add or remove accounts"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"Allows the app to perform operations like adding and removing accounts, and deleting their password."</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"use accounts on the device"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"Allows the app to request authentication tokens."</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"view network connections"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"Allows the app to view the state of all networks."</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"full Internet access"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Allows the app to create network sockets."</string>
@@ -513,36 +530,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"Allows the app to change the state of tethered network connectivity."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"change background data usage setting"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Allows the app to change the background data usage setting."</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"view WiFi connections"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"Allows the app to view the information about the state of Wi-Fi."</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"connect and disconnect from WiFi"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"Allows the app to connect to and disconnect from Wi-Fi access points and to make changes to configured Wi-Fi networks."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"allow Wi-Fi Multicast reception"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Allows the app to receive packets not directly addressed to your device. This can be useful when discovering services offered near by. It uses more power than the non-multicast mode."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"access Bluetooth settings"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Allows the app to configure the local Bluetooth tablet and to discover and pair with remote devices."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Allows the app to configure the local Bluetooth phone and to discover and pair with remote devices."</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"View WiMAX connections"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Allows the app to view the information about the state of WiMAX."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"change WiMAX state"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Allows the app to connect to and disconnect from WiMAX network."</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"pair with Bluetooth devices"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Allows the app to view the configuration of the local Bluetooth tablet, and to make and accept connections with paired devices."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Allows the app to view the configuration of the local Bluetooth phone, and to make and accept connections with paired devices."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"control Near-Field Communication"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Allows the app to communicate with Near Field Communication (NFC) tags, cards and readers."</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"disable your screen lock"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Allows the app to disable the keypad lock and any associated password security. A legitimate example of this is the phone disabling the keypad lock when receiving an incoming phone call, then re-enabling the keypad lock when the call has finished."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"read sync settings"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Allows the app to read the sync settings, such as whether sync is enabled for the People app."</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"toggle sync on and off"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Allows the app to modify the sync settings, such as whether sync is enabled for the People app."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"read sync statistics"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"Allows the app to read the sync stats; e.g. the history of syncs that have occurred."</string>
@@ -550,22 +560,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Allows the app to get details about the currently synced feeds."</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"write subscribed feeds"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Allows the app to modify your currently synced feeds. Malicious apps may change your synced feeds."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"read terms you added to the dictionary"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Allows the app to read any private words, names and phrases that the user may have stored in the user dictionary."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"write to user-defined dictionary"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Allows the app to write new words into the user dictionary."</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"read the contents of your USB storage"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"read the contents of your SD card"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Allows the app to read contents of USB storage, which may include photos and media."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Allows the app to read contents of SD card, which may include photos and media."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"modify or delete the contents of your USB storage"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Allows the app to write to the USB storage."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Allows the app to write to the SD card."</string>
@@ -744,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"No SIM card in phone."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Insert a SIM card."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"The SIM card is missing or not readable. Insert a SIM card."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"Unusable SIM card."</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Your SIM card has been permanently disabled."\n" Contact your wireless service provider for another SIM card."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Previous track button"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Next-track button"</string>
@@ -819,15 +824,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"Parish"</string>
<string name="autofill_area" msgid="3547409050889952423">"Area"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"Emirate"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"read your Web bookmarks and history"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Allows the app to read all the URLs that the Browser has visited and all of the Browser\'s bookmarks."</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"write web bookmarks and history"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Allows the app to modify the Browser\'s history or bookmarks stored on your tablet. Malicious apps may use this to erase or modify your Browser\'s data."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Allows the app to modify the Browser\'s history or bookmarks stored on your phone. Malicious apps may use this to erase or modify your Browser\'s data."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"set an alarm"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"Allows the app to set an alarm in an installed alarm clock app. Some alarm clock apps may not implement this feature."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"add voicemail"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"Allows the app to add messages to your voicemail inbox."</string>
@@ -1087,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Set date"</string>
<string name="date_time_set" msgid="5777075614321087758">"Set"</string>
<string name="date_time_done" msgid="2507683751759308828">"Done"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"Default"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NEW: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NEW: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"No permission required"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"Hide"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"Show all"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"USB mass storage"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"USB connected"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"You\'ve connected to your computer via USB. Touch the button below if you want to copy files between your computer and your Android\'s USB storage."</string>
@@ -1320,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"Sending…"</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"Launch Browser?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"Accept call?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index 548e64d..a3eb0f9 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"Tus mensajes"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"Lee y escribe tus SMS, mensajes de correo y otros mensajes."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Tu información personal"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Acceso directo a los contactos y calendario guardados en tu dispositivo."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Acceso directo a tus contactos y calendario guardado en el dispositivo."</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Acceso directo a tu información, almacenada en tu tarjeta de contacto"</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Tu información social"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Acceso directo a información sobre tus contactos y conexiones sociales"</string>
<string name="permgrouplab_location" msgid="635149742436692049">"Tu ubicación"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"Controlar tu ubicación física"</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"Comunicación de red"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"Acceder a distintas funciones de red"</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Configuración de audio"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Cambiar la configuración de audio"</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Afecta la batería."</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Uso de las características que se pueden agotar rápidamente la batería"</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"Calendario"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Acceso directo a calendario y eventos"</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Marcadores e historial"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Acceso directo a marcadores e historial del navegador"</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Alarma"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Ajusta el despertador."</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Correo de voz"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Acceso directo al correo de voz"</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"Micrófono"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Acceso directo a micrófono para grabar audio"</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"Cámara"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"Acceso directo a cámara para imagen o captura de vídeo"</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Información de tus aplicaciones"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Capacidad para influir en el comportamiento de otras aplicaciones en el dispositivo"</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Fondo de pantalla"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Cambiar la configuración de fondo de pantalla del dispositivo"</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"Reloj"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Cambiar la hora del dispositivo o la zona horaria"</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Barra de estado"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Cambiar la configuración de la barra de estado del dispositivo"</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Configuración de sincronización"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Acceso a los ajustes de sincronización"</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"Tus cuentas"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"Acceder a las cuentas disponibles."</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Controles de hardware"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Acceso y control de nivel más bajo del sistema."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Herramientas de desarrollo"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Funciones únicamente necesarias para los programadores de aplicaciones."</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"Interfaz de usuario de otra aplicación"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"Influir la interfaz de usuario de otras aplicaciones"</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"Espacio de almacenamiento"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Acceder al almacenamiento USB."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Acceder a la tarjeta SD."</string>
@@ -193,14 +238,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"Permite que la aplicación sea la barra de estado."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"expandir o reducir la barra de estado"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Permite que la aplicación muestre y oculte la barra de estado."</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"redireccionar llamadas salientes"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Permite que la aplicación procese llamadas salientes y cambie el número que se va a marcar. Las aplicaciones maliciosas pueden controlar, redireccionar o impedir las llamadas salientes."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"recibir mensajes de texto (SMS)"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"Permite que la aplicación reciba y procese mensajes SMS. Las aplicaciones maliciosas pueden controlar tus mensajes o eliminarlos sin mostrártelos."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"recibir mensajes de texto (MMS)"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"Permite que la aplicación reciba y procese mensajes MMS. Las aplicaciones maliciosas pueden controlar tus mensajes o eliminarlos sin mostrártelos."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"recibir mensajes de emergencia"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Permite que la aplicación reciba y procese mensajes de emergencia. Este permiso sólo está disponible para las aplicaciones del sistema."</string>
@@ -210,16 +252,13 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"Permite que la aplicación envíe mensajes SMS. Las aplicaciones maliciosas pueden generar gastos a causa del envío de mensajes sin tu confirmación."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"Enviar mensajes SMS sin confirmación"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Permite que la aplicación envíe mensajes SMS. Las aplicaciones maliciosas pueden generar gastos a causa del envío de mensajes sin tu confirmación."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"leer tus mensajes de texto (SMS o MMS)"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Permite que la aplicación lea mensajes SMS almacenados en tu tableta o tarjeta SIM. Las aplicaciones maliciosas pueden leer tus mensajes confidenciales."</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Permite que la aplicación lea mensajes SMS almacenados en tu dispositivo o tarjeta SIM. Las aplicaciones maliciosas pueden leer tus mensajes confidenciales."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"editar tus mensajes de texto (SMS o MMS)"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Permite que la aplicación escriba en mensajes SMS almacenados en tu tableta o tarjeta SIM. Las aplicaciones maliciosas pueden eliminar tus mensajes."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Permite que la aplicación escriba en mensajes SMS almacenados en tu dispositivo o tarjeta SIM. Las aplicaciones maliciosas pueden eliminar tus mensajes."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"recibir mensajes de texto (WAP)"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Permite que la aplicación reciba y procese mensajes WAP. Las aplicaciones maliciosas pueden controlar tus mensajes o eliminarlos sin mostrártelos."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"recuperar aplicaciones en ejecución"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"Permite que la aplicación recupere información sobre tareas en ejecución y recientemente ejecutadas. Las aplicaciones maliciosas pueden descubrir información privada sobre otras aplicaciones."</string>
@@ -235,13 +274,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Permite a la aplicación controlar el modo de compatibilidad de las pantallas de otras aplicaciones. Las aplicaciones malintencionadas pueden interrumpir el funcionamiento de otras aplicaciones."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"activar depuración de aplicación"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"Permite que la aplicación active la depuración de otra aplicación. Las aplicaciones malintencionadas pueden usar este permiso para interrumpir la ejecución de otras aplicaciones."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"cambiar la configuración de visualización del sistema"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Permite que la aplicación cambie la configuración actual como, por ejemplo, la configuración regional o el tamaño de fuente general."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"activar el modo de auto"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"Permite que la aplicación habilite el modo coche."</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"cerrar otras aplicaciones"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Permite que la aplicación elimine procesos de otras aplicaciones que se ejecutan en segundo plano, aunque haya suficiente memoria."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"forzar la detención de otras aplicaciones"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Permite que la aplicación fuerce la detención de otras aplicaciones."</string>
@@ -265,8 +302,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Permite que la aplicación transmita una notificación acerca de la recepción de un mensaje WAP PUSH. Las aplicaciones maliciosas pueden utilizar este permiso para falsificar la recepción de mensajes MMS o para reemplazar sin aviso el contenido de cualquier página web con variantes maliciosas."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"limitar la cantidad de procesos en ejecución"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Permite que la aplicación controle la cantidad máxima de procesos que se ejecutarán. Las aplicaciones normales no deben utilizar este permiso."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"forzar el cierre de aplicaciones de fondo"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Permite que la aplicación controle si las actividades se deben finalizar al pasar a segundo plano. Las aplicaciones normales no deben utilizar este permiso."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"modificar la estadística de la batería"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"Permite que la aplicación modifique las estadísticas recopiladas sobre la batería. Las aplicaciones normales no deben utilizar este permiso."</string>
@@ -276,8 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Permite que la aplicación inicie la IU de confirmación de copia de seguridad completa. No todas las aplicaciones pueden utilizar este permiso."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"mostrar ventanas no autorizadas"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Permite que la aplicación cree ventanas para la interfaz de usuario interna del sistema. Las aplicaciones normales no deben usar este permiso."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"destacar sobre otras aplicaciones"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Permite que la aplicación muestre las ventanas de alerta del sistema. Las aplicaciones maliciosas pueden controlar toda la pantalla."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"modificar la velocidad de la animación global"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Permite que la aplicación cambie la velocidad de animación global (animaciones más rápidas o más lentas) en cualquier momento."</string>
@@ -339,39 +374,33 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Permite a una aplicación otorgar permisos específicos a otras aplicaciones, autoconcedérselos o revocarlos. Las aplicaciones maliciosas pueden así acceder a funciones para las que no les otorgaste permiso."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"establecer aplicaciones preferidas"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Permite que la aplicación modifique tus aplicaciones preferidas. Las aplicaciones maliciosas pueden modificar sin aviso las aplicaciones que se ejecutan y así engañar a tus aplicaciones existentes para que recopilen tu información privada."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"modificar la configuración del sistema"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"Permite que la aplicación modifique los datos de configuración del sistema. Las aplicaciones maliciosas pueden dañar la configuración del sistema."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"modificar la configuración segura del sistema"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Permite que la aplicación modifique los datos de la configuración segura del sistema. Las aplicaciones normales no deben utilizar este permiso."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"modificar el mapa de servicios de Google"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"Permite que la aplicación modifique el mapa de servicios de Google. Las aplicaciones normales no deben utilizar este permiso."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"ejecutarse al inicio"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Permite que la aplicación se inicie en cuanto el sistema haya finalizado la inicialización. Esto puede ocasionar que la tableta tarde más en inicializarse y que la aplicación ralentice el funcionamiento general de la tableta al estar en ejecución constante."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Permite que la aplicación se inicie en cuanto el sistema haya finalizado la inicialización. Esto puede ocasionar que el dispositivo tarde más en inicializarse y que la aplicación ralentice el funcionamiento general del dispositivo al estar en ejecución constante."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"enviar emisiones pegajosas"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Permite que la aplicación envíe transmisiones persistentes que permanecen luego de que finaliza la transmisión. Las aplicaciones maliciosas pueden hacer que la tableta funcione más lentamente o de manera inestable al forzarla a utilizar mucha memoria."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Permite que la aplicación envíe transmisiones persistentes que permanecen luego de que finaliza la transmisión. Las aplicaciones maliciosas pueden hacer que el dispositivo funcione más lento o de manera inestable al forzarlo a utilizar mucha memoria."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
+ <string name="permlab_readContacts" msgid="8348481131899886131">"leer tus contactos"</string>
<string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Permite a la aplicación leer todos los datos sobre los contactos almacenados en tu tableta, incluida la frecuencia con la que realizaste llamadas, enviaste correos o te comunicaste de otras maneras con personas específicas. Esto ayuda a la escritura automática de direcciones de correo y a otras funciones convenientes. Las aplicaciones malintencionadas pueden utilizar este permiso para enviar tus datos de contacto a otras personas."</string>
- <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Permite a la aplicación leer todos los datos sobre los contactos almacenados en tu teléfono, incluida la frecuencia con la que realizaste llamadas, enviaste correos o te comunicaste de otras maneras con personas específicas. Esto ayuda a la escritura automática de direcciones de correo y a otras funciones convenientes. Las aplicaciones malintencionadas pueden utilizar este permiso para enviar tus datos de contacto a otras personas."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
+ <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Permite a la aplicación leer todos los datos sobre los contactos almacenados en tu dispositivo, incluida la frecuencia con la que realizaste llamadas, enviaste correos o te comunicaste de otras maneras con personas específicas. Esto ayuda a la escritura automática de direcciones de correo y a otras funciones convenientes. Las aplicaciones malintencionadas pueden utilizar este permiso para enviar tus datos de contacto a otras personas."</string>
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"modificar tus contactos"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Permite a la aplicación modificar los datos sobre los contactos almacenados en tu tableta, incluida la frecuencia con la que realizaste llamadas, enviaste correos o te comunicaste de otras maneras con personas específicas. Esto ayuda a la escritura automática de direcciones de correo y a otras funciones convenientes. Las aplicaciones malintencionadas pueden utilizarlo para borrar o modificar tus datos de contacto."</string>
- <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Permite a la aplicación modificar los datos sobre los contactos almacenados en tu teléfono, incluida la frecuencia con la que realizaste llamadas, enviaste correos o te comunicaste de otras maneras con personas específicas. Esto ayuda a la escritura automática de direcciones de correo y a otras funciones convenientes. Las aplicaciones malintencionadas pueden utilizarlo para borrar o modificar tus datos de contacto."</string>
+ <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Permite a la aplicación modificar los datos sobre los contactos almacenados en tu dispositivo, incluida la frecuencia con la que realizaste llamadas, enviaste correos o te comunicaste de otras maneras con personas específicas. Esto ayuda a la escritura automática de direcciones de correo y a otras funciones convenientes. Las aplicaciones malintencionadas pueden utilizarlo para borrar o modificar tus datos de contacto."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"leer el registro de llamadas"</string>
<string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Permite que la aplicación lea el registro de llamadas de la tableta, incluidos los datos sobre llamadas entrantes y salientes. Las aplicaciones malintencionadas pueden usar este permiso para enviar tus datos a otros usuarios."</string>
<string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Permite que la aplicación lea el registro de llamadas del dispositivo, incluidos los datos sobre llamadas entrantes y salientes. Las aplicaciones malintencionadas pueden usar este permiso para enviar tus datos a otros usuarios."</string>
<string name="permlab_writeCallLog" msgid="8552045664743499354">"escribir en el registro de llamadas"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Permite que la aplicación modifique el registro de llamadas de la tableta, incluidos los datos sobre llamadas entrantes y salientes. Las aplicaciones malintencionadas pueden usar este permiso para borrar o modificar el registro de llamadas."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Permite que la aplicación modifique el registro de llamadas del dispositivo, incluidos los datos sobre llamadas entrantes y salientes. Las aplicaciones malintencionadas pueden usar este permiso para borrar o modificar el registro de llamadas."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"leer tarjeta contacto propia"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Permite que la aplicación lea la información de perfil almacenada en tu dispositivo, como tu nombre e información de contacto. Esto significa que la aplicación puede identificarte y enviar tu información de perfil a otros."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"modif. tarjeta contacto propia"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Permite que la aplicación realice cambios o adiciones a la información personal almacenada en tu dispositivo, como tu nombre e información de contacto. Esto significa que otras aplicaciones pueden identificarte y enviar tu información de perfil a otros."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"Lectura de tu muro social"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Permite que la aplicación acceda y sincronice tus actualizaciones sociales y las de tus amigos. Las aplicaciones maliciosas pueden usar este permiso para leer las comunicaciones privadas que mantienes con tus amigos en las redes sociales."</string>
@@ -412,15 +441,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"forzar reinicio del dispositivo"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Permite que la aplicación provoque el reinicio de la tableta."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Permite que la aplicación fuerce el reinicio del dispositivo."</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"acceder sistema de archivos USB"</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"acceder al sistema de archivos de la tarjeta SD"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Permite que la aplicación active y desactive sistemas de archivos para un almacenamiento extraíble."</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"borrar almacenamiento USB"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"borrar tarjeta SD"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Permite que la aplicación formatee un almacenamiento extraíble."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"obtener información sobre el almacenamiento interno"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"Permite que la aplicación obtenga información sobre el almacenamiento interno."</string>
@@ -432,8 +457,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Permite que la aplicación active o desactive el almacenamiento interno."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"cambiar el nombre del almacenamiento interno"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"Permite que la aplicación cambie el nombre del almacenamiento interno."</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"controlar la vibración"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"Permite que la aplicación controle la vibración."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"controlar linterna"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"Permite que la aplicación controle la función de linterna."</string>
@@ -458,8 +482,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"Permite que la aplicación le indique al sistema qué widgets se pueden utilizar con cada aplicación. Una aplicación con este permiso puede proporcionar acceso a información personal por parte de otras aplicaciones. Las aplicaciones normales no deben utilizar este permiso."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"modificar el estado del dispositivo"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Permite que la aplicación controle las funciones de teléfono del dispositivo. Una aplicación con este permiso puede cambiar redes, encender y apagar la radio del teléfono y tareas similares sin siquiera notificártelo."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"leer la identidad y el estado del dispositivo"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"Permite que la aplicación acceda a las funciones de teléfono del dispositivo. Una aplicación con este permiso puede determinar el número de teléfono y el número de serie del teléfono, si hay una llamada activa, el número al que esa llamada está conectada, etc."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"evitar que el tablet entre en estado de inactividad"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"evitar que el dispositivo entre en estado de inactividad"</string>
@@ -474,8 +497,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Se ejecuta como una prueba de fábrica de bajo nivel que permite un acceso completo al hardware del dispositivo. Sólo disponible cuando un dispositivo se ejecuta en el modo de prueba de fábrica."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"establecer papel tapiz"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"Permite que la aplicación establezca el fondo de pantalla del sistema."</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"ajustar el tamaño del fondo de pantalla"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Permite que la aplicación establezca el tamaño del fondo de pantalla del sistema."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"restablecer el sistema a las configuraciones predeterminadas de fábrica"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"Permite que la aplicación restablezca por completo el sistema a su configuración de fábrica al eliminar todos los datos, la configuración y las aplicaciones instaladas."</string>
@@ -487,21 +509,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Permite que la aplicación cambie la zona horaria del dispositivo."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"actuar como cuenta, administrador o servicio"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"Permite que la aplicación haga llamadas a los autenticadores de cuentas."</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"buscar cuentas en el dispositivo"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Permite que la aplicación obtenga una lista de cuentas reconocidas por la tableta."</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Permite que la aplicación obtenga una lista de cuentas reconocidas por el dispositivo."</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"crear cuentas y establecer contraseñas"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Permite que la aplicación utilice las capacidades del autenticador de cuentas del administrador de cuentas, incluida la creación de cuentas y la obtención y configuración de sus contraseñas."</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"agregar o eliminar cuentas"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"Permite que la aplicación ejecute operaciones, como agregar y eliminar cuentas, y eliminar sus contraseñas."</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"utilizar las cuentas del dispositivo"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"Permite que la aplicación solicite tokens de autenticación."</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"ver conexiones de red"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"Permite que la aplicación vea el estado de todas las redes."</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"acceso total a Internet"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Permite que la aplicación cree conectores de red."</string>
@@ -513,36 +530,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"Permite que la aplicación cambie el estado de la conectividad de anclaje a la red."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"cambiar la configuración del uso de datos del fondo"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Permite que la aplicación cambe la configuración de uso de los datos de referencia."</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"ver conexiones Wi-Fi"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"Permite que la aplicación vea la información sobre el estado de la conexión Wi-Fi."</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"conectarse y desconectarse de la red Wi-Fi"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"Permite que la aplicación se conecte y desconecte de puntos de acceso Wi-Fi, y que realice modificaciones en las redes Wi-Fi configuradas."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"permitir recepción de multidifusión Wi-Fi"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Permite que la aplicación reciba paquetes que no están dirigidos directamente a tu dispositivo. Esto puede ser útil para descubrir servicios cercanos. Utiliza más energia que el modo que no es de multidifusión."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"acceder a la configuración de Bluetooth"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Permite que la aplicación configure la tableta Bluetooth local y descubra y se sincronice con dispositivos remotos."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Permite que la aplicación configure el dispositivo Bluetooth local y descubra y se sincronice con dispositivos remotos."</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Ver conexiones WiMAX"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Permite que la aplicación consulte la información sobre el estado de WiMAX."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"Cambiar el estado de WiMAX"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Permite que la aplicación se conecte a una red WiMAX y se desconecte de ella."</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"vincular con dispositivos Bluetooth"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Permite que la aplicación vea la configuración de la tableta Bluetooth local, y que cree y acepte conexiones con los dispositivos sincronizados."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Permite que la aplicación vea la configuración del dispositivo Bluetooth local, y que cree y acepte conexiones con los dispositivos sincronizados."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"controlar la Transmisión de datos en proximidad"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Permite que la aplicación se comunique con lectores, tarjetas y etiquetas de Comunicación de campo cercano (NFC)."</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"desactivar el bloqueo de pantalla"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Permite que la aplicación inhabilite el bloqueo del teclado y cualquier protección con contraseña asociada. Un ejemplo de este permiso es la inhabilitación por parte del dispositivo del bloqueo del teclado al recibir una llamada telefónica entrante y su posterior habilitación cuando finaliza la llamada."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"leer la configuración de sincronización"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Permite que la aplicación lea la configuración de sincronización; por ejemplo, si está habilitada la sincronización para la aplicación Personas."</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"activar y desactivar la sincronización"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Permite que la aplicación modifique la configuración de sincronización; por ejemplo, si está habilitada la sincronización para la aplicación Personas."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"leer estadística de sincronización"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"Permite que la aplicación lea las estadísticas de sincronización; por ejemplo, el historial de sincronizaciones que se han realizado."</string>
@@ -550,22 +560,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Permite que la aplicación obtenga detalles sobre los feeds sincronizados en este momento."</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"escribir canales suscritos"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Permite que la aplicación modifique los feeds actualmente sincronizados. Las aplicaciones maliciosas pueden cambiar tus feeds sincronizados."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"leer los términos que agregaste al diccionario"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Permite que la aplicación lea cualquier palabra, nombre o frase de carácter privado que el usuario haya almacenado en su diccionario."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"agregar al diccionario definido por el usuario"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Permite que la aplicación ingrese palabras nuevas en el diccionario del usuario."</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"leer contenido dispositivo USB"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"leer el contenido de tu tarjeta SD"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Permite leer contenido USB."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Permite que la aplicación lea el contenido de la tarjeta SD que puede incluir fotos y archivos multimedia."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"modificar/borrar contenido USB"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Permite que la aplicación escriba en el almacenamiento USB."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Admite que la aplicación escriba en la tarjeta SD."</string>
@@ -744,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"No hay tarjeta SIM en el dispositivo."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Inserta una tarjeta SIM."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"Falta la tarjeta SIM o no se puede leer. Introduce una tarjeta SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"Tarjeta SIM inutilizable"</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Tu tarjeta SIM se ha inhabilitado de forma permanente."\n" Ponte en contacto con tu proveedor de servicios inalámbricos para obtener otra tarjeta SIM."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Botón para pista anterior"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Botón para pista siguiente"</string>
@@ -819,15 +824,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"Circunscripción"</string>
<string name="autofill_area" msgid="3547409050889952423">"Área"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"Emirato"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"leer tus marcadores web y el historial"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Permite que la aplicación consulte todos los marcadores del navegador y todas las URL que haya visitado."</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"escribir marcadores web e historial"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Permite que la aplicación modifique el historial o los marcadores del navegador guardados en tu tableta. Las aplicaciones maliciosas pueden utilizar este permiso para borrar o modificar los datos de tu navegador."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Permite que la aplicación modifique el historial o los marcadores del navegador guardados en tu dispositivo. Las aplicaciones maliciosas pueden utilizar este permiso para borrar o modificar los datos de tu navegador."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"programar una alarma"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"Permite que la aplicación establezca una alarma en una aplicación de alarma instalada. Es posible que algunas aplicaciones de alarma no incluyan esta función."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"agregar correo de voz"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"Permite que la aplicación agregue mensajes a la bandeja de entrada de tu buzón de voz."</string>
@@ -1087,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Configurar fecha"</string>
<string name="date_time_set" msgid="5777075614321087758">"Establecer"</string>
<string name="date_time_done" msgid="2507683751759308828">"Listo"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"Predeterminado"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NUEVO: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NUEVO: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"No se requieren permisos"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"Ocultar"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"Mostrar todos"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"Almacenamiento USB masivo"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"Conectado al USB"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"Has conectado el dispositivo a la computadora por USB. Toca el siguiente botón si quieres copiar archivos entre tu computadora y el almacenamiento USB de tu Android."</string>
@@ -1320,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"Enviando..."</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"¿Deseas iniciar el navegador?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"¿Aceptar la llamada?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index f8bee02..fd28787 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"Tus mensajes"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"Leer y escribir SMS, correos electrónicos y otros mensajes"</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Tu información personal"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Accede directamente al calendario y a los contactos almacenados en el tablet."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Acceso directo al calendario y a los contactos almacenados en el teléfono"</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Acceder directamente a tu información personal almacenada en la tarjeta de contacto"</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Tu información social"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Acceder directamente a la información de tus contactos y tus conexiones sociales"</string>
<string name="permgrouplab_location" msgid="635149742436692049">"Tu ubicación"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"Controlar tu ubicación física"</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"Comunicación de red"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"Acceder a distintas funciones de red"</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Ajustes de audio"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Modificar ajustes de audio"</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Afectar a la batería"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Usar funciones que agotan la batería rápidamente"</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"Calendario"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Acceder directamente al calendario y a los eventos"</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Marcadores e historial"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Acceder directamente a los marcadores y al historial del navegador"</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Alarma"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Establecer alarmas"</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Buzón de voz"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Acceder directamente al buzón de voz"</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"Micrófono"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Acceder directamente al micrófono para grabar audio"</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"Cámara"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"Acceder directamente a la cámara para hacer fotos o grabar vídeos"</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Información de tus aplicaciones"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Posibilidad de influir en el funcionamiento de otras aplicaciones del dispositivo"</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Fondo de pantalla"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Cambiar la configuración del fondo de pantalla del dispositivo"</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"Reloj"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Cambiar la zona horaria o la hora del dispositivo"</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Barra de estado"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Cambiar la configuración de la barra de estado del dispositivo"</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Ajustes de sincronización"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Acceder a los ajustes de sincronización"</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"Tus cuentas"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"Acceder a las cuentas disponibles"</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Controles de hardware"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Acceso de nivel inferior y control del sistema"</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Herramientas de desarrollo"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Funciones necesarias solo para desarrolladores de aplicaciones"</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"Interfaz de usuario de otras aplicaciones"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"Influir en la interfaz de usuario de otras aplicaciones"</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"Almacenamiento"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Acceso a almacenamiento USB"</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Acceder a la tarjeta SD"</string>
@@ -193,14 +238,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"Permite que la aplicación aparezca en la barra de estado."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"expandir/contraer la barra de estado"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Permite que la aplicación expanda o contraiga la barra de estado."</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"redireccionar llamadas salientes"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Permite que la aplicación procese las llamadas salientes y cambie el número que se va a marcar. Las aplicaciones malintencionadas pueden usar este permiso para controlar o desviar las llamadas salientes o impedir que se realicen."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"recibir mensajes de texto (SMS)"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"Permite que la aplicación reciba y procese mensajes SMS. Las aplicaciones malintencionadas pueden controlar los mensajes o eliminarlos sin mostrarlos al usuario."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"recibir mensajes de texto (MMS)"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"Permite que la aplicación reciba y procese mensajes MMS. Las aplicaciones malintencionadas pueden usar este permiso para controlar o eliminar los mensajes sin mostrarlos al usuario."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"recibir mensajes de emergencia"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Permite que la aplicación reciba y procese mensajes de emergencia. Este permiso solo está disponible para las aplicaciones del sistema."</string>
@@ -210,16 +252,13 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"Permite que la aplicación envíe mensajes SMS. Es posible que tengas que pagar por los mensajes que las aplicaciones malintencionadas envíen sin tu confirmación."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"enviar mensajes SMS sin confirmación"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Permite que la aplicación envíe mensajes SMS. Es posible que tengas que pagar por los mensajes que las aplicaciones malintencionadas envíen sin tu confirmación."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"leer tus mensajes de texto (SMS o MMS)"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Permite que la aplicación lea mensajes SMS almacenados en el tablet o en la tarjeta SIM. Las aplicaciones malintencionadas pueden usar este permiso para leer los mensajes confidenciales."</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Permite que la aplicación lea los mensajes SMS almacenados en el teléfono o en la tarjeta SIM. Las aplicaciones malintencionadas pueden usar este permiso para leer mensajes confidenciales."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"editar tus mensajes de texto (SMS o MMS)"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Permite que la aplicación lea mensajes SMS almacenados en el tablet o en la tarjeta SIM. Las aplicaciones malintencionadas pueden leer los mensajes."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Permite que la aplicación escriba en mensajes SMS almacenados en el teléfono o en la tarjeta SIM. Las aplicaciones malintencionadas pueden borrar los mensajes."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"recibir mensajes de texto (WAP)"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Permite que la aplicación reciba y procese mensajes WAP. Las aplicaciones malintencionadas pueden controlar los mensajes o eliminarlos sin mostrarlos al usuario."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"recuperar aplicaciones en ejecución"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"Permite que la aplicación recupere información sobre tareas que se están ejecutando en este momento o que se han ejecutado recientemente. Las aplicaciones malintencionadas pueden usar este permiso para acceder a información privada sobre otras aplicaciones."</string>
@@ -235,13 +274,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Permite que la aplicación controle el modo de compatibilidad de la pantalla de otras aplicaciones. Las aplicaciones malintencionadas pueden influir de forma negativa en el funcionamiento de otras aplicaciones."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"habilitar depuración de aplicación"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"Permite que la aplicación active la depuración de otra aplicación. Las aplicaciones malintencionadas pueden usar este permiso para interrumpir la ejecución de otras aplicaciones."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"modificar ajustes de visualización del sistema"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Permite que la aplicación cambie la configuración actual como, por ejemplo, la configuración local o el tamaño de fuente general."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"habilitar modo coche"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"Permite que la aplicación habilite el modo coche."</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"cerrar otras aplicaciones"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Permite que la aplicación interrumpa los procesos en segundo plano de otras aplicaciones aunque haya suficiente memoria."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"forzar la detención de otras aplicaciones"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Permite que la aplicación fuerce la detención de otras aplicaciones."</string>
@@ -265,8 +302,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Permite que la aplicación envíe una notificación cuando se haya recibido un mensaje WAP PUSH. Las aplicaciones malintencionadas pueden usar este permiso para falsificar la recepción de un mensaje MMS o para reemplazar sin aviso el contenido de cualquier página web con variantes malintencionadas."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"limitar el número de procesos en ejecución"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Permite que la aplicación controle el número máximo de procesos que se ejecutarán. No es necesario nunca para las aplicaciones normales."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"forzar el cierre de aplicaciones en segundo plano"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Permite que la aplicación controle si las actividades finalizan siempre en cuanto pasan a segundo plano. Las aplicaciones normales nunca necesitan este permiso."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"modificar estadísticas de la batería"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"Permite que la aplicación modifique las estadísticas recopiladas sobre la batería. Las aplicaciones normales no deben usar este permiso."</string>
@@ -276,8 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Permite que la aplicación inicie la interfaz de usuario de confirmación de copia de seguridad completa. Ninguna aplicación debe usar este permiso."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"mostrar ventanas no autorizadas"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Permite que la aplicación cree ventanas para la interfaz de usuario interna del sistema. Las aplicaciones normales no deben usar este permiso."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"destacar sobre otras aplicaciones"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Permite que la aplicación muestre ventanas de alerta del sistema. Las aplicaciones malintencionadas pueden controlar toda la pantalla."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"modificar velocidad de animación global"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Permite que la aplicación cambie la velocidad de animación global (animaciones más rápidas o más lentas) en cualquier momento."</string>
@@ -339,26 +374,22 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Permite que una aplicación conceda o revoque permisos específicos para sí misma o para otras aplicaciones. Las aplicaciones malintencionadas pueden aprovechar este permiso para acceder a funciones sin tu autorización."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"establecer aplicaciones preferidas"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Permite que la aplicación modifique las aplicaciones preferidas del usuario. De esta forma, las aplicaciones malintencionadas pueden cambiar sin aviso las aplicaciones que se están ejecutando y falsificarlas para obtener datos privados del usuario."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"modificar los ajustes del sistema"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"Permite que la aplicación modifique los datos de configuración del sistema. Las aplicaciones malintencionadas pueden dañar la configuración del sistema."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"modificar la configuración segura del sistema"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Permite que la aplicación modifique los datos de la configuración de seguridad del sistema. Las aplicaciones normales no deben usar este permiso."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"modificar la asignación de servicios de Google"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"Permite que la aplicación modifique la asignación de servicios de Google. Las aplicaciones normales no deben usar este permiso."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"ejecutarse al inicio"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Permite que la aplicación se ejecute automáticamente una vez que el sistema se ha iniciado completamente. Esto puede hacer que el tablet tarde más en iniciarse y permite que la aplicación ralentice el funcionamiento global del dispositivo."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Permite que la aplicación se ejecute automáticamente una vez que el sistema se haya iniciado completamente. Esto puede hacer que el teléfono tarde más en iniciarse y puede permitir que la aplicación ralentice el funcionamiento global del dispositivo."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"enviar emisión persistente"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Permite que la aplicación envíe emisiones que permanecen en el dispositivo una vez que la emisión ha finalizado. Las aplicaciones malintencionadas pueden ralentizar el tablet o volverlo inestable al hacer que use demasiada memoria."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Permite que la aplicación envíe emisiones persistentes, que permanecen en el dispositivo una vez que la emisión haya finalizado. Las aplicaciones malintencionadas pueden ralentizar el teléfono o volverlo inestable al hacer que use demasiada memoria."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
+ <string name="permlab_readContacts" msgid="8348481131899886131">"consultar tus contactos"</string>
<string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Permite que la aplicación lea los datos de los contactos almacenados en el tablet, incluida la frecuencia con la que los hayas llamado, les hayas enviado un correo electrónico o te hayas puesto en contacto con ellos de otro modo. Esta información permite rellenar automáticamente direcciones de correo electrónico y otras funciones prácticas. Las aplicaciones malintencionadas pueden utilizar este permiso para enviar los datos de tus contactos a otros usuarios."</string>
<string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Permite que la aplicación lea los datos de los contactos almacenados en el teléfono, incluida la frecuencia con la que los hayas llamado, les hayas enviado un correo electrónico o te hayas puesto en contacto con ellos de otro modo. Esta información permite rellenar automáticamente direcciones de correo electrónico y otras funciones prácticas. Las aplicaciones malintencionadas pueden utilizar este permiso para enviar los datos de tus contactos a otros usuarios."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"modificar tus contactos"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Permite que la aplicación modifique los datos de los contactos almacenados en el tablet, incluida la frecuencia con la que los hayas llamado, les hayas enviado un correo electrónico o te hayas puesto en contacto con ellos de otro modo. Esta información permite rellenar automáticamente direcciones de correo electrónico y otras funciones prácticas. Las aplicaciones malintencionadas pueden utilizar este permiso para borrar o modificar los datos de tus contactos."</string>
<string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Permite que la aplicación modifique los datos de los contactos almacenados en el teléfono, incluida la frecuencia con la que los hayas llamado, les hayas enviado un correo electrónico o te hayas puesto en contacto con ellos de otro modo. Esta información permite rellenar automáticamente direcciones de correo electrónico y otras funciones prácticas. Las aplicaciones malintencionadas pueden utilizar este permiso para borrar o modificar los datos de tus contactos."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"leer el registro de llamadas"</string>
@@ -367,11 +398,9 @@
<string name="permlab_writeCallLog" msgid="8552045664743499354">"escribir en el registro de llamadas"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Permite que la aplicación modifique el registro de llamadas del tablet, incluidos datos sobre llamadas entrantes y salientes. Las aplicaciones malintencionadas pueden usar este permiso para borrar o modificar el registro de llamadas."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Permite que la aplicación modifique el registro de llamadas del teléfono, incluidos datos sobre llamadas entrantes y salientes. Las aplicaciones malintencionadas pueden usar este permiso para borrar o modificar el registro de llamadas."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"consultar tu propia tarjeta de contacto"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Permite que la aplicación acceda a información del perfil personal almacenada en el dispositivo (como el nombre o la información de contacto), lo que significa que la aplicación puede identificar al usuario y enviar la información de su perfil a otros usuarios."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"modificar tu propia tarjeta de contacto"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Permite que la aplicación modifique la información del perfil personal almacenada en el dispositivo (como el nombre o la información de contacto) o que añada contenido a esa información, lo que significa que otras aplicaciones pueden identificar al usuario y enviar la información de su perfil a otros usuarios."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"consulta tu actividad social"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Permite que la aplicación acceda a las actualizaciones sociales de amigos y las sincronice. Las aplicaciones malintencionadas pueden usar este permiso para leer conversaciones privadas con amigos en las redes sociales."</string>
@@ -412,15 +441,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"forzar reinicio del teléfono"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Permite que la aplicación fuerce al tablet a reiniciarse."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Permite que la aplicación fuerce el reinicio del teléfono."</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"acceder a sistema archivos de USB"</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"acceder al sistema de archivos de la tarjeta SD"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Permite que la aplicación active y desactive sistemas de archivos para un almacenamiento extraíble."</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"borrar almacenamiento USB"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"borrar tarjeta SD"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Permite que la aplicación formatee el almacenamiento extraíble."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"obtener información sobre almacenamiento interno"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"Permite que la aplicación obtenga información sobre el almacenamiento interno."</string>
@@ -432,8 +457,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Permite que la aplicación active o desactive el almacenamiento interno."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"cambiar el nombre del almacenamiento interno"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"Permite que la aplicación cambie el nombre del almacenamiento interno."</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"controlar la vibración"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"Permite que la aplicación controle la función de vibración."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"controlar linterna"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"Permite que la aplicación controle la función de linterna."</string>
@@ -458,8 +482,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"Permite que la aplicación indique al sistema los widgets que puede usar cada aplicación. Una aplicación con este permiso puede proporcionar a otras aplicaciones acceso a información personal. Las aplicaciones normales no pueden usar este permiso."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"modificar estado del teléfono"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Permite que la aplicación controle las funciones de teléfono del dispositivo. Las aplicaciones que tengan este permiso pueden cambiar de red, desactivar la señal móvil, etc., sin necesidad de informar al usuario."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"consultar la identidad y el estado del teléfono"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"Permite que la aplicación acceda a las funciones de teléfono del dispositivo. Una aplicación con este permiso puede determinar el número de teléfono y el número de serie del teléfono, si una llamada está activa, el número al que está vinculada esa llamada, etc."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"impedir que el tablet entre en modo de suspensión"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"impedir que el teléfono entre en modo de suspensión"</string>
@@ -474,8 +497,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Ejecutar como prueba de fabricante de nivel inferior, permitiendo un acceso íntegro al hardware del teléfono. Solo está disponible cuando un teléfono se está ejecutando en modo de prueba."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"establecer fondo de pantalla"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"Permite que la aplicación establezca el fondo de pantalla del sistema."</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"ajustar el tamaño del fondo de pantalla"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Permite que la aplicación establezca el tamaño del fondo de pantalla del sistema."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"restablecer el sistema a los valores predeterminados de fábrica"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"Permite que la aplicación restablezca por completo el sistema a su configuración de fábrica borrando todos los datos, los ajustes y las aplicaciones instaladas."</string>
@@ -487,21 +509,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Permite que la aplicación cambie la zona horaria del teléfono."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"actuar como servicio de administrador de cuentas"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"Permite que la aplicación haga llamadas a los autenticadores de cuentas."</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"buscar cuentas en el dispositivo"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Permite que la aplicación obtenga una lista de cuentas reconocidas por el tablet."</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Permite que la aplicación obtenga una lista de cuentas reconocidas por el teléfono."</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"crear cuentas y establecer contraseñas"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Permite que la aplicación utilice las funciones de autenticador de cuentas del administrador de cuentas, incluida la creación de cuentas y la obtención y el establecimiento de sus contraseñas."</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"añadir o eliminar cuentas"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"Permite que la aplicación lleve a cabo operaciones como añadir y eliminar cuentas y eliminar su contraseña."</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"usar cuentas del dispositivo"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"Permite que la aplicación solicite tokens de autenticación."</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"ver conexiones de red"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"Permite que la aplicación vea el estado de todas las redes."</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"acceso íntegro a Internet"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Permite que la aplicación cree sockets de red."</string>
@@ -513,36 +530,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"Permite que la aplicación cambie el estado de la conectividad de red de anclaje."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"cambiar configuración de uso de datos de referencia"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Permite que la aplicación cambie los ajustes de uso de datos de referencia."</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"ver conexiones Wi-Fi"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"Permite que la aplicación consulte la información sobre el estado de la red Wi-Fi."</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"conectarse a redes Wi-Fi y desconectarse"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"Permite que la aplicación se conecte a puntos de acceso Wi-Fi y se desconecte de ellos y que modifique las redes Wi-Fi configuradas."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"permitir recepción multidifusión Wi-Fi"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Permite que la aplicación reciba paquetes no dirigidos directamente a tu dispositivo. Esta función puede ser útil para descubrir servicios cercanos. Utiliza más batería que el modo de no multidifusión."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"acceder a los ajustes de Bluetooth"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Permite que la aplicación configure el tablet Bluetooth local y que detecte dispositivos remotos y se sincronice con ellos."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Permite que la aplicación configure el teléfono Bluetooth local y que detecte dispositivos remotos y se sincronice con ellos."</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Ver conexiones WiMAX"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Permite que la aplicación consulte la información sobre el estado de WiMAX."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"Cambiar estado de WiMAX"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Permite que la aplicación se conecte a una red WiMAX y se desconecte de ella."</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"sincronizarse con dispositivos Bluetooth"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Permite que la aplicación acceda a la configuración del tablet Bluetooth local y que establezca y acepte conexiones con los dispositivos sincronizados."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Permite que la aplicación vea los ajustes del teléfono Bluetooth local y que cree conexiones y acepte el establecimiento de las mismas con dispositivos sincronizados."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"controlar Comunicación de campo cercano (NFC)"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Permite que la aplicación se comunique con lectores, tarjetas y etiquetas de Comunicación de campo cercano (NFC)."</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"inhabilitar el bloqueo de pantalla"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Permite que la aplicación inhabilite el bloqueo del teclado y cualquier protección con contraseña asociada. Por ejemplo, el teléfono puede inhabilitar el bloqueo del teclado cuando recibe una llamada telefónica entrante y volver a habilitarlo cuando la llamada haya finalizado."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"leer la configuración de sincronización"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Permite que la aplicación consulte los ajustes de sincronización como, por ejemplo, si la sincronización está habilitada para los contactos."</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"activar y desactivar la sincronización"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Permite que la aplicación modifique los ajustes de sincronización como, por ejemplo, si la sincronización está habilitada para los contactos."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"leer estadísticas de sincronización"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"Permite que la aplicación consulte las estadísticas de sincronización como, por ejemplo, el historial de sincronizaciones realizadas."</string>
@@ -550,22 +560,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Permite que la aplicación obtenga detalles sobre los feeds sincronizados actualmente."</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"escribir feeds a los que está suscrito el usuario"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Permite que la aplicación modifique los feeds sincronizados actualmente. Las aplicaciones malintencionadas pueden modificar los feeds sincronizados."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"consultar términos que hayas añadido al diccionario"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Permite que la aplicación lea cualquier palabra, nombre o frase de carácter privado que el usuario haya almacenado en su diccionario."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"añadir al diccionario definido por el usuario"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Permite que la aplicación escriba palabras nuevas en el diccionario de usuario."</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"consultar el contenido del almacenamiento USB"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"consultar el contenido de la tarjeta SD"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Permite que la aplicación lea el contenido del almacenamiento USB que puede incluir fotos y archivos multimedia."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Permite que la aplicación lea el contenido de la tarjeta SD que puede incluir fotos y archivos multimedia."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"editar o borrar contenido de USB"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Permite escribir en el almacenamiento USB."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Permite que la aplicación escriba en la tarjeta SD."</string>
@@ -744,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"No se ha insertado ninguna tarjeta SIM en el teléfono."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Inserta una tarjeta SIM."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"Falta la tarjeta SIM o no se puede leer. Introduce una tarjeta SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"Tarjeta SIM inutilizable"</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Tu tarjeta SIM se ha inhabilitado permanentemente."\n" Para obtener otra tarjeta SIM, ponte en contacto con tu proveedor de servicios de telefonía."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Botón de canción anterior"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Botón de siguiente canción"</string>
@@ -819,15 +824,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"Distrito"</string>
<string name="autofill_area" msgid="3547409050889952423">"Área"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"Emirato"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"consultar tu historial y tus marcadores web"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Permite que la aplicación consulte todos los marcadores del navegador y todas las URL que haya visitado."</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"escribir en el historial y en los marcadores web"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Permite que la aplicación modifique la información de los marcadores o del historial del navegador almacenada en el dispositivo. Las aplicaciones malintencionadas pueden usar este permiso para modificar o borrar los datos del navegador."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Permite que la aplicación modifique los marcadores o el historial del navegador almacenados en el teléfono. Las aplicaciones malintencionadas pueden usar este permiso para modificar o borrar los datos del navegador."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"establecer una alarma"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"Permite que la aplicación establezca una alarma en una aplicación de reloj instalada. Es posible que algunas aplicaciones de reloj no incluyan esta función."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"añadir buzón de voz"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"Permite que la aplicación añada mensajes a la bandeja de entrada del buzón de voz."</string>
@@ -1087,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Establecer fecha"</string>
<string name="date_time_set" msgid="5777075614321087758">"Establecer"</string>
<string name="date_time_done" msgid="2507683751759308828">"Listo"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"Predeterminado"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NUEVO:"</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NUEVO:"</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"No es necesario ningún permiso"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"Ocultar"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"Mostrar todos"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"Almacenamiento USB masivo"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"Conexión por USB"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"Has conectado el dispositivo al ordenador por USB. Toca el siguiente botón si quieres copiar archivos entre el ordenador y el almacenamiento USB del dispositivo."</string>
@@ -1320,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"Enviando..."</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"¿Iniciar el navegador?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"¿Aceptar la llamada?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml
index 387ada0..82e76e0 100644
--- a/core/res/res/values-et/strings.xml
+++ b/core/res/res/values-et/strings.xml
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"Teie sõnumid"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"Teie SMS-, meili- ja muude sõnumite lugemine ja kirjutamine."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Teie isiklikud andmed"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Otsene juurdepääs tahvelarvutisse salvestatud kontaktidele ja kalendrile."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Otsene juurdepääs telefoni salvestatud kontaktidele ja kalendrile."</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Otsene juurdepääs teie kohta käivale teabele, mis on salvestatud teie kontaktikaardile."</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Teie sotsiaalne teave"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Otsene juurdepääs teie kontaktide teabele ja sotsiaalsetele sidemetele."</string>
<string name="permgrouplab_location" msgid="635149742436692049">"Teie asukoht"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"Jälgige oma füüsilist asukohta."</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"Võrgusuhtlus"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"Juurdepääs erinevatele võrgufunktsioonidele."</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Heliseaded"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Heliseadete muutmine."</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Aku mõjutamine"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Funktsioonide, mis võivad aku kiiresti tühjendada, kasutamine."</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"Kalender"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Otsene juurdepääs kalendrile ja sündmustele."</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Järjehoidjad ja ajalugu"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Otsene juurdepääs järjehoidjatele ja brauseri ajaloole."</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Alarm"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Äratuskella seadmine."</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Kõnepost"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Otsene juurdepääs kõnepostile."</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"Mikrofon"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Otsene juurdepääs mikrofonile heli salvestamiseks."</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"Kaamera"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"Otsene juurdepääs kaamerale fotode või videote jäädvustamiseks."</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Teie rakenduste teave"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Võime mõjutada teiste seadmes olevate rakenduste käitumist."</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Taustapilt"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Seadme taustapildi seadete muutmine."</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"Kell"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Seadme aja või ajavööndi muutmine."</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Olekuriba"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Seadme olekuriba seadete muutmine."</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Sünkroonimisseaded"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Juurdepääs sünkroonimisseadetele."</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"Teie kontod"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"Juurdepääs saadaolevatele kontodele."</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Riistvara juhtelemendid"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Süsteemi madalama taseme juurdepääs ja juhtimine."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Arendustööriistad"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Funktsioonid on vajalikud ainult rakenduste arendajatele."</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"Muu rakenduse kasutajaliides"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"Teiste rakenduste kasutajaliidese mõjutamine."</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"Mäluruum"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Juurdepääs USB-mäluseadmele."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Juurdepääs SD-kaardile."</string>
@@ -193,14 +238,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"Võimaldab rakendusel olla olekuriba."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"laienda/ahenda olekuriba"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Võimaldab rakendusel laiendada või ahendada olekuriba."</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"marsruutige väljuvad kõned uuesti"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Võimaldab rakendusel töödelda väljuvaid kõnesid ja muuta valitavat numbrit. Pahatahtlikud rakendused võivad jälgida, ümber suunata või takistada väljuvaid kõnesid."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"võtke vastu tekstisõnumeid (SMS)"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"Võimaldab rakendusel vastu võtta ja töödelda SMS-sõnumeid. Pahatahtlikud rakendused võivad teie sõnumeid jälgida või neid kustutada teile näitamata."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"võtke vastu tekstisõnumeid (MMS)"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"Võimaldab rakendusel vastu võtta ja töödelda multimeediumsõnumeid. Pahatahtlikud rakendused võivad teie sõnumeid jälgida või neid kustutada teile näitamata."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"hädaabiteadete vastuvõtmine"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Võimaldab rakendusel vastu võtta ja töödelda hädaabisõnumeid. See õigus on saadaval ainult süsteemirakendustele."</string>
@@ -210,16 +252,13 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"Võimaldab rakendusel saata SMS-sõnumeid. Pahatahtlikud rakendused võivad teile kulukaks minna, kui saadavad sõnumeid teie nõusolekuta."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"lühisõnumite saatmine ilma kinnituseta"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Võimaldab rakendusel saata SMS-sõnumeid. Pahatahtlikud rakendused võivad teile kulukaks minna, kui saadavad sõnumeid teie nõusolekuta."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"lugege oma tekstisõnumeid (SMS või MMS)"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Võimaldab rakendusel lugeda teie tahvelarvutisse või SIM-kaardile salvestatud SMS-sõnumeid. Pahatahtlikud rakendused võivad lugeda teie konfidentsiaalseid sõnumeid."</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Võimaldab rakendusel lugeda teie telefoni või SIM-kaardile salvestatud SMS-sõnumeid. Pahatahtlikud rakendused võivad lugeda teie konfidentsiaalseid sõnumeid."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"muutke oma tekstisõnumeid (SMS või MMS)"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Võimaldab rakendusel kirjutada teie tahvelarvutisse või SIM-kaardile salvestatud SMS-sõnumitesse. Pahatahtlikud rakendused võivad teie sõnumid kustutada."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Võimaldab rakendusel kirjutada teie telefoni või SIM-kaardile salvestatud SMS-sõnumitesse. Pahatahtlikud rakendused võivad teie sõnumid kustutada."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"võtke vastu tekstisõnumeid (WAP)"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Võimaldab rakendusel vastu võtta ja töödelda WAP-sõnumeid. Pahatahtlikud rakendused võivad teie sõnumeid jälgida või neid kustutada teile näitamata."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"Käitatud rakenduste toomine"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"Võimaldab rakendusel hankida teavet praegu töötavate ja hiljuti töötanud ülesannete kohta. Pahatahtlikud rakendused võivad avastada privaatset teavet teiste rakenduste kohta."</string>
@@ -235,13 +274,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Võimaldab rakendusel juhtida teiste rakenduste kuva ühilduvuse režiimi. Pahatahtlikud rakendused võivad teisi rakendusi häirida."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"Rakenduse silumise lubamine"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"Võimaldab rakendusel lülitada sisse teise rakenduse silumise. Pahatahtlikud rakendused võivad seda kasutada teiste rakenduste peatamiseks."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"muutke süsteemi kuvaseadeid"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Võimaldab rakendusel muuta praegust konfiguratsiooni, näiteks lokaati või üldist kirjasuurust."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"autorežiimi lubamine"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"Võimaldab rakendusel autorežiimi lubada."</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"sulgege teised rakendused"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Võimaldab rakendusel peatada teiste rakenduste taustaprotsessid, isegi kui mälu on piisavalt."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"Teiste rakenduste jõuga peatamine"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Lubab rakendusel sunniviisiliselt teisi rakendusi peatada."</string>
@@ -265,8 +302,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Võimaldab rakendusel edastada teatise WAP PUSH-sõnumi vastuvõtmise kohta. Pahatahtlikud rakendused võivad seda kasutada MMS-sõnumite vastuvõtmise võltsimiseks või mis tahes veebilehe sisu salaja asendamiseks pahatahtlikuga."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"piira töötavate protsesside arvu"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Võimaldab rakendusel juhtida töötavate protsesside maksimaalset arvu. Tavarakenduste puhul pole seda vaja."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"sundige taustarakendused sulguma"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Võimaldab rakendusel määrata, kas tegevused lõpetatakse kohe, kui need liiguvad taustale. Tavarakenduste puhul pole seda vaja."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"muuda akustatistikat"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"Võimaldab rakendusel muuta kogutud akustatistikat. Mitte kasutada tavarakenduste puhul."</string>
@@ -276,8 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Võimaldab rakendusel käivitada täieliku varukoopia kinnitusliidese. Mitte kasutada üheski rakenduses."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"kuva volituseta aknad"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Võimaldab rakendusel luua aknaid, mis on mõeldud kasutamiseks süsteemisisesele kasutajaliidesele. Mitte kasutada tavarakenduste puhul."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"tõmmake üle teiste rakenduste"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Võimaldab rakendusel kuvada süsteemihoiatuste aknaid. Pahatahtlikud rakendused võivad hõlmata kogu ekraani."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"muuda üldist animatsioonikiirust"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Võimaldab rakendusel muuta animatsiooni üldist kiirust (animatsioone kiirendada või aeglustada) ükskõik millal."</string>
@@ -339,26 +374,22 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Võimaldab rakendusel anda või tühistada teatud lubasid endale või teistele rakendustele. Pahatahtlikud rakendused võivad kasutada seda juurdepääsu hankimiseks sellistele funktsioonidele, mille jaoks te pole luba andnud."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"Eelistatud rakenduste määramine"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Võimaldab rakendusel muuta teie eelistatud rakendusi. Pahatahtlikud rakendused võivad salaja muuta töötavaid rakendusi, pettes teie olemasolevad rakendused koguma teilt privaatseid andmeid."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"muutke süsteemi seadeid"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"Võimaldab rakendusel muuta süsteemiseadete andmeid. Pahatahtlikud rakendused võivad rikkuda teie süsteemi konfiguratsiooni."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"muuda turvalisi süsteemiseadeid"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Võimaldab rakendusel muuta süsteemi turvaseadete andmeid. Mitte kasutada tavarakenduste puhul."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"muuda Google\'i teenustekaarti"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"Võimaldab rakendusel muuta Google\'i teenustekaarti. Mitte kasutada tavarakenduste puhul."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"käitage käivitamisel"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Võimaldab rakendusel käivituda ise kohe, kui süsteem on käivitunud. See võib tahvelarvuti käivitamist aeglustada ja lubab rakendusel muuta tahvelarvuti ka üldiselt aeglasemaks, kuna töötab pidevalt."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Võimaldab rakendusel käivituda ise kohe, kui süsteem on käivitunud. See võib telefoni käivitamist aeglustada ja lubab rakendusel muuta telefoni ka üldiselt aeglasemaks, kuna töötab pidevalt."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"kleepsaate saatmine"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Võimaldab rakendusel saata püsivaid edastusi, mis jäävad pärast saate lõppemist alles. Pahatahtlikud rakendused võivad muuta tahvelarvuti aeglaseks või ebastabiilseks, põhjustades selle liiga suurt mälukasutust."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Võimaldab rakendusel saata püsivaid edastusi, mis jäävad pärast saate lõppemist alles. Pahatahtlikud rakendused võivad muuta telefoni aeglaseks või ebastabiilseks, põhjustades selle liiga suurt mälukasutust."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
+ <string name="permlab_readContacts" msgid="8348481131899886131">"lugege oma kontakte"</string>
<string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Lubab rakendusel lugeda kõikide tahvelarvutisse salvestatud kontaktide andmeid, sh seda, kui sageli olete nendele inimestele helistanud, meilinud või nendega muul viisil suhelnud. See on kasulik e-posti aadresside automaatsel täitmisel ja muude mugavusfunktsioonide puhul. Pahatahtlikud rakendused võivad selle loa abil saata teie kontaktandmed teistele inimestele."</string>
<string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Lubab rakendusel lugeda kõikide telefoni salvestatud kontaktide andmeid, sh seda, kui sageli olete nendele inimestele helistanud, meilinud või nendega muul viisil suhelnud. See on kasulik e-posti aadresside automaatsel täitmisel ja muude mugavusfunktsioonide puhul. Pahatahtlikud rakendused võivad selle loa abil saata teie kontaktandmed teistele inimestele."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"muutke oma kontakte"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Lubab rakendusel muuta kõikide tahvelarvutisse salvestatud kontaktide andmeid, sh seda, kui sageli olete nendele inimestele helistanud, meilinud või nendega muul viisil suhelnud. See on kasulik e-posti aadresside automaatsel täitmisel ja muude mugavusfunktsioonide puhul. Pahatahtlikud rakendused võivad kasutada seda luba kontaktandmete muutmiseks või kustutamiseks."</string>
<string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Lubab rakendusel muuta kõikide telefoni salvestatud kontaktide andmeid, sh seda, kui sageli olete nendele inimestele helistanud, meilinud või nendega muul viisil suhelnud. See on kasulik e-posti aadresside automaatsel täitmisel ja muude mugavusfunktsioonide puhul. Pahatahtlikud rakendused võivad kasutada seda luba kontaktandmete muutmiseks või kustutamiseks."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"kõnelogi lugemine"</string>
@@ -367,11 +398,9 @@
<string name="permlab_writeCallLog" msgid="8552045664743499354">"kõnelogi kirjutamine"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Lubab rakendusel muuta tahvelarvuti kõnelogi, sh sissetulevate ja väljaminevate kõnede andmeid. Pahatahtlikud rakendused võivad kasutada seda kõnelogi kustutamiseks või muutmiseks."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Lubab rakendusel muuta telefoni kõnelogi, sh sissetulevate ja väljaminevate kõnede andmeid. Pahatahtlikud rakendused võivad kasutada seda kõnelogi kustutamiseks või muutmiseks."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"lugege oma kontaktikaarti"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Võimaldab rakendusel lugeda seadmesse salvestatud isiklikku teavet, näiteks teie nime ja kontaktandmeid. See tähendab, et rakendus saab teid tuvastada ja saata teie profiiliteavet teistele."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"muutke oma kontaktikaarti"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Võimaldab rakendusel muuta või lisada seadmesse salvestatud isiklikku teavet, näiteks teie nime ja kontaktandmeid. See tähendab, et teised rakendused saavad teid tuvastada ja saata teie profiiliteavet teistele."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"Sotsiaalvoo lugemine"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Võimaldab rakendusel hankida juurdepääsu teie ja teie sõprade suhtlusuudistele ning laseb neid sünkroonida. Pahatahtlikud rakendused võivad selle abil lugeda teie ja teie sõprade vahelist suhtlust suhtlusvõrgustikes."</string>
@@ -412,15 +441,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"sunni telefoni taaskäivitus"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Võimaldab rakendusel sundida tahvelarvutit taaskäivituma."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Võimaldab rakendusel sundida telefoni taaskäivituma."</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"juurdep. USB-ruumi failisüst."</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"juurdepääs SD-kaardi failisüsteemile"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Võimaldab rakendusel failisüsteeme irdmällu paigaldada ja sealt lahutada."</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"tühjendage USB-salvestusruum"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"tühjendage SD-kaart"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Võimaldab rakendusel vormindada irdmälu."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"hangi teavet sisemälu kohta"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"Võimaldab rakendusel hankida sisemälu teavet."</string>
@@ -432,8 +457,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Võimaldab rakendusel sisemäluseadme paigaldada/eraldada."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"sisemälu ümbernimetamine"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"Võimaldab rakendusel sisemälu ümber nimetada."</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"juhtige vibreerimist"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"Võimaldab rakendusel juhtida vibreerimist."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"juhi taskulampi"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"Võimaldab rakendusel juhtida taskulampi."</string>
@@ -458,8 +482,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"Võimaldab rakendusel öelda süsteemile, milline rakendus saab kasutada milliseid vidinaid. Selle õigusega rakendus võib anda teistele rakendustele juurdepääsu isiklikele andmetele. Mitte kasutada tavarakenduste puhul."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"muuda telefoni olekut"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Võimaldab rakendusel juhtida seadme telefonifunktsioone. Selle loaga rakendus saab vahetada võrke, lülitada telefoniraadiot sisse ja välja ning teha muudki ilma teid teavitamata."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"lugege telefoni olekut ja identiteeti"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"Võimaldab rakendusel juurde pääseda seadme telefonifunktsioonidele. Selle õigusega rakendus suudab kindlaks teha telefoninumbri ja telefoni seerianumbri, kas kõne on aktiivne, ühendatud kõne telefoninumbri jms."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"tahvelarvuti uinumise vältimine"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"väldi telefoni uinumist"</string>
@@ -474,8 +497,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Käivitage madalatasemelise tootjatestina, mis võimaldab täielikku juurdepääsu telefoni riistvarale. Kasutatav ainult juhul, kui telefon töötab tootja testrežiimis."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"määra taustapilt"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"Võimaldab rakendusel määrata süsteemi taustapildi."</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"korrigeerige oma taustapildi suurust"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Võimaldab rakendusel määrata süsteemi taustapildi suuruse vihjeid."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"lähtesta süsteem tehase vaikeseadetele"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"Võimaldab rakendusel süsteemi tehaseseaded täielikult lähtestada, kustutades kõik andmed, konfiguratsiooni ja installitud rakendused."</string>
@@ -487,21 +509,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Võimaldab rakendusel muuta telefoni ajavööndit."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"AccountManagerService\'ina tegutsemine"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"Võimaldab rakendusel helistada konto autentijatele."</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"leidke seadmest kontod"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Võimaldab rakendusel hankida tahvelarvutile teadaolevate kontode loendi."</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Võimaldab rakendusel saada telefonile teadaolevate kontode loendi."</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"looge kontod ja määrake paroolid"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Võimaldab rakendusel kasutada kontohalduri konto autentija võimalusi, sh luua kontosid ning hankida ja määrata paroole."</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"lisage või eemaldage kontosid"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"Võimaldab rakendusel teha toiminguid, nagu kontode lisamine ja eemaldamine ning nende paroolide kustutamine."</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"kasutage seadmes olevaid kontosid"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"Võimaldab rakendusel taotleda autentimise lubasid."</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"vaadake võrguühendusi"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"Võimaldab rakendusel vaadata kõigi võrkude olekut."</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"täielik Interneti-juurdepääs"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Võimaldab rakendusel luua võrgupesasid."</string>
@@ -513,36 +530,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"Võimaldab rakendusel muuta jagatud võrgu ühenduvuse olekut."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"muuda taustaandmete kasutusseadeid"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Võimaldab rakendusel muuta taustaandmete kasutuse seadeid."</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"vaadake WiFi-ühendusi"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"Võimaldab rakendusel kuvada WiFi olekuteavet."</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"ühendage ja katkestage ühendus WiFi-ga"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"Võimaldab rakendusel luua ja katkestada ühenduse WiFi-pääsupunktidega ning teha muudatusi seadistatud WiFi-võrkudesse."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"luba WiFi multiedastusvastuvõtt"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Võimaldab rakendusel vastu võtta mitte otse teie seadmele suunatud pakette. See võib olla kasulik teie lähedal pakutavate teenuste leidmisel. Kasutab rohkem energiat kui mitte-multiedastusrežiim."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"juurdepääs Bluetoothi seadetele"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Võimaldab rakendusel seadistada kohalikku Bluetooth-tahvelarvutit ning leida ja siduda seda kaugseadmetega."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Võimaldab rakendusel seadistada kohalikku Bluetooth-telefoni ning leida ja siduda seda kaugseadmetega."</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Vaadake WiMAX-i ühendusi"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Võimaldab rakendusel vaadata WiMAX-i olekuteavet."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"WiMAX-i oleku muutmine"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Võimaldab rakendusel luua ja katkestada ühenduse WiMAX-i võrguga."</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"siduge Bluetoothi seadmetega"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Võimaldab rakendusel vaadata kohaliku Bluetooth-tahvelarvuti konfiguratsiooni ning luua ja heaks kiita ühendusi seotud seadmetega."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Võimaldab rakendusel vaadata kohaliku Bluetooth-telefoni konfiguratsiooni ning luua ja heaks kiita ühendusi seotud seadmetega."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"lähiväljaside juhtimine"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Võimaldab rakendusel suhelda lähiväljaside (NFC) märgendite, kaartide ja lugeritega."</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"keelake ekraanilukk"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Võimaldab rakendusel keelata klahviluku ja muu seotud parooli turvalisuse. Selle põhjendatud näiteks on see, kui telefon keelab klahviluku sissetuleva kõne vastuvõtmisel ja lubab klahviluku uuesti, kui kõne on lõpetatud."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"loe sünkroonimisseadeid"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Võimaldab rakendusel lugeda sünkroonimisseadeid, näiteks sünkroonimise lubamist inimeste rakenduse puhul."</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"lülitage sünkroonimine sisse ja välja"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Võimaldab rakendusel muuta sünkroonimisseadeid, näiteks sünkroonimise lubamist inimeste rakenduse puhul."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"loe sünkroonimisstatistikat"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"Võimaldab rakendusel lugeda sünkroonimisstatistikat, näiteks teostatud sünkroonimiste ajalugu."</string>
@@ -550,22 +560,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Võimaldab rakendusel saada üksikasju praegu sünkroonitavate voogude kohta."</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"kirjuta tellitud kanaleid"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Võimaldab rakendusel muuta teie praegu sünkroonitud vooge. Pahatahtlikud rakendused võivad muuta teie sünkroonitud vooge."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"lugege termineid, mis te sõnastikku lisasite"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Võimaldab rakendusel lugeda kõiki privaatseid sõnu, nimesid ja fraase, mille kasutaja võis salvestada kasutajasõnastikku."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"Kasutaja määratud sõnastikku kirjutamine"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Võimaldab rakendusel kirjutada kasutajasõnastikku uusi sõnu."</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"lugege USB-salvestusruumi sisu"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"lugege oma SD-kaardi sisu"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Võim. lugeda USB-ruumi sisu."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Võimaldab rakendusel lugeda SD-kaardi sisu, mis võib sisaldada fotosid ja meediume."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"muutke, kustut. USB-ruumi sisu"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Võimaldab rakendusel kirjutada USB-mäluseadmele."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Võimaldab rakendusel kirjutada SD-kaardile."</string>
@@ -744,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Telefonis pole SIM-kaarti."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Sisestage SIM-kaart."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM-kaart puudub või on loetamatu. Sisestage SIM-kaart."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"Kasutamiskõlbmatu SIM-kaart."</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"SIM-kaart on jäädavalt keelatud."\n" Teise SIM-kaardi saamiseks võtke ühendust oma traadita side teenusepakkujaga."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Eelmise loo nupp"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Nupp Järgmine rada"</string>
@@ -819,15 +824,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"Vald"</string>
<string name="autofill_area" msgid="3547409050889952423">"Piirkond"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"Emiraat"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"lugege oma veebijärjehoidjaid ja -ajalugu"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Lubab rakendusel lugeda kõiki brauseri külastatud URL-e ja kõiki brauseri järjehoidjaid."</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"kirjutage veebijärjehoidjaid ja -ajalugu"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Võimaldab rakendusel muuta brauseri ajalugu või tahvelarvutisse salvestatud järjehoidjaid. Pahatahtlikud rakendused võivad seda kasutada teie brauseriandmete kustutamiseks või muutmiseks."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Võimaldab rakendusel muuta brauseri ajalugu või telefoni salvestatud järjehoidjaid. Pahatahtlikud rakendused võivad seda kasutada teie brauseriandmete kustutamiseks või muutmiseks."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"määrake äratus"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"Võimaldab rakendusel seada installitud äratuskellarakenduses äratuse. Mõned äratuskellarakendused ei pruugi seda funktsiooni juurutada."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"lisa kõneposti"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"Võimaldab rakendusel lisada sõnumeid teie kõneposti postkasti."</string>
@@ -1087,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Kuupäeva määramine"</string>
<string name="date_time_set" msgid="5777075614321087758">"Määra"</string>
<string name="date_time_done" msgid="2507683751759308828">"Valmis"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"Vaikimisi"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"UUS: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"UUS: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"Lube pole vaja"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"Peida"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"Näita kõiki"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"USB-massmälu"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"USB ühendatud"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"Teil on arvutiga ühendus USB kaudu. Puudutage allolevat nuppu, kui soovite faile arvuti ja Androidi USB-salvestusruumi vahel kopeerida."</string>
@@ -1320,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"Saatmine ..."</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"Kas käivitada brauser?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"Kas vastata kõnele?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index a7eaafd..1c0ef97 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -147,7 +147,7 @@
<string name="shutdown_confirm" product="default" msgid="649792175242821353">"گوشی شما خاموش می شود."</string>
<string name="shutdown_confirm_question" msgid="2906544768881136183">"آیا میخواهید تلفن خاموش شود؟"</string>
<string name="reboot_safemode_title" msgid="7054509914500140361">"راهاندازی مجدد در حالت امن"</string>
- <string name="reboot_safemode_confirm" msgid="55293944502784668">"آیا میخواهید با حالت امن راهاندازی مجدد کنید؟ با این کار کلیه برنامههای شخص ثالثی که نصب کردهاید غیر فعال میشود. با راهاندازی دوباره سیستم این برنامهها دوباره بازیابی میشوند."</string>
+ <string name="reboot_safemode_confirm" msgid="55293944502784668">"آیا میخواهید با حالت امن راهاندازی مجدد کنید؟ با این کار کلیه برنامههای شخص ثالثی که نصب کردهاید غیرفعال میشوند. با راهاندازی دوباره سیستم این برنامهها دوباره بازیابی میشوند."</string>
<string name="recent_tasks_title" msgid="3691764623638127888">"اخیر"</string>
<string name="no_recent_tasks" msgid="8794906658732193473">"برنامههای جدید موجود نیست."</string>
<string name="global_actions" product="tablet" msgid="408477140088053665">"گزینه های رایانه لوحی"</string>
@@ -168,12 +168,84 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"پیام های شما"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"پیام کوتاه، ایمیل و دیگر پیامها را بخوانید."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"اطلاعات شخصی شما"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"دسترسی مستقیم به مخاطبین و تقویم ذخیره شده در رایانه لوحی."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"دسترسی مستقیم به مخاطبین و تقویم ذخیره شده در گوشی."</string>
+ <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) -->
+ <skip />
+ <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) -->
+ <skip />
<string name="permgrouplab_location" msgid="635149742436692049">"موقعیت مکانی شما"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"بر موقعیت مکانی فیزیکی خود نظارت داشته باشید."</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"ارتباط شبکه"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"به ویژگیهای مختلف شبکه دسترسی داشته باشید."</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) -->
+ <skip />
+ <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) -->
+ <skip />
+ <!-- no translation found for permgrouplab_calendar (5863508437783683902) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_calendar (5777534316982184416) -->
+ <skip />
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) -->
+ <skip />
+ <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) -->
+ <skip />
+ <!-- no translation found for permgrouplab_voicemail (4162237145027592133) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) -->
+ <skip />
+ <!-- no translation found for permgrouplab_microphone (171539900250043464) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_microphone (7106618286905738408) -->
+ <skip />
+ <!-- no translation found for permgrouplab_camera (4820372495894586615) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_camera (2933667372289567714) -->
+ <skip />
+ <!-- no translation found for permgrouplab_appInfo (8028789762634147725) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) -->
+ <skip />
+ <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) -->
+ <skip />
+ <!-- no translation found for permgrouplab_systemClock (406535759236612992) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) -->
+ <skip />
+ <!-- no translation found for permgrouplab_statusBar (2095862568113945398) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) -->
+ <skip />
+ <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) -->
+ <skip />
<string name="permgrouplab_accounts" msgid="3359646291125325519">"حساب های شما"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"به حساب های موجود دسترسی داشته باشید."</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"کنترل های سخت افزار"</string>
@@ -184,6 +256,10 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"دسترسی سطح پایین و کنترل سیستم."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"ابزارهای توسعه"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"ویژگیهایی که فقط مورد نیاز برنامه نویسان است."</string>
+ <!-- no translation found for permgrouplab_display (4279909676036402636) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_display (6051002031933013714) -->
+ <skip />
<string name="permgrouplab_storage" msgid="1971118770546336966">"ذخیره سازی"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"به حافظه USB دسترسی پیدا کنید."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"به کارت SD دسترسی داشته باشید."</string>
@@ -193,14 +269,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"به برنامه اجازه میدهد که تبدیل به نوار وضعیت شود."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"گسترش دادن/جمع کردن نوار وضعیت"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"به برنامه اجازه میدهد تا نوار ابزار را جمع کند یا باز کند."</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"ترسیم مجدد مسیر تماسهای خروجی"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"به برنامه اجازه میدهد تماسهای خروجی را پردازش کند و شمارههایی که باید گرفته شوند را تغییر دهد. برنامههای مخرب میتوانند تماسهای خروجی را کنترل کنند، هدایت کنند یا از آنها جلوگیری کنند."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"دریافت پیامهای نوشتاری (پیامک)"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"به برنامه اجازه میدهد تا پیامهای کوتاه را دریافت و پردازش کند. برنامههای مخرب میتوانند پیامهای شما را کنترل کنند یا بدون نشاندادن آنها به شما آنها را حذف کنند."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"دریافت پیامهای نوشتاری (MMS)"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"به برنامه اجازه میدهد تا پیامهای MMS را دریافت و پردازش کند. برنامههای مخرب پیامهای شما را کنترل میکنند یا بدون نشان دادن آنها به شما آنها را پاک میکنند."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"دریافت پخش های اضطراری"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"به برنامه اجازه میدهد تا پیامهای پخش اضطراری را دریافت و پردازش کند. این مجوز فقط برای برنامههای سیستم در دسترس است."</string>
@@ -210,16 +283,13 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"به برنامه اجازه میدهد پیامهای کوتاه ارسال کند. ممکن است برنامههای مخرب با ارسال پیام بدون تایید شما برای شما هزینه داشته باشند."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"ارسال پیامک بدون تأیید"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"به برنامه اجازه میدهد تا پیام کوتاه ارسال کند. برنامههای مخرب میتوانند با ارسال پیام بدون تایید شما برای شما هزینه داشته باشند."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"خواندن پیامهای نوشتاری شما (پیامک یا MMS)"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"به برنامه اجازه میدهد تا پیامهای کوتاه ذخیره شده در رایانه لوحی یا سیم کارت شما را بخواند. برنامههای مخرب میتوانند پیامهای محرمانه شما را بخوانند."</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"به برنامه اجازه میدهد تا پیامهای کوتاه روی تلفن یا سیم کارت را بخواند. برنامههای مخرب میتوانند پیامهای محرمانه شما را بخوانند."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"ویرایش پیامهای نوشتاری شما (پیامک یا MMS)"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"به برنامه اجازه میدهد تا در پیامهای کوتاه ذخیره شده در رایانه لوحی یا سیم کارت بنویسد. برنامههای مخرب پیامهای شما را حذف میکنند."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"به برنامه اجازه میدهد تا در پیامهای کوتاه ذخیره شده در تلفن یا سیم کارت بنویسد. برنامههای مخرب میتوانند پیامهای شما را حذف کنند."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"دریافت پیامهای نوشتاری (WAP)"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"به برنامه اجازه میدهد تا پیامهای WAP را دریافت و پردازش کند. برنامههای مخرب میتوانند پیامهای شما را کنترل کنند یا آنها را بدون نشان دادن آنها به شما حذف کنند."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"بازیابی برنامههای در حال اجرا"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"به برنامه اجازه میدهد تا اطلاعات مربوط به کارهایی که اخیرا و در حال حاضر اجرا میشوند را بازیابی کند. برنامههای مخرب میتوانند اطلاعات شخصی مربوط به برنامههای دیگر را پیدا کنند."</string>
@@ -235,13 +305,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"به برنامه کاربردی اجازه کنترل حالت سازگاری صفحه نمایش برای برنامههای دیگر را میدهد. برنامههای خرابکار ممکن است باعث کارکرد نادرست دیگر برنامهها شوند."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"فعال کردن عیبیابی برنامه"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"به برنامه اجازه میدهد تا عیبیابی را برای برنامهای دیگر فعال کند. برنامههای مخرب میتوانند از آن استفاده کنند تا اجرای برنامههای دیگر را متوقف کنند."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"تغییر تنظیمات نمایشگر سیستم"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"به برنامه اجازه میدهد تا پیکربندی فعلی، از قبیل اندازه کلی قلم یا محل، را تغییر دهد."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"فعال کردن حالت خودرو"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"به برنامه اجازه میدهد تا حالت خودرو را فعال کند."</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"بستن سایر برنامهها"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"به برنامه اجازه میدهد تا پردازشهای پس زمینه دیگر برنامهها را از بین ببرد، حتی اگر حافظه کم نباشد."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"توقف اجباری برنامههای دیگر"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"به برنامه اجازه میدهد تا به اجبار برنامههای دیگر را متوقف کند."</string>
@@ -265,8 +333,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"به برنامه اجازه میدهد تا اعلانی را پخش کند که پیام WAP PUSH دریافت کرده است. برنامههای مخرب میتوانند از آن استفاده کنند تا دریافت پیام MMS را جعل کنند یا محتوای هر صفحه وب را با انواع مخرب جایگزین کنند."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"محدود کردن تعداد فرآیندهای در حال اجرا"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"به برنامه اجازه میدهد تا حداکثر تعداد پردازشهایی را که اجرا خواهد شد کنترل کند. هرگز برای برنامههای عادی لازم نیست."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"بستن اجباری برنامههای پسزمینه"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"به برنامه اجازه میدهد تا به محض اینکه فعالیتها به پس زمینه رفتند تمام شوند. برای برنامههای عادی نیازی نیست."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"اصلاح کردن آمار مربوط به باتری"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"به برنامه اجازه میدهد تا آمار جمع آوری شده باتری را تغییر دهد. برای استفاده برنامههای عادی نیست."</string>
@@ -276,8 +343,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"به برنامه اجازه میدهد تا رابط کاربر تایید نسخه کامل پشتیبان را راهاندازی کند. هر برنامهای نمیتواند از آن استفاده کند."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"نمایش پنجره های غیرمجاز"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"به برنامه اجازه میدهد پنجرههایی را ایجاد کند که میخواهد توسط رابط کاربر سیستم داخلی استفاده شود. برای استفاده برنامههای عادی نیست."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"ترسیم روی برنامههای دیگر"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"به برنامه اجازه میدهد تا پنجرههای هشدار سیستم را نشان دهد. برنامههای مخرب میتوانند کل صفحه را کنترل کنند."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"اصلاح سرعت انیمیشن کلی"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"به برنامه اجازه میدهد سرعت کلی انیمیشن را هر زمان که بخواهد تغییر دهد (انیمیشنهای سریعتر یا آهستهتر)."</string>
@@ -339,26 +405,22 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"به یک برنامه کاربردی اجازه میدهد تا مجوزهای خاصی را برای خود یا دیگر برنامهها ارائه کرده یا آنها را لغو کند. برنامههای مضر از این حالت برای دسترسی به ویژگیهایی استفاده میکنند که شما اجازه آن را در اختیارشان قرار ندادهاید."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"تنظیم برنامههای ترجیحی"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"به برنامه اجازه میدهد تا برنامههای ترجیحی شما را تغییر دهد. برنامههای مخرب میتوانند بدون اعلان برنامههایی را که اجرا میشوند، تغییر دهند خود را به جای برنامههای کنونی قلمداد کنند تا دادههای شخصی را از شما جمع آوری کنند."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"اصلاح تنظیمات سیستم"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"به برنامه اجازه میدهد تا دادههای تنظیم سیستم را تغییر دهد. برنامههای مخرب میتوانند پیکربندی سیستم شما را خراب کنند."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"اصلاح کردن تنظیمات سیستم ایمن"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"به برنامه اجازه میدهد دادههای تنظیمات امنیتی سیستم را تغییر دهد. برای استفاده برنامههای عادی نیست."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"اصلاح کردن نقشه سرویس های Google"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"به برنامه اجازه میدهد تا نقشه سرویسهای Google را تغییر دهد. برای استفاده برنامههای عادی نیست."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"اجرا هنگام راهاندازی"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"به برنامه اجازه میدهد تا به محض اتمام راهاندازی سیستم خودبخود شروع به کار کند. این کار ممکن است باعث شود مدت زمان بیشتری صرف شدوع به کار رایانه لوحی شود و به برنامه اجازه میدهد تا با اجرای همیشگی رایانه لوحی را کند کند."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"به برنامه اجازه میدهد تا به محض اینکه سیستم راهاندازی شد خودبخود شروع به کار کند. این کار باعث میشود مدت زمان بیشتری صرف شود تا تلفن شروع به کار کند و به برنامه اجازه میدهد تا کل تلفن کند شود چون همیشه در حال اجرا شدن است."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"ارسال پخش چسبنده"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"به برنامه اجازه میدهد تا پخشهای ماندگار را که پس از اتمام پخش باقی میمانند ارسال شوند. برنامههای مخرب میتوانند با استفاده بیش از حد از حافظه وضعیت آن را ناپایدار سازند یا باعث کند شدن رایانه لوحی شوند."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"به برنامه اجازه میدهد تا پخشهای ماندگار را که پس از اتمام پخش باقی میمانند ارسال کند. برنامههای مخرب میتوانند با استفاده بیش از حد از حافظه تلفن را کند یا ناپایدار کنند."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
+ <string name="permlab_readContacts" msgid="8348481131899886131">"خواندن مخاطبین شما"</string>
<string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"به برنامه اجازه میدهد دادههای مربوط به مخاطبان را که بر روی گوشی ذخیره شده است بخواند و این دادهها شامل لیست مخاطبانی که با آنها مکرراً تماس میگیرید، ایمیل میزنید یا با راههای دیگر با آنها ارتباط برقرار میکنید میشود. این موارد در تکمیل خودکار آدرسهای ایمیل یا دیگر موارد برای راحتی کار به شما کمک میکنند. برنامههای خرابکار میتوانند از این مجوز برای ارسال دادههای تماس شما به افراد دیگر استفاده کنند."</string>
<string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"به برنامه اجازه میدهد دادههای مربوط به مخاطبان را که بر روی گوشی ذخیره شده است پاک کند و این دادهها شامل لیست مخاطبانی که با آنها مکرراً تماس میگیرید، ایمیل میزنید یا با راههای دیگر با آنها ارتباط برقرار میکنید میشود. این موارد در تکمیل خودکار آدرسهای ایمیل یا دیگر موارد برای راحتی کار به شما کمک میکنند. برنامههای خرابکار میتوانند از این مجوز برای ارسال دادههای تماس شما به افراد دیگر استفاده کنند."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"اصلاح مخاطبین شما"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"به برنامه اجازه میدهد دادههای مربوط به مخاطبان را که بر روی رایانه لوحی شما ذخیره شده است تغییر دهد و این دادهها شامل لیست مخاطبانی که با آنها مکرراً تماس میگیرید، ایمیل میزنید یا با راههای دیگر با آنها ارتباط برقرار میکنید میشود. این موارد در تکمیل خودکار آدرسهای ایمیل یا دیگر موارد برای راحتی کار به شما کمک میکنند. برنامههای خرابکار میتوانند از این مجوز برای ارسال دادههای تماس شما به افراد دیگر یا حذف آنها استفاده کنند."</string>
<string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"به برنامه اجازه میدهد دادههای مربوط به مخاطبان را که بر روی گوشی ذخیره شده است تغییر دهد و این دادهها شامل لیست مخاطبانی که با آنها مکرراً تماس میگیرید، ایمیل میزنید یا با راههای دیگر با آنها ارتباط برقرار میکنید میشود. این موارد در تکمیل خودکار آدرسهای ایمیل یا دیگر موارد برای راحتی کار به شما کمک میکنند. برنامههای خرابکار میتوانند از این مجوز برای ارسال دادههای تماس شما به افراد دیگر یا حذف آنها استفاده کنند."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"خواندن گزارش تماس"</string>
@@ -367,11 +429,9 @@
<string name="permlab_writeCallLog" msgid="8552045664743499354">"نوشتن گزارش تماس"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"به برنامه اجازه میدهد گزارشات تماس رایانه لوحی شما، از جمله دادههایی درمورد تماسهای ورودی و خروجی را تغییر دهد. برنامههای مخرب ممکن است از این ویژگی برای پاک کردن یا تغییر گزارش تماس شما استفاده کنند."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"به برنامه اجازه میدهد گزارشات تماس تلفنی شما، از جمله دادههایی درمورد تماسهای ورودی و خروجی را تغییر دهد. برنامههای مخرب ممکن است از این ویژگی برای پاک کردن یا تغییر گزارش تماس شما استفاده کنند."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"خواندن کارت تماس شما"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"به برنامه اجازه میدهد اطلاعات نمایه شخصی ذخیره شده در دستگاه شما را بخواند. یعنی برنامه میتواند شما را شناسایی کند و اطلاعات نمایه شما را به دیگران ارسال کند."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"اصلاح کارت تماس شما"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"به برنامه اجازه میدهد تا اطلاعات نمایه شخصی ذخیره شده در دستگاه شما را تغییر دهد یا اضافه کند، مانند نام و اطلاعات تماس شما. یعنی برنامههای دیگر میتوانند شما را شناسایی کنند و اطلاعات نمایه شما را برای دیگران ارسال کنند."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"خواندن جریان اجتماعی شما"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"به برنامه امکان میدهد تا به بهروزرسانیهای اجتماعی شما و دوستانتان دسترسی داشته باشد و آنها را همگام کنند. برنامههای مخرب میتوانند از آن برای خواندن ارتباطات خصوصی بین شما و دوستانتان در شبکههای اجتماعی استفاده کنند."</string>
@@ -412,15 +472,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"اجبار برنامه برای راه اندازی مجدد"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"به برنامه اجازه میدهد تا سبب راه اندازی مجدد رایانه لوحی شود."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"به برنامه اجازه میدهد تا سبب راه اندازی مجدد گوشی شود."</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"دسترسی به سیستم فایل حافظه USB"</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"دسترسی به سیستم فایل کارت SD"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"به برنامه اجازه میدهد تا فایلهای سیستمی در حافظه جداشدنی نصب شود یا نصب آن لغو شود."</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"پاک کردن حافظه USB"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"پاک کردن کارت SD"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"به برنامه اجازه میدهد تا حافظه جداشدنی را فرمت کند."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"دریافت اطلاعات مربوط به حافظه داخلی"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"به برنامه اجازه میدهد تا اطلاعات مربوط به حافظه داخلی را دریافت کند."</string>
@@ -432,8 +488,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"به برنامه اجازه میدهد حافظه داخلی را نصب کرده/نصب آنرا لغو کند."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"نامگذاری مجدد دستگاه ذخیره داخلی"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"به برنامه اجازه میدهد تا نام حافظه داخلی را تغییر دهد."</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"کنترل لرزش"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"به برنامه اجازه میدهد تا لرزاننده را کنترل کند."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"کنترل چراغ قوه"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"به برنامه اجازه میدهد تا چراغ قوه را کنترل کند."</string>
@@ -458,8 +513,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"به برنامه اجازه میدهد تا به سیستم اعلام کند کدام ویجت را کدام برنامه میتواند استفاده کند. برنامهای که این مجوز را دارد میتواند به دادههای شخصی دیگر برنامهها دسترسی داشته باشد. برای استفاده برنامههای عادی نیست."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"اصلاح کردن حالت تلفن"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"به برنامه اجازه میدهد ویژگیهای دستگاه را کنترل کند. برنامهای که این مجوز را دارد میتواند بدون اطلاع شما تعویض شبکه داشته باشد، رادیوی تلفن را روشن یا خاموش کند و کارهایی از این قبیل را انجام دهد."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"خواندن وضعیت تلفن و شناسه"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"به برنامه اجازه میدهد تا به ویژگیهای دستگاه دسترسی داشته باشد. برنامهای که این مجوز را داشته باشد میتواند حتی در حین تماس، شماره تلفن و شماره سریال تلفن و شمارهای که به آن تماس گرفته میشود و مواردی از این قبیل را تعیین کند."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"ممانعت از به خواب رفتن رایانه لوحی"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"ممانعت از به خواب رفتن تلفن"</string>
@@ -474,8 +528,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"اجرا به عنوان تست سازنده سطح پایین، امکان دسترسی کامل به سخت افزار تلفن شما را فراهم می آورد. فقط زمانی که تلفن در حالت تست سازنده در حال اجراست قابل دسترسی است."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"تنظیم تصویر زمینه"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"به برنامه اجازه میدهد تا تصویر زمینه سیستم را تنظیم کند."</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"تنظیم اندازه تصویر زمینه"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"به برنامه اجازه میدهد تا نکات اندازه تصویر زمینه سیستم را تنظیم کند."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"بازنشانی سیستم به موارد پیش فرض کارخانه"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"به برنامه اجازه میدهد تا بطور کامل سیستم را روی تنظیمات کارخانه بازنشانی کند، همه دادهها، پیکربندی و برنامههای نصب شده را پاک کند."</string>
@@ -487,21 +540,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"به برنامه اجازه میدهد تا منطقه زمانی تلفن را تغییر دهد."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"عملکرد به عنوان AccountManagerService"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"به برنامه اجازه میدهد با AccountAuthenticators تماس برقرار کند."</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"یافتن حسابها در دستگاه"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"به برنامه اجازه میدهد تا لیست حسابهای شناختهشده توسط رایانه لوحی را دریافت کند."</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"به برنامه اجازه میدهد تا لیست حسابهای شناخته شده توسط تلفن را دریافت کند."</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"ایجاد حسابها و تنظیم گذرواژهها"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"به برنامه اجازه میدهد از امکانات تأیید کننده اعتبار حساب AccountManager از جمله ایجاد حساب و دریافت و تنظیم گذرواژهها استفاده کند."</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"افزودن یا حذف حسابها"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"به برنامه اجازه میدهد تا عملکردهایی مانند افزودن و حذف حسابها و حذف گذرواژهها را انجام دهد."</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"استفاده از حسابها در دستگاه"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"به برنامه اجازه میدهد نشانههای تایید اعتبار را درخواست کند."</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"مشاهده اتصالات شبکه"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"به برنامه اجازه میدهد تا وضعیت همه شبکهها را مشاهده کند."</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"دسترسی کامل به اینترنت"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"به برنامه اجازه میدهد تا سوکتهای شبکه را ایجاد کند."</string>
@@ -513,36 +561,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"به برنامه اجازه میدهد تا وضعیت اتصال شبکه اتصال داده با سیم را تغییر دهد."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"تغییر تنظیمات میزان استفاده داده در پس زمینه"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"به برنامه اجازه میدهد تا تنظیم کاربرد دادههای پس زمینه را تغییر دهد."</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"مشاهده اتصالات Wi-Fi"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"به برنامه اجازه میدهد تا اطلاعات مربوط به وضعیت Wi-Fi را مشاهده کند."</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"اتصال به Wi-Fi و قطع اتصال از آن"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"به برنامه اجازه میدهد تا به نقاط دسترسی Wi-Fi وصل شود و ارتباط خود را با آنها قطع کند و تغییراتی را در شبکههای Wi-Fi پیکربندی شده ایجاد کند."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"دریافت چندگانه Wi-Fi را مجاز می کند"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"به برنامه اجازه میدهد تا بستههایی را که مستقیما برای دستگاه شما هدایت نشده دریافت کند. هنگام پیداکردن خدمات ارائهشده در نزدیکی می تواند مفید باشد. نسبت به حالت غیر چند تایی بیشتر نیرو مصرف میکند."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"دسترسی به تنظیمات بلوتوث"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"به برنامه اجازه میدهد تا رایانه لوحی بلوتوث محلی را پیکربندی کرده، دستگاههای راه دور را شناسایی کرده و با آنها جفت شود."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"به برنامه اجازه میدهد تا تلفن بلوتوث محلی را پیکربندی کند و دستگاههای راه دور را پیدا کند و با آنها جفت شود."</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"مشاهده اتصالات وایمکس"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"به برنامه اجازه میدهد اطلاعات وضعیت WiMAX را مشاهده کند."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"تغییر وضعیت WiMAX"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"به برنامه امکان میدهد تا به شبکه WiMAX متصل شده یا از آن قطع اتصال کند."</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"مرتبط سازی با دستگاههای بلوتوث"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"به برنامه اجازه میدهد تا پیکربندی رایانه لوحی بلوتوث محلی را مشاهده کند و اتصال با دستگاههای جفت شده را برقرار کرده و بپذیرد."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"به برنامه اجازه میدهد تا پیکربندی تلفن بلوتوث محلی را مشاهده کند، و اتصالات دستگاههای جفت شده را برقرار کرده و بپذیرد."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"کنترل ارتباط راه نزدیک"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"به برنامه اجازه میدهد تا با تگهای ارتباط میدان نزدیک (NFC)، کارتها و فایل خوان ارتباط برقرار کند."</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"غیرفعال کردن قفل صفحه شما"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"به برنامه اجازه میدهد قفل کلید و هر گذرواژه امنیتی مرتبط را غیر فعال کند. به عنوان یک مثال مناسب برای این ویژگی میتوان به زمانی اشاره کرده که تلفن هنگام دریافت یک تماس قفل کلید را غیر فعال میکند و پس از پایان تماس دوباره قفل کلید را فعال میکند."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"خواندن تنظیمات همگام سازی"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"به برنامه اجازه میدهد تا تنظیمات همگامسازی را بخواند ماند اینکه آیا برنامه People فعال است یا خیر."</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"تغییر وضعیت همگامسازی بین فعال و غیرفعال"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"به برنامه اجازه میدهد تا تنظیمات همگامسازی را تغییر دهد مانند همگامسازی وضعیت آب و هوا که برای برنامه People فعال میشود."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"خواندن اطلاعات آماری همگام سازی"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"به برنامه اجازه میدهد تا آمار همگامسازی را بخواند مثلا سابقه همگامسازیهایی که انجام شده است."</string>
@@ -550,22 +591,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"به برنامه اجازه میدهد تا جزئیات مربوط به فیدهای همگام شده کنونی را دریافت کند."</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"نوشتن فیدهای مشترک"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"به برنامه اجازه میدهد تا فیدهای همگام شده کنونی را تغییر دهد. برنامههای مخرب میتوانند فیدهای همگام شده را تغییر دهند."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"خواندن واژههایی که به فرهنگ لغت اضافه کردید"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"به برنامه اجازه میدهد هر گونه کلمه، نام، عبارت خصوصی را که کاربر در فرهنگ لغت خود ذخیره کرده است بخواند."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"نوشتن در فرهنگ لغت تعریف شده از سوی کاربر"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"به برنامه اجازه میدهد تا کلمات جدید را در فهرست کاربر بنویسد."</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"خواندن محتویات حافظه USB شما"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"خواندن محتویات کارت SD شما"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"به برنامه امکان میدهد محتویات حافظه USB را بخواند که ممکن است حاوی عکس و رسانه باشد."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"به برنامه اجازه میدهد محتویات کارت SD را بخواند که ممکن است حاوی عکس و رسانه باشد."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"اصلاح یا حذف محتویات حافظه USB شما"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"به برنامه اجازه میدهد تا در حافظه USB بنویسد."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"به برنامه اجازه میدهد تا در کارت SD بنویسد."</string>
@@ -744,6 +779,8 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"سیم کارت درون تلفن نیست."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"سیم کارت را وارد کنید."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"سیم کارت موجود نیست یا قابل خواندن نیست. یک سیم کارت وارد کنید."</string>
+ <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) -->
+ <skip />
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"سیم کارت شما به طور دائم غیر فعال شده است. "\n"برای داشتن سیم کارت دیگر با ارائهدهنده سرویس بیسیم خود تماس بگیرید."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"دکمه تراک قبلی"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"دکمه تراک بعدی"</string>
@@ -819,15 +856,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"ناحیه"</string>
<string name="autofill_area" msgid="3547409050889952423">"منطقه"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"امارات"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"خواندن سابقه و نشانکهای وب شما"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"به برنامه اجازه میدهد همه نشانکهای مرورگر و آدرسهای اینترنتی را که مرورگر بازدید کرده است بخواند."</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"نوشتن نشانکهای وب و سابقه"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"به برنامه اجازه میدهد تا سابقه مرورگر یا نشانکهای ذخیره شده در رایانه لوحی را تغییر دهد. برنامههای مخرب میتوانند از آن استفاده کنند تا دادههای مرورگر شما را تغییر دهند یا پاک کنند."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"به برنامه اجازه میدهد تا سابقه مرورگر یا نشانکهای ذخیره شده در تلفن را تغییر دهد. برنامههای مخرب میتوانند از آن برای پاک کردن یا تغییر دادههای مرورگر استفاده کنند."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"تنظیم یک هشدار"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"به برنامه اجازه میدهد تا هشداری را در برنامه ساعت زنگدار نصب شده تنظیم کند. برخی از برنامههای ساعت زنگدار نمیتوانند این ویژگی را اعمال کنند."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"افزودن پست صوتی"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"به برنامه اجازه میدهد تا پیامها را به صندوق دریافت پست صوتی شما اضافه کند."</string>
@@ -1087,11 +1121,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"تاریخ تنظیم"</string>
<string name="date_time_set" msgid="5777075614321087758">"تنظیم"</string>
<string name="date_time_done" msgid="2507683751759308828">"انجام شد"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"پیش فرض"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"جدید: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"جدید: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"مجوزی لازم نیست"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"پنهان کردن"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"نمایش همه"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"حافظه انبوه USB"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"USB متصل شد"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"شما از طریق USB به رایانه خود متصل شدهاید. اگر میخواهید فایلها را بین رایانه خود و حافظه USB در Android کپی کنید، دکمه زیر را لمس کنید."</string>
@@ -1320,4 +1353,8 @@
<string name="sending" msgid="3245653681008218030">"درحال ارسال..."</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"مرورگر راهاندازی شود؟"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"تماس را میپذیرید؟"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index b9afdcb..ac72b4e 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"Omat viestit"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"Tekstiviestien, sähköpostin ja muiden viestien lukeminen ja kirjoittaminen."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Henkilötietosi"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Käyttöoikeudet tablet-laitteelle tallennettuihin yhteystietoihin ja kalenteriin."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Saa suora käyttöyhteys puhelimelle tallennettuihin yhteystietoihin ja kalenteriin."</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Yhteystietokorttiisi tallennettujen tietojesi käyttöoikeus."</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Sosiaaliset tietosi"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Kontaktiesi ja internet-kontaktiesi tietojen käyttöoikeus."</string>
<string name="permgrouplab_location" msgid="635149742436692049">"Oma sijainti"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"Tarkkaile fyysistä sijaintiasi."</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"Verkkoviestintä"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"Käyttää useita verkon ominaisuuksia."</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Ääniasetukset"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Muuta ääniasetuksia."</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Vaikuttaa akun kestoon"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Käytä ominaisuuksia, jotka voivat tyhjentää akun nopeasti."</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"Kalenteri"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Kalenterin ja tapahtumien käyttöoikeus."</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Kirjanmerkit ja historia"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Kirjanmerkkien ja selaimen historian käyttöoikeus."</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Herätys"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Aseta herätysaika."</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Vastaaja"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Vastaajan käyttöoikeus."</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"Mikrofoni"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Äänen tallentamiseen käytettävän mikrofonin käyttöoikeus."</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"Kamera"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"Kuvien tai videon tallentamiseen käytettävän kameran käyttöoikeus."</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Sovelluksiesi tiedot"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Mahdollisuus vaikuttaa muiden laitteen sovelluksien käytökseen."</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Taustakuva"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Muuta laitteen taustakuvan asetuksia."</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"Kello"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Muuta laitteen aikaa tai aikavyöhykettä."</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Tilapalkki"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Muuta laitteen tilarivin asetuksia."</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Synkronointiasetukset"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Synkronointiasetuksien käyttöoikeus."</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"Omat tilit"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"Käytä saatavilla olevia tilejä."</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Laitteiston hallinta"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Alemman tason käyttöoikeus ja järjestelmän hallintaoikeus."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Kehittäjätyökalut"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Vain sovelluskehittäjien tarvitsemat ominaisuudet."</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"Muiden sovelluksien käyttöliittymät"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"Vaikuta muiden sovelluksien käyttöliittymään."</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"Tallennustila"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Käytä USB-tallennustilaa."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Käytä SD-korttia."</string>
@@ -193,14 +238,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"Antaa sovelluksen sijaita tilapalkissa."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"laajentaa/tiivistää tilarivin"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Antaa sovelluksen laajentaa tai tiivistää tilarivin."</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"ohjaa uudelleen lähtevät puhelut"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Antaa sovelluksen käsitellä lähteviä puheluita ja muuttaa kohdenumeroita. Haitalliset sovellukset voivat valvoa, uudelleenohjata tai estää lähteviä puheluita."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"vastaanota tekstiviestejä (teksti)"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"Antaa sovelluksen vastaanottaa ja käsitellä tekstiviestejä. Haitalliset sovellukset voivat valvoa viestejä tai poistaa niitä näyttämättä niitä sinulle."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"vastaanota tekstiviestejä (multimedia)"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"Antaa sovelluksen vastaanottaa ja käsitellä MMS-viestejä. Haitalliset sovellukset voivat valvoa viestejä tai poistaa niitä näyttämättä niitä sinulle."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"vastaanota hätätilalähetyksiä"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Antaa sovelluksen vastaanottaa ja käsitellä hätälähetysviestejä. Tämä lupa on vain järjestelmäsovellusten käytettävissä."</string>
@@ -210,16 +252,13 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"Antaa sovelluksen lähettää tekstiviestejä. Haitalliset sovellukset voivat tuhlata rahaa lähettämällä viestejä ilman vahvistusta."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"lähettää tekstiviestejä ilman vahvistusta"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Antaa sovelluksen lähettää tekstiviestejä. Haitalliset sovellukset voivat tuhlata rahaa lähettämällä viestejä ilman vahvistusta."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"lue tekstiviestejä (teksti tai multimedia)"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Antaa sovelluksen lukea tablet-laitteelle tai SIM-kortille tallennettuja tekstiviestejä. Haitalliset sovellukset saattavat lukea luottamuksellisia viestejä."</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Antaa sovelluksen lukea puhelimelle tai SIM-kortille tallennettuja tekstiviestejä. Haitalliset sovellukset saattavat lukea luottamuksellisia viestejä."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"muokkaa tekstiviestejä (teksti tai multimedia)"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Antaa sovelluksen kirjoittaa tablet-laitteelle tai SIM-kortille tallennettuihin tekstiviesteihin. Haitalliset sovellukset voivat poistaa viestejä."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Antaa sovelluksen kirjoittaa puhelimelle tai SIM-kortille tallennettuihin tekstiviesteihin. Haitalliset sovellukset voivat poistaa viestejä."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"vastaanota tekstiviestejä (WAP)"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Antaa sovelluksen vastaanottaa ja käsitellä WAP-viestejä. Haitalliset sovellukset voivat valvoa viestejä tai poistaa niitä näyttämättä niitä sinulle."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"käynnissä olevien sovellusten noutaminen"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"Antaa sovelluksen noutaa käynnissä oleviin ja käynnissä olleisiin tehtäviin liittyviä tietoja. Haitalliset sovellukset saattavat saada näin muihin sovelluksiin liittyviä yksityisiä tietoja."</string>
@@ -235,13 +274,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Sallii sovelluksen hallita toisten sovellusten näytön yhteensopivuustilaa. Haittasovellukset voivat häiritä toisten sovellusten toimintaa."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"sovellusten vianetsinnän käyttöönotto"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"Antaa sovelluksen ottaa vianetsinnän käyttöön toisessa sovelluksessa. Haitalliset ohjelmat voivat lopettaa tällä muita sovelluksia."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"muuta järjestelmän näyttöasetuksia"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Sallii sovelluksen muuttaa nykyistä määritystä, kuten maata tai yleistä kirjasinkokoa."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"ota autotila käyttöön"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"Antaa sovelluksen ottaa autotilan käyttöön."</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"sulje muita sovelluksia"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Antaa sovelluksen lopettaa muiden sovellusten taustaprosesseja myös silloin, kun muisti ei ole vähissä."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"muiden sovellusten pysähtymisen pakottaminen"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Antaa sovelluksen pakottaa muita sovelluksia pysähtymään."</string>
@@ -265,8 +302,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Antaa sovelluksen lähettää ilmoituksen WAP PUSH -viestin vastaanotosta. Haitalliset sovellukset voivat käyttää tätä MMS-viestien vastaanoton väärentämiseen tai sivujen sisällön korvaamiseen huomaamattomasti haitallisella sisällöllä."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"rajoita käynnissä olevien prosessien määrää"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Antaa sovelluksen hallita suoritettavien sovellusten enimmäismäärää. Ei tavallisten sovellusten käyttöön."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"pakota taustasovelluksia sulkeutumaan"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Antaa sovelluksen hallita, suoritetaanko toiminnot aina loppuun heti, kun ne siirtyvät taustalle. Ei tavallisten sovellusten käyttöön."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"muokkaa akun tilastoja"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"Antaa sovelluksen muokata kerättyjä akkutilastoja. Ei tavallisten sovellusten käyttöön."</string>
@@ -276,8 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Antaa sovelluksen käynnistää täyden varmuuskopioinnin vahvistuskäyttöliittymän. Minkään sovelluksen ei tule käyttää tätä."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"näytä luvattomia ikkunoita"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Antaa sovelluksen luoda ikkunoita, jotka on tarkoitettu sisäisen järjestelmäkäyttöliittymän käytettäviksi. Ei tavallisten sovellusten käyttöön."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"piirrä muihin sovelluksiin"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Antaa sovelluksen näyttää järjestelmähälytysikkunoita. Haitalliset ohjelmat voivat ottaa koko näytön haltuun."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"muokkaa yleistä animaationopeutta"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Antaa sovelluksen muuttaa yleistä animaationopeutta (nopeuttaa tai hidastaa animaatioita) milloin tahansa."</string>
@@ -339,26 +374,22 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Antaa sovelluksen myöntää tai kieltää tiettyjä käyttööoikeuksia itselleen tai muille sovelluksille. Haittaohjelmat voivat käyttää tämän ominaisuuden avulla toimintoja, joiden käyttöön et ole antanut lupaa."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"ensisijaisten sovellusten asettaminen"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Antaa sovelluksen muokata ensisijaisia sovelluksia. Haitalliset sovellukset voivat muuttaa käynnistettäviä sovelluksia huomaamattomasti ja kerätä henkilökohtaisia tietoja matkimalla nykyisiä sovelluksia."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"muokkaa järjestelmän asetuksia"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"Antaa sovelluksen muokata järjestelmän asetustietoja. Haitalliset sovellukset voivat vahingoittaa järjestelmän määritystä."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"muokkaa suojatun järjestelmän asetuksia"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Antaa sovelluksen muokata järjestelmän suojattuja asetustietoja. Ei tavallisten sovellusten käyttöön."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"muokkaa Googlen palvelukarttaa"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"Antaa sovelluksen muokata Googlen palvelukarttaa. Ei tavallisten sovellusten käyttöön."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"suorita laitteen käynnistyessä"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Antaa sovelluksen käynnistyä heti, kun laite on käynnistynyt. Tämä voi pidentää tablet-laitteen käynnistysaikaa ja hidastaa sen yleistä käyttöä sovelluksen ollessa aina käynnissä."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Antaa sovelluksen käynnistyä heti, kun laite on käynnistynyt. Tämä voi pidentää puhelimen käynnistysaikaa ja hidastaa puhelimen yleistä käyttöä sovelluksen ollessa aina käynnissä."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"lähetä tärkeä lähetys"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Antaa sovelluksen lähettää pysyviä lähetyksiä, jotka pysyvät olemassa lähetyksen päätyttyä. Haitalliset sovellukset voivat tehdä tablet-laitteesta hitaan tai epävakaan kasvattamalla sen muistinkäyttöä liikaa."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Antaa sovelluksen lähettää pysyviä lähetyksiä, jotka pysyvät olemassa lähetyksen päätyttyä. Haitalliset sovellukset voivat tehdä puhelimesta hitaan tai epävakaan kasvattamalla sen muistinkäyttöä liikaa."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
+ <string name="permlab_readContacts" msgid="8348481131899886131">"lue yhteystietoja"</string>
<string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Antaa sovelluksen lukea kaikki tablet-laitteesi yhteystiedot, myös tiedot siitä, miten usein olet puhelimitse, sähköpostitse tai muilla tavoin viestinyt tiettyjen henkilöiden kanssa. Ominaisuus helpottaa sähköpostiosoitteiden automaattista hakemista sekä monia muita hyödyllisiä toimintoja, mutta haittasovellukset voivat lähettää sen avulla yhteystietojasi muille."</string>
<string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Antaa sovelluksen lukea kaikki puhelimesi yhteystiedot, myös tiedot siitä, miten usein olet puhelimitse, sähköpostitse tai muilla tavoin viestinyt tiettyjen henkilöiden kanssa. Ominaisuus helpottaa sähköpostiosoitteiden automaattista hakemista sekä monia muita hyödyllisiä toimintoja, mutta haittasovellukset voivat lähettää sen avulla yhteystietojasi muille."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"muokkaa yhteystietoja"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Antaa sovelluksen muokata kaikkia tablet-laitteesi yhteystietoja, myös tietoja siitä, miten usein olet puhelimitse, sähköpostitse tai muilla tavoin viestinyt tiettyjen henkilöiden kanssa. Ominaisuus helpottaa sähköpostiosoitteiden automaattista hakemista sekä monia muita hyödyllisiä toimintoja, mutta haittasovellukset voivat poistaa tai muokata sen avulla yhteystietojasi."</string>
<string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Antaa sovelluksen muokata kaikkia puhelimesi yhteystietoja, myös tietoja siitä, miten usein olet puhelimitse, sähköpostitse tai muilla tavoin viestinyt tiettyjen henkilöiden kanssa. Ominaisuus helpottaa sähköpostiosoitteiden automaattista hakemista sekä monia muita hyödyllisiä toimintoja, mutta haittasovellukset voivat poistaa tai muokata sen avulla yhteystietojasi."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"lue puhelulokia"</string>
@@ -367,11 +398,9 @@
<string name="permlab_writeCallLog" msgid="8552045664743499354">"kirjoita puhelulokiin"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Antaa sovelluksen muokata tablet-laitteesi puhelulokia, kuten tietoja vastatuista ja soitetuista puheluista. Haitalliset sovellukset voivat poistaa puhelulokisi tai muokata sitä."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Antaa sovelluksen muokata puhelimesi puhelulokia, kuten tietoja vastatuista ja soitetuista puheluista. Haitalliset sovellukset voivat poistaa puhelulokisi tai muokata sitä."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"lue omia yhteystietoja"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Antaa sovelluksen lukea laitteelle tallennettuja henkilökohtaisia tietoja, kuten nimen ja yhteystietoja. Tämä antaa sovelluksen tunnistaa sinut ja lähettää profiilitietojasi muille."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"muokkaa omia yhteystietoja"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Antaa sovelluksen muuttaa laitteelle tallennettuja henkilökohtaisia tietoja, kuten nimeä ja yhteystietoja, tai lisätä niitä. Tämä antaa muiden sovellusten tunnistaa sinut ja lähettää profiilitietojasi muille."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"lue sosiaalista streamia"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Antaa sovelluksen käyttää ja synkronoida sinun ja kavereidesi päivityksiä sosiaalisista palveluista. Haitalliset sovellukset voivat käyttää tätä sosiaalisissa verkostoissa kavereidesi kanssa käytyjen yksityisten keskustelujen lukemiseen."</string>
@@ -412,15 +441,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"pakota puhelin käynnistymään uudelleen"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Antaa sovelluksen pakottaa tablet-laitteen käynnistymään uudelleen."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Antaa sovelluksen pakottaa puhelimen käynnistymään uudelleen."</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"käytä USB:n tiedostojärj."</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"käytä SD-kortin tiedostojärjestelmää"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Antaa sovelluksen ottaa käyttöön ja poistaa käytöstä siirrettävän tallennustilan tiedostojärjestelmiä."</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"tyhjennä USB-tallennustila"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"tyhjennä SD-kortti"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Antaa sovelluksen alustaa siirrettävän tallennustilan."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"hae tietoja sisäisestä tallennustilasta"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"Antaa sovelluksen hakea tietoja sisäisestä tallennustilasta."</string>
@@ -432,8 +457,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Antaa sovelluksen ottaa käyttöön tai poistaa käytöstä sisäistä tallennustilaa."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"nimeä sisäistä tallennustilaa uudelleen"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"Antaa sovelluksen nimetä sisäisen tallennustilan uudelleen."</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"hallitse värinää"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"Antaa sovelluksen hallita värinää."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"hallitse taskulamppua"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"Antaa sovelluksen hallita taskulamppua."</string>
@@ -458,8 +482,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"Antaa sovelluksen kertoa järjestelmälle, mitä widgetejä mikäkin sovellus voi käyttää. Tämän luvan saanut sovellus voi antaa muille sovelluksille oikeuden käyttää henkilökohtaisia tietoja. Ei tavallisten sovellusten käyttöön."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"muokkaa puhelimen tilaa"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Antaa sovelluksen hallita laitteen puhelinominaisuuksia. Jos sovelluksella on tämä oikeus, se voi esimerkiksi vaihtaa verkkoa tai ottaa puhelinradion käyttöön tai poistaa sen käytöstä ilmoittamatta käyttäjälle."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"lue puhelimen tila ja identiteetti"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"Antaa sovelluksen käyttää laitteen puhelinominaisuuksia. Tällä luvalla sovellus voi määrittää puhelimen puhelinnumeron ja sarjanumeron, puhelun aktiivisuuden, puhelun kohdenumeron sekä muita vastaavia tietoja."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"estä tablet-laitetta menemästä virransäästötilaan"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"estä puhelinta menemästä virransäästötilaan"</string>
@@ -474,8 +497,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Suorita alemman tason valmistajan testinä ja anna täydet oikeudet puhelimen laitteistolle. Käytettävissä vain, kun puhelin on valmistajan testitilassa."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"aseta taustakuva"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"Antaa sovelluksen asettaa laitteen taustakuvan."</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"säädä taustakuvan kokoa"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Antaa sovelluksen asettaa laitteen taustakuvakoon vinkkejä."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"palauta järjestelmän tehdasasetukset"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"Antaa sovelluksen palauttaa laitteen täysin tehdasasetuksiin sekä poistaa kaikki tiedot, määritykset ja asennetut sovellukset."</string>
@@ -487,21 +509,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Antaa sovelluksen muuttaa puhelimen aikavyöhykettä."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"toimi AccountManagerService-sovelluksena"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"Antaa sovelluksen soittaa puheluja tilien todentajille."</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"etsi tilejä laitteelta"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Antaa sovelluksen noutaa tablet-laitteella käytettävien tilien luettelon."</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Antaa sovelluksen noutaa puhelimella käytettävien tilien luettelon."</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"luo tilejä ja aseta salasanoja"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Antaa sovelluksen käyttää tilienhallinnan tilintodennustehtäviä, kuten uusien tilien luomista sekä niiden salasanojen lukemista ja asettamista."</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"lisää tai poista tilejä"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"Antaa sovelluksen suorittaa toimintoja, kuten lisätä ja poistaa tilejä sekä poistaa niiden salasanoja."</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"käytä laitteen tilejä"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"Antaa sovelluksen pyytää todennustunnuksia."</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"tarkastele verkkoyhteyksiä"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"Antaa sovelluksen tarkastella kaikkien verkkojen tilaa."</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"käytä internetiä"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Antaa sovelluksen luoda verkkopistokkeita."</string>
@@ -513,36 +530,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"Antaa sovelluksen muuttaa internetyhteyden jakamisen tilaa."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"muuta taustatietojen käyttöasetuksia"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Antaa sovelluksen muuttaa taustatietojen käyttöasetuksia."</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"näytä wifi-yhteydet"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"Antaa sovelluksen tarkastella wifi-yhteyden tilaa."</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"muodosta ja katkaise wifi-yhteys"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"Antaa sovelluksen yhdistää wifi-tukiasemiin tai katkaista yhteyden sekä tehdä muutoksia määritettyihin wifi-verkkoihin."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"anna ottaa vastaan wifi-ryhmälähetyksiä"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Antaa sovelluksen vastaanottaa paketteja, joita ei ole osoitettu suoraan laitteellesi. Tämä saattaa olla hyödyllistä etsittäessä lähellä olevia palveluita. Tila käyttää enemmän virtaa kuin ei-monilähetystila."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"käytä Bluetooth-asetuksia"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Antaa sovelluksen määrittää paikallisen Bluetooth-tabletin asetukset sekä tunnistaa muita laitteita ja muodostaa niiden kanssa laitepareja."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Antaa sovelluksen määrittää paikallisen Bluetooth-puhelimen asetukset sekä tunnistaa muita laitteita ja muodostaa niiden kanssa laitepareja."</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Näytä WiMAX-yhteydet"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Antaa sovelluksen tarkastella WiMAX-verkon tilaa."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"Vaihda WiMAX-verkon tilaa"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Antaa sovelluksen muodostaa yhteyden WiMAX-verkkoon ja katkaista yhteyden."</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"muodosta laitepari Bluetooth-laitteiden kanssa"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Antaa sovelluksen tarkastella paikallisen Bluetooth-tabletin asetuksia sekä muodostaa ja hyväksyä laitepariyhteyksiä."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Antaa sovelluksen tarkastella paikallisen Bluetooth-puhelimen asetuksia sekä muodostaa ja hyväksyä laitepariyhteyksiä muihin laitteisiin."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"hallitse Near Field Communication -tunnistusta"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Antaa sovelluksen kommunikoida NFC (Near Field Communication) -tunnisteiden, -korttien ja -lukijoiden kanssa."</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"poista ruudun lukitus käytöstä"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Antaa sovelluksen ottaa näppäinlukon ja siihen liittyvän salasanasuojauksen pois käytöstä. Luvallinen esimerkki tästä on, kun puhelin poistaa näppäinlukon käytöstä puhelun saapuessa ja asettaa lukon takaisin käyttöön puhelun päättyessä."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"lue synkronointiasetuksia"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Antaa sovelluksen lukea synkronointiasetuksia, kuten sitä, onko Ihmiset-sovelluksen synkronointi käytössä."</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"ota synkronointi käyttöön tai poista se käytöstä"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Antaa sovelluksen muokata synkronointiasetuksia, kuten sitä, onko Ihmiset-sovelluksen synkronointi käytössä."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"lue synkronointitilastoja"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"Antaa sovelluksen lukea synkronointitilastoja, kuten tehtyjen synkronointien historiaa."</string>
@@ -550,22 +560,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Antaa sovelluksen saada tietoja tällä hetkellä synkronoitavista syötteistä."</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"kirjoita tilattuja syötteitä"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Antaa sovelluksen muokata synkronoitavia syötteitä. Haitalliset sovellukset voivat muuttaa synkronoitavia syötteitä."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"lue sanakirjaan lisättyjä termejä"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Antaa sovelluksen lukea yksityisiä sanoja, nimiä tai ilmauksia, joita käyttäjä on voinut tallentaa käyttäjän sanakirjaan."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"käyttäjän määrittelemään sanakirjaan kirjoittaminen"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Antaa sovelluksen kirjoittaa uusia sanoja käyttäjän sanakirjaan."</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"lue USB-tallennustilan sis."</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"lue SD-kortin sisältöä"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Lue USB-muistin sisältöä (kuvia ja mediaa)."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Antaa sovelluksen lukea SD-kortin sisältöä. Kortti voi sisältää valokuvia ja muuta mediaa."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"muokkaa tai poista USB:n sis."</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Antaa sovelluksen kirjoittaa USB-tallennustilaan."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Antaa sovelluksen kirjoittaa SD-kortille."</string>
@@ -744,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Puhelimessa ei ole SIM-korttia."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Aseta SIM-kortti."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM-korttia ei löydy tai ei voi lukea. Kytke SIM-kortti."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"SIM-kortti ei kelpaa."</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"SIM-kortti on poistettu pysyvästi käytöstä."\n" Ota yhteyttä operaattoriisi ja hanki uusi SIM-kortti."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Edellinen kappale -painike"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Seuraava kappale -painike"</string>
@@ -819,15 +824,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"Kunta"</string>
<string name="autofill_area" msgid="3547409050889952423">"Alue"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"Emiraatti"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"lue verkon kirjanmerkkejä ja historiaa"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Antaa sovelluksen lukea kaikkia selaimen avaamia URL-osoitteita ja kaikkia selaimen kirjanmerkkejä."</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"kirjoita verkon kirjanmerkkejä ja historiaa"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Antaa sovelluksen muokata Selaimen historiaa tai tablet-laitteelle tallennettuja kirjanmerkkejä. Haitalliset sovellukset voivat käyttää tätä Selaimen tietojen poistamiseen tai muokkaamiseen."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Antaa sovelluksen muokata Selaimen historiaa tai puhelimelle tallennettuja kirjanmerkkejä. Haitalliset sovellukset voivat käyttää tätä Selaimen tietojen poistamiseen tai muokkaamiseen."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"aseta herätys"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"Antaa sovelluksen asettaa hälytyksen sisäiseen herätyskellosovellukseen. Jotkin herätyskellosovellukset eivät välttämättä käytä tätä ominaisuutta."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"lisää vastaajaviesti"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"Antaa sovelluksen lisätä viestejä saapuneisiin vastaajaviesteihin."</string>
@@ -1087,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Aseta päivämäärä"</string>
<string name="date_time_set" msgid="5777075614321087758">"Aseta"</string>
<string name="date_time_done" msgid="2507683751759308828">"Valmis"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"Oletus"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"UUTTA: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"UUTTA: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"Lupia ei tarvita"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"Piilota"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"Näytä kaikki"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"USB-massamuisti"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"USB yhdistetty"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"Olet yhdistänyt laitteesi tietokoneeseen USB-kaapelin kautta. Kosketa alla olevaa painiketta, jos haluat kopioida tiedostoja tietokoneesi ja Androidin USB-tallennustilan välillä."</string>
@@ -1320,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"Lähetetään…"</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"Käynnistetäänkö selain?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"Vastataanko puheluun?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index bc744d5..1622284 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"Vos messages"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"Permet de lire et de rédiger vos SMS, e-mails et autres messages."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Vos informations personnelles"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Accéder directement aux contacts et à l\'agenda enregistrés sur la tablette"</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Accéder directement aux contacts et à l\'agenda enregistrés sur votre téléphone"</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Accès direct aux informations vous concernant enregistrées dans la fiche de contact"</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Vos informations sur les réseaux sociaux"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Accès direct aux informations sur vos contacts et vos amis sur les réseaux sociaux"</string>
<string name="permgrouplab_location" msgid="635149742436692049">"Votre position"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"Déterminer votre position géographique"</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"Communications réseau"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"Accéder à différentes fonctionnalités du réseau"</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Paramètres audio"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Modification des paramètres audio"</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Affecte la batterie"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Utilisation de fonctionnalités qui peuvent épuiser rapidement la batterie"</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"Agenda"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Accès direct à l\'agenda et aux événements"</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Favoris et historique"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Accès direct aux favoris et à l\'historique du navigateur"</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Alarme"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Réglage du réveil"</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Messagerie vocale"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Accès direct à la messagerie vocale"</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"Microphone"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Accès direct au microphone pour enregistrer du contenu audio"</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"Appareil photo"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"Accès direct à la caméra pour la capture d\'images ou de vidéos"</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Informations relatives à vos applications"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Possibilité de modifier le comportement des autres applications sur votre appareil"</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Fond d\'écran"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Modification des paramètres du fond d\'écran de l\'appareil"</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"Horloge"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Modification de l\'heure ou du fuseau horaire de l\'appareil"</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Barre d\'état"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Modification des paramètres de la barre d\'état de l\'appareil"</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Paramètres de synchronisation"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Accès aux paramètres de synchronisation"</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"Vos comptes"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"Accéder aux comptes disponibles"</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Commandes du matériel"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Accès et contrôle de faible niveau du système."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Outils de développement"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Ces fonctionnalités sont destinées uniquement aux développeurs d\'applications."</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"Interface utilisateur d\'une autre application"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"Effet sur l\'interface utilisateur d\'autres applications"</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"Stockage"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Accéder à la mémoire de stockage USB"</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Accéder à la carte SD"</string>
@@ -193,14 +238,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"Permet à l\'application de faire office de barre d\'état."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"Agrandir/réduire la barre d\'état"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Permet à l\'application de réduire ou de développer la barre d\'état."</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"transférer les appels sortants"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Permet à l\'application de traiter les appels sortants et de modifier le numéro à composer. Des applications malveillantes peuvent surveiller, rediriger ou empêcher les appels sortants."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"recevoir des messages texte (SMS)"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"Permet à l\'application de recevoir et de traiter des SMS. Des applications malveillantes peuvent surveiller vos messages ou les supprimer avant même que vous puissiez les voir."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"recevoir des messages texte (MMS)"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"Permet à l\'application de recevoir et de traiter des MMS. Des applications malveillantes peuvent surveiller vos messages ou les supprimer avant même que vous puissiez les voir."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"recevoir les messages de diffusion d\'urgence"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Permet à l\'application de recevoir et de traiter les messages d\'urgence. Cette autorisation n\'est disponible que pour les applications système."</string>
@@ -210,16 +252,13 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"Permet à l\'application d\'envoyer des SMS. Des applications malveillantes peuvent engendrer des frais en envoyant des messages à votre insu."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"envoyer des SMS sans confirmation"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Permet à l\'application d\'envoyer des SMS. Des applications malveillantes peuvent engendrer des frais en envoyant des messages sans votre confirmation."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"voir les messages texte (SMS ou MMS)"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Permet à l\'application de lire les SMS stockés sur votre tablette ou sur la carte SIM. Des applications malveillantes peuvent exploiter cette fonctionnalité pour lire vos messages confidentiels."</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Permet à l\'application de lire les SMS stockés sur votre téléphone ou sur la carte SIM. Des applications malveillantes peuvent exploiter cette fonctionnalité pour lire vos messages confidentiels."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"modifier les messages texte (SMS ou MMS)"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Permet à l\'application de modifier les SMS stockés sur votre tablette ou sur la carte SIM. Des applications malveillantes peuvent exploiter cette fonctionnalité pour supprimer vos messages."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Permet à l\'application de modifier les SMS stockés sur votre téléphone ou sur votre carte SIM. Des applications malveillantes peuvent exploiter cette fonctionnalité pour supprimer vos messages."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"recevoir des messages texte (WAP)"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Permet à l\'application de recevoir et de traiter des messages WAP. Des applications malveillantes peuvent surveiller vos messages ou les supprimer avant même que vous puissiez les voir."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"récupérer les applications en cours d\'exécution"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"Permet à l\'application de récupérer les informations relatives aux tâches actuellement ou récemment exécutées. Des applications malveillantes peuvent exploiter cette fonctionnalité pour obtenir des informations privées relatives à d\'autres applications."</string>
@@ -235,13 +274,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Permettre de contrôler le mode de compatibilité de l\'écran des autres applications. Des applications malveillantes peuvent perturber le fonctionnement d\'autres applications."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"activer le débogage des applications"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"Permet à l\'application d\'activer le débogage d\'une autre application. Des applications malveillantes peuvent exploiter cette fonctionnalité pour en fermer d\'autres."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"modifier les paramètres d\'affichage du système"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Permet à l\'application de modifier la configuration actuelle, par exemple les paramètres régionaux ou la taille de la police."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"activer le mode voiture"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"Permet à l\'application d\'activer le mode Voiture."</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"fermer les autres applications"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Permet à l\'application de fermer les processus en arrière-plan des autres applications, même si la mémoire est suffisante."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"forcer l\'arrêt des autres applications"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Permet à l\'application de forcer l\'arrêt d\'autres applications."</string>
@@ -265,8 +302,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Permet à l\'application d\'envoyer une notification indiquant la réception d\'un message WAP PUSH. Des applications malveillantes peuvent exploiter cette fonctionnalité pour créer de faux MMS entrants ou pour remplacer le contenu d\'une page Web par du contenu malveillant."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"Nombre maximal de processus en cours d\'exécution"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Permet à l\'application de contrôler le nombre maximal de processus devant s\'exécuter. Les applications standards ne doivent jamais avoir recours à cette fonctionnalité."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"forcer la fermeture des applications en arrière-plan"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Permet à l\'application de contrôler si les activités sont toujours terminées ou non lorsqu\'elles passent en arrière-plan. Les applications standards ne doivent jamais avoir recours à cette fonctionnalité."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"Modification des statistiques de la batterie"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"Permet à l\'application de modifier les statistiques collectées concernant la batterie. Les applications standards ne doivent pas utiliser cette fonctionnalité."</string>
@@ -276,8 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Permet à l\'application de lancer l\'interface utilisateur de confirmation de sauvegarde complète. Seules certaines applications peuvent bénéficier de cette permission."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"Affichage de fenêtres non autorisées"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Permet à l\'application de créer des fenêtres destinées à être utilisées par l\'interface utilisateur du système interne. Les applications standards ne doivent pas utiliser cette fonctionnalité."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"ignorer les autres applications"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Permet à l\'application d\'afficher les fenêtres d\'alerte système. Des applications malveillantes peuvent exploiter cette fonctionnalité pour prendre le contrôle de la totalité de l\'écran."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"Réglage de la vitesse des animations"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Permet à l\'application de modifier à tout moment la vitesse générale des animations pour les ralentir ou les accélérer."</string>
@@ -339,26 +374,22 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Permet à une application d\'accorder ou de révoquer des autorisations spécifiques pour celle-ci ou pour d\'autres applications. Des applications malveillantes peuvent exploiter cette autorisation pour accéder à des fonctionnalités auxquelles vous ne leur avez pas donné l\'accès."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"définir les applications préférées"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Permet à l\'application de modifier vos applications préférées. Des applications malveillantes peuvent exploiter cette fonctionnalité pour modifier les applications exécutées en usurpant l\'identité de vos applications existantes dans le but de recueillir des données privées."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"modifier les paramètres du système"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"Permet à l\'application de modifier les paramètres du système. Des applications malveillantes peuvent exploiter cette fonctionnalité pour corrompre la configuration de votre système."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"Modifier les paramètres de sécurité du système"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Permet à l\'application de modifier les paramètres sécurisés du système. Les applications standards ne doivent pas utiliser cette fonctionnalité."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"Modification de la carte des services Google"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"Permet à l\'application de modifier la carte des services Google. Les applications standards ne doivent pas utiliser cette fonctionnalité."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"s\'exécuter au démarrage"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Permet à l\'application de se lancer une fois le démarrage du système terminé. Elle peut rallonger le temps de démarrage de la tablette et ralentir son fonctionnement global en raison de son exécution continue."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Permet à l\'application de se lancer une fois le démarrage du système terminé. Elle peut rallonger le temps de démarrage du téléphone et ralentir son fonctionnement global en raison de son exécution continue."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"Envoi d\'une diffusion persistante"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Permet à l\'application d\'envoyer des diffusions \"persistantes\", qui perdurent après la fin de la diffusion. Des applications malveillantes peuvent ainsi ralentir la tablette ou la rendre instable en l\'obligeant à utiliser trop de mémoire."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Permet à l\'application d\'envoyer des diffusions \"persistantes\", qui perdurent une fois la diffusion terminée. Des applications malveillantes peuvent ainsi ralentir le téléphone ou le rendre instable en l\'obligeant à utiliser trop de mémoire."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
+ <string name="permlab_readContacts" msgid="8348481131899886131">"voir les contacts"</string>
<string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Permet à l\'application de lire toutes les données de vos contacts enregistrées sur votre tablette, y compris la fréquence à laquelle vous les avez appelés, leur avez envoyé un e-mail ou avez communiqué avec chacun d\'eux via d\'autres moyens. Vous pouvez ainsi bénéficier de la saisie semi-automatique des adresses e-mail et d\'autres fonctionnalités tout aussi pratiques. Les applications malveillantes peuvent utiliser cette autorisation afin d\'envoyer les données de vos contacts à d\'autres personnes."</string>
<string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Permet à l\'application de lire toutes les données de vos contacts enregistrées sur votre téléphone, y compris la fréquence à laquelle vous les avez appelés, leur avez envoyé un e-mail ou avez communiqué avec chacun d\'eux via d\'autres moyens. Vous pouvez ainsi bénéficier de la saisie semi-automatique des adresses e-mail et d\'autres fonctionnalités tout aussi pratiques. Les applications malveillantes peuvent utiliser cette autorisation afin d\'envoyer les données de vos contacts à d\'autres personnes."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"modifier les contacts"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Permet à l\'application de modifier les données de vos contacts enregistrées sur votre tablette, y compris la fréquence à laquelle vous les avez appelés, leur avez envoyé un e-mail ou avez communiqué avec chacun d\'eux via d\'autres moyens. Vous pouvez ainsi bénéficier de la saisie semi-automatique des adresses e-mail et d\'autres fonctionnalités tout aussi pratiques. Les applications malveillantes peuvent utiliser cette autorisation afin de supprimer ou de modifier les données de vos contacts."</string>
<string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Permet à l\'application de modifier les données de vos contacts enregistrées sur votre téléphone, y compris la fréquence à laquelle vous les avez appelés, leur avez envoyé un e-mail ou avez communiqué avec chacun d\'eux via d\'autres moyens. Vous pouvez ainsi bénéficier de la saisie semi-automatique des adresses e-mail et d\'autres fonctionnalités tout aussi pratiques. Les applications malveillantes peuvent utiliser cette autorisation afin de supprimer ou de modifier les données de vos contacts."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"lire le journal d\'appels"</string>
@@ -367,15 +398,13 @@
<string name="permlab_writeCallLog" msgid="8552045664743499354">"modifier le journal d\'appels"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Permet à l\'application de lire le journal d\'appels de votre tablette, y compris les données relatives aux appels entrants et sortants. Des applications malveillantes peuvent utiliser cette fonctionnalité pour effacer ou modifier votre journal d\'appels."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Permet à l\'application de lire le journal d\'appels de votre téléphone, y compris les données relatives aux appels entrants et sortants. Des applications malveillantes peuvent utiliser cette fonctionnalité pour effacer ou modifier votre journal d\'appels."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"voir votre fiche de contact"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Permet à l\'application de lire les informations de profil stockées sur votre appareil, telles que votre nom et vos coordonnées, ou d\'en ajouter. D\'autres applications peuvent alors vous identifier et envoyer vos informations de profil à des tiers."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"modifier votre fiche de contact"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Permet à l\'application de modifier les informations de profil stockées sur votre appareil, telles que votre nom et vos coordonnées, ou d\'en ajouter. D\'autres applications peuvent alors vous identifier et envoyer vos informations de profil à des tiers."</string>
- <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"lire flux des réseaux sociaux"</string>
+ <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"lire votre flux de réseau social"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Permet à l\'application d\'accéder aux mises à jour de vos amis sur les réseaux sociaux et de les synchroniser. Des applications malveillantes peuvent exploiter cette fonctionnalité pour accéder à des communications privées entre vous et vos amis sur ces réseaux."</string>
- <string name="permlab_writeSocialStream" product="default" msgid="3504179222493235645">"Mettre à jour sur vos flux"</string>
+ <string name="permlab_writeSocialStream" product="default" msgid="3504179222493235645">"écrire sur votre flux social"</string>
<string name="permdesc_writeSocialStream" product="default" msgid="3496277176955721451">"Permet à l\'application d\'afficher les mises à jour de vos amis sur les réseaux sociaux. Des applications malveillantes peuvent exploiter cette fonctionnalité en se faisant passer pour un ami et vous inciter à révéler des mots de passe ou autres informations confidentielles."</string>
<string name="permlab_readCalendar" msgid="5972727560257612398">"consulter les événements d\'agenda ainsi que les informations confidentielles"</string>
<string name="permdesc_readCalendar" product="tablet" msgid="2338414551004122687">"Permet à l\'application de lire tous les événements de calendrier stockés sur votre tablette, y compris ceux de vos amis et de vos collègues. Des applications malveillantes peuvent exploiter cette fonctionnalité pour extraire des informations personnelles de ces calendriers à l\'insu du propriétaire."</string>
@@ -388,17 +417,17 @@
<string name="permdesc_accessLocationExtraCommands" msgid="6737736970602176133">"Permet à l\'application d\'accéder à des commandes supplémentaires du fournisseur de localisation. Des applications malveillantes peuvent exploiter cette fonctionnalité pour interférer avec le bon fonctionnement du GPS ou de toute autre source de positionnement."</string>
<string name="permlab_installLocationProvider" msgid="6578101199825193873">"autoriser l\'installation d\'un fournisseur de services de localisation"</string>
<string name="permdesc_installLocationProvider" msgid="1742577679350078373">"Permet de créer des sources de positionnement fictives à des fins de test. Des applications malveillantes peuvent exploiter cette fonctionnalité pour remplacer la position géographique et/ou l\'état renvoyés par des sources de localisation réelles, telles que le GPS ou le fournisseur d\'accès réseau, ou pour surveiller et transmettre votre position géographique à une source externe."</string>
- <string name="permlab_accessFineLocation" msgid="8116127007541369477">"Localisation précise (GPS)"</string>
+ <string name="permlab_accessFineLocation" msgid="8116127007541369477">"procéder à une localisation précise (GPS)"</string>
<string name="permdesc_accessFineLocation" product="tablet" msgid="5326423948268164934">"Permet d\'accéder à des sources de positionnement précises telles que le système GPS de la tablette, lorsque ces services sont disponibles. Des applications malveillantes peuvent exploiter cette fonctionnalité pour déterminer votre position, ce qui peut entraîner une consommation accrue de la batterie."</string>
<string name="permdesc_accessFineLocation" product="default" msgid="7130267914433890869">"Permet d\'accéder à des sources de positionnement précises telles que le système GPS du téléphone, lorsque ces services sont disponibles. Des applications malveillantes peuvent exploiter cette fonctionnalité pour déterminer votre position, ce qui peut entraîner une consommation accrue de la batterie."</string>
- <string name="permlab_accessCoarseLocation" msgid="4642255009181975828">"Position géo. approximative (selon le réseau)"</string>
+ <string name="permlab_accessCoarseLocation" msgid="4642255009181975828">"procéder à une géolocalisation approximative (selon le réseau)"</string>
<string name="permdesc_accessCoarseLocation" product="tablet" msgid="5460726396318105483">"Permet d\'accéder à des sources de positionnement approximatives, telles que des bases de données de réseaux mobiles, pour déterminer la position géographique de la tablette lorsque celle-ci est disponible. Des applications malveillantes peuvent exploiter cette fonctionnalité pour déterminer votre position approximative."</string>
<string name="permdesc_accessCoarseLocation" product="default" msgid="8900795778057579522">"Permet d\'accéder à des sources de positionnement approximatives, telles que des bases de données de réseaux mobiles, pour déterminer la position géographique du téléphone lorsque celle-ci est disponible. Des applications malveillantes peuvent exploiter cette fonctionnalité pour déterminer votre position approximative."</string>
<string name="permlab_accessSurfaceFlinger" msgid="2363969641792388947">"Accès à SurfaceFlinger"</string>
<string name="permdesc_accessSurfaceFlinger" msgid="1041619516733293551">"Permet à l\'application d\'utiliser les fonctionnalités de bas niveau de SurfaceFlinger."</string>
<string name="permlab_readFrameBuffer" msgid="6690504248178498136">"Lecture de la mémoire tampon graphique"</string>
<string name="permdesc_readFrameBuffer" msgid="4937405521809454680">"Permet à l\'application de lire le contenu de la mémoire tampon graphique."</string>
- <string name="permlab_modifyAudioSettings" msgid="6095859937069146086">"Modification de vos paramètres audio"</string>
+ <string name="permlab_modifyAudioSettings" msgid="6095859937069146086">"modifier vos paramètres audio"</string>
<string name="permdesc_modifyAudioSettings" msgid="7343951185408396919">"Permet à l\'application de modifier les paramètres audio généraux, tels que le volume et le routage audio."</string>
<string name="permlab_recordAudio" msgid="3876049771427466323">"Enregistrement de fichier audio"</string>
<string name="permdesc_recordAudio" msgid="2387462233976248635">"Permet à l\'application d\'accéder au chemin de l\'enregistrement audio."</string>
@@ -412,15 +441,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"forcer le redémarrage du téléphone"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Permet à l\'application de forcer le redémarrage de la tablette."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Permet à l\'application de forcer le redémarrage du téléphone."</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"accéder système fichiers mémoire USB"</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"accéder au système de fichiers de la carte SD"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Permet à l\'application d\'installer et de désinstaller des systèmes de fichiers pour des périphériques de stockage amovibles."</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"effacer la mémoire USB"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"effacer la carte SD"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Permet à l\'application de formater le périphérique de stockage amovible."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"obtenir des informations sur la mémoire de stockage interne"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"Permet à l\'application d\'obtenir des informations sur la mémoire de stockage interne."</string>
@@ -432,10 +457,9 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Permet à l\'application d\'installer ou de désinstaller la mémoire de stockage interne."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"renommer la mémoire de stockage interne"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"Permet à l\'application de renommer la mémoire de stockage interne."</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"contrôler le vibreur"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"Permet à l\'application de contrôler le vibreur."</string>
- <string name="permlab_flashlight" msgid="2155920810121984215">"Contrôle de la lampe de poche"</string>
+ <string name="permlab_flashlight" msgid="2155920810121984215">"contrôler la lampe de poche"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"Permet à l\'application de contrôler la lampe de poche."</string>
<string name="permlab_manageUsb" msgid="1113453430645402723">"gérer les préférences et les autorisations des périphériques USB"</string>
<string name="permdesc_manageUsb" msgid="7776155430218239833">"Permet à l\'application de gérer les préférences et les autorisations des périphériques USB."</string>
@@ -458,8 +482,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"Permet à l\'application d\'indiquer au système les widgets pouvant être utilisés par les applications. Une application disposant de cette autorisation peut accorder à d\'autres applications l\'accès à des données personnelles. Les applications standards ne doivent pas utiliser cette fonctionnalité."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"Modification de l\'état du téléphone"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Permet à l\'application de contrôler les fonctionnalités de téléphonie de l\'appareil. Une application disposant de cette autorisation peut, par exemple, basculer d\'un réseau à l\'autre et activer ou désactiver le signal radio du téléphone à votre insu."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"voir l\'état et l\'identité du téléphone"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"Permet à l\'application d\'accéder aux fonctionnalités de téléphonie de l\'appareil. Cette autorisation permet de déterminer le numéro d\'appel et le numéro de série du téléphone, mais également de déterminer si un appel est actif, à quel numéro cet appel est connecté, etc."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"empêcher la tablette de passer en mode veille"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"empêcher le téléphone de passer en mode veille"</string>
@@ -472,10 +495,9 @@
<string name="permlab_factoryTest" msgid="3715225492696416187">"Exécution en mode Test d\'usine"</string>
<string name="permdesc_factoryTest" product="tablet" msgid="3952059318359653091">"Permet d\'exécuter une application en mode test fabricant de faible niveau, autorisant ainsi l\'accès complet à la tablette. Cette fonctionnalité est uniquement disponible lorsque la tablette est en mode test fabricant."</string>
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Permet d\'exécuter une application en mode test fabricant de faible niveau en autorisant ainsi l\'accès au téléphone. Cette fonctionnalité est uniquement disponible lorsque le téléphone est en mode test fabricant."</string>
- <string name="permlab_setWallpaper" msgid="6627192333373465143">"Configuration du fond d\'écran"</string>
+ <string name="permlab_setWallpaper" msgid="6627192333373465143">"configurer le fond d\'écran"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"Permet à l\'application de définir le fond d\'écran du système."</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"modifier la taille du fond d\'écran"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Permet à l\'application de définir les bulles d\'aide concernant la taille du fond d\'écran du système."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"Réinitialisation du système à ses paramètres d\'usine"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"Permet à l\'application de rétablir la configuration d\'usine du système en effaçant toutes les données, ainsi que les paramètres et les applications installées."</string>
@@ -487,23 +509,18 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Permet à l\'application de modifier le fuseau horaire du téléphone."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"Agir en tant que service AccountManagerService"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"Permet à l\'application d\'appeler le service AccountAuthenticators."</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"rechercher des comptes sur l\'appareil"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Permet à l\'application d\'obtenir la liste des comptes connus de la tablette."</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Permet à l\'application d\'obtenir la liste des comptes connus du téléphone."</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"créer des comptes et définir des mots de passe"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Permet à l\'application d\'utiliser les fonctionnalités d\'authentification de compte du service AccountManager, y compris pour créer des comptes, et obtenir et définir les mots de passe associés."</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"ajouter ou supprimer des comptes"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"Permet à l\'application d\'effectuer certaines opérations, par exemple d\'ajouter ou de supprimer des comptes et d\'effacer les mots de passe associés."</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"utiliser des comptes sur l\'appareil"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"Permet à l\'application de demander des jetons d\'authentification."</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"afficher les connexions réseau"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"Permet à l\'application d\'afficher l\'état de tous les réseaux."</string>
- <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"Accès Internet complet"</string>
+ <string name="permlab_createNetworkSockets" msgid="9121633680349549585">"bénéficier d\'un accès Internet complet"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Permet à l\'application de créer des connecteurs réseau."</string>
<string name="permlab_writeApnSettings" msgid="505660159675751896">"changer/intercepter les paramètres et le trafic du réseau"</string>
<string name="permdesc_writeApnSettings" msgid="5333798886412714193">"Permet à l\'application de modifier les paramètres réseau, ainsi que d\'intercepter et de surveiller tout le trafic réseau ayant pour but de modifier le proxy et le port d\'un APN, par exemple. Des applications malveillantes peuvent exploiter cette fonctionnalité pour surveiller, rediriger ou modifier les paquets réseau à votre insu."</string>
@@ -513,59 +530,46 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"Permet à l\'application de modifier l\'état de la connectivité du partage de connexion."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"modifier le paramètre d\'utilisation des données en arrière-plan"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Permet à l\'application de modifier les paramètres de consommation des données en arrière-plan."</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"afficher les connexions Wi-Fi"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"Permet à l\'application d\'afficher des informations concernant l\'état de la connexion Wi-Fi."</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"activer/désactiver la connexion Wi-Fi"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"Permet à l\'application de se connecter à des points d\'accès Wi-Fi, de s\'en déconnecter et de modifier les réseaux Wi-Fi configurés."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"autoriser la réception de données en Wi-Fi multidiffusion"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Permet à l\'application de recevoir des paquets qui ne sont pas directement adressés à votre appareil. Cela peut se révéler utile pour la recherche de services disponibles à proximité. Ce mode consomme plus que le mode non multidiffusion."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"accéder aux paramètres Bluetooth"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Permet à l\'application de configurer la tablette Bluetooth locale, d\'identifier des appareils distants et de les associer à la tablette."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Permet à l\'application de configurer le téléphone Bluetooth local, d\'identifier des appareils distants et de les associer au téléphone."</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"afficher les connexions WiMAX"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Permet à l\'application de consulter les informations sur l\'état du WiMAX."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"Modifier l\'état du WiMAX"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Permet à l\'application de se connecter au réseau WiMAX et de s\'en déconnecter."</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"associer à des appareils Bluetooth"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Permet à l\'application d\'obtenir la configuration de la tablette Bluetooth locale, de se connecter à des appareils associés et d\'accepter leur connexion."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Permet à l\'application d\'obtenir la configuration du téléphone Bluetooth local, de se connecter à des appareils associés et d\'accepter leur connexion."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"contrôler la communication en champ proche"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Permet à l\'application de communiquer avec des tags, des cartes et des lecteurs compatibles avec la technologie NFC (communication en champ proche)."</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"désactiver le verrouillage de l\'écran"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Permet à l\'application de désactiver le verrouillage des touches et toute sécurité par mot de passe associée. Par exemple, votre téléphone désactive le verrouillage du clavier lorsque vous recevez un appel, puis le réactive lorsque vous raccrochez."</string>
- <string name="permlab_readSyncSettings" msgid="6201810008230503052">"Lecture des paramètres de synchronisation"</string>
+ <string name="permlab_readSyncSettings" msgid="6201810008230503052">"lire les paramètres de synchronisation"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Permet à l\'application de lire les paramètres de synchronisation, tels que l\'activation de la synchronisation pour l\'application Contacts."</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"activer/désactiver la synchronisation"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Permet à l\'application de modifier les paramètres de synchronisation, tels que l\'activation de la synchronisation pour l\'application Contacts."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"Lecture des statistiques de synchronisation"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"Permet à l\'application de lire les statistiques de synchronisation, par exemple l\'historique des synchronisations effectuées."</string>
- <string name="permlab_subscribedFeedsRead" msgid="4756609637053353318">"Lecture des flux auxquels vous êtes abonné"</string>
+ <string name="permlab_subscribedFeedsRead" msgid="4756609637053353318">"lire les flux auxquels vous êtes abonné"</string>
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Permet à l\'application d\'obtenir des informations sur les flux en cours de synchronisation."</string>
- <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"Écriture des flux auxquels vous êtes abonné"</string>
+ <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"écrire les flux auxquels vous êtes abonné"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Permet à l\'application de modifier les flux en cours de synchronisation. Des applications malveillantes peuvent exploiter cette fonctionnalité pour modifier vos flux synchronisés."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"voir les termes ajoutés au dictionnaire"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Permet à l\'application de lire tous les mots, noms et expressions privés que l\'utilisateur a pu enregistrer dans son dictionnaire personnel."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"enregistrer dans le dictionnaire défini par l\'utilisateur"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Permet à l\'application d\'enregistrer de nouveaux mots dans le dictionnaire personnel de l\'utilisateur."</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"voir le contenu de la mémoire USB"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"voir le contenu de la carte SD"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Permet à l\'appli de lire le contenu de la mémoire USB (photos, fichiers multimédias, etc.)."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Permet à l\'application de lire le contenu d\'une carte SD, qui peut inclure des photos et des fichiers multimédias."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"modifier ou supprimer le contenu de la mémoire USB"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Permet à l\'application de modifier le contenu de la mémoire de stockage USB."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Permet à l\'application de modifier le contenu de la carte SD."</string>
@@ -744,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Aucune carte SIM n\'est insérée dans le téléphone."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Insérez une carte SIM."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"Carte SIM absente ou illisible. Insérez une carte SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"Carte SIM inutilisable."</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Votre carte SIM a été définitivement désactivée."\n" Veuillez contacter votre opérateur de téléphonie mobile pour en obtenir une autre."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Bouton du titre précédent"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Bouton du titre suivant"</string>
@@ -819,15 +824,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"Commune"</string>
<string name="autofill_area" msgid="3547409050889952423">"Région"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"Émirat"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"voir l\'historique et les favoris Web"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Permet à l\'application de lire toutes les URL auxquelles le navigateur a accédé, ainsi que tous ses favoris."</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"modifier l\'historique et les favoris Web"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Permet à l\'application de modifier l\'historique du navigateur ou les favoris stockés sur votre tablette. Des applications malveillantes peuvent exploiter cette fonctionnalité pour effacer ou modifier les données de votre navigateur."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Permet à l\'application de modifier l\'historique du navigateur ou les favoris stockés sur votre téléphone. Des applications malveillantes peuvent exploiter cette fonctionnalité pour effacer ou modifier les données de votre navigateur."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"définir une alarme"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"Permet à l\'application de régler la sonnerie d\'un réveil installé. Cette fonctionnalité n\'est pas disponible sur tous les réveils."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"ajouter un message vocal"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"Permet à l\'application d\'ajouter des messages à votre messagerie vocale."</string>
@@ -1087,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Définir la date"</string>
<string name="date_time_set" msgid="5777075614321087758">"Définir"</string>
<string name="date_time_done" msgid="2507683751759308828">"OK"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"Par défaut"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NOUVEAU"</font>" :"</string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NOUVEAU"</font>" :"</string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"Aucune autorisation requise"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"Masquer"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"Tout afficher"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"Mémoire de stockage de masse USB"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"Connecté par USB"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"Vous êtes connecté à votre ordinateur via un câble USB. Appuyez sur le bouton ci-dessous pour copier des fichiers de votre ordinateur vers la mémoire de stockage USB de votre appareil Android, ou inversement."</string>
@@ -1320,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"Envoi en cours…"</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"Lancer le navigateur ?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"Prendre l\'appel ?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-h720dp/dimens.xml b/core/res/res/values-h720dp/dimens.xml
index 6e99183..f726a98 100644
--- a/core/res/res/values-h720dp/dimens.xml
+++ b/core/res/res/values-h720dp/dimens.xml
@@ -19,12 +19,4 @@
<resources>
<!-- Dialog button bar height -->
<dimen name="alert_dialog_button_bar_height">54dip</dimen>
- <!-- Preference fragment padding, bottom -->
- <dimen name="preference_fragment_padding_bottom">16dp</dimen>
-
- <dimen name="preference_screen_header_padding_side">0dip</dimen>
-
- <integer name="preference_screen_header_scrollbarStyle">0x0</integer> <!-- insideOverlay -->
- <integer name="preference_fragment_scrollbarStyle">0x0</integer> <!-- insideOverlay -->
-
</resources>
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index 6f898f7..ea6447f 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"आपके संदेश"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"अपने SMS, ईमेल, और अन्य संदेशों को पढ़ें और लिखें."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"आपकी निजी जानकारी"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"टेबलेट पर संग्रहीत आपके संपर्कों और कैलेंडर में सीधे पहुंचें."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"फ़ोन पर संग्रहीत आपके संपर्कों और कैलेंडर में सीधे पहुंचें."</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"अपने संपर्क कार्ड में संग्रहीत, अपनी जानकारी पर सीधी पहुंच."</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"आपकी सामाजिक जानकारी"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"अपने संपर्कों और सामाजिक कनेक्शन के बारे में जानकारी पर सीधी पहुंच."</string>
<string name="permgrouplab_location" msgid="635149742436692049">"आपका स्थान"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"अपने भौतिक स्थान पर नज़र रखें."</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"नेटवर्क संचार"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"विभिन्न नेटवर्क सुविधाओं पर पहुंचें."</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"ऑडियो सेटिंग"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"ऑडियो सेटिंग बदलें."</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"बैटरी प्रभावित होती है"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"उन सुविधाओं का उपयोग करें जो बैटरी की खपत तेज़ी से कर सकती हैं."</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"कैलेंडर"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"कैलेंडर और ईवेंट पर सीधी पहुंच."</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"बुकमार्क और इतिहास"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"बुकमार्क और ब्राउज़र इतिहास पर सीधी पहुंच."</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"अलार्म"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"अलार्म घड़ी सेट करें."</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"ध्वनिमेल"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"ध्वनिमेल पर सीधी पहुंच."</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"माइक्रोफ़ोन"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"ऑडियो रिकॉर्ड करने के लिए माइक्रोफ़ोन पर सीधी पहुंच."</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"कैमरा"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"छवि या वीडियो कैप्चर के लिए कैमरे पर सीधी पहुंच."</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"आपके एप्लिकेशन की जानकारी"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"अपने उपकरण पर अन्य एप्लिकेशन के व्यवहार को प्रभावित करने की क्षमता."</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"वॉलपेपर"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"उपकरण की वॉलपेपर सेटिंग बदलें."</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"घड़ी"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"उपकरण का समय या समय क्षेत्र बदलें."</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"स्थिति बार"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"उपकरण के स्थिति बार की सेटिंग बदलें."</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"समन्वयन सेटिंग"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"समन्वयन सेटिंग पर पहुंचें."</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"आपके खाते"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"उपलब्ध खातों में पहुंचें."</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"हार्डवेयर नियंत्रण"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"सिस्टम का निम्न-स्तर पहुंच और नियंत्रण."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"डेवलपमेंट टूल"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"सुविधाएं जो केवल एप्लिकेशन डेवलपर के लिए आवश्यक हैं."</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"अन्य एप्लिकेशन UI"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"अन्य एप्लिकेशन के UI को प्रभावित करें."</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"संग्रहण"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"USB संग्रहण में पहुंचें."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"SD कार्ड में पहुंचें."</string>
@@ -193,14 +238,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"एप्लिकेशन को स्थिति बार होने देता है."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"स्थिति बार विस्तृत/संक्षिप्त करें"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"एप्लिकेशन को स्थिति बार को विस्तृत या संक्षिप्त करने देता है."</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"आउटगोइंग कॉल को कहीं और भेजें"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"एप्लिकेशन को आउटगोइंग कॉल संसाधित करने और डायल किए जाने वाला नंबर बदलने देता है. दुर्भावनापूर्ण एप्लिकेशन आउटगोइंग कॉल की निगरानी कर सकते हैं, रीडायरेक्ट कर सकते हैं, या उन्हें रोक सकते हैं."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"पाठ संदेश (SMS) प्राप्त करें"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"एप्लिकेशन को SMS संदेशों को प्राप्त करने और संसाधित करने देता है. दुर्भावनापूर्ण एप्लिकेशन आपके संदेशों की निगरानी कर सकते हैं या आपको दिखाए बिना उन्हें हटा सकते हैं."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"पाठ संदेश (MMS) प्राप्त करें"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"एप्लिकेशन को MMS संदेश प्राप्त करने और संसाधित करने देता है. दुर्भावनापूर्ण एप्लिकेशन आपके संदेशों की निगरानी कर सकते हैं या आपको दिखाए बिना उन्हें हटा सकते हैं."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"आपातकालीन प्रसारण प्राप्त करें"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"एप्लिकेशन को आपातकालीन प्रसारण संदेशों को प्राप्त करने और संसाधित करने देता है. यह अनुमति केवल सिस्टम एप्लिकेशन में उपलब्ध है."</string>
@@ -210,16 +252,13 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"एप्लिकेशन को SMS संदेशों को भेजने देता है. दुर्भावनापूर्ण एप्लिकेशन आपकी पुष्टि के बिना संदेश भेजकर आप पर शुल्क लगा सकते हैं."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"बिना किसी पुष्टि के SMS संदेश भेजें"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"एप्लिकेशन को SMS संदेशों को भेजने देता है. दुर्भावनापूर्ण एप्लिकेशन आपकी पुष्टि के बिना संदेशों को भेजकर आप पर शुल्क लगा सकते हैं."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"अपने पाठ संदेश (SMS या MMS) पढ़ें"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"एप्लिकेशन को आपके टेबलेट या सिम कार्ड पर संग्रहीत SMS संदेशों को पढ़ने देता है. दुर्भावनापूर्ण एप्लिकेशन आपके गोपनीय संदेश पढ़ सकते हैं."</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"एप्लिकेशन को आपके फ़ोन या सिम कार्ड पर संग्रहीत SMS संदेशों को पढ़ने देता है. दुर्भावनापूर्ण एप्लिकेशन आपके गोपनीय संदेशों को पढ़ सकते हैं."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"अपने पाठ संदेश (SMS या MMS) संपादित करें"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"एप्लिकेशन को आपके टेबलेट या सिम कार्ड में संग्रहीत SMS संदेशों में लिखने देता है. दुर्भावनापूर्ण एप्लिकेशन आपके संदेशों को हटा सकते हैं."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"एप्लिकेशन को आपके फ़ोन या सिम कार्ड में संग्रहीत SMS संदेशों को लिखने देता है. दुर्भावनापूर्ण एप्लिकेशन आपके संदेशों को हटा सकते हैं."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"पाठ संदेश (WAP) प्राप्त करें"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"एप्लिकेशन को WAP संदेशों को प्राप्त करने और संसाधित करने देता है. दुर्भावनापूर्ण एप्लिकेशन आपके संदेशों की निगरानी कर सकते हैं या आपको दिखाए बिना उन्हें हटा सकते हैं."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"चल रहे एप्लिकेशन पुनर्प्राप्त करें"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"एप्लिकेशन को वर्तमान में और हाल ही में चल रहे कार्यों की जानकारी पुर्नप्राप्त करने देता है. दुर्भावनापूर्ण एप्लिकेशन अन्य एप्लिकेशन के बारे में निजी जानकारी खोज सकते हैं."</string>
@@ -235,13 +274,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"एप्लिकेशन को अन्य एप्लिकेशन के स्क्रीन संगतता मोड को नियंत्रित करने देता है. दुर्भावनापूर्ण एप्लिकेशन अन्य एप्लिकेशन का व्यवहार बाधित कर सकते हैं."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"एप्लिकेशन डीबग करना सक्षम करें"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"एप्लिकेशन को अन्य एप्लिकेशन के लिए डीबग किया जाना चालू करने देता है. दुर्भावनापूर्ण एप्लिकेशन इसका उपयोग अन्य एप्लिकेशन को समाप्त करने के लिए कर सकते हैं."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"सिस्टम प्रदर्शन सेटिंग बदलें"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"एप्लिकेशन को वर्तमान कॉन्फ़िगरेशन, जैसे स्थान या समग्र फ़ॉन्ट आकार, बदलने देता है."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"कार मोड सक्षम करें"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"एप्लिकेशन को कार मोड सक्षम करने देता है."</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"अन्य एप्लिकेशन बंद करें"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"एप्लिकेशन को स्मृति कम नहीं होने के बावजूद भी अन्य एप्लिकेशन की पृष्ठिभूमि प्रक्रियाएं समाप्त करने देता है."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"अन्य एप्लिकेशन बलपूर्वक बंद करें"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"एप्लिकेशन को अन्य एप्लिकेशन बलपूर्वक बंद करने देता है."</string>
@@ -265,8 +302,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"एप्लिकेशन को वह सूचना प्रसारित करने देता है जो WAP PUSH संदेश को प्राप्त हुआ है. दुर्भावनापूर्ण एप्लिकेशन इसका उपयोग नकली MMS संदेश प्राप्त करने या किसी वेबपृष्ठ की सामग्री को दुर्भावनापूर्ण दूसरे रूप से चुपचाप प्रतिस्थापित करने के लिए कर सकते हैं."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"चल रही प्रक्रियाओं की संख्या सीमित करें"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"एप्लिकेशन को चलाई जाने वाली अधिकतम प्रक्रियाओं को नियंत्रित करने देता है. सामान्य एप्लिकेशन के लिए कभी आवश्यक नहीं होती."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"पृष्ठभूमि एप्लिकेशन को बलपूर्वक बंद करें"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"एप्लिकेशन को यह नियंत्रित करने देता है कि पृष्ठभूमि में जाते ही गतिविधियां पूर्ण हो जाती है या नही. सामान्य एप्लिकेशन के लिए कभी आवश्यकता नहीं होती."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"बैटरी आंकड़े संशोधित करें"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"एप्लिकेशन को बैटरी के संकलित आंकड़ों को संशोधित करने देता है. सामान्य एप्लिकेशन द्वारा उपयोग करने के लिए नहीं."</string>
@@ -276,8 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"एप्लिकेशन को पूर्ण बैकअप पुष्टिकरण UI लॉन्च करने देता है. किसी एप्लिकेशन द्वारा उपयोग के लिए नहीं."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"अनधिकृत विंडो दिखाएं"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"किसी एप्लिकेशन को ऐसी विंडो बनाने देता है जिनका उपयोग आंतरिक सिस्टम उपयोगकर्ता इंटरफ़ेस द्वारा किया जाना है. सामान्य एप्लिकेशन द्वारा उपयोग करने के लिए नहीं."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"अन्य एप्लिकेशन पर खींचें"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"एप्लिकेशन को सिस्टम अलर्ट विंडो प्रदर्शित करने देता है. दुर्भावनापूर्ण एप्लिकेशन संपूर्ण स्क्रीन टेक ओवर कर सकते हैं."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"वैश्विक एनिमेशन गति संशोधित करें"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"एप्लिकेशन को किसी भी समय वैश्विक एनिमेशन गति (तेज़ या धीमे एनिमेशन) बदलने देता है."</string>
@@ -339,26 +374,22 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"एप्लिकेशन को उसके या अन्य एप्लिकेशन के लिए विशेष अनुमतियां देने या रद्द करने देता है. दुर्भावनापूर्ण एप्लिकेशन इसका उपयोग उन सुविधाओं तक पहुंचने के लिए कर सकते हैं जो आपने उन्हें नहीं दी हैं."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"पसंदीदा एप्लिकेशन सेट करें"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"एप्लिकेशन को आपके पसंदीदा एप्लिकेशन को संशोधित करने देता है. दुर्भावनापूर्ण एप्लिकेशन आपसे निजी डेटा एकत्रित करने के लिए आपके मौजूदा एप्लिकेशन को स्पूफ़ करके, चलाए जाने वाले एप्लिकेशन को चुपचाप बदल सकते हैं."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"सिस्टम सेटिंग संशोधित करें"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"एप्लिकेशन को सिस्टम सेटिंग डेटा संशोधित करने देता है. दुर्भावनापूर्ण एप्लिकेशन आपके सिस्टम के कॉन्फ़िगरेशन को दूषित कर सकते हैं."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"सुरक्षित सिस्टम सेटिंग संशोधित करें"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"एप्लिकेशन को सिस्टम के सुरक्षित सेटिंग डेटा को संशोधित करने देता है. सामान्य एप्लिकेशन द्वारा उपयोग करने के लिए नहीं."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"Google सेवाएं मैप संशोधित करें"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"एप्लिकेशन को Google सेवाओं का मानचित्र संशोधित करने देता है. सामान्य एप्लिकेशन द्वारा उपयोग करने के लिए नहीं."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"प्रारंभ होने पर चलाएं"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"एप्लिकेशन को सिस्टम द्वारा बूटिंग पूर्ण करते ही स्वतः आरंभ करने देता है. इससे टेबलेट को आरंभ होने में अधिक समय लग सकता है और एप्लिकेशन को निरंतर चलाकर संपूर्ण टेबलेट को धीमा करने देता है."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"एप्लिकेशन को सिस्टम द्वारा बूटिंग पूर्ण करते ही स्वतः प्रारंभ होने देता है. इससे फ़ोन को प्रारंभ होने में अधिक समय लग सकता है और एप्लिकेशन के निरंतर चलते रहने से संपूर्ण फ़ोन प्रक्रियाएं धीमी हो सकती हैं."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"स्टिकी प्रसारण भेजें"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"एप्लिकेशन को स्टिकी प्रसारण भेजने देता है, जो प्रसारण समाप्त होने के बाद भी बने रहते हैं. दुर्भावनापूर्ण एप्लिकेशन टेबलेट की बहुत अधिक स्मृति का उपयोग करके उसे धीमा या अस्थिर कर सकते हैं."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"एप्लिकेशन को स्टिकी प्रसारण भेजने देता है, जो प्रसारण समाप्त होने के बाद भी बना रहता है. दुर्भावनापूर्ण एप्लिकेशन फ़ोन की बहुत अधिक स्मृति का उपयोग करके उसे धीमा या अस्थिर कर सकते हैं."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
+ <string name="permlab_readContacts" msgid="8348481131899886131">"अपने संपर्क पढ़ें"</string>
<string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"एप्लिकेशन को आपके द्वारा विशेष व्यक्तियों को अन्य तरीकों से कॉल, ईमेल, या उनसे संचार करने की आवृत्ति सहित, आपके टेबलेट पर संग्रहीत आपके संपर्कों का सभी डेटा पढ़ने देता है. इससे ईमेल पतों के स्वत: पूर्ण होने और अन्य उपयुक्त सुविधाओं के लिए सहायता मिलती है. दुर्भावनापूर्ण एप्लिकेशन इस अनुमति का उपयोग आपका डेटा अन्य लोगों को भेजने के लिए कर सकते हैं."</string>
<string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"एप्लिकेशन को आपके द्वारा विशेष व्यक्तियों को अन्य तरीकों से कॉल करने, ईमेल करने, या उनसे संचार करने की आवृत्ति सहित, आपके फ़ोन पर संग्रहीत आपके संपर्कों का सभी डेटा पढ़ने देता है. इससे ईमेल पतों के स्वत: पूर्ण होने और अन्य उपयुक्त सुविधाओं के लिए सहायता मिलती है. दुर्भावनापूर्ण एप्लिकेशन इस अनुमति का उपयोग आपका डेटा अन्य लोगों को भेजने के लिए कर सकते हैं."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"अपने संपर्क संशोधित करें"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"एप्लिकेशन को आपके द्वारा विशेष व्यक्तियों को अन्य तरीकों से कॉल, ईमेल, या उनसे संचार करने की आवृत्ति सहित, आपके टेबलेट पर संग्रहीत आपके संपर्कों का डेटा संशोधित करने देता है. इससे ईमेल पतों के स्वत: पूर्ण होने और अन्य उपयुक्त सुविधाओं के लिए सहायता मिलती है. दुर्भावनापूर्ण एप्लिकेशन इस अनुमति का उपयोग आपका डेटा अन्य लोगों को भेजने के लिए कर सकते हैं."</string>
<string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"एप्लिकेशन को आपके द्वारा विशेष व्यक्तियों को अन्य तरीकों से कॉल, ईमेल, या उनसे संचार करने की आवृत्ति सहित, आपके फ़ोन पर संग्रहीत आपके संपर्कों का डेटा संशोधित करने देता है. इससे ईमेल पतों के स्वत: पूर्ण होने और अन्य उपयुक्त सुविधाओं के लिए सहायता मिलती है. दुर्भावनापूर्ण एप्लिकेशन इस अनुमति का उपयोग आपका डेटा अन्य लोगों को भेजने के लिए कर सकते हैं."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"कॉल लॉग पढ़ें"</string>
@@ -367,11 +398,9 @@
<string name="permlab_writeCallLog" msgid="8552045664743499354">"कॉल लॉग लिखें"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"एप्लिकेशन को इनकमिंग और आउटगोइंग कॉल के डेटा सहित, आपके टेबलेट का कॉल लॉग संशोधित करने देता है. दुर्भावनापूर्ण एप्लिकेशन आपके कॉल लॉग को मिटाने या संशोधित करने के लिए इसका उपयोग कर सकते हैं."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"एप्लिकेशन को इनकमिंग और आउटगोइंग कॉल के डेटा सहित, आपके फ़ोन का कॉल लॉग संशोधित करने देता है. दुर्भावनापूर्ण एप्लिकेशन आपके कॉल लॉग को मिटाने या संशोधित करने के लिए इसका उपयोग कर सकते हैं."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"स्वयं का संपर्क कार्ड पढ़ें"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"एप्लिकेशन को आपके उपकरण में संग्रहीत नाम और संपर्क जानकारी जैसी निजी प्रोफ़ाइल जानकारी पढ़ने देता है. इसका अर्थ है कि एप्लिकेशन आपको पहचान सकता है और आपकी प्रोफ़ाइल की जानकारी अन्य लोगों को भेज सकता है."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"स्वयं का संपर्क कार्ड संशोधित करें"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"एप्लिकेशन को आपके उपकरण पर संग्रहीत निजी प्रोफ़ाइल जानकारी, जैसे आपका नाम और संपर्क जानकारी बदलने या जोड़ने देता है. इसका अर्थ है कि अन्य एप्लिकेशन आपको पहचान सकते हैं और आपकी प्रोफ़ाइल जानकारी दूसरों को भेज सकते हैं."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"अपनी सामाजिक स्ट्रीम पढ़ें"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"एप्लिकेशन को आपके और आपके मित्रों के सामाजिक अपडेट पर पहुंचने और समन्वयित करने देता है. दुर्भावनापूर्ण एप्लिकेशन सामाजिक नेटवर्क पर आपके और आपके मित्रों के बीच निजी संचार पढ़ने के लिए इसका उपयोग कर सकते हैं."</string>
@@ -412,15 +441,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"फ़ोन रीबूट के लिए बाध्य करें"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"एप्लिकेशन को टेबलेट रीबूट करने के लिए बाध्य करने देता है."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"एप्लिकेशन को फ़ोन बलपूर्वक रीबूट करने देता है."</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"USB संग्रहण फ़ाइल सिस्टम पर पहुंचें"</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"SD कार्ड फ़ाइल सिस्टम पर पहुंचें"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"एप्लिकेशन को निकाले जाने योग्य संग्रहण के लिए फ़ाइल सिस्टम माउंट और अनमाउंट करने देता है."</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"USB संग्रहण मिटाएं"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"SD कार्ड मिटाएं"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"एप्लिकेशन को निकालने योग्य संग्रहण फ़ॉर्मेट करने देता है."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"आंतरिक संग्रहण पर जानकारी प्राप्त करें"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"एप्लिकेशन को आंतरिक संग्रहण की जानकारी प्राप्त करने देता है."</string>
@@ -432,8 +457,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"एप्लिकेशन को आंतरिक संग्रहण माउंट/अनमाउंट करने देता है."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"आंतरिक संग्रहण का नाम बदलें"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"एप्लिकेशन को आंतरिक संग्रहण का नाम बदलने देता है."</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"कंपन नियंत्रित करें"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"एप्लिकेशन को कंपनकर्ता नियंत्रित करने देता है."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"फ़्लैशलाइट नियंत्रित करें"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"एप्लिकेशन को फ़्लैशलाइट नियंत्रित करने देता है."</string>
@@ -458,8 +482,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"एप्लिकेशन को सिस्टम को यह बताने देता है कि किस एप्लिकेशन द्वारा कौन से विजेट का उपयोग किया जा सकता है. कोई एप्लिकेशन, इस अनुमति के साथ अन्य एप्लिकेशन के निजी डेटा पर पहुंच सकते हैं. सामान्य एप्लिकेशन द्वारा उपयोग करने के लिए नहीं."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"फ़ोन स्थिति संशोधित करें"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"एप्लिकेशन को उपकरण की फ़ोन सुविधाएं नियंत्रित करने देता है. इस अनुमति वाला कोई एप्लिकेशन आपको सूचित किए बिना नेटवर्क स्विच कर सकता है, फ़ोन का रेडियो चालू और बंद कर सकता है और ऐसे ही अन्य कार्य कर सकता है."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"फ़ोन की स्थिति और पहचान पढ़ें"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"एप्लिकेशन को उपकरण की फ़ोन सुविधाओं तक पहुंचने देता है. इस अनुमति वाला कोई एप्लिकेशन इस फ़ोन का फ़ोन नंबर और सीरियल नंबर बता सकता है, यह बता सकता है कि कोई कॉल चल रहा है, वह नंबर जिससे कॉल किया गया है और ऐसी ही अन्य जानकारी."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"टेबलेट को निष्क्रिय होने से रोकें"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"फ़ोन को निष्क्रिय होने से रोकें"</string>
@@ -474,8 +497,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"फ़ोन हार्डवेयर में पूर्ण पहुंच की अनुमति देते हुए निम्न-स्तर निर्माता परीक्षण के रूप में चलाएं. केवल तभी उपलब्ध जब कोई फ़ोन निर्माता परीक्षण मोड में चल रहा हो."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"वॉलपेपर सेट करें"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"एप्लिकेशन को सिस्टम वॉलपेपर सेट करने देता है."</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"अपने वॉलपेपर का आकार समायोजित करें"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"एप्लिकेशन को सिस्टम वॉलपेपर आकार संकेत सेट करने देता है."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"फ़ैक्ट्री डिफ़ॉल्ट पर सिस्टम रीसेट करें"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"एप्लिकेशन को सभी डेटा, कॉन्फ़िगरेशन, और इंस्टॉल एप्लिकेशन मिटाकर, सिस्टम को पूरी तरह उसकी फ़ैक्टरी सेटिंग पर रीसेट करने देता है."</string>
@@ -487,21 +509,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"एप्लिकेशन को टेबलेट का समय क्षेत्र बदलने देता है."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"खाता प्रबंधक सेवा के रूप में कार्य करें"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"एप्लिकेशन को खाता प्रमाणकों को कॉल करने देता है."</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"उपकरण पर खाते ढूंढें"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"किसी एप्लिकेशन को टेबलेट को ज्ञात खातों की सूची प्राप्त करने देता है."</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"किसी एप्लिकेशन को फ़ोन को ज्ञात खातों की सूची प्राप्त करने देता है."</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"खाते बनाएं और पासवर्ड सेट करें"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"एप्िलकेशन को खाता बनाने और उनके पासवर्ड प्राप्त करने और सेट करने सहित, खाता प्रबंधक की खाता प्रमाणक क्षमताओं का उपयोग करने देता है."</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"खाते जोडें या निकालें"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"एप्लिकेशन को खाते जोड़ना और निकालना और उनके पासवर्ड हटाने जैसे कार्य करने देता है."</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"उपकरण पर खातों का उपयोग करें"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"एप्लिकेशन को प्रमाणीकरण टोकन का अनुरोध करने देता है."</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"नेटवर्क कनेक्शन देखें"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"एप्लिकेशन को सभी नेटवर्क की स्थिति को देखने देता है."</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"पूर्ण इंटरनेट पहुंच"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"एप्लिकेशन को नेटवर्क सॉकेट बनाने देता है."</string>
@@ -513,36 +530,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"एप्लिकेशन को टेदर की गई नेटवर्क कनेक्टिविटी की स्थिति बदलने देता है."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"पृष्ठभूमि डेटा उपयोग सेटिंग बदलें"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"एप्लिकेशन को पृष्ठभूमि डेटा उपयोग सेटिंग बदलने देता है."</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"Wi-Fi कनेक्शन देखें"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"एप्लिकेशन को Wi-Fi की स्थिति की जानकारी देखने देता है."</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"Wi-Fi से कनेक्ट और डिस्कनेक्ट करें"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"एप्लिकेशन को Wi-Fi पहुंच बिंदुओं से कनेक्ट और डिस्कनेक्ट करने और कॉन्फ़िगर किए गए Wi-Fi नेटवर्क में परिवर्तन करने देता है."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"Wi-Fi मल्टीकास्ट प्राप्ति को अनुमति दें"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"एप्लिकेशन को ऐसे पैकेट प्राप्त करने देता है जो सीधे आपके उपकरण के लिए लक्षित न हों. आस-पास ऑफ़र की गई सेवाओं का पता लगाते समय यह उपयोगी हो सकता है. यह गैर-मल्टीकास्ट मोड से अधिक पावर का उपयोग करता है."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"Bluetooth सेटिंग पर पहुंचें"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"किसी एप्लिकेशन को स्थानीय Bluetooth टेबलेट कॉन्फ़िगर करने की और रिमोट उपकरणों के साथ खोजने और युग्मित करने देता है."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"एप्लिकेशन को स्थानीय Bluetooth फ़ोन कॉन्फ़िगर करने देता है, और रिमोट उपकरणों के साथ खोजने और युग्मित करने देता है."</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"WiMAX कनेक्शन देखें"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"एप्लिकेशन को WiMAX की स्थिति की जानकारी देखने देता है."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"WiMAX स्थिति बदलें"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"एप्लिकेशन को WiMAX नेटवर्क से कनेक्ट और डिस्कनेक्ट होने देता है."</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"Bluetooth उपकरणों के साथ युग्मित करें"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"एप्लिकेशन को स्थानीय Bluetooth टेबलेट का कॉन्फ़िगरेशन देखने और युग्मित उपकरणों के साथ कनेक्शन बनाने और स्वीकार करने देता है."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"एप्लिकेशन को स्थानीय Bluetooth फ़ोन का कॉन्फ़िगरेशन देखने, और युग्मित उपकरणों से कनेक्शन करने और स्वीकार करने देता है."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"नियर फ़ील्ड कम्यूनिकेशन नियंत्रित करें"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"एप्लिकेशन को नियर फ़ील्ड कम्यूनिकेशन (NFC) टैग, कार्ड, और रीडर के साथ संचार करने देता है."</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"अपना स्क्रीन लॉक अक्षम करें"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"एप्लिकेशन को कीलॉक और कोई भी संबद्ध पासवर्ड सुरक्षा अक्षम करने देता है. इसका एक उपयुक्त उदाहरण इनकमिंग फ़ोन कॉल प्राप्त होते समय फ़ोन कीलॉक को अक्षम करना, और कॉल समाप्त हो जाने के बाद कीलॉक को पुन: सक्षम करना है."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"सिंक सेटिंग पढ़ें"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"एप्लिकेशन को समन्वयन सेटिंग पढ़ने देता है, जैसे लोग एप्लिकेशन के लिए समन्वयन सक्षम है या नहीं."</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"समन्वयन बंद या चालू टॉगल करें"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"एप्लिकेशन को समन्वयन सेटिंग संशोधित करने देता है, जैसे लोग एप्लिकेशन के लिए समन्वयन सक्षम है या नहीं."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"सिंक आंकड़े पढ़ें"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"एप्लिकेशन को समन्वयन आंकड़े पढ़ने देता है; उदा. हो चुके समन्वयनों का इतिहास."</string>
@@ -550,22 +560,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"एप्लिकेशन को वर्तमान में समन्वयित फ़ीड के बारे में विवरण प्राप्त करने देता है."</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"ग्राहकी-प्राप्त फ़ीड लिखें"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"एप्लिकेशन को आपके वर्तमान समन्वयित फ़ीड को संशोधित करने देता है. दुर्भावनापूर्ण एप्लिकेशन आपके समन्वयित फ़ीड को बदल सकते है."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"डिक्शनरी में आपके द्वारा जोड़े गए शब्दों को पढ़ें"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"एप्लिकेशन को ऐसे निजी शब्दों, नामों और वाक्यांशों को पढ़ने देता है जो संभवत: उपयोगकर्ता द्वारा उपयोगकर्ता डिक्शनरी में संग्रहीत किए गए हों."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"उपयोगकर्ता-निर्धारित डिक्शनरी में लिखें"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"एप्लिकेशन को उपयोगकर्ता डिक्शनरी में नए शब्द लिखने देता है."</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"अपने USB संग्रहण की सामग्री पढ़ें"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"अपने SD कार्ड की सामग्री पढ़ें"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"एप्लि. को USB संग्रहण की सामग्री पढ़ने देता है, जिसमें फ़ोटो व मीडिया हो सकते हैं."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"एप्लिकेशन को SD कार्ड की सामग्री पढ़ने देता है, जिसमें फ़ोटो और मीडिया हो सकते हैं."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"अपने USB संग्रहण की सामग्री संशोधित करें या हटाएं"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"एप्लि. को USB संग्रहण में लिखने देता है."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"एप्लिकेशन को SD कार्ड पर लिखने देता है."</string>
@@ -744,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"फ़ोन में कोई सिम कार्ड नहीं है."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"कोई सिमकार्ड डालें."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"सिम कार्ड गुम है या पढ़ने योग्य नहीं है. कोई सिम कार्ड डालें."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"अनुपयोगी SIM कार्ड."</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"आपका सिम कार्ड स्थायी रूप से अक्षम कर दिया गया है."\n" दूसरे SIM कार्ड के लिए अपने वायरलेस सेवा प्रदाता से संपर्क करें."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"पिछला ट्रैक बटन"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"अगला ट्रैक बटन"</string>
@@ -819,15 +824,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"मोहल्ला"</string>
<string name="autofill_area" msgid="3547409050889952423">"क्षेत्र"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"अमीरात"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"अपने वेब बुकमार्क और इतिहास पढ़ें"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"एप्लिकेशन को ब्राउज़र द्वारा देखे गए सभी URL, और ब्राउज़र के सभी बुकमार्क पढ़ने देता है."</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"वेब बुकमार्क और इतिहास लिखें"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"एप्लिकेशन को आपके टेबलेट में संग्रहीत ब्राउज़र इतिहास या बुकमार्क को संशोधित करने देता है. दुर्भावनापूर्ण एप्लिकेशन इसका उपयोग आपके ब्राउज़र डेटा को मिटाने या संशोधित करने के लिए कर सकते हैं."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"एप्लिकेशन को आपके फ़ोन में संग्रहीत ब्राउज़र इतिहास या बुकमार्क को संशोधित करने देता है. दुर्भावनापूर्ण एप्लिकेशन इसका उपयोग आपके ब्राउज़र डेटा को मिटाने या संशोधित करने के लिए कर सकते हैं."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"अलार्म सेट करें"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"एप्लिकेशन को इंस्टॉल किए गए अलार्म घड़ी एप्लिकेशन में अलार्म सेट करने देता है. हो सकता है कुछ अलार्म घड़ी एप्लिकेशन में यह सुविधा न हो."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"ध्वनिमेल जोड़ें"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"एप्लिकेशन को आपके ध्वनिमेल इनबॉक्स में संदेश जोड़ने देता है."</string>
@@ -1087,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"दिनांक सेट करें"</string>
<string name="date_time_set" msgid="5777075614321087758">"सेट करें"</string>
<string name="date_time_done" msgid="2507683751759308828">"पूर्ण"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"डिफ़ॉल्ट"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"नया: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"नया: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"किसी अनुमति की आवश्यकता नहीं है"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"छुपाएं"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"सभी दिखाएं"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"USB विशाल संग्रहण"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"USB कनेक्ट किया गया"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"आप USB द्वारा अपने कंप्यूटर से कनेक्ट हो चुके हैं. यदि आप अपने कंप्यूटर और Android के USB संग्रहण के बीच फ़ाइलों की प्रतिलिपि बनाना चाहते हैं तो नीचे दिया गया बटन स्पर्श करें."</string>
@@ -1320,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"भेजा जा रहा है…"</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"ब्राउज़र लॉन्च करें?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"कॉल स्वीकार करें?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index 31320fe..b1c95aa 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"Vaše poruke"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"Čitajte i pišite SMS-ove, poruke e-pošte i ostale poruke."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Vaši osobni podaci"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Izravan pristup kontaktima i kalendaru pohranjenima na tabletnom uređaju."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Izravan pristup kontaktima i kalendaru pohranjenom na telefonu."</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Izravan pristup informacijama o vama koje su pohranjene na vašoj posjetnici."</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Informacije o vašoj društvenoj aktivnosti"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Izravan pristup informacijama o kontaktima i društvenim vezama."</string>
<string name="permgrouplab_location" msgid="635149742436692049">"Vaša lokacija"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"Pratite svoju fizičku lokaciju."</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"Mrežna komunikacija"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"Pristupajte raznim značajkama mreže."</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Postavke zvuka"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Promjena postavki zvuka."</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Utječe na bateriju"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Upotreba značajki koje brzo prazne bateriju."</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"Kalendar"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Izravan pristup kalendaru i događajima."</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Oznake i povijest"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Izravan pristup oznakama i povijest preglednika."</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Alarm"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Postavljanje alarma na budilici."</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Govorna pošta"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Izravan pristup govornoj pošti."</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"Mikrofon"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Izravan pristup mikrofonu za snimanje zvuka."</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"Fotoaparat"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"Izravan pristup fotoaparatu za slikanje ili snimanje videozapisa."</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Informacije o vašoj aplikaciji"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Sposobnost da utječu na postupanje drugih aplikacija na vašem uređaju."</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Pozadinska slika"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Promjena postavki pozadinske slike na uređaju."</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"Sat"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Promjena vremena ili vremenske zone uređaja."</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Traka statusa"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Promijenite postavke statusne trake uređaja."</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Postavke sinkronizacije"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Pristup postavkama sinkronizacije."</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"Vaši računi"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"Pristup dostupnim računima."</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Hardverske kontrole"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Niskorazinski pristup i nadzor nad sustavom."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Razvojni alati"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Značajke potrebne samo za razvojne programere aplikacija."</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"Korisničko sučelje druge aplikacije"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"Utjecaj na korisničko sučelje drugih aplikacija."</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"Prostor za pohranu"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Pristupi memoriji USB."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Pristup SD kartici."</string>
@@ -193,14 +238,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"Aplikaciji omogućuje da bude traka statusa."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"proširivanje/sažimanje trake statusa"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Omogućuje aplikaciji proširivanje ili sažimanje trake statusa."</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"preusmjeravanje odlaznih poziva"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Omogućuje aplikaciji obradu odlaznih poziva i promjenu broja za biranje. Zlonamjerne aplikacije mogu nadzirati, preusmjeravati ili sprječavati odlazne pozive."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"primanje tekstnih poruka (SMS)"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"Omogućuje aplikaciji primanje i obradu SMS poruka. Zlonamjerne aplikacije mogu nadzirati vaše poruke ili ih brisati, a da vam ih ne pokažu."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"primanje tekstnih poruka (MMS)"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"Omogućuje aplikaciji primanje i obradu MMS poruka. Zlonamjerne aplikacije mogu nadzirati vaše poruke ili ih brisati, a da vam ih ne pokažu."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"primanje hitnih odašiljanja"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Omogućuje aplikaciji primanje i obradu poruka hitnih odašiljanja. Ta je dozvola dostupna samo aplikacijama sustava."</string>
@@ -210,16 +252,13 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"Omogućuje aplikaciji slanje SMS poruka. Zlonamjerne aplikacije mogu vam prouzročiti troškove šaljući poruke bez vašeg znanja."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"slanje SMS poruka bez potvrde"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Omogućuje aplikaciji slanje SMS poruka. Zlonamjerne aplikacije mogu vam prouzročiti troškove šaljući poruke bez vašeg znanja."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"čitanje tekstnih poruka (SMS ili MMS)"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Omogućuje aplikaciji čitanje SMS poruka pohranjenih na tabletnom računalu ili SIM kartici. Zlonamjerne aplikacije mogu čitati vaše povjerljive poruke."</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Omogućuje aplikaciji čitanje SMS poruka pohranjenih na telefonu ili SIM kartici. Zlonamjerne aplikacije mogu čitati vaše povjerljive poruke."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"uređivanje tekstnih poruka (SMS ili MMS)"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Omogućuje aplikaciji pisanje u SMS poruke pohranjene na vašem tabletnom računalu ili SIM kartici. Zlonamjerne aplikacije mogu izbrisati vaše poruke."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Omogućuje aplikaciji pisanje u SMS poruke pohranjene na telefonu ili SIM kartici. Zlonamjerne aplikacije mogu izbrisati vaše poruke."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"primanje tekstnih poruka (WAP)"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Omogućuje aplikaciji primanje i obradu WAP poruka. Zlonamjerne aplikacije mogu nadzirati vaše poruke ili ih brisati, a da vam ih ne pokažu."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"dohvaćanje pokrenutih aplikacija"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"Omogućuje aplikaciji dohvaćanje informacija o trenutačno i nedavno pokrenutim zadacima. Zlonamjerne aplikacije mogu otkriti privatne informacije o drugim aplikacijama."</string>
@@ -235,13 +274,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Aplikaciji omogućuje upravljanje načinom kompatibilnosti aplikacija sa zaslonom. Zlonamjerne aplikacije mogu prekinuti takvo ponašanje ostalih aplikacija."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"omogućavanje rješavanja programskih pogrešaka u aplikaciji"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"Omogućuje aplikaciji uključivanje uklanjanja programskih pogrešaka za drugu aplikaciju. Zlonamjerne aplikacije mogu na taj način ukloniti druge aplikacije."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"promjena postavki prikaza sustava"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Aplikaciji omogućuje promjenu trenutačne konfiguracije kao što je oznaka zemlje/jezika ili opća veličina fonta."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"omogućavanje načina rada za automobil"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"Aplikaciji omogućuje uključivanje načina rada u vožnji."</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"zatvaranje ostalih aplikacija"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Omogućuje aplikaciji prekidanje pozadinskih procesa drugih aplikacija, čak i ako ima dovoljno memorije."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"prisilno zaustavljanje ostalih aplikacija"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Aplikaciji omogućuje prisilno zaustavljanje drugih aplikacija."</string>
@@ -265,8 +302,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Omogućuje aplikaciji emitiranje obavijesti da je primljena WAP PUSH poruka. Zlonamjerne aplikacije mogu to upotrijebiti da bi krivotvorile prijem MMS poruka ili da bi potajno zamijenile sadržaj bilo koje web-stranice zlonamjernim varijantama."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"ograničavanje broja pokrenutih postupaka"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Omogućuje aplikaciji upravljanje maksimalnim brojem postupaka koji će biti pokrenuti. Nikada nije potrebno za uobičajene aplikacije."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"prisilno zatvaranje pozadinskih aplikacija"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Omogućuje aplikaciji da upravlja time hoće li radnje uvijek prekinuti s radom čim odu u pozadinu. Nikada nije potrebno za normalne aplikacije."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"izmjena statistike o bateriji"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"Omogućuje aplikaciji promjenu prikupljene statistike o potrošnji baterije. Nije namijenjena uobičajenim aplikacijama."</string>
@@ -276,8 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Omogućuje aplikaciji pokretanje korisničkog sučelja za potvrdu potpune sigurnosne kopije. Aplikacije ne bi trebale upotrebljavati tu opciju."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"prikaz neovlaštenih prozora"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Omogućuje aplikaciji stvaranje prozora koje bi trebalo upotrebljavati korisničko sučelje internog sustava. Nije namijenjeno uobičajenim aplikacijama."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"crtanje preko drugih aplikacija"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Aplikaciji omogućuje prikaz prozora za sistemska upozorenja. Zlonamjerne aplikacije mogu preuzeti cijeli zaslon."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"izmjena globalne brzine animacije"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"U bilo kojem trenutku aplikaciji omogućuje promjenu globalne brzine animacija (brža ili sporija animacija)."</string>
@@ -339,26 +374,22 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Aplikaciji omogućuje da odobri ili odbije određena dopuštenja za sebe ili druge aplikacije. Zlonamjerne aplikacije to mogu upotrijebiti za pristup značajkama za koje im niste odobrili pristup."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"postavljanje željenih aplikacija"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Omogućuje aplikaciji promjenu vaših željenih aplikacija. Zlonamjerne aplikacije mogu potajno promijeniti aplikacije koje su pokrenute, zavaravajući vaše postojeće aplikacije kako bi prikupljale privatne podatke od vas."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"izmjena postavki sustava"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"Omogućuje aplikaciji izmjenu podataka postavki sustava. Zlonamjerne aplikacije mogu oštetiti konfiguraciju sustava."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"izmjena postavki sigurnosti sustava"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Omogućuje aplikaciji izmjenu podataka sigurnosnih postavki sustava. Nije namijenjena uobičajenim aplikacijama."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"izmjena karte Google usluga"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"Aplikaciji omogućuje izmjenu karte Googleovih usluga. Nije namijenjena uobičajenim aplikacijama."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"izvršavanje pri pokretanju"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Omogućuje aplikaciji da se sama pokrene čim sustav završi s pokretanjem. To može produljiti pokretanje tabletnog računala i omogućiti aplikaciji da općenito uspori tabletno računalo svojim neprekidnim izvršavanjem."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Omogućuje aplikaciji da se sama pokrene čim sustav završi s pokretanjem. To može produljiti pokretanje telefona i omogućiti aplikaciji da općenito uspori telefon svojim neprekidnim izvršavanjem."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"slanje privlačnih prijenosa"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Omogućuje aplikaciji slanje \"ljepljivih\" emitiranja, koja se zadržavaju nakon što emitiranje završi. Zlonamjerne aplikacije mogu usporiti tabletno računalo ili ga učiniti nestabilnim uzrokujući pretjeranu upotrebu memorije."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Omogućuje aplikaciji slanje \"ljepljivih\" emitiranja, koja se zadržavaju nakon što emitiranje završi. Zlonamjerne aplikacije mogu usporiti telefon ili ga učiniti nestabilnim uzrokujući pretjeranu upotrebu memorije."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
+ <string name="permlab_readContacts" msgid="8348481131899886131">"čitanje kontakata"</string>
<string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Omogućuje aplikaciji čitanje svih podataka o vašim kontaktima pohranjenim na vašem tabletnom računalu, uključujući i učestalost kojom određene pojedince nazivate, šaljete im e-poruke ili komunicirate s njima na druge načine. To pomaže pri automatskom dovršavanju e-adresa i s ostalim prigodnim značajkama. Zlonamjerne aplikacije mogu upotrijebiti to dopuštenje kako bi vaše podatke za kontakt slale drugim osobama."</string>
<string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Omogućuje aplikaciji čitanje svih podataka o vašim kontaktima pohranjenim na vašem telefonu, uključujući i učestalost kojom određene pojedince nazivate, šaljete im e-poruke ili komunicirate s njima na druge načine. To pomaže pri automatskom dovršavanju e-adresa i s ostalim prigodnim značajkama. Zlonamjerne aplikacije mogu upotrijebiti to dopuštenje kako bi vaše podatke za kontakt slale drugim osobama."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"izmjena kontakata"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Omogućuje aplikaciji izmjenu podataka o vašim kontaktima pohranjenim na vašem tabletnom računalu, uključujući i učestalost kojom određene pojedince nazivate, šaljete im e-poruke ili komunicirate s njima na druge načine. To pomaže pri automatskom dovršavanju e-adresa i s ostalim prigodnim značajkama. Zlonamjerne aplikacije mogu upotrijebiti to dopuštenje kako bi vaše podatke za kontakt izbrisale ili izmijenile."</string>
<string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Omogućuje aplikaciji izmjenu podataka o vašim kontaktima pohranjenim na vašem telefonu, uključujući i učestalost kojom određene pojedince nazivate, šaljete im e-poruke ili komunicirate s njima na druge načine. To pomaže pri automatskom dovršavanju adresa e-pošte i s ostalim prigodnim značajkama. Zlonamjerne aplikacije mogu upotrijebiti to dopuštenje kako bi vaše podatke za kontakt izbrisale ili izmijenile."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"čitanje dnevnika poziva"</string>
@@ -367,11 +398,9 @@
<string name="permlab_writeCallLog" msgid="8552045664743499354">"pisanje u dnevnik poziva"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Aplikaciji omogućuje izmjenu dnevnika poziva vašeg tabletnog računala zajedno s podacima o dolaznim i odlaznim pozivima. Zlonamjerne aplikacije to mogu upotrebljavati za brisanje ili izmjenu vašeg dnevnika poziva."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Aplikaciji omogućuje izmjenu dnevnika poziva vašeg telefona zajedno s podacima o dolaznim i odlaznim pozivima. Zlonamjerne aplikacije to mogu upotrebljavati za brisanje ili izmjenu vašeg dnevnika poziva."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"čitanje vaše kontaktne kartice"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Omogućuje aplikaciji čitanje osobnih podataka profila pohranjenih na uređaju, kao što su vaše ime ili kontaktni podaci. To znači da vas aplikacija može identificirati i slati informacije s vašeg profila drugima."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"izmjena vaše kontaktne kartice"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Omogućuje aplikaciji promjenu ili dodavanje osobnih podataka profila pohranjenih na uređaju, kao što su vaše ime i kontaktni podaci. To znači da vas druge aplikacije mogu identificirati i slati informacije s vašeg profila drugima."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"čitanje društvenog streama"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Aplikaciji omogućuje pristup vašim ažuriranjima na društvenim mrežama ili ažuriranjima vaših prijatelja na društvenim mrežama i sinkronizaciju tih ažuriranja. Zlonamjerne aplikacije mogu to upotrijebiti za čitanje privatne komunikacije između vas i vaših prijatelja na društvenim mrežama."</string>
@@ -412,15 +441,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"prisilno ponovno pokretanje telefona"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Aplikaciji omogućuje prisilno ponovno pokretanje tabletnog računala."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Aplikaciji omogućuje prisilno ponovno pokretanje telefona."</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"pristupanje dat. sustavu USB-a"</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"pristupanje datotečnom sustavu SD kartice"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Aplikaciji omogućuje instaliranje i deinstaliranje datotečnih sustava za prijenosnu pohranu."</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"brisanje USB pohrane"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"brisanje SD kartice"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Aplikaciji omogućuje formatiranje prijenosnog medija za pohranu."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"dohvati informacije o unutarnjoj pohrani"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"Aplikaciji omogućuje dohvaćanje informacija o internoj pohrani."</string>
@@ -432,8 +457,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Aplikaciji omogućuje uključivanje/isključivanje interne pohrane."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"preimenuj unutarnju pohranu"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"Aplikaciji omogućuje preimenovanje interne pohrane."</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"upravljanje vibracijom"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"Aplikaciji omogućuje nadzor nad vibratorom."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"nadzor bljeskalice"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"Aplikaciji omogućuje upravljanje bljeskalicom."</string>
@@ -458,8 +482,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"Omogućuje aplikaciji da obavijesti sustav koje widgete može upotrebljavati koja aplikacija. Aplikacija s tom dozvolom može drugim aplikacijama dati pristup osobnim podacima. Nije namijenjena uobičajenim aplikacijama."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"promjena stanja telefona"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Omogućuje aplikaciji upravljanje telefonskim značajkama uređaja. Aplikacija s tom dozvolom može izmjenjivati mreže, uključiti i isključiti radiouređaj telefona i tome slično, a da vas o tome uopće ne obavijesti."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"čitanje statusa i identiteta telefona"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"Omogućuje aplikaciji pristup telefonskim značajkama uređaja. Aplikacija s tom dozvolom može utvrditi telefonski broj i serijski broj ovog telefona, je li poziv aktivan, broj kojem je upućen poziv i slično."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"spriječi mirovanje tabletnog uređaja"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"sprečava telefon da prijeđe u stanje mirovanja"</string>
@@ -474,8 +497,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Pokrenite kao niskorazinski proizvođački test, uz omogućavanje potpunog pristupa telefonskom hardveru. Dostupno je samo ako telefon radi u proizvođačkom testnom načinu rada."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"postavi pozadinsku sliku"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"Aplikaciji omogućuje postavljanje pozadinskih slika sustava."</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"prilagođavanje veličine pozadinske slike"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Aplikaciji omogućuje postavljanje savjeta za veličinu sistemske pozadinske slike."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"poništavanje sustava na tvornički zadane postavke"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"Omogućuje aplikaciji potpuno vraćanje sustava na tvorničke postavke čime se brišu svi podaci, konfiguracija i instalirane aplikacije."</string>
@@ -487,21 +509,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Aplikaciji omogućuje promjenu vremenske zone na telefonu."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"ima ulogu Usluge voditelja računa"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"Aplikaciji omogućuje pozivanje ovjerovitelja računa AccountAuthenticators."</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"pronalaženje računa na uređaju"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Aplikaciji omogućuje dobivanje popisa računa koji su poznati tabletnom računalu."</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Aplikaciji omogućuje dobivanje popisa računa koji su poznati telefonu."</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"stvaranje računa i postavljenje zaporki"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Aplikaciji omogućuje upotrebu mogućnosti AccountManagera za autentifikaciju računa, uključujući stvaranje računa te dobivanje i postavljanje njihovih zaporki."</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"dodavanje ili uklanjanje računa"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"Aplikaciji omogućuje obavljanje operacija kao što su dodavanje i uklanjanje računa i brisanje zaporke."</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"upotreba računa na uređaju"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"Aplikaciji omogućuje traženje oznaka za autentifikaciju."</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"prikaz mrežnih veza"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"Aplikaciji omogućuje prikaz stanja svih mreža."</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"potpun internetski pristup"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Aplikaciji omogućuje stvaranje mrežnih utičnica."</string>
@@ -513,36 +530,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"Aplikaciji omogućuje promjenu stanja modemskog mrežnog povezivanja."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"promjena postavke upotrebe pozadinskih podataka"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Aplikaciji omogućuje promjenu postavke za upotrebu pozadinskih podataka."</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"prikaz Wi-Fi veza"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"Aplikaciji omogućuje prikaz informacija o stanju WiFi mreže."</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"uspostavljanje i prekidanje veze s Wi-Fi mrežom"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"Aplikaciji omogućuje povezivanje na pristupne točke WiFi mreže i prekid te veze te promjene u konfiguriranim WiFi mrežama."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"omogući višenamjenski Wi-Fi prijem"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Aplikaciji omogućuje primanje paketa koji nisu poslani izravno vašem uređaju. To može biti korisno kada se otkrivaju usluge u blizini. Troši se više energije nego u načinu rada koji ne podržava dostavu na više uređaja."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"pristupanje postavkama Bluetootha"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Aplikaciji omogućuje konfiguraciju lokalnog tabletnog računala s Bluetoothom te otkrivanje i uparivanje s udaljenim uređajima."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Aplikaciji omogućuje konfiguraciju lokalnog Bluetooth telefona i otkrivanje i uparivanje s udaljenim uređajima."</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Prikaz WiMAX veza"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Omogućuje aplikaciji prikaz informacija o stanju WiMAX mreže."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"Promjena stanja WiMAX mreže"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Aplikaciji omogućuje povezivanje s WiMAX mrežom i prekidanje veze."</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"uparivanje s Bluetooth uređajima"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Aplikaciji omogućuje pregled konfiguracije lokalnog Bluetooth tabletnog računala i uspostavljanje i prihvaćanje veza s uparenim uređajima."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Aplikaciji omogućuje pregled konfiguracije lokalnog Bluetooth telefona te uspostavljanje i prihvaćanje veza s uparenim uređajima."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"upravljaj beskontaktnom (NFC) komunikacijom"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Aplikaciji omogućuje komunikaciju s oznakama, karticama i čitačima komunikacije kratkog dometa (NFC)."</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"onemogućavanje zaključavanja zaslona"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Aplikaciji omogućuje onemogućavanje zaključavanja tipkovnice i svih pripadajućih sigurnosnih zaporki. Dobar primjer toga onemogućavanja jest zaključavanje tipkovnice kod primanja dolaznog telefonskog poziva, nakon kojeg se zaključavanje tipkovnice ponovo omogućuje."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"čitanje postavki sinkronizacije"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Aplikaciji omogućuje čitanje postavki sinkronizacije, na primjer, je li sinkronizacija omogućena za aplikaciju Osobe."</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"uključivanje/isključivanje sinkronizacije"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Aplikaciji omogućuje izmjenu postavki sinkronizacije, kao što je opcija omogućavanja sinkronizacije aplikacije Osobe."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"čitanje statistike o sinkronizaciji"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"Aplikaciji omogućuje čitanje statistika sinkronizacije, primjerice povijesti izvršenih sinkronizacija."</string>
@@ -550,22 +560,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Aplikaciji omogućuje dohvaćanje detalja o trenutačno sinkroniziranim feedovima."</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"pisanje pretplaćenih feedova"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Omogućuje aplikaciji promjenu vaših trenutačno sinkroniziranih feedova. Zlonamjerne aplikacije mogu promijeniti vaše sinkronizirane feedove."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"čitanje pojmova koje ste dodali u rječnik"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Aplikaciji omogućuje čitanje svih privatnih riječi, imena i izraza koje je korisnik pohranio u korisničkom rječniku."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"pisanje u korisnički definiran rječnik"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Aplikaciji omogućuje pisanje novih riječi u korisnički rječnik."</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"čitanje sadržaja USB pohrane"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"čitanje sadržaja SD kartice"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Omogućuje aplikaciji čitanje sadržaja USB pohrane, koji mogu uključivati fotografije i medije."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Omogućuje aplikaciji čitanje sadržaja SD kartice, koji mogu uključivati fotografije i medije."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"izmjena/brisanje sadrž. USB-a"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Dopušta pisanje u USB pohranu."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Aplikaciji omogućuje pisanje na SD karticu."</string>
@@ -744,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"U telefonu nema SIM kartice."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Umetnite SIM karticu."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM kartica nedostaje ili nije čitljiva. Umetnite SIM karticu."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"Neupotrebljiva SIM kartica."</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Vaša SIM kartica trajno je onemogućena."\n" Obratite se svom pružatelju bežičnih usluga da biste dobili drugu SIM karticu."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Gumb Prethodni zapis"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Gumb Sljedeći zapis"</string>
@@ -819,15 +824,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"Župa"</string>
<string name="autofill_area" msgid="3547409050889952423">"Područje"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"Emirat"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"čitanje web-oznaka i povijesti"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Aplikaciji omogućuje čitanje svih URL-ova koje je preglednik posjetio i svih oznaka preglednika."</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"pisanje web-oznaka i povijesti"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Omogućuje aplikaciji promjenu povijesti ili oznaka preglednika pohranjenih na vašem tabletnom računalu. Zlonamjerne aplikacije mogu to upotrijebiti za brisanje ili promjenu podataka u vašem pregledniku."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Omogućuje aplikaciji promjenu preglednikove povijesti ili oznaka pohranjenih na vašem telefonu. Zlonamjerne aplikacije mogu to upotrijebiti za brisanje ili promjenu podataka na vašem pregledniku."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"postavljanje alarma"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"Omogućuje aplikaciji postavljanje alarma na instaliranoj aplikaciji budilici. Neke aplikacije budilice možda neće primijeniti tu značajku."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"dodaj govornu poštu"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"Omogućuje aplikaciji da doda poruke u vašu govornu poštu."</string>
@@ -1087,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Postavi datum"</string>
<string name="date_time_set" msgid="5777075614321087758">"Postavi"</string>
<string name="date_time_done" msgid="2507683751759308828">"Gotovo"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"Zadano"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NOVO: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NOVO: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"Nije potrebno dopuštenje"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"Sakrij"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"Pokaži sve"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"USB masovna pohrana"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"USB povezan"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"Povezali ste se s računalom putem USB-a. Dodirnite gumb u nastavku ako želite kopirati datoteke između računala i USB pohrane uređaja Android."</string>
@@ -1320,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"Slanje..."</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"Pokrenuti preglednik?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"Prihvatiti poziv?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index 94edb65..89aedcc 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"Saját üzenetek"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"SMS-ek, e-mailek és egyéb üzenetek olvasása és írása."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Az Ön személyes adatai"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Közvetlen hozzáférés a táblagépen tárolt névjegyekhez és naptárhoz."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Közvetlen hozzáférés a telefonon tárolt névjegyekhez és naptárhoz."</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Közvetlen hozzáférés a névjegykártyán tárolt információkhoz"</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Az Ön közösségi adatai"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Közvetlen hozzáférés a névjegyekre és közösségi kapcsolatokra vonatkozó információkhoz"</string>
<string name="permgrouplab_location" msgid="635149742436692049">"Tartózkodási hely"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"Tartózkodási hely figyelése."</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"Hálózati kommunikáció"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"Hozzáférés különböző hálózati funkciókhoz."</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Hangbeállítások"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Hangbeállítások módosítása"</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Hozzáférés az akkumulátor teljesítményéhez"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Olyan funkciók használata, amelyek gyorsan lemerítik az akkumulátort."</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"Naptár"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Közvetlen hozzáférés a naptárhoz és az eseményekhez"</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Könyvjelzők és előzmények"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Közvetlen hozzáférés a könyvjelzőkhöz és a böngészési előzményekhez"</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Ébresztő"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Ébresztőóra beállítása"</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Hangposta"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Közvetlen hozzáférés a hangpostához"</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"Mikrofon"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Közvetlen hozzáférés a mikrofonhoz hangrögzítés céljából"</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"Fényképezőgép"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"Közvetlen hozzáférés a fényképezőgéphez kép vagy videó rögzítése céljából"</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Az Ön alkalmazásainak információi"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Képes az eszközön a többi alkalmazás viselkedését befolyásolni."</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Háttérkép"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Az eszköz háttérkép-beállításainak módosítása"</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"Óra"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Az eszközön jelzett idő vagy időzóna módosítása"</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Állapotsor"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Az eszköz állapotsor-beállításainak módosítása"</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Szinkronizálási beállítások"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Hozzáférés a szinkronizálási beállításokhoz"</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"Az Ön fiókjai"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"Hozzáférés az elérhető fiókokhoz."</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Hardver vezérlése"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Alacsony szintű hozzáférés és a rendszer vezérlése."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Fejlesztői eszközök"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Csak az alkalmazásfejlesztők számára fontos funkciók."</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"Egyéb alkalmazások kezelőfelülete"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"Hozzáférés más alkalmazások kezelőfelületéhez"</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"Tárhely"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Az USB-tár elérése."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Az SD-kártya elérése."</string>
@@ -193,14 +238,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"Lehetővé teszi az alkalmazás számára, hogy az állapotsoron legyen."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"állapotsáv részletes- és listanézete"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Lehetővé teszi az alkalmazás számára, hogy váltson az állapotsor részletes és listanézete között."</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"kimenő hívások átirányítása"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Lehetővé teszi az alkalmazás számára a kimenő hívások kezdeményezését és a tárcsázandó szám módosítását. Rosszindulatú alkalmazások felügyelhetik, átirányíthatják vagy megakadályozhatják a kimenő hívásokat."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"szöveges üzenetek (SMS) fogadása"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"Lehetővé teszi az alkalmazás számára, hogy SMS-eet fogadjon és dolgozzon fel. A rosszindulatú alkalmazások megfigyelhetik vagy törölhetik az üzeneteket anélkül, hogy Ön látná azokat."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"szöveges üzenetek (MMS) fogadása"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"Lehetővé teszi az alkalmazás számára, hogy MMS-eket fogadjon és dolgozzon fel. A rosszindulatú alkalmazások megfigyelhetik vagy törölhetik az üzeneteket anélkül, hogy Ön látná azokat."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"vészhelyzeti közlemények fogadása"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Lehetővé teszi az alkalmazás számára vészhelyzeti üzenetek fogadását és feldolgozását. Ez az engedély csak rendszeralkalmazások számára érhető el."</string>
@@ -210,16 +252,13 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"Lehetővé teszi az alkalmazás számára SMS üzeneteket küldését. A rosszindulatú alkalmazások pénzbe kerülő üzeneteket küldhetnek az Ön jóváhagyása nélkül."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"SMS üzenetek küldése megerősítés nélkül"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Lehetővé teszi az alkalmazás számára SMS üzeneteket küldését. A rosszindulatú alkalmazások pénzbe kerülő üzeneteket küldhetnek az Ön jóváhagyása nélkül."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"szöveges üzenetek (SMS vagy MMS) olvasása"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Lehetővé teszi az alkalmazás számára, hogy olvassa a táblagépen vagy a SIM kártyán lévő SMS-eket. A rosszindulatú alkalmazások elolvashatják a bizalmas üzeneteket."</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Lehetővé teszi az alkalmazás számára, hogy olvassa a táblagépen vagy a SIM kártyán lévő SMS-eket. A rosszindulatú alkalmazások elolvashatják a bizalmas üzeneteket."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"szöveges üzenetek (SMS vagy MMS) szerkesztése"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Lehetővé teszi az alkalmazás számára, hogy írjon a táblagépen vagy a SIM kártyán lévő SMS-ekbe. A rosszindulatú alkalmazások törölhetik az üzeneteket."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Lehetővé teszi az alkalmazás számára, hogy írjon a telefonon vagy a SIM kártyán lévő SMS-ekbe. A rosszindulatú alkalmazások törölhetik az üzeneteket."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"szöveges üzenetek (WAP) fogadása"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Lehetővé teszi az alkalmazás számára, hogy WAP üzeneteket fogadjon és dolgozzon fel. A rosszindulatú alkalmazások megfigyelhetik vagy törölhetik az üzeneteket anélkül, hogy Ön látná azokat."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"futó alkalmazások lekérése"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"Lehetővé teszi az alkalmazás számára a jelenleg és a nemrég futó feladatok adatainak lekérését. A rosszindulatú alkalmazások privát adatokhoz juthatnak más alkalmazásokról."</string>
@@ -235,13 +274,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Lehetővé teszi, hogy az alkalmazás szabályozza az egyéb alkalmazások képernyő-kompatibilitási módját. A kártékony alkalmazások megzavarhatják a többi alkalmazás viselkedését."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"alkalmazások hibakeresésének bekapcsolása"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"Lehetővé teszi az alkalmazás számára, hogy hibakeresést végezzen egy másik alkalmazáson. A rosszindulatú alkalmazások ezzel leállíthatnak más alkalmazásokat."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"rendszer megjelenítési beállításainak módosítása"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Lehetővé teszi az alkalmazás számára a jelenlegi konfiguráció, így például a nyelv- és országkód vagy az általános betűméret módosítását."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"gépkocsi üzemmód bekapcsolása"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"Lehetővé teszi az alkalmazás számára a gépkocsi üzemmód bekapcsolását."</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"más alkalmazások bezárása"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Lehetővé teszi az alkalmazás számára más alkalmazások háttérben futó folyamatainak leállítását akkor is, ha a memória nem alacsony."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"más alkalmazások kényszerített leállítása"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Lehetővé teszi az alkalmazás számára, hogy kényszerrel leállítson más alkalmazásokat."</string>
@@ -265,8 +302,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Lehetővé teszi az alkalmazás számára értesítés küldését WAP PUSH üzenet érkezése esetén. A rosszindulatú alkalmazások arra használhatják ezt, hogy MMS-kézbesítési jelentést hamisítsanak, vagy hogy a háttérben rosszindulatú variánssal cseréljék le bármelyik weboldal tartalmát."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"futó folyamatok számának korlátozása"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Lehetővé teszi az alkalmazás számára a futtatható folyamatok maximális számának vezérlését. Soha nem lehet rá szüksége a normál alkalmazásoknak."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"háttéralkalmazások leállításának kényszerítése"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Lehetővé teszi az alkalmazás számára annak vezérlését, hogy a tevékenységek mindig befejeződjenek-e, amint a háttérbe kerülnek. A normál alkalmazások soha nem használják ezt."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"akkumulátorstatisztikák módosítása"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"Lehetővé teszi az alkalmazás számára az összegyűjtött akkumulátorhasználati statisztikák módosítását. Normál alkalmazások nem használhatják."</string>
@@ -276,8 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Lehetővé teszi, hogy az alkalmazás elindítsa a teljes biztonsági mentést megerősítő kezelőfelületet. Nem használható egyetlen alkalmazás által sem."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"azonosítatlan ablakok megjelenítése"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Lehetővé teszi az alkalmazás számára olyan ablakok létrehozását, amelyek a belső rendszer felhasználói felületét kívánják használni. Normál alkalmazások nem használhatják."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"ráhúzás más alkalmazásokra"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Lehetővé teszi az alkalmazás számára a rendszerriasztás-ablakok megjelenítését. A rosszindulatú alkalmazások elfoglalhatják a teljes képernyőt."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"animáció általános sebességének módosítása"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Lehetővé teszi az alkalmazás számára, hogy bármikor globálisan módosítsa az animációk sebességét (gyorsabb vagy lassabb animációk)."</string>
@@ -339,26 +374,22 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Lehetővé teszi, hogy egy alkalmazás engedélyeket adjon vagy vonjon vissza saját maga vagy más alkalmazás számára. A rosszindulatú alkalmazások olyan funkciókhoz való hozzáféréshez használhatják ezt, amelyeket nem engedélyezett számukra."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"előnyben részesített alkalmazások beállítása"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Lehetővé teszi az alkalmazás számára a preferált alkalmazások módosítását. A rosszindulatú alkalmazások ezáltal észrevétlenül megváltoztathatják a futó alkalmazásokat, személyes adatokat gyűjtve Öntől."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"rendszerbeállítások módosítása"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"Lehetővé teszi az alkalmazás számára a rendszer beállítási adatainak módosítását. A rosszindulatú alkalmazások tönkretehetik a rendszer konfigurációját."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"rendszer biztonsági beállításainak módosítása"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Lehetővé teszi az alkalmazás számára, hogy módosítsa a rendszer biztonsági beállításainak adatait. Normál alkalmazások nem használhatják."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"Google-szolgáltatások térképének módosítása"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"Lehetővé teszi az alkalmazás számára, hogy módosítsa a Google-szolgáltatások térképét. Normál alkalmazások nem használhatják."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"futtatás indításkor"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Lehetővé teszi az alkalmazás számára, hogy elindítsa magát a rendszerindítás befejezése után. Ez meghosszabbíthatja a táblagép elindításának idejét, az állandó futás miatt pedig lelassíthatja a táblagépet."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Lehetővé teszi az alkalmazás számára, hogy elindítsa magát a rendszerindítás befejezése után. Ez meghosszabbíthatja a telefon elindításának idejét, az állandó futás miatt pedig lelassíthatja a telefont."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"ragadós üzenet küldése"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Lehetővé teszi az alkalmazás számára a ragadós üzenetek küldését, amelyek a sugárzás után is megmaradnak. A rosszindulatú alkalmazások lelassíthatják vagy instabillá tehetik a táblagépet a túlzott memóriahasználattal."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Lehetővé teszi az alkalmazás számára ragadós üzenetek küldését, amelyek a sugárzás után is megmaradnak. A rosszindulatú alkalmazások lelassíthatják vagy instabillá tehetik a táblagépet a túlzott memóriahasználattal."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
+ <string name="permlab_readContacts" msgid="8348481131899886131">"saját névjegyek olvasása"</string>
<string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Lehetővé teszi az alkalmazás számára a táblagépen tárolt névjegyekre vonatkozó összes adat -- például az egyes személyekkel telefonon, e-mailben vagy más módon folytatott kommunikáció gyakoriságára vonatkozó adatok -- olvasását. Ez segítséget nyújt az e-mail címek automatikus kiegészítéséhez és az egyéb kényelmi funkciók működéséhez. A rosszindulatú alkalmazások ezt az engedélyt arra használhatják, hogy névjegyeit elküldjék más személyeknek."</string>
<string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Lehetővé teszi az alkalmazás számára a telefonon tárolt névjegyekre vonatkozó összes adat -- például az egyes személyekkel telefonon, e-mailben vagy más módon folytatott kommunikáció gyakoriságára vonatkozó adatok -- olvasását. Ez segítséget nyújt az e-mail címek automatikus kiegészítéséhez és az egyéb kényelmi funkciók működéséhez. A rosszindulatú alkalmazások ezt az engedélyt arra használhatják, hogy névjegyeit elküldjék más személyeknek."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"kapcsolatok módosítása"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Lehetővé teszi az alkalmazás számára a táblagépen tárolt névjegyekre vonatkozó adatok -- például az egyes személyekkel telefonon, e-mailben vagy más módon folytatott kommunikáció gyakoriságára vonatkozó adatok -- módosítását. Ez segítséget nyújt az e-mail címek automatikus kiegészítéséhez és az egyéb kényelmi funkciók működéséhez. A rosszindulatú alkalmazások ezt az engedélyt arra használhatják, hogy módosítsák vagy töröljék névjegyeinek adatait."</string>
<string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Lehetővé teszi az alkalmazás számára a telefonon tárolt névjegyekre vonatkozó adatok -- például az egyes személyekkel telefonon, e-mailben vagy más módon folytatott kommunikáció gyakoriságára vonatkozó adatok -- módosítását. Ez segítséget nyújt az e-mail címek automatikus kiegészítéséhez és az egyéb kényelmi funkciók működéséhez. A rosszindulatú alkalmazások ezt az engedélyt arra használhatják, hogy módosítsák vagy töröljék névjegyeinek adatait."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"Híváslista beolvasása"</string>
@@ -367,11 +398,9 @@
<string name="permlab_writeCallLog" msgid="8552045664743499354">"Híváslista készítése"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Lehetővé teszi, hogy az alkalmazás módosítsa a táblagép híváslistáját, beleértve a bejövő és kimenő hívások adatait is. A rosszindulatú alkalmazások ezt arra használhatják, hogy híváslistáját töröljék vagy módosítsák."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Lehetővé teszi, hogy az alkalmazás módosítsa a telefon híváslistáját, beleértve a bejövő és kimenő hívások adatait is. A rosszindulatú alkalmazások ezt arra használhatják, hogy híváslistáját töröljék vagy módosítsák."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"saját névjegykártya olvasása"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Lehetővé teszi az alkalmazás számára a készüléken tárolt személyes profiladatok, például a név és elérhetőség olvasását. Ez azt jelenti, hogy más alkalmazások is azonosíthatják Önt, és elküldhetik másoknak a profiladatait."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"saját névjegykártya módosítása"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Lehetővé teszi az alkalmazás számára a készüléken tárolt személyes profiladatok, például a név és elérhetőség módosítását vagy hozzáadását. Ez azt jelenti, hogy más alkalmazások is azonosíthatják Önt, és elküldhetik másoknak a profiladatait."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"közösségi adatfolyam olvasása"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Lehetővé teszi az alkalmazás számára, hogy hozzáférjen közösségi frissítéseihez, és szinkronizálja azokat. Rosszindulatú alkalmazások arra használhatják ezt, hogy hozzáférjenek barátaival történő magánbeszélgetéseihez a közösségi hálózatokon."</string>
@@ -412,15 +441,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"telefon újraindításának kikényszerítése"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Lehetővé teszi az alkalmazások számára, hogy újraindítsák a táblagépet."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Lehetővé teszi az alkalmazás számára a telefon kényszerített újraindítását."</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"hozzáférés az USB-háttértárhoz"</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"hozzáférés az SD-kártyához"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Lehetővé teszi az alkalmazás számára a külső adathordozók fájlrendszereinek csatlakoztatását és leválasztását."</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"USB-háttértár törlése"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"SD-kártya törlése"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Lehetővé teszi az alkalmazás számára a cserélhető tárhely megformázását."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"információkérés a belső tárhelyről"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"Lehetővé teszi az alkalmazás számára, hogy információkat kérjen a belső tárhelyről."</string>
@@ -432,8 +457,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Lehetővé teszi az alkalmazás számára, hogy csatlakoztassa/leválassza a belső tárhelyet."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"belső tárhely átnevezése"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"Lehetővé teszi az alkalmazás számára, hogy átnevezze a belső tárhelyet."</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"rezgés szabályozása"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"Lehetővé teszi az alkalmazás számára a rezgés vezérlését."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"vaku vezérlése"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"Lehetővé teszi az alkalmazás számára a vaku vezérlését."</string>
@@ -458,8 +482,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"Lehetővé teszi az alkalmazás számára, hogy megmondja a rendszernek, melyik alkalmazás melyik modulokat használhatja. Ezzel az engedéllyel az alkalmazások hozzáférést biztosíthatnak a személyes adatokhoz más alkalmazásoknak. Normál alkalmazások nem használhatják."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"telefon állapotának módosítása"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Lehetővé teszi az alkalmazás számára, hogy az eszköz telefonálási funkcióit vezérelje. Egy ilyen engedéllyel rendelkező alkalmazás váltani tud a hálózatok között, be- és kikapcsolhatja a telefon rádióját, és hasonlókat tehet anélkül, hogy valaha értesítené Önt."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"telefonállapot és azonosító olvasása"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"Lehetővé teszi az alkalmazás számára, hogy hozzáférjen az eszköz telefonálási funkcióihoz. Az engedéllyel rendelkező alkalmazás megállapíthatja a telefon sorozat- és telefonszámát, hívás során a másik fél telefonszámát stb."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"táblagép alvás üzemmódjának megakadályozása"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"telefon alvó üzemmódjának megakadályozása"</string>
@@ -474,8 +497,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Futtatás alacsony szintű gyártói tesztként, lehetővé téve a telefon hardverének teljes körű elérését. Csak akkor érhető el, ha a telefon gyártói tesztüzemmódban van."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"háttérkép beállítása"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"Lehetővé teszi az alkalmazás számára, hogy beállítása a rendszer háttérképét."</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"háttérkép méretének módosítása"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Lehetővé teszi az alkalmazás számára, hogy beállítsa a rendszer háttérképének méretével kapcsolatos tippeket."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"rendszer visszaállítása a gyári beállításokra"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"Lehetővé teszi az alkalmazás számára a gyári beállítások teljes visszaállítását, törölve minden adatot, beállítást és telepített alkalmazást."</string>
@@ -487,21 +509,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Lehetővé teszi az alkalmazás számára, hogy módosítsa a telefon időzónáját."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"fiókfelügyeleti szolgáltatásként szereplés"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"Lehetővé teszi az alkalmazás számára, hogy meghívjon fiókhitelesítőket."</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"fiókok keresése az eszközön"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Lehetővé teszi az alkalmazás számára, hogy lekérje a táblagép által ismert fiókok listáját."</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Lehetővé teszi az alkalmazás számára, hogy lekérje a telefon által ismert fiókok listáját."</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"fiókok létrehozása, és jelszavak beállítása"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Lehetővé teszi az alkalmazás számára, hogy használja a Fiókkezelő fiókhitelesítő funkcióit, beleértve a fiókok létrehozását, illetve jelszavuk lekérdezését és beállítását."</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"fiókok hozzáadása vagy eltávolítása"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"Lehetővé teszi az alkalmazás számára olyan műveletek végrehajtását, mint a fiókok hozzáadása és eltávolítása, illetve a jelszavuk törlése."</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"a készüléken lévő fiókok használata"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"Lehetővé teszi az alkalmazás számára azonosítási tokenek kérését."</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"hálózati kapcsolatok megtekintése"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"Lehetővé teszi az alkalmazás számára, hogy megtekintse az összes hálózat állapotát."</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"teljes internet-hozzáférés"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Lehetővé teszi az alkalmazás számára hálózati socketek létrehozását."</string>
@@ -513,36 +530,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"Lehetővé teszi az alkalmazás számára a megosztott hálózati csatlakoztathatóság állapotának módosítását."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"háttéradatok használati beállításának módosítása"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Lehetővé teszi az alkalmazás számára a háttérben történő adathasználat beállításainak módosítását."</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"Wi-Fi kapcsolatok megtekintése"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"Lehetővé teszi az alkalmazás számára a Wi-Fi állapotinformációk megtekintését."</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"kapcsolódás Wi-Fi-hez és a kapcsolat bontása"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"Lehetővé teszi az alkalmazás számára, hogy kapcsolódjon Wi-Fi hozzáférési pontokhoz, és megszüntesse a kapcsolatot, valamint hogy módosítsa a beállított Wi-Fi hálózatokat."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"Wi-Fi multicast vétel engedélyezése"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Lehetővé teszi az alkalmazás számára a nem közvetlenül a készüléknek címzett csomagok fogadását. Ez hasznos lehet a közelben kínált szolgáltatások felfedezésére. Több energiát használ, mint a nem többirányú üzemmód."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"Bluetooth-beállítások elérése"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Lehetővé teszi az alkalmazás számára, hogy konfigurálja a helyi Bluetooth-t, valamint hogy távoli eszközöket fedezzen fel és párosítson."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Lehetővé teszi az alkalmazás számára, hogy konfigurálja a helyi Bluetooth telefont, valamint hogy távoli eszközöket fedezzen fel és párosítson."</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"WiMAX kapcsolatok megtekintése"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Lehetővé teszi, hogy az alkalmazás megtekintse a WiMAX-állapotinformációkat."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"WiMAX-állapot módosítása"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Lehetővé teszi az alkalmazás WiMAX hálózathoz való kapcsolódását, és a lekapcsolódását onnan."</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"Bluetooth-eszközök párosítása"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Lehetővé teszi az alkalmazás számára a helyi Bluetooth táblagép konfigurációjának megtekintését, valamint kapcsolatok kezdeményezését és fogadását a párosított eszközökkel."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Lehetővé teszi az alkalmazás számára a helyi Bluetooth telefon konfigurációjának megtekintését, valamint kapcsolatok kezdeményezését és fogadását a párosított eszközökkel."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"NFC technológia vezérlése"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Lehetővé teszi az alkalmazás számára, hogy NFC (Near Field Communication - kis hatósugarú vezeték nélküli kommunikáció) technológiát használó címkékkel, kártyákkal és leolvasókkal kommunikáljon."</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"képernyőzár kikapcsolása"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Lehetővé teszi az alkalmazás számára a billentyűzár és bármely kapcsolódó jelszavas védelem kikapcsolását. Jogos példa erre, amikor a telefon letiltja a billentyűzárat bejövő hívás esetén, majd újra bekapcsolja azt, ha a hívás befejeződik."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"szinkronizálási beállítások olvasása"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Lehetővé teszi az alkalmazás számára a szinkronizálási beállítások olvasását, például, hogy a szinkronizálás aktiválva van-e a Személyek alkalmazás esetében."</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"szinkronizálás be-és kikapcsolása"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Lehetővé teszi az alkalmazás számára, hogy módosítsa a szinkronizálási beállításokat, például, hogy a szinkronizálás aktiválva van-e a Személyek alkalmazás esetében."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"szinkronizálási statisztikák olvasása"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"Lehetővé teszi az alkalmazás számára a szinkronizálási statisztikák, például a megtörtént szinkronizálások előzményeinek olvasását."</string>
@@ -550,22 +560,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Lehetővé teszi az alkalmazás számára, hogy részleteket kapjon a jelenleg szinkronizált hírcsatornákról."</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"feliratkozott hírcsatornák írása"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Lehetővé teszi az alkalmazás számára, hogy módosítsa a jelenleg szinkronizált hírcsatornákat. A rosszindulatú alkalmazások módosíthatják a szinkronizált hírcsatornákat."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"szótárhoz adott kifejezések olvasása"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Lehetővé teszi az alkalmazás számára, hogy olvassa a felhasználói szótárban tárolt saját szavakat, neveket és kifejezéseket."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"a felhasználó által definiált szótár írása"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Lehetővé teszi az alkalmazás számára, hogy új szavakat írjon a felhasználói szótárba."</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"USB-tár tartalmának olvasása"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"SD-kártya tartalmának olvasása"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Lehetővé teszi az alkalmazás számára az USB-háttértár tartalmának olvasását, beleértve a fényképeket és a médiafájlokat."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Lehetővé teszi az alkalmazás számára az SD-kártya tartalmának olvasását, beleértve a fényképeket és a médiafájlokat."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"USB-tár törlése/módosítása"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Az alkalmazás USB-tárra írhat."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Lehetővé teszi az alkalmazás számára, hogy írjon az SD-kártyára."</string>
@@ -744,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Nincs SIM-kártya a telefonban."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Helyezzen be egy SIM kártyát."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"A SIM kártya hiányzik vagy nem olvasható. Helyezzen be egy SIM kártyát."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"A SIM kártya nem használható."</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"SIM kártyája véglegesen letiltva."\n" Forduljon a vezeték nélküli szolgáltatójához másik SIM kártya beszerzése érdekében."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Előző szám gomb"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Következő szám gomb"</string>
@@ -819,15 +824,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"Közösség"</string>
<string name="autofill_area" msgid="3547409050889952423">"Terület"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"Emirátus"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"internetes könyvjelzők és előzmények olvasása"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Lehetővé teszi az alkalmazás számára, hogy beolvassa a böngésző által felkeresett összes URL-t és a böngésző könyvjelzőit."</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"internetes könyvjelzők és előzmények írása"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Lehetővé teszi az alkalmazás számára, hogy módosítsa a böngésző előzményeit vagy a táblagépén tárolt könyvjelzőket. A rosszindulatú alkalmazások kihasználhatják ezt a böngésző adatainak törlésére vagy módosítására."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Lehetővé teszi az alkalmazás számára, hogy módosítsa a böngésző előzményeit vagy a telefonján tárolt könyvjelzőket. A rosszindulatú alkalmazások kihasználhatják ezt a böngésző adatainak törlésére vagy módosítására."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"ébresztés beállítása"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"Lehetővé teszi az alkalmazás számára, hogy ébresztőt állítson be egy telepített ébresztőóra alkalmazásban. Egyes ilyen alkalmazásokban lehet, hogy nem működik ez a funkció."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"hangposta hozzáadása"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"Lehetővé teszi az alkalmazás számára, hogy üzeneteket adjon hozzá bejövő hangpostájához."</string>
@@ -1087,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Dátum beállítása"</string>
<string name="date_time_set" msgid="5777075614321087758">"Beállítás"</string>
<string name="date_time_done" msgid="2507683751759308828">"Kész"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"Alapértelmezett"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"ÚJ: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"ÚJ: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"Nincs szükség engedélyre"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"Elrejtés"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"Az összes megjelenítése"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"USB-háttértár"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"USB-eszköz csatlakoztatva"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"USB-kapcsolaton keresztül csatlakozott a számítógéphez. Érintse meg a lenti gombot, ha fájlokat szeretne másolni a számítógép és az Android USB-tára között."</string>
@@ -1320,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"Küldés…"</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"Böngésző indítása?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"Fogadja a hívást?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index 494ff9f..7dc51e4 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -168,12 +168,84 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"Pesan Anda"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"Membaca dan menulis SMS, email, dan pesan Anda lainnya."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Informasi pribadi Anda"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Akses langsung ke kenalan dan kalender yang disimpan di tablet."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"akses langsung pada data kenalan dan kalender yang tersimpan pada ponsel."</string>
+ <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) -->
+ <skip />
+ <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) -->
+ <skip />
<string name="permgrouplab_location" msgid="635149742436692049">"Lokasi Anda"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"Memonitor lokasi fisik Anda."</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"Komunikasi jaringan"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"Mengakses berbagai fitur jaringan."</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) -->
+ <skip />
+ <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) -->
+ <skip />
+ <!-- no translation found for permgrouplab_calendar (5863508437783683902) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_calendar (5777534316982184416) -->
+ <skip />
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) -->
+ <skip />
+ <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) -->
+ <skip />
+ <!-- no translation found for permgrouplab_voicemail (4162237145027592133) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) -->
+ <skip />
+ <!-- no translation found for permgrouplab_microphone (171539900250043464) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_microphone (7106618286905738408) -->
+ <skip />
+ <!-- no translation found for permgrouplab_camera (4820372495894586615) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_camera (2933667372289567714) -->
+ <skip />
+ <!-- no translation found for permgrouplab_appInfo (8028789762634147725) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) -->
+ <skip />
+ <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) -->
+ <skip />
+ <!-- no translation found for permgrouplab_systemClock (406535759236612992) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) -->
+ <skip />
+ <!-- no translation found for permgrouplab_statusBar (2095862568113945398) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) -->
+ <skip />
+ <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) -->
+ <skip />
<string name="permgrouplab_accounts" msgid="3359646291125325519">"Akun-akun Anda"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"Akses akun yang tersedia."</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Kontrol perangkat keras"</string>
@@ -184,6 +256,10 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Akses tingkat rendah dan kontrol sistem."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Peralatan pengembangan"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Fitur hanya diperlukan oleh pengembang apl."</string>
+ <!-- no translation found for permgrouplab_display (4279909676036402636) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_display (6051002031933013714) -->
+ <skip />
<string name="permgrouplab_storage" msgid="1971118770546336966">"Penyimpanan"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Akses penyimpanan USB."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Akses kartu SD."</string>
@@ -193,14 +269,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"Mengizinkan apl menjadi bilah status."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"luaskan/ciutkan bilah status"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Mengizinkan apl memperluas atau menciutkan bilah status."</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"ubah rute panggilan keluar"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Mengizinkan apl memproses panggilan keluar dan mengubah nomor yang akan dipanggil. Apl berbahaya dapat memantau, mengalihkan, atau mencegah panggilan keluar."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"terima pesan teks (SMS)"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"Mengizinkan apl menerima dan memproses pesan SMS. Apl berbahaya dapat memantau atau menghapus pesan tanpa menunjukkannya kepada Anda."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"terima pesan teks (MMS)"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"Mengizinkan apl menerima dan memproses pesan MMS. Apl berbahaya dapat memantau atau menghapus pesan tanpa menunjukkannya kepada Anda."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"terima siaran darurat"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Mengizinkan apl menerima dan memproses pesan siaran darurat. Izin ini hanya tersedia untuk apl sistem."</string>
@@ -210,16 +283,13 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"Mengizinkan apl mengirim pesan SMS. Apl berbahaya dapat menimbulkan pengeluaran dengan mengirimkan pesan tanpa konfirmasi."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"mengirim SMS tanpa konfirmasi"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Mengizinkan apl mengirim pesan SMS. Apl berbahaya dapat menimbulkan pengeluaran dengan mengirimkan pesan tanpa konfirmasi Anda."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"membaca pesan teks (SMS atau MMS) Anda"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Mengizinkan apl membaca pesan SMS yang tersimpan di tablet atau kartu SIM. Apl berbahaya dapat membaca pesan rahasia Anda."</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Mengizinkan apl membaca pesan SMS yang tersimpan di ponsel atau kartu SIM. Apl berbahaya dapat membaca pesan rahasia Anda."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"edit pesan teks (SMS atau MMS) Anda"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Mengizinkan apl menulis ke pesan SMS yang tersimpan di tablet atau kartu SIM. Apl berbahaya dapat menghapus pesan Anda."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Mengizinkan apl menulis ke pesan SMS yang tersimpan di ponsel atau kartu SIM. Apl berbahaya dapat menghapus pesan Anda."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"terima pesan teks (WAP)"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Mengizinkan apl menerima dan memproses pesan WAP. Apl berbahaya dapat memantau pesan atau menghapusnya tanpa menunjukkannya kepada Anda."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"mengambil apl yang berjalan"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"Mengizinkan apl mengambil informasi tentang tugas yang sedang dijalankan dan yang baru-baru ini dijalankan. Apl berbahaya dapat menemukan informasi pribadi tentang apl lain."</string>
@@ -235,13 +305,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Memungkinkan apl mengontrol mode kompatibilitas layar aplikasi lain. Aplikasi berbahaya dapat merusak perilaku aplikasi lain."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"mengaktifkan debugging apl"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"Mengizinkan apl mengaktifkan debugging untuk apl lain. Apl berbahaya dapat menggunakan cara ini untuk menutup apl lain."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"ubah setelan tampilan sistem"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Mengizinkan apl mengubah konfigurasi saat ini, misalnya lokal atau ukuran font keseluruhan."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"aktifkan mode mobil"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"Mengizinkan apl mengaktifkan mode mobil."</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"tutup aplikasi lainnya"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Mengizinkan apl menghentikan proses latar belakang apl lain, meskipun tidak sedang kekurangan memori."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"memaksa apl lain berhenti"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Mengizinkan apl menghentikan apl lain dengan paksa."</string>
@@ -265,8 +333,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Mengizinkan apl menyiarkan pemberitahuan bahwa pesan WAP PUSH telah diterima. Apl berbahaya dapat menggunakan ini untuk memalsukan penerimaan pesan MMS atau diam-diam mengganti konten laman web apa pun dengan varian berbahaya."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"batasi jumlah dari proses yang berjalan"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Mengizinkan apl mengontrol jumlah maksimum proses yang akan berjalan. Tidak pernah diperlukan oleh apl normal."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"paksa aplikasi latar belakang agar menutup"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Mengizinkan apl mengontrol apakah aktivitas selalu selesai setelah berpindah ke latar belakang. Tidak pernah digunakan untuk apl normal."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"ubah statistika baterai"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"Mengizinkan apl memodifikasi statistik baterai yang dikumpulkan. Tidak untuk digunakan oleh apl normal."</string>
@@ -276,8 +343,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Mengizinkan apl meluncurkan UI konfirmasi pencadangan penuh. Tidak untuk digunakan oleh apl apa pun."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"tampilkan jendela yang tidak diizinkan"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Mengizinkan apl membuat jendela agar dapat digunakan oleh antarmuka pengguna sistem internal. Tidak untuk digunakan oleh apl normal."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"tutup aplikasi lain"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Mengizinkan apl menampilkan jendela lansiran sistem. Apl berbahaya dapat mengambil alih seluruh layar."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"ubah kecepatan animasi global"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Mengizinkan apl mengubah kecepatan animasi global (animasi lebih cepat atau lebih lambat) kapan saja."</string>
@@ -339,39 +405,33 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Memungkinkan aplikasi memberikan atau mencabut izin khusus untuk aplikasi tersebut atau aplikasi lainnya. Aplikasi berbahaya dapat menggunakannya untuk mengakses fitur yang tidak Anda beri izin."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"menyetel apl yang disukai"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Mengizinkan apl memodifikasi apl pilihan Anda. Apl berbahaya dapat diam-diam mengubah apl yang berjalan, menipu apl yang ada untuk mengumpulkan data pribadi dari Anda."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"ubah setelan sistem"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"Mengizinkan apl memodifikasi data setelan sistem. Apl berbahaya dapat merusak konfigurasi sistem anda."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"ubah setelan sistem aman"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Mengizinkan apl memodifikasi data setelan aman sistem. Tidak untuk digunakan oleh apl normal."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"ubah peta layanan Google"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"Mengizinkan apl memodifikasi peta layanan Google. Tidak untuk digunakan oleh apl normal."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"dijalankan saat dimulai"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Mengizinkan apl memulai sendiri segera setelah sistem selesai booting. Hal ini dapat memperpanjang waktu yang diperlukan untuk memulai tablet dan memungkinkan apl memperlambat tablet secara keseluruhan jika terus berjalan."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Mengizinkan apl memulai sendiri segera setelah sistem selesai booting. Hal ini dapat memperpanjang waktu yang diperlukan untuk memulai ponsel dan memungkinkan apl memperlambat ponsel secara keseluruhan jika terus berjalan."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"kirim siaran memikat"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Mengizinkan apl mengirim siaran permanen, yang tetap ada setelah siaran berakhir. Apl berbahaya dapat membuat tablet menjadi lambat atau tidak stabil dengan memicu penggunaan memori yang terlalu banyak."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Mengizinkan apl mengirim siaran permanen, yang tetap ada setelah siaran berakhir. Apl berbahaya dapat membuat ponsel menjadi lambat atau tidak stabil dengan memicu penggunaan memori yang terlalu banyak."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
- <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Memungkinkan aplikasi membaca semua data tentang kenalan yang disimpan pada tablet Anda, termasuk frekuensi saat Anda menghubungi, mengirim email, atau berkomunikasi dengan cara lain dengan individu tertentu. Aplikasi ini membantu pelengkapan otomatis alamat email dan fitur nyaman lainnya. Aplikasi berbahaya dapat menggunakan izin ini untuk mengirim data kenalan Anda kepada orang lain."</string>
- <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Memungkinkan aplikasi membaca semua data tentang kenalan yang disimpan pada ponsel Anda, termasuk frekuensi saat Anda menghubungi, mengirim email, atau berkomunikasi dengan cara lain dengan individu tertentu. Aplikasi ini membantu pelengkapan otomatis alamat email dan fitur nyaman lainnya. Aplikasi berbahaya dapat menggunakan izin ini untuk mengirim data kenalan Anda kepada orang lain."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
- <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Memungkinkan aplikasi mengubah semua data tentang kenalan yang disimpan pada tablet Anda, termasuk frekuensi saat Anda menghubungi, mengirim email, atau berkomunikasi dengan cara lain dengan individu tertentu. Aplikasi ini membantu pelengkapan otomatis alamat email dan fitur nyaman lainnya. Aplikasi berbahaya dapat menggunakan ini untuk menghapus atau mengubah data kenalan Anda."</string>
- <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Memungkinkan aplikasi mengubah semua data tentang kenalan yang disimpan pada ponsel Anda, termasuk frekuensi saat Anda menghubungi, mengirim email, atau berkomunikasi dengan cara lain dengan individu tertentu. Aplikasi ini membantu pelengkapan otomatis alamat email dan fitur nyaman lainnya. Aplikasi berbahaya dapat menggunakan ini untuk menghapus atau mengubah data kenalan Anda."</string>
+ <string name="permlab_readContacts" msgid="8348481131899886131">"baca kontak Anda"</string>
+ <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Memungkinkan aplikasi membaca semua data tentang kontak yang disimpan pada tablet Anda, termasuk frekuensi saat Anda menghubungi, mengirim email, atau berkomunikasi dengan cara lain dengan individu tertentu. Aplikasi ini membantu pelengkapan otomatis alamat email dan fitur nyaman lainnya. Aplikasi berbahaya dapat menggunakan izin ini untuk mengirim kontak Anda kepada orang lain."</string>
+ <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Memungkinkan aplikasi membaca semua data tentang kontak yang disimpan pada ponsel Anda, termasuk frekuensi saat Anda menghubungi, mengirim email, atau berkomunikasi dengan cara lain dengan individu tertentu. Aplikasi ini membantu pelengkapan otomatis alamat email dan fitur nyaman lainnya. Aplikasi berbahaya dapat menggunakan izin ini untuk mengirim kontak Anda kepada orang lain."</string>
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"ubah kontak Anda"</string>
+ <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Memungkinkan aplikasi mengubah semua data tentang kontak yang disimpan pada tablet Anda, termasuk frekuensi saat Anda menghubungi, mengirim email, atau berkomunikasi dengan cara lain dengan individu tertentu. Aplikasi ini membantu pelengkapan otomatis alamat email dan fitur nyaman lainnya. Aplikasi berbahaya dapat menggunakan ini untuk menghapus atau mengubah kontak Anda."</string>
+ <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Memungkinkan aplikasi mengubah semua data tentang kontak yang disimpan pada ponsel Anda, termasuk frekuensi saat Anda menghubungi, mengirim email, atau berkomunikasi dengan cara lain dengan individu tertentu. Aplikasi ini membantu pelengkapan otomatis alamat email dan fitur nyaman lainnya. Aplikasi berbahaya dapat menggunakan ini untuk menghapus atau mengubah kontak Anda."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"membaca log panggilan"</string>
<string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Memungkinkan apl membaca log panggilan tablet Anda, termasuk data tentang panggilan masuk dan keluar. Apl berbahaya dapat menggunakan ini untuk mengirim data ke orang lain."</string>
<string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Memungkinkan apl membaca log panggilan ponsel Anda, termasuk data tentang panggilan masuk dan keluar. Apl berbahaya dapat menggunakan ini untuk mengirim data ke orang lain."</string>
<string name="permlab_writeCallLog" msgid="8552045664743499354">"menulis log panggilan"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Memungkinkan apl memodifikasi log panggilan tablet Anda, termasuk data tentang panggilan masuk dan keluar. Apl berbahaya dapat menggunakan ini untuk menghapus atau memodifikasi log panggilan Anda."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Memungkinkan apl memodifikasi log panggilan ponsel Anda, termasuk data tentang panggilan masuk dan keluar. Apl berbahaya dapat menggunakan ini untuk menghapus atau memodifikasi log panggilan Anda."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
- <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Mengizinkan apl membaca informasi profil pribadi yang tersimpan di perangkat Anda, misalnya nama dan informasi kenalan Anda. Ini artinya apl dapat mengenali dan mengirim informasi profil Anda ke orang lain."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"baca kartu kontak Anda"</string>
+ <string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Mengizinkan apl membaca informasi profil pribadi yang tersimpan di perangkat Anda, misalnya nama dan informasi kontak Anda. Ini artinya apl dapat mengenali dan mengirim informasi profil Anda ke orang lain."</string>
+ <string name="permlab_writeProfile" msgid="907793628777397643">"ubah kartu kontak Anda"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Mengizinkan apl mengubah atau menambah informasi profil pribadi yang tersimpan di perangkat Anda, seperti nama dan informasi kontak. Ini berarti apl lain dapat mengenali Anda dan mengirim informasi profil Anda ke orang lain."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"membaca aliran sosial Anda"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Mengizinkan apl mengakses dan menyinkronkan pembaruan sosial dari Anda dan teman. Apl berbahaya dapat menggunakannya untuk membaca komunikasi pribadi antara Anda dan teman di jaringan sosial."</string>
@@ -412,15 +472,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"paksa reboot ponsel"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Mengizinkan apl memaksa tablet melakukan reboot."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Mengizinkan apl memaksa ponsel melakukan reboot."</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"akses sistem file simpanan USB"</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"akses sistem file Kartu SD"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Mengizinkan apl memasang dan melepas sistem file untuk penyimpanan yang dapat dicopot."</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"hapus penyimpanan USB"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"hapus Kartu SD"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Mengizinkan apl memformat penyimpanan yang dapat dicopot."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"dapatkan informasi pada penyimpanan internal"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"Mengizinkan apl mendapatkan informasi di penyimpanan internal."</string>
@@ -432,8 +488,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Mengizinkan apl memasang/melepas penyimpanan internal."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"ganti nama penyimpanan internal"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"Mengizinkan apl mengganti nama penyimpanan internal."</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"kontrol getaran"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"Mengizinkan aplikasi untuk mengendalikan vibrator."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"mengontrol lampu senter"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"Mengizinkan apl mengontrol lampu kilat."</string>
@@ -458,8 +513,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"Mengizinkan apl memberi tahu sistem tentang widget mana yang dapat digunakan oleh suatu apl. Apl dengan izin ini dapat memberikan akses ke data pribadi untuk apl lain. Tidak untuk digunakan oleh apl normal."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"ubah kondisi ponsel"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Mengizinkan apl mengontrol fitur telepon perangkat. Apl dengan izin ini dapat mengalihkan jaringan, menyalakan dan mematikan radio ponsel, dan melakukan hal serupa lainnya tanpa pernah memberi tahu Anda."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"baca identitas dan status ponsel"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"Mengizinkan apl mengakses fitur ponsel perangkat. Apl dengan izin ini dapat menentukan nomor telepon dan nomor seri ponsel ini, apakah panggilan sedang aktif atau tidak, nomor yang terhubung ke panggilan, dan sejenisnya."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"cegah tablet dari tidur"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"mencegah ponsel menjadi tidak aktif"</string>
@@ -474,8 +528,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Jalankan sebagai uji pabrik tingkat rendah, yang memungkinkan akses penuh pada perangkat keras ponsel. Hanya tersedia ketika ponsel berjalan pada mode uji pabrik."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"atur wallpaper"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"Mengizinkan apl menyetel wallpaper sistem."</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"sesuaikan ukuran wallpaper Anda"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Mengizinkan apl menyetel petunjuk ukuran wallpaper sistem."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"setel ulang sistem ke setelan default pabrik"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"Mengizinkan apl menyetel ulang sistem ke setelan pabrik sepenuhnya, menghapus semua data, konfigurasi, dan apl yang terpasang."</string>
@@ -487,21 +540,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Mengizinkan apl mengubah zona waktu pada ponsel."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"bertindak sebagai AccountManagerService"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"Mengizinkan apl melakukan panggilan ke AccountAuthenticators."</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"cari akun pada perangkat"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Mengizinkan apl mendapatkan daftar akun yang dikenal oleh tablet."</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Memungkinkan apl mendapatkan daftar akun yang dikenali oleh ponsel."</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"buat akun dan setel sandi"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Mengizinkan apl menggunakan kemampuan pengautentikasi akun dari AccountManager, termasuk membuat akun dan mendapatkan serta menyetel sandinya."</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"tambah atau hapus akun"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"Mengizinkan apl melakukan operasi seperti menambah dan menghapus akun, serta menghapus sandinya."</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"gunakan akun pada perangkat"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"Mengizinkan apl meminta token autentikasi."</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"lihat sambungan jaringan"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"Mengizinkan apl melihat keadaan semua jaringan."</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"akses internet penuh"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Mengizinkan apl membuat soket jaringan."</string>
@@ -513,36 +561,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"Mengizinkan apl mengubah status konektivitas jaringan yang tertambat."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"mengubah setelan penggunaan data latar belakang"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Mengizinkan apl mengubah setelan penggunaan data latar belakang."</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"lihat sambungan Wi-Fi"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"Mengizinkan apl melihat informasi tentang keadaan Wi-Fi."</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"sambung dan putuskan Wi-Fi"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"Mengizinkan apl menyambung ke dan memutus dari titik akses Wi-Fi, dan mengubah jaringan Wi-Fi yang telah dikonfigurasi."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"Izinkan penerimaan Wi-Fi Multicast"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Mengizinkan apl menerima paket yang tidak langsung dialamatkan ke perangkat Anda. Izin ini akan berguna saat mencari layanan yang ditawarkan di lokasi terdekat. Apl ini menggunakan lebih banyak daya daripada mode selain multicast."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"akses setelan Bluetooth"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Mengizinkan apl mengonfigurasi tablet Bluetooth lokal, dan menemukan serta menyandingkan dengan perangkat jarak jauh."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Mengizinkan apl mengonfigurasi ponsel Bluetooth lokal, dan menemukan serta menyandingkan dengan perangkat jarak jauh."</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Lihat sambungan WiMAX"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Mengizinkan apl melihat informasi tentang keadaan WiMAX."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"Ubah status WiMAX"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Mengizinkan apl menyambung ke dan memutus dari jaringan WiMAX."</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"sandingkan dengan perangkat Bluetooth"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Mengizinkan apl melihat konfigurasi tablet Bluetooth lokal, dan membuat serta menerima sambungan dengan perangkat yang disandingkan."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Mengizinkan apl melihat konfigurasi ponsel Bluetooth lokal, serta membuat dan menerima sambungan dengan perangkat yang disandingkan."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"kontrol NFC"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Mengizinkan apl berkomunikasi dengan tag, kartu, dan alat pembaca Komunikasi Nirkabel Jarak Dekat (NFC)."</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"nonaktifkan kunci layar Anda"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Mengizinkan apl menonaktifkan kunci tombol dan segala keamanan sandi yang terkait. Contoh nyata dari hal ini adalah ponsel menonaktifkan kunci tombol saat menerima panggilan telepon masuk, kemudian mengaktifkan kembali kunci tombol ketika panggilan selesai."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"baca setelan sinkron"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Mengizinkan apl membaca setelan sinkronisasi, misalnya apakah sinkronisasi untuk apl Orang diaktifkan atau tidak."</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"nyalakan dan matikan sinkronisasi"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Mengizinkan apl memodifikasi setelan sinkronisasi, seperti apakah sinkronisasi untuk apl Orang diaktifkan atau tidak."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"statistika baca sinkron"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"Mengizinkan apl membaca statistik sinkronisasi; mis., riwayat sinkronisasi yang telah terjadi."</string>
@@ -550,22 +591,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Mengizinkan apl mendapatkan detail tentang umpan yang saat ini sedang disinkronkan."</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"tuliskan umpan langganan"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Mengizinkan apl memodifikasi umpan Anda yang disinkronkan saat ini. Apl berbahaya dapat mengubah umpan Anda yang disinkronkan."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"baca istilah yang Anda tambahkan ke kamus"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Mengizinkan apl membaca kata, nama, dan frasa pribadi apa pun yang mungkin disimpan oleh pengguna di kamus pengguna."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"menulis ke kamus yang dibuat pengguna"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Mengizinkan apl menulis kata-kata baru ke dalam kamus pengguna."</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"baca konten simpanan USB Anda"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"baca konten kartu SD Anda"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Izinkan aplikasi membaca konten penyimpanan USB, yang mungkin mencakup foto dan media."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Izinkan aplikasi membaca konten kartu SD, yang mungkin mencakup foto dan media."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"ubah/hapus konten pympanan USB"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Mengizinkan apl menulis ke penyimpanan USB."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Memungkinkan apl menulis ke kartu SD."</string>
@@ -744,6 +779,8 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Tidak ada Kartu SIM di dalam ponsel."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Masukkan kartu SIM."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"Kartu SIM tidak ada atau tidak dapat dibaca. Masukkan kartu SIM."</string>
+ <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) -->
+ <skip />
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Kartu SIM Anda telah dinonaktifkan secara permanen."\n" Hubungi penyedia layanan nirkabel Anda untuk kartu SIM lain."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Tombol trek sebelumnya"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Tombol trek berikutnya"</string>
@@ -819,15 +856,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"Kampung"</string>
<string name="autofill_area" msgid="3547409050889952423">"Area"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"Emirat"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"baca riwayat dan bookmark web Anda"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Mengizinkan apl membaca semua URL yang telah dikunjungi Browser dan semua bookmark Browser."</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"tulis riwayat dan bookmark web"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Mengizinkan apl memodifikasi riwayat Browser atau bookmark yang tersimpan di tablet. Apl berbahaya dapat menggunakan izin ini untuk menghapus atau memodifikasi data Browser Anda."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Mengizinkan apl memodifikasi riwayat Browser atau bookmark yang tersimpan di ponsel Anda. Apl berbahaya dapat menggunakannya untuk menghapus atau memodifikasi data Browser Anda."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"setel alarm"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"Mengizinkan apl menyetel alarm di apl jam alarm yang terpasang. Beberapa apl jam alarm mungkin tidak menerapkan fitur ini."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"tambahkan kotak pesan"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"Mengizinkan apl menambahkan pesan ke kotak masuk untuk pesan suara Anda."</string>
@@ -1087,11 +1121,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Setel tanggal"</string>
<string name="date_time_set" msgid="5777075614321087758">"Setel"</string>
<string name="date_time_done" msgid="2507683751759308828">"Selesai"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"Default"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"BARU: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"BARU: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"Tidak perlu izin"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"Sembunyikan"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"Tampilkan semua"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"Penyimpanan massal USB"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"USB terhubung"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"Anda telah tersambung ke komputer melalui USB. Sentuh tombol di bawah jika Anda ingin menyalin file antara komputer dan penyimpanan USB Android Anda."</string>
@@ -1169,7 +1202,7 @@
<string name="ime_action_previous" msgid="1443550039250105948">"Sebelumnya"</string>
<string name="ime_action_default" msgid="2840921885558045721">"Lakukan"</string>
<string name="dial_number_using" msgid="5789176425167573586">"Panggil nomor "\n"menggunakan<xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="create_contact_using" msgid="4947405226788104538">"Buat kenalan "\n"menggunakan <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <string name="create_contact_using" msgid="4947405226788104538">"Buat kontak "\n"menggunakan <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="grant_credentials_permission_message_header" msgid="2106103817937859662">"Satu atau beberapa apl meminta izin untuk mengakses akun Anda, sekarang dan di masa mendatang."</string>
<string name="grant_credentials_permission_message_footer" msgid="3125211343379376561">"Apakah Anda ingin mengizinkan permintaan ini?"</string>
<string name="grant_permissions_header_text" msgid="6874497408201826708">"Permintaan akses"</string>
@@ -1320,4 +1353,8 @@
<string name="sending" msgid="3245653681008218030">"Mengirim..."</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"Luncurkan Browser?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"Terima panggilan?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index bc3495f..ce93389 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"I tuoi messaggi"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"Consentono di leggere e scrivere SMS, email e altri messaggi."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Informazioni personali"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Accedere direttamente ai contatti e al calendario memorizzati sul tablet."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Accedere direttamente ai contatti e al calendario memorizzati sul telefono."</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Accesso diretto alle informazioni su di te memorizzate nella tua scheda di contatto."</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Tue informazioni sociali"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Accesso diretto alle informazioni sui tuoi contatti e sulle tue connessioni sociali."</string>
<string name="permgrouplab_location" msgid="635149742436692049">"La tua posizione"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"Monitoraggio della posizione fisica dell\'utente."</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"Comunicazione di rete"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"Accesso a varie funzioni di rete."</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Impostazioni audio"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Modifica delle impostazioni audio."</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Influenza sulla batteria"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Uso di funzioni che possono consumare rapidamente la batteria."</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"Calendario"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Accesso diretto al calendario e agli eventi."</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Segnalibri e cronologia"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Accesso diretto ai segnalibri e alla cronologia del browser."</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Sveglia"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Impostazione della sveglia."</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Segreteria"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Accesso diretto alla segreteria."</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"Microfono"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Accesso diretto al microfono per registrare audio."</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"Fotocamera"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"Accesso diretto alla fotocamera per acquisizione di immagini o video."</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Informazioni sulle tue applicazioni"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Possibilità di influenzare il comportamento di altre applicazioni sul dispositivo."</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Sfondo"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Modifica delle impostazioni dello sfondo del dispositivo."</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"Orologio"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Modifica della data e dell\'ora o del fuso orario del dispositivo."</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Barra di stato"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Modifica delle impostazioni della barra di stato del dispositivo."</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Impostazioni di sincronizzazione"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Accesso alle impostazioni di sincronizzazione."</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"I tuoi account"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"Accedere agli account disponibili."</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Controlli hardware"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Accesso al sistema e controllo di livello inferiore."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Strumenti di sviluppo"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Funzionalità necessarie soltanto agli sviluppatori di applicazioni."</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"Interfaccia utente di altre applicazioni"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"Influenza sull\'interfaccia utente di altre applicazioni."</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"Archiviazione"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Accesso all\'archivio USB."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Accesso alla scheda SD."</string>
@@ -193,14 +238,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"Consente di visualizzare l\'applicazione nella barra di stato."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"espansione/compressione barra di stato"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Consente all\'applicazione di espandere o comprimere la barra di stato."</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"reindirizzamento chiamate in uscita"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Consente all\'applicazione di elaborare le chiamate in uscita e di modificare il numero da comporre. Le applicazioni dannose potrebbero monitorare, reindirizzare o impedire le chiamate in uscita."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"ricezione messaggi di testo (SMS)"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"Consente all\'applicazione di ricevere ed elaborare messaggi SMS. Le applicazioni dannose potrebbero monitorare i tuoi messaggi o eliminarli senza mostrarteli."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"ricezione messaggi di testo (MMS)"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"Consente all\'applicazione di ricevere ed elaborare messaggi MMS. Le applicazioni dannose potrebbero monitorare i tuoi messaggi o eliminarli senza mostrarteli."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"ricezione di trasmissioni di emergenza"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Consente all\'applicazione di ricevere ed elaborare messaggi broadcast di emergenza. Questa autorizzazione è disponibile solo per applicazioni di sistema."</string>
@@ -210,16 +252,13 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"Consente all\'applicazione di inviare messaggi SMS. Le applicazioni dannose potrebbero comportare addebiti inviando messaggi senza la tua conferma."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"invio di messaggi SMS senza conferma"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Consente all\'applicazione di inviare messaggi SMS. Le applicazioni dannose potrebbero comportare addebiti inviando messaggi senza la tua conferma."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"lettura messaggi di testo personali (SMS o MMS)"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Consente all\'applicazione di leggere i messaggi SMS memorizzati sul tablet o sulla scheda SIM. Le applicazioni dannose potrebbero leggere i tuoi messaggi riservati."</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Consente all\'applicazione di leggere i messaggi SMS memorizzati sul telefono o sulla scheda SIM. Le applicazioni dannose potrebbero leggere i tuoi messaggi riservati."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"modifica dei messaggi di testo (SMS o MMS)"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Consente all\'applicazione la scrittura nei messaggi SMS memorizzati sul tablet o sulla scheda SIM. Le applicazioni dannose potrebbero cancellare i tuoi messaggi."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Consente all\'applicazione la scrittura nei messaggi SMS memorizzati sul telefono o sulla scheda SIM. Le applicazioni dannose potrebbero cancellare i tuoi messaggi."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"ricezione messaggi di testo (WAP)"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Consente all\'applicazione di ricevere ed elaborare messaggi WAP. Le applicazioni dannose potrebbero monitorare i tuoi messaggi o eliminarli senza mostrarteli."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"recupero applicazioni in esecuzione"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"Consente all\'applicazione di recuperare informazioni sulle attività attualmente e recentemente in esecuzione. Le applicazioni dannose potrebbero scoprire informazioni riservate su altre applicazioni."</string>
@@ -235,13 +274,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Consente all\'applicazione di controllare la modalità di compatibilità dello schermo di altre applicazioni. Le applicazioni dannose potrebbero disturbare il comportamento di altre applicazioni."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"attivazione debug delle applicazioni"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"Consente all\'applicazione di attivare il debug per un\'altra applicazione. Le applicazioni dannose potrebbero farne uso per terminare altre applicazioni."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"modifica delle impostazioni di visualizzazione del sistema"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Consente all\'applicazione di modificare la configurazione corrente, come la lingua o le dimensioni generali dei caratteri."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"abilitazione modalità auto"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"Consente all\'applicazione di abilitare la modalità automobile."</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"chiusura altre applicazioni"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Consente all\'applicazione di terminare i processi in background di altre applicazioni, anche se la memoria non è scarsa."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"interruzione forzata di altre applicazioni"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Consente all\'applicazione di interrompere forzatamente altre applicazioni."</string>
@@ -265,8 +302,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Consente all\'applicazione di trasmettere una notifica che informa della ricezione di un messaggio WAP PUSH. Le applicazioni dannose potrebbero farne uso per simulare la ricezione di messaggi MMS o per sostituire di nascosto i contenuti di qualsiasi pagina web con varianti dannose."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"numero limite di processi in esecuzione"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Consente all\'applicazione di controllare il numero massimo di processi che verranno eseguiti. Mai necessaria per le applicazioni normali."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"chiusura forzata applicazioni di background"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Consente all\'applicazione di controllare se le attività sono sempre terminate non appena passano in background. Mai necessaria per le applicazioni normali."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"modifica statistiche batteria"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"Consente all\'applicazione di modificare le statistiche raccolte sulla batteria. Da non usare per normali applicazioni."</string>
@@ -276,8 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Consente all\'applicazione di avviare l\'interfaccia utente di conferma del backup completo. Non utilizzare per nessuna applicazione."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"visualizzazione finestre non autorizzate"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Consente all\'applicazione di creare finestre destinate all\'uso da parte dell\'interfaccia utente del sistema interno. Da non usare per normali applicazioni."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"disegno su altre applicazioni"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Consente all\'applicazione di mostrare finestre di avviso di sistema. Le applicazioni dannose potrebbero prendere il controllo dell\'intero schermo."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"modifica velocità di animazione globale"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Consente all\'applicazione di modificare la velocità di animazione globale (animazioni più veloci o più lente) in qualsiasi momento."</string>
@@ -339,26 +374,22 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Consente a un\'applicazione di concedere o revocare autorizzazioni specifiche per essa o per altre applicazioni. Le applicazioni dannose potrebbero utilizzare questa autorizzazione per accedere a funzioni che non hai concesso loro."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"impostazione applicazioni preferite"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Consente all\'applicazione di modificare le tue applicazioni preferite. Le applicazioni dannose potrebbero cambiare di nascosto le applicazioni che vengono eseguite, facendo in modo che le applicazioni esistenti raccolgano dati riservati su di te."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"modifica delle impostazioni di sistema"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"Consente all\'applicazione di modificare i dati delle impostazioni di sistema. Le applicazioni dannose potrebbero compromettere la configurazione di sistema."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"modificare le impostazioni di protezione del sistema"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Consente all\'applicazione di modificare i dati delle impostazioni protette del sistema. Da non usare per normali applicazioni."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"modifica mappa servizi Google"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"Consente all\'applicazione di modificare la mappa dei servizi Google. Da non usare per normali applicazioni."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"esecuzione all\'avvio"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Consente all\'applicazione di avviarsi non appena termina l\'avvio del sistema. Ciò può rallentare l\'avvio del tablet e consentire all\'applicazione di rallentare il funzionamento generale del tablet restando sempre in esecuzione."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Consente all\'applicazione di avviarsi non appena termina l\'avvio del sistema. Ciò può rallentare l\'avvio del telefono e consentire all\'applicazione di rallentare il funzionamento generale del telefono restando sempre in esecuzione."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"invio broadcast permanenti"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Consente all\'applicazione di inviare broadcast permanenti, che permangono anche al termine del broadcast. Le applicazioni dannose potrebbero rendere il tablet lento o instabile tramite un uso eccessivo della memoria."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Consente all\'applicazione di inviare broadcast permanenti, che permangono anche al termine del broadcast. Le applicazioni dannose potrebbero rendere il telefono lento o instabile tramite un uso eccessivo della memoria."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
+ <string name="permlab_readContacts" msgid="8348481131899886131">"lettura contatti personali"</string>
<string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Consente all\'applicazione di leggere tutti i dati relativi ai contatti memorizzati sul tablet, inclusa la frequenza con cui hai chiamato individui specifici, hai inviato loro delle email o hai comunicato con loro in altri modi. Ciò favorisce il completamento automatico degli indirizzi email e altre comode funzioni. Le applicazioni dannose potrebbero utilizzare questa autorizzazione per inviare i tuoi dati di contatto ad altre persone."</string>
<string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Consente all\'applicazione di leggere tutti i dati relativi ai contatti memorizzati sul telefono, inclusa la frequenza con cui hai chiamato individui specifici, hai inviato loro delle email o hai comunicato con loro in altri modi. Ciò favorisce il completamento automatico degli indirizzi email e altre comode funzioni. Le applicazioni dannose potrebbero utilizzare questa autorizzazione per inviare i tuoi dati di contatto ad altre persone."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"modifica dei contatti personali"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Consente all\'applicazione di modificare i dati relativi ai contatti memorizzati sul tablet, inclusa la frequenza con cui hai chiamato individui specifici, hai inviato loro delle email o hai comunicato con loro in altri modi. Ciò favorisce il completamento automatico degli indirizzi email e altre comode funzioni. Le applicazioni dannose potrebbero farne uso per cancellare o modificare i tuoi dati di contatto."</string>
<string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Consente all\'applicazione di modificare i dati relativi ai contatti memorizzati sul telefono, inclusa la frequenza con cui hai chiamato individui specifici, hai inviato loro delle email o hai comunicato con loro in altri modi. Ciò favorisce il completamento automatico degli indirizzi email e altre comode funzioni. Le applicazioni dannose potrebbero farne uso per cancellare o modificare i tuoi dati di contatto."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"lettura del registro chiamate"</string>
@@ -367,11 +398,9 @@
<string name="permlab_writeCallLog" msgid="8552045664743499354">"scrittura del registro chiamate"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Consente all\'applicazione di modificare il registro chiamate del tablet, inclusi i dati sulle chiamate in arrivo e in uscita. Le applicazioni dannose potrebbero farne uso per cancellare o modificare il registro chiamate."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Consente all\'applicazione di modificare il registro chiamate del telefono, inclusi i dati sulle chiamate in arrivo e in uscita. Le applicazioni dannose potrebbero farne uso per cancellare o modificare il registro chiamate."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"lettura scheda cont. personale"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Consente all\'applicazione di leggere informazioni del profilo personale memorizzate sul dispositivo, come il tuo nome e le tue informazioni di contatto. Ciò significa che l\'applicazione può identificarti e inviare le tue informazioni di profilo ad altri."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"modifica scheda cont. personale"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Consente all\'applicazione di modificare o aggiungere informazioni ai dati del profilo personale memorizzati sul dispositivo, come il tuo nome e le tue informazioni di contatto. Ciò significa che altre applicazioni possono identificarti e inviare le tue informazioni di profilo ad altri."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"lettura del tuo stream sociale"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Consente all\'applicazione di accedere agli aggiornamenti tuoi e dei tuoi amici dai social network e di sincronizzarli. Le applicazioni dannose possono farne uso per accedere alle comunicazioni private tra te e i tuoi amici sui social network."</string>
@@ -412,15 +441,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"riavvio forzato del telefono"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Consente all\'applicazione di forzare il riavvio del tablet."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Consente all\'applicazione di forzare il riavvio del telefono."</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"accesso filesystem achivio USB"</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"accesso al filesystem della scheda SD"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Consente montaggio e smontaggio da parte dell\'applicazione dei filesystem degli archivi rimovibili."</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"cancellazione archivio USB"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"cancellazione scheda SD"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Consente all\'applicazione di formattare l\'archivio rimovibile."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"recupero di informazioni sull\'archivio interno"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"Consente all\'applicazione di ottenere informazioni sulla memoria interna."</string>
@@ -432,8 +457,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Consente all\'applicazione di montare/smontare la memoria interna."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"ridenominazione archivio interno"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"Consente all\'applicazione di rinominare la memoria interna."</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"controllo vibrazione"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"Consente all\'applicazione di controllare la vibrazione."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"controllo flash"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"Consente all\'applicazione di controllare il flash."</string>
@@ -458,8 +482,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"Consente all\'applicazione di indicare al sistema quali widget possono essere utilizzati e da quale applicazione. Un\'applicazione con questa autorizzazione può concedere ad altre applicazioni l\'accesso ai dati personali. Da non usare per normali applicazioni."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"modifica stato del telefono"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Consente all\'applicazione di controllare le funzioni telefoniche del dispositivo. Un\'applicazione con questa autorizzazione può cambiare rete, attivare/disattivare il segnale radio del telefono e così via a tua insaputa."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"lettura stato e identità telefono"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"Consente all\'applicazione di accedere alle funzioni telefoniche del dispositivo. Un\'applicazione con questa autorizzazione può determinare il numero di telefono e il numero di serie di questo telefono, se una chiamata è attiva, il numero a cui è collegata la chiamata e informazioni simili."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"disattivazione stand-by del tablet"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"disattivazione stand-by del telefono"</string>
@@ -474,8 +497,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"In esecuzione come test del produttore di basso livello, consentendo l\'accesso completo all\'hardware del telefono. Disponibile soltanto quando il telefono è in esecuzione in modalità test del produttore."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"impostazione sfondo"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"Consente all\'applicazione di impostare lo sfondo del sistema."</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"regolazione dimensioni sfondo"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Consente all\'applicazione di impostare i suggerimenti per le dimensioni dello sfondo del sistema."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"ripristino impostazioni predef. di fabbrica"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"Consente all\'applicazione di effettuare un ripristino dati di fabbrica completo sul sistema, cancellando tutti i dati, la configurazione e le applicazioni installate."</string>
@@ -487,21 +509,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Consente all\'applicazione di modificare il fuso orario del telefono."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"agire da AccountManagerService"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"Consente all\'applicazione di effettuare chiamate verso AccountAuthenticators."</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"individuazione account sul dispositivo"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Consente all\'applicazione di recuperare l\'elenco di account memorizzati sul tablet."</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Consente all\'applicazione di recuperare l\'elenco di account memorizzati sul telefono."</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"creazione account e configurazione password"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Consente all\'applicazione di utilizzare le funzionalità di autenticatore account di AccountManager, inclusi la creazione degli account e il recupero o l\'impostazione delle relative password."</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"aggiunta o rimozione account"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"Consente all\'applicazione di eseguire operazioni quali l\'aggiunta o la rimozione degli account e l\'eliminazione delle relative password."</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"utilizzo account sul dispositivo"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"Consente all\'applicazione di richiedere i token di autenticazione."</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"visualizzazione connessioni di rete"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"Consente all\'applicazione di visualizzare lo stato di tutte le reti."</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"accesso completo a Internet"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Consente all\'applicazione di creare socket di rete."</string>
@@ -513,36 +530,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"Consente all\'applicazione di modificare lo stato di connettività di rete tethering."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"cambiare l\'impostazione di utilizzo dei dati in background"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Consente all\'applicazione di cambiare l\'impostazione di utilizzo dei dati in background."</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"visualizzazione connessioni Wi-Fi"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"Consente all\'applicazione di visualizzare le informazioni relative allo stato della rete Wi-Fi."</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"connessione e disconnessione dal Wi-Fi"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"Consente all\'applicazione di connettersi/disconnettersi da punti di accesso Wi-Fi e di apportare modifiche alle reti Wi-Fi configurate."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"consenti ricezione multicast Wi-Fi"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Consente all\'applicazione di ricevere pacchetti non direttamente indirizzati al tuo dispositivo. Può essere utile durante la ricerca di servizi offerti nelle vicinanze. Consuma di più rispetto alla modalità non multicast."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"accesso alle impostazioni Bluetooth"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Consente all\'applicazione di configurare il tablet Bluetooth locale e di rilevare ed effettuare l\'accoppiamento con dispositivi remoti."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Consente all\'applicazione di configurare il telefono Bluetooth locale e di rilevare ed effettuare l\'accoppiamento con dispositivi remoti."</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Visualizzazione connessioni WiMAX"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Consente all\'applicazione di visualizzare le informazioni relative allo stato del WiMAX."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"Modifica stato WiMAX"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Consente all\'applicazione di connettersi/disconnettersi dalla rete WiMAX."</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"accoppiamento con dispositivi Bluetooth"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Consente all\'applicazione di visualizzare la configurazione del tablet Bluetooth locale e di stabilire e accettare connessioni con dispositivi accoppiati."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Consente all\'applicazione di visualizzare la configurazione del telefono Bluetooth locale e di stabilire e accettare connessioni con dispositivi accoppiati."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"controllo Near Field Communication"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Consente all\'applicazione di comunicare con tag, schede e lettori NFC (Near Field Communication)."</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"disattivazione blocco schermo"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Consente la disattivazione da parte dell\'applicazione del blocco tastiera e di eventuali protezioni tramite password associate. Un valido esempio è la disattivazione da parte del telefono del blocco tastiera quando riceve una telefonata in arrivo e la successiva riattivazione del blocco al termine della chiamata."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"lettura impostazioni di sincronizz."</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Consente all\'applicazione di leggere le impostazioni di sincronizzazione, come l\'eventuale attivazione della sincronizzazione per l\'applicazione Persone."</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"attivazione e disattivazione della sincronizzazione"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Consente all\'applicazione di modificare le impostazioni di sincronizzazione, come l\'eventuale attivazione della sincronizzazione per l\'applicazione Persone."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"lettura statistiche di sincronizz."</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"Consente all\'applicazione di leggere le statistiche di sincronizzazione, ad esempio la cronologia delle sincronizzazioni effettuate."</string>
@@ -550,22 +560,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Consente all\'applicazione di ottenere dettagli sui feed attualmente sincronizzati."</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"scrittura feed sottoscritti"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Consente all\'applicazione di modificare i feed attualmente sincronizzati. Le applicazioni dannose potrebbero modificare i tuoi feed sincronizzati."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"lettura termini aggiunti al dizionario"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Consente all\'applicazione di leggere parole, frasi e nomi privati che l\'utente potrebbe aver memorizzato nel dizionario utente."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"scrittura nel dizionario definito dall\'utente"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Consente all\'applicazione di scrivere nuove parole nel dizionario utente."</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"lettura contenuti archivio USB"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"lettura contenuti scheda SD"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Consente all\'applicazione di leggere i contenuti dell\'archivio USB, che possono includere foto e contenuti multimediali."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Consente all\'applicazione di leggere i contenuti della scheda SD, che possono includere foto e contenuti multimediali."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"mod./elimin. cont. archivio USB"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Consente all\'applicazione di scrivere nell\'archivio USB."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Consente all\'applicazione di scrivere sulla scheda SD."</string>
@@ -744,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Nessuna SIM presente nel telefono."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Inserisci una scheda SIM."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"Scheda SIM mancante o non leggibile. Inserisci una scheda SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"Scheda SIM inutilizzabile."</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"La scheda SIM è stata disattivata definitivamente."\n" Contatta il fornitore del tuo servizio wireless per ricevere un\'altra scheda SIM."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Pulsante traccia precedente"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Pulsante traccia successiva"</string>
@@ -819,15 +824,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"Parrocchia"</string>
<string name="autofill_area" msgid="3547409050889952423">"Area"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"Emirato"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"lettura segnalibri e cronologia web"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Consente all\'applicazione di leggere tutti gli URL visitati e tutti i segnalibri del browser."</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"scrittura segnalibri e cronologia web"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Consente all\'applicazione di modificare la cronologia del Browser o i segnalibri memorizzati sul tablet. Le applicazioni dannose potrebbero farne uso per cancellare o modificare i dati del tuo Browser."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Consente all\'applicazione di modificare la cronologia del Browser o i segnalibri memorizzati sul telefono. Le applicazioni dannose potrebbero farne uso per cancellare o modificare i dati del tuo Browser."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"impostazione allarme"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"Consente all\'applicazione di impostare un allarme in un\'applicazione sveglia installata. È possibile che alcune applicazioni sveglia non possano implementare questa funzione."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"aggiunta di un messaggio vocale"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"Consente all\'applicazione di aggiungere messaggi alla casella della segreteria."</string>
@@ -1087,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Imposta data"</string>
<string name="date_time_set" msgid="5777075614321087758">"Imposta"</string>
<string name="date_time_done" msgid="2507683751759308828">"Fine"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"Predefinito"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NUOVA: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NUOVA: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"Nessuna autorizzazione richiesta"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"Nascondi"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"Mostra tutto"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"Archivio di massa USB"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"USB collegata"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"Ti sei collegato al computer tramite USB. Tocca il pulsante in basso se desideri copiare file tra il computer e l\'archivio USB di Android."</string>
@@ -1320,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"Invio..."</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"Avviare l\'applicazione Browser?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"Accettare la chiamata?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index a323cf7..020686e 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"ההודעות שלך"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"קריאה וכתיבה בהודעות ה-SMS, הדוא\"ל והודעות אחרות שלך."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"המידע האישי שלך"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"גישה ישירה לאנשי הקשר וללוח השנה המאוחסנים בטבלט."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"גישה ישירה לאנשי הקשר וללוח השנה המאוחסנים בטלפון."</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"גישה ישירה למידע עליך, המאוחסן בכרטיס איש הקשר שלך."</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"מידע על הקשרים החברתיים שלך"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"גישה ישירה למידע על אנשי קשר וקשרים חברתיים שלך."</string>
<string name="permgrouplab_location" msgid="635149742436692049">"המיקום שלך"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"עקוב אחר המיקום הפיזי שלך."</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"תקשורת רשת"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"הרשאת גישה לתכונות רשת שונות."</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"הגדרות אודיו"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"שינוי הגדרות האודיו."</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"השפעה על הסוללה"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"שימוש בתכונות שיכולות לרוקן את הסוללה במהירות."</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"לוח שנה"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"גישה ישירה ללוח השנה ולאירועים."</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"סימניות והיסטוריה"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"גישה ישירה אל סימניות והיסטוריית דפדפן."</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"שעון מעורר"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"הגדרת השעון המעורר."</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"דואר קולי"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"גישה ישירה לדואר הקולי."</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"מיקרופון"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"גישה ישירה אל המיקרופון להקלטת אודיו."</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"מצלמה"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"גישה ישירה למצלמה לצילום תמונות או וידאו."</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"מידע על היישומים שלך"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"יכולת להשפיע על התנהגותם של יישומים אחרים במכשיר."</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"טפט"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"שינוי הגדרות הטפט של המכשיר."</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"שעון"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"שינוי השעה או אזור הזמן של המכשיר."</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"שורת המצב"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"שינוי הגדרות שורת המצב של המכשיר."</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"הגדרות סנכרון"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"גישה להגדרות הסנכרון."</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"החשבונות שלך"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"גישה לכל החשבונות הזמינים."</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"בקרת חומרה"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"גישה ושליטה במערכת ברמה נמוכה."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"כלי פיתוח"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"תכונות הדרושות למפתחי יישומים בלבד."</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"ממשק המשתמש של יישום אחר"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"השפעה על ממשק המשתמש של יישומים אחרים."</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"אחסון"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"גישה לאמצעי אחסון מסוג USB."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"גש לכרטיס SD."</string>
@@ -193,14 +238,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"מאפשר ליישום להופיע בשורת המצב."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"הרחב/כווץ את שורת המצב"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"מאפשר ליישום להרחיב או לכווץ את שורת המצב."</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"ניתוב מחדש של שיחות יוצאות"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"מאפשר ליישום לעבד שיחות יוצאות ולשנות את המספר שיש לחייג. יישומים זדוניים עלולים לעקוב אחר שיחות יוצאות, לבצע הפניה מחדש שלהן או אף למנוע את ביצוען."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"קבלת הודעות טקסט (SMS)"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"מאפשר ליישום לקבל ולעבד הודעות SMS. יישומים זדוניים עלולים לעקוב אחר ההודעות שלך או למחוק אותן מבלי להציגן בפניך."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"קבלת הודעות טקסט (MMS)"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"מאפשר ליישום לקבל ולעבד הודעות MMS. יישומים זדוניים עלולים לעקוב אחר ההודעות שלך או למחוק אותן מבלי להציגן בפניך."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"קבל שידורי חירום"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"מאפשר ליישום לקבל ולעבד לשדר הודעות חירום משודרות. הרשאה זו זמינה רק ליישומי מערכת."</string>
@@ -210,16 +252,13 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"מאפשר ליישום לשלוח הודעות SMS. יישומים זדוניים עלולים לעלות לך כסף בגין שליחת הודעות ללא אישור שלך."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"שלח הודעות SMS ללא אישור"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"מאפשר ליישום לשלוח הודעות SMS. יישומים זדוניים עלולים לעלות לך כסף בגין שליחת הודעות ללא אישור שלך."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"קריאת הודעות הטקסט שלך (SMS או MMS)"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"מאפשר ליישום לקרוא הודעות SMS ששמורות בטבלט או בכרטיס ה-SIM שלך. יישומים זדוניים עלולים לקרוא את ההודעות הסודיות שלך."</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"מאפשר ליישום לקרוא הודעות SMS המאוחסנות בטלפון או בכרטיס ה-SIM שלך. יישומים זדוניים עלולים לקרוא את ההודעות הסודיות שלך."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"עריכת הודעות הטקסט שלך (SMS או MMS)"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"מאפשר ליישום לכתוב להודעות SMS המאוחסנות בטבלט או בכרטיס ה-SIM שלך. יישומים זדוניים עלולים למחוק את ההודעות שלך."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"מאפשר ליישום לכתוב להודעות SMS המאוחסנות בטלפון או בכרטיס ה-SIM שלך. יישומים זדוניים עלולים למחוק את ההודעות שלך."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"קבלת הודעות טקסט (WAP)"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"מאפשר ליישום לקבל ולעבד הודעות WAP. יישומים זדוניים עלולים לעקוב אחר ההודעות שלך או למחוק אותן מבלי להציגן בפניך."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"אחזור יישומים פעילים"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"מאפשר ליישום לאחזר מידע על המשימות הנוכחיות שפועלות, ואלו שפעלו לאחרונה. יישומים זדוניים עלולים לגלות מידע אישי על יישומים אחרים."</string>
@@ -235,13 +274,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"מאפשר ליישום לשלוט במצב תאימות המסך של יישומים אחרים. יישומים זדוניים עלולים לפגוע בהתנהגות של יישומים אחרים."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"הפעלה של ניקוי באגים ביישומים"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"הרשאה זו מאפשרת ליישום להפעיל ניקוי באגים עבור יישום אחר. יישומים זדוניים עלולים להשתמש באפשרות זו כדי לסגור יישומים אחרים."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"שינוי הגדרות תצוגה של המערכת"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"הרשאה זו מאפשרת ליישום לשנות את התצורה הנוכחית, כגון המקום או גודל הגופן הכללי."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"הפוך מצב מכונית לפעיל"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"מאפשר ליישום לאפשר את מצב מכונית."</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"סגירת יישומים אחרים"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"מאפשר ליישום לסגור תהליכי רקע של יישומים אחרים, גם אם מפלס הזיכרון אינו נמוך."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"אילוץ עצירה של יישומים אחרים"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"מאפשר ליישום לאלץ עצירה של יישומים אחים."</string>
@@ -265,8 +302,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"מאפשר ליישום לשדר התראה על כך שהתקבלה הודעה מסוג WAP PUSH. יישומים זדוניים עלולים להשתמש בכך כדי לזייף קבלה של הודעות MMS או כדי להחליף בחשאי את התוכן של דף אינטרנט כלשהו בגירסאות זדוניות."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"הגבל את מספר התהליכים הפועלים"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"מאפשר ליישום לשלוט על המספר המרבי של תהליכים שיפעלו. הרשאה זו לעולם אינה נחוצה ליישומים רגילים."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"אילוץ סגירה של יישומים ברקע"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"מאפשר ליישום לקבוע אם פעילויות תמיד מסתיימות עם העברתן לרקע. הרשאה זו לעולם אינה נחוצה ליישומים רגילים."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"שנה את הנתונים הסטטיסטיים של הסוללה"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"מאפשר ליישום לשנות נתונים סטטיסטיים שנאספו לגבי הסוללה. לא מיועד לשימוש על ידי יישומים רגילים."</string>
@@ -276,8 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"מאפשר ליישום להפעיל את ממשק המשתמש לאישור גיבוי מלא. לא מיועד לשימוש על ידי אף יישום."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"הצג חלונות ללא הרשאה"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"הרשאה זו מאפשרת ליישום ליצור חלונות המיועדים לשימוש על ידי ממשק המשתמש של המערכת הפנימית. לא מיועד לשימוש ביישומים רגילים."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"ציור על יישומים אחרים"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"מאפשר ליישום להציג חלונות התראה של המערכת. יישומים זדוניים עלולים להשתלט על המסך כולו."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"שנה את מהירות ההנפשה הגלובלית"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"הרשאה זו מאפשרת ליישום לשנות את מהירות ההנפשה הכללית (הנפשות מהירות או איטיות יותר) בכל עת."</string>
@@ -339,26 +374,22 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"מאפשר ליישום להעניק או לבטל הרשאות ספציפיות ביחס לעצמו או ליישומים אחרים. יישומים זדוניים עלולים להשתמש באפשרות זו על מנת לקבל גישה לתכונות שלא אישרת להם."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"הגדרת יישומים מועדפים"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"מאפשר ליישום לשנות את היישומים המועדפים עליך. יישומים זדוניים עלולים לשנות בחשאי את היישומים שמופעלים, תוך שידול במרמה של היישומים הקיימים שלך לאסוף ממך נתונים פרטיים."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"שינוי הגדרות מערכת"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"מאפשר ליישום לשנות את נתוני הגדרות המערכת. יישומים זדוניים עלולים לשבש את תצורת המערכת שלך."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"שנה את הגדרות המערכת המאובטחת"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"מאפשר ליישום לשנות את נתוני ההגדרות המאובטחים של המערכת. לא מיועד לשימוש על ידי יישומים רגילים."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"שנה את מפת השירותים של Google"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"מאפשר ליישום לשנות את מפת שירותי Google. לא מיועד לשימוש על ידי יישומים רגילים."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"הפעלה בעת אתחול"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"מאפשר ליישום להפעיל את עצמו מיד עם סיום תהליך האתחול של המערכת. משום כך הפעלת הטבלט עשויה להתארך והיישום עלול להאט את הפעילות הכללית של הטבלט, בשל פעילותו התמידית."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"מאפשר ליישום להפעיל את עצמו מיד עם השלמת תהליך האתחול של המערכת. משום כך הפעלת הטלפון עשויה להתארך והיישום עלול להאט את הפעילות הכללית של הטלפון, בשל פעילותו התמידית."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"שלח שידור דביק"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"מאפשר ליישום לשלוח שידורים דביקים, אשר נותרים לאחר סיום השידור. יישומים זדוניים עלולים להאט את פעילות הטבלט או להפוך אותה לבלתי יציבה על ידי הגדרת המכשיר לשימוש ביותר מדי זיכרון."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"מאפשר ליישום לשלוח שידורים דביקים, אשר נותרים לאחר סיום השידור. יישומים זדוניים עלולים להאט את פעילות הטלפון או להפוך אותה לבלתי יציבה על ידי הגדרת המכשיר לשימוש ביותר מדי זיכרון."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
+ <string name="permlab_readContacts" msgid="8348481131899886131">"קריאת אנשי הקשר שלך"</string>
<string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"מאפשר ליישום לקרוא את כל נתוני אנשי הקשר שלך המאוחסנים בטאבלט, כולל את התדירות שבה התקשרת, שלחת דוא\"ל או יצרת קשר בדרכים אחרות עם אנשים מסוימים. מצב זה מסייע להשלמה אוטומטית של כתובות דוא\"ל ותכונות נוחות אחרות. יישומים זדוניים עשויים להשתמש בהרשאה זו כדי לשלוח את נתוני אנשי הקשר שלך לאנשים אחרים."</string>
<string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"מאפשר ליישום לקרוא את כל נתוני אנשי הקשר שלך המאוחסנים בטלפון, כולל את התדירות שבה התקשרת, שלחת דוא\"ל או יצרת קשר בדרכים אחרות עם אנשים מסוימים. מצב זה מסייע להשלמה אוטומטית של כתובות דוא\"ל ולתכונות נוחות אחרות. יישומים זדוניים עשויים להשתמש בהרשאה זו כדי לשלוח את נתוני אנשי הקשר שלך לאנשים אחרים."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"שינוי אנשי הקשר שלך"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"מאפשר ליישום לשנות את כל נתוני אנשי הקשר שלך המאוחסנים בטאבלט, כולל את התדירות שבה התקשרת, שלחת דוא\"ל או יצרת קשר בדרכים אחרות עם אנשים מסוימים. מצב זה מסייע להשלמה אוטומטית של כתובות דוא\"ל ותכונות נוחות אחרות. יישומים זדוניים עשויים להשתמש בהרשאה זו כדי למחוק או לשנות את נתוני אנשי הקשר שלך."</string>
<string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"מאפשר ליישום לשנות את כל נתוני אנשי הקשר שלך המאוחסנים בטלפון, כולל את התדירות שבה התקשרת, שלחת דוא\"ל או יצרת קשר בדרכים אחרות עם אנשים מסוימים. מצב זה מסייע להשלמה אוטומטית של כתובות דוא\"ל ותכונות נוחות אחרות. יישומים זדוניים עשויים להשתמש בהרשאה זו כדי למחוק או לשנות את נתוני אנשי הקשר שלך."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"קריאת יומן שיחות"</string>
@@ -367,11 +398,9 @@
<string name="permlab_writeCallLog" msgid="8552045664743499354">"כתיבת יומן שיחות"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"מאפשר ליישום לשנות את יומן השיחות של הטבלט, כולל נתונים על שיחות נכנסות ויוצאות. יישומים זדוניים עלולים לעשות בכך שימוש כדי למחוק או לשנות את יומן השיחות שלך."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"מאפשר ליישום לשנות את יומן השיחות של הטלפון, כולל נתונים על שיחות נכנסות ויוצאות. יישומים זדוניים עלולים לעשות בכך שימוש כדי למחוק או לשנות את יומן השיחות שלך."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"קריאת כרטיס איש הקשר שלך"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"מאפשר ליישום לקרוא נתונים בפרטי הפרופיל האישי המאוחסנים במכשיר, כגון שמך ופרטי הקשר שלך. משמעות הדבר שהיישום יוכל לזהות אותך ולשלוח את מידע הפרופיל שלך לאנשים אחרים."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"שינוי כרטיס איש הקשר שלך"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"מאפשר ליישום לשנות או להוסיף נתונים בפרטי הפרופיל האישי המאוחסנים במכשיר, כגון שמך ופרטי הקשר שלך. משמעות הדבר שיישומים אחרים יוכלו לזהות אותך ולשלוח את מידע הפרופיל שלך לאנשים אחרים."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"קריאת הזרם החברתי שלך"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"מאפשר ליישום לגשת לעדכונים חברתיים ממך ומהחברים שלך ולסנכרן אותם. יישומים זדוניים עלולים להשתמש בכך כדי לקורא פעילויות תקשורת פרטיות שהתקיימו בינך לבין חבריך ברשתות חברתיות."</string>
@@ -412,15 +441,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"אלץ אתחול מחדש של הטלפון"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"מאפשר ליישום לאלץ את הטבלט לבצע אתחול."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"מאפשר ליישום לאלץ את הטלפון לבצע אתחול."</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"גישה למערכת הקבצים של אחסון USB"</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"גישה למערכת הקבצים של כרטיס SD"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"מאפשר ליישום לטעון ולבטל טעינה של מערכות קבצים באמצעי אחסון נשלפים."</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"מחיקת אחסון USB"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"מחיקת כרטיס SD"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"מאפשר ליישום לפרמט אמצעי אחסון נשלפים."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"קבל מידע על אחסון פנימי"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"מאפשר ליישום לקבל מידע על אמצעי האחסון הפנימי."</string>
@@ -432,8 +457,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"מאפשר ליישום לטעון/לבטל טעינה של אמצעי אחסון פנימי."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"שנה שם של אחסון פנימי"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"מאפשר ליישום לשנות שם של אמצעי אחסון פנימי."</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"שליטה ברטט"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"מאפשר ליישום לשלוט ברטט."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"שליטה בפנס"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"מאפשר ליישום לשלוט בפנס."</string>
@@ -458,8 +482,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"מאפשר ליישום ליידע את המערכת באילו פריטי Widget יכול להשתמש כל יישום. יישום בעל הרשאה זו יכול לספק ליישומים אחרים גישה לנתונים אישיים. לא מיועד לשימוש על ידי יישומים רגילים."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"שנה את מצב הטלפון"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"מאפשר ליישום לשלוט בתכונות הטלפון של המכשיר. יישום בעל הרשאה זו יכול לעבור בין רשתות, להפעיל ולכבות את הרדיו בטלפון ולבצע פעולות נוספות דומות מבלי ליידע אותך."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"קריאת הסטטוס והזהות של הטלפון"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"מאפשר ליישום לגשת לתכונות הטלפון של המכשיר. יישום בעל הרשאה זו יכול לזהות את מספר הטלפון והמספר הסידורי של המכשיר, אם יש שיחה פעילה, את המספר שאליו השיחה מחוברת וכיוצא בזה."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"מנע מהטבלט לעבור למצב שינה"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"מניעת מעבר הטלפון למצב שינה"</string>
@@ -474,8 +497,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"הפעל כבדיקת יצרן ברמה נמוכה, המאפשרת גישה מלאה לחומרת הטלפון. זמינה רק כאשר טלפון פועל במצב בדיקת יצרן."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"הגדר טפט"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"מאפשר ליישום להגדיר את טפט המערכת."</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"התאמת גודל הטפט שלך"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"מאפשר ליישום להגדיר את סמני הגודל של טפט המערכת."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"אפס את המערכת לברירות המחדל של היצרן"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"מאפשר ליישום לאפס את המערכת באופן מלא להגדרות היצרן, תוך מחיקה של כל הנתונים, התצורה והיישומים שהותקנו."</string>
@@ -487,21 +509,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"מאפשר ליישום לשנות את אזור הזמן של הטלפון."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"פעל בתור ה-AccountManagerService"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"הרשאה זו מאפשרת ליישום לבצע שיחות אל AccountAuthenticators."</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"חיפוש חשבונות במכשיר"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"מאפשר ליישום לקבל את רשימת החשבונות המוכרים לטבלט."</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"מאפשר ליישום לקבל את רשימת החשבונות המוכרים לטלפון."</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"יצירת חשבונות והגדרת סיסמאות"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"מאפשר ליישום להשתמש ביכולות מאמת החשבונות של מנהל החשבון, כולל יצירת חשבונות וקבלה והגדרה של הסיסמאות שלהם."</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"הוספה או הסרה של חשבונות"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"מאפשר ליישום לבצע פעולות כגון הוספה והסרה של חשבונות ומחיקת הסיסמה שלהם."</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"שימוש בחשבונות שבמכשיר"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"מאפשר ליישום לבקש אסימוני אימות."</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"הצג חיבורי רשת"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"מאפשר ליישום להציג את המצב של כל הרשתות."</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"גישה מלאה לאינטרנט"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"מאפשר ליישום ליצור שקעי רשת."</string>
@@ -513,36 +530,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"מאפשר ליישום לשנות את מצב הקישוריות של רשת קשורה."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"שנה את הגדרות השימוש בנתוני הרקע"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"מאפשר ליישום לשנות את הגדרת השימוש בנתוני רקע."</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"הצג חיבורי Wi-Fi"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"מאפשר ליישום להציג את המידע על מצב רשת ה-Wi-Fi."</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"התחברות והתנתקות מ-Wi-Fi"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"מאפשר ליישום להתחבר לנקודות גישה מסוג Wi-Fi ולהתנתק מהן, וכן לבצע שינויים ברשתות Wi-Fi מוגדרות."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"אפשר קבלת שידורים מרובים ב-Wi-Fi"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"מאפשר ליישום לקבל מנות שלא מוענו ישירות למכשיר שלך. יכולת זו שימושית בעת גילוי שירותים המוצעים בקרבת מקום. היא צורכת יותר חשמל לעומת המצב שאינו כולל ריבוי שידורים."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"גישה להגדרות Bluetooth"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"מאפשר ליישום להגדיר את תצורתו של הטבלט המקומי מסוג Bluetooth וכן לגלות מכשירים מרוחקים ולבצע התאמה איתם."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"מאפשר ליישום להגדיר את תצורתו של הטלפון המקומי מסוג Bluetooth וכן לגלות מכשירים מרוחקים ולבצע התאמה איתם."</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"הצג חיבורי WiMAX"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"הרשאה זו מאפשרת ליישום להציג את המידע על מצב ה-WiMAX."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"שנה את מצב WiMAX"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"הרשאה זו מאפשרת ליישום להתחבר לרשת ה-WiMAX ולהתנתק ממנה."</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"התאמה למכשירי Bluetooth"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"מאפשר ליישום להציג את התצורה של הטבלט המקומי מסוג Bluetooth וכן ליצור ולקבל חיבורים עם מכשירים מותאמים."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"מאפשר ליישום להציג את התצורה של טלפון Bluetooth המקומי, וליצור ולקבל חיבורים עם מכשירים מותאמים."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"שלוט ב-Near Field Communication"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"מאפשר ליישום נהל תקשורת עם תגים, כרטיסים וקוראים מסוג \'תקשורת מטווח קצר\'."</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"ביטול נעילת המסך שלך"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"מאפשר ליישום להשבית את נעילת המקשים וכל אמצעי אבטחה באמצעות סיסמה משויך. דוגמה טובה לכך היא טלפון שמשבית את נעילת המקשים בעת קבלה של שיחת טלפון נכנסת, ולאחר מכן מפעיל מחדש את נעילת המקשים עם סיום השיחה."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"קרא את הגדרות הסינכרון"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"מאפשר ליישום לקרוא את הגדרות הסנכרון, למשל אם מופעל סנכרון עבור היישום \'אנשים\'."</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"הפעלת וכיבוי סנכרון"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"מאפשר ליישום לשנות את הגדרות הסנכרון, למשל אם מופעל סנכרון עבור היישום \'אנשים\'."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"קרא את הנתונים הסטטיסטיים של הסינכרון"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"מאפשר ליישום לקרוא את הנתונים הסטטיסטיים לגבי סינכרון; למשל, את ההיסטוריה של סינכרונים שבוצעו."</string>
@@ -550,22 +560,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"מאפשר ליישום לקבל פרטים על ההזנות הנוכחיות שמסונכרנות."</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"כתוב עדכונים מנויים"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"מאפשר ליישום לשנות את ההזנות הנוכחיות שלך שמסונכרנות. יישומים זדוניים עלולים לשמות את ההזנות המסונכרנות שלך."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"קריאת מונחים שהוספת למילון"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"מאפשר ליישום לקרוא מילים, שמות וביטויים פרטיים שהמשתמש אחסן במילון המשתמש."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"כתיבה למילון בהגדרת המשתמש"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"מאפשר ליישום לכתוב מילים חדשות במילון המשתמש."</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"קריאת התוכן של אחסון ה-USB שלך"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"קריאת התוכן של כרטיס ה-SD שלך"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"הרשאה זו מאפשרת ליישום לקרוא את התוכן של אחסון USB, העשוי לכלול תמונות ומדיה."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"הרשאה זו מאפשרת ליישום לקרוא תוכן של כרטיס SD, העשוי לכלול תמונות ומדיה."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"שינוי או מחיקה של תוכן אחסון ה-USB שלך"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"מאפשר ליישום לכתוב להתקן האחסון מסוג USB."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"מאפשר ליישום לכתוב לכרטיס ה-SD."</string>
@@ -744,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"אין כרטיס SIM בטלפון."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"הכנס כרטיס SIM."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"כרטיס ה-SIM חסר או שלא ניתן לקרוא אותו. הכנס כרטיס SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"לא ניתן להשתמש בכרטיס SIM זה."</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"כרטיס ה-SIM שלך הושבת לצמיתות."\n"פנה לספק השירות האלחוטי שלך לקבלת כרטיס SIM אחר."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"לחצן הרצועה הקודמת"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"לחצן הרצועה הבאה"</string>
@@ -819,15 +824,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"קהילה"</string>
<string name="autofill_area" msgid="3547409050889952423">"אזור"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"אמירות"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"קריאת סימניות והיסטוריית האינטרנט שלך"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"מאפשר ליישום לקרוא את כל כתובות האתרים שהדפדפן ביקר בהן, ואת כל סימניות הדפדפן."</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"כתיבת סימניות והיסטוריית אינטרנט"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"מאפשר ליישום לשנות את ההיסטוריה או הסימניות של הדפדפן, המאוחסנות בטבלט שלך. יישומים זדוניים עלולים להשתמש בכך כדי למחוק או לשנות את נתוני הדפדפן שלך."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"מאפשר ליישום לשנות את ההיסטוריה או הסימניות של הדפדפן, המאוחסנות בטלפון שלך. יישומים זדוניים עלולים להשתמש בכך כדי למחוק או לשנות את נתוני הדפדפן שלך."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"הגדרת התראה"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"מאפשר ליישום להגדיר התראה ביישום שעון מעורר מותקן. יישומי שעון מעורר מסוימים אינם מיישמים תכונה זו."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"הוסף דואר קולי"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"מאפשר ליישום להוסיף הודעות לתיבת הדואר הקולי."</string>
@@ -1087,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"הגדר תאריך"</string>
<string name="date_time_set" msgid="5777075614321087758">"הגדר"</string>
<string name="date_time_done" msgid="2507683751759308828">"בוצע"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"ברירת מחדל"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"חדש: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"חדש: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"לא דרושים אישורים"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"הסתר"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"הצג הכל"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"אמצעי מסוג USB לאחסון בנפח גדול"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"USB מחובר"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"התחברת למחשב באמצעות USB. גע בלחצן שבהמשך אם ברצונך להעתיק קבצים בין המחשב לאחסון ה-USB של מכשיר ה-Android שלך."</string>
@@ -1320,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"שולח…"</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"להפעיל את הדפדפן?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"האם לקבל את השיחה?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index 44bc37f..b45d6cb 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"送受信したメッセージ"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"SMS、メールなどのメッセージを読み書きします。"</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"個人情報"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"タブレットの連絡先とカレンダーに直接アクセス"</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"端末の連絡先とカレンダーに直接アクセス"</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"連絡先カードに保存されている個人情報に直接アクセスします。"</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"ソーシャル情報"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"連絡先とソーシャルコネクションに関する情報に直接アクセスします。"</string>
<string name="permgrouplab_location" msgid="635149742436692049">"現在地"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"現在地を追跡します。"</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"ネットワーク通信"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"さまざまなネットワーク機能にアクセスします。"</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"音声設定"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"音声設定を変更します。"</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"電池への影響"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"短時間で電池を消費する機能を使用します。"</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"カレンダー"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"カレンダーと予定に直接アクセスします。"</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"ブックマークと履歴"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"ブックマークとブラウザの履歴に直接アクセスします。"</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"アラーム"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"アラームを設定します。"</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"ボイスメール"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"ボイスメールに直接アクセスします。"</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"マイク"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"マイクに直接アクセスして音声を記録します。"</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"カメラ"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"カメラに直接アクセスして画像または動画を撮影します。"</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"アプリ情報"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"端末上の他のアプリの動作に影響を及ぼします。"</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"壁紙"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"端末の壁紙設定を変更します。"</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"時刻"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"端末の時刻またはタイムゾーンを変更します。"</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"ステータスバー"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"端末のステータスバー設定を変更します。"</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"同期設定"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"同期設定にアクセスします。"</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"アカウント"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"利用可能なアカウントにアクセスします。"</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"ハードウェアの制御"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"システムの低レベルのアクセスと制御"</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"開発ツール"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"アプリのデベロッパーにのみ必要な機能です。"</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"他のアプリのUI"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"他のアプリのUIに影響を及ぼします。"</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"ストレージ"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"USBストレージへのアクセス"</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"SDカードにアクセスします。"</string>
@@ -193,14 +238,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"ステータスバーへの表示をアプリに許可します。"</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"ステータスバーの拡大/縮小"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"ステータスバーの展開/折りたたみをアプリに許可します。"</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"発信先の変更"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"通話発信とダイヤル番号の変更をアプリに許可します。この許可を悪意のあるアプリに利用されると、発信が監視、転送、阻止される恐れがあります。"</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"テキストメッセージ(SMS)の受信"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"SMSメッセージの受信と処理をアプリに許可します。この許可を悪意のあるアプリに利用されると、メッセージが監視されたり、表示されずに削除されたりする恐れがあります。"</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"テキストメッセージ(MMS)の受信"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"MMSメッセージの受信と処理をアプリに許可します。この許可を悪意のあるアプリに利用されると、メッセージが監視されたり、表示されずに削除されたりする恐れがあります。"</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"緊急放送の受信"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"緊急ブロードキャストメッセージの受信と処理をアプリに許可します。これはシステムアプリのみが利用できる権限です。"</string>
@@ -210,16 +252,13 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"SMSメッセージの送信をアプリに許可します。この許可を悪意のあるアプリに利用されると、ユーザーの確認なしでメッセージが送信され、料金が発生する恐れがあります。"</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"確認せずにSMSメッセージを送信する"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"SMSメッセージの送信をアプリに許可します。この許可を悪意のあるアプリに利用されると、ユーザーの確認なしでメッセージが送信され、料金が発生する恐れがあります。"</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"テキストメッセージ(SMSまたはMMS)の読み取り"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"タブレットやSIMカードに保存されているSMSメッセージの読み取りをアプリに許可します。この許可を悪意のあるアプリに利用されると、機密メッセージが読み取られる恐れがあります。"</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"携帯端末やSIMカードに保存されているSMSメッセージの読み取りをアプリに許可します。この許可を悪意のあるアプリに利用されると、機密メッセージが読み取られる恐れがあります。"</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"テキストメッセージ(SMSまたはMMS)の編集"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"タブレットやSIMカードに保存されているSMSメッセージへの書き込みをアプリに許可します。この許可を悪意のあるアプリに利用されると、メッセージが削除される恐れがあります。"</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"携帯端末やSIMカードに保存されているSMSメッセージへの書き込みをアプリに許可します。この許可を悪意のあるアプリに利用されると、メッセージが削除される恐れがあります。"</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"テキストメッセージ(WAP)の受信"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"WAPメッセージの受信と処理をアプリに許可します。この許可を悪意のあるアプリに利用されると、メッセージが監視されたり、表示されずに削除されたりする恐れがあります。"</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"実行中のアプリの取得"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"現在実行中または最近実行したタスクに関する情報の取得をアプリに許可します。この許可を悪意のあるアプリに利用されると、他のアプリに関する非公開情報が発見される恐れがあります。"</string>
@@ -235,13 +274,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"他のアプリの画面互換性モードをコントロールすることをアプリに許可します。この許可を悪意のあるアプリに利用されると、他のアプリの動作が中断される恐れがあります。"</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"アプリのデバッグの有効化"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"別のアプリをデバッグモードにすることをアプリに許可します。この許可を悪意のあるアプリに利用されると、他のアプリが強制終了される恐れがあります。"</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"システムの表示設定の変更"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"地域/言語や全体のフォントサイズなど、現在の設定の変更をアプリに許可します。"</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"運転モードの有効化"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"運転モードを有効にすることをアプリに許可します。"</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"他のアプリの終了"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"メモリが不足していなくても他のアプリのバックグラウンドプロセスを強制終了することをアプリに許可します。"</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"他のアプリの強制停止"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"他のアプリの強制停止をアプリに許可します。"</string>
@@ -265,8 +302,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"WAP PUSHメッセージの受信通知を配信することをアプリに許可します。この許可を悪意のあるアプリに利用されると、MMSメッセージの受信確認が偽造されたりウェブページのコンテンツが悪意のあるコンテンツに密かに置き換えられたりする恐れがあります。"</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"実行中のプロセスの数を制限"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"実行するプロセスの上限数を制御することをアプリに許可します。通常のアプリでは不要です。"</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"バックグラウンドのアプリの強制終了"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"バックグラウンドになりしだい操作を常に終了するかどうかの制御をアプリに許可します。通常のアプリでは不要です。"</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"電池統計情報の変更"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"電池に関して収集した統計情報の変更をアプリに許可します。通常のアプリでは使用しません。"</string>
@@ -276,8 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"フルバックアップの確認UIを表示することをアプリに許可します。どのアプリでも使用しません。"</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"未許可のウィンドウの表示"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"内部システムのユーザーインターフェースで使用するためのウィンドウを作成することをアプリに許可します。通常のアプリでは使用しません。"</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"他のアプリの上に重ねて表示"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"システムの警告ウィンドウの表示をアプリに許可します。この許可を悪意のあるアプリに利用されると、画面全体が乗っ取られる恐れがあります。"</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"アニメーションのプリセット速度の変更"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"いつでもアニメーション全般の速度を変更する(速くする、または遅くする)ことをアプリに許可します。"</string>
@@ -339,26 +374,22 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"このアプリケーションや他のアプリケーションに対して特定の権限を許可したり取り消したりすることをアプリケーションに許可します。悪意のあるアプリケーションがユーザーの許可なく複数の機能にアクセスする恐れがあります。"</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"優先アプリの設定"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"優先アプリを変更することをアプリに許可します。この許可を悪意のあるアプリに利用されると、実行中のアプリが密かに変更され、既存のアプリへのなりすましにより非公開データがだまし取られる恐れがあります。"</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"システム設定の変更"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"システムの設定データの変更をアプリに許可します。この許可を悪意のあるアプリに利用されると、システムの設定が破損する恐れがあります。"</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"システムのセキュリティ設定の変更"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"システムのセキュリティ設定データの変更をアプリに許可します。通常のアプリでは使用しません。"</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"Googleサービスの地図の変更"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"Googleサービスの地図の変更をアプリに許可します。通常のアプリでは使用しません。"</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"起動時の実行"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"システムの起動後に自動的に起動することをアプリに許可します。許可すると、タブレットの起動時間が長くなったり、アプリが常に実行されるためにタブレット全体の動作が遅くなったりする可能性があります。"</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"システムの起動後に自動的に起動することをアプリに許可します。許可すると、携帯端末の起動時間が長くなったり、アプリが常に実行されるために携帯端末全体の動作が遅くなったりする可能性があります。"</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"stickyブロードキャストの配信"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"配信が終了してもメモリに残るstickyブロードキャストの配信をアプリに許可します。この許可を悪意のあるアプリに利用されると、メモリの使用量が増えてタブレットの動作が遅くなったり不安定になったりする恐れがあります。"</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"配信が終了してもメモリに残るstickyブロードキャストの配信をアプリに許可します。この許可を悪意のあるアプリに利用されると、メモリの使用量が増えて携帯端末の動作が遅くなったり不安定になったりする恐れがあります。"</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
+ <string name="permlab_readContacts" msgid="8348481131899886131">"連絡先の読み取り"</string>
<string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"タブレットに保存されている連絡先についてすべてのデータを読み取ることをアプリに許可します。このデータには、特定の相手と電話、メール、または他の手段でコミュニケーションをとった回数も含まれます。この権限はメールアドレスの自動補完やその他の便利な機能に役立ちますが、悪意のあるアプリがこれを悪用してあなたの連絡先データを第三者に送信する可能性があります。"</string>
<string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"携帯端末に保存されている連絡先についてすべてのデータを読み取ることをアプリに許可します。このデータには、特定の相手と電話、メール、または他の手段でコミュニケーションをとった回数も含まれます。この権限はメールアドレスの自動補完やその他の便利な機能に役立ちますが、悪意のあるアプリがこれを悪用してあなたの連絡先データを第三者に送信する可能性があります。"</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"連絡先の変更"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"タブレットに保存されている連絡先についてデータの変更をアプリに許可します。このデータには、特定の相手と電話、メール、または他の手段でコミュニケーションをとった回数も含まれます。この権限はメールアドレスの自動補完やその他の便利な機能に役立ちますが、悪意のあるアプリがこれを悪用してあなたの連絡先データを消去または改ざんする可能性があります。"</string>
<string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"携帯端末に保存されている連絡先についてデータの変更をアプリに許可します。このデータには、特定の相手と電話、メール、または他の手段でコミュニケーションをとった回数も含まれます。この権限はメールアドレスの自動補完やその他の便利な機能に役立ちますが、悪意のあるアプリがこれを悪用してあなたの連絡先データを消去または改ざんする可能性があります。"</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"通話履歴の読み取り"</string>
@@ -367,11 +398,9 @@
<string name="permlab_writeCallLog" msgid="8552045664743499354">"通話履歴の書き込み"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"タブレットの通話履歴(着信や発信のデータなど)の変更をアプリに許可します。この許可を悪意のあるアプリに利用されると、通話履歴が消去または変更される恐れがあります。"</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"携帯端末の通話履歴(着信や発信のデータなど)の変更をアプリに許可します。この許可を悪意のあるアプリに利用されると、通話履歴が消去または変更される恐れがあります。"</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"自分の連絡先カードの読み取り"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"端末に保存されている個人のプロフィール情報(名前、連絡先情報など)を読み取ることをアプリに許可します。許可すると、アプリではユーザーの身元を特定したりプロフィール情報を第三者に転送したりできるようになります。"</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"自分の連絡先カードの変更"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"端末に保存されている個人のプロフィール情報(名前、連絡先情報など)を変更または追加することをアプリに許可します。許可すると、他のアプリではユーザーの身元を特定したりプロフィール情報を第三者に転送したりできるようになります。"</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"ソーシャルストリームを読む"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"あなたや友だちのソーシャル更新情報にアクセスして同期することをアプリに許可します。この許可を悪意のあるアプリに利用されると、ソーシャルネットワーク上で交わされるあなたと友だちの個人的なやり取りが読み取られる恐れがあります。"</string>
@@ -412,15 +441,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"端末の再起動"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"タブレットの強制的な再起動をアプリに許可します。"</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"携帯端末の強制的な再起動をアプリに許可します。"</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"USBストレージのファイルシステムへのアクセス"</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"SDカードのファイルシステムへのアクセス"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"リムーバブルストレージのファイルシステムのマウント/マウント解除をアプリに許可します。"</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"USBストレージ内データの消去"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"SDカード内データの消去"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"リムーバブルストレージのフォーマットをアプリに許可します。"</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"内部ストレージ上の情報の取得"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"内部ストレージ上の情報の取得をアプリに許可します。"</string>
@@ -432,8 +457,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"内部ストレージのマウント/マウント解除をアプリに許可します。"</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"内部ストレージ名の変更"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"内部ストレージ名の変更をアプリに許可します。"</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"バイブレーションの制御"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"バイブレーションの制御をアプリに許可します。"</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"ライトのコントロール"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"ライトの制御をアプリに許可します。"</string>
@@ -458,8 +482,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"どのアプリケーションがどのウィジェットを使用できるかシステムに指定することをアプリに許可します。許可すると、アプリでは他のアプリに個人データへのアクセスを付与できるようになります。通常のアプリでは使用しません。"</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"端末ステータスの変更"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"端末の電話機能の制御をアプリに許可します。許可すると、アプリではユーザーに通知なくネットワークの切り替え、無線通信のON/OFFなどを行えるようになります。"</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"端末のステータスとIDの読み取り"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"端末の電話機能へのアクセスをアプリに許可します。許可すると、アプリではこの端末の電話番号やシリアル番号、通話中かどうか、通話相手の電話番号などを特定できるようになります。"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"タブレットのスリープを無効化"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"端末のスリープを無効にする"</string>
@@ -474,8 +497,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"携帯電話のハードウェアへのアクセスを完全に許可して、低レベルのメーカーテストとして実行します。メーカーのテストモードで携帯電話を使用するときのみ利用できます。"</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"壁紙の設定"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"システムの壁紙を設定することをアプリに許可します。"</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"壁紙のサイズの調整"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"システムの壁紙サイズのヒントを設定することをアプリに許可します。"</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"システムを出荷時設定にリセット"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"データ、設定、インストールアプリをすべて消去して、出荷時の設定にシステムを完全にリセットすることをアプリに許可します。"</string>
@@ -487,21 +509,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"携帯端末のタイムゾーンの変更をアプリに許可します。"</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"AccountManagerServiceとして機能"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"AccountAuthenticatorsの呼び出しをアプリに許可します。"</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"この端末上のアカウントの検索"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"タブレットの認識済みアカウントのリストを取得することをアプリに許可します。"</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"携帯端末の認識済みアカウントのリストを取得することをアプリに許可します。"</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"アカウントの作成とパスワードの設定"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"アカウントの作成、パスワードの取得や設定など、AccountManagerのアカウント認証機能を使用することをアプリに許可します。"</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"アカウントの追加と削除"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"アカウントの追加や削除、パスワードの削除などの操作の実行をアプリに許可します。"</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"この端末上のアカウントの使用"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"認証トークンのリクエストをアプリに許可します。"</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"ネットワーク接続の表示"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"すべてのネットワーク状態の表示をアプリに許可します。"</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"完全なインターネットアクセス"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"ネットワークソケットの作成をアプリに許可します。"</string>
@@ -513,36 +530,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"ネットワークのテザリング接続状態の変更をアプリに許可します。"</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"バックグラウンドデータ使用設定の変更"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"バックグラウンドデータの使用設定の変更をアプリに許可します。"</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"Wi-Fi接続の表示"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"Wi-Fiの状態に関する情報の表示をアプリに許可します。"</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"Wi-Fiからの接続と切断"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"Wi-Fiアクセスポイントへの接続/切断、設定されたWi-Fiネットワークの変更をアプリに許可します。"</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"Wi-Fiマルチキャストの受信を許可する"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"端末を直接の宛先とはしていないパケットの受信をアプリに許可します。近隣で提供中のサービスを検出したい場合に便利です。マルチキャスト以外のモードに比べて電力を消費します。"</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"Bluetoothの設定へのアクセス"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"ローカルのBluetoothタブレットを設定することと、リモート端末を検出してペアに設定することをアプリに許可します。"</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"ローカルのBluetooth携帯端末を設定することと、リモート端末を検出してペアに設定することをアプリに許可します。"</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"WiMAX接続の表示"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"WiMAXの状態に関する情報の表示をアプリに許可します。"</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"WiMAX状態の変更"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"WiMAXネットワークへの接続と接続解除をアプリに許可します。"</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"Bluetoothデバイスのペアの設定"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"ローカルのBluetoothタブレットの設定を表示することと、ペアの端末に接続すること/ペアの端末からの接続を受け入れることをアプリに許可します。"</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"ローカルのBluetooth携帯端末の設定を表示することと、ペアの端末に接続すること/ペアの端末からの接続を受け入れることをアプリに許可します。"</string>
<string name="permlab_nfc" msgid="4423351274757876953">"NFCの管理"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"NFCタグ、カード、リーダーとの通信をアプリに許可します。"</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"画面ロックの無効化"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"キーロックとキーロックに関連付けられたパスワードのセキュリティを無効にすることをアプリに許可します。この許可の正当な使用例としては、かかってきた電話を受ける際にキーロックを無効にし、通話が終了したらキーロックを再度有効にするというケースが挙げられます。"</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"同期設定の読み取り"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Peopleアプリの同期の有効/無効など、同期設定の読み取りをアプリに許可します。"</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"同期のON/OFFの切り替え"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Peopleアプリの同期の有効/無効など、同期設定の変更をアプリに許可します。"</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"同期統計の読み取り"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"同期に関する統計情報(同期履歴など)の読み取りをアプリに許可します。"</string>
@@ -550,22 +560,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"現在同期されているフィードの詳細を取得することをアプリに許可します。"</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"登録したフィードの書き込み"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"現在同期されているフィードの変更をアプリに許可します。この許可を悪意のあるアプリに利用されると、同期されたフィードが変更される恐れがあります。"</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"辞書に追加された語句の読み取り"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"ユーザーが単語リストに個人情報として登録した可能性のある語句や名前を読み込むことをアプリに許可します。"</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"単語リストへの書き込み"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"単語リストに新しい語句を書き込むことをアプリに許可します。"</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"USBストレージの読み取り"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"SDカードのコンテンツの読み取り"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"USBストレージ(写真やメディアなど)の読み取りをアプリに許可します。"</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"SDカードのコンテンツ(写真やメディアなど)の読み取りをアプリに許可します。"</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"USBストレージのコンテンツの変更または削除"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"USBストレージへの書き込みをアプリに許可します。"</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"SDカードへの書き込みをアプリに許可します。"</string>
@@ -744,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"SIMカードが挿入されていません"</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"SIMカードを挿入してください。"</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIMカードが見つからないか読み取れません。SIMカードを挿入してください。"</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"SIMカードは使用できません。"</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"お使いのSIMカードは永久に無効となっています。"\n"ワイヤレスサービスプロバイダに問い合わせて新しいSIMカードを入手してください。"</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"前のトラックボタン"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"次のトラックボタン"</string>
@@ -819,15 +824,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"教区"</string>
<string name="autofill_area" msgid="3547409050889952423">"地域"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"首長国"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"ウェブのブックマークと履歴の読み取り"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"ブラウザでアクセスしたすべてのURLとブラウザのすべてのブックマークを読み取ることをアプリに許可します。"</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"ウェブのブックマークと履歴の書き込み"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"タブレットに保存されているブラウザの履歴やブックマークを変更することをアプリに許可します。この許可を悪意のあるアプリに利用されると、ブラウザのデータが消去または変更される恐れがあります。"</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"携帯端末に保存されているブラウザの履歴やブックマークを変更することをアプリに許可します。この許可を悪意のあるアプリに利用されると、ブラウザのデータが消去または変更される恐れがあります。"</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"アラームの設定"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"インストール済みアラームアプリのアラームを設定することをアプリに許可します。この機能が実装されていないアラームアプリもあります。"</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"ボイスメールの追加"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"ボイスメール受信トレイにメッセージを追加することをアプリに許可します。"</string>
@@ -1087,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"日付設定"</string>
<string name="date_time_set" msgid="5777075614321087758">"設定"</string>
<string name="date_time_done" msgid="2507683751759308828">"完了"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"端末既定"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NEW: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NEW: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"権限の許可は必要ありません"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"隠す"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"すべて表示"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"USBマスストレージ"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"USB接続"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"USBでパソコンに接続しています。パソコンとAndroidのUSBストレージ間でファイルをコピーするには下のボタンをタップします。"</string>
@@ -1320,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"送信中..."</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"ブラウザを起動しますか?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"通話を受けますか?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index 19e4fc9..adafd25 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"메시지"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"SMS, 이메일 및 기타 메시지를 읽고 씁니다."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"개인정보"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"태블릿에 저장된 주소록 및 캘린더에 직접 액세스합니다."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"휴대전화에 저장된 주소록 및 캘린더에 직접 액세스합니다."</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"연락처 카드에 저장된 내 개인 정보에 직접 액세스합니다."</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"소셜 정보"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"내 연락처 및 소셜 친구의 개인 정보에 직접 액세스합니다."</string>
<string name="permgrouplab_location" msgid="635149742436692049">"위치"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"실제 위치 모니터링"</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"네트워크 통신"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"다양한 네트워크 기능에 액세스할 수 있도록 합니다."</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"오디오 설정"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"오디오 설정을 변경합니다."</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"배터리에 영향"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"배터리를 빨리 소모시킬 수 있는 기능을 사용합니다."</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"캘린더"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"캘린더 및 일정에 직접 액세스합니다."</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"북마크 및 기록"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"북마크 및 브라우저 기록에 직접 액세스합니다."</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"알람"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"알람 시계를 설정합니다."</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"음성사서함"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"음성사서함에 직접 액세스합니다."</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"마이크"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"오디오를 녹음하기 위해 마이크에 직접 액세스합니다."</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"카메라"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"이미지 및 동영상을 캡처하기 위해 카메라에 직접 액세스합니다."</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"애플리케이션 정보"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"기기의 다른 애플리케이션의 작동에 영향을 줄 수 있습니다."</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"배경화면"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"기기 배경화면 설정을 변경합니다."</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"시계"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"기기 시간 및 시간대를 변경합니다."</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"상태 표시줄"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"기기 상태 표시줄 설정을 변경합니다."</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"동기화 설정"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"동기화 설정에 액세스합니다."</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"계정"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"사용 가능한 계정에 액세스합니다."</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"하드웨어 제어"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"시스템을 하위 수준에서 액세스하고 제어합니다."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"개발 도구"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"앱 개발자에게만 필요한 기능입니다."</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"다른 애플리케이션 UI"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"다른 애플리케이션의 UI에 영향을 줍니다."</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"저장"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"USB 저장소에 액세스합니다."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"SD 카드에 액세스합니다."</string>
@@ -193,14 +238,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"앱이 상태 표시줄이 되도록 허용합니다."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"상태 표시줄 확장/축소"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"앱이 상태 표시줄을 확장하거나 축소할 수 있도록 허용합니다."</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"발신전화 경로 전환"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"앱이 발신전화를 처리하고 전화를 걸 번호를 변경할 수 있도록 허용합니다. 이 경우 악성 앱이 발신전화를 모니터링하거나, 리디렉션하거나, 차단할 수도 있습니다."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"문자 메시지 받기(SMS)"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"앱이 SMS 메시지를 받고 처리할 수 있도록 허용합니다. 이 경우 악성 앱이 메시지를 모니터링하거나 사용자가 보기 전에 삭제할 수 있습니다."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"문자 메시지 받기(MMS)"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"앱이 MMS 메시지를 받고 처리할 수 있도록 허용합니다. 이 경우 악성 앱이 메시지를 모니터링하거나 사용자가 보기 전에 삭제할 수 있습니다."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"긴급 방송 수신"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"앱이 긴급 브로드캐스트 메시지를 수신하고 처리할 수 있도록 허용합니다. 이 권한은 시스템 앱에만 사용할 수 있습니다."</string>
@@ -210,16 +252,13 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"앱이 SMS 메시지를 보낼 수 있도록 허용합니다. 이 경우 악성 앱이 사용자의 확인 없이 메시지를 전송하여 요금이 부과될 수 있습니다."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"확인 없이 SMS 메시지 보내기"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"앱이 SMS 메시지를 보낼 수 있도록 허용합니다. 이 경우 악성 앱이 사용자의 확인 없이 메시지를 전송하여 요금이 부과될 수 있습니다."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"내 문자 메시지 읽기(SMS 또는 MMS)"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"앱이 태블릿 또는 SIM 카드에 저장된 SMS 메시지를 읽을 수 있도록 허용합니다. 이 경우 악성 앱이 기밀 메시지를 읽을 수 있습니다."</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"앱이 휴대전화 또는 SIM 카드에 저장된 SMS 메시지를 읽을 수 있도록 허용합니다. 이 경우 악성 앱이 기밀 메시지를 읽을 수 있습니다."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"내 문자 메시지 수정(SMS 또는 MMS)"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"앱이 태블릿 또는 SIM 카드에 저장된 SMS 메시지에 쓸 수 있도록 허용합니다. 이 경우 악성 앱이 이 기능을 이용하여 메시지를 삭제할 수 있습니다."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"앱이 휴대전화 또는 SIM 카드에 저장된 SMS 메시지에 쓸 수 있도록 허용합니다. 이 경우 악성 앱이 이 기능을 이용하여 메시지를 삭제할 수 있습니다."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"문자 메시지 받기(WAP)"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"앱이 WAP 메시지를 받고 처리할 수 있도록 허용합니다. 이 경우 악성 앱이 메시지를 모니터링하거나 사용자가 보기 전에 삭제할 수 있습니다."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"실행 중인 앱 검색"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"앱이 현재 실행 중이거나 최근에 실행된 작업에 대한 정보를 검색할 수 있도록 허용합니다. 이 경우 악성 앱이 다른 앱에 대한 개인 정보를 검색할 수 있습니다."</string>
@@ -235,13 +274,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"앱이 다른 애플리케이션의 화면 호환성 모드를 제어할 수 있도록 허용합니다. 이 경우 악성 애플리케이션이 다른 애플리케이션의 동작을 멈추게 할 수 있습니다."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"앱 디버깅 사용"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"애플리케이션이 다른 애플리케이션에 대해 디버깅을 사용할 수 있도록 허용합니다. 이 경우 악성 애플리케이션이 다른 애플리케이션을 중지시킬 수 있습니다."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"시스템 표시 설정 변경"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"애플리케이션이 언어 또는 전체 글꼴 크기와 같은 현재 구성을 변경할 수 있도록 허용합니다."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"운전모드 사용"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"앱이 운전모드를 사용할 수 있도록 허용합니다."</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"다른 앱 종료"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"메모리가 부족하지 않은 경우에도 앱이 다른 앱의 백그라운드 프로세스를 중단할 수 있도록 허용합니다."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"다른 앱 강제 종료"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"앱이 다른 앱을 강제로 종료할 수 있도록 허용합니다."</string>
@@ -265,8 +302,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"앱이 WAP PUSH 메시지를 받았다는 알림을 브로드캐스트할 수 있도록 허용합니다. 이 경우 악성 앱이 MMS 메시지를 받은 것처럼 위장하거나 웹페이지의 콘텐츠를 악성 콘텐츠로 몰래 바꿀 수 있습니다."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"실행 중인 프로세스 수 제한"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"앱이 실행할 최대 프로세스 수를 제어할 수 있도록 허용합니다. 일반 앱에는 필요하지 않습니다."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"백그라운드 앱 강제 종료"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"앱이 백그라운드로 이동한 활동을 항상 바로 종료할지 여부를 제어할 수 있도록 허용합니다. 일반 앱에는 필요하지 않습니다."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"배터리 통계 수정"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"앱이 수집된 배터리 통계를 수정할 수 있도록 허용합니다. 일반 앱에서는 사용하지 않습니다."</string>
@@ -276,8 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"앱이 전체 백업 확인 UI를 실행하도록 허용합니다. 다른 앱에는 사용할 수 없습니다."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"인증되지 않은 창 표시"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"애플리케이션이 내부 시스템 사용자 인터페이스에서 사용하는 창을 만들 수 있도록 허용합니다. 일반 애플리케이션에서는 사용하지 않습니다."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"다른 앱 위에 그리기"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"앱이 시스템 경고 창을 표시할 수 있도록 허용합니다. 이 경우 악성 앱이 화면 전체를 차지할 수 있습니다."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"전체 애니메이션 속도 수정"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"애플리케이션이 언제든지 전체 애니메이션 속도를 빠르게 또는 느리게 변경할 수 있도록 허용합니다."</string>
@@ -339,39 +374,33 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"애플리케이션이 해당 애플리케이션 및 기타 애플리케이션에 대한 특정 권한을 승인 또는 취소하도록 허용합니다. 이 경우 악성 애플리케이션이 승인되지 않은 기능에 액세스할 수 있습니다."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"기본 앱 설정"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"앱이 기본 앱을 수정할 수 있도록 허용합니다. 이 경우 악성 앱이 실행되는 앱을 몰래 변경하고 기존 앱으로 위장하여 사용자의 개인 정보를 수집할 수 있습니다."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"시스템 설정 수정"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"앱이 시스템의 설정 데이터를 수정할 수 있도록 허용합니다. 이 경우 악성 앱이 시스템 구성을 손상시킬 수 있습니다."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"보안 시스템 설정 수정"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"앱이 시스템의 보안 설정값 데이터를 수정할 수 있도록 허용합니다. 일반 앱에서는 사용하지 않습니다."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"Google 서비스 지도 수정"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"앱이 Google 서비스 지도를 수정할 수 있도록 허용합니다. 일반 앱에서는 사용하지 않습니다."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"시작할 때 실행"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"앱이 시스템 부팅이 끝난 후 바로 시작할 수 있도록 허용합니다. 이 경우 태블릿이 시작하는 데 시간이 오래 걸리고 앱이 항상 실행되어 전체 태블릿 속도가 느려질 수 있습니다."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"앱이 시스템 부팅이 끝난 후 바로 시작할 수 있도록 허용합니다. 이 경우 휴대전화가 시작하는 데 시간이 오래 걸리고 앱이 항상 실행되어 전체 휴대전화 속도가 느려질 수 있습니다."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"스티키 브로드캐스트 보내기"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"앱이 브로드캐스트가 끝난 후에 남은 브로드캐스트를 보낼 수 있도록 허용합니다. 이 경우 악성 앱이 태블릿에서 메모리를 너무 많이 사용하도록 하여 속도를 저하시키거나 불안정하게 만들 수 있습니다."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"앱이 브로드캐스트가 끝난 후에 남은 브로드캐스트를 보낼 수 있도록 허용합니다. 이 경우 악성 앱이 휴대전화에서 메모리를 너무 많이 사용하도록 하여 속도를 저하시키거나 불안정하게 만들 수 있습니다."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
- <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"특정인과 전화, 이메일 또는 기타 수단으로 연락한 빈도를 포함하여 내 태블릿에 저장된 연락처에 대한 모든 데이터를 앱이 읽도록 허용합니다. 이렇게 하면 이메일 주소 자동완성과 기타 편리한 기능을 사용할 수 있습니다. 한편 악성 앱이 이를 악용하여 내 연락처 데이터를 다른 사람에게 전송할 수 있습니다."</string>
- <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"특정인과 전화, 이메일 또는 기타 수단으로 연락한 빈도를 포함하여 내 휴대전화에 저장된 연락처에 대한 모든 데이터를 앱이 읽도록 허용합니다. 이렇게 하면 이메일 주소 자동완성과 기타 편리한 기능을 사용할 수 있습니다. 한편 악성 앱이 이를 악용하여 내 연락처 데이터를 다른 사람에게 전송할 수 있습니다."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
- <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"특정인과 전화, 이메일 또는 기타 수단으로 연락한 빈도를 포함하여 내 휴대전화에 저장된 연락처에 대한 모든 데이터를 앱이 수정하도록 허용합니다. 이렇게 하면 이메일 주소 자동완성과 기타 편리한 기능을 사용할 수 있습니다. 한편 악성 앱이 이를 악용하여 내 연락처 데이터를 삭제 또는 수정할 수 있습니다."</string>
- <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"특정인과 전화, 이메일 또는 기타 수단으로 연락한 빈도를 포함하여 내 휴대전화에 저장된 연락처에 대한 모든 데이터를 앱이 수정하도록 허용합니다. 이렇게 하면 이메일 주소 자동완성과 기타 편리한 기능을 사용할 수 있습니다. 한편 악성 앱이 이를 악용하여 내 연락처 데이터를 삭제 또는 수정할 수 있습니다."</string>
+ <string name="permlab_readContacts" msgid="8348481131899886131">"주소록 읽기"</string>
+ <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"특정인과 전화, 이메일 또는 기타 수단으로 연락한 빈도를 포함하여 내 태블릿에 저장된 연락처에 대한 모든 데이터를 앱이 읽도록 허용합니다. 이렇게 하면 이메일 주소 자동완성과 기타 편리한 기능을 사용할 수 있습니다. 악성 앱이 이를 악용하여 내 연락처 데이터를 다른 사람에게 전송할 수 있습니다."</string>
+ <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"특정인과 전화, 이메일 또는 기타 수단으로 연락한 빈도를 포함하여 내 휴대전화에 저장된 연락처에 대한 모든 데이터를 앱이 읽도록 허용합니다. 이렇게 하면 이메일 주소 자동완성과 기타 편리한 기능을 사용할 수 있습니다. 악성 앱이 이를 악용하여 내 연락처 데이터를 다른 사람에게 전송할 수 있습니다."</string>
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"주소록 수정"</string>
+ <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"특정인과 전화, 이메일 또는 기타 수단으로 연락한 빈도를 포함하여 내 태블릿에 저장된 연락처에 대한 모든 데이터를 앱이 수정하도록 허용합니다. 이렇게 하면 이메일 주소 자동완성과 기타 편리한 기능을 사용할 수 있습니다. 악성 앱이 이를 악용하여 내 연락처 데이터를 삭제 또는 수정할 수 있습니다."</string>
+ <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"특정인과 전화, 이메일 또는 기타 수단으로 연락한 빈도를 포함하여 내 휴대전화에 저장된 연락처에 대한 모든 데이터를 앱이 수정하도록 허용합니다. 이렇게 하면 이메일 주소 자동완성과 기타 편리한 기능을 사용할 수 있습니다. 악성 앱이 이를 악용하여 내 연락처 데이터를 삭제 또는 수정할 수 있습니다."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"통화 기록 읽기"</string>
<string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"앱에서 수신 및 발신 통화 데이터를 포함하여 태블릿의 통화 기록을 읽을 수 있도록 허용합니다. 이 경우 악성 앱이 데이터를 다른 사용자에게 보낼 수 있습니다."</string>
<string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"앱에서 수신 및 발신 통화 데이터를 포함하여 휴대전화의 통화 기록을 읽을 수 있도록 허용합니다. 이 경우 악성 앱이 데이터를 다른 사용자에게 보낼 수 있습니다."</string>
<string name="permlab_writeCallLog" msgid="8552045664743499354">"통화 기록 쓰기"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"앱에서 수신 및 발신 통화 데이터를 포함하여 태블릿의 통화 기록을 수정할 수 있도록 허용합니다. 이 경우 악성 앱이 통화 기록을 지우거나 수정할 수 있습니다."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"앱에서 수신 및 발신 통화 데이터를 포함하여 휴대전화의 통화 기록을 수정할 수 있도록 허용합니다. 이 경우 악성 앱이 통화 기록을 지우거나 수정할 수 있습니다."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"나만의 연락처 카드 읽기"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"앱이 기기에 저장된 개인 프로필 정보(예: 사용자 이름, 연락처 정보 등)를 읽을 수 있도록 허용합니다. 이는 앱이 사용자를 확인하고 다른 사용자들에게 해당 프로필 정보를 전송할 수 있다는 것을 의미합니다."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"나만의 연락처 카드 수정"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"앱이 기기에 저장된 개인 프로필 정보(예: 사용자 이름, 연락처 정보 등)를 변경하거나 추가할 수 있도록 허용합니다. 이는 다른 앱이 사용자를 확인하고 다른 사용자들에게 해당 프로필 정보를 전송할 수 있다는 것을 의미합니다."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"소셜 스트림 읽기"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"앱이 나와 친구의 최신 소셜 소식에 액세스하고 동기화할 수 있도록 허용합니다. 이 경우 악성 앱이 소셜 네트워크에서 나와 친구가 주고받은 사적인 내용을 읽을 수 있습니다."</string>
@@ -412,15 +441,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"휴대전화 강제로 다시 부팅"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"앱이 태블릿을 강제로 재부팅할 수 있도록 허용합니다."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"앱이 휴대전화를 강제로 재부팅할 수 있도록 허용합니다."</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"USB 저장소 파일 시스템에 액세스"</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"SD 카드 파일 시스템에 액세스"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"앱이 이동식 저장소의 파일 시스템을 마운트하고 마운트 해제할 수 있도록 허용합니다."</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"USB 저장소 지우기"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"SD 카드 지우기"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"앱이 이동식 저장소를 포맷할 수 있도록 허용합니다."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"내부 저장소에 대한 정보 가져오기"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"앱이 내부 저장소의 정보를 가져올 수 있도록 허용합니다."</string>
@@ -432,8 +457,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"앱이 내부 저장소를 마운트/마운트 해제할 수 있도록 허용합니다."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"내부 저장소 이름 바꾸기"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"앱이 내부 저장소의 이름을 바꿀 수 있도록 허용합니다."</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"진동 제어"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"앱이 진동을 제어할 수 있도록 허용합니다."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"카메라 플래시 제어"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"앱이 카메라 플래시를 제어할 수 있도록 허용합니다."</string>
@@ -458,8 +482,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"앱이 각 앱에 대해 사용할 수 있는 위젯을 시스템에 알릴 수 있도록 허용합니다. 이 권한을 갖는 앱은 개인 정보에 대한 액세스 권한을 다른 앱에 부여할 수 있습니다. 일반 앱에서는 사용하지 않습니다."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"휴대전화 상태 수정"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"앱이 기기의 휴대전화 기능을 관리할 수 있도록 허용합니다. 이 권한을 갖는 앱은 사용자에게 알리지 않고 네트워크를 전환하거나 무선 기능을 켜고 끄는 등의 작업을 수행할 수 있습니다."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"휴대전화 상태 및 ID 읽기"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"앱이 기기의 휴대전화 기능에 접근할 수 있도록 허용합니다. 이 권한을 갖는 앱은 휴대전화의 전화번호 및 일련번호, 통화가 활성인지 여부, 통화가 연결된 번호 등을 확인할 수 있습니다."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"태블릿이 절전 모드로 전환되지 않도록 설정"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"휴대전화가 절전 모드로 전환되지 않도록 설정"</string>
@@ -474,8 +497,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"휴대전화 하드웨어에 대한 완전한 액세스를 허용하는 하위 수준의 제조업체 테스트로 실행됩니다. 휴대전화가 제조업체 테스트 모드로 실행 중일 때만 사용할 수 있습니다."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"배경화면 설정"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"앱이 시스템 배경화면을 설정할 수 있도록 허용합니다."</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"배경화면 크기 조정"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"앱이 시스템 배경화면 크기 힌트를 설정할 수 있도록 허용합니다."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"시스템 초기화"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"앱이 모든 데이터, 구성 및 설치된 앱을 지워서 시스템을 완전히 초기화할 수 있도록 허용합니다."</string>
@@ -487,21 +509,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"앱이 휴대전화의 표준시간대를 변경할 수 있도록 허용합니다."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"AccountManagerService로 활동"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"애플리케이션이 AccountAuthenticators를 호출할 수 있도록 허용합니다."</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"기기에서 계정 검색"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"앱이 태블릿에 알려진 계정 목록을 가져올 수 있도록 허용합니다."</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"앱이 휴대전화에 알려진 계정 목록을 가져올 수 있도록 허용합니다."</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"계정 만들기 및 비밀번호 설정"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"앱이 계정 만들기, 비밀번호 가져오기 및 설정 등과 같은 관리자의 계정 인증자 기능을 사용할 수 있도록 허용합니다."</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"계정 추가 또는 삭제"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"앱이 계정 추가, 삭제 및 비밀번호 삭제 등의 작업을 수행할 수 있도록 허용합니다."</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"기기에서 계정 사용"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"앱이 인증 토큰을 요청하도록 허용합니다."</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"네트워크 연결 보기"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"앱이 모든 네트워크의 상태를 볼 수 있도록 허용합니다."</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"인터넷 액세스"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"앱이 네트워크 소켓을 만들 수 있도록 허용합니다."</string>
@@ -513,36 +530,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"앱이 테더링된 네트워크 연결 상태를 변경할 수 있도록 허용합니다."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"백그라운드 데이터 사용 설정 변경"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"앱이 백그라운드 데이터 사용 설정을 변경할 수 있도록 허용합니다."</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"Wi-Fi 연결 보기"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"앱이 Wi-Fi의 상태에 대한 정보를 볼 수 있도록 허용합니다."</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"Wi-Fi 연결 및 연결 해제"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"앱이 Wi-Fi 액세스 포인트에 연결하거나 연결을 끊고, 설정된 Wi-Fi 네트워크를 변경할 수 있도록 허용합니다."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"Wi-Fi 멀티캐스트 수신 허용"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"앱이 기기로 직접 주소가 지정되지 않은 패킷을 받을 수 있도록 허용합니다. 이 기능은 가까운 곳에서 제공되는 서비스를 검색할 때 유용하며 비멀티캐스트 모드보다 전원을 더 많이 소비합니다."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"블루투스 설정에 액세스"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"앱이 로컬 블루투스 태블릿을 설정한 다음 원격 기기를 검색하여 페어링할 수 있도록 허용합니다."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"앱이 로컬 블루투스 휴대전화를 설정한 다음 원격 기기를 검색하여 페어링할 수 있도록 허용합니다."</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"WiMAX 연결 보기"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"애플리케이션이 WiMAX의 상태에 대한 정보를 볼 수 있도록 허용합니다."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"WiMAX 상태 변경"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"애플리케이션이 WiMAX 네트워크에 연결하거나 연결을 끊을 수 있도록 합니다."</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"블루투스 기기와 페어링"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"앱이 로컬 블루투스 태블릿의 구성을 보고 페어링된 기기에 연결하며 연결을 수락할 수 있도록 허용합니다."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"앱이 로컬 블루투스 전화의 구성을 보고 페어링된 기기에 연결하며 연결을 수락할 수 있도록 허용합니다."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"NFC(Near Field Communication) 제어"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"앱이 NFC(근거리 무선 통신) 태그, 카드 및 리더와 통신할 수 있도록 허용합니다."</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"화면 잠금 사용 중지"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"앱이 키 잠금 및 관련 비밀번호 보안을 사용중지할 수 있도록 허용합니다. 예를 들어, 휴대전화가 수신전화를 받을 때 키 잠금을 사용중지했다가 통화가 끝나면 키 잠금을 다시 사용할 수 있습니다."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"동기화 설정 읽기"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"앱이 피플 앱(People app)에 동기화를 사용할지 여부 등의 동기화 설정을 읽을 수 있도록 허용합니다."</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"동기화 사용 및 사용 중지 전환"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"앱이 피플 앱(People app)에 대해 동기화를 사용할지 여부 등의 동기화 설정을 수정할 수 있도록 허용합니다."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"동기화 통계 읽기"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"앱이 동기화 통계(예: 실행된 동기화 기록)을 읽을 수 있도록 허용합니다."</string>
@@ -550,22 +560,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"앱이 현재 동기화된 피드에 대한 세부정보를 가져올 수 있도록 허용합니다."</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"가입 피드 작성"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"앱이 현재 동기화된 피드를 수정할 수 있도록 허용합니다. 이 경우 악성 앱이 동기화된 피드를 변경할 수 있습니다."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"사전에 추가한 단어 읽기"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"앱이 사용자 사전에 보관되어 있는 비공개 단어, 이름 및 구문을 읽도록 허용합니다."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"사용자 정의 사전에 작성"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"앱이 사용자 사전에 새 단어를 입력할 수 있도록 허용합니다."</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"USB 저장소의 콘텐츠 읽기"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"SD 카드의 콘텐츠 읽기"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"앱이 사진과 미디어를 포함하고 있을 수 있는 USB 저장소의 콘텐츠를 읽도록 허용합니다."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"앱이 사진과 미디어를 포함하고 있을 수 있는 SD 카드의 콘텐츠를 읽도록 허용합니다."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"USB 저장소의 콘텐츠 수정 또는 삭제"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"앱이 USB 저장소에 쓸 수 있도록 허용합니다."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"앱이 SD 카드에 쓸 수 있도록 허용합니다."</string>
@@ -744,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"휴대전화에 SIM 카드가 없습니다."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"SIM 카드를 삽입하세요."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM 카드가 없거나 읽을 수 없습니다. SIM 카드를 삽입하세요."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"사용할 수 없는 SIM 카드입니다."</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"SIM 카드 사용이 영구적으로 사용중지되었습니다."\n"다른 SIM 카드를 사용하려면 무선 서비스 제공업체에 문의하시기 바랍니다."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"이전 트랙 버튼"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"다음 트랙 버튼"</string>
@@ -786,10 +791,10 @@
<string name="password_keyboard_label_symbol_key" msgid="992280756256536042">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="8001096175167485649">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="1284820942620288678">"ALT"</string>
- <string name="granularity_label_character" msgid="7336470535385009523">"특성"</string>
+ <string name="granularity_label_character" msgid="7336470535385009523">"문자"</string>
<string name="granularity_label_word" msgid="7075570328374918660">"단어"</string>
<string name="granularity_label_link" msgid="5815508880782488267">"링크"</string>
- <string name="granularity_label_line" msgid="5764267235026120888">"선"</string>
+ <string name="granularity_label_line" msgid="5764267235026120888">"행"</string>
<string name="hour_ampm" msgid="4584338083529355982">"<xliff:g id="AMPM">%P</xliff:g> <xliff:g id="HOUR">%-l</xliff:g>시"</string>
<string name="hour_cap_ampm" msgid="2083465992940444366">"<xliff:g id="AMPM">%p</xliff:g> <xliff:g id="HOUR">%-l</xliff:g>시"</string>
<string name="factorytest_failed" msgid="5410270329114212041">"출고 테스트 불합격"</string>
@@ -819,15 +824,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"군"</string>
<string name="autofill_area" msgid="3547409050889952423">"구역"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"에미리트"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"웹 북마크 및 기록 읽기"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"앱이 브라우저로 방문한 모든 URL과 브라우저의 모든 북마크를 읽을 수 있도록 허용합니다."</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"웹 북마크 및 기록 쓰기"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"앱이 태블릿에 저장된 브라우저 기록 또는 북마크를 수정할 수 있도록 허용합니다. 이 경우 악성 앱이 브라우저의 데이터를 지우거나 수정할 수 있습니다."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"앱이 휴대전화에 저장된 브라우저 기록 또는 북마크를 수정할 수 있도록 허용합니다. 이 경우 악성 앱이 브라우저의 데이터를 지우거나 수정할 수 있습니다."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"알람 설정"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"앱이 설치된 알람 시계 앱에서 알람을 설정할 수 있도록 허용합니다. 일부 알람 시계 앱에는 이 기능이 구현되지 않을 수 있습니다."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"음성사서함 추가"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"앱이 음성사서함에 메시지를 추가할 수 있도록 허용합니다."</string>
@@ -1087,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"날짜 설정"</string>
<string name="date_time_set" msgid="5777075614321087758">"설정"</string>
<string name="date_time_done" msgid="2507683751759308828">"완료"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"기본값"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"신규: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"신규: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"권한 필요 없음"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"숨기기"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"모두 표시"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"USB 대용량 저장소"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"USB 연결됨"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"USB를 통해 컴퓨터에 연결했습니다. 컴퓨터와 Android의 USB 저장소 간에 파일을 복사하려면 아래의 버튼을 터치하세요."</string>
@@ -1320,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"전송 중..."</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"브라우저를 실행하시겠습니까?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"통화를 수락하시겠습니까?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-large/dimens.xml b/core/res/res/values-large/dimens.xml
index 864675a..8cd614d 100644
--- a/core/res/res/values-large/dimens.xml
+++ b/core/res/res/values-large/dimens.xml
@@ -24,10 +24,6 @@
<!-- keyboardHeight = key_height*4 + key_bottom_gap*3 -->
<dimen name="password_keyboard_height">48.0mm</dimen>
- <!-- The width that is used when creating thumbnails of applications. -->
- <dimen name="thumbnail_width">230dp</dimen>
- <!-- The height that is used when creating thumbnails of applications. -->
- <dimen name="thumbnail_height">135dp</dimen>
<!-- Minimum width of the search view text entry area. -->
<dimen name="search_view_text_min_width">192dip</dimen>
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index 8cf036c..1819172 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"Jūsų pranešimai"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"Skaitykite ir rašykite SMS, el. laiškus ir kitus pranešimus."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Asmeninė informacija"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Tiesioginė prieiga prie kontaktų ir kalendoriaus, išsaugotų planšetiniame kompiuteryje."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Tiesioginė prieiga prie adresatų ir kalendoriaus, saugomų telefone."</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Tiesioginė prieiga prie informacijos, saugomos kontaktinėje kortelėje."</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Socialinė informacija"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Tiesioginė prieiga prie kontaktų ir socialinių ryšių informacijos."</string>
<string name="permgrouplab_location" msgid="635149742436692049">"Jūsų vieta"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"Stebėti fizinę vietą."</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"Tinklo ryšys"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"Pasiekti įvairias tinklo funkcijas."</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Garso nustatymai"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Keisti garso nustatymus."</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Paveikia akumuliatorių"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Naudoti funkcijas, galinčias greitai iškrauti akumuliatorių."</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"Kalendorius"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Tiesioginė prieiga prie kalendoriaus ir įvykių."</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Žymės ir istorija"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Tiesioginė prieiga prie žymių ir naršyklės istorijos."</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Signalas"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Nustatyti žadintuvo signalą."</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Balso paštas"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Tiesioginė prieiga prie balso pašto."</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"Mikrofonas"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Tiesioginė prieiga prie mikrofono, kad būtų galima įrašyti garsą."</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"Fotoaparatas"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"Tiesioginė prieiga prie fotoaparato, kad būtų galima fotografuoti vaizdus arba įrašyti vaizdo įrašus."</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Programų informacija"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Galimybė paveikti kitų įrenginio programų veikimą."</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Ekrano fonas"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Keisti įrenginio ekrano fono nustatymus."</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"Laikrodis"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Keisti įrenginio laiką arba laiko juostą."</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Būsenos juosta"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Keisti įrenginio būsenos juostos nustatymus."</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Sinchronizavimo nustatymai"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Prieiga prie sinchronizavimo nustatymų."</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"Jūsų paskyros"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"Pasiekite galimas paskyras."</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Aparatinės įrangos valdikliai"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Žemesnio lygio prieiga prie sistemos ir jos valdymas."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Kūrėjo įrankiai"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Funkcijos reikalingos tik programos kūrėjams."</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"Kitų programų naudotojo sąsaja"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"Paveikti kitų programų naudotojo sąsają."</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"Saugykla"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Pasiekti USB atmintinę."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Pasiekite SD kortelę."</string>
@@ -193,14 +238,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"Leidžiama programai būti būsenos juosta."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"išskleisti / sutraukti būsenos juostą"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Leidžiama programai išskleisti arba sutraukti būsenos juostą."</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"peradresuoti išsiunčiamuosius skambučius"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Leidžiama programai apdoroti siunčiamuosius skambučius ir pakeisti renkamą numerį. Kenkėjiškos programos gali stebėti, peradresuoti siunčiamuosius skambučius ar jų neleisti."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"gauti teksto pranešimus (SMS)"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"Leidžiama programai gauti ir apdoroti SMS pranešimus. Kenkėjiškos programos gali stebėti jūsų pranešimus ar ištrinti juos neparodydamos jų jums."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"gauti teksto pranešimus (MMS)"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"Leidžiama programai gauti ir apdoroti MMS pranešimus. Kenkėjiškos programos gali stebėti jūsų pranešimus ar ištrinti juos neparodydamos jų jums."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"gauti kritinės padėties transliacijas"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Leidžiama programai gauti ir apdoroti skubiai pateikiamus pranešimus. Šis leidimas galimas tik sistemos programoms."</string>
@@ -210,21 +252,18 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"Leidžiama programai siųsti SMS pranešimus. Kenkėjiškos programos gali siųsti mokamus pranešimus be jūsų patvirtinimo."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"siųsti SMS pranešimus be patvirtinimo"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Leidžiama programai siųsti SMS pranešimus. Kenkėjiškos programos gali siųsti mokamus pranešimus be jūsų patvirtinimo."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"skaityti teksto pranešimus (SMS arba MMS)"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Leidžiama programai skaityti planšetiniame kompiuteryje ar SIM kortelėje saugomus SMS pranešimus. Kenkėjiškos programos gali skaityti jūsų konfidencialius pranešimus."</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Leidžiama programai skaityti telefone ar SIM kortelėje saugomus SMS pranešimus. Kenkėjiškos programos gali skaityti jūsų konfidencialius pranešimus."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"redaguoti teksto pranešimus (SMS arba MMS)"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Leidžiama programai rašyti SMS pranešimus, išsaugotus jūsų planšetiniame kompiuteryje ar SIM kortelėje. Kenkėjiškos programos gali ištrinti jūsų pranešimus."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Leidžiama programai rašyti SMS pranešimus, išsaugotus jūsų telefone ar SIM kortelėje. Kenkėjiškos programos gali ištrinti jūsų pranešimus."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"gauti teksto pranešimus (WAP)"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Leidžiama programai gauti ir apdoroti WAP pranešimus. Kenkėjiškos programos gali stebėti jūsų pranešimus ar ištrinti juos neparodydamos jų jums."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"nuskaityti vykdomas programas"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"Leidžiama programai nuskaityti informaciją apie šiuo ir paskutiniu metu vykdomas užduotis. Kenkėjiškos programos gali atrasti privačios informacijos apie kitas programas."</string>
<string name="permlab_getDetailedTasks" msgid="6229468674753529501">"nuskaityti veikiančių programų išsamią informaciją"</string>
- <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Leidžiama programai nuskaityti išsamią informaciją apie šiuo ir pastaruoju metu vykdomas užduotis. Kenkėjiškos programos gali atrasti privačios informacijos apie kitas programas."</string>
+ <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Leidžiama programai nuskaityti išsamią informaciją apie šiuo ir pastaruoju metu vykdomas užduotis. Kenkėjiškos programos gali surasti privačios informacijos apie kitas programas."</string>
<string name="permlab_reorderTasks" msgid="2018575526934422779">"pertvarkyti vykdomas programas"</string>
<string name="permdesc_reorderTasks" msgid="4175137612205663399">"Leidžiama programai užduotis perkelti į priekinį planą ir į foną. Kenkėjiškos programos gali priverstinai persikelti į priekį be jūsų įsikišimo."</string>
<string name="permlab_removeTasks" msgid="6821513401870377403">"sustabdyti vykdomas programas"</string>
@@ -235,13 +274,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Programai leidžiama valdyti kitų programų ekrano suderinamumo režimą. Kenkėjiškos programos gali kliudyti veikti kitoms programoms."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"įgalinti programos derinimą"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"Leidžiama programai įjungti kitos programos derinimą. Kenkėjiškos programos gali tai naudoti, kad išjungtų kitas programas."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"keisti sistemos rodymo nustatymus"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Leidžiama programai keisti dabartinę konfigūraciją, pvz., lokalę ar viso šrifto dydį."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"įgalinti automobilio režimą"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"Leidžiama programai įgalinti automobilio režimą."</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"uždaryti kitas programas"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Leidžiama programai nutraukti kitų programų fono procesus, net jei netrūksta atminties vietos."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"priverstinai stabdyti kitas programas"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Leidžiama programai priverstinai stabdyti kitas programas."</string>
@@ -265,8 +302,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Leidžiama programai pateikti pranešimą, kai gaunamas WAP PUSH pranešimas. Kenkėjiškos programos gali tai naudoti, kad klastotų MMS pranešimo gavimą ar kad nepastebimai pakeistų bet kurio tinklalapio turinį kenkėjiškais variantais."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"riboti vykdomų procesų skaičių"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Leidžiama programai valdyti didžiausią vykdomų procesų skaičių. Nereikalinga įprastoms programoms."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"priverstinai uždaryti fonines programas"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Leidžiama programai valdyti, ar veiksmai visada užbaigiami, kai jie perkeliami į foną. Nereikalinga įprastoms programoms."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"keisti akumuliatoriaus statistiką"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"Leidžiama programai keisti surinktą akumuliatoriaus statistiką. Neskirta naudoti įprastoms programoms."</string>
@@ -276,8 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Leidžiama programai paleisti visą atsarginę patvirtinimo NS. Neskirta naudoti bet kokiai programai."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"pateikti neteisėtus langus"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Leidžiama programai kurti langus, kuriuos turėtų naudoti vidinės sistemos naudotojo sąsaja. Neskirta naudoti įprastoms programoms."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"perrašyti kitas programas"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Leidžiama programoms rodyti sistemos įspėjimų langus. Kenkėjiškos programos gali apimti visą ekraną."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"keisti visos animacijos greitį"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Leidžiama programai bet kuriuo metu keisti visą animacijos greitį (greitesnių ar lėtesnių animacijų)."</string>
@@ -339,26 +374,22 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Programai leidžiama suteikti arba panaikinti konkrečius savo arba kitų programų leidimus. Tuo pasinaudoję kenkėjiškos programos gali pasiekti funkcijas, kurių pasiekti joms neleidote."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"nustatyti pageidaujamas programas"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Leidžiama programai keisti jūsų pageidaujamas programas. Kenkėjiškos programos gali nepastebimai pakeisti vykdomas programas, klastodama esamas programas, kad rinktų jūsų privačius duomenis."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"keisti sistemos nustatymus"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"Leidžiama programai keisti sistemos nustatymų duomenis. Kenkėjiškos programos gali sugadinti jūsų sistemos konfigūraciją."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"keisti saugios sistemos nustatymus"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Leidžiama programai keisti sistemos saugių nustatymų duomenis. Neskirta naudoti įprastoms programoms."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"keisti „Google“ paslaugų žemėlapį"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"Leidžiama programai keisti „Google“ paslaugų žemėlapį. Neskirta naudoti įprastoms programoms."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"paleisti paleidžiant"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Leidžiama programai pasileisti, kai baigsis sistemos įkėlimas iš naujo. Dėl to planšetinio kompiuterio paleidimas gali trukti ilgiau ir programa gali sulėtinti planšetinį kompiuterį, nes ji veiks visada."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Leidžiama programai pasileisti, kai baigsis sistemos įkėlimas iš naujo. Dėl to telefono paleidimas gali trukti ilgiau ir programa gali sulėtinti telefoną, nes ji veiks visada."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"siųsti pritraukiantį perdavimą"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Leidžiama programai siųsti užsifiksuojančias transliacijas, kurios išlieka pasibaigus transliacijai. Kenkėjiškos programos gali sulėtinti planšetinį kompiuterį ar padaryti jį nestabilų versdamos naudoti per daug atminties."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Leidžiama programai siųsti užsifiksuojančias transliacijas, kurios išlieka pasibaigus transliacijai. Kenkėjiškos programos gali sulėtinti telefoną ar padaryti jį nestabilų versdamos jį naudoti per daug atminties."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
+ <string name="permlab_readContacts" msgid="8348481131899886131">"skaityti kontaktus"</string>
<string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Leidžiama programai perskaityti visus planšetiniame kompiuteryje saugomus duomenis apie kontaktus, įskaitant informaciją apie tai, kaip dažnai skambinote, rašėte el. laiškus ar kitais būdais bendravote su konkrečiais asmenimis. Tai naudinga naudojant automatinio el. pašto adresų užbaigimo ir kitas patogias funkcijas. Kenkėjiškos programos gali panaudoti šį leidimą, kad siųstų jūsų kontaktinius duomenis kitiems asmenims."</string>
<string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Leidžiama programai perskaityti visus telefone saugomus duomenis apie kontaktus, įskaitant informaciją apie tai, kaip dažnai skambinote, rašėte el. laiškus ar kitais būdais bendravote su konkrečiais asmenimis. Tai naudinga naudojant automatinio el. pašto adresų užbaigimo ir kitas patogias funkcijas. Kenkėjiškos programos gali panaudoti šį leidimą, kad siųstų jūsų kontaktinius duomenis kitiems asmenims."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"keisti kontaktus"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Leidžiama programai keisti planšetiniame kompiuteryje saugomus duomenis apie kontaktus, įskaitant informaciją apie tai, kaip dažnai skambinote, rašėte el. laiškus ar kitais būdais bendravote su konkrečiais asmenimis. Tai naudinga naudojant automatinio el. pašto adresų užbaigimo ir kitas patogias funkcijas. Kenkėjiškos programos gali tuo pasinaudoti, kad ištrintų arba pakeistų jūsų kontaktinius duomenis."</string>
<string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Leidžiama programai keisti telefone saugomus duomenis apie kontaktus, įskaitant informaciją apie tai, kaip dažnai skambinote, rašėte el. laiškus ar kitais būdais bendravote su konkrečiais asmenimis. Tai naudinga naudojant automatinio el. pašto adresų užbaigimo ir kitas patogias funkcijas. Kenkėjiškos programos gali tuo pasinaudoti, kad ištrintų arba pakeistų jūsų kontaktinius duomenis."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"skaityti skambučių žurnalą"</string>
@@ -367,11 +398,9 @@
<string name="permlab_writeCallLog" msgid="8552045664743499354">"rašyti skambučių žurnalą"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Programai leidžiama skaityti planšetinio kompiuterio skambučių žurnalą, įskaitant duomenis apie gaunamus ir siunčiamus skambučius. Kenkėjiškos programos tai gali naudoti, kad ištrintų ar keistų jūsų skambučių žurnalą."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Programai leidžiama skaityti telefono skambučių žurnalą, įskaitant duomenis apie gaunamus ir siunčiamus skambučius. Kenkėjiškos programos tai gali naudoti, kad ištrintų ar keistų jūsų skambučių žurnalą."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"skaityti jūsų kontakt. kortelę"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Leidžiama programai skaityti asmeninę profilio informaciją, saugomą jūsų įrenginyje, pvz., jūsų vardą, pavardę ir kontaktinę informaciją. Tai reiškia, kad programa gali nustatyti jūsų tapatybę ir siųsti profilio informaciją kitiems."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"keisti jūsų kontaktinę kortelę"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Leidžiama programai pakeisti asmeninę profilio informaciją, saugomą jūsų įrenginyje, pvz., jūsų vardą, pavardę ir kontaktinę informaciją, arba jos pridėti. Tai reiškia, kad kitos programos gali nustatyti jūsų tapatybę ir siųsti profilio informaciją kitiems."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"skaityti socialinį srautą"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Leidžiama programai pasiekti ir sinchronizuoti socialinius jūsų ir jūsų draugų naujinius. Kenkėjiškos programos gali naudoti tai, kad skaitytų jūsų susirašinėjimą su draugais viešuosiuose tinkluose."</string>
@@ -412,15 +441,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"pradėti telefono perkrovimą"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Leidžiama programai versti iš naujo paleisti planšetinio kompiuterio operacinę sistemą."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Leidžiama programai versti iš naujo paleisti telefono operacinę sistemą."</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"pasiekti USB atm. failų sist."</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"pasiekti SD kortelės failų sistemą"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Leidžiama programai įrengti ir pašalinti keičiamos atmintinės failų sistemas."</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"ištrinti USB atmintį"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"ištrinti SD kortelę"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Leidžiama programai formatuoti keičiamą saugyklą."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"gauti informacijos apie vidinę atmintinę"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"Leidžiama programai gauti informacijos apie vidinę atmintį."</string>
@@ -432,8 +457,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Leidžiama programai įrengti / pašalinti vidinę atmintį."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"iš naujo pavadinti vidinę atmintinę"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"Leidžiama programai pervardyti vidinę atmintį."</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"valdyti vibraciją"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"Leidžiama programai valdyti vibravimą."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"valdyti šviesos signalą"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"Leidžiama programai valdyti šviesos signalą."</string>
@@ -458,8 +482,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"Leidžiama programai pranešti, kurios programos kuriuos valdiklius gali naudoti. Šį leidimą turinti programa gali kitoms programoms suteikti prieigą prie asmeninių duomenų. Neskirta naudoti įprastoms programoms."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"keisti telefono būseną"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Leidžiama programai valdyti įrenginio telefono funkcijas. Šį leidimą turinti programa gali perjungti tinklus, įjungti ir išjungti telefono radiją ir atlikti panašius veiksmus jūsų neįspėdama."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"skaityti telefono būseną ir tapatybę"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"Leidžiama programai pasiekti įrenginio telefono funkcijas. Šį leidimą turinti programa gali nustatyti šio telefono numerį ir serijos numerį, ar skambutis yra aktyvus, numerį, kuriuo skambinama ir t. t."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"neleisti planšetiniam kompiuteriui užmigti"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"neleisti telefonui snausti"</string>
@@ -474,8 +497,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Paleisti kaip žemo lygio gamintojo bandymą, leidžiant užbaigti prieigą prie aparatinės telefono įrangos. Galima tik kai telefonas veikia gamintojo bandymo režimu."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"nustatyti darbalaukio foną"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"Leidžiama programai nustatyti sistemos darbalaukio foną."</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"keisti ekrano fono dydį"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Leidžiama programai nustatyti sistemos darbalaukio fono dydžio užuominas."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"iš naujo nustatyti sistemą į gamyklos nustatymus"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"Leidžiama programai visiškai iš naujo nustatyti sistemos nustatymus į gamyklinius ištrinant visus duomenis, konfigūraciją ir įdiegtas programas."</string>
@@ -487,21 +509,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Leidžiama programai keisti telefono laiko juostą."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"veikia kaip „AccountManagerService“"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"Leidžiama programai kreiptis „AccountAuthenticators“."</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"rasti paskyras įrenginyje"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Leidžiama programai gauti planšetiniam kompiuteriui žinomų paskyrų sąrašą."</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Leidžiama programai gauti telefonui žinomų paskyrų sąrašą."</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"kurti paskyras ir nustatyti slaptažodžius"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Leidžiama programai naudoti paskyros „AccountManager“ tapatumo nustatymo funkcijas, įskaitant paskyrų kūrimą, jų slaptažodžių gavimą ir nustatymą."</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"pridėti arba pašalinti paskyras"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"Leidžiama programai atlikti tokias operacijas kaip paskyrų pridėjimas ir pašalinimas bei slaptažodžių trynimas."</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"naudoti įrenginyje esančias paskyras"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"Leidžiama programai pateikti užklausą dėl tapatumo nustatymo prieigos raktų."</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"žiūrėti tinklo ryšius"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"Leidžiama programai žiūrėti visų tinklų būseną."</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"visa interneto prieiga"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Leidžiama programai kurti tinklo lizdus."</string>
@@ -513,36 +530,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"Leidžiama programai keisti susieto tinklo jungiamumą."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"keisti fono duomenų naudojimo nustatymą"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Leidžiama programai keisti fono duomenų naudojimo nustatymą."</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"žiūrėti „Wi-Fi“ ryšius"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"Leidžiama programai žiūrėti informaciją apie „Wi-Fi“ būseną."</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"prijungti prie „Wi-Fi“ ir atjungti nuo jo"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"Leidžiama programai prisijungti prie „Wi-Fi“ prieigos taškų ir nuo jų atsijungti bei keisti sukonfigūruotus „Wi-Fi“ tinklus."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"leisti „Wi-Fi“ daugiaadresio perdavimo priėmimą"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Leidžiama programai gauti paketus, tiesiogiai neadresuotus jūsų įrenginiui. Tai naudinga atradus šalia siūlomas paslaugas. Naudojama daugiau energijos, nei veikiant ne daugiaabonenčio perdavimo režimu."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"pasiekti „Bluetooth“ nustatymus"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Leidžiama programai konfigūruoti vietinį „Bluetooth“ planšetinį kompiuterį ir atrasti nuotolinius įrenginius bei su jais susieti."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Leidžiama programai konfigūruoti vietinį „Bluetooth“ telefoną ir atrasti bei susieti su nuotoliniais įrenginiais."</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Žiūrėti „WiMAX“ ryšius"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Leidžiama programai peržiūrėti informaciją apie „WiMAX“ būseną."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"Keisti „WiMAX“ būseną"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Leidžiama programai prisijungti prie „WiMAX“ tinklo ir nuo jo atsijungti."</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"susieti su „Bluetooth“ įrenginiais"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Leidžiama programai peržiūrėti vietinio „Bluetooth“ planšetinio kompiuterio konfigūraciją ir užmegzti bei priimti ryšius iš susietų įrenginių."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Leidžiama programai peržiūrėti vietinio „Bluetooth“ telefono konfigūraciją ir užmegzti bei priimti ryšius iš susietų įrenginių."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"valdyti artimo lauko perdavimą (angl. „Near Field Communication“)"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Leidžiama programai perduoti artimojo lauko ryšių technologijos (ALR) žymas, korteles ir skaitymo programas."</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"išjungti ekrano užraktą"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Leidžiama programai neleisti klavišo užrakto ir visos susijusios slaptažodžio apsaugos. Patikimas pavyzdys būtų klavišo užrakto neleidimas telefone priimant gaunamąjį skambutį ir jo pakartotinis įgalinimas, kai skambutis baigiamas."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"skaityti sinchronizavimo nustatymus"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Leidžiama programai skaityti sinchronizavimo nustatymus, pvz., ar sinchronizavimas įgalintas Žmonių programoje."</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"įjungti arba išjungti sinchronizavimą"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Leidžiama programai keisti sinchronizavimo nustatymus, pvz., ar sinchronizavimas įgalintas Žmonių programoje."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"skaityti sinchronizavimo statistiką"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"Leidžiama programai skaityti sinchronizavimo statistiką, pvz., įvykusio sinchronizavimo istoriją."</string>
@@ -550,22 +560,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Leidžiama programai gauti išsamios informacijos apie šiuo metu sinchronizuojamus sklaidos kanalus."</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"rašyti prenumeruojamus kanalus"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Leidžiama programai keisti šiuo metu sinchronizuojamus sklaidos kanalus. Kenkėjiškos programos gali pakeisti sinchronizuojamus sklaidos kanalus."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"skaityti terminus, kuriuos pridėjote į žodyną"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Leidžiama programai skaityti privačius žodžius, vardus ir frazes, kuriuos naudotojas išsaugojo naudotojo žodyne."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"rašyti naudotojo nustatytame žodyne"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Leidžiama programai rašyti naujus žodžius į naudotojo žodyną."</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"skaityti USB atminties turinį"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"skaityti SD kortelės turinį"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Programai leidžiama skaityti USB atminties turinį, kurį gali sudaryti nuotraukos ir medija."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Programai leidžiama skaityti SD kortelės turinį, kurį gali sudaryti nuotraukos ir medija."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"keisti / trinti USB atm. turinį"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Leidž. progr. raš. į USB atm."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Leidžiama programai rašyti į SD kortelę."</string>
@@ -744,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Telefone nėra SIM kortelės."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Įdėkite SIM kortelę."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"Trūksta SIM kortelės arba ji neskaitoma. Įdėkite SIM kortelę."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"Negalima naudoti SIM kortelės."</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"SIM kortelė visam laikui neleidžiama."\n" Jei norite gauti kitą SIM kortelę, susisiekite su belaidžio ryšio paslaugos teikėju."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Ankstesnio takelio mygtukas"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Kito takelio mygtukas"</string>
@@ -819,15 +824,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"Parapija"</string>
<string name="autofill_area" msgid="3547409050889952423">"Sritis"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"Emyratas"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"skaityti žiniatinklio žymes ir istoriją"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Leidžiama programai skaityti visus URL, kuriais apsilankyta naršyklėje, ir visas naršyklės žymes."</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"rašyti žiniatinklio žymes ir istoriją"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Leidžiama programai keisti naršyklės istoriją ar žymes, išsaugotas jūsų planšetiniame kompiuteryje. Kenkėjiškos programos gali tai naudoti, kad ištrintų ar pakeistų naršyklės duomenis."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Leidžiama programai keisti naršyklės istoriją ar žymes, išsaugotas jūsų telefone. Kenkėjiškos programos gali tai naudoti, kad ištrintų ar pakeistų naršyklės duomenis."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"nustatyti pavojaus signalą"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"Leidžiama programai nustatyti signalą įdiegtoje žadintuvo programoje. Kai kuriose žadintuvo programose ši funkcija gali nebūti nevykdoma."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"pridėti balso pašto pranešimų"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"Leidžia programai pridėti pranešimų prie jūsų balso pašto gautųjų."</string>
@@ -1087,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Nustatyti datą"</string>
<string name="date_time_set" msgid="5777075614321087758">"Nustatyti"</string>
<string name="date_time_done" msgid="2507683751759308828">"Baigta"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"Numatytasis"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NAUJAS: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NAUJAS: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"Nereikia leidimų"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"Slėpti"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"Rodyti viską"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"USB didelės talpos atmintis"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"USB prijungtas"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"Prisijungėte prie kompiuterio per USB. Jei norite kopijuoti failus iš kompiuterio į „Android“ USB atmintį ir atvirkščiai, palieskite toliau pateiktą mygtuką."</string>
@@ -1320,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"Siunčiama…"</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"Paleisti naršyklę?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"Priimti skambutį?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index 4152174..8231db1 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"Jūsu ziņojumi"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"Lasiet un rakstiet īsziņas, e-pasta un citus ziņojumus."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Personas informācija"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Tieša piekļuve planšetdatorā saglabātajām kontaktpersonām un kalendāram."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Tiešā piekļuve tālrunī saglabātajām kontaktpersonām un kalendāram."</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Tieša piekļuve jūsu vizītkartē saglabātajai informācijai par jums."</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Jūsu sociālo tīklu informācija"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Tieša piekļuve informācijai par jūsu kontaktpersonām un sociālajiem savienojumiem."</string>
<string name="permgrouplab_location" msgid="635149742436692049">"Jūsu atrašanās vieta"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"Pārrauga jūsu fizisko atrašanās vietu."</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"Tīkla sakari"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"Piekļūst dažādām tīkla funkcijām."</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Audio iestatījumi"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Audio iestatījumu maiņa."</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Ietekme uz akumulatora darbību"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Tādu funkciju izmantošana, kas patērē daudz akumulatora enerģijas."</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"Kalendārs"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Tieša piekļuve kalendāram un pasākumiem."</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Grāmatzīmes un vēsture"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Tieša piekļuve grāmatzīmēm un pārlūkprogrammas vēsturei."</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Signāls"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Modinātājpulksteņa iestatīšana."</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Balss pasts"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Tieša piekļuve balss pastam."</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"Mikrofons"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Tieša piekļuve mikrofonam, lai ierakstītu audio."</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"Kamera"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"Tieša piekļuve kamerai, lai uzņemtu attēlus vai videoklipus."</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Informācija par jūsu lietojumprogrammām"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Spēja ietekmēt citu ierīcē esošo lietojumprogrammu darbību."</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Fona tapete"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Ierīces fona tapetes iestatījumu maiņa."</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"Pulkstenis"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Ierīces laika vai laika joslas maiņa."</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Statusa josla"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Ierīces statusa joslas iestatījumu maiņa."</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Sinhronizācijas iestatījumi"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Pieeja sinhronizācijas iestatījumiem."</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"Jūsu konti"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"Piekļūstiet pieejamajiem kontiem."</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Aparatūras vadīklas"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Sistēmas apakšējā līmeņa piekļuve un vadība."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Izstrādes rīki"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Tikai lietotņu izstrādātājiem nepieciešamās funkcijas."</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"Citu lietojumprogrammu lietotāja saskarnes"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"Ietekme uz citu lietojumprogrammu lietotāja saskarni."</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"Krātuve"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Piekļūst USB krātuvei."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Piekļūstiet SD kartei."</string>
@@ -193,14 +238,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"Ļauj lietotnei būt par statusa joslu."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"izvērst/sakļaut statusa joslu"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Ļauj lietotnei izvērst vai sakļaut statusa joslu."</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"pārmaršrutēt izejošos zvanus"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Ļauj lietotnei apstrādāt izejošos zvanus un mainīt ievadāmo numuru. Ļaunprātīgas lietotnes var pārraudzīt, novirzīt un aizkavēt izejošos zvanus."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"saņemt īsziņas (SMS)"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"Ļauj lietotnei saņemt un apstrādāt īsziņas. Ļaunprātīgas lietotnes var pārraudzīt vai dzēst šos ziņojumus, neparādot tos jums."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"saņemt ziņojumus (MMS)"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"Ļauj lietotnei saņemt un apstrādāt multiziņas. Ļaunprātīgas lietotnes var pārraudzīt vai dzēst šos ziņojumus, neparādot tos jums."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"Ārkārtas apraižu saņemšana"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Ļauj lietotnei saņemt un apstrādāt ārkārtas apraides ziņojumus. Šī atļauja attiecas tikai uz sistēmas lietotnēm."</string>
@@ -210,16 +252,13 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"Ļauj lietotnei sūtīt īsziņas. Ļaunprātīgu lietotņu darbības dēļ jums var būt jāmaksā papildus, jo tiks sūtītas īsziņas bez jūsu apstiprinājuma."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"īsziņu sūtīšana bez apstiprinājuma"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Ļauj lietotnei sūtīt īsziņas. Ļaunprātīgu lietotņu darbības dēļ jums var būt jāmaksā papildus, jo tiks sūtītas īsziņas bez jūsu apstiprinājuma."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"lasīt ziņojumus (SMS vai MMS)"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Ļauj lietotnei lasīt īsziņas, kas ir saglabātas planšetdatorā vai SIM kartē. Ļaunprātīgas lietotnes var lasīt jūsu konfidenciālos ziņojumus."</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Ļauj lietotnei lasīt īsziņas, kas ir saglabātas tālrunī vai SIM kartē. Ļaunprātīgas lietotnes var lasīt jūsu konfidenciālos ziņojumus."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"rediģēt ziņojumus (SMS vai MMS)"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Ļauj lietotnei rakstīt īsziņās, kas ir saglabātas planšetdatorā vai SIM kartē. Ļaunprātīgas lietotnes var dzēst jūsu ziņojumus."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Ļauj lietotnei rakstīt īsziņās, kas ir saglabātas tālrunī vai SIM kartē. Ļaunprātīgas lietotnes var dzēst jūsu ziņojumus."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"saņemt īsziņas (WAP)"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Ļauj lietotnei saņemt un apstrādāt WAP ziņojumus. Ļaunprātīgas lietotnes var pārraudzīt vai dzēst šos ziņojumus, neparādot tos jums."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"izgūt izmantotās lietotnes"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"Ļauj lietotnei izgūt informāciju par šobrīd un nesen veiktajiem uzdevumiem. Ļaunprātīgas lietotnes var atklāt privātu informāciju par citām lietotnēm."</string>
@@ -235,13 +274,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Ļauj lietotnei kontrolēt citu lietotņu ekrāna saderības režīmu. Ļaunprātīgas lietojumprogrammas var mainīt citu lietojumprogrammu darbību."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"iespējot lietotnes atkļūdošanu"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"Ļauj lietotnei ieslēgt citas lietotnes atkļūdošanu. Ļaunprātīgas lietotnes to var izmantot, lai pārtrauktu citu lietotņu darbību."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"mainīt sistēmas rādīšanas iestatījumus"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Ļauj lietotnei mainīt pašreizējo konfigurāciju, piemēram, lokalizāciju vai vispārējo fonta lielumu."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"iespējot automobiļa režīmu"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"Ļauj lietotnei iespējot automašīnas režīmu."</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"aizvērt citas lietotnes"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Ļauj lietotnei pārtraukt fonā esošus citu lietotņu procesus, pat ja atmiņā pietiek vietas."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"veikt citu lietotņu darbības piespiedu pārtraukšanu"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Ļauj lietotnei veikt citu lietotņu darbības piespiedu pārtraukšanu."</string>
@@ -265,8 +302,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Ļauj lietotnei pārraidīt paziņojumu par to, ka ir saņemts WAP PUSH ziņojums. Ļaunprātīgas lietotnes to var izmantot, lai viltotu multiziņas saņemšanu vai jebkuras tīmekļa lapas saturu nemanāmi nomainītu ar ļaunprātīgiem variantiem."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"ierobežot aktīvo procesu skaitu"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Ļauj lietotnei kontrolēt izpildāmo procesu maksimālo skaitu. Parastajām lietotnēm tas nekad nav nepieciešams."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"veikt fonā darbojošos lietotņu piespiedu aizvēršanu"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Ļauj lietotnei kontrolēt, vai darbības vienmēr tiek pabeigtas, tiklīdz tās nonāk fonā. Parastajām lietotnēm tas nekad nav nepieciešams."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"pārveidot akumulatora statistiku"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"Ļauj lietotnei modificēt apkopoto statistiku par akumulatoru. Atļauja neattiecas uz parastām lietotnēm."</string>
@@ -276,8 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Ļauj lietotnei palaist pilna dublējuma apstiprinājuma lietotāja saskarni. Neattiecas ne uz vienu lietotni."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"attēlot neautorizētus logus"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Ļauj lietotnei izveidot logus, kas paredzēti izmantošanai iekšējās sistēmas lietotāja saskarnē. Atļauja neattiecas uz parastām lietotnēm."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"zīmēt pāri citām lietotnēm"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Ļauj lietotnei rādīt sistēmas brīdinājumu logus. Ļaunprātīgas lietotnes var pārņemt vadību pār visu ekrānu."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"pārveidot globālo animācijas ātrumu"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Ļauj lietotnei jebkurā laikā mainīt vispārējo animācijas ātrumu (lēnākām vai ātrākām animācijām)."</string>
@@ -339,26 +374,22 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Ļauj lietojumprogrammai piešķirt sev vai citām lietojumprogrammām noteiktas atļaujas un atsaukt tās. Ļaunprātīgas lietojumprogrammas var izmantot šo iespēju, lai piekļūtu funkcijām, kuras neesat atļāvis."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"iestatīt vēlamās lietotnes"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Ļauj lietotnei modificēt jūsu vēlamās lietotnes. Ļaunprātīgas lietotnes var nemanāmi mainīt izmantotās lietotnes, atveidojot esošās lietotnes, lai no jums iegūtu privātus datus."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"mainīt sistēmas iestatījumus"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"Ļauj lietotnei modificēt sistēmas iestatījumu datus. Ļaunprātīgas lietotnes var uzlauzt sistēmas konfigurāciju."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"pārveidot drošos sistēmas iestatījumus"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Ļauj lietotnei modificēt sistēmas drošības iestatījumu datus. Atļauja neattiecas uz parastām lietotnēm."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"pārveidot Google pakalpojumu karti"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"Ļauj lietotnei modificēt Google pakalpojumu karti. Atļauja neattiecas uz parastām lietotnēm."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"palaist līdz ar startēšanu"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Ļauj lietotnei tikt startētai, tiklīdz sistēma ir pabeigusi sāknēšanu. Šādi planšetdatora startēšana var notikt ilgāk un lietotne, ja tā darbojas nepārtraukti, var palēnināt planšetdatora vispārējo darbību."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Ļauj lietotnei tikt startētai, tiklīdz sistēma ir pabeigusi sāknēšanu. Šādi tālruņa startēšana var notikt ilgāk un lietotne, ja tā darbojas nepārtraukti, var palēnināt tālruņa vispārējo darbību."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"sūtīt piesaistošu apraidi"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Ļauj lietotnei sūtīt piesaistošas apraides, kas tiek saglabātas pēc apraides pabeigšanas. Ļaunprātīgas lietotnes var palēnināt planšetdatora darbību vai padarīt tā darbību nestabilu, liekot izmantot pārāk daudz atmiņas."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Ļauj lietotnei sūtīt piesaistošas apraides, kas tiek saglabātas pēc apraides pabeigšanas. Ļaunprātīgas lietotnes var palēnināt tālruņa darbību vai padarīt tā darbību nestabilu, liekot izmantot pārāk daudz atmiņas."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
+ <string name="permlab_readContacts" msgid="8348481131899886131">"lasīt kontaktpersonu informāciju"</string>
<string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Ļauj lietotnei lasīt visus planšetdatorā saglabāto kontaktpersonu datus, tostarp datus par to, cik bieži esat zvanījis vai sūtījis e-pasta ziņojumus noteiktām personām vai citādi sazinājies ar šīm personām. Šī atļauja tiek izmantota e-pasta adrešu automātiskajai pabeigšanai un citām ērtām funkcijām. Ļaunprātīgas lietotnes var izmantot šo atļauju, lai sūtītu jūsu kontaktpersonu datus citām personām."</string>
<string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Ļauj lietotnei lasīt visus tālrunī saglabāto kontaktpersonu datus, tostarp datus par to, cik bieži esat zvanījis vai sūtījis e-pasta ziņojumus noteiktām personām vai citādi sazinājies ar šīm personām. Šī atļauja tiek izmantota e-pasta adrešu automātiskajai pabeigšanai un citām ērtām funkcijām. Ļaunprātīgas lietotnes var izmantot šo atļauju, lai sūtītu jūsu kontaktpersonu datus citām personām."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"mainīt kontaktpersonu informāciju"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Ļauj lietotnei pārveidot planšetdatorā saglabāto kontaktpersonu datus, tostarp datus par to, cik bieži esat zvanījis vai sūtījis e-pasta ziņojumus noteiktām personām vai citādi sazinājies ar šīm personām. Šī atļauja tiek izmantota e-pasta adrešu automātiskajai pabeigšanai un citām ērtām funkcijām. Ļaunprātīgas lietotnes var izmantot šo atļauju, lai dzēstu vai pārveidotu jūsu kontaktpersonu datus."</string>
<string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Ļauj lietotnei pārveidot tālrunī saglabāto kontaktpersonu datus, tostarp datus par to, cik bieži esat zvanījis vai sūtījis e-pasta ziņojumus noteiktām personām vai citādi sazinājies ar šīm personām. Šī atļauja tiek izmantota e-pasta adrešu automātiskajai pabeigšanai un citām ērtām funkcijām. Ļaunprātīgas lietotnes var izmantot šo atļauju, lai dzēstu vai pārveidotu jūsu kontaktpersonu datus."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"nolasīt zvanu žurnālu"</string>
@@ -367,11 +398,9 @@
<string name="permlab_writeCallLog" msgid="8552045664743499354">"rakstīt zvanu žurnālā"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Ļauj lietotnei pārveidot planšetdatora zvanu žurnālu, tostarp ienākošo un izejošo zvanu datus. Ļaunprātīgas lietotnes var to izmantot, lai dzēstu vai pārveidotu savu zvanu žurnālu."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Ļauj lietotnei pārveidot tālruņa zvanu žurnālu, tostarp ienākošo un izejošo zvanu datus. Ļaunprātīgas lietotnes var to izmantot, lai dzēstu vai pārveidotu savu zvanu žurnālu."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"lasīt manu vizītkarti"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Ļauj lietotnei lasīt ierīcē saglabāto personīgā profila informāciju, piemēram, jūsu vārdu un kontaktinformāciju. Tas nozīmē, ka lietotne var jūs identificēt un sūtīt jūsu profila informāciju citām personām."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"mainīt manu vizītkarti"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Ļauj lietotnei mainīt vai pievienot ierīcē saglabāto personīgā profila informāciju, piemēram, jūsu vārdu un kontaktinformāciju. Tas nozīmē, ka citas lietotnes var jūs identificēt un sūtīt jūsu profila informāciju citām personām."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"lasīt jūsu soc. tīklu straumi"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Ļauj lietotnei piekļūt jūsu un jūsu draugu atjauninājumiem sociālajos tīklos un sinhronizēt šos atjauninājumus. Ļaunprātīgas lietotnes to var izmantot, lai piekļūtu jūsu un jūsu draugu savstarpējām privātām sarunām sociālajos tīklos."</string>
@@ -412,15 +441,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"atsāknēt tālruni"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Ļauj lietotnei veikt planšetdatora piespiedu atsāknēšanu."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Ļauj lietotnei atsāknēt tālruni."</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"piekļūt USB atm. failu sistēmai"</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"piekļūt SD kartes failu sistēmai"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Ļauj lietotnei pievienot un atvienot failu sistēmas noņemamai atmiņai."</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"dzēst USB atmiņu"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"dzēst SD karti"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Ļauj lietotnei formatēt noņemamu atmiņu."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"iegūt informāciju par iekšējo krātuvi"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"Ļauj lietotnei iegūt informāciju par iekšējo atmiņu."</string>
@@ -432,8 +457,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Ļauj lietotnei pievienot/atvienot iekšējo atmiņu."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"pārdēvēt iekšējo krātuvi"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"Ļauj lietotnei pārdēvēt iekšējo atmiņu."</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"kontrolēt vibrosignālu"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"Ļauj lietotnei kontrolēt vibrosignālu."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"kontrolēt uzliesmojumu"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"Ļauj lietotnei kontrolēt zibspuldzi."</string>
@@ -458,8 +482,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"Ļauj lietotnei norādīt sistēmai, kādus logrīkus un kurā lietotnē var izmantot. Lietotne, kurai ir šī atļauja, var piešķirt citām lietotnēm piekļuvi personas datiem. Atļauja neattiecas uz parastām lietotnēm."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"pārveidot tālruņa stāvokli"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Ļauj lietotnei kontrolēt ierīces tālruņa funkcijas. Lietotne, kurai ir šī atļauja, var pārslēgt tīklus, ieslēgt un izslēgt tālruņa radio un veikt tamlīdzīgas darbības, nebrīdinot jūs."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"lasīt tālruņa statusu un identitāti"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"Ļauj lietotnei piekļūt ierīces tālruņa funkcijām. Lietotne, kurai ir šī atļauja, var noteikt tālruņa numuru un sērijas numuru, kā arī to, vai zvans ir aktīvs, numuru, ar kuru zvans ir savienots, un līdzīgu informāciju."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"novērst planšetdatora pāriešanu miega režīmā"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"novērst tālruņa pāriešanu miega režīmā"</string>
@@ -474,8 +497,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Darbiniet kā zema līmeņa ražotāja pārbaudi, atļaujot pilnīgu piekļuvi tālruņa aparatūrai. Pieejams tikai tad, ja tālrunis darbojas ražotāja pārbaudes režīmā."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"iestatīt tapeti"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"Ļauj lietotnei iestatīt sistēmas tapeti."</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"pielāgot fona tapetes lielumu"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Ļauj lietotnei iestatīt sistēmas tapetes izmēru norādes."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"atiestatīt sistēmu uz rūpnīcas noklusējuma iestatījumiem"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"Ļauj lietotnei pilnībā atiestatīt sistēmas rūpnīcas iestatījumus, dzēšot visus datus, konfigurāciju un instalētās lietotnes."</string>
@@ -487,21 +509,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Ļauj lietotnei mainīt tālruņa laika joslu."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"darboties kā AccountManagerService"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"Ļauj lietotnei zvanīt uz AccountAuthenticators."</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"atrast kontus ierīcē"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Ļauj lietotnei iegūt planšetdatoram zināmo kontu sarakstu."</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Ļauj lietotnei iegūt tālrunim zināmo kontu sarakstu."</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"izveidot kontus un iestatīt paroles"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Ļauj lietotnei izmantot AccountManager konta autentificētāja iespējas, tostarp veidot kontus un iegūt un iestatīt to paroles."</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"pievienot vai noņemt kontus"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"Ļauj lietotnei veikt tādas darbības kā kontu pievienošana un noņemšana, kā arī paroles dzēšana."</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"izmantot ierīcē esošos kontus"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"Ļauj lietotnei pieprasīt autentifikācijas pilnvaras."</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"skatīt tīkla savienojumus"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"Ļauj lietotnei skatīt visu tīklu statusu."</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"pilnīga interneta piekļuve"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Ļauj lietotnei izveidot tīkla ligzdas."</string>
@@ -513,36 +530,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"Ļauj lietotnei mainīt piesaistes tīkla savienojamības statusu."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"mainīt fona datu lietojuma iestatījumu"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Ļauj lietotnei mainīt fona datu lietošanas iestatījumu."</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"skatīt Wi-Fi savienojumus"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"Ļauj lietotnei skatīt informāciju par Wi-Fi savienojuma statusu."</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"izveidot un pārtraukt Wi-Fi savienojumu"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"Ļauj lietotnei izveidot savienojumu no Wi-Fi piekļuves punktiem un pārtraukt to, kā arī veikt izmaiņas konfigurētajos Wi-Fi tīklos."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"atļaut Wi-Fi multiraides uztveršanu"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Ļauj lietotnei saņemt pakotnes, kas nav tieši adresētas ierīcei. Tas var būt noderīgi, atklājot tuvumā piedāvātos pakalpojumus. Patērē vairāk enerģijas nekā režīms, kas nav multiraides režīms."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"piekļūt Bluetooth iestatījumiem"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Ļauj lietotnei konfigurēt vietējo Bluetooth planšetdatoru, kā arī atklāt attālas ierīces un savienot tās pārī."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Ļauj lietotnei konfigurēt vietējo Bluetooth tālruni, kā arī atklāt attālas ierīces un savienot tās pārī."</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Skatīt WiMAX savienojumus"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Ļauj lietotnei skatīt informāciju par WWiMAX statusu."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"WiMAX statusa mainīšana"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Ļauj lietotnei izveidot un pārtraukt savienojumu ar WiMAX tīklu."</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"savienot pārī ar Bluetooth ierīcēm"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Ļauj lietotnei skatīt vietējā Bluetooth planšetdatora konfigurāciju, kā arī veidot un pieņemt savienojumus ar pārī savienotām ierīcēm."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Ļauj lietotnei skatīt vietējā Bluetooth tālruņa konfigurāciju, kā arī veidot un pieņemt savienojumus ar pārī savienotām ierīcēm."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"kontrolē tuvlauka saziņu"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Ļauj lietotnei sazināties ar tuva darbības lauka sakaru (Near Field Communication — NFC) atzīmēm, kartēm un lasītājiem."</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"atspējot ekrāna bloķēšanu"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Ļauj lietotnei atspējot taustiņslēgu un jebkuras saistītās paroles drošību. Atļauta gadījuma piemērs: taustiņslēga atspējošana, saņemot ienākošu zvanu, un taustiņslēga atkārtota iespējošana, kad saruna beigusies."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"lasīt sinhronizācijas iestatījumus"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Ļauj lietotnei lasīt sinhronizācijas iestatījumus, piemēram, to, vai ir iespējota sinhronizācija lietotnei Personas."</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"ieslēgt un izslēgt sinhronizāciju"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Ļauj lietotnei modificēt sinhronizācijas iestatījumus, piemēram, to, vai ir iespējota sinhronizācija lietotnei Personas."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"lasīt sinhronizācijas statistiku"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"Ļauj lietotnei lasīt sinhronizācijas statistiku, piem., notikušās sinhronizācijas vēsturi."</string>
@@ -550,22 +560,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Ļauj lietotnei iegūt informāciju par pašlaik sinhronizētajām plūsmām."</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"rakstīt abonētās plūsmas"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Ļauj lietotnei modificēt pašreizējās sinhronizētās plūsmas. Ļaunprātīgas lietotnes var mainīt jūsu sinhronizētās plūsmas."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"lasīt vārdnīcai pievienotos vārdus"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Ļauj lietotnei lasīt jebkurus privātu vārdus, nosaukumus un frāzes, ko lietotājs saglabājis savā lietotāja vārdnīcā."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"rakstīt lietotāja noteiktā vārdnīcā"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Ļauj lietotnei rakstīt jaunus vārdus lietotāja vārdnīcā."</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"lasīt USB atmiņas saturu"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"lasīt SD kartes saturu"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Ļauj lasīt USB: foto un multiv."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Ļauj lietotnei lasīt SD kartes saturu, kurā var būt fotoattēli un multivide."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"mainīt vai dzēst USB atm. sat."</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Ļauj lietotnei rakstīt USB atmiņā."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Ļauj lietotnei rakstīt SD kartē."</string>
@@ -744,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Tālrunī nav SIM kartes."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Ievietojiet SIM karti."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"Nav SIM kartes, vai arī to nevar nolasīt. Ievietojiet SIM karti."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"Nelietojama SIM karte."</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Jūsu SIM karte ir neatgriezeniski atspējota."\n"Sazinieties ar savu bezvadu pakalpojumu sniedzēju, lai iegūtu citu SIM karti."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Iepriekšējā ieraksta poga"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Nākamā ieraksta poga"</string>
@@ -819,15 +824,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"Pagasts"</string>
<string name="autofill_area" msgid="3547409050889952423">"Reģions"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"Emirāts"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"lasīt tīmekļa grāmatzīmes un vēsturi"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Ļauj lietotnei lasīt visus URL, kas atvērti pārlūkprogrammā, kā arī visas pārlūkprogrammas grāmatzīmes."</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"rakstīt tīmekļa grāmatzīmes un vēsturi"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Ļauj lietotnei modificēt planšetdatorā saglabāto pārlūkprogrammas vēsturi vai grāmatzīmes. Ļaunprātīgas lietotnes to var izmantot, lai dzēstu vai modificētu pārlūkprogrammas datus."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Ļauj lietotnei modificēt tālrunī saglabāto pārlūkprogrammas vēsturi vai grāmatzīmes. Ļaunprātīgas lietotnes to var izmantot, lai dzēstu vai modificētu pārlūkprogrammas datus."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"iestatīt modinātāju"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"Ļauj lietotnei iestatīt signālu instalētajā modinātājpulksteņa lietotnē. Dažās modinātājpulksteņu lietotnēs šo funkciju, iespējams, nevar ieviest."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"pievienot balss pastu"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"Ļauj lietotnei pievienot ziņojumus jūsu balss pasta iesūtnei."</string>
@@ -1087,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Datuma iestatīšana"</string>
<string name="date_time_set" msgid="5777075614321087758">"Iestatīt"</string>
<string name="date_time_done" msgid="2507683751759308828">"Gatavs"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"Noklusējums"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"JAUNA: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"JAUNA: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"Atļaujas nav nepieciešamas."</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"Slēpt"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"Rādīt visu"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"USB lielapjoma atmiņa"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"USB ir pievienots."</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"Ir izveidots savienojums ar datoru, izmantojot USB. Pieskarieties tālāk esošajai pogai, ja vēlaties kopēt failus no datora Android USB atmiņā vai otrādi."</string>
@@ -1320,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"Notiek sūtīšana…"</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"Vai palaist pārlūkprogrammu?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"Vai atbildēt uz zvanu?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml
index 56ddc58..0bc4262 100644
--- a/core/res/res/values-ms/strings.xml
+++ b/core/res/res/values-ms/strings.xml
@@ -147,7 +147,7 @@
<string name="shutdown_confirm" product="default" msgid="649792175242821353">"Telefon anda akan dimatikan."</string>
<string name="shutdown_confirm_question" msgid="2906544768881136183">"Adakah anda mahu menutup?"</string>
<string name="reboot_safemode_title" msgid="7054509914500140361">"But semula ke mod selamat"</string>
- <string name="reboot_safemode_confirm" msgid="55293944502784668">"Adakah anda mahu membut semula ke dalam mod selamat? Ini akan melumpuhkan semua aplikasi pihak ketiga yang telah anda pasang. Semua aplikasi itu akan dipulihkan semula apabila anda membut semula."</string>
+ <string name="reboot_safemode_confirm" msgid="55293944502784668">"Adakah anda mahu but semula ke dalam mod selamat? Ini akan melumpuhkan semua aplikasi pihak ketiga yang telah anda pasang. Semua aplikasi itu akan dipulihkan semula apabila anda membut semula."</string>
<string name="recent_tasks_title" msgid="3691764623638127888">"Baru-baru ini"</string>
<string name="no_recent_tasks" msgid="8794906658732193473">"Tiada apl terbaharu"</string>
<string name="global_actions" product="tablet" msgid="408477140088053665">"Pilihan tablet"</string>
@@ -168,12 +168,84 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"Mesej anda"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"Membaca dan menulis SMS, e-mel, dan mesej lain."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Maklumat peribadi anda"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Akses langsung kepada kenalan dan kalendar anda yang disimpan dalam tablet."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Akses langsung kepada kenalan dan kalendar yang disimpan pada telefon."</string>
+ <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) -->
+ <skip />
+ <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) -->
+ <skip />
<string name="permgrouplab_location" msgid="635149742436692049">"Lokasi anda"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"Pantau lokasi fizikal anda."</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"Komunikasi rangkaian"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"Akses pelbagai ciri rangkaian."</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) -->
+ <skip />
+ <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) -->
+ <skip />
+ <!-- no translation found for permgrouplab_calendar (5863508437783683902) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_calendar (5777534316982184416) -->
+ <skip />
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) -->
+ <skip />
+ <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) -->
+ <skip />
+ <!-- no translation found for permgrouplab_voicemail (4162237145027592133) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) -->
+ <skip />
+ <!-- no translation found for permgrouplab_microphone (171539900250043464) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_microphone (7106618286905738408) -->
+ <skip />
+ <!-- no translation found for permgrouplab_camera (4820372495894586615) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_camera (2933667372289567714) -->
+ <skip />
+ <!-- no translation found for permgrouplab_appInfo (8028789762634147725) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) -->
+ <skip />
+ <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) -->
+ <skip />
+ <!-- no translation found for permgrouplab_systemClock (406535759236612992) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) -->
+ <skip />
+ <!-- no translation found for permgrouplab_statusBar (2095862568113945398) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) -->
+ <skip />
+ <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) -->
+ <skip />
<string name="permgrouplab_accounts" msgid="3359646291125325519">"Akaun anda"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"Akses akaun yang tersedia."</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Kawalan perkakasan"</string>
@@ -184,6 +256,10 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Akses dan kawalan peringkat lebih rendah bagi sistem."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Alatan pembangunan"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Ciri hanya diperlukan untuk pembangun apl."</string>
+ <!-- no translation found for permgrouplab_display (4279909676036402636) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_display (6051002031933013714) -->
+ <skip />
<string name="permgrouplab_storage" msgid="1971118770546336966">"Storan"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Akses storan USB."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Akses kad SD."</string>
@@ -193,14 +269,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"Membenarkan apl menjadi bar status."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"kembangkan/runtuhkan bar status"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Membenarkan apl mengembangkan atau meruntuhkan bar status."</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"tukar laluan panggilan keluar"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Membenarkan apl untuk memproses panggilan keluar dan menukar nombor yang perlu didail. Apl hasad boleh memantau, mengalih, atau menghalang panggilan keluar."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"terima mesej teks (SMS)"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"Membenarkan apl untuk menerima dan memproses mesej SMS. Apl hasad boleh memantau mesej anda atau memadamnya tanpa menunjukkannya kepada anda."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"terima mesej teks (MMS)"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"Membenarkan apl untuk menerima dan memproses mesej MMS. Apl hasad boleh memantau mesej anda atau memadamnya tanpa menunjukkannya kepada anda."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"terima siaran kecemasan"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Membenarkan apl untuk menerima dan memproses mesej siaran kecemasan. Kebenaran ini hanya tersedia kepada apl sistem."</string>
@@ -210,16 +283,13 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"Membenarkan apl untuk menghantar mesej SMS. Apl hasad boleh menyebabkan anda kehilangan wang dengan menghantar mesej tanpa pengesahan anda."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"hantar mesej SMS tanpa pengesahan"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Membenarkan apl untuk menghantar mesej SMS. Apl hasad boleh menyebabkan anda kehilangan wang dengan menghantar mesej tanpa pengesahan anda."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"baca mesej teks anda (SMS atau MMS)"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Membenarkan apl untuk membaca mesej SMS yang disimpan pada tablet atau kad SIM anda. Apl hasad boleh membaca mesej sulit anda."</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Membenarkan apl untuk membaca mesej SMS yang disimpan pada telefon atau kad SIM anda. Apl hasad boleh membaca mesej sulit anda."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"edit mesej teks (SMS atau MMS)"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Membenarkan apl untuk menulis kepada mesej SMS yang disimpan pada tablet atau kad SIM anda. Apl hasad boleh memadam mesej anda."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Membenarkan apl untuk menulis kepada mesej SMS yang disimpan pada telefon atau kad SIM anda. Apl hasad boleh memadam mesej anda."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"terima mesej teks (WAP)"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Membenarkan apl untuk menerima dan memproses mesej WAP. Apl hasad boleh memantau mesej anda atau memadamnya tanpa menunjukkannya kepada anda."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"dapatkan semula apl yang sedang dijalankan"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"Membenarkan apl untuk mendapatkan maklumat tugasan yang sedang dan baru berjalan. Apl hasad boleh mendapat maklumat peribadi tentang apl lain."</string>
@@ -235,13 +305,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Membenarkan apl mengawal mod keserasian skrin aplikasi lain. Aplikasi hasad mungkin mematahkan kelakuan aplikasi lain."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"dayakan penyahpepijatan apl"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"Membenarkan apl untuk menghidupkan penyahpepijatan untuk apl lain. Apl hasad boleh menggunakannya untuk menghapuskan apl lain."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"tukar tetapan paparan sistem"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Membenarkan apl mengubah konfigurasi semasa seperti tempat peristiwa atau saiz fon keseluruhan."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"dayakan mod kereta"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"Membenarkan apl mendayakan mod kereta."</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"tutup apl lain"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Membenarkan apl untuk membunuh proses latar belakang apl lain, walaupun memori tidak rendah."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"paksa apl lain supaya berhenti"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Membenarkan apl menghentikan apl lain secara paksa."</string>
@@ -265,8 +333,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Membenarkan apl untuk menyiarkan pemberitahuan bahawa mesej WAP PUSH telah diterima. Apl hasad boleh menggunakannya untuk memalsukan penerimaan mesej MMS atau secara diam-diam menggantikan kandungan mana-mana laman web dengan varian hasad."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"hadkan bilangan proses yang dijalankan"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Membenarkan apl untuk mengawal bilangan maksimum proses yang akan berlangsung. Tidak sekali-kali diperlukan untuk apl biasa."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"memaksa apl latar belakang untuk menutup"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Membenarkan apl untuk mengawal sama ada aktiviti sentiasa selesai sebaik sahaja ia pergi ke latar belakang. Tidak sekali-kali diperlukan untuk apl biasa."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"ubah suai statistik bateri"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"Membenarkan apl untuk mengubah suai statistik bateri yang dikumpul. Bukan untuk kegunaan apl biasa."</string>
@@ -276,8 +343,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Membenarkan apl untuk memulakan UI pengesahan sandaran penuh. Bukan untuk diguakan oleh mana-mana apl."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"memapaparkan tetingkap yang tiada kebenaran"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Membenarkan apl untuk membuat tetingkap yang dimaksudkan untuk digunakan oleh antara muka pengguna sistem dalaman. Bukan untuk digunakan oleh apl biasa."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"lukis atas apl lain"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Membenarkan apl untuk menunjukkan tetingkap amaran sistem. Apl hasad boleh mengambil alih keseluruhan skrin."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"mengubah suai kelajuan animasi global"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Membenarkan apl menukar kelajuan animasi global (animasi yang lebih laju atau lebih perlahan) pada bila-bila masa sahaja."</string>
@@ -339,27 +405,23 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Membenarkan aplikasi memberikan atau membatalkan kebenaran khusus untuk aplikasi itu sendiri atau aplikasi lain. Aplikasi berniat jahat boleh menggunakan perkara ini untuk mengakses ciri yang belum anda berikan padanya."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"tetapkan keutamaan apl"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Membenarkan apl untuk mengubah suai apl pilihan anda. Apl hasad secara diam-diam boleh menukar apl yang dijalankan, menipu apl anda yang sedia ada untuk mengumpul data peribadi daripada anda."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"ubah suai tetapan sistem"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"Membenarkan apl untuk mengubah suai data tetapan sistem. Apl hasad boleh merosakkan konfigurasi sistem anda."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"ubah suai tetapan sistem selamat"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Membenarkan apl untuk mengubah suai data tetapan selamat sistem. Bukan untuk digunakan oleh apl biasa."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"mengubah suai peta perkhidmatan Google"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"Membolehkan apl mengubah suai peta perkhidmatan Google. Bukan untuk kegunaan oleh apl biasa."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"jalankan pada permulaan"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Membenarkan apl untuk memulakan dirinya sendiri sebaik sahaja sistem selesai mengebut. Ini boleh membuat masa untuk menghidupkan tablet menjadi lebih lama dan membenarkan apl untuk memperlahankan keseluruhan tablet dengan sentiasa berjalan."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Membenarkan apl bermula sendiri sebaik sahaja sistem telah selesai mengebut. Ini boleh menjadikannya mengambil masa yang lama untuk menghidupkan telefon dan membenarkan apl untuk melambatkan keseluruhan telefon dengan sentiasa berjalan."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"hantar siaran lekit"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Membolehkan apl untuk menghantar siaran melekit, yang kekal selepas siaran berakhir. Apl hasad boleh membuat tablet perlahan atau tidak stabil dengan menyebabkannya menggunakan memori yang terlalu banyak."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Membolehkan apl untuk menghantar siaran melekit, yang kekal selepas siaran berakhir. Apl hasad boleh membuat telefon perlahan atau tidak stabil dengan menyebabkannya menggunakan memori yang terlalu banyak."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
+ <string name="permlab_readContacts" msgid="8348481131899886131">"baca kenalan anda"</string>
<string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Membenarkan apl membaca semua data tentang kenalan anda yang disimpan pada tablet anda, termasuk kekerapan anda memanggil, menghantar e-mel atau berkomunikasi dengan cara yang lain dengan individu tertentu. Ini membantu auto-pelengkapan alamat e-mel dan ciri mudah lain. Apl hasad boleh menggunakan kebenaran ini untuk menghantar data kenalan anda kepada orang lain."</string>
<string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Membenarkan apl membaca semua data tentang kenalan anda yang disimpan pada telefon anda, termasuk kekerapan anda memanggil, menghantar e-mel atau berkomunikasi dengan cara yang lain dengan individu tertentu. Ini membantu auto-pelengkapan alamat e-mel dan ciri mudah lain. Apl hasad boleh menggunakan kebenaran ini untuk menghantar data kenalan anda kepada orang lain."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
- <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Membolehkan aplikasi untuk mengubah suai data mengenai kenalan anda yang disimpan pada tablet anda, termasuk kekerapan yang anda telah dipanggil, mel, atau disampaikan dengan cara yang lain dengan individu-individu tertentu. Ini membantu dengan auto siap-alamat e-mel dan lain-lain ciri-ciri mudah. Aplikasi berniat jahat boleh menggunakan ini untuk memadam atau mengubah suai data kenalan anda."</string>
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"ubah suai kenalan anda"</string>
+ <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Membolehkan aplikasi untuk mengubah suai data mengenai kenalan anda yang disimpan pada tablet anda, termasuk kekerapan yang anda telah dipanggil, mel, atau disampaikan dengan cara yang lain dengan individu-individu tertentu. Ini membantu dengan autopelengkapan alamat e-mel dan ciri-ciri mudah lain. Aplikasi berniat jahat boleh menggunakan ini untuk memadam atau mengubah suai data kenalan anda."</string>
<string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Membenarkan apl mengubah suai data tentang kenalan anda yang disimpan pada telefon anda, termasuk kekerapan anda memanggil, menghantar e-mel atau berkomunikasi dengan cara yang lain dengan individu tertentu. Ini membantu auto-pelengkapan alamat e-mel dan ciri mudah lain. Apl hasad boleh menggunakan kebenaran ini untuk memadam atau mengubah suai data kenalan anda."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"baca log panggilan"</string>
<string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Membenarkan apl membaca log panggilan tablet anda, termasuk data tentang panggilan masuk dan keluar. Apl hasad boleh menggunakannya untuk menghantar data anda kepada orang lain."</string>
@@ -367,11 +429,9 @@
<string name="permlab_writeCallLog" msgid="8552045664743499354">"tulis log panggilan"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Membenarkan apl untuk mengubah suai panggilan tablet anda, termasuk data tentang panggilan masuk dan keluar. Apl hasad boleh menggunakannya untuk memadam atau mengubah suai log panggilan anda."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Membenarkan apl untuk mengubah suai panggilan telefon anda, termasuk data tentang panggilan masuk dan keluar. Apl hasad boleh menggunakannya untuk memadam atau mengubah suai log panggilan anda."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"baca kad kenalan anda sendiri"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Membenarkan apl untuk membaca maklumat profil peribadi yang disimpan dalam peranti anda, seperti nama dan maklumat kenalan anda. Ini bermakna apl lain boleh mengenal pasti anda dan menghantar maklumat profil anda kepada orang lain."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"ubah suai kad kenalan sendiri"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Membenarkan apl untuk menukar atau menambah maklumat profil peribadi yang disimpan dalam peranti anda, seperti nama dan maklumat kenalan anda. Ini bermakna apl lain boleh mengenal pasti anda dan menghantar maklumat profil anda kepada orang lain."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"baca aliran sosial anda"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Membenarkan apl mengakses dan menyegerakkan kemas kini sosial daripada rakan-rakan anda. Apl hasad boleh menggunakannya untuk membaca komunikasi peribadi di antara anda dan rakan-rakan anda pada rangkaian sosial."</string>
@@ -412,15 +472,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"paksa telefon but semula"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Membenarkan apl memaksa tablet untuk but semula."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Membenarkan apl memaksa telefon untuk but semula."</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"akses sistem fail storan USB"</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"akses sistem fail Kad SD"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Membenarkan apl melekapkan dan menyahlekapkan sistem fail untuk storan boleh alih."</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"padamkan storan USB"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"padamkan kad SD"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Membenarkan apl memformatkan storan boleh alih."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"dapatkan maklumat tentang storan dalaman"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"Membenarkan apl mendapatkan maklumat dari storan dalaman."</string>
@@ -432,8 +488,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Membenarkan apl melekapkan/menyahlekapkan storan dalaman."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"namakan semula storan dalaman"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"Membenarkan apl menamakan semula storan dalaman."</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"kawal getaran"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"Membenarkan apl mengawal penggetar."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"mengawal lampu suluh"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"Membenarkan apl mengawal lampu suluh."</string>
@@ -458,8 +513,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"Membenarkan apl untuk memberitahu sistem widget mana yang boleh digunakan oleh apl yang mana. Apl dengan kebenaran ini boleh memberi akses kepada data peribadi kepada apl lain. Bukan untuk digunakan oleh apl biasa."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"ubah suai keadaan telefon"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Membenarkan apl untuk mengawal ciri-ciri telefon peranti. Apl dengan kebenaran ini boleh menukar rangkaian, menghidupkan dan mematikan radio telefon dan sebagainya tanpa memberitahu anda."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"baca status dan identiti telefon"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"Membenarkan apl untuk mengakses ciri-ciri telefon peranti. Apl dengan kebenaran ini boleh menentukan nombor telefon dan nombor siri telefon ini, sama ada panggilan aktif, nombor kepada panggilan itu disambungkan dan sebagainya."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"menghalang tablet daripada tidur"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"halang telefon daripada tidur"</string>
@@ -474,8 +528,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Menjalankan sebagai ujian pengilang peringkat rendah, membenarkan akses penuh kepada perkakasan telefon. Hanya tersedia apabila telefon dijalankan dalam mod ujian pengilang."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"tetapkan kertas dinding"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"Membenarkan apl menetapkan kertas dinding sistem."</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"laraskan saiz kertas dinding anda"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Membenarkan apl menetapkan pembayang saiz kertas dinding sistem."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"menetapkan semula sistem kepada lalai kilang"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"Membenarkan apl untuk menetapkan semula sistem kepada tetapan kilang sepenuhnya, memadam semua data, konfigurasi, dan apl yang dipasang."</string>
@@ -487,21 +540,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Membenarkan apl menukar zon waktu telefon."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"bertindak sebagai PerkhidmatanPengurusAkaun"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"Membenarkan apl membuat panggilan ke Pengesah Akaun."</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"cari akaun pada peranti"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Membenarkan apl mendapatkan senarai akaun yang diketahui tablet."</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Membenarkan apl mendapatkan senarai akaun yang diketahui telefon."</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"buat akaun dan tetapkan kata laluan"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Membenarkan apl menggunakan kebolehan pengesah akaun Pengurus Akaun, termasuk membuat akaun dan mendapatkan serta menetapkan kata laluannya."</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"tambah atau alih keluar akaun"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"Membenarkan apl melaksanakan operasi seperti menambah dan mengalih keluar akaun dan memadamkan kata laluannya."</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"guna akaun pada peranti"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"Membenarkan apl meminta token pengesahan."</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"lihat sambungan rangkaian"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"Membenarkan apl melihat keadaan semua rangkaian."</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"akses penuh Internet"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Membenarkan apl membuat soket rangkaian."</string>
@@ -513,36 +561,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"Membenarkan apl untuk mengubah keadaan kesambungan rangkaian tambatan."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"tukar tetapan penggunaan data latar belakang"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Membenarkan apl menukar tetapan penggunaan data latar belakang."</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"lihat sambungan Wi-Fi"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"Membenarkan apl melihat maklumat mengenai keadaan Wi-Fi."</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"sambung dan putuskan dari Wi-Fi"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"Membenarkan apl menyambung ke dan memutuskan sambungan dari titik capaian Wi-Fi dan membuat perubahan pada rangkaian Wi-Fi yang telah dikonfigurasikan."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"benarkan penerimaan Wi-Fi Multisiar"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Membenarkan apl menerima bingkisan yang tidak ditujukan secara langsung ke peranti anda. Hal ini boleh menjadi berguna apabila menemui perkhidmatan yang ditawarkan di kawasan berdekatan. Ia menggunakan lebih banyak kuasa daripada mod bukan multisiar."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"akses tetapan Bluetooth"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Membenarkan apl mengkonfigurasikan tablet Bluetooth setempat dan menemui serta berpasangan dengan peranti jauh."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Membenarkan apl mengkonfigurasikan telefon Bluetooth setempat dan menemui serta berpasangan dengan peranti jauh."</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Lihat sambungan WiMAX"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Membenarkan apl untuk melihat maklumat mengenai keadaan WiMAX."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"Tukar keadaan WiMAX"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Membenarkan apl untuk menyambung dan memutuskan sambungan dari rangkaian WiMAX."</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"berpasangan dengan peranti Bluetooth"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Membenarkan apl melihat konfigurasi tablet Bluetooth setempat dan membuat dan menerima sambungan dengan peranti yang dipasangkan."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Membenarkan apl melihat konfigurasi telefon Bluetooth setempat dan membuat dan menerima sambungan dengan peranti yang dipasangkan."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"mengawal Komunikasi Medan Dekat"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Membenarkan apl berkomunikasi dengan teg, kad dan pembaca Komunikasi Medan Dekat (NFC)."</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"lumpuhkan kunci skrin anda"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Membenarkan apl melumpuhkan kunci kekunci dan sebarang keselamatan kata laluan yang berkaitan. Contoh yang berkaitan ialah telefon melumpuhkan kunci kekunci apabila menerima panggilan telefon masuk kemudian mendayakan semula kunci kekunci apabila panggilan selesai."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"membaca tetapan penyegerakan"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Membenarkan apl untuk membaca tetapan penyegerakan, seperti sama ada penyegerakan didayakan untuk apl Orang."</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"togol segerak hidup dan mati"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Membenarkan apl untuk mengubah suai tetapan penyegerakan, seperti sama ada penyegerakan didayakan untuk apl Orang."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"baca statistik penyegerakan"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"Membenarkan apl membaca statistik penyegerakan; cth., sejarah penyegerakan yang telah berlaku."</string>
@@ -550,22 +591,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Membenarkan apl mendapatkan butiran mengenai suapan tersegerak semasa."</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"tulis suapan yang dilanggan"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Membenarkan apl untuk mengubah suai suapan segerakan semasa anda. Apl hasad boleh menukar suapan anda yang disegerakkan."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"baca istilah yang anda tambahkan kepada kamus"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Membenarkan apl membaca sebarang kata-kata peribadi, nama dan frasa yang mungkin telah disimpan oleh pengguna dalam kamus pengguna."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"tulis ke kamus yang ditakrifkan pengguna"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Membenarkan apl menulis perkataan baharu ke dalam kamus pengguna."</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"baca kandungan storan USB anda"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"baca kandungan kad SD anda"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Membolehkan apl membaca kandungan storan USB, yang mungkin termasuk foto dan media."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Membolehkan apl membaca kandungan kad SD, yang mungkin termasuk foto dan media."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"ubah suai atau padam kandungan storan USB anda"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Membenarkan apl menulis ke storan USB."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Membenarkan apl menulis ke kad SD."</string>
@@ -744,6 +779,8 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Kad SIM tiada dalam telefon."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Masukkan kad SIM."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"Kad SIM tiada atau tidak boleh dibaca. Sila masukkan kad SIM."</string>
+ <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) -->
+ <skip />
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Kad SIM anda telah dilumpuhkan secara kekal."\n" Hubungi pembekal perkhidmatan wayarles anda untuk mendapatkan kad SIM lain."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Butang lagu sebelumnya"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Butang lagu seterusnya"</string>
@@ -819,15 +856,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"Kariah"</string>
<string name="autofill_area" msgid="3547409050889952423">"Kawasan"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"Emiriah"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"baca penanda buku dan sejarah Web anda"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Membenarkan apl membaca semua URL yang telah dilawati oleh Penyemak Imbas dan semua penanda halaman Penyemak Imbas."</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"tulis penanda buku dan sejarah web"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Membenarkan apl untuk mengubah suai sejarah atau penanda buku Penyemak Imbas yang disimpan di dalam tablet anda. Apl hasad boleh menggunakannya untuk memadam atau mengubah suai data Penyemak Imbas anda."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Membenarkan apl untuk mengubah suai sejarah atau penanda buku Penyemak Imbas yang disimpan di dalam telefon anda. Apl hasad boleh menggunakannya untuk memadam atau mengubah suai data Penyemak Imbas anda."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"tetapkan penggera"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"Membenarkan apl untuk menetapkan penggera dalam apl penggera jam yang dipasang. Sesetengah applikasi jam penggera tidak boleh melaksanakan ciri ini."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"tambah mel suara"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"Membenarkan apl untuk menambahkan mesej pada peti masuk mel suara anda."</string>
@@ -1087,11 +1121,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Tetapkan tarikh"</string>
<string name="date_time_set" msgid="5777075614321087758">"Tetapkan"</string>
<string name="date_time_done" msgid="2507683751759308828">"Selesai"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"Lalai"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"BAHARU: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"BAHARU: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"Tiada kebenaran diperlukan"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"Sembunyikan"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"Tunjukkan semua"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"Storan massa USB"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"sambungan USB"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"Anda bersambung ke komputer melalui USB. Sentuh butang di bawah jika anda mahu menyalin fail antara komputer dan storan USB Android anda."</string>
@@ -1320,4 +1353,8 @@
<string name="sending" msgid="3245653681008218030">"Menghantar…"</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"Lancarkan Penyemak Imbas?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"Terima panggilan?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index 6140f97..3427829 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"Meldinger"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"Tillatelse til å lese og skrive SMS-ene dine, e-post og andre meldinger."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Personlig informasjon"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Direkte tilgang til dine kontakter og kalender lagret på nettbrettet."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Direkte tilgang til kontakter og kalendre lagret på telefonen."</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Direkte tilgang til informasjonen om deg, som er lagret på kontaktkortet ditt."</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Den sosiale informasjonen din"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Direkte tilgang til informasjon om kontaktene og de sosiale forbindelsene dine."</string>
<string name="permgrouplab_location" msgid="635149742436692049">"Din posisjon"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"Overvåking av telefonens fysiske posisjon."</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"Nettverkstilgang"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"Tilgang til ulike nettverksfunksjoner."</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Lydinnstillingene"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Endre lydinnstillingene."</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Påvirker batteriet"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Bruke funksjoner som kan tappe batteriet fortere."</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"Kalenderen"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Direkte tilgang til kalenderen og aktiviteter."</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Bokmerkene og loggen"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Direkte tilgang til bokmerker og nettleserloggen."</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Alarmen"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Stille vekkerklokken."</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Talepostkassen"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Direkte tilgang til talepostkassen."</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"Mikrofonen"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Direkte tilgang til mikrofonen for å ta opp lyd."</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"Kameraet"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"Direkte tilgang til kamera for bilde- eller videoopptak."</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Appinformasjonen din"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Ha muligheten til å påvirke andre apper på enheten din."</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Bakgrunnen"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Endre enhetens bakgrunnsinnstillinger."</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"Klokken"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Endre klokken eller tidssonen på enheten."</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Statusfelt"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Endre innstillingene for enhetens statusfelt."</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Synkroniseringsinnsttillingene"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Tilgang til synkroniseringsinnstillingene."</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"Google-kontoer"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"Tilgang til tilgjengelige Google-kontoer."</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Maskinvarekontroll"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Lavnivå tilgang og kontroll over systemet."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Utviklingsverktøy"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Funksjoner som bare apputviklere trenger."</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"Brukergrensesnittet til andre apper"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"Påvirke brukergrensesnittet i andre apper."</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"Lagring"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Tilgang til USB-lagring."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Tilgang til minnekortet."</string>
@@ -193,14 +238,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"Gir appen tillatelse til å vises i statusfeltet."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"utvide/slå sammen statusfeltet"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Lar appen utvide eller skjule statuslinjen."</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"omdirigerer utgående anrop"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Lar appen behandle utgående anrop og endre nummeret som skal ringes opp. Ondsinnede apper kan overvåke, viderekoble eller hindre utgående anrop."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"mottar tekstmeldinger (SMS)"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"Lar appen motta og behandle SMS-meldinger. Ondsinnede apper kan overvåke meldingene dine eller slette dem uten å vise dem til deg."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"mottar tekstmeldinger (MMS)"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"Lar appen motta og behandle MMS-meldinger. Ondsinnede apper kan overvåke meldingene dine eller slette dem uten å vise dem til deg."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"motta nødkringkastinger"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Lar appen motta og behandle nødkringkastingsmeldinger. Denne tillatelsen er bare tilgjengelig for systemapper."</string>
@@ -210,38 +252,33 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"Lar appen sende SMS-meldinger. Ondsinnede apper kan koste deg penger ved å sende meldinger uten din bekreftelse."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"send tekstmeldinger uten godkjenning"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Lar appen sende SMS-meldinger. Ondsinnede apper kan koste deg penger ved å sende meldinger uten din bekreftelse."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"leser tekstmeldinger (SMS eller MMS)"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Lar appen lese SMS-meldingene som er lagret på nettbrettet eller SIM-kortet ditt. Ondsinnede apper kan få tilgang til å lese konfidensielle meldinger."</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Lar appen lese SMS-meldingene som er lagret på telefonen eller SIM-kortet ditt. Ondsinnede apper kan få tilgang til å lese konfidensielle meldinger."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"redigerer tekstmeldingene dine (SMS eller MMS)"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Lar appen skrive til SMS-meldinger som er lagret på nettbrettet eller SIM-kortet ditt. Ondsinnede apper kan komme til å slette meldingene dine."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Lar appen skrive til SMS-meldinger som er lagret på telefonen eller SIM-kortet ditt. Ondsinnede apper kan komme til å slette meldingene dine."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"mottar tekstmeldinger (WAP)"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Lar appen motta og behandle WAP-meldinger. Ondsinnede apper kan overvåke meldingene dine eller slette dem uten å vise dem til deg."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"hente apper som kjører"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"Lar appen hente ut informasjon om oppgaver som kjører eller nylig har kjørt. Ondsinnede apper kan bruke dette til å oppdage privat informasjon om andre apper."</string>
<string name="permlab_getDetailedTasks" msgid="6229468674753529501">"hente informasjon om apper som kjører"</string>
- <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Tillat at appen henter ut informasjon om oppgaver som kjører eller nylig har kjørt. Skadelige apper kan bruke dette til å oppdage privat informasjon om andre apper."</string>
+ <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Tillater at appen henter ut informasjon om oppgaver som kjører eller nylig har kjørt. Skadelige apper kan bruke dette til å oppdage privat informasjon om andre apper."</string>
<string name="permlab_reorderTasks" msgid="2018575526934422779">"Endre rekkefølge på apper som kjører"</string>
<string name="permdesc_reorderTasks" msgid="4175137612205663399">"Lar appen flytte oppgaver til forgrunnen eller bakgrunnen. Ondsinnede apper kan tvinge seg frem til forgrunnen utenfor din kontroll."</string>
<string name="permlab_removeTasks" msgid="6821513401870377403">"avslutte apper som kjører"</string>
<string name="permdesc_removeTasks" msgid="1394714352062635493">"Lar appen fjerne oppgaver og avslutte apper. Ondsinnede apper kan forstyrre atferden til andre apper."</string>
- <string name="permlab_startAnyActivity" msgid="2918768238045206456">"igangsetting av aktivitet"</string>
+ <string name="permlab_startAnyActivity" msgid="2918768238045206456">"igangsetting av aktiviteter"</string>
<string name="permdesc_startAnyActivity" msgid="997823695343584001">"Tillater at appen kan starte en aktivitet, uavhengig av tillatelsesbeskyttelse og eksportstatus."</string>
<string name="permlab_setScreenCompatibility" msgid="6975387118861842061">"angi skjermkompatibilitet"</string>
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Lar appen kontrollere modus for skjermkompatibilitet i andre apper. Skadelige apper kan ødelegge funksjoner i andre apper."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"aktivere feilsøking av app"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"Lar appen slå av feilsøking for andre apper. Ondsinnede apper kan bruke dette til å avslutte andre apper."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"endrer systemets skjerminnstillinger"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Lar appen endre den nåværende konfigurasjonen, som for eksempel språk eller generell skriftstørrelse."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"aktiver bilmodus"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"Lar appen aktivere bilmodus."</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"lukker andre apper"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Lar appen avslutte bakgrunnsprosessene til andre apper, selv når det ikke er lite ledig minne."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"tvinge andre apper til å stoppe"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Lar appen tvinge andre apper til å stoppe."</string>
@@ -265,8 +302,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Lar appen kringkaste et varsel om at en WAP-PUSH-melding er mottatt. Ondsinnede apper kan bruke dette til å forfalske MMS-meldingskvitteringer, eller ubemerket erstatte innholdet av alle slags nettsider med ondsinnede varianter."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"begrense antallet kjørende prosesser"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Lar appen kontrollere det maksimale antallet prosesser som kjører. Aldri nødvendig for vanlige apper."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"tvinger bakgrunnsapper til å lukkes"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Lar appen kontrollere hvorvidt aktiviteter alltid er fullført så snart de flyttes til bakgrunnen. Aldri nødvendig for vanlige apper."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"endre batteristatistikk"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"Lar appen endre innsamlet batteristatistikk. Ikke beregnet på vanlige apper."</string>
@@ -276,8 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Lar appen starte det fullstendige grensesnittet for bekreftelse av sikkerhetskopiering. Skal ikke måtte brukes av noen apper."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"vis uautoriserte vinduer"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Lar appen opprette vinduer som er ment for å brukes av brukergrensesnittet til det interne systemet. Ikke beregnet på vanlige apper."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"tegner over andre apper"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Lar appen vise systemvarselsvinduer. Ondsinnede apper kan bruke dette til å ta over hele skjermen."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"endre global animasjonshastighet"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Lar appen når som helst endre den globale animasjonshastigheten (raskere eller langsommere animasjoner)."</string>
@@ -339,39 +374,33 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Lar programmer gi eller trekke tilbake spesielle tillatelser for eget bruk eller for andre programmer. Skadelige programmer kan bruke dette for å få tilgang til funksjoner de ikke skal ha tilgang til."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"angi foretrukne apper"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Lar appen endre de foretrukne appene dine. Ondsinnede apper kan ubemerket endre apper som kjøres, og forfalske eksisterende apper til å samle private data fra deg."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"endrer systeminnstillingene"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"Lar appen endre dataene i systeminnstillingene. Ondsinnede apper kan bruke dette til å skade systemkonfigurasjonen."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"endre sikre systeminnstillinger"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Lar appen endre dataene for systemets sikre innstillinger. Ikke beregnet på vanlige apper."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"redigere Google-tjenestekartet"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"Lar appen endre Google-tjenestekartet. Ikke beregnet på vanlige apper."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"kjører fra oppstart"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Lar appen starte seg selv så snart systemet har startet opp. Dette kan føre til lengre oppstartstid for nettbrettet, i tillegg til at nettbrettet kan bli generelt tregere av at appen alltid kjører."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Lar appen starte seg selv så snart systemet har startet opp. Dette kan føre til lengre oppstartstid for telefonen, i tillegg til at telefonen kan bli generelt tregere av at appen alltid kjører."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"sende varige kringkastinger"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Lar appen sende hengende kringkastinger («sticky broadcasts») som blir værende etter at kringkastingen er over. Ondsinnede apper kan gjøre nettbrettet tregt eller ustabilt ved å bruke for mye minne."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Lar appen sende hengende kringkastinger («sticky broadcasts») som blir værende etter at kringkastingen er over. Ondsinnede apper kan gjøre telefonen treg eller ustabil ved å bruke for mye minne."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
- <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Tillat at appen kan lese alle opplysningene om kontaktene lagret på nettbrettet ditt – inkludert hvor ofte du har ringt, sendt e-post til eller på andre måter kommunisert med spesifikke individer. Dette muliggjør autofullføring av e-postadresser og andre praktiske funksjoner. Skadelige apper kan bruke denne tillatelsen til å sende kontaktopplysningene dine til andre."</string>
- <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Tillat at appen kan lese alle opplysningene om kontaktene lagret på telefonen din – inkludert hvor ofte du har ringt, sendt e-post til eller på andre måter kommunisert med spesifikke individer. Dette muliggjør autofullføring av e-postadresser og andre praktiske funksjoner. Skadelige apper kan bruke denne tillatelsen til å sende kontaktopplysningene dine til andre."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
- <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Tillat at appen kan endre opplysningene om kontaktene lagret på nettbrettet – inkludert hvor ofte du har ringt, sendt e-post til eller på andre måter kommunisert med spesifikke individer. Dette muliggjør autofullføring av e-postadresser og andre praktiske funksjoner. Skadelige apper kan bruke denne tillatelsen til å slette eller endre kontaktopplysningene dine."</string>
- <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Tillat at appen kan endre opplysningene om kontaktene lagret på telefonen din – inkludert hvor ofte du har ringt, sendt e-post til eller på andre måter kommunisert med spesifikke individer. Dette muliggjør autofullføring av e-postadresser og andre praktiske funksjoner. Skadelige apper kan bruke denne tillatelsen til å slette eller endre kontaktopplysningene dine."</string>
+ <string name="permlab_readContacts" msgid="8348481131899886131">"leser kontaktene dine"</string>
+ <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Tillater appen å lese alle opplysningene om kontaktene lagret på nettbrettet ditt – inkludert hvor ofte du har ringt, sendt e-post til eller på andre måter kommunisert med spesifikke individer. Dette muliggjør autofullføring av e-postadresser og andre praktiske funksjoner. Skadelige apper kan bruke denne tillatelsen til å sende kontaktopplysningene dine til andre."</string>
+ <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Tillater appen å lese alle opplysningene om kontaktene lagret på telefonen din – inkludert hvor ofte du har ringt, sendt e-post til eller på andre måter kommunisert med spesifikke personer. Dette muliggjør autofullføring av e-postadresser og andre praktiske funksjoner. Skadelige apper kan bruke denne tillatelsen til å sende kontaktdata til andre."</string>
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"endrer kontaktene dine"</string>
+ <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Tillater appen å endre opplysningene om kontaktene lagret på nettbrettet – inkludert hvor ofte du har ringt, sendt e-post til eller på andre måter kommunisert med spesifikke individer. Dette muliggjør autofullføring av e-postadresser og andre praktiske funksjoner. Skadelige apper kan bruke denne tillatelsen til å slette eller endre kontaktopplysningene dine."</string>
+ <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Tillater appen å endre opplysningene om kontaktene lagret på telefonen din – inkludert hvor ofte du har ringt, sendt e-post til eller på andre måter kommunisert med spesifikke individer. Dette muliggjør autofullføring av e-postadresser og andre praktiske funksjoner. Skadelige apper kan bruke denne tillatelsen til å slette eller endre kontaktopplysningene dine."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"lar appen lese anropsloggen"</string>
<string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Lar appen lese nettbrettets samtalelogg, inkludert data om innkommende og utgående anrop. Skadelige apper kan utnytte denne tillatelsen til å sende dataene dine til andre personer."</string>
<string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Lar appen lese telefonens samtalelogg, inkludert data om innkommende og utgående anrop. Skadelige apper kan utnytte denne tillatelsen til å sende dataene dine til andre personer."</string>
<string name="permlab_writeCallLog" msgid="8552045664743499354">"lar appen endre samtaleloggen"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Lar appen endre nettbrettets samtalelogg, inkludert data om innkommende og utgående anrop. Skadelige apper kan utnytte denne tillatelsen til å slette eller endre samtaleloggen din."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Lar appen endre telefonens samtalelogg, inkludert data om innkommende og utgående anrop. Skadelige apper kan utnytte denne tillatelsen til å slette eller endre samtaleloggen din."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"leser ditt eget kontaktkort"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Lar appen lese personlige profilinformasjon som er lagret på enheten, som for eksempel navn og kontaktinformasjon. Dette betyr at appen kan identifisere deg og sende profilinformasjonen din til andre."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"endrer ditt eget kontaktkort"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Lar appen endre eller legge til personlige profilinformasjon som er lagret på enheten, som for eksempel navn og kontaktinformasjon. Dette betyr at andre apper kan identifisere deg og sende profilinformasjonen din til andre."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"lese din sosiale strøm"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Gir appen adgang til, og tillatelse til å synkronisere oppdateringer fra deg og vennene dine. Ondsinnede apper kan utnytte denne tillatelsen til å lese privat kommunikasjon mellom deg og vennene dine i sosiale nettverk."</string>
@@ -412,15 +441,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"tvinge omstart av telefon"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Lar appen fremtvinge omstart av nettbrettet."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Lar appen fremtvinge omstart av telefonen."</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"får tilgang til filsystemet til USB-lagring"</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"får tilgang til filsystemet til SD-kort"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Lar appen koble til og fra filsystemer for flyttbar lagring."</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"tømmer USB-lagring"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"tømmer SD-kort"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Lar appen formatere flyttbare lagringsmedier."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"få informasjon om intern lagring"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"Lar appen innhente informasjon om intern lagring."</string>
@@ -432,8 +457,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Lar appen koble intern lagring til eller fra."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"gi nytt navn til intern lagring"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"Lar appen gi nytt navn til intern lagring."</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"kontrollerer vibrasjon"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"Lar appen kontrollere vibreringsfunksjonen."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"kontrollere lommelykten"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"Lar appen kontrollere lommelykten."</string>
@@ -458,8 +482,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"Lar appen fortelle systemet hvilke moduler som kan brukes av hvilke apper. En app som har denne tillatelsen kan gi andre apper tilgang til personlige data. Ikke beregnet på vanlige apper."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"endre telefontilstand"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Lar appen kontrollere telefonfunksjonene til enheten. En app som har denne tillatelsen kan bytte nettverk, slå telefonens radio på og av og lignende, uten å varsle deg i det hele tatt."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"leser telefonstatus og -identitet"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"Gir appen tilgang til telefonfunksjonene på enheten. En app som har denne tillatelsen kan fastslå telefonnummeret og serienummeret til telefonen, hvorvidt en samtale er aktiv, telefonnummeret samtalen er koblet til og lignende."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"hindre nettbrettet fra å gå over til sovemodus"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"forhindre telefonen fra å sove"</string>
@@ -474,8 +497,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Kjøre som en lavnivås produsenttest, med full tilgang til telefonens maskinvare. Kun tilgjengelig når telefonen kjører i produsenttestmodus."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"endre bakgrunnsbilde"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"Lar appen angi systembakgrunnen."</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"endrer størrelsen på bakgrunnsbildet"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Lar appen angi størrelsestips for systembakgrunnen."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"tilbakestille systemet til fabrikkinnstillinger"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"Lar appen gjennomføre fullstendig tilbakestilling til fabrikkstandard, noe som sletter alle data, konfigurasjoner og installerte apper."</string>
@@ -487,21 +509,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Lar appen endre telefonens tidssone."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"fungere som kontoadministrasjonstjenesten"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"Lar appen foreta anrop til kontoautentiseringstjenester."</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"finner kontoer på enheten"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Gir appen tilgang til listen over kontoer som nettbrettet kjenner til."</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Gir appen tilgang til listen over kontoer som telefonen kjenner til."</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"oppretter kontoer og angir passord"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Lar appen bruke kontoadministratoren sine rettigheter til kontoautentisering, herunder oppretting av kontoer samt innhenting og angivelse av passord."</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"legger til eller fjerner kontoer"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"Lar appen utføre handlinger som å legge til og fjerne kontoer samt slette passord."</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"bruker kontoer på enheten"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"Lar appen be om autentiseringstokener."</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"ser nettverkstilkoblinger"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"Lar appen se tilstanden til alle nettverk."</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"full internett-tilgang"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Lar appen opprette nettverkskontakter."</string>
@@ -513,36 +530,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"Lar appen endre innstillingene for nettverkstilknytning via tethering."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"endre innstilling for bakgrunnsdata"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Lar appen endre innstillingene for bakgrunnsdatabruk."</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"ser Wi-Fi-tilkoblinger"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"Lar appen se informasjon om Wi-Fi-statusen."</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"kobler til og fra Wi-Fi"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"Lar appen koble til og fra Wi-Fi-tilgangspunkter, og å gjøre endringer i konfigurerte Wi-Fi-nettverk."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"tillat multicast for trådløse nettverk"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Lar appen motta pakker som ikke er adressert direkte til enheten. Dette kan være nyttig ved leting etter nærliggende tjenester, men bruker mer strøm enn ikke-multikastingsmodus."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"endrer Bluetooth-innstillinger"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Lar appen konfigurere det lokale Bluetooth-nettbrettet, samt oppdage og koble sammen med eksterne enheter."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Lar appen konfigurere den lokale Bluetooth-telefonen, samt oppdage og koble sammen med eksterne enheter."</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"ser WiMAX-tilkoblinger"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Lar appen se informasjon om WiMAX-statusen."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"Endre WiMAX-status"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Lar appen koble til og fra WiMAX-nettverk."</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"kobler til Bluetooth-enheter"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Lar appen se konfigurasjonen av det lokale Bluetooth-nettbrettet samt opprette og godta tilkoblinger med sammenkoblede enheter."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Lar appen se konfigurasjonen av den lokale Bluetooth-telefonen samt opprette og godta tilkoblinger med sammenkoblede enheter."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"kontroller overføring av data med NFC-teknologi"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Lar appen kommunisere med etiketter, kort og lesere som benytter NFC-teknologi."</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"deaktiverer skjermlåsen"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Lar appen deaktivere tastelåsen og eventuell tilknyttet passordsikkerhet. Et legitimt eksempel på dette er at telefonen deaktiverer tastelåsen når du mottar et innkommende anrop, og deretter aktiverer tastelåsen igjen når samtalen er ferdig."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"lese synkroniseringsinnstillinger"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Lar appen lese synkroniseringsinnstillinger, som for eksempel hvorvidt synkronisering er aktivert for appen Kontakter."</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"slår synkronisering av og på"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Lar appen endre synkroniseringsinnstillingene, som for eksempel hvorvidt synkronisering er på for appen Kontakter."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"lese synkroniseringsstatistikk"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"Lar appen lese synkroniseringsstatistikk, for eksempel loggen over alle synkroniseringer som er utført."</string>
@@ -550,22 +560,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Lar appen hente inn detaljer om strømmer som er synkroniserte for øyeblikket."</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"endre abonnement på nyhetskilder"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Lar appen endre strømmer som er synkronisert for øyeblikket. Ondsinnede apper kan endre de synkroniserte strømmene dine."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"leser uttrykkene du har lagt til i ordboken"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Lar appen lese eventuelle private ord, navn og uttrykk som brukeren kan ha lagret i brukerordlisten."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"skrive i brukerdefinert ordliste"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Lar appen skrive nye ord i brukerordlisten."</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"leser innholdet i USB-lagringen"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"leser innholdet i SD-kortet"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Tillater at appen leser innholdet i USB-lagring, som kan inneholde bilder og medier."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Tillater at appen leser innholdet i SD-kort, som kan inneholde bilder og medier."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"endrer eller sletter innholdet i USB-lagringen"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Gir appen tillatelse til å skrive til USB-lagringen."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Lar appen skrive til SD-kortet."</string>
@@ -744,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Ikke noe SIM-kort i telefonen."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Sett inn et SIM-kort."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM-kort mangler eller er uleselig. Sett inn et SIM-kort."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"Ubrukelige SIM-kort."</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"SIM-kortet er deaktivert permanent."\n"Ta kontakt med leverandøren av trådløstjenesten for å få et nytt SIM-kort."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Knapp for forrige sang"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Knapp for neste sang"</string>
@@ -819,15 +824,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"Sogn"</string>
<string name="autofill_area" msgid="3547409050889952423">"Område"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"Emirat"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"leser nettbokmerkene og nettloggen din"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Lar appen lese alle adresser som nettleseren har besøkt, og alle nettleserens bokmerker."</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"skriver nettbokmerker og nettlogg"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Lar appen endre nettleserens logg og bokmerker som er lagret på nettbrettet. Ondsinnede apper kan bruke dette til å slette eller endre nettleserens data."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Lar appen endre nettleserens logg og bokmerker som er lagret på telefonen. Ondsinnede apper kan bruke dette til å slette eller endre nettleserens data."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"angir alarm"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"Lar appen stille inn alarmen for en installert alarmklokke-app. Enkelte alarmklokke-apper implementerer kanskje ikke denne funksjonen."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"legg til talepost"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"Lar appen legge til meldinger i talepostkassen din."</string>
@@ -1087,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Angi dato"</string>
<string name="date_time_set" msgid="5777075614321087758">"Lagre"</string>
<string name="date_time_done" msgid="2507683751759308828">"Ferdig"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"Standard"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NYTT: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NYTT: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"Trenger ingen rettigheter"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"Skjul"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"Vis alle"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"USB-masselagring"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"USB koblet til"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"Du har koblet deg til datamaskinen via USB. Trykk på knappen nedenfor hvis du vil kopiere filer mellom datamaskinen og Android-telefonens USB-lagring."</string>
@@ -1320,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"Sender …"</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"Vil du starte nettleseren?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"Vil du besvare anropet?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index 281f2b35..ef85ec4 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"Uw berichten"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"Sms, e-mail en andere berichten lezen en schrijven."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Uw persoonlijke informatie"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Rechtstreekse toegang tot de op uw tablet opgeslagen contacten en agenda."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Rechtstreekse toegang tot de op uw telefoon opgeslagen contacten en agenda."</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Rechtstreeks toegang krijgen tot informatie over u die is opgeslagen op uw contactkaart."</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Uw sociale informatie"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Rechtstreeks toegang krijgen tot informatie over uw contacten en sociale connecties."</string>
<string name="permgrouplab_location" msgid="635149742436692049">"Uw locatie"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"Uw fysieke locatie bijhouden."</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"Netwerkcommunicatie"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"Toegang tot verschillende netwerkfuncties."</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Audio-instellingen"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Audio-instellingen wijzigen."</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"De accu beïnvloeden"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Functies gebruiken waardoor de accu snel leeg kan raken."</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"Agenda"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Rechtstreeks toegang krijgen tot agenda en afspraken."</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Bladwijzers en geschiedenis"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Rechtstreeks toegang krijgen tot bladwijzers en browsergeschiedenis."</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Alarm"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"De wekker instellen."</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Voicemail"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Rechtstreeks toegang krijgen tot voicemail."</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"Microfoon"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Rechtstreeks toegang krijgen tot de microfoon om geluid op te nemen."</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"Camera"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"Rechtstreeks toegang krijgen tot de camera om afbeeldingen of video\'s vast te leggen."</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Informatie over uw applicaties"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Mogelijkheid om het gedrag van andere applicaties op uw apparaat te beïnvloeden."</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Achtergrond"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"De achtergrondinstellingen van het apparaat wijzigen."</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"Klok"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"De tijd of tijdzone van het apparaat wijzigen."</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Statusbalk"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"De instellingen van de apparaatstatusbalk wijzigen."</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Synchronisatie-instellingen"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Toegang krijgen tot de synchronisatie-instellingen."</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"Uw accounts"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"Toegang tot de beschikbare accounts."</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Bedieningselementen hardware"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Toegang tot en beheer van het systeem op lager niveau."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Ontwikkelingshulpprogramma\'s"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Functies die alleen nodig zijn voor app-ontwikkelaars."</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"Gebruikersinterface van andere applicaties"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"De gebruikersinterface van andere applicaties beïnvloeden."</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"Opslagruimte"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Toegang krijgen tot USB-opslag."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Toegang tot de SD-kaart."</string>
@@ -193,14 +238,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"Hiermee kan de app de statusbalk zijn."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"statusbalk uitvouwen/samenvouwen"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Hiermee kan de app de statusbalk uitvouwen of samenvouwen."</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"uitgaande oproepen doorschakelen"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Hiermee kan de app uitgaande oproepen verwerken en het nummer wijzigen dat wordt gebeld. Schadelijke apps kunnen uitgaande oproepen bijhouden, omleiden of blokkeren."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"tekstberichten (SMS) ontvangen"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"Hiermee kan de app sms-berichten ontvangen en verwerken. Schadelijke apps kunnen uw berichten bijhouden of deze verwijderen zonder dat u ze te zien krijgt."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"tekstberichten (MMS) ontvangen"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"Hiermee kan de app MMS-berichten ontvangen en verwerken. Schadelijke apps kunnen uw berichten bijhouden of deze verwijderen zonder dat u ze te zien krijgt."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"noodberichten ontvangen"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Hiermee kan de app berichten over noodsituaties ontvangen en verwerken. Deze rechten zijn alleen beschikbaar voor systeemapps."</string>
@@ -210,16 +252,13 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"Hiermee kan de app sms\'jes verzenden. Schadelijke apps kunnen u geld kosten door zonder uw toestemming berichten te verzenden."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"zonder toestemming sms\'jes verzenden"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Hiermee kan de app sms\'jes verzenden. Schadelijke apps kunnen u geld kosten door zonder uw toestemming berichten te verzenden."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"uw tekstberichten (SMS of MMS) lezen"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Hiermee kan de app sms\'jes lezen die op uw tablet of simkaart zijn opgeslagen. Schadelijke apps kunnen uw vertrouwelijke berichten lezen."</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Hiermee kan de app sms\'jes lezen die op uw telefoon of simkaart zijn opgeslagen. Schadelijke apps kunnen uw vertrouwelijke berichten lezen."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"uw tekstberichten (SMS of MMS) bewerken"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Hiermee kan de app naar de op uw tablet of simkaart opgeslagen sms\'jes schrijven. Schadelijke apps kunnen uw berichten mogelijk verwijderen."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Hiermee kan de app naar de op uw telefoon of simkaart opgeslagen sms\'jes schrijven. Schadelijke apps kunnen uw berichten mogelijk verwijderen."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"tekstberichten (WAP) ontvangen"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Hiermee kan de app WAP-berichten ontvangen en verwerken. Schadelijke apps kunnen uw berichten bijhouden of deze verwijderen zonder dat u ze te zien krijgt."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"actieve apps ophalen"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"Hiermee kan de app informatie over huidige en recent uitgevoerde taken ophalen. Schadelijke apps kunnen op deze manier mogelijk privé-informatie over andere apps achterhalen."</string>
@@ -235,13 +274,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Toestaan dat de app de schermcompatibiliteitsmodus van andere apps beheert. Schadelijke apps kunnen het gedrag van andere apps verstoren."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"foutopsporing in apps inschakelen"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"Hiermee kan de app de foutopsporing voor een andere app inschakelen. Schadelijke apps kunnen dit gebruiken om andere apps af te sluiten."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"weergave-instellingen voor systeem wijzigen"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Hiermee kan de app de huidige configuratie wijzigen, zoals de landinstelling of de algemene lettergrootte."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"automodus inschakelen"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"Hiermee kan de app de automodus inschakelen."</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"andere apps sluiten"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Hiermee kan de app achtergrondprocessen van andere apps sluiten, zelfs als er voldoende geheugenruimte beschikbaar is."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"andere apps gedwongen stoppen"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Hiermee kan de app andere apps stoppen."</string>
@@ -265,8 +302,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Hiermee kan de app een melding verzenden dat een WAP PUSH-bericht is ontvangen. Schadelijke apps kunnen dit gebruiken om de ontvangst van MMS-berichten te vervalsen of de inhoud van een webpagina ongemerkt te vervangen door schadelijke varianten."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"aantal actieve processen beperken"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Hiermee kan de app het maximale aantal processen beheren dat kan worden uitgevoerd. Nooit nodig voor normale apps."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"achtergrondapps gedwongen stoppen"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Hiermee kan de app bepalen of activiteiten worden afgerond zodra ze naar de achtergrond worden verplaatst. Dit is nooit nodig voor normale apps."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"accustatistieken aanpassen"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"Hiermee kan de app verzamelde accustatistieken wijzigen. Niet voor gebruik door normale apps."</string>
@@ -276,8 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Hiermee kan de app de gebruikersinterface voor bevestiging van de volledige back-up starten. Mag door geen enkele app worden gebruikt."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"niet-geautoriseerde vensters weergeven"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Hiermee kan de app vensters maken die door de interne systeemgebruikersinterface worden gebruikt. Niet voor gebruik door normale apps."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"weergeven over andere apps"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Hiermee kan de app vensters met systeemwaarschuwingen weergeven. Schadelijke apps kunnen hiermee het volledige scherm overnemen."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"algemene animatiesnelheid wijzigen"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Hiermee kan de app op elk gewenst moment de algemene animatiesnelheid wijzigen (snellere of tragere animaties)."</string>
@@ -339,26 +374,22 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Toestaan dat een app specifieke rechten aan zichzelf of andere apps verleent of deze intrekt. Schadelijke apps kunnen dit gebruiken om toegang te krijgen tot functies waartoe u de apps geen toegang heeft gegeven."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"voorkeursapps instellen"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Hiermee kan de app uw voorkeursapps aanpassen. Schadelijke apps kunnen de apps die worden uitgevoerd zonder uw medeweten wijzigen om uw bestaande apps te imiteren en privégegevens van u te verzamelen."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"systeeminstellingen aanpassen"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"Hiermee kan de app de instellingsgegevens van het systeem aanpassen. Schadelijke apps kunnen de configuratie van uw systeem verstoren."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"beveiligde systeeminstellingen wijzigen"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Hiermee kan de app de gegevens voor beveiligde systeeminstellingen aanpassen. Dit wordt niet gebruikt door normale apps."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"de Google-serviceskaart wijzigen"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"Hiermee kan de app de Google-serviceskaart wijzigen. Niet voor gebruik door normale apps."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"uitvoeren bij opstarten"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Hiermee kan de app zichzelf laten starten zodra het systeem is opgestart. Hierdoor kan het langer duren voordat de tablet is opgestart en een app kan altijd actief zijn, wat de tablet kan vertragen."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Hiermee kan de app zichzelf starten zodra het systeem klaar is met opstarten. Hierdoor kan het langer duren voordat de telefoon is opgestart en kan de app de telefoonprocessen vertragen door altijd actief te zijn."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"sticky broadcast verzenden"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Hiermee kan de app sticky broadcasts verzenden die behouden blijven nadat de broadcast is beëindigd. Schadelijke apps kunnen hiermee de tablet traag of instabiel maken door ervoor te zorgen dat er te veel geheugenruimte wordt gebruikt."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Hiermee kan de app sticky broadcasts verzenden die behouden blijven nadat de broadcast is beëindigd. Schadelijke apps kunnen hiermee de telefoon traag of instabiel maken door ervoor te zorgen dat er te veel geheugenruimte wordt gebruikt."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
+ <string name="permlab_readContacts" msgid="8348481131899886131">"uw contacten lezen"</string>
<string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Hiermee kan de app alle gegevens lezen over contacten die zijn opgeslagen op uw tablet, met inbegrip van de frequentie waarmee u heeft gebeld, e-mails heeft verzonden, of op andere wijze heeft gecommuniceerd met bepaalde personen. Dit helpt bij het automatisch aanvullen van e-mailadressen en andere handige functies. Schadelijke apps kunnen deze toestemming gebruiken om uw contactgegevens naar andere mensen te verzenden."</string>
<string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Hiermee kan de app alle gegevens lezen over contacten die zijn opgeslagen op uw telefoon, met inbegrip van de frequentie waarmee u heeft gebeld, e-mails heeft verzonden, of op andere wijze heeft gecommuniceerd met bepaalde personen. Dit helpt bij het automatisch aanvullen van e-mailadressen en andere handige functies. Schadelijke apps kunnen deze toestemming gebruiken om uw contactgegevens naar andere mensen te verzenden."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"uw contacten aanpassen"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Hiermee kan de app gegevens wijzigen van contacten die zijn opgeslagen op uw tablet, met inbegrip van de frequentie waarmee u heeft gebeld, e-mails heeft verzonden, of op andere wijze heeft gecommuniceerd met bepaalde personen. Dit helpt bij het automatisch aanvullen van e-mailadressen en andere handige functies. Schadelijke apps kunnen deze toestemming gebruiken om uw contactgegevens naar andere mensen te verzenden."</string>
<string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Hiermee kan de app gegevens wijzigen van contacten die zijn opgeslagen op uw telefoon, met inbegrip van de frequentie waarmee u heeft gebeld, e-mails heeft verzonden, of op andere wijze heeft gecommuniceerd met bepaalde personen. Dit helpt bij het automatisch aanvullen van e-mailadressen en andere handige functies. Schadelijke apps kunnen deze toestemming gebruiken om uw contactgegevens naar andere mensen te verzenden."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"oproeplogboek lezen"</string>
@@ -367,11 +398,9 @@
<string name="permlab_writeCallLog" msgid="8552045664743499354">"oproeplogboek schrijven"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Toestaan dat de app het oproeplogboek van uw tablet aanpast, waaronder gegevens over inkomende en uitgaande oproepen. Schadelijke apps kunnen hiermee uw oproeplogboek wissen of aanpassen."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Toestaan dat de app het oproeplogboek van uw telefoon aanpast, waaronder gegevens over inkomende en uitgaande oproepen. Schadelijke apps kunnen hiermee uw oproeplogboek wissen of aanpassen."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"uw eigen contactkaart lezen"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Hiermee kan de app persoonlijke profielgegevens lezen die op uw apparaat zijn opgeslagen, zoals uw naam en contactgegevens. Dit betekent dat de app u kan identificeren en uw profielgegevens naar anderen kan verzenden."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"uw eigen contactkaart aanpassen"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Hiermee kan de app persoonlijke profielgegevens wijzigen of toevoegen die op uw apparaat zijn opgeslagen, zoals uw naam en contactgegevens. Dit betekent dat andere apps u kunnen identificeren en uw profielgegevens naar anderen kunnen verzenden."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"uw sociale stream lezen"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Hiermee kan de app toegang krijgen tot sociale updates van u en uw vrienden en deze synchroniseren. Schadelijke apps kunnen hiermee toegang krijgen tot privécommunicatie tussen u en uw vrienden via sociale netwerken."</string>
@@ -412,15 +441,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"telefoon nu opnieuw opstarten"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Hiermee kan de app de tablet opnieuw opstarten."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Hiermee kan de app de telefoon opnieuw laten opstarten."</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"bestandssysteem van USB-opslag openen"</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"bestandssysteem van SD-kaart openen"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Hiermee kan de app bestandssystemen koppelen en ontkoppelen voor verwisselbare opslagruimte."</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"USB-opslag wissen"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"SD-kaart wissen"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Hiermee kan de app de externe opslag formatteren."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"informatie over de interne opslag verkrijgen"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"Hiermee kan de app informatie over de interne opslag verkrijgen."</string>
@@ -432,8 +457,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Hiermee kan de app de interne opslag koppelen/ontkoppelen."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"naam van interne opslag wijzigen"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"Hiermee kan de app de naam van de interne opslag wijzigen."</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"trilling beheren"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"Hiermee kan de app de trilstand beheren."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"zaklamp bedienen"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"Hiermee kan de app de zaklamp bedienen."</string>
@@ -458,8 +482,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"Hiermee kan de app het systeem laten weten welke widgets door welke app kunnen worden gebruikt. Een app met deze rechten kan andere apps toegang verlenen tot persoonlijke gegevens. Dit wordt niet gebruikt door normale apps."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"telefoonstatus wijzigen"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Hiermee kan de app de telefoonfuncties van het apparaat beheren. Een app met deze toestemming kan schakelen tussen netwerken, kan de radio van de telefoon in- en uitschakelen en dergelijke acties uitvoeren zonder dat u hiervan op de hoogte wordt gesteld."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"telefoonstatus en -identiteit lezen"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"Hiermee krijgt de app toegang tot de telefoonfuncties van het apparaat. Een app met de betreffende toestemming kan het telefoonnummer en serienummer van deze telefoon achterhalen, bepalen of een oproep actief is, het gekozen nummer achterhalen enzovoort."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"voorkomen dat tablet overschakelt naar slaapmodus"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"voorkomen dat telefoon overschakelt naar slaapmodus"</string>
@@ -474,8 +497,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Uitvoeren als fabrikanttest op laag niveau, waardoor toegang wordt gegeven tot de hardware van de telefoon. Alleen beschikbaar als een telefoon zich in de fabrikanttestmodus bevindt."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"achtergrond instellen"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"Hiermee kan de app de systeemachtergrond instellen."</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"uw achtergrondformaat aanpassen"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Hiermee kan de app de grootte van de achtergrond instellen."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"systeem terugzetten op fabrieksinstellingen"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"Hiermee kan de app het systeem terugzetten naar de fabrieksinstellingen, waarbij alle gegevens, configuraties en geïnstalleerde apps worden verwijderd."</string>
@@ -487,21 +509,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Hiermee kan de app de tijdzone van de telefoon wijzigen."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"fungeren als de AccountManagerService"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"Hiermee kan de app AccountAuthenticators aanroepen."</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"accounts op het apparaat vinden"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Hiermee kan de app de lijst met accounts van de tablet ophalen."</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Hiermee kan de app de lijst met accounts van een telefoon ophalen."</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"accounts maken en wachtwoorden instellen"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Hiermee kan de app de accountverificatiemogelijkheden van AccountManager gebruiken, inclusief het maken van accounts en het ophalen en instellen van de bijbehorende wachtwoorden."</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"accounts toevoegen of verwijderen"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"Hiermee kan de app bewerkingen uitvoeren zoals het toevoegen en verwijderen van accounts en het verwijderen van de bijbehorende wachtwoorden."</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"accounts op het apparaat gebruiken"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"Hiermee kan de app verificatietokens aanvragen."</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"netwerkverbindingen weergeven"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"Hiermee kan de app de status van alle netwerken bekijken."</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"volledige internettoegang"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Hiermee kan de app netwerksockets maken."</string>
@@ -513,36 +530,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"Hiermee kan de app de status van de getetherde netwerkverbinding wijzigen."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"instelling voor gebruik van achtergrondgegevens van gegevens wijzigen"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Hiermee kan de app de instelling voor gebruik van achtergrondgegevens wijzigen."</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"wifi-verbindingen weergeven"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"Hiermee kan de app informatie over de wifi-status bekijken."</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"wifi-verbinding maken en verbreken"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"Hiermee kan de app zich koppelen aan en loskoppelen van wifi-toegangspunten en wijzigingen aanbrengen in geconfigureerde wifi-netwerken."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"Wi-Fi Multicast-ontvangst toestaan"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Hiermee kan de app pakketten ontvangen die niet rechtstreeks zijn geadresseerd aan uw apparaat. Dit kan handig zijn wanneer services in de buurt worden ontdekt. Dit verbruikt meer energie dan de niet-multicastmodus."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"Bluetooth-instellingen openen"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Hiermee kan de app de lokale Bluetooth-tablet configureren en externe apparaten zoeken en koppelen."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Hiermee kan de app de lokale Bluetooth-telefoon configureren en externe apparaten zoeken en koppelen."</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"WiMAX-verbindingen weergeven"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Hiermee kan de app informatie over de WiMAX-status bekijken."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"WiMAX-status wijzigen"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Hiermee kan de app verbinding maken met het WiMAX-netwerk en de verbinding met dit netwerk verbreken."</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"koppelen met Bluetooth-apparaten"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Hiermee kan de app de configuratie van een lokale Bluetooth-tablet bekijken en verbindingen met gekoppelde apparaten maken en accepteren."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Hiermee kan de app de configuratie van de lokale Bluetooth-telefoon bekijken en verbindingen met gekoppelde apparaten maken en accepteren."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"Near Field Communication regelen"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Hiermee kan de app communiceren met NFC-tags (Near Field Communication), kaarten en lezers."</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"uw schermvergrendeling uitschakelen"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Hiermee kan de app de toetsenblokkering en bijbehorende wachtwoordbeveiliging uitschakelen. Een voorbeeld: de telefoon schakelt de toetsenblokkering uit als er een oproep binnenkomt en schakelt de toetsenblokkering weer in als de oproep is beëindigd."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"synchronisatie-instellingen lezen"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Hiermee kan de app uw synchronisatie-instellingen lezen, bijvoorbeeld of de synchronisatie van de app Personen is ingeschakeld."</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"synchronisatie in- en uitschakelen"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Hiermee kan de app uw synchronisatie-instellingen wijzigen en bijvoorbeeld de synchronisatie van de app Personen in- of uitschakelen."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"synchronisatiestatistieken lezen"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"Hiermee kan de app de synchronisatiestatistieken lezen, zoals de geschiedenis van uitgevoerde synchronisaties."</string>
@@ -550,22 +560,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Hiermee kan de app details over de huidige gesynchroniseerde feeds achterhalen."</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"geabonneerde feeds schrijven"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Hiermee kan de app uw momenteel gesynchroniseerde feeds aanpassen. Schadelijke apps kunnen uw gesynchroniseerde feeds wijzigen."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"termen lezen die u heeft toegevoegd aan het woordenboek"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Hiermee kan de app privéwoorden, namen en woordcombinaties lezen die de gebruiker heeft opgeslagen in het gebruikerswoordenboek."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"schrijven naar door gebruiker gedefinieerd woordenboek"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Hiermee kan de app nieuwe woorden schrijven naar het gebruikerswoordenboek."</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"de inhoud van uw USB-opslag lezen"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"de inhoud van uw SD-kaart lezen"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Toestaan dat de app inhoud in de USB-opslag, waaronder foto\'s en media, leest."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Toestaan dat de app inhoud op de SD-kaart, waaronder foto\'s en media, leest."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"de inhoud van uw USB-opslag aanpassen of verwijderen"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Hiermee kan de app schrijven naar de USB-opslag."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Hiermee kan de app schrijven naar de SD-kaart."</string>
@@ -744,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Geen SIM-kaart in telefoon."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Plaats een simkaart."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"De simkaart ontbreekt of kan niet worden gelezen. Plaats een simkaart."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"Onbruikbare simkaart."</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Uw simkaart is permanent uitgeschakeld."\n" Neem contact op met uw mobiele serviceprovider voor een nieuwe simkaart."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Knop voor vorig nummer"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Knop voor volgend nummer"</string>
@@ -819,15 +824,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"Gemeente"</string>
<string name="autofill_area" msgid="3547409050889952423">"Gebied"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"Emiraat"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"uw webbladwijzers en -geschiedenis lezen"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Hiermee kan de app de URL\'s lezen die u via de browser heeft bezocht, evenals alle bladwijzers van de browser."</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"webbladwijzers en -geschiedenis schrijven"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Hiermee kan de app de browsergeschiedenis of bladwijzers aanpassen die op uw tablet zijn opgeslagen. Schadelijke apps kunnen dit gebruiken om de gegevens van uw browser te wissen of te wijzigen."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Hiermee kan de app de browsergeschiedenis of bladwijzers aanpassen die op uw telefoon zijn opgeslagen. Schadelijke apps kunnen dit gebruiken om de gegevens van uw browser te wissen of te wijzigen."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"een alarm instellen"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"Hiermee kan de app een alarm instellen in een geïnstalleerde wekkerapp. Deze functie wordt door sommige wekkerapps niet geïmplementeerd."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"voicemail toevoegen"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"Hiermee kan de app berichten toevoegen aan de inbox van uw voicemail."</string>
@@ -1087,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Datum instellen"</string>
<string name="date_time_set" msgid="5777075614321087758">"Instellen"</string>
<string name="date_time_done" msgid="2507683751759308828">"Gereed"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"Standaard"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NIEUW: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NIEUW: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"Geen machtigingen vereist"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"Verbergen"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"Alles weergeven"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"USB-massaopslag"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"USB-verbinding"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"U heeft uw telefoon via USB op uw computer aangesloten. Raak de knop hieronder aan als u bestanden tussen uw computer en de USB-opslag van uw Android wilt kopiëren."</string>
@@ -1320,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"Verzenden..."</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"Browser starten?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"Oproep accepteren?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index 15475b1..022b8c5 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -168,12 +168,84 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"Twoje wiadomości"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"Czytanie i zapisywanie wiadomości SMS, e-mail i innych"</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Informacje osobiste"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Bezpośredni dostęp do kalendarza i kontaktów zapisanych w tablecie."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Bezpośredni dostęp do kontaktów i kalendarza zapisanych w telefonie."</string>
+ <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) -->
+ <skip />
+ <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) -->
+ <skip />
<string name="permgrouplab_location" msgid="635149742436692049">"Twoja lokalizacja"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"Monitorowanie fizycznej lokalizacji"</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"Połączenia sieciowe"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"Uzyskiwanie dostępu do różnych funkcji sieciowych"</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) -->
+ <skip />
+ <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) -->
+ <skip />
+ <!-- no translation found for permgrouplab_calendar (5863508437783683902) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_calendar (5777534316982184416) -->
+ <skip />
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) -->
+ <skip />
+ <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) -->
+ <skip />
+ <!-- no translation found for permgrouplab_voicemail (4162237145027592133) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) -->
+ <skip />
+ <!-- no translation found for permgrouplab_microphone (171539900250043464) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_microphone (7106618286905738408) -->
+ <skip />
+ <!-- no translation found for permgrouplab_camera (4820372495894586615) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_camera (2933667372289567714) -->
+ <skip />
+ <!-- no translation found for permgrouplab_appInfo (8028789762634147725) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) -->
+ <skip />
+ <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) -->
+ <skip />
+ <!-- no translation found for permgrouplab_systemClock (406535759236612992) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) -->
+ <skip />
+ <!-- no translation found for permgrouplab_statusBar (2095862568113945398) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) -->
+ <skip />
+ <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) -->
+ <skip />
<string name="permgrouplab_accounts" msgid="3359646291125325519">"Twoje konta"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"Dostęp do udostępnionych kont."</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Sterowanie sprzętowe"</string>
@@ -184,6 +256,10 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Dostęp i kontrola systemu niższego poziomu."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Narzędzia programistyczne"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Funkcje potrzebne jedynie programistom."</string>
+ <!-- no translation found for permgrouplab_display (4279909676036402636) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_display (6051002031933013714) -->
+ <skip />
<string name="permgrouplab_storage" msgid="1971118770546336966">"Pamięć"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Dostęp do nośnika USB."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Dostęp do karty SD."</string>
@@ -193,14 +269,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"Pozwala aplikacji na występowanie na pasku stanu."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"rozwijanie/zwijanie paska stanu"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Pozwala aplikacji na rozwijanie lub zwijanie paska stanu."</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"przekierowywanie połączeń wychodzących"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Pozwala aplikacji na przetwarzanie połączeń wychodzących i zmianę wybieranego numeru. Złośliwe aplikacje mogą monitorować, przekierowywać lub blokować połączenia wychodzące."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"odbieranie wiadomości tekstowych (SMS)"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"Pozwala aplikacji na odbieranie i przetwarzanie wiadomości SMS. Złośliwe aplikacje mogą monitorować wiadomości lub usuwać je, zanim zostaną wyświetlone."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"odbieranie wiadomości tekstowych (MMS)"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"Pozwala aplikacji na odbieranie i przetwarzanie wiadomości MMS. Złośliwe aplikacje mogą monitorować wiadomości lub usuwać je, zanim zostaną wyświetlone."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"odbiór emisji alarmowych"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Pozwala aplikacji na odbieranie i przetwarzanie komunikatów transmisji alarmowych. To pozwolenie jest dostępne tylko dla aplikacji systemowych."</string>
@@ -210,16 +283,13 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"Pozwala aplikacji na wysyłanie wiadomości SMS. Złośliwe aplikacje mogą generować koszty, wysyłając wiadomości bez Twojej wiedzy."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"wysyłanie wiadomości SMS bez potwierdzenia"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Pozwala aplikacji na wysyłanie wiadomości SMS. Złośliwe aplikacje mogą generować koszty, wysyłając wiadomości bez Twojej wiedzy."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"odczytywanie wiadomości tekstowych (SMS i MMS)"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Pozwala aplikacji na odczyt wiadomości SMS zapisanych w tablecie lub na karcie SIM. Złośliwe aplikacje mogą odczytać Twoje poufne wiadomości."</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Pozwala aplikacji na odczyt wiadomości SMS zapisanych w telefonie lub na karcie SIM. Złośliwe aplikacje mogą odczytać Twoje poufne wiadomości."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"edytowanie wiadomości tekstowych (SMS i MMS)"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Pozwala aplikacji na zapisywanie wiadomości SMS przechowywanych w tablecie lub na karcie SIM. Złośliwe aplikacje mogą usunąć wiadomości."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Pozwala aplikacji na zapisywanie wiadomości SMS przechowywanych w telefonie lub na karcie SIM. Szkodliwe aplikacje mogą usunąć wiadomości."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"odbieranie wiadomości tekstowych (WAP)"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Pozwala aplikacji na odbieranie i przetwarzanie wiadomości WAP. Złośliwe aplikacje mogą monitorować wiadomości lub usuwać je, zanim zostaną wyświetlone."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"pobieranie uruchomionych aplikacji"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"Pozwala aplikacji na pobieranie informacji na temat obecnie i ostatnio uruchomionych zadań. Złośliwe aplikacje mogą uzyskać dostęp do prywatnych informacji na temat innych aplikacji."</string>
@@ -235,13 +305,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Pozwala aplikacji na sterowanie trybem zgodności ekranu innych aplikacji. Złośliwe aplikacje mogą zmienić zachowanie innych programów."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"włączenie debugowania aplikacji"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"Pozwala aplikacji na włączenie debugowania innej aplikacji. Złośliwe aplikacje mogą to wykorzystać do kończenia pracy innych programów."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"zmienianie ustawień wyświetlania systemu"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Pozwala aplikacji na zmianę bieżącej konfiguracji, na przykład regionu lub ogólnego rozmiaru czcionki."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"włączanie trybu samochodowego"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"Pozwala aplikacji na włączanie trybu samochodowego."</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"zamykanie innych aplikacji"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Pozwala aplikacji na kończenie procesów innych aplikacji w tle, nawet jeśli jest dużo pamięci."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"wymuszanie zatrzymania innych aplikacji"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Pozwala aplikacji na wymuszanie zatrzymania innych aplikacji."</string>
@@ -265,8 +333,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Pozwala aplikacji na nadanie powiadomienia o odebraniu wiadomości WAP PUSH. Złośliwe aplikacje mogą to wykorzystać do fałszowania potwierdzenia odbioru wiadomości MMS lub do niezauważalnego podmieniania zawartości dowolnej strony internetowej jej szkodliwymi wariantami."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"ograniczanie liczby uruchomionych procesów"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Pozwala aplikacji na kontrolowanie maksymalnej liczby uruchamianych procesów. Nigdy niewykorzystywane przez normalne aplikacje."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"wymuszanie zamknięcia aplikacji w tle"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Pozwala aplikacji na kontrolowanie, czy czynności są zawsze kończone, kiedy zaczynają działać w tle. Nigdy nie jest potrzebne normalnym aplikacjom."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"zmienianie statystyk dotyczących baterii"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"Pozwala aplikacji na modyfikowanie zebranych statystyk dotyczących baterii. Nieprzeznaczone dla zwykłych aplikacji."</string>
@@ -276,8 +343,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Pozwala aplikacji na uruchomienie interfejsu użytkownika potwierdzenia pełnej kopii zapasowej. Nie może być używane przez żadne aplikacje."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"wyświetlanie nieuwierzytelnionych okien"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Pozwala aplikacji na tworzenie okien przeznaczonych do wykorzystania przez wewnętrzny interfejs użytkownika systemu. Nieprzeznaczone dla zwykłych aplikacji."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"rysowanie na innych aplikacjach"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Pozwala aplikacji na pokazywanie okien z alertami systemu. Złośliwe aplikacje mogą przejąć cały ekran."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"zmienianie ogólnej prędkości animacji"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Pozwala aplikacji na zmianę ogólnej prędkości animacji (szybsze lub wolniejsze animacje) w dowolnym momencie."</string>
@@ -339,39 +405,33 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Pozwala aplikacji na przyznanie lub cofnięcie określonych uprawnień do niej lub do innych aplikacji. Złośliwe aplikacje mogą to wykorzystać, by uzyskać dostęp do nieuprawnionych funkcji."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"ustawianie preferowanych aplikacji"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Pozwala aplikacji na zmianę Twoich preferowanych aplikacji. Złośliwe aplikacje mogą dyskretnie zmienić uruchamiane aplikacje, podszywając się pod dotychczasowe aplikacje w celu zebrania od Ciebie prywatnych danych."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"modyfikowanie ustawień systemu"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"Pozwala aplikacji na zmienianie ustawień systemu. Złośliwe aplikacje mogą uszkodzić konfigurację systemu."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"modyfikowanie ustawień systemu dotyczących zabezpieczeń"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Pozwala aplikacji na modyfikowanie bezpiecznych danych ustawień zabezpieczeń. Nieprzeznaczone dla zwykłych aplikacji."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"zmienianie mapy usług Google"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"Pozwala aplikacji na modyfikowanie mapy usług Google. Nieprzeznaczone dla zwykłych aplikacji."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"uruchamianie podczas włączania urządzenia"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Pozwala aplikacji na uruchamianie się natychmiast po zakończeniu rozruchu systemu. Może to spowodować wydłużenie czasu uruchamiania tabletu oraz spowolnienie jego pracy przez zawsze działającą aplikację."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Pozwala aplikacji na uruchamianie się natychmiast po zakończeniu rozruchu systemu. Może to spowodować wydłużenie czasu uruchamiania telefonu oraz spowolnienie jego pracy przez zawsze działającą aplikację."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"wysyłanie transmisji trwałej"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Pozwala aplikacji na wysyłanie transmisji trwałych, które pozostają aktywne po zakończeniu połączenia. Złośliwe aplikacje mogą spowolnić lub zdestabilizować tablet przez wymuszenie zbyt dużego zużycia pamięci."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Pozwala aplikacji na wysyłanie transmisji trwałych, które pozostają aktywne po zakończeniu połączenia. Złośliwe aplikacje mogą spowolnić lub zdestabilizować telefon przez wymuszenie zbyt dużego zużycia pamięci."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
- <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Pozwala aplikacji na odczytywanie wszystkich kontaktów zapisanych na tablecie. Obejmuje to informacje o tym, jak często dzwoniono, wysyłano e-maile lub kontaktowano się z konkretnymi osobami w inny sposób. Dzięki temu działa wiele przydatnych funkcji, np. autouzupełnianie adresów e-mail. Złośliwe aplikacje mogą wykorzystać to uprawnienie do wysyłania informacji o Twoich kontaktach do innych osób."</string>
- <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Pozwala aplikacji na odczytywanie wszystkich kontaktów zapisanych w telefonie. Obejmuje to informacje o tym, jak często dzwoniono, wysyłano e-maile lub kontaktowano się z konkretnymi osobami w inny sposób. Dzięki temu działa wiele przydatnych funkcji, np. autouzupełnianie adresów e-mail. Złośliwe aplikacje mogą wykorzystać to uprawnienie do wysyłania informacji o Twoich kontaktach do innych osób."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
- <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Pozwala aplikacji na modyfikowanie kontaktów zapisanych na tablecie. Obejmuje to informacje o tym, jak często dzwoniono, wysyłano e-maile lub kontaktowano się z konkretnymi osobami w inny sposób. Dzięki temu działa wiele przydatnych funkcji, np. autouzupełnianie adresów e-mail. Złośliwe aplikacje mogą to wykorzystać do usunięcia lub zmodyfikowania informacji o Twoich kontaktach."</string>
- <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Pozwala aplikacji na modyfikowanie kontaktów zapisanych w telefonie. Obejmuje to informacje o tym, jak często dzwoniono, wysyłano e-maile lub kontaktowano się z konkretnymi osobami w inny sposób. Dzięki temu działa wiele przydatnych funkcji, np. autouzupełnianie adresów e-mail. Złośliwe aplikacje mogą to wykorzystać do usunięcia lub zmodyfikowania informacji o Twoich kontaktach."</string>
+ <string name="permlab_readContacts" msgid="8348481131899886131">"odczytywanie kontaktów"</string>
+ <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Pozwala aplikacji na odczytywanie wszystkich danych o kontaktach zapisanych na tablecie. Obejmuje to informacje o tym, jak często dzwoniono, wysyłano e-maile lub kontaktowano się z konkretnymi osobami w inny sposób. Dzięki temu działa wiele przydatnych funkcji, np. autouzupełnianie adresów e-mail. Złośliwe aplikacje mogą wykorzystać to uprawnienie do wysyłania informacji o Twoich kontaktach do innych osób."</string>
+ <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Pozwala aplikacji na odczytywanie wszystkich danych o kontaktach zapisanych w telefonie. Obejmuje to informacje o tym, jak często dzwoniono, wysyłano e-maile lub kontaktowano się z konkretnymi osobami w inny sposób. Dzięki temu działa wiele przydatnych funkcji, np. autouzupełnianie adresów e-mail. Złośliwe aplikacje mogą wykorzystać to uprawnienie do wysyłania informacji o Twoich kontaktach do innych osób."</string>
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"modyfikowanie kontaktów"</string>
+ <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Pozwala aplikacji na modyfikowanie danych o kontaktach zapisanych na tablecie. Obejmuje to informacje o tym, jak często dzwoniono, wysyłano e-maile lub kontaktowano się z konkretnymi osobami w inny sposób. Dzięki temu działa wiele przydatnych funkcji, np. autouzupełnianie adresów e-mail. Złośliwe aplikacje mogą to wykorzystać do usunięcia lub zmodyfikowania informacji o Twoich kontaktach."</string>
+ <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Pozwala aplikacji na modyfikowanie danych o kontaktach zapisanych w telefonie. Obejmuje to informacje o tym, jak często dzwoniono, wysyłano e-maile lub kontaktowano się z konkretnymi osobami w inny sposób. Dzięki temu działa wiele przydatnych funkcji, np. autouzupełnianie adresów e-mail. Złośliwe aplikacje mogą to wykorzystać do usunięcia lub zmodyfikowania informacji o Twoich kontaktach."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"czytanie rejestru połączeń"</string>
<string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Zezwala aplikacji na odczytywanie rejestru połączeń tabletu, w tym danych o połączeniach przychodzących i wychodzących. Złośliwe aplikacje mogą wykorzystywać tę możliwość, by wysyłać dane do innych osób."</string>
<string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Zezwala aplikacji na odczytywanie rejestru połączeń telefonu, w tym danych o połączeniach przychodzących i wychodzących. Złośliwe aplikacje mogą wykorzystywać tę możliwość, by wysyłać dane do innych osób."</string>
<string name="permlab_writeCallLog" msgid="8552045664743499354">"zapisywanie rejestru połączeń"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Zezwala aplikacji na modyfikowanie rejestru połączeń tabletu, w tym danych o połączeniach przychodzących i wychodzących. Złośliwe aplikacje mogą wykorzystać tę możliwość, by wyczyścić lub zmodyfikować rejestr połączeń."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Zezwala aplikacji na modyfikowanie rejestru połączeń telefonu, w tym danych o połączeniach przychodzących i wychodzących. Złośliwe aplikacje mogą wykorzystać tę możliwość, by wyczyścić lub zmodyfikować rejestr połączeń."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"odczyt własnej karty kontaktu"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Pozwala aplikacji na odczyt informacji, takich jak Twoje nazwisko i informacje kontaktowe, z profilu osobistego przechowywanego na urządzeniu. Oznacza to, że inne aplikacje mogą Cię zidentyfikować i przesłać informacje z Twojego profilu do innych osób."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"zmiana własnej karty kontaktu"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Pozwala aplikacji na zmianę lub dodanie informacji, takich jak Twoje nazwisko i informacje kontaktowe, do profilu osobistego przechowywanego na urządzeniu. Oznacza to, że inne aplikacje mogą Cię zidentyfikować i przesłać informacje z Twojego profilu do innych osób."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"odczyt sieci społecznościowych"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Pozwala aplikacji na dostęp do aktualności społecznościowych pochodzących od Ciebie i znajomych oraz ich synchronizowanie. Złośliwe aplikacje mogą dzięki temu odczytywać prywatne informacje wymienianie przez Ciebie ze znajomymi w sieciach społecznościowych."</string>
@@ -412,15 +472,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"wymuszanie ponownego uruchomienia telefonu"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Pozwala aplikacji na wymuszanie ponownego uruchomienia tabletu."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Pozwala aplikacji na wymuszanie ponownego uruchomienia telefonu."</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"dostęp do systemu plików USB"</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"uzyskiwanie dostępu do systemu plików karty SD"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Pozwala aplikacji na podłączanie i odłączanie systemów plików pamięci wymiennych."</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"czyszczenie nośnika USB"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"czyszczenie karty SD"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Pozwala aplikacji na formatowanie nośników wymiennych."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"uzyskiwanie informacji o pamięci wewnętrznej"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"Pozwala aplikacji na uzyskiwanie informacji o pamięci wewnętrznej."</string>
@@ -432,8 +488,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Pozwala aplikacji na podłączanie/odłączanie pamięci wewnętrznej."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"zmiana nazwy pamięci wewnętrznej"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"Pozwala aplikacji na zmianę nazwy pamięci wewnętrznej."</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"sterowanie wibracjami"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"Pozwala aplikacji na sterowanie wibracjami."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"kontrolowanie latarki"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"Pozwala aplikacji na sterowanie latarką."</string>
@@ -458,8 +513,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"Pozwala aplikacji na wskazywanie systemowi, które widżety mogą być używane przez inne aplikacje. Wykorzystując to pozwolenie, aplikacja może udzielić dostępu do danych osobistych innym aplikacjom. Nieprzeznaczone dla zwykłych aplikacji."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"zmiana stanu telefonu"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Pozwala aplikacji na kontrolowanie funkcji telefonu w urządzeniu. Aplikacja z tymi uprawnieniami może zmieniać, włączać i wyłączać sieci bezprzewodowe itp. bez informowania użytkownika."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"odczytywanie stanu i informacji o telefonie"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"Pozwala aplikacji na dostęp do funkcji telefonu w tym urządzeniu. Aplikacja z takim uprawnieniem może określić, jaki jest numer tego telefonu i jego numer seryjny, czy aktywne jest połączenie, z jakim numerem nawiązane jest połączenie itp."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"zapobieganie przechodzeniu tabletu do trybu uśpienia"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"zapobieganie przejściu telefonu w stan uśpienia"</string>
@@ -474,8 +528,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Uruchom jako niskopoziomowy test producenta, pozwalając na całkowity dostęp do elementów sprzętowych telefonu. Dostępne tylko jeśli telefon działa w trybie testu producenta."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"ustawianie tapety"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"Pozwala aplikacji na ustawianie tapety systemu."</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"dopasowywanie rozmiaru tapety"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Pozwala aplikacji na ustawianie wskazówek dotyczących rozmiaru tapety systemu."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"resetowanie systemu do ustawień fabrycznych"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"Pozwala aplikacji na całkowite zresetowanie systemu do ustawień fabrycznych, z wymazaniem wszystkich danych, konfiguracji oraz zainstalowanych aplikacji."</string>
@@ -487,21 +540,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Pozwala aplikacji na zmianę ustawienia strefy czasowej w telefonie."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"działanie jako usługa AccountManagerService"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"Pozwala aplikacji na wywoływanie usług AccountAuthenticator."</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"znajdowanie kont na urządzeniu"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Pozwala aplikacji na pobieranie listy kont skonfigurowanych w tablecie."</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Pozwala aplikacji na pobieranie listy kont skonfigurowanych w telefonie."</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"tworzenie kont i ustawianie haseł"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Pozwala aplikacji na korzystanie z funkcji modułu uwierzytelniania konta usługi AccountManager, w tym funkcji tworzenia kont oraz pobierania i ustawiania ich haseł."</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"dodawanie i usuwanie kont"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"Pozwala aplikacji na wykonywanie takich operacji, jak dodawanie i usuwanie kont, a także usuwanie ich haseł."</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"używanie kont na urządzeniu"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"Pozwala aplikacji na żądanie tokenów uwierzytelniania."</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"wyświetlanie połączeń sieciowych"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"Pozwala aplikacji na sprawdzenie stanu wszystkich sieci."</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"pełen dostęp do internetu"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Pozwala aplikacji na tworzenie gniazd sieciowych."</string>
@@ -513,36 +561,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"Pozwala aplikacji na zmianę stanu łączności sieciowej objętej tetheringiem."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"zmienianie ustawienia używania danych w tle"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Pozwala aplikacji na zmianę ustawień użycia danych w tle."</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"wyświetlanie połączeń Wi-Fi"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"Pozwala aplikacji na dostęp do informacji o stanie połączenia Wi-Fi."</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"łączenie się i rozłączanie z siecią Wi-Fi"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"Pozwala aplikacji na łączenie i rozłączanie z punktami dostępowymi Wi-Fi oraz na modyfikowanie skonfigurowanych sieci Wi-Fi."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"zezwolenie na odbiór grupowych połączeń Wi-Fi"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Pozwala aplikacji na odbieranie pakietów nieskierowanych bezpośrednio do Twojego urządzenia. Może to być przydatne przy wykrywaniu usług oferowanych w okolicy. Powoduje większe zapotrzebowanie na energię niż w trybie niegrupowym."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"uzyskiwanie dostępu do ustawień Bluetooth"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Pozwala aplikacji na konfigurowanie lokalnego tabletu z funkcją Bluetooth oraz na wykrywanie urządzeń zdalnych i parowanie z nimi."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Pozwala aplikacji na konfigurowanie lokalnego telefonu z funkcją Bluetooth oraz na wykrywanie urządzeń zdalnych i parowanie z nimi."</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Wyświetl połączenia WiMAX"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Pozwala aplikacji na wyświetlanie informacji o stanie połączenia WiMAX."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"Zmień stan WiMAX"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Zezwala aplikacji na łączenie się i rozłączanie z siecią WiMAX."</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"parowanie z urządzeniami Bluetooth"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Pozwala aplikacji na wyświetlanie konfiguracji lokalnego tabletu z funkcją Bluetooth oraz na nawiązywanie i akceptowanie połączeń ze sparowanymi urządzeniami."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Pozwala aplikacji na wyświetlanie konfiguracji lokalnego telefonu z funkcją Bluetooth oraz na nawiązywanie i akceptowanie połączeń ze sparowanymi urządzeniami."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"kontrolowanie łączności Near Field Communication"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Pozwala aplikacji na komunikowanie się z tagami, kartami i czytnikami NFC (Near Field Communication)."</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"wyłączanie blokady ekranu"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Pozwala aplikacji na wyłączenie blokady klawiatury i wszystkich związanych z tym haseł zabezpieczających. Typowym przykładem takiego działania jest wyłączanie blokady klawiatury, gdy pojawia się połączenie przychodzące, a następnie ponowne jej włączanie po zakończeniu połączenia."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"czytanie ustawień synchronizowania"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Pozwala aplikacji na odczyt ustawień synchronizacji, takich jak ustawienie określające, czy włączona jest synchronizacja aplikacji Ludzie."</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"włączanie i wyłączanie synchronizacji"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Pozwala aplikacji na modyfikowanie ustawień synchronizacji, na przykład na określenie, czy włączona jest synchronizacja aplikacji Ludzie."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"czytanie statystyk dotyczących synchronizowania"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"Pozwala aplikacji na odczyt statystyk synchronizowania, np. historii przeprowadzonych synchronizacji."</string>
@@ -550,22 +591,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Pozwala aplikacji na pobieranie szczegółowych informacji na temat obecnie zsynchronizowanych kanałów."</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"zapisywanie subskrybowanych źródeł"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Pozwala aplikacji na zmianę obecnie zsynchronizowanych kanałów. Złośliwe aplikacje mogą zmienić zsynchronizowane kanały."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"odczytywanie terminów dodanych do słownika"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Pozwala aplikacji na odczytywanie wszelkich prywatnych słów, nazw i wyrażeń zapisanych w słowniku użytkownika."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"zapisywanie w słowniku zdefiniowanym przez użytkownika"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Pozwala aplikacji na zapisywanie nowych słów do słownika użytkownika."</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"odczytywanie zawartości pamięci USB"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"odczytywanie zawartości karty SD"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Zezwala aplikacji na odczytywanie zawartości pamięci USB, która może obejmować zdjęcia i multimedia."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Zezwala aplikacji na odczytywanie zawartości karty SD, która może obejmować zdjęcia i multimedia."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"modyfikowanie i usuwanie zawartości pamięci USB"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Pozwala aplikacji na zapis w pamięci USB."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Pozwala aplikacji na zapis na karcie SD."</string>
@@ -744,6 +779,8 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Brak karty SIM w telefonie."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Włóż kartę SIM."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"Brak karty SIM lub nie można jej odczytać. Włóż kartę SIM."</string>
+ <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) -->
+ <skip />
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Karta SIM jest trwale wyłączona."\n" Skontaktuj się z dostawcą usług bezprzewodowych, aby uzyskać inną kartę SIM."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Przycisk poprzedniego utworu"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Przycisk następnego utworu"</string>
@@ -819,15 +856,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"Gmina"</string>
<string name="autofill_area" msgid="3547409050889952423">"Obszar"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"Emirat"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"odczytywanie zakładek internetowych i historii"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Pozwala aplikacji na odczyt wszystkich adresów URL odwiedzonych przez przeglądarkę, a także wszystkich zakładek przeglądarki."</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"zapisywanie zakładek internetowych i historii"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Pozwala aplikacji na modyfikowanie historii i zakładek przeglądarki zapisanych na tablecie. Złośliwe aplikacje mogą to wykorzystać do usunięcia lub zmiany danych przeglądarki."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Pozwala aplikacji na modyfikowanie historii i zakładek przeglądarki zapisanych w telefonie. Złośliwe aplikacje mogą to wykorzystać do usunięcia lub zmiany danych przeglądarki."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"ustawianie alarmu"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"Pozwala aplikacji na ustawienie alarmu w zainstalowanej aplikacji budzika. Funkcja ta może nie być zaimplementowana w niektórych aplikacjach tego typu."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"dodawanie poczty głosowej"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"Pozwala aplikacji na dodawanie wiadomości do skrzynki odbiorczej poczty głosowej."</string>
@@ -1087,11 +1121,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Ustaw datę"</string>
<string name="date_time_set" msgid="5777075614321087758">"Ustaw"</string>
<string name="date_time_done" msgid="2507683751759308828">"Gotowe"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"Domyślne"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NOWE: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NOWE: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"Nie są wymagane żadne uprawnienia"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"Ukryj"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"Pokaż wszystko"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"Pamięć masowa USB"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"Połączenie przez USB"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"Nawiązano połączenie z komputerem przez USB. Jeśli chcesz skopiować pliki między komputerem a nośnikiem USB systemu Android, dotknij poniższego przycisku."</string>
@@ -1320,4 +1353,8 @@
<string name="sending" msgid="3245653681008218030">"Wysyłanie..."</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"Uruchomić przeglądarkę?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"Odebrać połączenie?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index a683698..e785c7c 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -147,7 +147,7 @@
<string name="shutdown_confirm" product="default" msgid="649792175242821353">"O seu telefone irá encerrar."</string>
<string name="shutdown_confirm_question" msgid="2906544768881136183">"Pretende encerrar?"</string>
<string name="reboot_safemode_title" msgid="7054509914500140361">"Reiniciar no modo de segurança"</string>
- <string name="reboot_safemode_confirm" msgid="55293944502784668">"Pretende reiniciar no modo de segurança? Isso irá desativar todas as aplicações de terceiros instaladas. Estas serão restauradas quando reiniciar novamente."</string>
+ <string name="reboot_safemode_confirm" msgid="55293944502784668">"Pretende reiniciar no modo de segurança? Se sim, irá desativar todas as aplicações de terceiros instaladas. Estas serão restauradas quando reiniciar novamente."</string>
<string name="recent_tasks_title" msgid="3691764623638127888">"Recente"</string>
<string name="no_recent_tasks" msgid="8794906658732193473">"Não existem aplicações recentes"</string>
<string name="global_actions" product="tablet" msgid="408477140088053665">"Opções do tablet"</string>
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"As suas mensagens"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"Ler e escrever SMS, e-mail e outras mensagens."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Os seus dados pessoais"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Acesso directo aos seus contactos e calendário armazenados no tablet."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Acesso directo aos seus contactos e calendário armazenados no telefone."</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Acesso direto às suas informações, armazenadas no seu cartão de contacto."</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"As suas informações sociais"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Acesso direto às informações sobre os seus contactos e ligações sociais."</string>
<string name="permgrouplab_location" msgid="635149742436692049">"A sua localização"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"Monitorizar a sua localização física."</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"Comunicação de rede"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"Aceder a várias funcionalidades de rede."</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Definições de Áudio"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Alterar as definições de áudio."</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Afetar a Bateria"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Utilizar funcionalidades que podem descarregar rapidamente a bateria."</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"Calendário"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Acesso direto ao calendário e eventos."</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Marcadores e Histórico"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Acesso direto aos marcadores e histórico do navegador."</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Alarme"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Definir o despertador."</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Correio de voz"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Acesso direto ao correio de voz."</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"Microfone"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Acesso direto ao microfone para gravar áudio."</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"Câmara"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"Acesso direto à câmara para captura de imagens ou vídeos."</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"As informações das suas aplicações"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Capacidade de afetar o comportamento de outras aplicações no seu dispositivo."</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Imagem de fundo"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Alterar as definições de imagem de fundo do dispositivo."</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"Relógio"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Alterar a hora ou o fuso horário do dispositivo."</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Barra de Estado"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Alterar as definições da barra de estado do dispositivo."</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Definições de Sincronização"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Acesso às definições de sincronização."</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"As suas contas"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"Aceda às contas disponíveis."</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Controlos de hardware"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Acesso e controlo de nível inferior do sistema."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Ferramentas de desenvolvimento"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Funcionalidades apenas necessárias para programadores de aplicações."</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"IU de Outras Aplicações"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"Afetar a IU de outras aplicações."</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"Armazenamento"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Aceder ao armazenamento USB."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Aceder ao cartão SD."</string>
@@ -193,14 +238,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"Permite que a aplicação seja apresentada na barra de estado."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"expandir/fechar barra de estado"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Permite à aplicação expandir ou fechar a barra de estado."</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"redirecionar as chamadas efetuadas"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Permite que a aplicação processe chamadas efetuadas e mude o número a marcar. As aplicações maliciosas podem monitorizar, redirecionar ou impedir a realização de chamadas."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"receber mensagens de texto (SMS)"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"Permite que a aplicação receba e processe mensagens SMS. As aplicações maliciosas podem monitorizar as mensagens ou eliminá-las sem mostrá-las ao utilizador."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"receber mensagens de texto (MMS)"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"Permite que a aplicação receba e processe mensagens MMS. As aplicações maliciosas podem monitorizar as mensagens ou eliminá-las sem mostrá-las ao utilizador."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"receber transmissões de emergência"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Permite à aplicação receber e processar mensagens de difusão de emergência. Esta permissão só está disponível para aplicações do sistema."</string>
@@ -210,16 +252,13 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"Permite que a aplicação envie mensagens SMS. As aplicações maliciosas podem custar-lhe dinheiro com o envio de mensagens sem a sua confirmação."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"enviar mensagens SMS sem confirmação"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Permite que a aplicação envie mensagens SMS. As aplicações maliciosas podem custar-lhe dinheiro com o envio de mensagens sem a sua confirmação."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"ler as mensagens de texto (SMS ou MMS)"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Permite que a aplicação leia mensagens SMS armazenadas no tablet ou cartão SIM. As aplicações maliciosas podem ler as suas mensagens confidenciais."</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Permite que a aplicação leia mensagens SMS armazenadas no telemóvel ou no cartão SIM. As aplicações maliciosas podem ler as suas mensagens confidenciais."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"editar as mensagens de texto (SMS ou MMS)"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Permite que a aplicação escreva mensagens SMS armazenadas no tablet ou no cartão SIM. As aplicações maliciosas podem eliminar as suas mensagens."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Permite que a aplicação escreva mensagens SMS armazenadas no telemóvel ou no cartão SIM. As aplicações maliciosas podem eliminar as suas mensagens."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"receber mensagens de texto (WAP)"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Permite que a aplicação receba e processe mensagens WAP. As aplicações maliciosas podem monitorizar as mensagens ou eliminá-las sem mostrá-las ao utilizador."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"obter aplicações em execução"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"Permite à aplicação recuperar informações sobre tarefas atualmente em execução ou que foram recentemente executadas. As aplicações maliciosas poderão descrobrir informações privadas de outras aplicações."</string>
@@ -235,13 +274,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Permite que a aplicação controle o modo de compatibilidade de ecrã de outras aplicações. As aplicações maliciosas poderão afetar o comportamento de outras aplicações."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"ativar depuração da aplicação"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"Permite que a aplicação ative a depuração para outra aplicação. As aplicações maliciosas podem utilizar isto para eliminar outras aplicações."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"alterar as definições de visualização do sistema"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Permite à aplicação alterar a configuração atual, como o local ou o tamanho global do tipo de letra."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"activar modo de carro"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"Permite que a aplicação ative o modo automóvel."</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"fechar outras aplicações"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Permite à aplicação eliminar processos em segundo plano de outras aplicações, mesmo se a memória não estiver baixa."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"forçar paragem de outras aplicações"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Permite à aplicação efetuar uma paragem forçada de outras aplicações."</string>
@@ -265,8 +302,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Permite que a aplicação difunda uma notificação de que foi recebida uma mensagens PUSH WAP. As aplicações maliciosas podem utilizar isto para forjar um recibo de mensagem MMS ou substituir, de forma silenciosa, o conteúdo de qualquer página Web por variantes maliciosas."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"número limite de processos em execução"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Permite a uma aplicação controlar o número máximo de processos que será executado. Nunca é necessário para aplicações normais."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"forçar as aplicações em segundo plano a fechar"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Permite que uma aplicação controle se as atividades são sempre terminadas assim que passam para segundo plano. Nunca é necessário para aplicações normais."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"modificar estatísticas da bateria"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"Permite a modificação das estatísticas recolhidas sobre a bateria. Não se destina a utilização por aplicações normais."</string>
@@ -276,8 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Permite que a aplicação inicie a IU de confirmação de cópia de segurança completa. Não deve ser utilizado por qualquer aplicação."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"apresentar janelas não autorizadas"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Permite que a aplicação crie janelas que se destinam a ser utilizadas pela interface de utilizador do sistema interno. Nunca é necessário para aplicações normais."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"desenhar sobre outras aplicações"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Permite que a aplicação mostre janelas de alerta do sistema. As aplicações maliciosas podem ocupar todo o ecrã."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"modificar velocidade global da animação"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Permite que a aplicação altere a velocidade global da animação (animações mais rápidas ou mais lentas) em qualquer altura."</string>
@@ -339,39 +374,33 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Permite que uma aplicação conceda ou revogue permissões específicas para si própria ou para outras aplicações. As aplicações maliciosas podem utilizar isto para aceder a funcionalidades para as quais não têm permissão."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"definir aplicações preferidas"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Permite ao aplicativo modificar as suas aplicações preferidas. As aplicações maliciosas podem alterar sem aviso as aplicações que são executadas, espiando as aplicações existentes para recolher os seus dados privados."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"modificar as definições do sistema"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"Permite à aplicação modificar os dados das definições do sistema. As aplicações maliciosas podem corromper a configuração do seu sistema."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"modificar definições seguras do sistema"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Permite que uma aplicação modifique os dados de definições seguras do sistema. Não deve ser utilizado por aplicações normais."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"modificar o mapa de serviços do Google"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"Permite que a aplicação modifique o mapa de serviços do Google. Não se destina a utilização por aplicações normais."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"executar no arranque"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Permite que uma aplicação se inicie automaticamente assim que tiver terminado o arranque do sistema. Isto pode atrasar o arranque do tablet e permitir à aplicação abrandar todo o funcionamento do tablet, uma vez que está em constante execução."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Permite que uma aplicação se inicie automaticamente assim que tiver terminado o arranque do sistema. Isto pode atrasar o arranque do telemóvel e permitir à aplicação abrandar todo o funcionamento do telemóvel, uma vez que está em constante execução."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"enviar difusão fixa"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Permite que uma aplicação envie difusões fixas, que permanecem após o fim da difusão. As aplicações maliciosas podem tornar o tablet lento ou instável, fazendo com que utilize demasiada memória."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Permite que a aplicação envie difusões fixas, que permanecem após o fim da difusão. As aplicações maliciosas podem tornar o telemóvel lento ou instável, fazendo com que utilize demasiada memória."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
- <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Permite que a aplicação leia todos os dados sobre os seus contactos armazenados no seu tablet, incluindo a frequência com que ligou, enviou emails ou comunicou de outras formas com indivíduos específicos. Isto ajuda a preencher automaticamente os endereços de email e outras funcionalidades convenientes. As aplicações maliciosas podem utilizar esta permissão para enviar os seus dados de contacto a outras pessoas."</string>
- <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Permite que a aplicação leia todos os dados sobre os seus contactos armazenados no seu telemóvel, incluindo a frequência com que ligou, enviou emails ou comunicou de outras formas com indivíduos específicos. Isto ajuda a preencher automaticamente os endereços de email e outras funcionalidades convenientes. As aplicações maliciosas podem utilizar esta permissão para enviar os seus dados de contacto a outras pessoas."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
- <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Permite que a aplicação modifique os dados sobre os seus contactos armazenados no seu tablet, incluindo a frequência com que ligou, enviou emails ou comunicou de outras formas com indivíduos específicos. Isto ajuda a preencher automaticamente os endereços de email e outras funcionalidades convenientes. As aplicações maliciosas podem utilizar esta situação para apagar ou modificar os seus dados de contacto."</string>
- <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Permite que a aplicação modifique os dados sobre os seus contactos armazenados no seu telemóvel, incluindo a frequência com que ligou, enviou emails ou comunicou de outras formas com indivíduos específicos. Isto ajuda a preencher automaticamente os endereços de email e outras funcionalidades convenientes. As aplicações maliciosas podem utilizar esta situação para apagar ou modificar os seus dados de contacto."</string>
+ <string name="permlab_readContacts" msgid="8348481131899886131">"ler os contactos"</string>
+ <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Permite que a aplicação leia todos os dados sobre os contactos armazenados no seu tablet, incluindo a frequência com que ligou, enviou emails ou comunicou de outras formas com indivíduos específicos. Tal ajuda a preencher automaticamente os endereços de email e outras funcionalidades convenientes. As aplicações maliciosas podem utilizar esta permissão para enviar os seus dados de contacto a outras pessoas."</string>
+ <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Permite que a aplicação leia todos os dados sobre os contactos armazenados no seu telemóvel, incluindo a frequência com que ligou, enviou emails ou comunicou de outras formas com indivíduos específicos. Tal ajuda a preencher automaticamente os endereços de email e outras funcionalidades convenientes. As aplicações maliciosas podem utilizar esta permissão para enviar os seus dados de contacto a outras pessoas."</string>
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"modificar os contactos"</string>
+ <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Permite que a aplicação modifique os dados sobre os contactos armazenados no seu tablet, incluindo a frequência com que ligou, enviou emails ou comunicou de outras formas com indivíduos específicos. Tal ajuda a preencher automaticamente os endereços de email e outras funcionalidades convenientes. As aplicações maliciosas podem utilizar esta permissão para apagar ou modificar os seus dados de contacto."</string>
+ <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Permite que a aplicação modifique os dados sobre os contactos armazenados no seu telemóvel, incluindo a frequência com que ligou, enviou emails ou comunicou de outras formas com indivíduos específicos. Tal ajuda a preencher automaticamente os endereços de email e outras funcionalidades convenientes. As aplicações maliciosas podem utilizar esta permissão para apagar ou modificar os seus dados de contacto."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"ler registo de chamadas"</string>
<string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Permite à aplicação ler o registo de chamadas do tablet, incluindo os dados sobre as chamadas recebidas e efetuadas. As aplicações maliciosas podem utilizar esta funcionalidade para enviar os seus dados para outras pessoas."</string>
<string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Permite que a aplicação leia o registo de chamadas do telemóvel, incluindo os dados sobre as chamadas recebidas e efetuadas. As aplicações maliciosas podem utilizar esta funcionalidade para enviar os seus dados para outras pessoas."</string>
<string name="permlab_writeCallLog" msgid="8552045664743499354">"escrever registo de chamadas"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Permite à aplicação modificar o registo de chamadas do tablet, incluindo os dados sobre as chamadas recebidas e efetuadas. As aplicações maliciosas podem utilizar esta funcionalidade para apagar ou modificar o registo de chamadas."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Permite à aplicação modificar o registo de chamadas do telemóvel, incluindo os dados sobre as chamadas recebidas e efetuadas. As aplicações maliciosas podem utilizar esta funcionalidade para apagar ou modificar o seu registo de chamadas."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"ler o próprio cartão de contacto"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Permite que a aplicação leia dados de perfil pessoais armazenados no seu aparelho, como o seu nome e dados de contacto. Isto significa que outras aplicações podem identificá-lo e enviar os seus dados de perfil a terceiros."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"modificar o próprio cartão de contacto"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Permite que a aplicação altere ou adicione dados de perfil pessoais armazenados no seu aparelho, como o seu nome e dados de contacto. Isto significa que outras aplicações podem identificá-lo e enviar os seus dados de perfil a terceiros."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"ler o seu fluxo social"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Permite que a aplicação aceda e sincronize atualizações sociais suas e dos seus amigos. As aplicações maliciosas podem usar isto para ler as comunicações privadas entre si e os seus amigos em redes sociais."</string>
@@ -412,15 +441,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"forçar reinício do telefone"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Permite que a aplicação force o reinício do tablet."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Permite que a aplicação force o reinício do telemóvel."</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"aceder ao sistema de ficheiros da memória USB"</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"aceder ao sistema de ficheiros do Cartão SD"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Permite à aplicação montar e desmontar sistemas de ficheiros para armazenamento amovível."</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"apagar armazenamento USB"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"apagar Cartão SD"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Permite à aplicação formatar o armazenamento amovível."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"obter informações sobre o armazenamento interno"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"Permite à aplicação obter informações sobre o armazenamento interno."</string>
@@ -432,8 +457,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Permite à aplicação montar/desmontar o armazenamento interno."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"mudar o nome do armazenamento interno"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"Permite à aplicação mudar o nome do armazenamento interno."</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"controlar vibração"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"Permite à aplicação controlar o vibrador."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"controlar lanterna"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"Permite à aplicação controlar a lanterna."</string>
@@ -458,8 +482,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"Permite que a aplicação informe o sistema acerca dos widgets que podem ser utilizados com cada aplicação. Com esta autorização, algumas aplicações podem conceder acesso a dados pessoais a outras aplicações. Não se destina a utilização por aplicações normais."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"modificar estado do telefone"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Permite que a aplicação controle as funcionalidades de telefone do aparelho. Uma aplicação com esta permissão pode alternar entre redes, ligar/desligar o rádio do telefone e outras coisas semelhantes sem sequer o notificar."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"ler o estado e a identidade do telemóvel"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"Permite que a aplicação aceda às funcionalidades do aparelho. Uma aplicação com esta autorização pode obter o número deste telemóvel assim como o número de série do mesmo, se existe uma chamada ativa, o número a que a essa chamada está ligada, etc."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"impedir que o tablet entre em inactividade"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"impedir modo de inactividade do telefone"</string>
@@ -474,8 +497,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Executar como um teste de nível inferior do fabricante, permitindo o acesso total ao hardware do telefone. Apenas disponível quando um telefone está em execução em modo de teste do fabricante."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"definir imagem de fundo"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"Permite à aplicação definir a imagem de fundo do sistema."</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"ajustar o tamanho da imagem de fundo"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Permite que a aplicação defina as sugestões de tamanho da imagem de fundo do sistema."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"repor definições de fábrica do sistemas"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"Permite que a aplicação reponha totalmente as definições de fábrica do sistema, apagando todos os dados, configurações e aplicações instaladas."</string>
@@ -487,21 +509,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Permite que a aplicação altere o fuso horário do telemóvel."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"funciona como Serviço de Gestor de Conta"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"Permite que a aplicação efetue chamadas para Autenticadores de Conta."</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"procurar contas no dispositivo"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Permite que a aplicação obtenha a lista de contas reconhecidas pelo tablet."</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Permite que a aplicação obtenha a lista de contas reconhecidas pelo telemóvel."</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"criar contas e definir palavras-passe"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Permite que uma aplicação utilize as funcionalidades de autenticador de conta do Gestor de Conta, incluindo a criação de contas e a obtenção e definição das respetivas palavras-passe."</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"adicionar ou remover contas"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"Permite que a aplicação execute operações, como adicionar e remover contas e eliminar a respetiva palavra-passe."</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"utilizar contas no dispositivo"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"Permite que a aplicação solicite tokens de autenticação."</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"ver ligações de rede"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"Permite à aplicação ver o estado de todas as redes."</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"acesso total à internet"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Permite à aplicação criar camadas de rede."</string>
@@ -513,36 +530,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"Permite que a aplicação altere o estado de conectividade da rede ligada."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"mudar definição de utilização de dados de segundo plano"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Permite à aplicação mudar a definição de utilização de dados em segundo plano."</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"ver ligações Wi-Fi"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"Permite à aplicação ver as informações acerca do estado do Wi-Fi."</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"ligar e desligar de redes Wi-Fi"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"Permite a uma aplicação ligar e desligar de pontos de acesso de Wi-Fi, bem como efetuar alterações a redes Wi-Fi configuradas."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"permitir recepção Multicast Wi-Fi"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Permite que a aplicação receba pacotes não enviados diretamente para o aparelho. Esta opção pode ser útil para descobrir serviços oferecidos na vizinhança. Utiliza mais energia do que o modo não multicast."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"aceder às definições de Bluetooth"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Permite à aplicação configurar o tablet Bluetooth local, bem como descobrir e emparelhar com dispositivos remotos."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Permite que a aplicação configure o telemóvel Bluetooth local, bem como descobrir e emparelhar com dispositivos remotos."</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Ver ligações WiMAX"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Permite à aplicação ver as informações acerca do estado do WiMAX."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"Alterar estado do WiMAX"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Permite que a aplicação se ligue e desligue da rede WiMAX."</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"sincronizar com dispositivos Bluetooth"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Permite que a aplicação veja a configuração do tablet Bluetooth local, bem como efetuar e aceitar ligações com dispositivos emparelhados."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Permite que a aplicação veja a configuração do telefone Bluetooth local, bem como efetuar e aceitar ligações com dispositivos emparelhados."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"controlo Near Field Communication"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Permite que a aplicação comunique com etiquetas, cartões e leitores Near Field Communication (NFC)."</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"desativar o bloqueio do ecrã"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Permite à aplicação desativar o bloqueio de teclas e qualquer segurança por palavra-passe associada. Um exemplo legítimo é a desativação do bloqueio de teclas pelo telemóvel ao receber uma chamada, reativando, em seguida, o bloqueio de teclas ao terminar a chamada."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"ler definições de sincronização"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Permite que a aplicação leia as definições de sincronização, como, por exemplo, se a sincronização está ativada na aplicação Pessoas."</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"ativar e desativar a sincronização"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Permite que a aplicação modifique as definições de sincronização como, por exemplo, se a sincronização está ativada nos Contactos."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"ler estatísticas de sincronização"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"Permite à aplicação ler as estatísticas de sincronização, como o histórico de sincronizações ocorridas."</string>
@@ -550,22 +560,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Permite à aplicação obter detalhes acerca dos feeds atualmente sincronizados."</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"escrever feeds subscritos"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Permite à aplicação modificar os feeds atualmente sincronizados. Isto pode permitir a uma aplicação maliciosa alterar os seus feeds sincronizados."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"ler os termos adicionados ao dicionário"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Permite à aplicação ler quaisquer palavras, nomes e expressões privadas que o utilizador possa ter armazenado no dicionário do utilizador."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"escrever no dicionário definido pelo utilizador"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Permite à aplicação escrever novas palavras no dicionário do utilizador."</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"ler os conteúdos da memória USB"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"ler os conteúdos do cartão SD"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Permitir que aplic. leia cont. da mem. USB, que poderão incluir fotogr. e multimédia."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Permite que a aplicação leia os conteúdos do cartão SD que poderão incluir fotografias e elementos multimédia."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"modificar ou eliminar os conteúdos da memória USB"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Permite que a aplicação escreva na unidade de armazenamento USB."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Permite que a aplicação escreva no cartão SD."</string>
@@ -744,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Nenhum cartão SIM no telefone."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Insira um cartão SIM."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"O cartão SIM está em falta ou não é legível. Introduza um cartão SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"Cartão SIM inutilizável."</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"O cartão SIM foi desativado definitivamente. "\n" Contacte o seu fornecedor de serviços de rede sem fios para obter outro cartão SIM."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Botão Faixa anterior"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Botão Faixa seguinte"</string>
@@ -819,15 +824,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"Freguesia"</string>
<string name="autofill_area" msgid="3547409050889952423">"Área"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"Emirado"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"ler os marcadores da Web e o histórico"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Permite que a aplicação leia todos os URL visitados pelo Navegador e todos os marcadores do Navegador."</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"gravar marcadores da Web e o histórico"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Permite que a aplicação modifique o histórico do Navegador ou os marcadores armazenados no seu tablet. As aplicações maliciosas podem usar isto para apagar ou modificar os dados do seu Navegador."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Permite que a aplicação modifique o histórico do Navegador ou os marcadores armazenados no seu telemóvel. As aplicações maliciosas podem usar isto para apagar ou modificar os dados do seu Navegador."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"definir um alarme"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"Permite que a aplicação defina um alarme numa aplicação de despertador instalada. Algumas aplicações de despertador podem não integrar esta funcionalidade."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"adicionar correio de voz"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"Permite que a aplicação adicione mensagens à sua caixa de entrada de correio de voz."</string>
@@ -1087,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Definir data"</string>
<string name="date_time_set" msgid="5777075614321087758">"Definir"</string>
<string name="date_time_done" msgid="2507683751759308828">"Concluído"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"Predefinido"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NOVA: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NOVA: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"Não são necessárias permissões"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"Ocultar"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"Mostrar tudo"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"Armazenamento em massa USB"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"Ligado através de USB"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"Ligou ao computador através de USB. Toque no botão abaixo se pretender copiar ficheiros entre o computador e a memória de armazenamento USB do Android."</string>
@@ -1320,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"A enviar..."</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"Iniciar Navegador?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"Aceitar chamada?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index 999c4d5..c7b6746 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"Suas mensagens"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"Ler e gravar mensagens SMS, e-mails e outras mensagens."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Suas informações pessoais"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Acessa diretamente seus contatos e agenda armazenados no tablet."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Acessa diretamente os seus contatos e agenda armazenados no telefone."</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Acesso direto a informações sobre você, armazenadas em seu cartão de contato."</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Suas informações sociais"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Acesso direto às informações de seus contatos e conexões sociais."</string>
<string name="permgrouplab_location" msgid="635149742436692049">"Seu local"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"Monitore seu local físico."</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"Comunicação da rede"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"Acesse diversos recursos de rede."</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Configurações de áudio"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Alterar as configurações de áudio."</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Afeta a bateria"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Usar recursos que podem descarregar a bateria rapidamente."</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"Agenda"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Acesso direto ao calendário e eventos."</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Favoritos e histórico"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Acesso direto aos favoritos e histórico do navegador."</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Alarme"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Configurar o despertador."</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Correio de voz"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Acesso direto ao correio de voz."</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"Microfone"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Acesso direto ao microfone para gravação de áudio."</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"Câmera"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"Acesso direto à câmera para captura de imagens ou vídeo."</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Informações sobre seus aplicativos"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Capacidade de afetar o comportamento de outros aplicativos no dispositivo."</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Plano de fundo"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Alterar as configurações de papel de parede do dispositivo."</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"Relógio"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Alterar a hora ou fuso horário no dispositivo."</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Barra de status"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Alterar as configurações da barra de status do dispositivo."</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Configurações de sincronização"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Acesso às configurações de sincronização."</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"Suas contas"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"Acessar as contas disponíveis."</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Controles de hardware"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Acesso de nível inferior e controle do sistema."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Ferramentas de desenvolvimento"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Recursos necessários apenas para desenvolvedores de aplicativos."</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"Interface de outro aplicativo"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"Afetar a interface do usuário de outros aplicativos."</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"Armazenamento"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Acessa o armazenamento USB."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Acessar o cartão SD."</string>
@@ -193,14 +238,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"Permite que o aplicativo seja a barra de status."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"expandir/recolher barra de status"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Permite que o aplicativo expanda ou recolha a barra de status."</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"redirecionar as chamadas efetuadas"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Permite que o aplicativo processe as chamadas de saída e altere o número a ser discado. Aplicativos maliciosos podem monitorar, redirecionar ou evitar chamadas de saída."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"receber mensagens de texto (SMS)"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"Permite que o aplicativo receba e processe mensagens SMS. Aplicativos maliciosos podem monitorar suas mensagens ou excluí-las sem mostrá-las para você."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"receber mensagens de texto (MMS)"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"Permite que o aplicativo receba e processe mensagens MMS. Aplicativos maliciosos podem monitorar suas mensagens ou excluí-las sem mostrá-las a você."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"receber transmissões de emergência"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Permite que o aplicativo receba e processe mensagens de transmissão de emergência. Esta permissão só está disponível para aplicativos do sistema."</string>
@@ -210,16 +252,13 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"Permite que o aplicativo envie mensagens SMS. Aplicativos maliciosos podem gerar gastos ao enviar mensagens sem sua confirmação."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"enviar mensagens SMS sem confirmação"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Permite que o aplicativo envie mensagens SMS. Aplicativos maliciosos podem gerar custos ao enviar mensagens sem sua confirmação."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"ler suas mensagens de texto (SMS ou MMS)"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Permite que o aplicativo leia de mensagens SMS armazenadas em seu tablet ou cartão SIM. Aplicativos maliciosos podem ler suas mensagens confidenciais."</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Permite que o aplicativo leia mensagens SMS armazenadas no telefone ou cartão SIM. Aplicativos maliciosos podem ler suas mensagens confidenciais."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"editar suas mensagens de texto (SMS ou MMS)"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Permite que o aplicativo grave mensagens SMS armazenadas em seu tablet ou cartão SIM. Aplicativos maliciosos pode excluir suas mensagens."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Permite que o aplicativo grave mensagens SMS armazenadas no telefone ou cartão SIM. Aplicativos maliciosos podem excluir suas mensagens."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"receber mensagens de texto (WAP)"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Permite que o aplicativo receba e processe mensagens WAP. Aplicativos maliciosos podem monitorar suas mensagens ou excluí-las sem mostrá-las para você."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"recuperar aplicativos em execução"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"Permite que o aplicativo recupere informações sobre atualmente tarefas executadas recentemente e tarefas em execução. Aplicativos maliciosos podem descobrir informações particulares de outros aplicativos."</string>
@@ -235,13 +274,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Permite que o aplicativo controle o modo de compatibilidade de tela de outros aplicativos. Aplicativos maliciosos podem interromper o comportamento de outros aplicativos."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"ativar depuração do aplicativo"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"Permite que o aplicativo ative a depuração para outro aplicativo. Aplicativos maliciosos podem usar esse recurso para cancelar outros aplicativos."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"alterar configurações de exibição do sistema"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Permite que o aplicativo altere a configuração atual, como o local ou o tamanho da fonte."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"ativar o modo de carro"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"Permite que o aplicativo ative o modo Carro."</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"fechar outros aplicativos"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Permite que o aplicativo mate os processos de plano de fundo de outros aplicativos, mesmo se a memória não estiver baixa."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"força o interrompimento de outros aplicativos"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Permite que o aplicativo force o interrompimento de outros aplicativos."</string>
@@ -265,8 +302,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Permite que o aplicativo transmita uma notificação quando uma mensagem WAP PUSH for recebida. Aplicativos maliciosos podem usar esse recurso para forjar o recebimento de mensagens MMS ou substituir o conteúdo de qualquer página da web com variantes maliciosas."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"limitar número de processos em execução"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Permite que o aplicativo controle o máximo de processos que serão executados. Nunca é necessário para aplicativos normais."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"forçar encerramento de aplicativos em segundo plano"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Permite que o aplicativo controle se as atividades são sempre encerrados ao serem enviados para o plano de fundo. Nunca é necessário para aplicativos normais."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"modificar estatísticas da bateria"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"Permite que o aplicativo modifique as estatísticas coletadas da bateria. Não deve ser usado em aplicativos normais."</string>
@@ -276,8 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Permite que o aplicativo lance a interface de usuário de confirmação de backup completo. Não deve ser usado por qualquer aplicativo."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"exibir janelas não autorizadas"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Permite que o aplicativo crie janelas destinadas ao uso pela interface interna do sistema. Não deve ser usado em aplicativos normais."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"induzir outros aplicativos"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Permite que o aplicativo mostre janelas de alerta do sistema. Aplicativos maliciosos podem assumir a tela inteira."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"modificar velocidade de animação global"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Permite que o aplicativo altere a velocidade de animação global (animação mais rápida ou mais lenta) a qualquer momento."</string>
@@ -339,26 +374,22 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Permite que um aplicativo conceda ou revogue permissões específicas para ele ou outros aplicativos. Aplicativos maliciosos podem usar isso para acessar recursos aos quais você não concedeu permissão."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"definir aplicativos preferidos"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Permite que o aplicativo modifique seus aplicativos preferidos. Aplicativos maliciosos podem alterar os aplicativos que são executados, falsificando seus aplicativos existentes para coletar seus dados particulares."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"modificar configurações do sistema"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"Permite que o aplicativo modifique os dados das configurações do sistema. Aplicativos maliciosos podem corromper a configuração de seu sistema."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"modificar configurações do sistema de segurança"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Permite que o aplicativo modifique dados das configurações seguras do sistema. Não deve ser usado em aplicativos normais."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"modificar o mapa de serviços do Google"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"Permite que o aplicativo modifique o mapa de serviços do Google. Não deve ser usado em aplicativos normais."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"executar na inicialização"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Permite que o aplicativo inicie-se logo que o sistema concluir a inicialização. Isso pode tornar a inicialização do tablet mais lenta e permitir que o aplicativo deixe o telefone mais lento por estar sempre em execução."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Permite que o aplicativo inicie-se logo que o sistema concluir a inicialização. Isso pode tornar a inicialização do telefone mais lenta e permitir que o aplicativo deixe o telefone mais lento por estar sempre em execução."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"enviar transmissão persistente"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Permite que o aplicativo envie transmissões fixas, que permaneçam depois que a transmissão terminar. Aplicativos maliciosos podem desacelerar ou desestabilizar o tablet, fazendo com que ele utilize muita memória."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Permite que o aplicativo envie transmissões fixas, que permanecem depois que a transmissão termina. Aplicativos maliciosos podem deixar o telefone lento ou instável, fazendo com que ele use muita memória."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
+ <string name="permlab_readContacts" msgid="8348481131899886131">"ler seus contatos"</string>
<string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Permite que o aplicativo leia todos os dados sobre os contatos armazenados em seu tablet, incluindo a frequência com que você ligou, enviou e-mails ou se comunicou de outras maneiras com cada um. Isso ajuda no preenchimento automático dos endereços de e-mail e em outros recursos práticos. Aplicativos maliciosos podem usar esta permissão para enviar seus dados de contato para outras pessoas."</string>
<string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Permite que o aplicativo leia todos os dados sobre os contatos armazenados em seu telefone, incluindo a frequência com que você ligou, enviou e-mails ou se comunicou de outras maneiras com cada um. Isso ajuda no preenchimento automático dos endereços de e-mail e em outros recursos práticos. Aplicativos maliciosos podem usar esta permissão para enviar seus dados de contato para outras pessoas."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"modificar seus contatos"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Permite que o aplicativo leia todos os dados sobre os contatos armazenados em seu tablet, incluindo a frequência com que você ligou, enviou e-mails ou se comunicou de outras maneiras com cada um. Isso ajuda no preenchimento automático dos endereços de e-mail e em outros recursos práticos. Aplicativos maliciosos podem usar esta permissão para apagar ou modificar seus dados de contato."</string>
<string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Permite que o aplicativo modifique todos os dados sobre os contatos armazenados em seu telefone, incluindo a frequência com que você ligou, enviou e-mails ou se comunicou de outras maneiras com cada um. Isso ajuda no preenchimento automático dos endereços de e-mail e em outros recursos práticos. Aplicativos maliciosos podem usar esta permissão para apagar ou modificar seus dados de contato."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"ler registro de chamadas"</string>
@@ -367,11 +398,9 @@
<string name="permlab_writeCallLog" msgid="8552045664743499354">"salvar no registo de chamadas"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Permite que o aplicativo modifique o registro de chamadas de seu tablet, incluindo dados sobre chamadas recebidas e efetuadas. Aplicativos maliciosos podem usar esta permissão para apagar ou modificar seu registro de chamadas."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Permite que o aplicativo modifique o registro de chamadas de seu telefone, incluindo dados sobre chamadas recebidas e efetuadas. Aplicativos maliciosos podem usar esta permissão para apagar ou modificar seu registro de chamadas."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"ler próprio cartão de contato"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Permite que o aplicativo leia informações de perfil pessoais armazenadas em seu dispositivo, como seu nome e informações de contato. Isso significa que o aplicativo pode identificá-lo e enviar suas informações de perfil para outros aplicativos."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"mod. próprio cartão contato"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Permite que o aplicativo altere ou adicione informações de perfil pessoais armazenados em seu dispositivo, como seu nome e informações de contato. Isso significa que outros aplicativos podem identificá-lo e enviar as informações de seus perfil para outros aplicativos."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"ler suas transmissões sociais"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Permite que o aplicativo acesse e sincronize suas atualizações sociais e as de seus amigos. Aplicativos maliciosos podem usar esse recurso para ler comunicações privadas entre você e seus amigos em redes sociais."</string>
@@ -412,15 +441,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"forçar reinicialização do telefone"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Permite que o aplicativo force a reinicialização do tablet."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Permite que o aplicativo force a reinicialização do telefone."</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"acess sist. arquiv armaz. USB"</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"acessar sistema de arquivos do cartão SD"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Permite que o aplicativo monte e desmonte sistemas de arquivos para armazenamento removível."</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"apagar armazenamento USB"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"apagar cartão SD"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Permite que o aplicativo formate o armazenamento removível."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"obter informações sobre o armazenamento interno"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"Permite que o aplicativo obtenha informações sobre armazenamento interno."</string>
@@ -432,8 +457,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Permite que o aplicativo conecte/desconecte o armazenamento interno."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"renomear armazenamento interno"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"Permite que o aplicativo renomeie o armazenamento interno."</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"controlar vibração"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"Permite que o aplicativo controle a vibração."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"controlar lanterna"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"Permite que o aplicativo controle a lanterna."</string>
@@ -458,8 +482,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"Permite que o aplicativo informe ao sistema quais widgets podem ser usados por qualquer aplicativo. Um aplicativo com essa permissão podem conceder acesso a dados pessoais para outros aplicativos. Não deve ser usado em aplicativos normais."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"modificar estado do telefone"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Permite que o aplicativo controle os recursos de telefone do dispositivo. Um aplicativo com essa permissão pode alternar entre redes, ligar e desligar o rádio do telefone e assim por diante, sem nunca notificá-lo."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"ler status e identidade do telefone"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"Permite que o aplicativo acesse recursos de telefone do dispositivo. Um aplicativo com essa permissão pode identificar o número de telefone e número de série do telefone, se há uma chamada ativa, o número chamado e assim por diante."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"impedir modo de inatividade do tablet"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"impedir modo de inatividade do telefone"</string>
@@ -474,8 +497,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Executa como um teste do fabricante de nível inferior, permitindo o acesso completo ao hardware do telefone. Disponível apenas quando um telefone está em execução no modo de teste do fabricante."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"definir plano de fundo"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"Permite que o aplicativo defina o papel de parede do sistema."</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"ajustar tamanho do plano de fundo"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Permite que o aplicativo defina as dicas de tamanho do plano de fundo do sistema."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"redefinir o sistema para os padrões de fábrica"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"Permite que o aplicativo redefina completamente o sistema para as configurações de fábrica, apagando todos os dados, as configuração e os aplicativos instalados."</string>
@@ -487,21 +509,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Permite que o aplicativo altera o fuso horário do telefone."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"agir como AccountManagerService"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"Permite que o aplicativo faça chamadas para AccountAuthenticators."</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"encontrar contas no dispositivo"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Permite que o aplicativo obtenha a lista de contas conhecidas pelo tablet."</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Permite que o aplicativo obtenha a lista de contas conhecidas pelo telefone."</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"criar contas e definir senhas"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Permite que o aplicativo use os recursos do autenticador de conta do AccountManager, incluindo a criação de contas e a obtenção e definição de senhas."</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"adicionar ou remover contas"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"Permite que um aplicativo execute operações como adição e remoção de contas e exclusão de senhas."</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"usar contas no dispositivo"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"Permite que o aplicativo solicite tokens de autenticação."</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"ver conexões de rede"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"Permite que o aplicativo visualize o estado de todas as redes."</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"acesso total da internet"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Permite que o aplicativo crie sockets de rede."</string>
@@ -513,36 +530,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"Permite que o aplicativo altere o estado de conectividade de rede conectada."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"alterar configuração de uso dos dados de segundo plano"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Permite que o aplicativo altere as configurações de uso de dados de segundo plano."</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"ver conexões Wi-Fi"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"Permite que o aplicativo visualize informações sobre o estado do Wi-Fi."</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"conectar e desconectar do Wi-Fi"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"Permite que um aplicativo se conecte e desconecte dos pontos de acesso Wi-Fi e faça alterações nas redes Wi-Fi configuradas."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"permitir recebimento de multicast Wi-Fi"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Permite que o aplicativo receba pacotes não endereçados diretamente para seu aparelho. Isso pode ser útil ao detectar serviços oferecidos nas proximidades. Esse recurso consome mais energia do que o modo não multicast."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"acessar configurações de Bluetooth"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Permite que um aplicativo configure o tablet Bluetooth local, descubra dispositivos remotos e emparelhe com eles."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Permite que um aplicativo configure o telefone Bluetooth local, descubra e emparelhe com dispositivos remotos."</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Ver conexões WiMAX"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Permite que o aplicativo visualize as informações sobre o estado de WiMAX."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"Alterar estado do WiMAX"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Permite que o aplicativo seja conectado e desconectado de uma rede WiMAX."</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"parear com dispositivos Bluetooth"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Permite que o aplicativo visualize a configuração do tablet Bluetooth local e faça e aceite conexões com dispositivos emparelhados."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Permite que o aplicativo visualize a configuração do telefone Bluetooth local e possa estabelecer e aceitar conexões com dispositivos pareados."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"controlar a comunicação a curta distância"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Permite que o aplicativo se comunique com leitores, cartões e etiqueta NFC (Comunicação a curta distância)."</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"desativar o bloqueio de tela"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Permite que o aplicativo desative o bloqueio de teclas e qualquer segurança por senha associada. Um exemplo real é a desativação do bloqueio de teclas pelo telefone ao receber uma chamada e a reativação do bloqueio quando a chamada é finalizada."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"ler as configurações de sincronização"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Permite que o aplicativo leia as configurações de sincronização, como se a sincronização está ativada para o aplicativo de pessoas."</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"ativar e desativar sincronização"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Permite que o aplicativo modifique as configurações de sincronização, como, por exemplo, se a sincronização está ativada para o aplicativo Pessoas."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"ler estatísticas de sincronização"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"Permite que o aplicativo leia as estatísticas de sincronização; por exemplo, o histórico de sincronizações realizadas."</string>
@@ -550,22 +560,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Permite que o aplicativo obtenha detalhes sobre os feeds sincronizados no momento."</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"gravar feeds inscritos"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Permite que o aplicativo modifique seus feeds sincronizados no momento. Aplicativos maliciosos podem alterar seus feeds sincronizados."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"ler termos adicionados ao dicionário"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Permite que o aplicativo leia palavras, nomes e frases particulares armazenados pelo usuário no dicionário do usuário."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"gravar no dicionário definido pelo usuário"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Permite que o aplicativo grave novas palavras no dicionário do usuário."</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"ler conteúdo do armaz. USB"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"ler conteúdo do cartão SD"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Perm apl leia cont arm USB, incl fotos e mídia."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Permite que o aplicativo leia o conteúdo do cartão SD, o qual pode incluir fotos e mídia."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"modif ou excl cont. armaz USB"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Permite gravar no armaz. USB."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Permite que o aplicativo grave em seu cartão SD."</string>
@@ -744,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Não há um cartão SIM no telefone."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Insera um cartão SIM."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"O cartão SIM não foi inserido ou não é possível lê-lo. Insira um cartão SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"Cartão SIM inutilizável."</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"O cartão SIM foi desativado permanentemente."\n"Entre em contato com seu provedor de serviços sem fio para obter outro cartão SIM."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Botão \"Faixa anterior\""</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Botão \"Próxima faixa\""</string>
@@ -819,15 +824,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"Paróquia"</string>
<string name="autofill_area" msgid="3547409050889952423">"Área"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"Emirado"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"ler seu histórico e seus favoritos da web"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Permite que o aplicativo leia todos os URLs visitados pelo navegador e todos os favoritos do navegador."</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"gravar seu histórico e seus favoritos da web"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Permite que o aplicativo modifique o histórico do navegador ou dos favoritos armazenados em seu tablet. Aplicativos maliciosos podem usar isso para apagar ou modificar os dados de seu navegador."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Permite que o aplicativo modifique o histórico do navegador ou os favoritos armazenados em seu telefone. Aplicativos maliciosos podem usar esse recurso para apagar ou modificar os dados de seu navegador."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"definir um alarme"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"Permite que o aplicativo defina um alarme em um aplicativo despertador instalado. Alguns aplicativos despertador podem não implementar este recurso."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"adicionar correio de voz"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"Permite que o aplicativo adicione mensagens a sua caixa de entrada do correio de voz."</string>
@@ -1087,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Definir data"</string>
<string name="date_time_set" msgid="5777075614321087758">"Definir"</string>
<string name="date_time_done" msgid="2507683751759308828">"Concluído"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"Padrão"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NOVO: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NOVO: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"Nenhuma permissão necessária"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"Ocultar"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"Mostrar todas"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"Armazenamento USB em massa"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"Conectado por USB"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"Você se conectou ao computador via USB. Toque no botão abaixo se quiser copiar arquivos entre o computador e o armazenamento USB de seu Android."</string>
@@ -1320,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"Enviando..."</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"Abrir Navegador?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"Aceitar chamada?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-rm/strings.xml b/core/res/res/values-rm/strings.xml
index 37b3f70..3ca7f9c 100644
--- a/core/res/res/values-rm/strings.xml
+++ b/core/res/res/values-rm/strings.xml
@@ -209,15 +209,86 @@
<!-- no translation found for permgroupdesc_messages (7821999071003699236) -->
<skip />
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Vossas infurmaziuns persunalas"</string>
- <!-- no translation found for permgroupdesc_personalInfo (6975389054186265786) -->
+ <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) -->
<skip />
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Acceder directamain als contacts ed al chalender memorisà sin il telefonin."</string>
+ <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) -->
+ <skip />
<string name="permgrouplab_location" msgid="635149742436692049">"Vossa posiziun"</string>
<!-- no translation found for permgroupdesc_location (5704679763124170100) -->
<skip />
<string name="permgrouplab_network" msgid="5808983377727109831">"Communicaziun rait"</string>
<!-- no translation found for permgroupdesc_network (4478299413241861987) -->
<skip />
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) -->
+ <skip />
+ <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) -->
+ <skip />
+ <!-- no translation found for permgrouplab_calendar (5863508437783683902) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_calendar (5777534316982184416) -->
+ <skip />
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) -->
+ <skip />
+ <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) -->
+ <skip />
+ <!-- no translation found for permgrouplab_voicemail (4162237145027592133) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) -->
+ <skip />
+ <!-- no translation found for permgrouplab_microphone (171539900250043464) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_microphone (7106618286905738408) -->
+ <skip />
+ <!-- no translation found for permgrouplab_camera (4820372495894586615) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_camera (2933667372289567714) -->
+ <skip />
+ <!-- no translation found for permgrouplab_appInfo (8028789762634147725) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) -->
+ <skip />
+ <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) -->
+ <skip />
+ <!-- no translation found for permgrouplab_systemClock (406535759236612992) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) -->
+ <skip />
+ <!-- no translation found for permgrouplab_statusBar (2095862568113945398) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) -->
+ <skip />
+ <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) -->
+ <skip />
<string name="permgrouplab_accounts" msgid="3359646291125325519">"Voss contos"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"Access als contos disponibels"</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Cumonds da la hardware"</string>
@@ -229,6 +300,10 @@
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Utensils per sviluppaders"</string>
<!-- no translation found for permgroupdesc_developmentTools (7058828032358142018) -->
<skip />
+ <!-- no translation found for permgrouplab_display (4279909676036402636) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_display (6051002031933013714) -->
+ <skip />
<string name="permgrouplab_storage" msgid="1971118770546336966">"Memoria"</string>
<!-- no translation found for permgroupdesc_storage (7442318502446874999) -->
<skip />
@@ -842,7 +917,7 @@
<skip />
<!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
<skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<!-- no translation found for permdesc_sdcardWrite (6175406299445710888) -->
<skip />
@@ -1089,6 +1164,8 @@
<skip />
<!-- no translation found for lockscreen_missing_sim_instructions_long (3526573099019319472) -->
<skip />
+ <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) -->
+ <skip />
<!-- no translation found for lockscreen_permanent_disabled_sim_instructions (910904643433151371) -->
<skip />
<!-- no translation found for lockscreen_transport_prev_description (201594905152746886) -->
@@ -1588,12 +1665,11 @@
<string name="date_time_set" msgid="5777075614321087758">"Definir"</string>
<!-- no translation found for date_time_done (2507683751759308828) -->
<skip />
- <string name="default_permission_group" msgid="2690160991405646128">"Standard"</string>
<!-- no translation found for perms_new_perm_prefix (8257740710754301407) -->
<skip />
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"Naginas permissiuns obligatoricas"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"Zuppentar"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"Mussar tut"</b></string>
<!-- no translation found for usb_storage_activity_title (4465055157209648641) -->
<skip />
<string name="usb_storage_title" msgid="5901459041398751495">"Connectà cun agid d\'in cabel USB"</string>
@@ -1993,4 +2069,8 @@
<skip />
<!-- no translation found for SetupCallDefault (5834948469253758575) -->
<skip />
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml
index 8e430a8..963b676 100644
--- a/core/res/res/values-ro/strings.xml
+++ b/core/res/res/values-ro/strings.xml
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"Mesajele dvs."</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"Citire şi scriere mesaje SMS, e-mailuri şi alte mesaje."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Informaţiile dvs. personale"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Acces direct la agenda şi la calendarul stocate pe computerul dvs. tablet PC."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Acces direct la agenda şi la calendarul stocate pe telefonul dvs."</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Acces direct la informaţii despre dvs., stocate pe cartea de vizită."</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Informaţiile dvs. sociale"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Acces direct la informaţii despre persoanele de contact şi conexiunile dvs. sociale."</string>
<string name="permgrouplab_location" msgid="635149742436692049">"Locaţia dvs."</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"Monitorizează locaţia dvs. fizică."</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"Comunicare în reţea"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"Accesează diferite funcţii ale reţelei."</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Setările audio"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Modifică setările audio."</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Capacitatea de a afecta bateria"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Utilizează funcţii care pot consuma rapid bateria."</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"Calendarul"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Acces direct la calendar şi la evenimente."</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Marcajele şi Istoricul"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Acces direct la marcaje şi la istoricul navigării."</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Alarma"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Setează ceasul cu alarmă."</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Mesageria vocală"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Acces direct la mesageria vocală."</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"Microfonul"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Acces direct la microfon pentru înregistrări audio."</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"Camera foto"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"Acces direct la camera foto pentru a realiza fotografii şi videoclipuri."</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Informaţiile despre aplicaţiile dvs."</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Capacitatea de a influenţa comportamentul altor aplicaţii de pe dispozitiv."</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Imaginea de fundal"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Modifică setările pentru imaginea de fundal a dispozitivului."</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"Ceasul"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Modifică ora sau fusul orar ale dispozitivului."</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Bara de stare"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Modifică setările pentru bara de stare a dispozitivului."</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Setările de sincronizare"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Acces la setările de sincronizare."</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"Conturile dvs."</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"Accesează conturile disponibile."</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Controale hardware"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Acces şi control de nivel redus ale sistemului."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Instrumente de dezvoltare"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Funcţii necesare doar pentru dezvoltatorii de aplicaţii."</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"Interfaţa de utilizare a altor aplicaţii"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"Influenţează interfaţa de utilizare a altor aplicaţii."</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"Stocare"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Accesează stocarea USB."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Accesează cardul SD."</string>
@@ -193,14 +238,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"Permite aplicaţiei să fie bară de stare."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"extindere/restrângere bară de stare"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Permite aplicaţiei să extindă sau să restrângă bara de stare."</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"redirecţionează apelurile efectuate"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Permite aplicaţiei să proceseze apelurile efectuate şi să schimbe numărul care trebuie format. Aplicaţiile rău intenţionate pot monitoriza, redirecţiona sau împiedica apelurile efectuate."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"primeşte mesaje text (SMS)"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"Permite aplicaţiei să primească şi să proceseze mesaje SMS. Aplicaţiile rău intenţionate pot să monitorizeze mesajele sau să le şteargă fără să vi le arate."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"primeşte mesaje text (MMS)"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"Permite aplicaţiei să primească şi să proceseze mesaje MMS. Aplicaţiile rău intenţionate pot să monitorizeze mesajele sau să le şteargă fără să vi le arate."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"primeşte mesaje difuzate de urgenţă"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Permite aplicaţiei să primească şi să proceseze mesajele difuzate de urgenţă. Această permisiune este disponibilă numai pentru aplicaţiile de sistem."</string>
@@ -210,16 +252,13 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"Permite aplicaţiei să trimită mesaje SMS. Aplicaţiile rău intenţionate pot să vă genereze costuri, deoarece trimit mesaje fără confirmarea dvs."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"trimitere mesaje SMS fără confirmare"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Permite aplicaţiei să trimită mesaje SMS. Aplicaţiile rău intenţionate pot să vă genereze costuri, deoarece trimit mesaje fără confirmarea dvs."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"citeşte mesajele text (SMS sau MMS)"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Permite aplicaţiei să citească mesajele SMS stocate pe tabletă sau pe cardul SIM. Aplicaţiile rău intenţionate pot să vă citească mesajele confidenţiale"</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Permite aplicaţiei să citească mesajele SMS stocate pe telefon sau pe cardul SIM. Aplicaţiile rău intenţionate pot să vă citească mesajele confidenţiale."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"editează mesajele text (SMS sau MMS)"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Permite aplicaţiei să scrie în mesajele SMS stocate pe tabletă sau pe cardul SIM. Aplicaţiile rău intenţionate pot să vă şteargă mesajele."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Permite aplicaţiei să scrie în mesajele SMS stocate pe telefon sau pe cardul SIM. Aplicaţiile rău intenţionate pot să vă şteargă mesajele."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"primeşte mesaje text (WAP)"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Permite aplicaţiei să primească şi să proceseze mesaje WAP. Aplicaţiile rău intenţionate pot să monitorizeze mesajele sau să le şteargă fără să vi le arate."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"preluare aplicaţii care rulează"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"Permite aplicaţiei să preia informaţii despre activităţile rulate curent şi recent. Aplicaţiile rău intenţionate pot să descopere informaţii private despre alte aplicaţii."</string>
@@ -235,13 +274,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Permite aplicaţiei să controleze modul de compatibilitate a ecranului pentru alte aplicaţii. Aplicaţiile rău intenţionate pot afecta comportamentul altor aplicaţii."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"activare depanare aplicaţie"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"Permite aplicaţiei să activeze depanarea pentru o altă aplicaţie. Aplicaţiile rău intenţionate pot să utilizeze această permisiune pentru a închide alte aplicaţii."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"modifică setările de afişare ale sistemului"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Permite aplicaţiei să modifice configurarea curentă, cum ar fi limba sau dimensiunea generală a fontului."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"activare mod Maşină"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"Permite aplicaţiei să activeze modul Maşină."</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"închide alte aplicaţii"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Permite aplicaţiei să oprească procesele derulate în fundal de alte aplicaţii, chiar dacă există suficientă memorie."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"forţare oprire a altor aplicaţii"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Permite aplicaţiei să oprească alte aplicaţii în mod forţat."</string>
@@ -265,8 +302,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Permite aplicaţiei să difuzeze o notificare de primire a unui mesaj WAP PUSH. Aplicaţiile rău intenţionate pot să utilizeze această permisiune pentru a deturna primirea mesajelor MMS sau pentru a înlocui fără a vă înştiinţa conţinutul oricărei pagini web cu variante rău intenţionate."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"limitare număr de procese în derulare"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Permite aplicaţiei să controleze numărul maxim de procese care vor rula. Nu este niciodată necesară pentru aplicaţiile obişnuite."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"forţează închiderea aplicaţiilor de fundal"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Permite aplicaţiei să controleze dacă activităţile sunt întotdeauna închise imediat ce ajung în fundal. Nu este niciodată necesară pentru aplicaţiile obişnuite."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"modificare statistici referitoare la baterie"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"Permite aplicaţiei să modifice statisticile colectate despre baterie. Nu se utilizează de aplicaţiile obişnuite."</string>
@@ -276,8 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Permite aplicaţiei să lanseze interfaţa de utilizare pentru confirmarea copiei de rezervă complete. Nu poate fi utilizată de orice aplicaţie."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"afişare ferestre neautorizate"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Permite aplicaţiei să creeze ferestre destinate a fi folosite de către interfaţa de utilizare a sistemului intern. Nu se utilizează de aplicaţiile obişnuite."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"suprapune elemente vizuale peste alte aplicaţii"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Permite aplicaţiei să afişeze ferestre de alertă de sistem. Aplicaţiile rău intenţionate pot să preia controlul asupra întregului ecran."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"modificare viteză de animaţie globală"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Permite aplicaţiei să modifice oricând viteza globală de animaţie (animaţii mai rapide sau mai lente)."</string>
@@ -339,39 +374,33 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Permite unei aplicaţii să acorde sau să revoce permisiuni specifice acelei aplicaţii sau altor aplicaţii. Aplicaţiile rău intenţionate pot utiliza această permisiune pentru a accesa funcţii pe care nu le-aţi permis."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"setare aplicaţii preferate"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Permite aplicaţiei să modifice aplicaţiile dvs. preferate. Aplicaţiile rău intenţionate pot să modifice fără a vă înştiinţa aplicaţiile care rulează, păcălind aplicaţiile existente să colecteze date private de la dvs."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"modifică setări de sistem"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"Permite aplicaţiei să modifice datele din setările sistemului. Aplicaţiile rău intenţionate pot corupe configuraţia sistemului dvs."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"modificare setări securizate sistem"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Permite aplicaţiei să modifice datele setărilor securizate ale sistemului. Nu se utilizează de aplicaţiile obişnuite."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"modificare hartă servicii Google"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"Permite aplicaţiei să modifice harta serviciilor Google. Nu se utilizează de aplicaţiile obişnuite."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"rulează la pornire"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Permite aplicaţiei să pornească imediat ce s-a terminat încărcarea sistemului. Din acest motiv, pornirea tabletei poate dura mai mult timp, iar rularea continuă a aplicaţiei poate încetini dispozitivul."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Permite aplicaţiei să pornească imediat ce s-a terminat încărcarea sistemului. Din acest motiv, pornirea telefonului poate dura mai mult timp, iar rularea continuă a aplicaţiei poate încetini dispozitivul."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"trimitere mesaj difuzat persistent"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Permite aplicaţiei să trimită mesaje difuzate persistente, care rămân după terminarea mesajului difuzat. Aplicaţiile rău intenţionate pot să încetinească sau să destabilizeze tableta, determinând-o să utilizeze prea multă memorie."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Permite aplicaţiei să trimită mesaje difuzate persistente, care rămân după terminarea mesajului difuzat. Aplicaţiile rău intenţionate pot să încetinească sau să destabilizeze telefonul, determinându-l să utilizeze prea multă memorie."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
- <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Permite aplicaţiei să citească toate datele despre persoanele de contact stocate pe tabletă, inclusiv frecvenţa cu care aţi apelat, aţi trimis mesaje de e-mail către sau aţi comunicat în alte moduri cu anumite persoane. Acest lucru permite completarea automată a adreselor de e-mail, precum şi alte funcţii care vă uşurează utilizarea. Aplicaţiile rău intenţionate pot folosi această permisiune pentru a trimite datele dvs. de contact altor persoane."</string>
- <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Permite aplicaţiei să citească toate datele despre persoanele de contact stocate pe telefon, inclusiv frecvenţa cu care aţi apelat, aţi trimis mesaje de e-mail către sau aţi comunicat în alte moduri cu anumite persoane. Acest lucru permite completarea automată a adreselor de e-mail, precum şi alte funcţii care vă uşurează utilizarea. Aplicaţiile rău intenţionate pot folosi această permisiune pentru a trimite datele dvs. de contact altor persoane."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
- <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Permite aplicaţiei să modifice datele despre persoanele de contact stocate pe tabletă, inclusiv frecvenţa cu care aţi apelat, aţi trimis mesaje de e-mail către sau aţi comunicat în alte moduri cu anumite persoane. Acest lucru permite completarea automată a adreselor de e-mail, precum şi alte funcţii care vă uşurează utilizarea. Aplicaţiile rău intenţionate pot folosi această permisiune pentru a şterge sau pentru a modifica datele dvs. de contact."</string>
- <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Permite aplicaţiei să modifice datele despre persoanele de contact stocate pe telefon, inclusiv frecvenţa cu care aţi apelat, aţi trimis mesaje de e-mail către sau aţi comunicat în alte moduri cu anumite persoane. Acest lucru permite completarea automată a adreselor de e-mail, precum şi alte funcţii care vă uşurează utilizarea. Aplicaţiile rău intenţionate pot folosi această permisiune pentru a şterge sau pentru a modifica datele dvs. de contact."</string>
+ <string name="permlab_readContacts" msgid="8348481131899886131">"citeşte agenda"</string>
+ <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Permite aplicaţiei să citească toate datele despre persoanele de contact stocate pe tabletă, inclusiv frecvenţa cu care aţi apelat, aţi trimis mesaje de e-mail către anumite persoane sau aţi comunicat în alte moduri cu acestea. Acest lucru permite completarea automată a adreselor de e-mail, precum şi alte funcţii care vă uşurează utilizarea. Aplicaţiile rău intenţionate pot folosi această permisiune pentru a trimite datele dvs. de contact altor persoane."</string>
+ <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Permite aplicaţiei să citească toate datele despre persoanele de contact stocate pe telefon, inclusiv frecvenţa cu care aţi apelat, aţi trimis mesaje de e-mail către anumite persoane sau aţi comunicat în alte moduri cu acestea. Acest lucru permite completarea automată a adreselor de e-mail, precum şi alte funcţii care vă uşurează utilizarea. Aplicaţiile rău intenţionate pot folosi această permisiune pentru a trimite datele dvs. de contact altor persoane."</string>
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"modifică agenda"</string>
+ <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Permite aplicaţiei să modifice datele despre persoanele de contact stocate pe tabletă, inclusiv frecvenţa cu care aţi apelat, aţi trimis mesaje de e-mail către anumite persoane sau aţi comunicat în alte moduri cu acestea. Acest lucru permite completarea automată a adreselor de e-mail, precum şi alte funcţii care vă uşurează utilizarea. Aplicaţiile rău intenţionate pot folosi această permisiune pentru a şterge sau pentru a modifica datele dvs. de contact."</string>
+ <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Permite aplicaţiei să modifice datele despre persoanele de contact stocate pe telefon, inclusiv frecvenţa cu care aţi apelat, aţi trimis mesaje de e-mail către anumite persoane sau aţi comunicat în alte moduri cu acestea. Acest lucru permite completarea automată a adreselor de e-mail, precum şi alte funcţii care vă uşurează utilizarea. Aplicaţiile rău intenţionate pot folosi această permisiune pentru a şterge sau pentru a modifica datele dvs. de contact."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"citeşte jurnalul de apeluri"</string>
<string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Permite aplicaţiei să citească jurnalul de apeluri al tabletei dvs., inclusiv datele despre apelurile primite sau efectuate. Aplicaţiile rău intenţionate pot utiliza această permisiune pentru a trimite datele dvs. altor persoane."</string>
<string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Permite aplicaţiei să citească jurnalul de apeluri al telefonului dvs., inclusiv datele despre apelurile primite sau efectuate. Aplicaţiile rău intenţionate pot utiliza această permisiune pentru a trimite datele dvs. altor persoane."</string>
<string name="permlab_writeCallLog" msgid="8552045664743499354">"scrie jurnalul de apeluri"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Permite aplicaţiei să modifice jurnalul de apeluri al tabletei dvs., inclusiv datele despre apelurile primite sau efectuate. Aplicaţiile rău intenţionate pot utiliza această permisiune pentru a şterge sau pentru a modifica jurnalul dvs. de apeluri."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Permite aplicaţiei să modifice jurnalul de apeluri al telefonului dvs., inclusiv datele despre apelurile primite sau efectuate. Aplicaţiile rău intenţionate pot utiliza această permisiune pentru a şterge sau pentru a modifica jurnalul dvs. de apeluri."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"citeşte cartea dvs. de vizită"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Permite aplicaţiei să citească informaţii de profil personal stocate pe dispozitiv, cum ar fi numele şi informaţiile de contact, ceea ce înseamnă că aplicaţia vă poate identifica şi poate trimite informaţiile dvs. de profil altor utilizatori."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"modifică cartea dvs. de vizită"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Permite aplicaţiei să schimbe sau să adauge conţinut în informaţiile din profilul personal stocate pe dispozitivul dvs., cum ar fi numele şi informaţiile dvs. de contact. Aceasta înseamnă că alte aplicaţii vă pot identifica şi pot trimite informaţiile din profilul dvs. altor persoane."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"citeşte fluxul social"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Permite aplicaţiei să acceseze şi să sincronizeze actualizările sociale de la dvs. şi de la prietenii dvs. Aplicaţiile rău intenţionate se pot folosi de această permisiune pentru a citi comunicările private dintre dvs. şi prietenii dvs. de pe reţelele sociale."</string>
@@ -412,15 +441,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"forţare repornire telefon"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Permite aplicaţiei să forţeze repornirea tabletei."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Permite aplicaţiei să forţeze repornirea telefonului."</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"acces. sist. fişiere stoc. USB"</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"accesează sistemul de fişiere pe cardul SD"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Permite aplicaţiei să monteze şi să demonteze sisteme de fişiere pentru stocarea pe suporturi amovibile."</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"şterge stocarea USB"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"şterge cardul SD"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Permite aplicaţiei să formateze stocarea pe suporturi amovibile."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"descărcare informaţii pe stocarea internă"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"Permite aplicaţiei să obţină informaţii despre stocarea internă."</string>
@@ -432,8 +457,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Permite aplicaţiei să monteze/demonteze stocarea internă."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"redenumire stocare internă"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"Permite aplicaţiei să redenumească stocarea internă."</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"controlează vibrarea"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"Permite aplicaţiei să controleze mecanismul de vibrare."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"control lanternă"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"Permite aplicaţiei să controleze lanterna."</string>
@@ -458,8 +482,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"Permite aplicaţiei să indice sistemului ce aplicaţii pot utiliza anumite widgeturi. Cu ajutorul acestei permisiuni, aplicaţiile pot să acorde altor aplicaţii accesul la datele personale. Nu se utilizează de aplicaţiile obişnuite."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"modificare stare telefon"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Permite aplicaţiei să controleze funcţiile de telefon ale dispozitivului. O aplicaţie cu această permisiune poate să schimbe reţeaua, să închidă şi să deschidă radioul şi să efectueze alte acţiuni similare, fără să vă înştiinţeze."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"citeşte starea şi identitatea telefonului"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"Permite aplicaţiei să acceseze funcţiile de telefon ale dispozitivului. O aplicaţie cu această permisiune poate regăsi numărul de telefon şi numărul serial al telefonului, dacă un apel este activ, numărul la care este conectat apelul şi alte aspecte similare."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"împiedicarea computerului tablet PC să intre în repaus"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"împiedicare intrare telefon în repaus"</string>
@@ -474,8 +497,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Rulează ca testare de nivel redus al producătorului, permiţând accesul complet la hardware-ul telefonului. Permisiune disponibilă doar când telefonul rulează în modul de testare a producător."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"setare imagine de fundal"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"Permite aplicaţiei să seteze imaginea de fundal a sistemului."</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"ajustează dimensiunea imaginii de fundal"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Permite aplicaţiei să seteze sugestiile privind dimensiunile imaginii de fundal a sistemului."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"resetare sistem la setările prestabilite din fabrică"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"Permite aplicaţiei să reseteze complet sistemul la setările din fabrică, ştergând toate datele, configurările şi aplicaţiile instalate."</string>
@@ -487,21 +509,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Permite aplicaţiei să schimbe fusul orar al telefonului."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"efectuare ca AccountManagerService"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"Permite aplicaţiei să efectueze apeluri către AccountAuthenticators."</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"găseşte conturi pe dispozitiv"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Permite aplicaţiei să obţină lista conturilor cunoscute de tabletă."</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Permite aplicaţiei să obţină lista conturilor cunoscute de telefon."</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"creează conturi şi setează parole"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Permite aplicaţiei să utilizeze capacităţile de autentificator de cont ale AccountManager, incluzând crearea conturilor şi obţinerea şi setarea parolelor."</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"adaugă sau elimină conturi"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"Permite aplicaţiei să efectueze operaţii cum ar fi adăugarea şi eliminarea conturilor şi ştergerea parolelor."</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"utilizează conturile de pe dispozitiv"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"Permite aplicaţiei să solicite indicative de autentificare."</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"vizualizează conexiunile la reţea"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"Permite aplicaţiei să vizualizeze starea tuturor reţelelor."</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"acces complet la Internet"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Permite aplicaţiei să creeze socluri de reţea."</string>
@@ -513,36 +530,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"Permite aplicaţiei să modifice starea de conectivitate prin tethering la reţea."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"modificare setare pentru utilizarea datelor din fundal"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Permite aplicaţiei să modifice setarea pentru utilizarea datelor de fundal."</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"vizualizează conexiunile Wi-Fi"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"Permite aplicaţiei să vizualizeze informaţiile despre starea Wi-Fi."</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"se conectează şi se deconectează de la Wi-Fi"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"Permite aplicaţiei să se conecteze la şi să se deconecteze de la punctele de acces Wi-Fi, precum şi să efectueze modificări în reţelele Wi-Fi configurate."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"permitere recepţionare difuzare multiplă Wi-Fi"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Permite aplicaţiei să primească pachete care nu sunt direct adresate dispozitivului dvs. Această permisiune poate fi utilă la descoperirea serviciilor oferite în apropiere. Consumă mai multă energie decât modul fără difuzare multiplă."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"accesează setările Bluetooth"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Permite aplicaţiei să configureze tableta Bluetooth locală, să descopere şi să se împerecheze cu dispozitive la distanţă."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Permite aplicaţiei să configureze telefonul Bluetooth local, să descopere şi să se împerecheze cu dispozitive la distanţă."</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Afişaţi conexiunile WiMAX"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Permite aplicaţiei să vizualizeze informaţiile despre starea WiMAX."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"Schimbaţi starea WiMAX"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Permite aplicaţiei să se conecteze la şi să se deconecteze de la reţeaua WiMAX."</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"împerechează dispozitive Bluetooth"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Permite aplicaţiei să vizualizeze configuraţia tabletei Bluetooth locale, să efectueze şi să accepte conexiuni cu dispozitive împerecheate."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Permite aplicaţiei să vizualizeze configuraţia telefonului Bluetooth local, să efectueze şi să accepte conexiuni cu dispozitive împerecheate."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"controlare schimb de date prin Near Field Communication"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Permite aplicaţiei să comunice cu etichetele, cardurile şi cititoarele NFC (Near Field Communication)."</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"dezactivează blocarea ecranului"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Permite aplicaţiei să dezactiveze blocarea tastelor şi orice modalitate asociată de securizare prin parolă. Un bun exemplu este dezactivarea blocării tastelor de către telefon atunci când se primeşte un apel telefonic şi reactivarea blocării tastelor la terminarea apelului."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"citire setări sincronizare"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Permite aplicaţiei să citească setările de sincronizare, cum ar fi activarea sincronizării pentru aplicaţia Persoane."</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"activează/dezactivează sincronizarea"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Permite aplicaţiei să modifice setările de sincronizare, cum ar fi activarea sincronizării pentru aplicaţia Persoane."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"citire statistici privind sincronizarea"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"Permite aplicaţiei să citească statisticile privind sincronizarea, de exemplu, istoricul sincronizărilor care au avut loc."</string>
@@ -550,22 +560,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Permite aplicaţiei să obţină detalii despre feedurile sincronizate în prezent."</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"scriere feeduri abonat"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Permite aplicaţiei să modifice fluxurile sincronizate curent. Aplicaţiile rău intenţionate pot să modifice fluxurile sincronizate."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"citeşte termenii adăugaţi în dicţionar"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Permite aplicaţiei să citească cuvinte, nume şi expresii private stocate de utilizator în dicţionarul său."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"scriere în dicţionarul definit de utilizator"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Permite aplicaţiei să scrie cuvinte noi în dicţionarul utilizatorului."</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"citeşte conţinutul stocării USB"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"citeşte conţinutul cardului SD"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Permite aplic. să citească conţin. stoc. USB, care poate include fotogr. şi media."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Permite aplicaţiei să citească conţinutul cardului SD, care poate include fotografii şi conţinut media."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"modifică sau şterge conţinutul stocării USB"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Permite scriere în stoc. USB."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Permite aplicaţiei să scrie pe cardul SD."</string>
@@ -744,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Telefonul nu are card SIM."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Introduceţi un card SIM."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"Cardul SIM lipseşte sau nu poate fi citit. Introduceţi un card SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"Card SIM inutilizabil."</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Cardul dvs. SIM este dezactivat definitiv."\n" Contactaţi furnizorul de servicii wireless pentru a obţine un alt card SIM."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Butonul Melodia anterioară"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Butonul Melodia următoare"</string>
@@ -819,15 +824,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"Cartier"</string>
<string name="autofill_area" msgid="3547409050889952423">"Zonă"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"Emirat"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"citeşte marcajele şi istoricul web"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Permite aplicaţiei să citească toate adresele URL accesate din browser şi toate marcajele aflate în acesta."</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"scrie în marcajele şi în istoricul web"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Permite aplicaţiei să modifice istoricul sau marcajele din browser stocate pe tabletă. Aplicaţiile rău intenţionate pot să utilizeze această permisiune pentru a şterge sau pentru a modifica datele din browser."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Permite aplicaţiei să modifice istoricul sau marcajele din browser stocate pe telefon. Aplicaţiile rău intenţionate pot să utilizeze această permisiune pentru a şterge sau a modifica datele din browser."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"setează o alarmă"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"Permite aplicaţiei să seteze o alarmă într-o aplicaţie de ceas cu alarmă instalată. Este posibil ca unele aplicaţii de ceas cu alarmă să nu implementeze această funcţie."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"adăugare mesagerie vocală"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"Permite aplicaţiei să adauge mesaje în Mesaje primite în mesageria vocală."</string>
@@ -1087,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Setaţi data"</string>
<string name="date_time_set" msgid="5777075614321087758">"Setaţi"</string>
<string name="date_time_done" msgid="2507683751759308828">"Terminat"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"Prestabilit"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NOU: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NOU: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"Nu se solicită nicio permisiune"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"Ascundeţi"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"Afişaţi-le pe toate"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"Stocare masivă USB"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"USB conectat"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"V-aţi conectat la computer prin USB. Atingeţi butonul de mai jos dacă doriţi să copiaţi fişiere de pe computer pe stocarea USB Android sau invers."</string>
@@ -1320,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"Se trimite..."</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"Lansaţi browserul?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"Acceptaţi apelul?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index c521fce..04163ee 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"Сообщения"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"Чтение и запись SMS, электронных писем и других сообщений."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Личная информация"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Прямой доступ к контактам и событиям календаря, сохраненным в памяти планшетного ПК."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Прямой доступ к контактам и событиям календаря, сохраненным в памяти телефона."</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Прямой доступ к моим контактным данным."</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Информация о моих социальных контактах"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Прямой доступ к информации о моих контактах и социальных связях."</string>
<string name="permgrouplab_location" msgid="635149742436692049">"Ваше местоположение"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"Приложение сможет отслеживать ваше местоположение."</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"Сетевой обмен данными"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"Приложение сможет получать доступ к различным сетевым функциям."</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Настройки звука"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Изменение настроек звука."</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Воздействие на батарею"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Использование функций, приводящих к быстрой разрядке батареи."</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"Календарь"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Прямой доступ к календарю и мероприятиям."</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Закладки и история"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Прямой доступ к закладкам и истории браузера."</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Будильник"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Настройка будильника."</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Голосовая почта"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Прямой доступ к голосовой почте."</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"Микрофон"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Прямой доступ к микрофону для записи звука."</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"Камера"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"Прямой доступ к камере для фото- и видеосъемки."</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Информация о приложениях"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Возможность влиять на поведение других приложений на устройстве."</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Обои"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Изменение настроек обоев на устройстве."</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"Часы"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Изменение времени или часового пояса на устройстве."</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Строка состояния"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Изменение настроек строки состояния для устройства."</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Настройки синхронизации"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Доступ к настройкам синхронизации."</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"Ваши аккаунты"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"Доступ к имеющимся аккаунтам."</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Управление оборудованием"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Доступ нижнего уровня и управление системой."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Инструменты разработки"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Функции, предназначенные для разработчиков приложений."</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"Интерфейс других приложений"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"Воздействие на интерфейс других приложений."</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"Память"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Доступ к USB-накопителю."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Доступ к SD-карте."</string>
@@ -193,14 +238,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"Приложение сможет заменять собой строку состояния."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"разворачивать/сворачивать строку состояния"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Приложение сможет разворачивать и сворачивать строку состояния."</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"Перенаправление исходящих вызовов"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Приложение сможет обрабатывать исходящие вызовы и изменять набираемый номер. Вредоносные программы смогут отслеживать, перенаправлять или блокировать исходящие вызовы."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"Прием SMS"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"Приложение сможет получать и обрабатывать SMS. Вредоносные программы смогут отслеживать и удалять сообщения, не показывая их."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"Прием MMS"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"Приложение сможет получать и обрабатывать MMS. Вредоносные программы смогут отслеживать и удалять сообщения, не показывая их."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"принимать экстренные вызовы"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Приложение сможет получать и обрабатывать экстренные сообщения рассылок. Это разрешение доступно только для системных приложений."</string>
@@ -210,16 +252,13 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"Приложение сможет отправлять SMS. Вредоносные программы смогут отправлять SMS без вашего подтверждения, что приведет к непредвиденным расходам."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"отправка SMS без подтверждения"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Приложение сможет отправлять SMS. Вредоносные программы смогут отправлять SMS без вашего подтверждения, что приведет к непредвиденным расходам."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"Просмотр своих SMS и MMS"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Приложение получит доступ к SMS, сохраненным на планшетном ПК или SIM-карте. Вредоносные программы смогут получить доступ к конфиденциальным данным в сообщениях."</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Приложение получит доступ к SMS, сохраненным на телефоне или SIM-карте. Вредоносные программы смогут получить доступ к конфиденциальным данным в сообщениях."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"Изменение SMS и MMS"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Приложение сможет изменять SMS, сохраненные на планшетном ПК или SIM-карте. Вредоносные программы смогут удалять ваши сообщения."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Приложение сможет изменять SMS, сохраненные на телефоне или SIM-карте. Вредоносные программы смогут удалять ваши сообщения."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"Прием WAP-сообщений"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Приложение сможет получать и обрабатывать WAP-сообщения. Вредоносные программы смогут отслеживать и удалять сообщения, не показывая их."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"получение запущенных приложений"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"Приложение сможет получать информацию о недавно запущенных и выполняемых задачах. Вредоносные программы смогут получить личную информацию из других приложений."</string>
@@ -235,13 +274,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Приложение сможет управлять режимом совместимости экрана других приложений. Вредоносное ПО может привести к сбоям в работе других программ."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"включение отладки приложений"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"Приложение сможет включать отладку для другой программы. Вредоносное ПО сможет таким образом останавливать работу других приложений."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"Изменение настроек отображения"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Приложение сможет изменять текущую конфигурацию, например, региональные настройки или размер шрифта."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"включить режим громкой связи"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"Приложение сможет включать режим \"Штурман\"."</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"Закрытие других приложений"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Приложение сможет останавливать фоновые процессы других программ, даже если памяти достаточно."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"принудительное закрытие других приложений"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Приложение сможет принудительно останавливать работу других программ."</string>
@@ -265,8 +302,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Приложение сможет уведомлять о получении сообщений WAP PUSH. Вредоносные программы смогут таким образом фальсифицировать получение MMS или незаметно подменять содержание любой страницы вредоносными данными."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"ограничивать количество запущенных процессов"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Приложение сможет управлять максимальным количеством процессов, которые могут быть запущены. Это разрешение не используется обычными приложениями."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"Закрытие фоновых приложений"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Приложение сможет управлять завершением процессов после их перехода в фоновый режим. Это разрешение не используется обычными приложениями."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"изменять статистику батареи"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"Приложение сможет изменять собранную статистику использования заряда батареи. Это разрешение не используется обычными приложениями."</string>
@@ -276,8 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Приложение сможет отображать окно подтверждения полного резервного копирования. Это разрешение не предназначено для всех приложений."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"показывать неавторизованные окна"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Приложение сможет создавать окна для интерфейса внутренней системы. Это разрешение не используется обычными приложениями."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"Размещение поверх других приложений"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Приложение сможет показывать окна системных предупреждений. Вредоносные программы смогут перехватить управление всем экраном."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"изменять глобальную скорость анимации"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Приложение сможет в любой момент изменить общую скорость анимации."</string>
@@ -339,26 +374,22 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Позволяет приложению предоставлять и отзывать разрешения самому себе и другим программам. Вредоносные приложения могут использовать эту функцию для получения прав, которых вы им не предоставляли."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"настройка предпочтительных приложений"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Приложение сможет изменять предпочтительные приложения. Вредоносные программы смогут незаметно изменять запускаемые вами программы и собирать ваши личные данные от имени существующих приложений."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"Bзменение настроек системы"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"Приложение сможет изменять настройки системы. Вредоносные программы смогут повредить конфигурацию системы."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"изменять настройки системы безопасности"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Приложение сможет изменять системные настройки безопасности. Это разрешение не используется обычными приложениями."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"изменять карту служб Google"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"Приложение сможет изменять карту служб Google. Это разрешение не используется обычными приложениями."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"Автоматический запуск при загрузке"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Приложение сможет запускаться после начальной загрузки системы. Это может привести к увеличению времени включения планшетного ПК и уменьшить его быстродействие в связи с постоянной работой приложения."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Приложение сможет запускаться после начальной загрузки системы. Это может привести к увеличению времени включения телефона и уменьшить его быстродействие в связи с постоянной работой приложения."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"отправить несрочную рассылку"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Приложение сможет отправлять несрочные рассылки, которые не удаляются после их завершения. Вредоносные программы смогут замедлить работу планшетного ПК или сделать ее нестабильной из-за чрезмерного использования памяти."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Приложение сможет делать рассылки типа sticky broadcast. Вредоносные программы смогут замедлить работу телефона или сделать ее нестабильной из-за чрезмерного использования памяти."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
+ <string name="permlab_readContacts" msgid="8348481131899886131">"Просмотр своих контактов"</string>
<string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Приложение сможет читать все данные о контактах на вашем устройстве, включая то, как часто вы звоните, отправляете письма и другими способами связываетесь с определенными людьми. Это поможет автоматически вводить адреса эл. почты и использовать другие удобные функции. Вредоносные приложения могут использовать это разрешение для отправки ваших сведений о контактах другим людям."</string>
<string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Приложение сможет читать все данные о контактах на вашем устройстве, включая то, как часто вы звоните, отправляете письма и другими способами связываетесь с определенными людьми. Это поможет автоматически вводить адреса эл. почты и использовать другие удобные функции. Вредоносные приложения могут использовать это разрешение для отправки ваших сведений о контактах другим людям."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"Изменение контактов"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Приложение сможет изменять сведения о контактах на вашем устройстве, включая то, как часто вы звоните, отправляете письма и другими способами связываетесь с определенными людьми. Это помогает автоматически вводить адреса эл. почты и использовать другие удобные функции. Вредоносные приложения могут использовать это для удаления или изменения ваших сведений о контактах."</string>
<string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Приложение сможет изменять сведения о контактах на вашем устройстве, включая то, как часто вы звоните, отправляете письма и другими способами связываетесь с определенными людьми. Это помогает автоматически вводить адреса эл. почты и использовать другие удобные функции. Вредоносные приложения могут использовать это для удаления или изменения ваших сведений о контактах."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"чтение журнала вызовов"</string>
@@ -367,11 +398,9 @@
<string name="permlab_writeCallLog" msgid="8552045664743499354">"запись журнала вызовов"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Приложение сможет вносить изменения в список вызовов планшетного ПК и данные о входящих и исходящих звонках. Вредоносные приложения смогут воспользоваться этим для удаления или изменения информации о звонках."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Приложение сможет вносить изменения в список вызовов телефона и данные о входящих и исходящих звонках. Вредоносные приложения смогут воспользоваться этим для удаления или изменения информации о звонках."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"Просмотр своих контактных данных"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Приложение сможет считывать информацию личного профиля, сохраненную на устройстве, такую как ваше имя и контактные данные. Это означает, что приложение сможет получить ваши личные данные и отправить их другим пользователям."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"Изменение своих контактных данных"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Приложение сможет изменять и добавлять информацию личного профиля, сохраненную на устройстве, такую как ваше имя и контактные данные. Это означает, что другие приложения смогут получить ваши личные данные и отправить их другим пользователям."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"читать записи в вашей социальной ленте"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Приложение сможет считывать и синхронизировать новости от вас и ваших друзей. Вредоносные программы смогут получить доступ к вашим личным записям и записям ваших друзей в социальных сетях."</string>
@@ -412,15 +441,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"принудительно перезагружать телефон"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Приложение сможет принудительно перезагружать планшетный ПК."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Приложение сможет принудительно перезагружать телефон."</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"Доступ к файловой системе USB-накопителя"</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"Доступ к файловой системе SD-карты"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Приложение сможет подключать и удалять файловые системы для съемных накопителей."</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"Удаление данных с USB-накопителя"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"Удаление данных с SD-карты"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Приложение сможет форматировать съемный накопитель."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"получать сведения о внутреннем накопителе"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"Приложение сможет получать сведения о внутреннем хранилище."</string>
@@ -432,8 +457,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Приложение сможет подключать и отключать внутреннее хранилище."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"переименовывать внутренний накопитель"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"Приложение сможет переименовывать внутреннее хранилище."</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"Управление вибросигналом"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"Приложение сможет контролировать вибросигналы."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"управлять вспышкой"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"Приложение сможет контролировать вспышку."</string>
@@ -458,8 +482,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"Приложение сможет настраивать в системе возможность использования виджетов различными программами. Приложение с таким разрешением может предоставлять другим программам доступ к личным данным. Это разрешение не используется обычными приложениями."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"изменять состояние телефона"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Приложение сможет управлять на устройстве функциями телефона: переключать сети, включать и выключать приемопередатчик, а также выполнять другие подобные действия без уведомления."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"Получение данных о состоянии и идентификаторах телефона"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"Предоставляет приложению доступ к функциям телефона на устройстве. Приложение с таким разрешением может определить номер и серийный номер телефона, состояние активности вызова, номер, с которым установлено соединение, или получить другую подобную информацию."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"не разрешать переключение планшетного ПК в спящий режим"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"предотвращать переключение телефона в спящий режим"</string>
@@ -474,8 +497,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Выполнить стандартную проверку нижнего уровня, обеспечивающую полный доступ к аппаратному обеспечению телефона. Доступно, только в режиме стандартной проверки."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"устанавливать фоновый рисунок"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"Приложение сможет устанавливать системные обои."</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"Изменение размера обоев"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Приложение сможет устанавливать подсказки по размеру системных обоев."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"восстанавливать параметры системы по умолчанию, установленные на заводе-изготовителе"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"Приложение сможет выполнить полный сброс системы до заводских настроек, удалив все данные, параметры и установленные программы."</string>
@@ -487,21 +509,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Приложение сможет изменять часовой пояс в настройках устройства."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"выступать в качестве службы управления аккаунтом"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"Приложение сможет вызывать службы аутентификации аккаунта."</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"Поиск аккаунтов на устройстве"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Приложение сможет получать список аккаунтов, добавленных в планшетный ПК."</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Приложение сможет получать список аккаунтов, добавленных в телефон."</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"Создание аккаунтов и установка паролей"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Приложение сможет использовать возможности аутентификации диспетчера аккаунтов, в том числе создавать аккаунты, получать и устанавливать пароли для них."</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"Добавление или удаление аккаунтов"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"Приложение сможет добавлять и удалять аккаунты, а также стирать их пароли."</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"Использование аккаунтов на устройстве"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"Приложение сможет запрашивать токены аутентификации."</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"Просмотр сетевых подключений"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"Приложение сможет просматривать состояние всех сетей."</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"неограниченный доступ в Интернет"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Приложение сможет создавать сетевые сокеты."</string>
@@ -513,36 +530,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"Приложение сможет включать и выключать режим модема."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"изменять настройки использования данных в фоновом режиме"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Приложение сможет изменять настройки использования трафика в фоновом режиме."</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"Просмотр подключений Wi-Fi"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"Приложение сможет просматривать сведения о состоянии Wi-Fi."</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"Подключение к сети Wi-Fi и отключение от нее"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"Приложение сможет подключаться к точкам доступа Wi-Fi и отключаться от них, а также вносить изменения в конфигурацию сетей Wi-Fi."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"разрешить принимать многоадресный сигнал Wi-Fi"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Приложение сможет получать пакеты данных, не адресованные напрямую вашему устройству. Благодаря этому устройство может обнаруживать новые службы, которые доступны поблизости. Расход заряда батареи при использовании этой функции повышается."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"Доступ к настройкам Bluetooth"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Приложение сможет настраивать параметры локального планшетного ПК с поддержкой Bluetooth, а также обнаруживать удаленные устройства и выполнять сопряжение с ними."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Приложение сможет настраивать параметры локального телефона с поддержкой Bluetooth, а также обнаруживать удаленные устройства и выполнять сопряжение с ними."</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Просмотр подключений WiMAX"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Приложение сможет получать сведения о состоянии WiMAX."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"Изменять состояние WiMAX"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Приложение сможет подключаться к сети WiMAX и отключаться от нее."</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"Привязка к устройствам Bluetooth"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Приложение сможет просматривать конфигурацию локального планшетного ПК с поддержкой Bluetooth, а также создавать и принимать соединения с сопряженными устройствами."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Приложение сможет просматривать конфигурацию локального телефона с поддержкой Bluetooth, а также запрашивать и подтверждать соединение с другими устройствами."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"управлять радиосвязью ближнего действия"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Приложение сможет обмениваться данными с NFC-метками, картами и устройствами считывания, используя связь малого радиуса действия."</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"Отключение защиты экрана"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Приложение сможет отключать блокировку экрана и другие функции защиты. Пример допустимого использования этой функции – отключение блокировки экрана при получении входящего вызова и ее включение после завершения разговора."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"считывать настройки синхронизации"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Приложение сможет считывать настройки синхронизации, например сведения о том, включена ли синхронизация Контактов."</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"Включение и отключение синхронизации"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Приложение сможет изменять настройки синхронизации, например включать синхронизацию Контактов."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"считывать статистику синхронизации"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"Предоставляет приложению доступ к статистике синхронизации, например истории выполненных синхронизаций."</string>
@@ -550,22 +560,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Приложение сможет получать сведения о синхронизируемых в настоящее время фидах."</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"создавать фиды с возможностью подписки"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Приложение сможет изменять фиды, синхронизируемые в настоящее время. Вредоносные программы смогут изменять синхронизированные фиды."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"Просмотр добавленных в словарь терминов"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Приложение получит доступ ко всем словам, именам и фразам, которые хранятся в пользовательском словаре."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"запись данных в пользовательский словарь"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Приложение сможет добавлять слова в пользовательский словарь."</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"Считывание содержимого USB-накопителя"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"Считывание содержимого SD-карты"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Приложение сможет считывать содержимое USB-накопителя, включая фото и файлы мультимедиа."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Приложение сможет считывать содержимое SD-карты, включая фото и файлы мультимедиа."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"Изменение или удаление содержимого USB-накопителя"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Приложение сможет записывать данные на USB-накопитель."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Приложение сможет записывать данные на SD-карту."</string>
@@ -744,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"SIM-карта не установлена."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Вставьте SIM-карту."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM-карта отсутствует или недоступна. Вставьте SIM-карту."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"SIM-карта непригодна к использованию."</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"SIM-карта окончательно заблокирована."\n"Чтобы получить новую, обратитесь к своему оператору."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Кнопка перехода к предыдущему треку"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Кнопка перехода к следующему треку"</string>
@@ -819,15 +824,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"Округ"</string>
<string name="autofill_area" msgid="3547409050889952423">"Область"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"Эмират"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"Просмотр закладок и истории"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Приложение сможет считывать все URL, посещенные браузером, и все его закладки."</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"Запись закладок и истории"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Приложение сможет изменять историю или закладки браузера, сохраненные на устройстве. Вредоносные программы смогут таким образом удалять и изменять ваши данные в браузере."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Приложение может изменять историю или закладки браузера, сохраненные на устройстве. Вредоносные программы смогут таким образом удалять и изменять ваши данные в браузере."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"Установка будильника"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"Приложение сможет настраивать будильник. Функция поддерживается не во всех программах."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"добавлять голосовые сообщения"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"Приложение сможет добавлять голосовые сообщения в папку \"Входящие\"."</string>
@@ -1087,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Настройка даты"</string>
<string name="date_time_set" msgid="5777075614321087758">"Установить"</string>
<string name="date_time_done" msgid="2507683751759308828">"Готово"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"По умолчанию"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"НОВОЕ: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"НОВОЕ: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"Не требуется разрешений"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"Скрыть"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"Показать все"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"Запоминающее устройство USB"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"USB-подключение установлено"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"Устройство подключено к компьютеру через USB-порт. Нажмите кнопку ниже, чтобы скопировать файлы с компьютера на USB-накопитель Android-устройства."</string>
@@ -1320,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"Отправка..."</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"Запустить браузер?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"Ответить?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index 20d8292..fff419d 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"Vaše správy"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"Čítanie a písanie správ SMS, e-mailov a ďalších správ."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Vaše osobné informácie"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Priamy prístup k vašim kontaktom a kalendáru uloženým v tablete."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Priamy prístup k vašim kontaktom a kalendáru uloženým v telefóne."</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Priamy prístup k informáciám o vás uložených na vašej karte kontaktu."</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Vaše sociálne informácie"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Priamy prístup k informáciám o vašich kontaktoch a sociálnych prepojeniach."</string>
<string name="permgrouplab_location" msgid="635149742436692049">"Vaša poloha"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"Sledovanie vašej fyzickej polohy."</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"Sieťová komunikácia"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"Prístup k rôznym funkciám siete."</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Nastavenia zvuku"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Zmena nastavení zvuku."</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Má vplyv na batériu"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Používanie funkcií, ktoré môžu rýchlo vyčerpať batériu."</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"Kalendár"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Priamy prístup ku kalendáru a udalostiam."</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Záložky a história"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Priamy prístup k záložkám a histórii prehliadača."</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Budík"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Nastavenie budíka."</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Hlasová schránka"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Priamy prístup do hlasovej schránky."</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"Mikrofón"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Priamy prístup k mikrofónu na záznam zvuku."</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"Fotoaparát"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"Priamy prístup k fotoaparátu na nasnímanie fotografií alebo natočenie videí."</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Informácie o vašich aplikáciách"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Schopnosť ovplyvniť správanie ďalších aplikácií na vašom zariadení."</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Tapeta"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Zmena nastavení tapety zariadenia."</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"Hodiny"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Zmena času a časového pásma zariadenia."</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Stavový riadok"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Zmena nastavení stavového riadka zariadenia."</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Nastavenia synchronizácie"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Prístup do nastavení synchronizácie."</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"Vaše účty"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"Prístup k dostupným účtom."</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Ovládanie hardvéru"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Nízkoúrovňový prístup a ovládanie systému."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Nástroje pre vývoj"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Funkcie len pre vývojárov aplikácií."</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"Používateľské rozhranie iných aplikácií"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"Vplyv na používateľské rozhranie ďalších aplikácií."</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"Ukladací priestor"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Prístup do ukl. priestoru USB."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Prístup na kartu SD."</string>
@@ -193,14 +238,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"Umožňuje aplikácii fungovať ako stavový riadok."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"rozbalenie a zbalenie stavového riadka"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Umožňuje aplikácii rozbaliť alebo zbaliť stavový riadok."</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"presmerovať odchádzajúce hovory"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Umožňuje aplikácii spracovávať odchádzajúce hovory a zmeniť číslo, ktoré chcete vytočiť. Škodlivé aplikácie môžu sledovať, presmerovať alebo zablokovať odchádzajúce hovory."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"prijímať textové správy (SMS)"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"Umožňuje aplikácii prijímať a spracovávať správy SMS. Škodlivé aplikácie môžu sledovať vaše správy alebo ich odstrániť bez toho, aby ich zobrazili."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"prijímať textové správy (MMS)"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"Umožňuje aplikácii prijímať a spracovávať správy MMS. Škodlivé aplikácie môžu sledovať vaše správy alebo ich odstrániť bez toho, aby ich zobrazili."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"príjem núdzového vysielania"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Umožňuje aplikácii prijímať a spracovávať správy núdzového vysielania. Toto povolenie je k dispozícii len pre systémové aplikácie."</string>
@@ -210,16 +252,13 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"Umožňuje aplikácii odosielať správy SMS. Škodlivé aplikácie môžu bez vášho potvrdenia odosielať spoplatnené správy."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"posielať správy SMS bez potvrdenia"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Umožňuje aplikácii odosielať správy SMS. Škodlivé aplikácie môžu bez vášho potvrdenia odosielať spoplatnené správy."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"čítať textové správy (SMS alebo MMS)"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Umožňuje aplikácii čítať správy SMS uložené v tablete alebo na karte SIM. Škodlivé aplikácie môžu čítať vaše dôverné správy."</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Umožňuje aplikácii čítať správy SMS uložené v telefóne alebo na karte SIM. Škodlivé aplikácie môžu čítať vaše dôverné správy."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"upraviť textové správy (SMS alebo MMS)"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Umožňuje aplikácii písať správy SMS uložené v tablete alebo na karte SIM. Škodlivé aplikácie môžu vaše správy odstrániť."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Umožňuje aplikácii písať do správ SMS uložených v telefóne alebo na karte SIM. Škodlivé aplikácie môžu vaše správy odstrániť."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"prijímať textové správy (WAP)"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Umožňuje aplikácii prijímať a spracovávať správy WAP. Škodlivé aplikácie môžu sledovať vaše správy alebo ich odstrániť bez toho, aby ich zobrazili."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"načítať spustené aplikácie"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"Umožňuje aplikácii načítať informácie o aktuálnych a nedávno spustených úlohách. Škodlivé aplikácie môžu odhaliť súkromné informácie o iných aplikáciách."</string>
@@ -235,13 +274,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Umožňuje aplikácii ovládať režim kompatibility obrazovky v ostatných aplikáciách. Škodlivé aplikácie môžu narušiť správanie ostatných aplikácií."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"povoliť ladenie aplikácií"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"Umožňuje aplikácii zapnúť ladenie inej aplikácie. Škodlivé aplikácie môžu pomocou tohto nastavenia ukončiť iné aplikácie."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"zmeniť systémové nastavenia obrazovky"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Umožňuje aplikácii zmeniť aktuálnu konfiguráciu, napr. miestne nastavenie alebo celkovú veľkosť písma."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"aktivovať režim V aute"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"Umožňuje aplikácii povoliť režim V aute."</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"zavrieť iné aplikácie"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Umožňuje aplikácii ukončiť procesy na pozadí iných aplikácií (aj v prípade nedostatku pamäte)."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"vynútiť zastavenie ďalších aplikácií"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Umožňuje aplikácii vynútiť zastavenie iných aplikácií."</string>
@@ -265,8 +302,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Umožňuje aplikácii vysielať oznámenie, že správa WAP PUSH bola doručená. Škodlivé aplikácie môžu použiť toto nastavenie na vytvorenie potvrdenia o doručení správy MMS alebo na utajené nahradenie obsahu akejkoľvek stránky škodlivými variantmi."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"obmedzenie počtu spustených procesov"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Umožňuje aplikácii kontrolovať maximálny počet spustených procesov. Bežné aplikácie by toto nastavenie nemali nikdy potrebovať."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"vynútiť zavretie aplikácií na pozadí"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Umožňuje aplikácii ovládať, či sa aktivity po presune na pozadie vždy ukončia. Bežné aplikácie by toto nastavenie nemali nikdy potrebovať."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"zmena štatistických údajov o batérii"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"Umožňuje aplikácii zmeniť zhromaždené štatistické údaje o batérii. Bežné aplikácie toto nastavenie nepoužívajú."</string>
@@ -276,8 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Umožňuje aplikácii spustiť používateľské rozhranie potvrdenia úplnej zálohy. Toto nastavenie by nemala používať žiadna aplikácia."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"zobrazenie neoprávnených okien"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Umožňuje aplikácii vytvárať okná, ktoré majú byť použité interným systémom používateľského rozhrania. Bežné aplikácie toto nastavenie nepoužívajú."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"vykresliť cez ďalšie aplikácie"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Umožňuje aplikácii zobrazovať okná s upozorneniami systému. Škodlivé aplikácie môžu prevziať kontrolu nad celou obrazovkou."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"globálne zmeny rýchlosti animácie"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Umožňuje aplikácii kedykoľvek globálne zmeniť rýchlosť animácie (rýchlejšia alebo pomalšia animácia)."</string>
@@ -339,26 +374,22 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Umožňuje aplikácii povoliť alebo zakázať konkrétne povolenia pre seba alebo iné aplikácie. Škodlivé aplikácie môžu použiť túto možnosť na pristupovanie k funkciám, ktoré ste im nepovolili."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"nastaviť preferované aplikácie"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Umožňuje aplikácii zmeniť vaše preferované aplikácie. Škodlivé aplikácie môžu v tichosti zmeniť spustené aplikácie a oklamať existujúce aplikácie, aby zhromažďovali vaše súkromné údaje."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"upraviť nastavenia systému"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"Umožňuje aplikácii zmeniť údaje nastavení systému. Škodlivé aplikácie môžu poškodiť konfiguráciu vášho systému."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"zmeny zabezpečených nastavení systému"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Umožňuje aplikácii zmeniť údaje o bezpečnostných nastaveniach systému. Bežné aplikácie toto nastavenie nepoužívajú."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"zmeny mapy služieb Google"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"Umožňuje aplikácii upraviť mapu služieb Google. Bežné aplikácie toto nastavenie nepoužívajú."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"spustiť pri štarte"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Umožňuje aplikácii spustiť sa hneď po spustení systému. Toto nastavenie môže spomaliť spustenie tabletu a tiež jeho celkový výkon, pretože aplikácia bude neustále spustená."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Umožňuje aplikácii okamžité spustenie po spustení systému. Toto nastavenie môže spomaliť spustenie tabletu a tiež celkový výkon tabletu, pretože aplikácia bude neustále zapnutá."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"odoslanie trvalého vysielania"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Umožňuje aplikácii odosielať trvalé vysielania, ktoré pretrvávajú aj po skončení vysielania. Škodlivé aplikácie môžu tablet spomaliť alebo spôsobiť jeho nestabilitu, pretože bude používať príliš veľa pamäte."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Umožňuje aplikácii odosielať trvalé vysielania, ktoré pretrvávajú aj po skončení vysielania. Škodlivé aplikácie môžu telefón spomaliť alebo spôsobiť jeho nestabilitu spotrebou príliš veľkého množstva pamäte."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
+ <string name="permlab_readContacts" msgid="8348481131899886131">"čítať kontakty"</string>
<string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Umožňuje aplikácii čítať všetky údaje o kontaktoch uložených v tablete vrátane toho, ako často voláte, posielate e-maily alebo komunikujete inými spôsobmi s konkrétnymi osobami. Pomáha to pri automatickom dopĺňaní e-mailových adries a ďalších nápomocných funkciách. Škodlivé aplikácie môžu toto povolenie zneužiť na posielanie vašich kontaktných údajov iným ľuďom."</string>
<string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Umožňuje aplikácii čítať všetky údaje o kontaktoch uložených v telefóne vrátane toho, ako často voláte, posielate e-maily alebo komunikujete inými spôsobmi s konkrétnymi osobami. Pomáha to pri automatickom dopĺňaní e-mailových adries a ďalších nápomocných funkciách. Škodlivé aplikácie môžu toto povolenie zneužiť na posielanie vašich kontaktných údajov iným ľuďom."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"upraviť kontakty"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Umožňuje aplikácii upravovať všetky údaje o kontaktoch uložených v tablete vrátane toho, ako často voláte, posielate e-maily alebo komunikujete inými spôsobmi s konkrétnymi osobami. Pomáha to pri automatickom dopĺňaní e-mailových adries a ďalších nápomocných funkciách. Škodlivé aplikácie môžu toto povolenie zneužiť na posielanie vašich kontaktných údajov iným ľuďom."</string>
<string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Umožňuje aplikácii upravovať všetky údaje o kontaktoch uložených v telefóne vrátane toho, ako často voláte, posielate e-maily alebo komunikujete inými spôsobmi s konkrétnymi osobami. Pomáha to pri automatickom dopĺňaní e-mailových adries a ďalších nápomocných funkciách. Škodlivé aplikácie môžu toto povolenie zneužiť na posielanie vašich kontaktných údajov iným ľuďom."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"čítať denník hovorov"</string>
@@ -367,11 +398,9 @@
<string name="permlab_writeCallLog" msgid="8552045664743499354">"zapisovať do denníka hovorov"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Umožňuje aplikácii upravovať denník hovorov vo vašom tablete vrátane údajov o prichádzajúcich a odchádzajúcich hovoroch. Škodlivé aplikácie to môžu zneužiť na vymazanie alebo úpravu vášho denníka hovorov."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Umožňuje aplikácii upravovať denník hovorov vo vašom telefóne vrátane údajov o prichádzajúcich a odchádzajúcich hovoroch. Škodlivé aplikácie to môžu zneužiť na vymazanie alebo úpravu vášho denníka hovorov."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"čítať vlastnú kartu kontaktu"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Umožňuje aplikácii čítať informácie v osobnom profile uložené vo vašom zariadení, ako je vaše meno a kontaktné informácie. Znamená to, že ďalšie aplikácie vás môžu identifikovať a poslať ostatným informácie o vašom profile."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"upraviť vlastnú kartu kontaktu"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Umožňuje aplikácii zmeniť alebo pridať do osobného profilu informácie uložené vo vašom zariadení, ako je vaše meno a kontaktné informácie. Znamená to, že ďalšie aplikácie vás môžu identifikovať a poslať ostatným informácie o vašom profile."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"čítať váš sociálny stream"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Umožňuje aplikácii pristupovať k sociálnym aktualizáciám vašich priateľov a synchronizovať ich. Škodlivé aplikácie to môžu využiť na pristupovanie k súkromnej komunikácii medzi vami a vašimi priateľmi v sociálnych sieťach."</string>
@@ -412,15 +441,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"vynútenie reštartovania telefónu"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Umožňuje aplikácii vynútiť reštartovanie tabletu."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Umožňuje aplikácii vynútiť reštartovanie telefónu."</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"pristup. do systému súbor. USB"</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"pristupovať do systému súborov karty SD"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Umožňuje aplikácii pripojiť a odpojiť súborové systémy vo vymeniteľných ukladacích priestoroch."</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"vymazať ukladací priestor USB"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"vymazať kartu SD"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Umožňuje aplikácii formátovať vymeniteľný ukladací priestor."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"získať informácie o internom ukladacom priestore"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"Umožňuje aplikácii získať informácie o internom ukladacom priestore."</string>
@@ -432,8 +457,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Umožňuje aplikácii pripojiť alebo odpojiť interný ukladací priestor."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"premenovať interný ukladací priestor"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"Umožňuje aplikácii premenovať interný ukladací priestor."</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"ovládať vibrovanie"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"Umožňuje aplikácii ovládať vibrácie."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"ovládanie kontrolky"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"Umožňuje aplikácii ovládať svetlo."</string>
@@ -458,8 +482,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"Umožňuje aplikácii povedať systému, ktoré aplikácie môžu používať určité miniaplikácie. Aplikácia s týmto povolením môže iným aplikáciám povoliť prístup k osobným údajom. Bežné aplikácie toto nastavenie nepoužívajú."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"zmeny stavu telefónu"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Umožňuje aplikácii ovládať telefónne funkcie zariadenia. Aplikácia s týmto povolením môže prepínať siete alebo zapnúť a vypnúť rádio bez toho, aby vás na to upozornila."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"čítať stav a identitu telefónu"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"Umožňuje aplikácii pristupovať k telefónnym funkciám zariadenia. Aplikácia s týmto povolením môže určiť telefónne číslo a sériové číslo tohto telefónu. Okrem iného môže určiť aj to, či je hovor aktívny, a číslo, ku ktorému je hovor pripojený."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"zabránenie prechodu tabletu do režimu spánku"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"zabránenie prechodu telefónu do režimu spánku"</string>
@@ -474,8 +497,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Umožňuje aplikácii spustenie v režime nízkoúrovňového testu výrobcu a povolí úplný prístup k hardvéru telefónu. K dispozícii iba vtedy, keď je telefón spustený v režime testovania výrobcu."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"nastavenie tapety"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"Umožňuje aplikácii nastaviť tapetu systému."</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"upraviť veľkosť tapety"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Umožňuje aplikácii nastaviť tipy pre veľkosť tapety systému."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"obnovenie továrenských nastavení systému"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"Umožňuje aplikácii úplne obnoviť továrenské nastavenia systému a vymazať všetky údaje, konfiguráciu a nainštalované aplikácie."</string>
@@ -487,21 +509,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Umožňuje aplikácii zmeniť časové pásmo telefónu."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"rola služby AccountManagerService"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"Umožňuje aplikácii volať funkcie AccountAuthenticator."</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"nájsť účty na zariadení"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Umožňuje aplikácii získať zoznam účtov v tablete."</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Umožňuje aplikácii získať zoznam účtov v telefóne."</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"vytvoriť účty a nastaviť heslá"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Umožňuje aplikácii využiť možnosti overovania účtu aplikácie AccountManager vrátane vytvárania účtov a získavania a nastavovania ich hesiel."</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"pridať alebo odstrániť účty"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"Umožňuje aplikácii uskutočňovať operácie, ako je pridávanie alebo odstraňovanie účtov alebo odstraňovanie ich hesiel."</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"používať účty na zariadení"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"Umožňuje aplikácii vyžiadať overovacie tokeny."</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"zobraziť sieťové pripojenia"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"Umožňuje aplikácii zobraziť stav všetkých sietí."</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"úplný prístup na Internet"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Umožňuje aplikácii vytvárať sieťové zásuvky."</string>
@@ -513,36 +530,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"Umožňuje aplikácii zmeniť stav sieťového pripojenia zdieľaného pomocou tetheringu."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"zmeniť nastavenie použitia údajov na pozadí"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Umožňuje aplikácii zmeniť nastavenie používania údajov na pozadí."</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"zobraziť pripojenia siete Wi-Fi"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"Umožňuje aplikácii zobraziť informácie o stave siete Wi-Fi."</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"pripojiť a odpojiť od siete Wi-Fi"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"Umožňuje aplikácii pripojiť sa k prístupovým bodom Wi-Fi alebo sa od nich odpojiť a uskutočňovať zmeny nakonfigurovaných sietí Wi-Fi."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"Povoliť príjem viacsmerového vysielania Wi-Fi"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Umožňuje aplikácii prijímať pakety, ktoré neboli adresované priamo vášmu zariadeniu. Pomocou tejto možnosti môžete objaviť služby ponúkané vo vašej blízkosti. Spotreba energie je vyššia ako v režime bez viacsmerového vysielania."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"pristupovať k nastaveniam Bluetooth"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Umožňuje aplikácii konfigurovať miestny tablet s rozhraním Bluetooth a vyhľadávať a spárovať vzdialené zariadenia."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Umožňuje aplikácii konfigurovať miestny telefón s rozhraním Bluetooth, vyhľadávať a spárovať vzdialené zariadenia."</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Zobraziť pripojenia siete WiMAX"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Umožňuje aplikácii zobraziť informácie o stave siete WiMAX."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"Zmeniť stav siete WiMAX"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Umožňuje aplikácii pripojiť sa a odpojiť zo siete WiMAX."</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"párovať so zariadeniami Bluetooth"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Umožňuje aplikácii zobraziť konfiguráciu miestneho tabletu s rozhraním Bluetooth, vytvárať pripojenie na spárované zariadenia a prijímať tieto pripojenia."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Umožňuje aplikácii zobraziť konfiguráciu miestneho telefónu s rozhraním Bluetooth, vytvárať pripojenie so spárovanými zariadeniami a prijímať tieto pripojenia."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"ovládať technológiu Near Field Communication"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Umožňuje aplikácii komunikovať so značkami, kartami a čítačkami s podporou technológie Near Field Communication (NFC)."</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"zakázať uzamknutie obrazovky"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Umožňuje aplikácii zakázať uzamknutie klávesnice a súvisiace zabezpečenie heslom. Príkladom oprávneného použitia tejto funkcie je zakázanie uzamknutia klávesnice pri prichádzajúcom hovore a jej opätovné povolenie po skončení hovoru."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"čítanie nastavení synchronizácie"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Umožňuje aplikácii čítať nastavenia synchronizácie (napr. či má byť povolená synchronizácia aplikácie Ľudia)."</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"prepínať nastavenie synchronizácie medzi hodnotou zapnuté a vypnuté"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Umožňuje aplikácii zmeniť nastavenia synchronizácie (napr. či má byť povolená synchronizácia aplikácie Ľudia)."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"čítanie štatistických údajov o synchronizácii"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"Umožňuje aplikácii čítať štatistiky synchronizácie, napr. históriu uskutočnených synchronizácií."</string>
@@ -550,22 +560,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Umožňuje aplikácii získať podrobnosti o aktuálne synchronizovaných informačných kanáloch."</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"zápis odoberaných zdrojov"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Umožňuje aplikácii upraviť vaše aktuálne synchronizované informačné kanály. Škodlivé aplikácie môžu synchronizované informačné kanály zmeniť."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"čítať výrazy pridané do slovníka"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Umožňuje aplikácii čítať súkromné slová, názvy a frázy, ktoré mohol používateľ uložiť do slovníka používateľa."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"zapisovať do slovníka definovaného používateľom"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Umožňuje aplikácii zapisovať nové slová do používateľského slovníka."</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"čítať obsah úložiska USB"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"čítať obsah karty SD"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Umožňuje aplikácii čítať obsah úložiska USB, ktorý môže obsahovať fotografie a mediálne údaje."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Umožňuje aplikácii čítať obsah karty SD, ktorý môže zahrnovať fotografie a mediálne údaje."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"upraviť alebo odstrániť obsah úložiska USB"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Umožňuje aplikácii zápis do ukladacieho priestoru USB."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Umožňuje aplikácii zápis na kartu SD."</string>
@@ -744,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"V telefóne nie je žiadna karta SIM."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Vložte kartu SIM."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"Karta SIM chýba alebo sa z nej nedá čítať. Vložte kartu SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"Karta SIM je nepoužiteľná."</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Vaša karta SIM bola natrvalo zakázaná."\n"Ak chcete získať inú kartu SIM, kontaktujte svojho operátora."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Tlačidlo Predchádzajúca stopa"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Tlačidlo Ďalšia stopa"</string>
@@ -819,15 +824,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"Farnosť"</string>
<string name="autofill_area" msgid="3547409050889952423">"Oblasť"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"Emirát"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"čítať webové záložky a históriu"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Umožňuje aplikácii čítať všetky záložky a adresy URL navštívené prehliadačom."</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"zapisovať webové záložky a históriu"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Umožňuje aplikácii zmeniť históriu prehliadača alebo záložky uložené v tablete. Škodlivé aplikácie môžu pomocou tohto nastavenia vymazať alebo zmeniť údaje vo vašom prehliadači."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Umožňuje aplikácii zmeniť históriu prehliadača alebo záložky uložené v telefóne. Škodlivé aplikácie môžu pomocou tohto nastavenia vymazať alebo zmeniť údaje vo vašom prehliadači."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"nastaviť budík"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"Umožňuje aplikácii nastaviť budík v nainštalovanej aplikácii budík. Niektoré aplikácie budíka nemusia túto funkciu implementovať."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"pridať hlasovú schránku"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"Umožní aplikácii pridávať správy do doručenej pošty hlasovej schránky."</string>
@@ -1087,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Nastaviť dátum"</string>
<string name="date_time_set" msgid="5777075614321087758">"Nastaviť"</string>
<string name="date_time_done" msgid="2507683751759308828">"Hotovo"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"Predvolené"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NOVINKA: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NOVINKA: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"Nevyžadujú sa žiadne oprávnenia."</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"Skryť"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"Zobraziť všetky"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"Veľkokapacitné úložisko USB"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"Zariadenie USB pripojené"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"Zariadenie ste pripojili k počítaču pomocou portu USB. Ak chcete kopírovať súbory z počítača do ukladacieho priestoru USB v zariadení so systémom Android alebo naopak, dotknite sa tlačidla nižšie."</string>
@@ -1320,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"Odosielanie..."</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"Spustiť prehliadač?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"Prijať hovor?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index 392b8b1..df0ddea 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"Vaša sporočila"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"Pisanje in branje SMS-ov, e-pošte in drugih sporočil."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Osebni podatki"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Neposreden dostop do stikov in koledarskih vnosov, shranjenih v tabličnem računalniku."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Neposreden dostop do stikov in koledarja, shranjenega v telefonu."</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Neposreden dostop do podatkov o vas, shranjenih v vizitki."</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Podatki v družabnih omrežjih"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Neposreden dostop do podatkov o stikih in družabnih povezav."</string>
<string name="permgrouplab_location" msgid="635149742436692049">"Vaša lokacija"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"Spremljanje fizične lokacije."</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"Omrežna komunikacija"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"Dostop do različnih funkcij omrežja."</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Nastavitve zvoka"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Spreminjanje nastavitev zvoka."</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Vpliv na baterijo"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Uporaba funkcij, ki lahko hitro izpraznijo baterijo."</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"Google Koledar"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Neposreden dostop do koledarja in dogodkov."</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Zaznamki in zgodovina"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Neposreden dostop do zaznamkov in zgodovine brskalnika."</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Alarm"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Nastavitev budilke."</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Odzivnik"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Neposreden dostop do odzivnika."</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"Mikrofon"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Neposreden dostop do mikrofona za snemanje zvoka."</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"Fotoaparat"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"Neposreden dostop do fotoaparata za fotografiranje ali snemanje videoposnetkov."</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Podatki o vaših aplikacijah"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Zmožnost vpliva na delovanje drugih aplikacij v napravi."</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Slika za ozadje"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Spreminjanje nastavitev slike za ozadje."</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"Ura"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Sprememba časa ali časovnega pasu naprave."</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Vrstica stanja"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Spreminjanje nastavitev vrstice stanja naprave."</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Nastavitve sinhronizacije"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Dostop do sinhronizacijskih nastavitev."</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"Vaši računi"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"Dostop do razpoložljivih računov."</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Kontrolniki strojne opreme"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Dostop nižje ravni in nadzor sistema."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Razvojna orodja"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Funkcije, ki jih potrebujejo le razvijalci programa."</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"Uporabniški vmesnik druge aplikacije"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"Vpliv na uporabniški vmesnik drugih aplikacij."</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"Prostor za shranjevanje"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Dostop do pomnilnika USB."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Dostop do kartice SD."</string>
@@ -193,14 +238,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"Programu omogoča, da postane vrstica stanja."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"razširjanje/strnjevanje vrstice stanja"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Programu omogoča razširjanje ali strnjevanje vrstice stanja."</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"preusmeritev odhodnih klicev"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Programu omogoča obdelavo odhodnih klicev in spreminjanje klicne številke. Zlonamerni programi lahko nadzirajo, preusmerijo ali preprečijo odhodne klice."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"prejemanje sporočil (SMS)"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"Programu omogoča prejemanje in obdelavo SMS-ov. Zlonamerni programi lahko nadzirajo sporočila ali jih brišejo, ne da bi vam jih pokazali."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"prejemanje sporočil (MMS)"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"Programu omogoča prejemanje in obdelavo sporočil MMS. Zlonamerni programi lahko nadzirajo sporočila ali jih brišejo, ne da bi vam jih pokazali."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"prejemanje oddaj v sili"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Programu omogoča prejemanje in obdelavo sporočil za oddajanje v sili. To dovoljenje je na voljo samo sistemskim programom."</string>
@@ -210,16 +252,13 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"Programu omogoča pošiljanje SMS-ov. Zlonamerni programi lahko pošiljajo sporočila brez vaše potrditve, kar vas lahko drago stane."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"pošiljanje SMS-ov brez potrditve"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Programu omogoča pošiljanje sporočil SMS. Zlonamerni programi lahko pošiljajo sporočila brez vaše potrditve, kar vas lahko drago stane."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"branje sporočil (SMS ali MMS)"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Programu omogoča branje SMS-ov, shranjenih v tabličnem računalniku ali na kartici SIM. Zlonamerni programi lahko berejo vaša zaupna sporočila."</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Programu omogoča branje SMS-ov, shranjenih v telefonu ali na kartici SIM. Zlonamerni programi lahko berejo vaša zaupna sporočila."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"urejanje sporočil (SMS ali MMS)"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Programu omogoča zapisovanje v sporočila SMS, shranjena v tabličnem računalniku ali na kartici SIM. Zlonamerni programi lahko izbrišejo vaša sporočila."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Programu omogoča zapisovanje v sporočila SMS, shranjena v telefonu ali na kartici SIM. Zlonamerni programi lahko izbrišejo vaša sporočila."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"prejemanje sporočil (WAP)"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Programu omogoča prejemanje in obdelavo sporočil WAP. Zlonamerni programi lahko nadzirajo sporočila ali jih brišejo, ne da bi vam jih pokazali."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"dobivanje programov, ki se izvajajo"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"Programu omogoča dobivanje informacij o trenutnih in nedavno izvajajočih se opravilih. Zlonamerni programi lahko odkrijejo zasebne podatke o drugih programih."</string>
@@ -235,13 +274,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Programu omogoča nadzor združljivostnega načina zaslona drugih programov. Zlonamerni programi lahko prekinejo delovanje drugih programov."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"omogočanje iskanja in odpravljanja napak v programu"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"Programu omogoča vklop funkcije za odpravljanje napak za drug program. Zlonamerni programi lahko to uporabijo za zapiranje drugih programov."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"spreminjanje sistemskih nastavitev prikaza"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Programu omogoča spreminjanje trenutne konfiguracije, kot so na primer območne nastavitve ali splošna velikost pisave."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"omogočanje načina delovanja v avtomobilu"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"Programu dovoljuje omogočanje načina za avto."</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"zapiranje drugih aplikacij"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Programu omogoča zaustavitev postopkov v ozadju drugih programov, tudi če je na voljo dovolj pomnilnika."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"vsiljena zaustavitev drugih programov"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Omogoča, da program na silo zaustavi druge programe."</string>
@@ -265,8 +302,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Programu omogoča oddajo obvestila, da je bilo potisno sporočilo WAP prejeto. Zlonamerni programi lahko to uporabijo za ponarejanje potrdila o prejemu sporočila MMS ali za neopazno menjavo vsebine poljubne spletne strani z zlonamernimi različicami."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"omejevanje števila izvajajočih se procesov"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Programu omogoča nadzor največjega števila postopkov, ki se bodo izvajali. Tega nikoli ni treba uporabiti za navadne programe."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"vsiljeno zapiranje aplikacij v ozadju"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Programu omogoča, da nadzoruje, ali so dejavnosti zaključene takoj, ko so premaknjene v ozadje. Tega ni treba nikoli uporabiti za navadne programe."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"spreminjanje statističnih podatkov o bateriji"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"Programu omogoča spreminjanje zbranih statističnih podatkov o bateriji. Ni za uporabo z navadnimi programi."</string>
@@ -276,8 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Programu omogoča zagon uporabniškega vmesnika za potrditev popolnega varnostnega kopiranja. Ni za uporabo s programi."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"prikazovanje nepooblaščenih oken"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Programu omogoča ustvarjanje oken, ki jih bo uporabljal uporabniški vmesnik notranjega sistema. Ni za uporabo z navadnimi programi."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"prekrivanje drugih aplikacij"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Programu omogoča prikaz oken s sistemskimi opozorili. Zlonamerni programi lahko zavzamejo celoten zaslon."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"spreminjanje splošne hitrosti animacij"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Programu omogoča, da kadar koli spremeni splošno hitrost animacije (hitrejše ali počasnejše animacije)."</string>
@@ -339,26 +374,22 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Aplikaciji omogoča dodeljevanje ali preklic posebnih dovoljenj zanjo ali za druge aplikacije. Zlonamerne aplikacije lahko to uporabijo za dostop do funkcij, za katere jim niste dodelili pravic."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"nastavitev prednostnih programov"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Programu omogoča spreminjanje priljubljenih programov. Zlonamerni programi lahko s tem neopazno spremenijo programe, ki se izvajajo, tako da se izdajajo za obstoječe programe in zbirajo osebne podatke."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"spreminjanje sistemskih nastavitev"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"Programu omogoča spreminjanje podatkov nastavitev sistema. Zlonamerni programi lahko poškodujejo konfiguracijo sistema."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"spreminjanje varnih sistemskih nastavitev"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Programu omogoča spreminjanje podatkov varnostnih nastavitev sistema. Ni za uporabo z navadnimi programi."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"spreminjanje zemljevidov Googlovih storitev"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"Programu omogoča spreminjanje zemljevidov Googlovih storitev. Ni za uporabo z navadnimi programi."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"izvedba ob zagonu"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Programu omogoča, da se samodejno zažene po zagonu sistema. To lahko povzroči daljši zagon tabličnega računalnika in programu omogoči, da s stalnim izvajanjem upočasni delovanje tabličnega računalnika."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Programu omogoča, da se zažene takoj, ko sistem dokonča zagon. Zato lahko zagon telefona traja nekoliko dlje, program pa lahko upočasni splošno delovanje telefona, ker se vedno izvaja."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"pošiljanje fiksne oddaje"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Programu omogoča hitro pošiljanje fiksnih oddaj, ki ostanejo po koncu oddajanja. Zaradi zlonamernih programov je lahko delovanje tabličnega računalnika počasno ali nestabilno ali tablični računalnik zaradi njih porabi preveč pomnilnika."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Programu omogoča hitro pošiljanje fiksnih oddaj, ki ostanejo po koncu oddajanja. Zaradi zlonamernih programov je delovanje telefona lahko počasno ali nestabilno ali tablični računalnik zaradi njih porabi preveč pomnilnika."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
+ <string name="permlab_readContacts" msgid="8348481131899886131">"branje stikov"</string>
<string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Aplikaciji omogoča branje vseh podatkov o stikih, shranjenih v tabličnem računalniku, vključno s podatki o pogostosti klicev, e-poštnih sporočil ali drugih komunikacij s posameznimi osebami. To izboljša samodokončanje e-poštnih naslovov in druge priročne funkcije. Zlonamerne aplikacije lahko izrabijo to dovoljenje za pošiljanje podatkov o stikih drugim ljudem."</string>
<string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Aplikaciji omogoča branje vseh podatkov o stikih, shranjenih v telefonu, vključno s podatki o pogostosti klicev, e-poštnih sporočil ali drugih komunikacij s posameznimi osebami. To izboljša samodokončanje e-poštnih naslovov in druge priročne funkcije. Zlonamerne aplikacije lahko izrabijo to dovoljenje za pošiljanje podatkov o stikih drugim ljudem."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"spreminjanje stikov"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Aplikaciji omogoča spreminjanje podatkov o stikih, shranjenih v tabličnem računalniku, vključno s podatki o pogostosti klicev, e-poštnih sporočil ali drugih komunikacij s posameznimi osebami. To izboljša samodokončanje e-poštnih naslovov in druge priročne funkcije. Zlonamerne aplikacije lahko izrabijo to dovoljenje za brisanje ali spreminjanje podatkov o stikih."</string>
<string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Aplikaciji omogoča spreminjanje podatkov o stikih, shranjenih v telefonu, vključno s podatki o pogostosti klicev, e-poštnih sporočil ali drugih komunikacij s posameznimi osebami. To izboljša samodokončanje e-poštnih naslovov in druge priročne funkcije. Zlonamerne aplikacije lahko izrabijo to dovoljenje za brisanje ali spreminjanje podatkov o stikih."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"branje dnevnika klicev"</string>
@@ -367,11 +398,9 @@
<string name="permlab_writeCallLog" msgid="8552045664743499354">"pisanje v dnevnik klicev"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Aplikaciji dovoli spreminjanje dnevnika klicev v tabličnem računalniku, vključno s podatki o dohodnih in odhodnih klicih. Zlonamerne aplikacije lahko tako izbrišejo ali spreminjajo vaš dnevnik klicev."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Aplikaciji dovoli spreminjanje dnevnika klicev v telefonu, vključno s podatki o dohodnih in odhodnih klicih. Zlonamerne aplikacije lahko tako izbrišejo ali spreminjajo vaš dnevnik klicev."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"branje vaše osebne vizitke"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Programu omogoča branje osebnih podatkov v profilu, kot so ime in podatki za stik. To pomeni, da vas lahko program prepozna in vaše podatke o profilu pošlje drugim."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"spreminj. vaše osebne vizitke"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Programu omogoča spreminjanje ali dodajanje osebnih podatkov v profilu, kot so ime in podatki za stik. To pomeni, da vas lahko drugi programi prepoznajo in vaše podatke o profilu pošljejo drugim."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"preberite svoj družabni tok"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Programu omogoča dostop do družabnih posodobitev vas in vaših prijateljev. Zlonamerni programi lahko to uporabijo za branje zasebne komunikacije med vami in prijatelji v družabnih omrežjih."</string>
@@ -412,15 +441,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"vsiljevanje vnovičnega zagona telefona"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Programu omogoča, da vsili vnovični zagon tabličnega računalnika."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Dovoljuje, da program vsili vnovični zagon telefona."</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"dostop do dat. sist. pomn. USB"</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"dostop do datotečnega sistema kartice SD"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Programu omogoča vpenjanje in izpenjanje datotečnih sistemov za izmenljive pomnilnike."</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"brisanje pomnilnika USB"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"brisanje kartice SD"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Programu omogoča formatiranje shrambe za izmenljive medije."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"informacije o notranjem pomnilniku"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"Programu omogoča dobivanje podatkov o notranjem pomnilniku."</string>
@@ -432,8 +457,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Programu omogoča vpenjanje in izpenjanje notranjega pomnilnika."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"preimenovanje notranje shrambe"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"Programu omogoča preimenovanje notranjega pomnilnika."</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"nadzor vibriranja"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"Programu omogoča nadzor vibriranja."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"nadzor svetilke"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"Programu omogoča nadzor svetilke."</string>
@@ -458,8 +482,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"Programu omogoča, da sistemu ukaže, katere pripomočke je mogoče uporabiti s katerim programom. S tem dovoljenjem lahko programi drugim programom dajo dostop do osebnih podatkov. Ni za uporabo z navadnimi programi."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"spreminjanje stanja telefona"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Programu omogoča nadziranje telefonskih funkcij naprave. Program lahko s tem dovoljenjem preklaplja omrežja, vklopi ali izklopi radio v telefonu, ne da bi vas obvestil."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"branje stanja in identitete telefona"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"Programu omogoča dostop do funkcij telefona v napravi. Program lahko s tem dovoljenjem določi telefonsko številko in serijsko številko tega telefona, določi lahko tudi, ali je klic aktiven, številko, s katero je klic povezan, in podobno."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"preprečitev prehoda tabličnega računalnika v stanje pripravljenosti"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"preprečevanje prehoda v stanje pripravljenosti telefona"</string>
@@ -474,8 +497,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Se izvaja kot preskus izdelovalca nizke ravni, ki dovoljuje popoln dostop do strojne opreme telefona. Na voljo le, ko se telefon izvaja v načinu preskusa izdelovalca."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"nastavljanje ozadja"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"Programu omogoča nastavitev ozadja sistema."</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"prilagajanje velikosti slike za ozadje"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Programu omogoča nastavitev namigov o velikosti ozadja sistema."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"ponastavitev sistema na privzete tovarniške nastavitve"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"Programu omogoča, da v celoti ponastavi sistema na tovarniške nastavitve, izbriše vse podatke, konfiguracijo in nameščene programe."</string>
@@ -487,21 +509,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Programu omogoča spreminjanje časovnega pasu v telefonu."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"opravljanje vloge AccountManagerService"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"Programu omogoča, da pokliče overovitelje računa."</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"iskanje računov v napravi"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Programu omogoča dobivanje seznama računov, ki jih pozna tablični računalnik."</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Programu omogoča dobivanje seznama računov, ki jih pozna telefon."</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"ustvarjanje računov in nastavitev gesel"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Programu omogoča uporabo zmožnosti overovitelja računa storitve AccountManager, vključno z ustvarjanjem računov ter s pridobivanjem in nastavljanjem njihovih gesel."</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"dodajanje ali odstranjevanje računov"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"Programu omogoča izvajanje operacij, kot je dodajanje in odstranjevanje računov ter brisanje njihovih gesel."</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"uporaba računov v napravi"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"Programu omogoča, da zahteva žetone za preverjanje pristnosti."</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"prikaz omrežnih povezav"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"Programu omogoča ogled stanja vseh omrežij."</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"poln dostop do interneta"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Omogoča, da program ustvari vtičnice omrežja."</string>
@@ -513,36 +530,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"Programu dovoljuje spreminjanje stanja povezljivosti posredniškega omrežja."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"spreminjanje nastavitev porabe podatkov ozadja"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Programu omogoča spreminjanje nastavitev uporabe podatkov ozadja."</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"prikaz povezav Wi-Fi"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"Programu omogoča ogled podatkov o stanju omrežja Wi-Fi."</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"vzpostavitev povezave z omrežjem Wi-Fi in prekinitev povezave z njim"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"Programu omogola vzpostavljanje povezave z dostopnimi točkami omrežja Wi-Fi in prekinitev povezave z njimi ter spreminjanje nastavljenih omrežij Wi-Fi."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"dovoljevanje sprejema večvrstnega brezžičnega oddajanja"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Programu omogoča prejemanje paketov, ki niso naslovljeni neposredno na vašo napravo. To je lahko uporabno, ko odkrivate storitve, ki so dane na voljo v bližini. Poraba je večja od načina delovanja brez večvrstnega oddajanja."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"dostop do nastavitev Bluetooth"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Programu omogoča konfiguriranje lokalnega tabličnega računalnika Bluetooth ter zaznavanje oddaljenih naprav in združevanje z njimi."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Programu omogoča konfiguriranje lokalnega telefona s tehnologijo Bluetooth ter odkrivanje oddaljenih naprav in povezovanje z njimi."</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Prikaz povezav WiMAX"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Programu omogoča, da prikaže informacije o stanju omrežja WiMAX."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"Sprememba stanja omrežja WiMAX"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Programu omogoča, da vzpostavi povezavo z omrežjem WiMAX in jo prekine."</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"seznanitev z napravami Bluetooth"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Programu omogoča ogled konfiguracije lokalnega tabličnega računalnika Bluetooth ter vzpostavljanje in sprejemanje povezave z združenimi napravami."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Programom omogoča ogled konfiguracije lokalnega telefona Bluetooth ter ustvarjanje in sprejemanje povezave s povezanimi napravami."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"nadzor nad komunikacijo s tehnologijo bližnjega polja"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Podpira komunikacijo med računalnikom in oznakami, karticami in bralniki komunikacije s tehnologijo bližnjega polja."</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"onemogočanje zaklepanja zaslona"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Programu omogoča, da onemogoči zaklep tipk in morebitno povezano varnostno geslo. Legitimen primer je onemogočenje zaklepa tipkovnice pri dohodnem klicu ter vnovičnem omogočanju zaklepa, ko je klic dokončan."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"branje nastavitev sinhronizacije"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Programu omogoča branje nastavitev sinhronizacije, na primer nastavitev, ali je sinhronizacija omogočena za program Ljudje."</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"vklop in izklop sinhronizacije"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Programu omogoča spremembo nastavitev sinhronizacije, na primer nastavitev, ali je sinhronizacija omogočena za program Ljudje."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"branje statističnih podatkov sinhronizacije"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"Programu omogoča branje statističnih podatkov o sinhronizaciji, na primer o zgodovini sinhronizacij, ki so bile izvedene."</string>
@@ -550,22 +560,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Programu omogoča dobivanje podrobnosti o trenutno sinhroniziranih virih."</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"pisanje naročenih virov"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Programu omogoča spreminjanje trenutno sinhroniziranih virov. Zlonamerni programi lahko s tem spremenijo sinhronizirane vire."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"branje izrazov, ki ste jih dodali v slovar"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Programu omogoča branje morebitnih zasebnih besed, imen in izrazov, ki jih je uporabnik shranil v uporabniški slovar."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"pisanje v uporabniško določen slovar"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Programu omogoča pisanje nove besede v uporabniški slovar."</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"branje vsebine pomnilnika USB"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"branje vsebine kartice SD"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Apl. om. br. USB s fot. in pr."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Omogoča, da aplikacija bere vsebino kartice SD, ki lahko vključuje fotografije in predstavnost."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"spr. ali bris. vseb. pomn. USB"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Programu omogoča zapisovanje v pomnilnik USB."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Programu omogoča pisanje na kartico SD."</string>
@@ -744,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"V telefonu ni kartice SIM."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Vstavite kartico SIM."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"Ni kartice SIM ali je ni mogoče prebrati. Vstavite kartico SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"Neuporabna kartica SIM."</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Kartica SIM je trajno onemogočena."\n" Če želite dobiti drugo kartico SIM, se obrnite na ponudnika brezžičnih storitev."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Gumb za prejšnjo skladbo"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Gumb za naslednjo skladbo"</string>
@@ -819,15 +824,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"Župnija"</string>
<string name="autofill_area" msgid="3547409050889952423">"Območje"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"Emirat"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"branje spletnih zaznamkov in zgodovine"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Programu omogoča branje vseh spletnih naslovov, ki jih je brskalnik obiskal, in vseh zaznamkov brskalnika."</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"zapisovanje spletnih zaznamkov in zgodovine"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Programu omogoča spreminjanje zgodovine ali zaznamkov brskalnika v tabličnem računalniku. Zlonamerni programi lahko izbrišejo ali spremenijo podatke v brskalniku."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Programu omogoča spreminjanje zgodovine ali zaznamkov brskalnika v telefonu. Zlonamerni programi lahko izbrišejo ali spremenijo podatke v brskalniku."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"nastavitev alarma"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"Programu omogoča nastavitev alarma v nameščenem programu budilke. Nekateri programi budilke morda nimajo te funkcije."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"dodajanje odzivnika"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"Programu omogoča dodajanje sporočil prejetim sporočilom odzivnika."</string>
@@ -1087,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Nastavi datum"</string>
<string name="date_time_set" msgid="5777075614321087758">"Nastavi"</string>
<string name="date_time_done" msgid="2507683751759308828">"Končano"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"Privzeto"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NOVO: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NOVO: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"Ni zahtevanih dovoljenj"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"Skrij"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"Pokaži vse"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"Masovni pomnilnik USB"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"Povezava USB je vzpostavljena"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"Z računalnikom ste vzpostavili povezavo z USB-jem. Dotaknite se spodnjega gumba, če želite kopirati datoteke med računalnikom in pomnilnikom USB v Androidu."</string>
@@ -1320,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"Pošiljanje ..."</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"Ali želite odpreti brskalnik?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"Ali želite sprejeti klic?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index f9a791a..5573607 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"Поруке"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"Читање и писање SMS порука, порука е-поште и осталих порука."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Личне информације"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Директни приступ контактима и календарима сачуваним на таблету."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Директни приступ контактима и календару сачуваним на телефону."</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Директан приступ информацијама о вама, ускладиштеним на контакт картици."</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Информације са друштвених мрежа"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Директан приступ информацијама о контактима и друштвеним везама."</string>
<string name="permgrouplab_location" msgid="635149742436692049">"Локација"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"Надгледајте своју физичку локацију."</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"Комуникација преко мреже"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"Приступајте разним функцијама мреже."</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Аудио подешавања"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Промена аудио подешавања."</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Утицај на батерију"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Коришћење функција које могу брзо да истроше батерију."</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"Календар"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Директан приступ календару и догађајима."</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Обележивачи и историја"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Директан приступ обележивачима и историји прегледача."</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Аларм"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Подешавање будилника."</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Говорна пошта"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Директан приступ говорној пошти."</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"Микрофон"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Директан приступ микрофону за снимање звука."</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"Камера"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"Директан приступ камери за снимање слика или видео снимака."</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Информације о апликацијама"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Способност да се утиче на понашање других апликација на уређају."</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Позадина"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Промена подешавања позадине уређаја."</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"Сат"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Промена времена или временске зоне уређаја."</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Статусна трака"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Промена подешавања статусне траке уређаја."</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Подешавања синхронизације"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Приступ подешавањима синхронизације."</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"Налози"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"Приступ доступним налозима."</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Контроле хардвера"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Нижи нивои приступа и контроле система."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Алатке за програмирање"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Функције потребне само програмерима апликација."</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"Кориснички интерфејс других апликација"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"Утицај на кориснички интерфејс других апликација."</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"Складиште"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Приступите USB меморији."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Приступ SD картици."</string>
@@ -193,14 +238,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"Дозвољава апликацији да функционише као статусна трака."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"проширење/скупљање статусне траке"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Дозвољава апликацији да проширује или скупља статусну траку."</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"преусмеравање одлазних позива"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Дозвољава апликацији да пресретне одлазне позиве и промени број који се бира. Злонамерне апликације могу да надгледају, преусмеравају или блокирају одлазне позиве."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"пријем текстуалних порука (SMS)"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"Дозвољава апликацији да прима и обрађује SMS поруке. Злонамерне апликације могу да надгледају поруке или да их бришу, а да вам их не прикажу."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"пријем текстуалних порука (MMS)"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"Дозвољава апликацији да прима и обрађује MMS поруке. Злонамерне апликације могу да надгледају поруке или да их бришу, а да вам их не прикажу."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"пријем хитних преноса"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Дозвољава апликацији да прима и обрађује поруке хитног преноса. Ова дозвола је доступна само за системске апликације."</string>
@@ -210,16 +252,13 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"Дозвољава апликацији да шаље SMS поруке. Злонамерне апликације могу да шаљу поруке без ваше потврде, што вам може изазвати трошкове."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"слање SMS порука без потврде"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Дозвољава апликацији да шаље SMS поруке. Злонамерне апликације могу да шаљу поруке без ваше потврде, што вам може изазвати трошкове."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"читање текстуалних порука (SMS или MMS)"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Дозвољава апликацији да чита SMS поруке сачуване на таблету или SIM картици. Злонамерне апликације могу да читају поверљиве поруке."</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Дозвољава апликацији да чита SMS поруке сачуване на телефону или SIM картици. Злонамерне апликације могу да читају поверљиве поруке."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"измена текстуалних порука (SMS или MMS)"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Дозвољава апликацији да уписује податке у SMS поруке сачуване на таблету или SIM картици. Злонамерне апликације могу да избришу поруке."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Дозвољава апликацији да уписује податке у SMS поруке сачуване на телефону или SIM картици. Злонамерне апликације могу да избришу поруке."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"пријем текстуалних порука (WAP)"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Дозвољава апликацији да прима и обрађује WAP поруке. Злонамерне апликације могу да надгледају поруке или да их бришу, а да вам их не прикажу."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"преузимање покренутих апликација"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"Дозвољава апликацији да преузима информације о актуелним и недавно покренутим задацима. Злонамерне апликације могу да открију приватне информације о другим апликацијама."</string>
@@ -235,13 +274,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Дозвољава апликацији да контролише режим компатибилности екрана других апликација. Злонамерне апликације могу да угрозе понашање других апликација."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"омогућавање отклањања грешака у апликацији"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"Дозвољава апликацији да укључи уклањање грешака за другу апликацију. Злонамерне апликације могу то да искористе за онемогућавање других апликација."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"промена системских подешавања приказа"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Дозвољава апликацији да промени тренутну конфигурацију, као што је локалитет или општа величина фонта."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"омогућавање режима рада у аутомобилу"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"Дозвољава апликацији да омогући режим рада у аутомобилу."</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"затварање других апликација"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Дозвољава апликацији да заустави позадинске процесе других апликација, чак и када постоји довољно слободне меморије."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"принудно заустављање других апликација"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Дозвољава апликацији да принудно заустави друге апликације."</string>
@@ -265,8 +302,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Дозвољава апликацији да емитује обавештење да је примљена PUSH порука преко WAP-а. Злонамерне апликације то могу да искористе да фалсификују пријем MMS порука или да кришом замене садржај било које веб странице уносом злонамерног садржаја."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"ограничење броја покренутих процеса"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Дозвољава апликацији да управља максималним бројем процеса који ће моћи да се покрену. Никада није потребна уобичајеним апликацијама."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"принудно затварање позадинских апликација"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Дозвољава апликацији да управља тиме да ли ће се активности увек окончати чим пређу у позадину. Уобичајене апликације је никада не користе."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"измена статистике о батерији"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"Дозвољава апликацији да измени прикупљену статистику о батерији. Не користе је уобичајене апликације."</string>
@@ -276,8 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Дозвољава апликацији да покреће кориснички интерфејс за потврду прављења комплетне резервне копије. Ово не треба да користи ниједна апликација."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"приказ неовлашћених прозора"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Дозвољава апликацији да прави прозоре које ће користити кориснички интерфејс интерног система. Не користе је уобичајене апликације."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"превлачење преко других апликација"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Дозвољава апликацији да прикаже прозоре са системским упозорењима. Злонамерне апликације на тај начин могу да преузму цео екран."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"измена глобалне брзине анимација"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Дозвољава апликацији да у сваком тренутку промени глобалну брзину анимација (брже или спорије анимације)."</string>
@@ -339,26 +374,22 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Омогућава апликацији да додели или опозове посебне дозволе за њу или друге апликације. Злонамерне апликације могу то да користе да би приступале функцијама које им нисте одобрили."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"подешавање жељених апликација"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Дозвољава апликацији да мења омиљене апликације. Злонамерне апликације могу без обавештења да промене апликације које су покренуте и да преко њих прикупљају ваше приватне податке."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"измена подешавања система"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"Дозвољава апликацији да мења податке о подешавању система. Злонамерне апликације могу да оштете конфигурацију система."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"измена безбедносних подешавања система"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Дозвољава апликацији да измени системске податке за безбедносна подешавања. Уобичајене апликације је не користе."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"измена мапе Google услуга"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"Дозвољава апликацији да измени мапу Google услуга. Не користе је уобичајене апликације."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"покретање при покретању система"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Омогућава да се апликација покрене одмах након покретања система. То може да успори покретање таблета, при чему ова апликација може да успори функционисање целог таблета тиме што ће увек бити активна."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Омогућава да се апликација покрене чим се систем покрене. То може да успори покретање телефона, при чему ова апликација може да успори функционисање целог телефона тиме што ће увек бити активна."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"слање пријемчивих емитовања"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Дозвољава апликацији да шаље пријемчива емитовања, која остају по завршетку емитовања. Злонамерне апликације могу да успоре или дестабилизују таблет тиме што ће га приморати да троши превише меморије."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Дозвољава апликацији да шаље пријемчива емитовања, која остају по завршетку емитовања. Злонамерне апликације могу да успоре или дестабилизују телефон тиме што ће га приморати да троши превише меморије."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
+ <string name="permlab_readContacts" msgid="8348481131899886131">"читање контаката"</string>
<string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Дозвољава апликацији да чита све податке о контактима ускладиштене на таблету, укључујући податке о томе колико често зовете одређене особе, шаљете им поруке е-поште или на други начин комуницирате са њима. Ово помаже функцији аутоматског довршавања адреса е-поште и другим корисним функцијама. Злонамерне апликације могу да искористе ову дозволу за слање ваших података о контакту другим људима."</string>
<string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Дозвољава апликацији да чита све податке о контактима ускладиштене на телефону, укључујући податке о томе колико често зовете одређене особе, шаљете им поруке е-поште или на други начин комуницирате са њима. Ово помаже функцији аутоматског довршавања адреса е-поште и другим корисним функцијама. Злонамерне апликације могу да искористе ову дозволу за слање ваших података о контакту другим људима."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"измена контаката"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Дозвољава апликацији да мења податке о контактима ускладиштене на таблету, укључујући податке о томе колико често зовете одређене особе, шаљете им поруке е-поште или на други начин комуницирате са њима. Ово помаже функцији аутоматског довршавања адреса е-поште и другим корисним функцијама. Злонамерне апликације могу то да искористе да би избрисале или измениле ваше податке о контакту."</string>
<string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Дозвољава апликацији да мења податке о контактима ускладиштене на телефону, укључујући податке о томе колико често зовете одређене особе, шаљете им поруке е-поште или на други начин комуницирате са њима. Ово помаже функцији аутоматског довршавања адреса е-поште и другим корисним функцијама. Злонамерне апликације могу то да искористе да би избрисале или измениле ваше податке о контакту."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"читање евиденције позива"</string>
@@ -367,11 +398,9 @@
<string name="permlab_writeCallLog" msgid="8552045664743499354">"писање евиденције позива"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Дозвољава апликацији да мења евиденцију позива на таблету, укључујући податке о долазним и одлазним позивима. Злонамерне апликације могу ово да користе да би брисале или мењале евиденцију позива."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Дозвољава апликацији да мења евиденцију позива на телефону, укључујући податке о долазним и одлазним позивима. Злонамерне апликације могу ово да користе да би брисале или мењале евиденцију позива."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"читање ваше контакт картице"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Дозвољава апликацији да чита личне информације са профила сачуване на уређају, као што су име и контакт информације. То значи да друге апликације могу да вас идентификују и да информације о вашем профилу шаљу другима."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"измена ваше контакт картице"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Дозвољава апликацији да мења или да додаје нове личне информације са профила сачуване на уређају, као што су име и информације за контакт. То значи да друге апликације могу да вас идентификују и да информације о профилу шаљу другима."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"читање друштвеног стрима"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Дозвољава апликацији да приступа вашим друштвеним ажурирањима и друштвеним ажурирањима пријатеља и да их синхронизује. Злонамерне апликације могу помоћу тога да читају приватне преписке између вас и пријатеља на друштвеним мрежама."</string>
@@ -412,15 +441,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"принудно поновно покретање телефона"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Дозвољава апликацији да принудно поново покрене таблет."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Дозвољава апликацији да принудно поново покрене телефон."</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"приступ сист. дат. USB мемор."</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"приступ систему датотека SD картице"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Дозвољава апликацији да прикључи и искључи системе датотека преносне меморије."</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"брисање USB меморије"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"брисање SD картице"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Дозвољава апликацији да форматира преносну меморију."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"увид у информације о интерној меморији"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"Дозвољава апликацији да преузме информације о интерној меморији."</string>
@@ -432,8 +457,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Дозвољава апликацији да прикључи/искључи интерну меморију."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"преименовање интерне меморије"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"Дозвољава апликацији да преименује интерну меморију."</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"контрола вибрације"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"Дозвољава апликацији да контролише вибрацију."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"контрола осветљења"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"Дозвољава апликацији да контролише блиц."</string>
@@ -458,8 +482,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"Дозвољава апликацији да изда наредбу систему о томе које апликације ће моћи да користе које виџете. Ова дозвола омогућава апликацијама да другим апликацијама одобре приступ личним подацима. Не користе је уобичајене апликације."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"измена статуса телефона"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Дозвољава апликацији да управља функцијама телефона на уређају. Апликација са овом дозволом може да прелази са једне мреже на другу и да без обавештења укључује и искључује радио телефона и сличне функције."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"читање статуса и идентитета телефона"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"Дозвољава апликацији да приступа функцијама телефона уређаја. Ова дозвола омогућава да апликација утврди број телефона и серијски број телефона, затим да ли је позив активан, са којим бројем је успостављена веза и слично."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"спречавање преласка таблета у стање спавања"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"спречавање преласка телефона у стање спавања"</string>
@@ -474,8 +497,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Покретање теста ниског нивоа који спроводи произвођач, које омогућава потпуни приступ хардверу телефона. Доступно је само када телефон покренут у режиму тестирања које спроводи произвођач."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"подешавање позадине"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"Дозвољава апликацији да поставља позадину система."</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"прилагођавање величине позадине"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Дозвољава апликацији да подеси савете за системску величину позадине."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"поновно постављање фабричких подразумеваних подешавања"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"Дозвољава апликацији да поново постави комплетна фабричка подешавања система и тиме избрише све податке, конфигурацију и инсталиране апликације."</string>
@@ -487,21 +509,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Дозвољава апликацији да промени временску зону телефона."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"улога услуге управљања налогом"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"Дозвољава апликацији да упућује позиве издаваоцима потврде аутентичности налога."</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"проналажење налога на уређају"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Дозвољава апликацији да преузме листу налога познатих таблету."</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Дозвољава апликацији да преузме листу налога за које постоје подаци на телефону."</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"отварање налога и подешавање лозинки"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Дозвољава апликацији да користи могућности менаџера налога за потврду аутентичности налога, укључујући отварање налога, као и преузимање и подешавање лозинки за њих."</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"додавање или уклањање налога"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"Дозвољава апликацији да изврши радње попут додавања и уклањања налога, као и брисања одговарајућих лозинки."</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"коришћење налога на уређају"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"Дозвољава апликацији да захтева токене за потврду аутентичности."</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"преглед мрежних веза"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"Дозвољава апликацији да прегледа статус свих мрежа."</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"потпуни приступ Интернету"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Дозвољава апликацији да прави мрежне прикључке."</string>
@@ -513,36 +530,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"Дозвољава апликацији да мења статус везе са привезаном мрежом."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"промена подешавања за коришћење података у позадини"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Дозвољава апликацији да мења подешавање коришћења позадинских података."</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"преглед Wi-Fi веза"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"Дозвољава апликацији да прегледа информације о статусу Wi-Fi мреже."</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"повезивање и прекид везе са Wi-Fi мрежом"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"Омогућава да се апликација повезује са Wi-Fi приступним тачкама и да прекине везу са њима, као и да уноси промене у конфигурисане Wi-Fi мреже."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"омогућавање пријема вишесмерног Wi-Fi саобраћаја"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Дозвољава апликацији да прима пакете који нису директно намењени уређају. То може бити корисно при откривању услуга које се нуде у близини. Користи више напајања од режима једносмерног саобраћаја."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"приступ Bluetooth подешавањима"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Дозвољава апликацији да конфигурише локални Bluetooth таблет, као и да открије даљинске уређаје и упари се са њима."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Дозвољава апликацији да конфигурише локални Bluetooth телефон, као и да открије даљинске уређаје и упари се са њима."</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Преглед WiMAX веза"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Дозвољава апликацији да прегледа информације о статусу WiMAX мреже."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"Промени WiMAX статус"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Дозвољава апликацији повезивање и прекид везе са WiMAX мрежом."</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"упаривање са Bluetooth уређајима"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Дозвољава апликацији да конфигурише локални Bluetooth таблет, као и да успоставља и прихвата везе са упареним уређајима."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Дозвољава апликацији да конфигурише локални Bluetooth телефон, као и да успоставља и прихвата везе са упареним уређајима."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"контрола комуникације у ужем пољу (Near Field Communication)"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Дозвољава апликацији да комуницира са ознакама, картицама и читачима комуникације кратког домета (NFC)."</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"онемогућавање закључавања екрана"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Дозвољава апликацији да онемогући закључавање тастатуре и свих повезаних безбедносних мера са лозинкама. Оправдани пример додељивања такве дозволе је када телефон онемогући закључавање тастатуре при пријему долазног телефонског позива и поново је омогући по завршетку позива."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"читање подешавања синхронизације"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Дозвољава апликацији да мења подешавања синхронизације, нпр. да омогући или онемогући синхронизацију апликације Људи."</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"укључивање и искључивање синхронизације"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Дозвољава апликацији да измени подешавања синхронизације, нпр. да омогући или онемогући синхронизацију апликације Људи."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"читање статистике о синхронизацији"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"Дозвољава апликацији да чита статистику синхронизације, нпр. историју обављених синхронизација."</string>
@@ -550,22 +560,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Дозвољава апликацији да преузима детаље о тренутно синхронизованим фидовима."</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"уписивање пријављених фидова"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Дозвољава апликацији да измени тренутно синхронизоване фидове. Злонамерне апликације могу да промене синхронизоване фидове."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"читање термина које сте додали у речник"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Дозвољава апликацији да чита све приватне речи, називе и фразе које је корисник сачувао у корисничком речнику."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"уписивање у речник који је дефинисао корисник"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Дозвољава апликацији да уписује нове речи у кориснички речник."</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"читање садржаја USB меморије"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"читање садржаја SD картице"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Дозвољава апликацији читање садржаја USB меморије, што могу да буду слике и медиа датотеке."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Дозвољава апликацији да чита садржај SD картице, који може да обухвата слике и медиа датотеке."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"измена или брисање садржаја USB меморије"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Дозвољава апликацији да уписује податке на USB меморију."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Дозвољава апликацији да уписује податке на SD картицу."</string>
@@ -744,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"У телефон није уметнута SIM картица."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Уметните SIM картицу."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM недостаје или не може да се прочита. Уметните SIM картицу."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"SIM картица је неупотребљива."</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"SIM картица је трајно онемогућена."\n" Обратите се добављачу услуге бежичне мреже да бисте добили другу SIM картицу."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Дугме за претходну песму"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Дугме за следећу песму"</string>
@@ -819,15 +824,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"Парохија"</string>
<string name="autofill_area" msgid="3547409050889952423">"Област"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"Емират"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"читање веб обележивача и историје"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Дозвољава апликацији да чита све URL адресе које су посећене помоћу Прегледача, као и све обележиваче у њему."</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"писање веб обележивача и историје"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Дозвољава апликацији да измени историју или обележиваче Прегледача сачуване на таблету. Злонамерне апликације могу то да користе за брисање или измену података Прегледача."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Дозвољава апликацији да измени историју или обележиваче Прегледача који су ускладиштени на телефону. Злонамерне апликације могу то да користе за брисање или измену података Прегледача."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"подешавање аларма"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"Дозвољава апликацији да подеси аларм у инсталираној апликацији будилника. Неке апликације будилника можда не примењују ову функцију."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"додавање говорне поште"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"Дозвољава апликацији да додаје поруке у пријемно сандуче говорне поште."</string>
@@ -1087,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Подешавање датума"</string>
<string name="date_time_set" msgid="5777075614321087758">"Подеси"</string>
<string name="date_time_done" msgid="2507683751759308828">"Готово"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"Подразумевано"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"НОВО: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"НОВО: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"Није потребна ниједна дозвола"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"Сакриј"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"Прикажи све"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"USB великог капацитета"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"USB је повезан"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"Повезали сте рачунар преко USB-а. Додирните дугме испод ако желите да копирате датотеке са рачунара у Android USB меморију и обрнуто."</string>
@@ -1320,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"Слање..."</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"Желите ли да покренете прегледач?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"Желите ли да прихватите позив?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index 613fa55..5bce25a 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"Dina meddelanden"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"Läsa och skriva SMS, e-post och andra meddelanden."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Dina personliga uppgifter"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Direktåtkomst till dina kontakter och kalendern som har lagrats på pekdatorn."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Direktåtkomst till dina kontakter och kalendern som har lagrats på telefonen."</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Direktåtkomst till information om dig som lagras på ditt kontaktkort."</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Dina sociala uppgifter"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Direktåtkomst till information om dina kontakter och sociala kontakter."</string>
<string name="permgrouplab_location" msgid="635149742436692049">"Din plats"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"Övervaka din fysiska plats."</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"Nätverkskommunikation"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"Åtkomst till olika nätverksfunktioner."</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Ljudinställningar"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Ändra ljudinställningar."</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Påverkar batteriet"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Använda funktioner som gör att batteriet tar slut snabbt."</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"Kalender"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Direktåtkomst till kalender och händelser."</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Bokmärken och historik"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Direktåtkomst till bokmärken och webbläsarhistorik."</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Larm"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Ställa alarmet."</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Röstmeddelanden"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Direktåtkomst till röstbrevlådan."</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"Mikrofon"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Direktåtkomst till mikrofonen för att spela in ljud."</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"Kamera"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"Direktåtkomst till kamera för att ta bilder eller spela in video."</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Information i dina appar"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Kan påverka beteendet hos andra appar på enheten."</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Bakgrund"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Ändra inställningarna för enhetens bakgrund."</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"Klocka"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Ändra tid eller tidszon i enheten."</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Statusfält"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Ändra inställningarna för enhetens statusfält."</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Synkroniseringsinställningar"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Åtkomst till synkroniseringsinställningarna."</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"Dina konton"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"Få åtkomst till tillgängliga konton."</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Kontroller för maskinvara"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Åtkomst och kontroll av systemet på lägre nivå."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Utvecklingsverktyg"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Funktioner som endast behövs för apputvecklare."</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"Gränssnitt i annan app"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"Påverka gränssnittet i andra appar."</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"Lagring"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Få åtkomst till USB-enheten."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Få åtkomst till SD-kortet."</string>
@@ -193,14 +238,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"Tillåter att appen visas i statusfältet."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"expandera/komprimera statusfält"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Tillåter att appen expanderar eller komprimerar statusfältet."</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"omdirigera utgående samtal"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Tillåter att appen hanterar utgående samtal och ändrar numret som ska ringas upp. Skadliga appar kan övervaka, omdirigera eller förhindra utgående samtal."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"ta emot textmeddelanden (SMS)"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"Tillåter att appen tar emot och bearbetar SMS. Skadliga appar kan övervaka dina meddelanden eller ta bort dem innan du har sett dem."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"ta emot textmeddelanden (MMS)"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"Tillåter att appen tar emot och bearbetar MMS. Skadliga appar kan övervaka dina meddelanden eller ta bort dem innan du har sett dem."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"ta emot sändningar i nödsituationer"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Tillåter att appen tar emot och bearbetar sändningar i nödsituationer. Behörigheten är bara tillgänglig för systemappar."</string>
@@ -210,16 +252,13 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"Tillåter att appen skickar SMS. Skadliga appar kan skicka meddelanden utan ditt godkännande vilket kan kosta pengar."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"skicka SMS utan bekräftelse"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Tillåter att appen skickar SMS. Skadliga appar kan skicka meddelanden utan ditt godkännande vilket kan kosta pengar."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"läsa dina textmeddelanden (SMS eller MMS)"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Tillåter att appen läser SMS som lagras på pekdatorn eller SIM-kortet. Skadliga appar kan läsa dina konfidentiella meddelanden."</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Tillåter att appen läser SMS som sparas på telefonen eller SIM-kortet. Skadliga appar kan läsa dina konfidentiella meddelanden."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"redigera dina textmeddelanden (SMS eller MMS)"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Tillåter att appen skriver till SMS som lagras på pekdatorn eller SIM-kortet. Skadliga appar kan radera dina meddelanden."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Tillåter att appen skriver till SMS som lagras på mobilen eller SIM-kortet. Skadliga appar kan radera dina meddelanden."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"ta emot textmeddelanden (WAP)"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Tillåter att appen tar emot och bearbetar WAP-meddelanden. Skadliga appar kan övervaka dina meddelanden eller ta bort dem innan du har sett dem."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"hämta appar som körs"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"Tillåter att appen hämtar information om uppgifter som körs och har körts. Skadliga appar kan upptäcka privat information om andra appar."</string>
@@ -235,13 +274,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Tillåter att appen styr skärmkompatibilitetsläget i andra appar. Skadliga appar kan störa andra appars funktion."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"aktivera felsökning av appar"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"Tillåter att appen aktiverar felsökning för en annan app. Skadliga appar kan använda detta för att avsluta andra appar."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"ändra systemets skärminställningar"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Tillåter att appen ändrar den aktuella konfigurationen, till exempel språk eller övergripande teckenformat."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"aktivera trafikläge"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"Tillåter att appen aktiverar billäge."</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"stänga andra appar"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Tillåter att appen avslutar bakgrundsprocesser för andra appar även om det inte finns för lite ledigt minne."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"tvinga andra appar att avslutas"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Tillåter att appen avslutar andra appar."</string>
@@ -265,8 +302,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Tillåter att appen skickar ett meddelande om att ett WAP PUSH-meddelande har tagits emot. Skadliga appar kan använda detta för att förfalska mottagning av MMS eller för att obemärkt byta ut innehållet på en webbsida mot skadligt innehåll."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"begränsa antalet processer som körs"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Tillåter att appen styr högsta antalet processer som körs. Behövs inte för vanliga appar."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"tvinga bakgrundsappar att avslutas"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Tillåter att appen bestämmer om aktiviteter alltid är slutförda när de hamnar i bakgrunden. Ska inte behövas för vanliga appar."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"ändra batteristatistik"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"Tillåter att appen ändrar samlad batteristatistik. Används inte av vanliga appar."</string>
@@ -276,8 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Tillåter att appen startar användargränssnittet för bekräftelse av fullständig säkerhetskopia. Ska inte användas av någon app."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"visa otillåtna fönster"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Tillåter att appen skapar fönster som ska användas av det interna systemgränssnittet. Används inte av vanliga appar."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"skriva över andra appar"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Tillåter att appen visar fönster med systemvarningar. Skadliga appar kan överta hela skärmen."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"ändra global animeringshastighet"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Tillåter att appen när som helst ändrar den globala animeringshastigheten (snabbare eller långsammare)."</string>
@@ -339,26 +374,22 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Tillåter att en app beviljar eller återkallar specifik behörighet, för sig själv eller andra appar. Skadlig programvara kan utnyttja detta för att få åtkomst till funktioner som du inte har beviljat behörighet till."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"ange önskade appar"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Tillåter att appen ändrar dina önskade appar. Skadliga appar kan utan förvarning ändra de appar som körs och kapa dina befintliga appar så att de börjar samla privata uppgifter från dig."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"ändra systeminställningar"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"Tillåter att appen ändrar systemets inställningar. Skadliga appar kan skada systemets konfiguration."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"ändra skyddade systeminställningar"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Tillåter att appen ändrar systemets säkerhetsinställningar. Används inte av vanliga appar."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"ändra kartan för Googles tjänster"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"Tillåter att appen ändrar kartan för Googles tjänster. Används inte av vanliga appar."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"köra vid start"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Tillåter att appen startar automatiskt när systemet har startats om. Detta kan innebära att det tar längre tid att starta pekdatorn och att pekdatorn blir långsammare i och med att appen hela tiden körs i bakgrunden."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Tillåter att appen startar automatiskt när systemet har startats om. Detta kan innebära att det tar längre tid att starta mobilen och att mobilen blir långsammare i och med att appen hela tiden körs i bakgrunden."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"Skicka sticky broadcast"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Tillåter att appen skickar sticky broadcasts, som finns kvar när sändningen är slut. Skadliga appar kan göra pekdatorn seg eller instabil genom att se till att den använder för mycket minne."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Tillåter att appen skickar sticky broadcasts, som finns kvar när sändningen är slut. Skadliga appar kan göra mobilen seg eller instabil genom att använda för mycket minne."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
+ <string name="permlab_readContacts" msgid="8348481131899886131">"läsa dina kontakter"</string>
<string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Appen tillåts läsa alla data om dina kontakter som finns lagrade på pekdatorn, inklusive information om hur ofta du har ringt, skickat e-post till eller på andra sätt kommunicerat med specifika personer. På så sätt kan autoslutförda e-postadresser och andra användbara funktioner förbättras. Behörigheten kan utnyttjas av skadliga appar för att skicka dina kontaktuppgifter till andra personer."</string>
<string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Appen tillåts läsa alla data om dina kontakter som finns lagrade i mobilen, inklusive information om hur ofta du har ringt, skickat e-post till eller på andra sätt kommunicerat med specifika personer. På så sätt kan autoslutförda e-postadresser och andra användbara funktioner förbättras. Behörigheten kan utnyttjas av skadliga appar för att skicka dina kontaktuppgifter till andra personer."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"ändra kontakterna"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Appen tillåts läsa alla data om dina kontakter som finns lagrade i mobilen, inklusive information om hur ofta du har ringt, skickat e-post till eller på andra sätt kommunicerat med specifika personer. På så sätt kan autoslutförda e-postadresser och andra användbara funktioner förbättras. Detta kan utnyttjas av skadliga appar för att skicka dina kontaktuppgifter till andra personer."</string>
<string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Appen tillåts läsa alla data om dina kontakter som finns lagrade i mobilen, inklusive information om hur ofta du har ringt, skickat e-post till eller på andra sätt kommunicerat med specifika personer. På så sätt kan autoslutförda e-postadresser och andra användbara funktioner förbättras. Detta kan utnyttjas av skadliga appar för att skicka dina kontaktuppgifter till andra personer."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"läs samtalslogg"</string>
@@ -367,11 +398,9 @@
<string name="permlab_writeCallLog" msgid="8552045664743499354">"skriv samtalslogg"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Tillåter att appen gör ändringar i pekdatorns samtalslista, inklusive i uppgifter om inkommande och utgående samtal. Skadliga program kan använda detta för att radera eller ändra din samtalslista."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Tillåter att appen gör ändringar i mobilens samtalslista, inklusive i uppgifter om inkommande och utgående samtal. Skadliga program kan använda detta för att radera eller ändra din samtalslista."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"läsa ditt eget kontaktkort"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Tillåter att appen läser personlig profilinformation som lagras på din enhet, t.ex. ditt namn och kontaktuppgifter. Det innebär att appen kan identifiera dig och skicka profilinformation till andra."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"ändra ditt eget kontaktkort"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Tillåter att appen ändrar eller lägger till personlig profilinformation som lagras på din enhet, t.ex. ditt namn och dina kontaktuppgifter. Det innebär att andra appar kan identifiera dig och skicka profilinformation till andra."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"läs mitt sociala flöde"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Gör att appen kan få åtkomst till och synkronisera sociala uppdateringar från dig och dina vänner. Skadliga appar kan använda detta för att läsa privata konversationer mellan dig och dina vänner på sociala nätverk."</string>
@@ -412,15 +441,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"tvinga omstart av telefon"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Tillåter att appen tvingar pekdatorn att starta om."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Tillåter att appen tvingar mobilen att starta om."</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"få åtkomst till USB-lagringen"</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"få åtkomst till SD-kortets filsystem"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Tillåter att appen monterar och monterar bort filsystem för flyttbara lagringsmedia."</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"radera USB-lagring"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"radera SD-kort"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Tillåter att appen formaterar flyttbara lagringsmedia."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"få information om intern lagring"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"Gör att appen får tillgång till information om internt minne."</string>
@@ -432,8 +457,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Tillåter att appen monterar/monterar bort internt minne."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"byt namn på intern lagring"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"Tillåter att appen byter namn på det interna minnet."</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"styra vibration"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"Tillåter att appen styr vibrationen."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"styra lampa"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"Tillåter att appen styr lampan."</string>
@@ -458,8 +482,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"Tillåter att appen meddelar systemet vilka widgetar som kan användas av vilka appar. Med den här behörigheten kan andra appar få åtkomst till personliga uppgifter. Används inte av vanliga appar."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"ändra telefonstatus"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Tillåter att appen styr enhetens telefonfunktioner. En app med den här behörigheten kan byta nätverk, aktivera/inaktivera mobilens radio och liknande utan att meddela dig."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"läsa telefonens status och identitet"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"Tillåter att appen kommer åt enhetens telefonfunktioner. En app som har den här behörigheten kan identifiera mobilens telefonnummer och serienummer, om ett samtal pågår, numret som samtalet är kopplat till och så vidare."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"förhindra att pekdatorn går in i viloläge"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"förhindra att telefonen sätts i viloläge"</string>
@@ -474,8 +497,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Köra som ett testläge för tillverkaren på låg nivå. På så sätt får du fullständig åtkomst till telefonens maskinvara. Är endast tillgänglig när telefonen körs i tillverkarens testläge."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"ange bakgrund"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"Tillåter att appen anger systemets bakgrund."</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"anpassa bakgrundsstorleken"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Tillåter att appen ger tips om systemets bakgrundsstorlek."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"återställa systemets fabriksinställningar"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"Tillåter att appen helt återställer systemets fabriksinställningar. Alla data, inställningar och installerade appar raderas."</string>
@@ -487,21 +509,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Tillåter att appen ändrar mobilens tidszon."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"fungera som AccountManagerService"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"Tillåter att appen anropar AccountAuthenticators."</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"hitta konton på enheten"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Tillåter att appen hämtar en lista över konton som pekdatorn känner till."</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Tillåter att appen hämtar en lista över konton som mobilen känner till."</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"skapa konton och ange lösenord"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Tillåter att appen använder AccountManagers kontoautentiseringsfunktioner, bland annat funktioner för att skapa konton samt hämta och ange lösenord för dem."</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"lägga till eller ta bort konton"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"Tillåter att appen utför åtgärder som att lägga till och ta bort konton och ta bort lösenord."</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"använda konton på enheten"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"Tillåter att appen begär autentiseringstoken."</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"visa nätverksanslutningar"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"Tillåter att appen ser status för alla nätverk."</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"fullständig Internetåtkomst"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Tillåter att appen skapar nätverksuttag."</string>
@@ -513,36 +530,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"Tillåter att appen ändrar statusen för en delad nätverksanslutning."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"ändra inställningar för användning av bakgrundsdata"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Tillåter att appen ändrar inställningen för användning av bakgrundsdata."</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"visa Wi-Fi-anslutningar"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"Tillåter att appen visar information om Wi-Fi-status."</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"anslut och koppla från Wi-Fi"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"Tillåter att appen ansluter till och kopplar från Wi-Fi-åtkomstpunkter samt gör ändringar i konfigurerade Wi-Fi-nätverk."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"tillåt Wi-Fi multicast-mottagning"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Tillåter att appen tar emot paket som inte är adresserade direkt till enheten. Det är användbart om du vill upptäcka tillgängliga tjänster i närheten. Det drar mer batteri än om mobilen inte är i multicast-läge."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"få åtkomst till Bluetooth-inställningar"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Tillåter att appen konfigurerar den lokala Bluetooth-pekdatorn samt upptäcker och parkopplar den med fjärranslutna enheter."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Tillåter att appen konfigurerar den lokala Bluetooth-mobilen samt upptäcker och parkopplar den med fjärranslutna enheter."</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Visa WiMAX-anslutningar"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Tillåter att appen visar information om WiMAX-status."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"ändra WiMAX-status"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Tillåter att appen kan anslutas till och kopplas ifrån WiMAX-nätverk."</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"koppla till Bluetooth-enheter"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Tillåter att appen ser den lokala Bluetooth-pekdatorns konfiguration och skapar och accepterar anslutningar med parkopplade enheter."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Tillåter att appen ser den lokala Bluetooth-mobilens konfiguration och skapar och accepterar anslutningar med parkopplade enheter."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"kontrollera närfältskommunikationen"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Tillåter att appen kommunicerar med etiketter, kort och läsare för närfältskommunikation (NFC)."</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"inaktivera skärmlåset"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Tillåter att appen inaktiverar tangentlåset och tillhörande lösenordsskydd. Ett exempel på detta är att tangentlåset inaktiveras vid inkommande samtal och aktiveras igen när samtalet är avslutat."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"läsa synkroniseringsinställningar"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Tillåter att appen läser synkroniseringsinställningarna, till exempel om synkronisering har aktiverats för kontakter."</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"aktivera/inaktivera synkronisering"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Tillåter att appen ändrar synkroniseringsinställningarna, till exempel om synkronisering har aktiverats för kontakter."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"läsa synkroniseringsstatistik"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"Tillåter att appen läser synkroniseringsstatistiken, till exempel historiken över synkroniseringar som har gjorts."</string>
@@ -550,22 +560,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Tillåter att appen får information om aktuella synkroniserade flöden."</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"skriva flöden som du prenumererar på"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Tillåter att appen ändrar dina aktuella synkroniserade flöden. Skadliga appar kan ändra dina synkroniserade flöden."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"läsa termer som du har lagt till i ordlistan"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Tillåter att appen läser alla privata ord, namn och fraser som användaren har sparat i ordlistan."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"lägga till i användardefinierad ordlista"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Tillåter att appen anger nya ord i användarordlistan."</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"läsa innehåll på USB-enheten"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"läsa innehållet på SD-kortet"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Tillåter att innehållet läses."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Tillåter att appen läser SD-kortets innehåll, inklusive eventuella bilder och media."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"ändra eller ta bort innehållet"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Gör att app skriver till USB."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Tillåter att appen skriver till SD-kortet."</string>
@@ -744,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Inget SIM-kort i telefonen."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Sätt i ett SIM-kort."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM-kort saknas eller kan inte läsas. Sätt i ett SIM-kort."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"Oanvändbart SIM-kort."</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"SIM-kortet har inaktiverats permanent."\n" Beställ ett nytt SIM-kort från din operatör."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Knapp för föregående spår"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Knapp för nästa spår"</string>
@@ -819,15 +824,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"Församling"</string>
<string name="autofill_area" msgid="3547409050889952423">"Område"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"Emirat"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"läsa dina bokmärken och din historik på webben"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Tillåter att appen läser alla webbadresser som webbläsaren har öppnat samt alla webbläsarens bokmärken."</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"skriva bokmärken och historik på webben"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Tillåter att appen ändrar webbläsarhistoriken och bokmärkena på pekdatorn. Skadliga appar kan använda detta för att ta bort eller ändra data i webbläsaren."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Tillåter att appen ändrar webbläsarhistoriken och bokmärkena på mobilen. Skadliga appar kan använda detta för att ta bort eller ändra data i webbläsaren."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"ställa in ett alarm"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"Tillåter att appen ställer in ett alarm i en befintlig alarmapp. Vissa alarmappar har inte den här funktionen."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"lägg till röstbrevlåda"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"Gör att appen lägger till meddelanden i röstbrevlådans inkorg."</string>
@@ -1087,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Ange datum"</string>
<string name="date_time_set" msgid="5777075614321087758">"Ställ in"</string>
<string name="date_time_done" msgid="2507683751759308828">"Klar"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"Standardinställning"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"NY: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"NY: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"Inga behörigheter krävs"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"Dölj"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"Visa alla"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"USB-masslagring"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"USB-ansluten"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"Du har anslutit enheten till datorn via USB. Tryck på knappen nedan om du vill kopiera filer mellan datorn och Android-enhetens USB-lagringsenhet."</string>
@@ -1320,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"Skickar ..."</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"Vill du öppna webbläsaren?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"Vill du ta emot samtal?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml
index 5b9e5b8..05732dc 100644
--- a/core/res/res/values-sw/strings.xml
+++ b/core/res/res/values-sw/strings.xml
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"Ujumbe wako"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"Soma na kuandika SMS, barua pepe, na jumbe zako zingine."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Maelezo yako ya kibinafsi"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Ufikiaji wa moja kwa moja wa anwani zako na kalenda iliyohifadhiwa kwenye kompyuta ndogo."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Ufikiaji wa moja kwa moja wa anwani zako na kalenda zilizohifadhiwa kwenye simu."</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Kufikia moja kwa moja taarifa kukuhusu, iliyoakibishwa kwenye kadi yako ya anwani."</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Taarifa yako ya kijamii"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Kufikia moja kwa moja taarifa kuhusu anwani zako na miunganisho ya kijamii."</string>
<string name="permgrouplab_location" msgid="635149742436692049">"Mahali pako"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"Fuatilia eneo lako halisi."</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"Mawasiliano ya mtandao"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"Fikia vipengele mbalimbali vya mtandao."</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Mipangilio ya Sauti"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Badilisha mipangilio ya sauti."</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Huathiri Betri"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Tumia vipengele vinaweza kumaliza betri haraka."</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"Kalenda"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Kufikia moja kwa moja kalenda na matukio."</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Vialamisho na Historia"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Kufikia moja kwa moja vialamisho na historia ya kivinjari"</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Kengele"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Weka saa ya kengele."</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Barua ya sauti"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Fikia barua ya sauti moja kwa moja."</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"Kipokea sauti"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Kufikia moja kwa moja kipokea sauti ili kurekodi sauti."</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"Kamera"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"Kufikia moja kwa moja kamera ya kunasa taswira au video."</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Taarifa ya programu zako"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Uwezo wa kuathiri tabia ya programu nyingine kwenye kifaa chako."</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Taswira"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Badilisha mipangilio taswira ya kifaa."</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"Saa"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Badilisha muda wa kifaa au ukanda wa saa."</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Hali Upau"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Badilisha mipangilio ya upau wa hali ya kifaa."</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Mipangilio ya Upatanishi"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Kufikia mipangilio ya upatanishi."</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"Akaunti zako"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"Fikia akaunti zinazopatikana."</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Vidhibiti vya maunzi"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Ufikiaji wa kiwango cha chini na udhibiti wa mfumo."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Zana za utengenezaji"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Vipengee vinahitajika tu na wasinidi wa programu."</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"Programu Nyingine ya UI"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"Ruhusu UI ya programu nyungine."</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"Hifadhi"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Fikia hifadhi ya USB."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Fikia kadi ya SD."</string>
@@ -193,14 +238,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"Inaruhusu programu kuwa upau wa hali."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"panua/kunja mwambaa hali"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Inaruhusu programu kupanua au kukunja upau wa hali."</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"panga upya simu zinazotoka"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Inaruhusu programu kuchakata simu zinazotoka na kubadilisha nambari itakayopigwa. Programu hasidi zinaweza kufuatilia, kuelekeza kwingine, au kuzuia simu zinazotoka."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"pokea jumbe za maandishi (SMS)"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"Inaruhusu programu kupokea na kuchakata jumbe za SMS. Programu hasidi zinaweza kufuatilia jumbe zako au kuzifuta bila kukuonyesha."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"pokea jumbe za maandishi (MMS)"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"Inaruhusu programu kupokea na kuchakata jumbe za MMS. Programu hasidi zinaweza kufuatilia jumbe zako au kuzifuta bila kukuonyesha."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"Pokea matangazo ya dharura"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Inaruhusu programu kupokea na kuchakata jumbe za dharura. Ruhusa hii inapatikana tu kwa programu za mfumo."</string>
@@ -210,20 +252,17 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"Inaruhusu programu kutuma jumbe za SMS. Programu hasidi zinaweza kukugharimu fedha kwa kutuma jumbe bila uthibitisho wako."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"Tuma ujumbe wa SMS bila ya thibitisho"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Huruhusu programu kutuma jumbe wa SMS. Programu hasidi huenda zikakugharimu pesa kwa kutuma jumbe bila uthibitisho wako."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"soma jumbe zako za maandishi (SMS au MMS)"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Inaruhusu programu kusoma jumbe za SMS zilizohifadhiwa kwenye kompyuta kibao au SIM kadi yako. Programu hasidi zinaweza kusoma jumbe zako za siri."</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Inaruhusu programu kusoma jumbe za SMS zilizohifadiwa kwenye simu ya au SIM kadi. Programu hasidi zinaweza kusoma jumbe zako za siri."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"Hariri jumbe zako za maandishi (SMS au MMS)"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Inaruhusu programu kuandikia jumbe za SMS zinazohifadhiwa kwenye kompyuta yako kibao au SIM kadi. Programu hasidi zinaweza kufuta jumbe zako."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Inaruhusu programu kuandika jumbe za SMS zinazohifadhiwa kwenye simu yako au SIM kadi. programu hasidi zinaweza kufuta ujumbe zako."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"pokea jumbe za maandishi (WAP)"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Inaruhusu programu kupokea na kuchakata jumbe za WAP. Programu hasidi zinaweza kufuatilia jumbe zako au kuzifuta bila kukuonyesha."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"rudisha programu zinazoendeshwa"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"Inaruhusu programu kupata taarifa kuhusu kazi zinazoendelea sasa na hivi karibuni. Programu hasidi zinaweza kugundua taarifa ya kibinafsi kuhusu programu zingine."</string>
- <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"epua maelezo ya programu zinazoendeshwa."</string>
+ <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"epua maelezo ya programu zinazoendeshwa"</string>
<string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Huruhusu programu kuepua maelezo tondoti kuhusu kazi za sasa na zinazoendelea hivi karibuni. Programu hasidi huenda zikagundua maelezo ya kibinafsi kuhusu programu zingine."</string>
<string name="permlab_reorderTasks" msgid="2018575526934422779">"Agiza tena programu za kuendeshwa"</string>
<string name="permdesc_reorderTasks" msgid="4175137612205663399">"Inaruhusu programu kusongesha kazi kwenye mandhari-mbele na mandhari-nyuma. Programu hasidi zinaweza kujilazimisha mbele bila udhibiti wako."</string>
@@ -235,13 +274,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Huruhusu programu kudhibiti hali ya utangamano wa skrini ya programu zingine. Programu hasidi zinaweza kuvunja mwenendo wa programu zingine."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"wezesha utatuaji wa programu"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"Huruhusu programu kuwasha kueua cha programu nyingine. Programu hasidi huenda zikatumia hii ili kuua programu nyingine."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"badilisha mipangilio ya kuonyesha mfumo"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Huruhusu programu kubadilisha usanidi wa sasa, kama vile kieneo au ukubwa wa jumla wa fonti."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"Wezesha mtindo wa gari"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"Inaruhusu programu kuwawezesha mtindo wa gari."</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"funga programu zingine"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Inaruhusu programu kuua mchakato wa usuli wa programu zingine, hata kama kumbukumbu si ndogo."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"Lazimisha kukomesha programu zingine"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Inaruhusu programu kulazimisha programu zingine kuacha."</string>
@@ -265,8 +302,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Inaruhusu programu kutangaza taarifa kwamba ujumbe wa WAP PUSH umepokewa. Programu hasidi zinaweza kutumia hii kubuni risiti ya ujumbe wa MMS au polepole kubadilisha maudhui yoyote ya ukurasa wa tovuti na vibadala vibovu."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"zuia idadi ya michakato inayoendeshwa"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Inaruhusu programu kudhibiti upeo wa idadi ya michakato ambayo itaendeshwa. Kamwe hazihitajiki kwa programu za kwaida."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"lazimisha programu za usuli kufunga"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Inaruhusu programu kudhibiti kama daima shughuli zinamalizwa wakati ziendapo kwa mandhari-nyuma. Kamwe hazihitajiki kwa programu za kawaida."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"rekebisha takwimu za betri"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"Inaruhusu programu kurekebisha takwimu za betri zilizokusanywa. Si kwa matumizi ya programu za kawaida."</string>
@@ -276,8 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Inaruhusu programu kuzindua UI ya kuthibitisha chelezo kamili. Si ya kutumiwa na programu yoyote."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"onyesha madirisha yasiyoidhinishwa"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Huruhusu programu kuunda madirisha ambayo yananuiwa kutumiwa na kusano ya mtumiaji ya mfumo wa ndani. Sio ya matumizi na programu za kawaida."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"chora juu ya programu zingine"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Inaruhusu programu kuonyesha dirisha za arifa za mfumo. Programu hasidi zaweza kutawala skrini nzima."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"rekebisha kasi ya jumla ya uhuisho"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Huruhusu programu kubadilisha kasi ya uhuishaji kijumla (uhuisho wa haraka zaidi au wa polepole zaidi) wakati wowote."</string>
@@ -339,39 +374,33 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Inaruhusu programu kutoa au kukataa idhini maalum ya programu hii au zingine. Programu hasidi zinaweza kutumia hii ili kufikia vipengee ambavyo hujaziruhusu."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"kuweka programu zinazopendelewa"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Inaruhusu programu kurekebisha programu unazopendelea. Programu hasidi zinaweza, polepole, kubadilisha programu zinazoendeshwa, na kuzifanya programu ulizo nazo kukusanya data ya kibinafsi kutoka kwako."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"rekebisha mipangilio ya mfumo"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"Inaruhusu programu kurekebisha mipangilio ya mfumo wa data. Programu hasidi zinaweza kuvuruga usanidi wa mfumo wako."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"rekebisha mipangilio ya mfumo salama"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Inaruhusu programu kurekebisha mipagilio ya mfumo wa data salama. Si ya kutumiwa na programu za kawaida."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"rekebisha ramani ya Google services"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"Inaruhusu programu kurekebisha ramani ya huduma za Google. Si ya kutumiwa na programu za kawaida."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"endesha wakati wa uwashaji"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Inaruhusu programu yenyewe kujianzisha baada ya mfumo kumaliza kuuanza upya. Hii inaweza kufanya ichukue muda mrefu kuanza kompyuta kibao na kuruhusu programu kupunguza kasi ya kompyuta kibao kijumla kwa kuendeshwa siku zote."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Inaruhusu programu kujianzisha yenyewe mfumo unapo maliza kuanza upya. Hii inaweza kuchukua muda mrefu simu kuanza na kuruhusu programu kupunguza kasi ya simu kwa jumla kwa kuendeshwa polepole kila wakati."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"tuma tangazo la kulanata"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Inaruhusu programu kutuma matangazo nata, ambayo hubakia baada ya matangazo kuisha. Programu hasidi zinaweza fanya kompyuta kibao kufanya kazi polepole au kuifanya isiwe thabiti kwa kuifanya itumie kumbukumbu kubwa zaidi."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Inaruhusu programu kutuma matangazo nata, ambayo hubakia baada ya matangazo kuisha. Programu hasidi zinaweza fanya simu kufanya kazi polepole au kuifanya isiwe thabiti kwa kuifanya itumie kumbukumbu kubwa zaidi."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
- <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Huruhusu programu kusoma data yote kuhusu anwani zako zilizohifadhiwa kwenye simu yako, ikiwa ni pamoja na marudio ya wale uliowapigia simu, kuwatumia barua pepe, au kuwasiliana kwa njia zingine na watu maalum. Hii husaidia na ukamilishaji otomatiki wa anwani za barua pepe na vipengele vingine vinavyofaa. Programu hasidi zinaweza kutumia idhini hii ili kutuma data yako ya anwani kwa watu wengine."</string>
- <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Huruhusu programu kusoma data yote kuhusu anwani zako zilizohifadhiwa kwenye simu yako, ikiwa ni pamoja na marudio ya wale uliowapigia simu, kuwatumia barua pepe, au kuwasiliana kwa njia zingine na watu maalum. Hii husaidia na ukamilishaji otomatiki wa anwani za barua pepe na vipengele vingine vinavyofaa. Programu hasidi zinaweza kutumia idhini hii ili kutuma data yako ya anwani kwa watu wengine."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
- <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Huruhusu programu kurekebisha data kuhusu anwani zako zilizohifadhiwa kwenye simu yako, ikiwa ni pamoja na marudio ya wale uliowapigia simu, kuwatumia barua pepe, au kuwasiliana kwa njia zingine na watu maalum. Hii husaidia na ukamilishaji otomatiki wa anwani za barua pepe na vipengele vingine vinavyofaa. Programu hasidi zinaweza kutumia hii kufuta au kurekebisha data yako ya anwani."</string>
- <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Huruhusu programu kurekebisha data kuhusu anwani zako zilizohifadhiwa kwenye simu yako, ikiwa ni pamoja na marudio ya wale uliowapigia simu, kuwatumia barua pepe, au kuwasiliana kwa njia zingine na watu maalum. Hii husaidia na ukamilishaji otomatiki wa anwani za barua pepe na vipengele vingine vinavyofaa. Programu hasidi zinaweza kutumia hii kufuta au kurekebisha data yako ya anwani."</string>
+ <string name="permlab_readContacts" msgid="8348481131899886131">"soma anwani zako"</string>
+ <string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Huruhusu programu kusoma data yote kuhusu anwani zako zilizohifadhiwa kwenye kompyuta yako kibao, ikiwa ni pamoja na idadi ya mara ambazo ulipiga simu, kutuma barua pepe, au kuwasiliana kwa njia zingine na watu maalum. Hii husaidia na ukamilishaji otomatiki wa anwani za barua pepe na vipengele vingine vinavyofaa. Programu hasidi zinaweza kutumia idhini hii ili kutuma data yako ya anwani kwa watu wengine."</string>
+ <string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Huruhusu programu kusoma data yote kuhusu anwani zako zilizohifadhiwa kwenye simu yako, ikiwa ni pamoja na idadi ya mara ambazo umepiga simu, kutuma barua pepe, au kuwasiliana kwa njia zingine na watu maalum. Hii husaidia na ukamilishaji otomatiki wa anwani za barua pepe na vipengele vingine vinavyofaa. Programu hasidi zinaweza kutumia idhini hii ili kutuma data yako ya anwani kwa watu wengine."</string>
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"rekebisha anwani zako"</string>
+ <string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Huruhusu programu kurekebisha data kuhusu anwani zako zilizohifadhiwa kwenye kompyuta yako kibao, ikiwa ni pamoja na idadi ya mara ulizopiga simu, kutumia barua pepe, au kuwasiliana kwa njia zingine na watu maalum. Hii husaidia na ukamilishaji otomatiki wa anwani za barua pepe na vipengele vingine vinavyofaa. Programu hasidi zinaweza kutumia hii kufuta au kurekebisha data yako ya anwani."</string>
+ <string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Huruhusu programu kurekebisha data kuhusu anwani zako zilizohifadhiwa kwenye simu yako, ikiwa ni pamoja na idadi ya mara ulizopiga simu, kutuma barua pepe, au kuwasiliana kwa njia zingine na watu maalum. Hii husaidia na ukamilishaji otomatiki wa anwani za barua pepe na vipengele vingine vinavyofaa. Programu hasidi zinaweza kutumia hii kufuta au kurekebisha data yako ya anwani."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"soma rajisi ya simu"</string>
<string name="permdesc_readCallLog" product="tablet" msgid="3995157599976515002">"Huruhusu programu kusoma rajisi ya simu ya kompyuta kibao yako, ikiwa ni pamoja na simu zinazoingia na kutoka. Huenda programu hasidi zikatumia hii ili kutuma data yako kwa watu wengine."</string>
<string name="permdesc_readCallLog" product="default" msgid="3452017559804750758">"Huruhusu programu kusoma rajisi ya simu yako, ikiwa ni pamoja na data kuhusu simu zinazoingia na kutoka. Huenda programu hasidi zikatumia hii ili kutuma data yako kwa watu wengine."</string>
<string name="permlab_writeCallLog" msgid="8552045664743499354">"andika rajisi ya simu"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Huruhusu programu kurekebisha rajisi ya kompyuta kibao yako, ikiwa ni pamoja na simu zinazoingia na kutoka. Huenda programu hasidi zikatumia hii ili kufuta au kurekebisha rajisi ya simu yako."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Huruhusu programu kurekebisha rajisi ya simu yako, ikiwa ni pamoja na simu zinazoingia na kutoka. Huenda programu hasidi zikatumia hii ili kufuta au kurekebisha rajisi ya simu yako."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"soma kadi yako mwenyewe ya mawasiliano"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Inaruhusu programu kusoma maelezo mafupi ya kibinafsi yaliyohifadhiwa kwenye kifaa chako, kama vile jina lako na taarifa ya kuwasiliana. Hii ina maanisha programu inaweza kukutambua na kutuma taarifa yako fupi ya kibinafsi kwa wengine."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"rekebisha kadi yako mwenyewe ya mawasiliano"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Inaruhusu programu kubadilisha au kuongeza taarifa fupi ya kibinafsi iliyohifadhiwa katika kifaa chako, kama vile jina lako na maelezo ya kuwasiliana. Hii ina maanisha kwamba programu zingine zinaweza kukutambua na kutuma taarifa yako fupi kwa wengine."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"soma mipasho yako wa kijamii"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Inaruhusu programu kufikia na kulandanisha sasisho za kijamii kutoka kwako na marafiki zako. Programu hasidi zinaweza kutumia hii kusoma mawasiliano ya kibinafsi kati yako na marafiki zako kwenye mitandao ya kijamii."</string>
@@ -412,15 +441,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"lazimisha kwasha upya simu"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Inaruhusu programu kulazimisha kompyuta kibao kuwashwa upya."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Inaruhusu programu kulazimisha simu kujiwasha upya."</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"fikia mfumo wa faili wa hifadhi ya USB"</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"fikia mfumo wa faili wa Kadi ya SD"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Inaruhusu programu kupachika au kupachua mifumo ya faili ya hifadhi inayoweza kutolewa."</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"futa hifadhi ya USB"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"futa Kadi ya SD"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Inaruhusu programu kufomati hifadhi inayoweza kutolewa."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"pata maelezo juu ya hifadhi ya ndani"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"Inaruhusu programu kupata maelezo juu ya hifadhi ya ndani."</string>
@@ -432,8 +457,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Inaruhusu programu kupachika/kupachua hifadhi ya ndani."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"ipe hifadhi ya ndani jina jipya"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"Inaruhusu programu kubadilisha jina la hifadhi ya ndani."</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"dhibiti mtetemo"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"Inaruhusu programu kudhibiti kitingishi."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"dhibiti tochi"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"Inaruhusu programu kudhibiti tochi."</string>
@@ -458,8 +482,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"Inaruhusu programu kuwaambia mfumo wijeti ambazo zinaweza kutumika na programu. Programu ambayo ina ruhusa hii inaweza kuruhusu ufikiaji wa data binafsi na kwa programu nyingine. Si ya kutumiwa na programu za kawaida."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"badiliisha hali ya simu"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Inaruhusu programu kudhibiti vipengee vya kifaa. Programu iliyo na ruhusa hii inaweza badilisha mtandao, kuzima na kuwasha redio ya simu bila hata kukujulisha."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"soma hali ya simu na kitambulisho"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"Inaruhusu programu kufikia vipengee vya simu vya kifaa. Programu inayo na ruhusa hii inaweza kuamua namba ya simu na namba tambulishi ya simu hii, kama kuna simu inapigwa, namba inayopigiwa simu hiyo na mengine kama hayo."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"zuia kompyuta ndogo dhidi ya kulala"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"zuia simu dhidi ya kulala"</string>
@@ -474,8 +497,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Endesha kama jaribio la kiwango cha chini cha mtengenezaji, kwa hivyo kuruhusu ufikiaji kamili wa maunzi ya simu. Inapatikana tu wakati simu inaendeshwa katika gumzo ya jaribio ya mtengenezaji."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"weka mandhari"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"Inaruhusu programu kuweka mfumo wa mandhari."</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"rekebisha ukubwa wa mandhari yako"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Inaruhusu programu kuweka vidokezo vya ukubwa wa mandhari ya mfumo."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"weka upya mfumo kwa chaguo-msingi za kiwanda"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"Inaruhusu programu kuweka upya kabisa mfumo kwa mipangilio yake ya kiwanda, huku ikifuta data yote, usanidi, na programu zilizosanikishwa."</string>
@@ -487,21 +509,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Inaruhusu programu kubadilisha majira ya saa ya simu."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"tenda kama Huduma ya Meneja wa Akaunti"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"Huruhusu programu kupiga simu kwa Wathibitishaji Akaunti."</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"pata akaunti kwenye kifaa"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Inaruhusu programu kupata orodha ya akaunti zinazojulikana na kompyuta kibao."</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Inaruhusu programu kupata orodha ya akaunti zinazojulikana na simu."</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"unda akaunti na weka manenosiri"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Inaruhusu programu kutumia uwezo wa uthibitishaji akaunti wa KidhibitiAkaunti, pamoja na kuunda akaunti na kupata na kuweka nywila zao."</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"ongeza au uondoe akaunti"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"Inaruhusu programu kutekeleza shughuli kama vile kuongeza na kutoa akaunti, na kufuta manenosiri yazo."</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"tumia akaunti kwenye kifaa"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"Inaruhusu programu kuomba shuhuda za uthibitisho."</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"ona miunganisho ya mtandao"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"Inaruhusu programu kuangalia hali ya mitandao yote."</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"ufikiaji kamili wa mtandao"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Inaruhusu programu kuunda soketi za mtandao."</string>
@@ -513,36 +530,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"Inaruhusu programu kubadilisha hali ya muunganisho wa mtandao uliofungwa."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"badilisha mpangilio wa utumiaji data ya mandharinyuma"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Inaruhusu programu kubadilisha mpangilio wa matumizi ya data ya usuli."</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"ona miunganisho ya Wi-Fi"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"Inaruhusu programu kuona taarifa kuhusu hali ya Wi-Fi."</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"unganisha na utenganishe kutoka kwa Wi-Fi"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"Inaruhusu programu kuunganisha na kutenganisha kutoka kwa pointi za ufikivu za Wi-Fi, na kufanya mabadiliko kwa mitandao ya Wi-Fi iliyosanidiwa."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"ruhusu upokeaji wa Wi-Fi Multicast"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Inaruhusu programu kupata furushi amabazo hazijaelekezwa moja kwa moja kwa kifaa chako. Hii inaweza kuwa muhimu wakati wa kutambua huduma zinazotolewa karibu na eneo hilo. Inatumia nguvu zaidi kuliko mtindo wa kutupa mbali mbali.."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"fikia mipangilio ya Bluetooth"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Inaruhusu programu kusanidi kompyuta kibao ya karibu ya Bluetooth na kutambua na kuoanisha na vifaa vya kudhibiti."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Inaruhusu programu kusanidi simu ya karibu ya Bluetooth, na kutambua na kuoanisha na vifaa vya mbali."</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Ona miunganisho ya WiMAX"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Huruhusu programu kuona maelezo kuhusu hali ya WiMAX."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"Badilisha hali ya WiMAX"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Huruhusu programu kuunganisha na kutenganisha kutoka kwenye mtandao wa WiMAX."</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"oanisha na vifaa vya Bluetooth"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Inaruhusu programu kuona usanidi wa kompyuta kibao ya karibu ya Bluetooth, na kuwezesha na kukubali muunganisho na vifaa vilivyo oanishwa."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Inaruhusu programu kuangalia usanidi wa simu ya karibu ya Bluetooth, na kufanya na kukubali miunganisho na vifaa vilivyolinganishwa."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"dhibiti Mawasiliano Karibu na Uga"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Inaruhusu programu kuwasiliana na lebo, kadi na wasomaji wa Near Field Communication (NFC)."</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"lemaza kufuli la skrini yako"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Inaruhusu programu kulemaza kifunga kitufe na usalama wowote unaohusishwa na nenosiri. Mfano halisi wa hii ni simu kulemaza kifunga kitufe wakati wa kupokea simu inayoingia, kisha kuwezesha upya kifunga kitufe simu inapomalizika."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"soma mipangilio ya usawazishaji"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Inaruhusu programu kusoma mipangilio ya ulandanishi, kama vile ikiwa ulandanishi imewezeshwa kwa programu ya Watu."</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"washa na zima ulandanishi"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Inaruhusu programu kurekebisha mipangilio ya ulandanishi, kama vile ikiwa ulandanishi umewezeshwa kwa programu ya Watu."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"soma takwimu za usawazishaji"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"Inaruhu programu kusoma takwimu zilizolandanishwa; k.v., historia ya ulandanishi ambao umetokea."</string>
@@ -550,22 +560,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Inaruhusu programu kupata maelezo kuhusu mlisho iliyolandanishwa kwa sasa."</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"andika milisho ya kujiunga"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Inaruhusu programu kurekebisha milisho yako iliyolandanishwa kwa sasa. Programu hasidi zinaweza kubadilisha milisho yako iliyolandanishwa."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"soma maneno uliyoongeza kwenye kamusi"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Inaruhusu programu kusoma maneno, majina na vifungu vyovyote vya kibinafsi, ambavyo huenda mtumiaji amehifadhi katika kamusi ya mtumiaji."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"andika kwa kamusi iliyobainishwa na mtumiaji"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Inaruhusu programu kuandika maneno mapya katika kamusi ya mtumiaji."</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"soma maudhui ya hifadhi yako ya USB"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"soma maudhui ya kadi yako ya SD"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Huruhusu programu kusoma maudhui ya hifadhi ya USB, ambayo huenda ikajumuisha picha na midia."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Huruhusu programu kusoma maudhui ya kadi ya SD, ambayo huenda yakajumuisha picha na midia."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"rekebisha au ufute maudhui ya hifadhi yako ya USB"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Inaruhusu programu kuandikia hifadhi ya USB."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Inaruhusu programu kuandikia kadi ya SD."</string>
@@ -744,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Hakuna SIM kadi kwenye simu."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Ingiza SIM kadi."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"Kadi ya SIM haiko au haisomeki. Tafadhali ingiza SIM kadi."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"Kadi ya SIM isiyotumika."</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"SIM kadi yako imelemezwa kabisa."\n" Wasiliana na mtoa huduma wako wa pasi waya ili upate SIM kadi nyingine."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Kitufe cha awali cha wimbo"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Kitufe cha wimbo unaofuata"</string>
@@ -819,15 +824,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"Mtaa"</string>
<string name="autofill_area" msgid="3547409050889952423">"Eneo"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"Emirate"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"soma alamisho na historia ya Wavuti wako"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Inaruhusu programu kusoma URL zote ambazo Kivinjari kimetembelea, na alamisho zote za Kivinjari."</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"andika alamisho na historia ya wavuti"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Inaruhusu programu kurekebisha historia ya Kivinjari au alamisho zilizohifadhiwa katika kompyuta yako kibao. Programu hasidi zinaweza kutumia hii kufuta au kurekebisha data ya Kivinjari chako."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Inaruhusu programu kurekebisha historia au alamisho za Kivinjari zilizohifadhiwa katika simu yako. Programu hasidi zinaweza kutumia hii kufuta au kurekebisha data ya Kivinjari chako."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"weka kengele"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"Inaruhusu programu kuweka kengele katika programu iliyosakinishwa ya kengele. Programu zingine za kengele zinawezakosa kutekeleza kipengee hiki."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"ongeza barua ya sauti"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"Inaruhusu programu kuongeza jumbe kwenye kikasha cha ujumbe wa sauti."</string>
@@ -1087,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Weka tarehe"</string>
<string name="date_time_set" msgid="5777075614321087758">"Weka"</string>
<string name="date_time_done" msgid="2507683751759308828">"Imekamilika"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"Chaguo-msingi"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">" MPYA: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">" MPYA: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"Hakuna vibali vinavyohitajika"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"Ficha"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"Onyesha zote"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"Hifadhi kubwa ya USB"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"USB imeunganishwa"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"Umeunganisha kwenye kompyuta yako kupitia USB. Gusa kitufe hapa chini kama unataka kunakili faili kati ya kompyuta yako na hifadhi yako ya USB ya Android."</string>
@@ -1320,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"Inatuma…"</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"Zindua Kivinjari?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"Kubali simu?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-sw600dp-land/arrays.xml b/core/res/res/values-sw600dp-land/arrays.xml
index 6304bc0..6a09cf8 100644
--- a/core/res/res/values-sw600dp-land/arrays.xml
+++ b/core/res/res/values-sw600dp-land/arrays.xml
@@ -57,14 +57,14 @@
<array name="lockscreen_targets_with_camera">
<item>@drawable/ic_lockscreen_unlock</item>
- <item>@null</item>
+ <item>@drawable/ic_lockscreen_search</item>
<item>@drawable/ic_lockscreen_camera</item>
<item>@null</item>
</array>
<array name="lockscreen_target_descriptions_with_camera">
<item>@string/description_target_unlock</item>
- <item>@null</item>
+ <item>@string/description_target_search</item>
<item>@string/description_target_camera</item>
<item>@null</item>
</array>
diff --git a/core/res/res/values-sw600dp-w1024dp/dimens.xml b/core/res/res/values-sw600dp-w1024dp/dimens.xml
deleted file mode 100644
index 4d6a4da..0000000
--- a/core/res/res/values-sw600dp-w1024dp/dimens.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 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.
--->
-
-<resources>
- <!-- Increase size (used to be 0 for dual pane -->
- <!-- Preference activity side margins -->
- <dimen name="preference_screen_side_margin">48dp</dimen>
- <!-- Preference activity side margins negative-->
- <dimen name="preference_screen_side_margin_negative">-52dp</dimen>
-</resources>
diff --git a/tools/localize/testdata/res/values-zz-rZZ/strings.xml b/core/res/res/values-sw600dp-w960dp/dimens.xml
similarity index 71%
rename from tools/localize/testdata/res/values-zz-rZZ/strings.xml
rename to core/res/res/values-sw600dp-w960dp/dimens.xml
index c2a783d..724904e 100644
--- a/tools/localize/testdata/res/values-zz-rZZ/strings.xml
+++ b/core/res/res/values-sw600dp-w960dp/dimens.xml
@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2007 The Android Open Source Project
+<!-- Copyright (C) 2011 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.
@@ -14,9 +14,8 @@
limitations under the License.
-->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="changed_in_xx">AAAA</string>
- <string name="previously_translated">CCC</string>
+<resources>
+ <dimen name="preference_screen_header_padding_side">48dp</dimen>
+ <!-- Preference fragment padding, sides -->
+ <dimen name="preference_fragment_padding_side">48dp</dimen>
</resources>
-
-
diff --git a/core/res/res/values-sw600dp/bools.xml b/core/res/res/values-sw600dp/bools.xml
index e74379c..b8db31f 100644
--- a/core/res/res/values-sw600dp/bools.xml
+++ b/core/res/res/values-sw600dp/bools.xml
@@ -15,7 +15,5 @@
-->
<resources>
- <bool name="preferences_prefer_dual_pane">true</bool>
- <bool name="show_ongoing_ime_switcher">false</bool>
<bool name="target_honeycomb_needs_options_menu">false</bool>
</resources>
diff --git a/core/res/res/values-sw600dp/config.xml b/core/res/res/values-sw600dp/config.xml
index 7fa7658..b54e9d1 100644
--- a/core/res/res/values-sw600dp/config.xml
+++ b/core/res/res/values-sw600dp/config.xml
@@ -35,5 +35,10 @@
<!-- If true, the screen can be rotated via the accelerometer in all 4
rotations as the default behavior. -->
<bool name="config_allowAllRotations">true</bool>
+
+ <!-- Maximum number of grid columns permitted in the ResolverActivity
+ used for picking activities to handle an intent. -->
+ <integer name="config_maxResolverActivityColumns">3</integer>
+
</resources>
diff --git a/core/res/res/values-sw600dp/dimens.xml b/core/res/res/values-sw600dp/dimens.xml
index 4514760..61136e3 100644
--- a/core/res/res/values-sw600dp/dimens.xml
+++ b/core/res/res/values-sw600dp/dimens.xml
@@ -47,12 +47,6 @@
<!-- Size of status line font in LockScreen. -->
<dimen name="keyguard_pattern_unlock_status_line_font_size">14sp</dimen>
- <!-- Preference activity, vertical padding for the header list -->
- <dimen name="preference_screen_header_vertical_padding">32dp</dimen>
- <dimen name="preference_screen_side_margin">0dp</dimen>
- <!-- Compensate for double margin : preference_screen_side_margin + 4 (frame background shadow) = -preference_screen_side_margin_negative -->
- <dimen name="preference_screen_side_margin_negative">-4dp</dimen>
-
<!-- Default padding to apply to AppWidgetHostViews containing widgets targeting API level 14 and up. -->
<dimen name="default_app_widget_padding_left">12dp</dimen>
<dimen name="default_app_widget_padding_top">4dp</dimen>
@@ -64,10 +58,10 @@
<!-- The platform's desired fixed width for a dialog along the major axis
(the screen is in landscape). This may be either a fraction or a dimension.-->
- <item type="dimen" name="dialog_fixed_width_major">50%</item>
+ <item type="dimen" name="dialog_fixed_width_major">60%</item>
<!-- The platform's desired fixed width for a dialog along the minor axis
(the screen is in portrait). This may be either a fraction or a dimension.-->
- <item type="dimen" name="dialog_fixed_width_minor">70%</item>
+ <item type="dimen" name="dialog_fixed_width_minor">90%</item>
<!-- The platform's desired fixed height for a dialog along the major axis
(the screen is in portrait). This may be either a fraction or a dimension.-->
<item type="dimen" name="dialog_fixed_height_major">60%</item>
@@ -78,5 +72,9 @@
<!-- Height of the bottom navigation bar in portrait; on sw600dp devices
this is a bit taller -->
<dimen name="navigation_bar_height_portrait">56dp</dimen>
+
+ <!-- Preference fragment padding, sides -->
+ <dimen name="preference_fragment_padding_side">24dp</dimen>
+ <dimen name="preference_screen_header_padding_side">24dip</dimen>
</resources>
diff --git a/core/res/res/values-sw600dp/styles.xml b/core/res/res/values-sw600dp/styles.xml
index f9e95b7..7dea9b8 100644
--- a/core/res/res/values-sw600dp/styles.xml
+++ b/core/res/res/values-sw600dp/styles.xml
@@ -25,12 +25,4 @@
<item name="android:measureWithLargestChild">true</item>
<item name="android:tabLayout">@android:layout/tab_indicator_holo</item>
</style>
-
- <style name="PreferencePanel">
- <item name="android:layout_marginLeft">@dimen/preference_screen_side_margin</item>
- <item name="android:layout_marginRight">@dimen/preference_screen_side_margin</item>
- <item name="android:layout_marginTop">@dimen/preference_screen_top_margin</item>
- <item name="android:layout_marginBottom">@dimen/preference_screen_bottom_margin</item>
- <item name="android:background">?attr/detailsElementBackground</item>
- </style>
</resources>
diff --git a/core/res/res/values-sw600dp-w1280dp/dimens.xml b/core/res/res/values-sw720dp-w1280dp/dimens.xml
similarity index 100%
rename from core/res/res/values-sw600dp-w1280dp/dimens.xml
rename to core/res/res/values-sw720dp-w1280dp/dimens.xml
diff --git a/tools/localize/testdata/merge_xx_old.xml b/core/res/res/values-sw720dp/bools.xml
similarity index 72%
rename from tools/localize/testdata/merge_xx_old.xml
rename to core/res/res/values-sw720dp/bools.xml
index 9d3a7d8..7d5813f 100644
--- a/tools/localize/testdata/merge_xx_old.xml
+++ b/core/res/res/values-sw720dp/bools.xml
@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2007 The Android Open Source Project
+<!-- Copyright (C) 2012 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.
@@ -14,8 +14,6 @@
limitations under the License.
-->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="changed_in_xx">aaa</string>
- <string name="previously_translated">CCC</string>
+<resources>
+ <bool name="preferences_prefer_dual_pane">true</bool>
</resources>
-
diff --git a/tools/localize/testdata/merge_xx_old.xml b/core/res/res/values-sw720dp/config.xml
similarity index 69%
copy from tools/localize/testdata/merge_xx_old.xml
copy to core/res/res/values-sw720dp/config.xml
index 9d3a7d8..9792835 100644
--- a/tools/localize/testdata/merge_xx_old.xml
+++ b/core/res/res/values-sw720dp/config.xml
@@ -1,21 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2007 The Android Open Source Project
+<!-- Copyright (C) 2012 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.
-->
+<resources>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="changed_in_xx">aaa</string>
- <string name="previously_translated">CCC</string>
+ <!-- Maximum number of grid columns permitted in the ResolverActivity
+ used for picking activities to handle an intent. -->
+ <integer name="config_maxResolverActivityColumns">4</integer>
+
</resources>
-
diff --git a/core/res/res/values-sw720dp/dimens.xml b/core/res/res/values-sw720dp/dimens.xml
index cac5aab..34c7ea3 100644
--- a/core/res/res/values-sw720dp/dimens.xml
+++ b/core/res/res/values-sw720dp/dimens.xml
@@ -20,6 +20,50 @@
<!-- Height of the bottom navigation bar in portrait; on sw720dp devices
this is the same as the height in landscape -->
<dimen name="navigation_bar_height_portrait">@dimen/navigation_bar_height</dimen>
+
+ <!-- The platform's desired fixed width for a dialog along the major axis
+ (the screen is in landscape). This may be either a fraction or a dimension.-->
+ <item type="dimen" name="dialog_fixed_width_major">50%</item>
+ <!-- The platform's desired fixed width for a dialog along the minor axis
+ (the screen is in portrait). This may be either a fraction or a dimension.-->
+ <item type="dimen" name="dialog_fixed_width_minor">70%</item>
+ <!-- The platform's desired fixed height for a dialog along the major axis
+ (the screen is in portrait). This may be either a fraction or a dimension.-->
+ <item type="dimen" name="dialog_fixed_height_major">60%</item>
+ <!-- The platform's desired fixed height for a dialog along the minor axis
+ (the screen is in landscape). This may be either a fraction or a dimension.-->
+ <item type="dimen" name="dialog_fixed_height_minor">90%</item>
+
+ <!-- The width that is used when creating thumbnails of applications. -->
+ <dimen name="thumbnail_width">230dp</dimen>
+ <!-- The height that is used when creating thumbnails of applications. -->
+ <dimen name="thumbnail_height">135dp</dimen>
+
+ <!-- Preference activity, vertical padding for the header list -->
+ <dimen name="preference_screen_header_vertical_padding">32dp</dimen>
+ <dimen name="preference_screen_side_margin">0dp</dimen>
+ <!-- Compensate for double margin : preference_screen_side_margin + 4 (frame background shadow) = -preference_screen_side_margin_negative -->
+ <dimen name="preference_screen_side_margin_negative">-4dp</dimen>
+
+ <!-- Preference fragment padding, bottom -->
+ <dimen name="preference_fragment_padding_bottom">16dp</dimen>
+ <dimen name="preference_screen_header_padding_side">0dip</dimen>
+ <integer name="preference_screen_header_scrollbarStyle">0x0</integer> <!-- insideOverlay -->
+
+ <!-- Preference fragment padding, sides -->
+ <dimen name="preference_fragment_padding_side">32dp</dimen>
+ <!-- Padding to the left of the preference panel breadcrumb -->
+ <dimen name="preference_breadcrumb_paddingLeft">32dp</dimen>
+ <!-- Padding to the right of the preference panel breadcrumb -->
+ <dimen name="preference_breadcrumb_paddingRight">32dp</dimen>
+ <!-- Weight of the left pane in a multi-pane preference layout. -->
+ <integer name="preferences_left_pane_weight">1</integer>
+ <!-- Weight of the right pane in a multi-pane preference layout. So the split is 1:2 -->
+ <integer name="preferences_right_pane_weight">2</integer>
+ <!-- Minimum space to allocate to the left of a preference item for an icon.
+ This helps in aligning titles when some items have icons and some don't. When space is
+ at a premium, we don't pre-allocate any space. -->
+ <dimen name="preference_icon_minWidth">56dp</dimen>
</resources>
diff --git a/core/res/res/values-sw720dp/styles.xml b/core/res/res/values-sw720dp/styles.xml
new file mode 100644
index 0000000..640e898
--- /dev/null
+++ b/core/res/res/values-sw720dp/styles.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 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.
+-->
+
+<resources>
+ <style name="PreferencePanel">
+ <item name="android:layout_marginLeft">@dimen/preference_screen_side_margin</item>
+ <item name="android:layout_marginRight">@dimen/preference_screen_side_margin</item>
+ <item name="android:layout_marginTop">@dimen/preference_screen_top_margin</item>
+ <item name="android:layout_marginBottom">@dimen/preference_screen_bottom_margin</item>
+ <item name="android:background">?attr/detailsElementBackground</item>
+ </style>
+</resources>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index 9e7a0e6..c47a3ac 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"ข้อความของคุณ"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"อ่านและเขียน SMS อีเมล และข้อความอื่นๆ ของคุณ"</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"ข้อมูลส่วนบุคคลของคุณ"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"การเข้าถึงสมุดโทรศัพท์และปฏิทินที่จัดเก็บอยู่บนแท็บเล็ตโดยตรง"</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"เข้าถึงที่อยู่ติดต่อและปฏิทินของที่จัดเก็บบนโทรศัพท์โดยตรง"</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"เข้าถึงข้อมูลเกี่ยวกับคุณซึ่งจัดเก็บไว้ในบัตรผู้ติดต่อของคุณได้โดยตรง"</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"ข้อมูลทางสังคมของคุณ"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"เข้าถึงข้อมูลเกี่ยวกับผู้ติดต่อและเครือข่ายสังคมของคุณโดยตรง"</string>
<string name="permgrouplab_location" msgid="635149742436692049">"ตำแหน่งของคุณ"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"ตรวจดูตำแหน่งทางกายภาพของคุณ"</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"การสื่อสารของเครือข่าย"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"เข้าถึงคุณลักษณะเครือข่ายต่างๆ"</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"การตั้งค่าเสียง"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"เปลี่ยนการตั้งค่าเสียง"</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"มีผลต่อแบตเตอรี่"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"ใช้คุณลักษณะที่ทำให้พลังงานแบตเตอรี่ลดลงอย่างรวดเร็ว"</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"ปฏิทิน"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"เข้าถึงปฏิทินและกิจกรรมโดยตรง"</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"บุ๊กมาร์กและประวัติ"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"เข้าถึงบุ๊กมาร์กและประวัติของเบราว์เซอร์โดยตรง"</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"เตือน"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"ตั้งนาฬิกาปลุก"</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"ข้อความเสียง"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"เข้าถึงข้อความเสียงโดยตรง"</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"ไมโครโฟน"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"เข้าถึงไมโครโฟนเพื่อบันทึกเสียงโดยตรง"</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"กล้องถ่ายรูป"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"เข้าถึงกล้องถ่ายรูปเพื่อดูภาพและวิดีโอที่ถ่ายไว้โดยตรง"</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"ข้อมูลแอปพลิเคชันของคุณ"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"สามารถส่งผลต่อการทำงานของแอปพลิเคชันอื่นในอุปกรณ์ของคุณ"</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"วอลเปเปอร์"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"เปลี่ยนการตั้งค่าวอลเปเปอร์ของอุปกรณ์"</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"นาฬิกา"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"เปลี่ยนเวลาหรือเขตเวลาของอุปกรณ์"</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"แถบสถานะ"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"เปลี่ยนการตั้งค่าแถบสถานะของอุปกรณ์"</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"การตั้งค่าการซิงค์"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"เข้าถึงการตั้งค่าการซิงค์"</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"บัญชีของคุณ"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"เข้าถึงบัญชีที่ใช้งานได้"</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"การควบคุมฮาร์ดแวร์"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"การเข้าถึงและควบคุมของระบบในระดับต่ำ"</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"เครื่องมือในการพัฒนา"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"คุณลักษณะที่จำเป็นสำหรับนักพัฒนาแอปพลิเคชันเท่านั้น"</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"UI แอปพลิเคชันอื่นๆ"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"ส่งผลต่อ UI ของแอปพลิเคชันอื่น"</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"พื้นที่เก็บข้อมูล"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"เข้าถึงที่เก็บข้อมูล USB"</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"เข้าถึงการ์ด SD"</string>
@@ -193,14 +238,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"อนุญาตให้แอปพลิเคชันเป็นแถบสถานะ"</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"ขยาย/ยุบแถบสถานะ"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"อนุญาตให้แอปพลิเคชันขยายหรือยุบแถบสถานะ"</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"จัดเส้นทางการโทรออกใหม่"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"อนุญาตให้แอปพลิเคชันประมวลผลการโทรออกและเปลี่ยนแปลงหมายเลขที่จะโทรไป แอปพลิเคชันที่เป็นอันตรายอาจตรวจสอบ เปลี่ยนเส้นทาง หรือกีดขวางไม่ให้โทรออกได้"</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"รับข้อความ (SMS)"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"อนุญาตให้แอปพลิเคชันรับและประมวลผลข้อความ SMS แอปพลิเคชันที่เป็นอันตรายอาจตรวจสอบข้อความของคุณหรือลบออกโดยไม่แสดงให้คุณเห็น"</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"รับข้อความ (MMS)"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"อนุญาตให้แอปพลิเคชันรับและประมวลผลข้อความ MMS แอปพลิเคชันที่เป็นอันตรายอาจตรวจสอบข้อความของคุณหรือลบออกโดยไม่แสดงให้คุณเห็น"</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"ได้รับการกระจายข้อความฉุกเฉิน"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"อนุญาตให้แอปพลิเคชันรับและประมวลผลข้อความที่เผยแพร่กรณีฉุกเฉิน การอนุญาตนี้ใช้ได้เฉพาะกับแอปพลิเคชันระบบเท่านั้น"</string>
@@ -210,20 +252,17 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"อนุญาตให้แอปพลิเคชันส่งข้อความ SMS แอปพลิเคชันที่เป็นอันตรายอาจทำให้คุณต้องเสียค่าใช้จ่ายด้วยการส่งข้อความโดยไม่มีการยืนยันจากคุณ"</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"ส่งข้อความ SMS โดยไม่มีการยืนยัน"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"อนุญาตให้แอปพลิเคชันส่งข้อความ SMS แอปพลิเคชันที่เป็นอันตรายอาจทำให้คุณต้องเสียค่าใช้จ่ายด้วยการส่งข้อความโดยไม่มีการยืนยันจากคุณ"</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"อ่านข้อความของคุณ (SMS หรือ MMS)"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"อนุญาตให้แอปพลิเคชันอ่านข้อความ SMS ที่เก็บไว้ในแท็บเล็ตหรือซิมการ์ดของคุณ แอปพลิเคชันที่เป็นอันตรายอาจอ่านข้อความที่เป็นความลับของคุณ"</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"อนุญาตให้แอปพลิเคชันอ่านข้อความ SMS ที่เก็บไว้ในโทรศัพท์หรือซิมการ์ดของคุณ แอปพลิเคชันที่เป็นอันตรายอาจอ่านข้อความที่เป็นความลับของคุณ"</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"แก้ไขข้อความของคุณ (SMS หรือ MMS)"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"อนุญาตให้แอปพลิเคชันเขียนลงในข้อความ SMS ที่เก็บไว้ในแท็บเล็ตหรือซิมการ์ดของคุณ แอปพลิเคชันที่เป็นอันตรายอาจลบข้อความของคุณทิ้ง"</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"อนุญาตให้แอปพลิเคชันเขียนลงในข้อความ SMS ที่เก็บไว้ในโทรศัพท์หรือซิมการ์ดของคุณ แอปพลิเคชันที่เป็นอันตรายอาจลบข้อความของคุณทิ้ง"</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"รับข้อความ (WAP)"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"อนุญาตให้แอปพลิเคชันรับและประมวลผลข้อความ WAP แอปพลิเคชันที่เป็นอันตรายอาจตรวจสอบข้อความของคุณหรือลบออกโดยไม่แสดงให้คุณเห็น"</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"เรียกแอปพลิเคชันที่ทำงานอยู่"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"อนุญาตให้แอปพลิเคชันดึงข้อมูลเกี่ยวกับงานที่กำลังเรียกใช้อยู่ในปัจจุบันและงานล่าสุด แอปพลิเคชันที่เป็นอันตรายอาจค้นพบข้อมูลเฉพาะตัวเกี่ยวกับแอปพลิเคชันอื่นๆ"</string>
- <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"ดึงรายละเอียดของแอปพลิเคชันที่ทำงานอยู่"</string>
+ <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"ดึงรายละเอียดของแอปที่ทำงานอยู่"</string>
<string name="permdesc_getDetailedTasks" msgid="153824741440717599">"อนุญาตให้แอปพลิเคชันดึงข้อมูลเกี่ยวกับงานที่กำลังเรียกใช้อยู่ในปัจจุบันและงานล่าสุด แอปพลิเคชันที่เป็นอันตรายอาจค้นพบข้อมูลเฉพาะตัวเกี่ยวกับแอปพลิเคชันอื่นๆ"</string>
<string name="permlab_reorderTasks" msgid="2018575526934422779">"จัดลำดับแอปพลิเคชันที่ทำงานอยู่ใหม่"</string>
<string name="permdesc_reorderTasks" msgid="4175137612205663399">"อนุญาตให้แอปพลิเคชันย้ายงานไปยังส่วนหน้าและพื้นหลัง แอปพลิเคชันที่เป็นอันตรายอาจบังคับตัวเองให้ไปที่ส่วนหน้าโดยไม่มีการควบคุมจากคุณ"</string>
@@ -235,13 +274,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"อนุญาตให้แอปพลิเคชันควบคุมโหมดความเข้ากันได้ของหน้าจอของแอปพลิเคชันอื่น แอปพลิเคชันที่เป็นอันตรายอาจทำให้แอปพลิเคชันอื่นทำงานผิดพลาด"</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"เปิดใช้งานการแก้ไขบกพร่องของแอปพลิเคชัน"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"อนุญาตให้แอปพลิเคชันเปิดการแก้ไขข้อบกพร่องสำหรับแอปพลิเคชันอื่น แอปพลิเคชันที่เป็นอันตรายอาจใช้การอนุญาตนี้ยุติการทำงานของแอปพลิเคชันอื่นๆ ได้"</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"เปลี่ยนการตั้งค่าการแสดงผลของระบบ"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"อนุญาตให้แอปพลิเคชันเปลี่ยนการกำหนดค่าปัจจุบัน เช่น ภาษาหรือขนาดตัวอักษรโดยรวม"</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"เปิดใช้งานโหมดใช้ในรถยนต์"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"อนุญาตให้แอปพลิเคชันเปิดใช้งานโหมดรถยนต์"</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"ปิดแอปอื่นๆ"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"อนุญาตให้แอปพลิเคชันยุติกระบวนการในพื้นหลังของแอปพลิเคชันอื่นๆ แม้ว่าหน่วยความจำจะยังไม่ลดลงต่ำ"</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"บังคับให้แอปพลิเคชันอื่นๆ หยุดทำงาน"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"อนุญาตให้แอปพลิเคชันบังคับแอปพลิเคชันอื่นให้หยุดทำงาน"</string>
@@ -265,8 +302,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"อนุญาตให้แอปพลิเคชันกระจายข้อมูลการแจ้งเตือนว่าได้รับข้อความ WAP PUSH แอปพลิเคชันที่เป็นอันตรายอาจใช้การอนุญาตนี้ปลอมการแจ้งรับข้อความ MMS หรือแอบเปลี่ยนเนื้อหาในหน้าเว็บโดยใช้ตัวแปรที่เป็นอันตราย"</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"จำกัดจำนวนกระบวนการที่กำลังทำงาน"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"อนุญาตให้แอปพลิเคชันควบคุมจำนวนสูงสุดของกระบวนการที่จะเรียกใช้ ไม่จำเป็นต้องใช้สำหรับแอปพลิเคชันทั่วไป"</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"บังคับปิดแอปพลิเคชันในพื้นหลัง"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"อนุญาตให้แอปพลิเคชันควบคุมว่ากิจกรรมจะสิ้นสุดทันทีที่เข้าสู่พื้นหลังเสมอหรือไม่ ไม่จำเป็นต้องใช้สำหรับแอปพลิเคชันทั่วไป"</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"แก้ไขสถิติแบตเตอรี่"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"อนุญาตให้แอปพลิเคชันแก้ไขสถิติของแบตเตอรี่ที่เก็บรวบรวมไว้ ไม่ใช้สำหรับแอปพลิเคชันทั่วไป"</string>
@@ -276,8 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"อนุญาตให้แอปพลิเคชันเปิดส่วนติดต่อผู้ใช้สำหรับยืนยันการสำรองข้อมูลเต็มรูปแบบ การอนุญาตนี้ไม่ใช้กับแอปพลิเคชันทั่วไป"</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"แสดงหน้าต่างที่ไม่ได้รับอนุญาต"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"อนุญาตให้แอปพลิเคชันสร้างหน้าต่างสำหรับให้ใช้โดยส่วนติดต่อผู้ใช้ของระบบภายใน ไม่ใช้สำหรับแอปพลิเคชันทั่วไป"</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"ปิดคลุมแอปอื่นๆ"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"อนุญาตให้แอปพลิเคชันแสดงหน้าต่างการแจ้งเตือนของระบบ แอปพลิเคชันที่เป็นอันตรายอาจเข้าควบคุมทั้งหน้าจอ"</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"แก้ไขความเร็วภาพเคลื่อนไหวสากล"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"อนุญาตให้แอปพลิเคชันเปลี่ยนความเร็วในการเคลื่อนไหวทั่วไป (ภาพเคลื่อนไหวได้เร็วขึ้นหรือช้าลง) ได้ตลอดเวลา"</string>
@@ -339,26 +374,22 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"อนุญาตให้แอปพลิเคชันให้หรือยกเลิกการอนุญาตบางอย่างของตัวเองหรือแอปพลิเคชันอื่น แอปพลิเคชันที่เป็นอันตรายอาจใช้การทำงานนี้ในการเข้าถึงคุณลักษณะที่คุณไม่อนุญาต"</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"ตั้งค่าแอปพลิเคชันที่ต้องการ"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"อนุญาตให้แอปพลิเคชันแก้ไขแอปพลิเคชันต่างๆ ที่คุณชอบใช้ แอปพลิเคชันที่เป็นอันตรายอาจจะแอบเปลี่ยนแอปพลิเคชันที่กำลังทำงาน ปลอมแปลงเป็นแอปพลิเคชันที่มีอยู่ของคุณเพื่อรวบรวมข้อมูลส่วนบุคคลจากคุณ"</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"แก้ไขการตั้งค่าระบบ"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"อนุญาตให้แอปพลิเคชันแก้ไขข้อมูลการตั้งค่าของระบบ แอปพลิเคชันที่เป็นอันตรายอาจทำให้การกำหนดค่าระบบของคุณเสียหาย"</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"แก้ไขการตั้งค่าระบบความปลอดภัย"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"อนุญาตให้แอปพลิเคชันแก้ไขข้อมูลการตั้งค่าความปลอดภัยของระบบ ไม่ใช้สำหรับแอปพลิเคชันทั่วไป"</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"แก้ไขแผนที่ของบริการ Google"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"อนุญาตให้แอปพลิเคชันแก้ไขแผนที่บริการของ Google ไม่ใช้สำหรับแอปพลิเคชันทั่วไป"</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"ทำงานเมื่อเริ่มต้น"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"อนุญาตให้แอปพลิเคชันเริ่มต้นตัวเองทันทีที่ระบบบูตเสร็จสิ้น ซึ่งจะทำให้การเริ่มต้นแท็บเล็ตใช้เวลานานกว่าปกติและแอปพลิเคชันจะทำให้การทำงานของแท็บเล็ตโดยรวมช้าลงด้วยการทำงานอยู่ตลอดเวลา"</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"อนุญาตให้แอปพลิเคชันเริ่มต้นตัวเองทันทีที่ระบบบูตเสร็จสิ้น ซึ่งจะทำให้การเริ่มต้นโทรศัพท์ใช้เวลานานกว่าปกติและแอปพลิเคชันจะทำให้การทำงานของโทรศัพท์โดยรวมช้าลงด้วยการทำงานอยู่ตลอดเวลา"</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"ส่งการกระจายข้อมูลที่ติดหนึบ"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"อนุญาตให้แอปพลิเคชันส่งการกระจายข้อมูลที่ติดหนึบ ซึ่งจะยังคงอยู่หลังจากการกระจายข้อมูลจบไปแล้ว แอปพลิเคชันที่เป็นอันตรายอาจทำให้แท็บเล็ตทำงานช้าลงหรือไม่เสถียรโดยการใช้หน่วยความจำมากเกินไป"</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"อนุญาตให้แอปพลิเคชันส่งการกระจายข้อมูลที่ติดหนึบ ซึ่งจะยังคงอยู่หลังจากการกระจายข้อมูลจบไปแล้ว แอปพลิเคชันที่เป็นอันตรายอาจทำให้โทรศัพท์ทำงานช้าลงหรือไม่เสถียรโดยการใช้หน่วยความจำมากเกินไป"</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
+ <string name="permlab_readContacts" msgid="8348481131899886131">"อ่านผู้ติดต่อของคุณ"</string>
<string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"อนุญาตให้แอปพลิเคชันอ่านข้อมูลทั้งหมดเกี่ยวกับผู้ติดต่อที่จัดเก็บไว้ในแท็บเล็ตของคุณ รวมถึงความถี่ที่คุณโทรหา ส่งอีเมล หรือสื่อสารในรูปแบบอื่นกับคนบางคน ซึ่งจะช่วยให้ระบบสามารถเติมที่อยู่อีเมลและให้คุณลักษณะเพื่ออำนวยความสะดวกสบายอื่นๆ โดยอัตโนมัติ แอปพลิเคชันที่เป็นอันตรายสามารถใช้การอนุญาตนี้ในการส่งข้อมูลผู้ติดต่อของคุณไปยังบุคคลอื่น"</string>
<string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"อนุญาตให้แอปพลิเคชันอ่านข้อมูลทั้งหมดเกี่ยวกับผู้ติดต่อที่จัดเก็บไว้ในโทรศัพท์ของคุณ รวมถึงความถี่ที่คุณโทรหา ส่งอีเมล หรือสื่อสารในรูปแบบอื่นกับคนบางคน ซึ่งจะช่วยให้ระบบสามารถเติมที่อยู่อีเมลและให้คุณลักษณะเพื่ออำนวยความสะดวกสบายอื่นๆ โดยอัตโนมัติ แอปพลิเคชันที่เป็นอันตรายสามารถใช้การอนุญาตนี้ในการส่งข้อมูลผู้ติดต่อของคุณไปยังบุคคลอื่น"</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"แก้ไขผู้ติดต่อของคุณ"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"อนุญาตให้แอปพลิเคชันแก้ไขข้อมูลเกี่ยวกับผู้ติดต่อที่จัดเก็บไว้ในแท็บเล็ตของคุณ รวมถึงความถี่ที่คุณโทรหา ส่งอีเมล หรือสื่อสารในรูปแบบอื่นกับคนบางคน ซึ่งจะช่วยให้ระบบสามารถเติมที่อยู่อีเมลและให้คุณลักษณะเพื่ออำนวยความสะดวกสบายอื่นๆ โดยอัตโนมัติ แอปพลิเคชันที่เป็นอันตรายสามารถใช้คุณลักษณะนี้ในการลบหรือแก้ไขข้อมูลผู้ติดต่อของคุณ"</string>
<string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"อนุญาตให้แอปพลิเคชันแก้ไขข้อมูลเกี่ยวกับผู้ติดต่อที่จัดเก็บไว้ในโทรศัพท์ของคุณ รวมถึงความถี่ที่คุณโทรหา ส่งอีเมล หรือสื่อสารในรูปแบบอื่นกับคนบางคน ซึ่งจะช่วยให้ระบบสามารถเติมที่อยู่อีเมลและให้คุณลักษณะเพื่ออำนวยความสะดวกสบายอื่นๆ โดยอัตโนมัติ แอปพลิเคชันที่เป็นอันตรายสามารถใช้คุณลักษณะนี้ในการลบหรือแก้ไขข้อมูลผู้ติดต่อของคุณ"</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"อ่านประวัติการโทร"</string>
@@ -367,11 +398,9 @@
<string name="permlab_writeCallLog" msgid="8552045664743499354">"เขียนประวัติการโทร"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"อนุญาตให้แอปแก้ไขประวัติการโทรจากแท็บเล็ตของคุณ รวมถึงข้อมูลเกี่ยวกับสายเรียกเข้าและการโทรออก แอปที่เป็นอันตรายอาจใช้สิ่งนี้เพื่อลบหรือแก้ไขประวัติการโทรของคุณ"</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"อนุญาตให้แอปแก้ไขประวัติการโทรจากโทรศัพท์ของคุณ รวมถึงข้อมูลเกี่ยวกับสายเรียกเข้าและการโทรออก แอปที่เป็นอันตรายอาจใช้สิ่งนี้เพื่อลบหรือแก้ไขประวัติการโทรของคุณ"</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"อ่านบัตรผู้ติดต่อของคุณเอง"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"อนุญาตให้แอปพลิเคชันอ่านข้อมูลโปรไฟล์ส่วนบุคคลที่เก็บไว้บนอุปกรณ์ของคุณ เช่น ชื่อและข้อมูลติดต่อ ซึ่งหมายความว่าแอปพลิเคชันจะสามารถระบุตัวตนของคุณและส่งข้อมูลโปรไฟล์ของคุณแก่ผู้อื่นได้"</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"แก้ไขบัตรผู้ติดต่อของคุณเอง"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"อนุญาตให้แอปพลิเคชันเปลี่ยนแปลงหรือเพิ่มข้อมูลโปรไฟล์ส่วนบุคคลที่เก็บไว้ในอุปกรณ์ของคุณ เช่น ชื่อและข้อมูลติดต่อ ซึ่งหมายความว่าแอปพลิเคชันอื่นๆ จะสามารถระบุตัวตนของคุณและส่งข้อมูลโปรไฟล์ของคุณแก่ผู้อื่นได้"</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"อ่านสตรีมเครือข่ายสังคม"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"อนุญาตให้แอปพลิเคชันเข้าถึงและซิงค์การอัปเดตในเครือข่ายสังคมจากคุณและเพื่อน แอปพลิเคชันที่เป็นอันตรายอาจใช้การอนุญาตนี้เพื่ออ่านการติดต่อส่วนตัวระหว่างคุณกับเพื่อนในเครือข่ายสังคมได้"</string>
@@ -412,15 +441,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"บังคับให้โทรศัพท์รีบูต"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"อนุญาตให้แอปพลิเคชันบังคับให้แท็บเล็ตรีบูต"</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"อนุญาตให้แอปพลิเคชันบังคับโทรศัพท์ให้รีบูต"</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"เข้าถึงระบบไฟล์ของ USB"</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"เข้าถึงระบบไฟล์ของการ์ด SD"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"อนุญาตให้แอปพลิเคชันต่อเชื่อมและยกเลิกการต่อเชื่อมระบบไฟล์สำหรับที่เก็บข้อมูลแบบถอดได้"</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"ลบที่จัดเก็บข้อมูล USB"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"ลบการ์ด SD"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"อนุญาตให้แอปพลิเคชันฟอร์แมตที่เก็บข้อมูลแบบถอดได้"</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"รับข้อมูลบนที่เก็บข้อมูลภายใน"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"อนุญาตให้แอปพลิเคชันดึงข้อมูลจากที่จัดเก็บข้อมูลภายใน"</string>
@@ -432,8 +457,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"อนุญาตให้แอปพลิเคชันต่อเชื่อม/ยกเลิกการต่อเชื่อมที่จัดเก็บข้อมูลภายใน"</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"เปลี่ยนชื่อที่เก็บข้อมูลภายใน"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"อนุญาตให้แอปพลิเคชันเปลี่ยนชื่อที่จัดเก็บข้อมูลภายใน"</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"ควบคุมการสั่นเตือน"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"อนุญาตให้แอปพลิเคชันควบคุมการสั่นเตือน"</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"ควบคุมไฟฉาย"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"อนุญาตให้แอปพลิเคชันควบคุมไฟฉาย"</string>
@@ -458,8 +482,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"อนุญาตให้แอปพลิเคชันบอกระบบว่าวิดเจ็ตใดสามารถใช้กับแอปพลิเคชันใด แอปพลิเคชันที่ได้รับอนุญาตอาจให้สิทธิ์การเข้าถึงข้อมูลส่วนบุคคลแก่แอปพลิเคชันอื่นๆ ไม่ใช้สำหรับแอปพลิเคชันทั่วไป"</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"แก้ไขสถานะโทรศัพท์"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"อนุญาตให้แอปพลิชันควบคุมคุณลักษณะโทรศัพท์ของอุปกรณ์ แอปพลิเคชันที่ได้รับอนุญาตจะสามารถสลับเครือข่าย เปิดและปิดวิทยุในโทรศัพท์ และคุณลักษณะอื่นที่คล้ายกันนี้ได้โดยไม่ต้องแจ้งให้คุณทราบ"</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"อ่านสถานะและข้อมูลระบุตัวตนของโทรศัพท์"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"อนุญาตให้แอปพลิเคชันเข้าถึงคุณลักษณะโทรศัพท์ของอุปกรณ์ แอปพลิเคชันที่ได้รับอนุญาตจะสามารถกำหนดหมายเลขโทรศัพท์และหมายเลขซีเรียลของโทรศัพท์นี้ มีการโทรอยู่หรือไม่ หมายเลขที่เชื่อมต่อกับการโทร และอื่นๆ ในลักษณะเดียวกัน"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"ป้องกันไม่ให้แท็บเล็ตเข้าสู่โหมดสลีป"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"ป้องกันไม่ให้โทรศัพท์เข้าโหมดสลีป"</string>
@@ -474,8 +497,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"เรียกใช้การทดสอบจากผู้ผลิตในระดับต่ำ โดยอนุญาตให้เข้าถึงฮาร์ดแวร์โทรศัพท์อย่างสมบูรณ์ ใช้ได้เฉพาะช่วงที่โทรศัพท์ทำงานในโหมดการทดสอบจากผู้ผลิตเท่านั้น"</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"ตั้งค่าวอลเปเปอร์"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"อนุญาตให้แอปพลิเคชันตั้งค่าวอลเปเปอร์ระบบ"</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"ปรับขนาดวอลเปเปอร์ของคุณ"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"อนุญาตให้แอปพลิเคชันตั้งค่าคำแนะนำขนาดวอลเปเปอร์ของระบบ"</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"รีเซ็ตระบบเป็นค่าเริ่มต้นจากโรงงาน"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"อนุญาตให้แอปพลิเคชันรีเซ็ตระบบทั้งหมดเป็นค่าเริ่มต้นจากโรงงาน ลบข้อมูลทั้งหมด การกำหนดค่า และแอปพลิเคชันที่ติดตั้งไว้"</string>
@@ -487,21 +509,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"อนุญาตให้แอปพลิเคชันเปลี่ยนแปลงเขตเวลาของโทรศัพท์"</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"ทำหน้าที่เป็น AccountManagerService"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"อนุญาตให้แอปพลิเคชันโทรไปยัง AccountAuthenticators"</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"ค้นหาบัญชีในอุปกรณ์"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"อนุญาตให้แอปพลิเคชันเรียกรายการบัญชีที่แท็บเล็ตรู้จัก"</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"อนุญาตให้แอปพลิเคชันเรียกรายการบัญชีที่โทรศัพท์รู้จัก"</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"สร้างบัญชีและตั้งรหัสผ่าน"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"อนุญาตให้แอปพลิเคชันใช้ตัวตรวจสอบสิทธิ์บัญชีของ AccountManager รวมถึงการสร้างบัญชีและรับและตั้งค่ารหัสผ่าน"</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"เพิ่มหรือนำบัญชีออก"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"อนุญาตให้แอปพลิเคชันดำเนินการต่างๆ เช่น การเพิ่มและนำบัญชีออก รวมถึงการลบรหัสผ่านของบัญชี"</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"ใช้งานบัญชีในอุปกรณ์"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"อนุญาตให้แอปพลิเคชันขอโทเค็นการตรวจสอบสิทธิ์"</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"ดูการเชื่อมต่อเครือข่าย"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"อนุญาตให้แอปพลิเคชันดูสถานะของเครือข่ายทั้งหมด"</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"การเข้าถึงอินเทอร์เน็ตเต็มรูปแบบ"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"อนุญาตให้แอปพลิเคชันสร้างซ็อคเก็ตเครือข่าย"</string>
@@ -513,36 +530,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"อนุญาตให้แอปพลิเคชันเปลี่ยนแปลงสถานะการเชื่อมต่อของเครือข่ายการเชื่อมต่ออินเทอร์เน็ตผ่านมือถือ"</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"เปลี่ยนการตั้งค่าการใช้ข้อมูลพื้นหลัง"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"อนุญาตให้แอปพลิเคชันเปลี่ยนการตั้งค่าการใช้งานข้อมูลแบ็กกราวด์"</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"ดูการเชื่อมต่อ WiFi"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"อนุญาตให้แอปพลิเคชันดูข้อมูลเกี่ยวกับสถานะของ WiFi"</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"เชื่อมต่อและหยุดเชื่อมต่อ WiFi"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"อนุญาตให้แอปพลิเคชันเชื่อมต่อและหยุดเชื่อมต่อจากจุดเข้าใช้งาน WiFi และเปลี่ยนแปลงเครือข่าย WiFi ที่กำหนดค่าไว้"</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"อนุญาตให้รับมัลติแคสต์ผ่าน Wi-Fi"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"อนุญาตให้แอปพลิเคชันรับแพ็คเก็ตที่ไม่ได้ส่งถึงอุปกรณ์ของคุณโดยตรง วิธีนี้เป็นประโยชน์เมื่อพบบริการที่มีอยู่ใกล้ๆ แต่จะใช้พลังงานมากกว่าโหมดที่ไม่ใช่มัลติแคสต์"</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"เข้าถึงการตั้งค่าบลูทูธ"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"อนุญาตให้แอปพลิเคชันกำหนดค่าแท็บเล็ตบลูทูธในตัวเครื่อง รวมทั้งค้นหาและจับคู่กับอุปกรณ์ที่อยู่ระยะไกล"</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"อนุญาตให้แอปพลิเคชันกำหนดค่าโทรศัพท์บลูทูธในตัวเครื่อง ตลอดจนค้นหาและจับคู่กับอุปกรณ์ที่อยู่ระยะไกล"</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"ดูการเชื่อมต่อ WiMAX"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"อนุญาตให้แอปพลิเคชันดูข้อมูลเกี่ยวกับสถานะของ WiMAX"</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"เปลี่ยนสถานะของ WiMAX"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"อนุญาตให้แอปพลิเคชันเชื่อมต่อและยกเลิกการเชื่อมต่อกับเครือข่าย WiMAX"</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"จับคู่กับอุปกรณ์บลูทูธ"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"อนุญาตให้แอปพลิเคชันดูการกำหนดค่าของแท็บเล็ตบลูทูธในตัวเครื่อง ตลอดจนเชื่อมต่อและยอมรับการเชื่อมต่อกับอุปกรณ์ที่จับคู่ไว้"</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"อนุญาตให้แอปพลิเคชันดูการกำหนดค่าของโทรศัพท์บลูทูธในพื้นที่ ตลอดจนเชื่อมต่อและยอมรับการเชื่อมต่อด้วยอุปกรณ์ที่จับคู่ไว้"</string>
<string name="permlab_nfc" msgid="4423351274757876953">"ควบคุม Near Field Communication"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"อนุญาตให้แอปพลิเคชันสื่อสารกับแท็ก Near Field Communication (NFC) การ์ด และโปรแกรมอ่าน"</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"ปิดใช้งานการล็อกหน้าจอของคุณ"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"อนุญาตให้แอปพลิเคชันปิดใช้งานการล็อกปุ่มและการรักษาความปลอดภัยด้วยรหัสผ่านใดๆ ที่เกี่ยวข้อง ตัวอย่างการใช้งานของกรณีนี้คือ โทรศัพท์ปิดใช้งานการล็อกปุ่มกดเมื่อรับสายเรียกเข้า จากนั้นจึงเปิดใช้งานการล็อกปุ่มกดใหม่หลังจากวางสาย"</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"อ่านการตั้งค่าการซิงค์แล้ว"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"อนุญาตให้แอปพลิเคชันอ่านการตั้งค่าการซิงค์ เช่น มีการเปิดใช้งานการซิงค์สำหรับแอปพลิเคชัน People หรือไม่"</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"สลับระหว่างเปิดและปิดการซิงค์"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"อนุญาตให้แอปพลิเคชันแก้ไขการตั้งค่าการซิงค์ เช่น จะเปิดใช้งานการซิงค์สำหรับแอปพลิเคชัน People หรือไม่"</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"อ่านสถิติการซิงค์"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"อนุญาตให้แอปพลิเคชันอ่านสถิติการซิงค์ เช่น ประวัติการซิงค์ที่เกิดขึ้น"</string>
@@ -550,22 +560,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"อนุญาตให้แอปพลิเคชันดูรายละเอียดเกี่ยวกับฟีดที่ซิงค์ไว้ในปัจจุบัน"</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"เขียนฟีดข้อมูลที่สมัครไว้"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"อนุญาตให้แอปพลิเคชันแก้ไขฟีดที่ซิงค์ในปัจจุบันของคุณ แอปพลิเคชันที่เป็นอันตรายอาจเปลี่ยนแปลงฟีดที่ซิงค์ของคุณ"</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"อ่านคำที่คุณเพิ่มลงในพจนานุกรม"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"อนุญาตให้แอปพลิเคชันอ่านคำ ชื่อ และวลีส่วนบุคคลที่ผู้ใช้อาจเก็บไว้ในพจนานุกรมของผู้ใช้"</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"เขียนลงในพจนานุกรมที่ผู้ใช้กำหนด"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"อนุญาตให้แอปพลิเคชันเขียนคำใหม่ลงในพจนานุกรมผู้ใช้"</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"อ่านเนื้อหาในที่จัดเก็บ USB"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"อ่านเนื้อหาในการ์ด SD ของคุณ"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"อนุญาตให้แอปอ่านเนื้อหาในที่จัดเก็บข้อมูล USB ซึ่งอาจรวมไปถึงรูปภาพและสื่อ"</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"อนุญาตให้แอปอ่านเนื้อหาในการ์ด SD ซึ่งอาจรวมไปถึงรูปภาพและสื่อ"</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"แก้ไขหรือลบเนื้อหาใน USB"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"อนุญาตให้แอปฯ เขียนลงใน USB"</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"อนุญาตให้แอปพลิเคชันเขียนลงบนการ์ด SD"</string>
@@ -744,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"ไม่มีซิมการ์ดในโทรศัพท์"</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"ใส่ซิมการ์ด"</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"ไม่มีซิมการ์ดหรือไม่สามารถอ่านได้ โปรดใส่ซิมการ์ด"</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"ซิมการ์ดใช้ไม่ได้"</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"ซิมการ์ดของคุณถูกปิดใช้งานอย่างถาวร"\n"ติดต่อผู้ให้บริการไร้สายของคุณเพื่อรับซิมการ์ดอีกอันหนึ่ง"</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"ปุ่มแทร็กก่อนหน้า"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"ปุ่มแทร็กถัดไป"</string>
@@ -819,15 +824,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"เขตการปกครองท้องถิ่น"</string>
<string name="autofill_area" msgid="3547409050889952423">"พื้นที่"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"เอมิเรต"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"อ่านบุ๊กมาร์กและประวัติเว็บของคุณ"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"อนุญาตให้แอปพลิเคชันอ่าน URL ทั้งหมดที่เบราว์เซอร์เคยเข้าชมและบุ๊กมาร์กของเบราว์เซอร์ทั้งหมด"</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"เขียนบุ๊กมาร์กและประวัติเว็บ"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"อนุญาตให้แอปพลิเคชันแก้ไขประวัติของเบราเซอร์หรือบุ๊กมาร์กที่จัดเก็บในแท็บเล็ตของคุณ แอปพลิเคชันที่เป็นอันตรายอาจใช้การอนุญาตนี้เพื่อลบหรือแก้ไขข้อมูลเบราว์เซอร์ของคุณ"</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"อนุญาตให้แอปพลิเคชันแก้ไขประวัติของเบราเซอร์หรือบุ๊กมาร์กที่จัดเก็บในโทรศัพท์ของคุณ แอปพลิเคชันที่เป็นอันตรายอาจใช้การอนุญาตนี้เพื่อลบหรือแก้ไขข้อมูลเบราว์เซอร์ของคุณ"</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"ตั้งปลุก"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"อนุญาตให้แอปพลิเคชันตั้งเวลาปลุกในแอปพลิเคชันนาฬิกาปลุกที่ติดตั้ง แอปพลิเคชันนาฬิกาปลุกบางรายการอาจไม่ใช้คุณลักษณะนี้"</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"เพิ่มข้อวามเสียง"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"อนุญาตให้แอปพลิเคชันเพิ่มข้อความลงในกล่องข้อความเสียงของคุณ"</string>
@@ -1087,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"ตั้งวันที่"</string>
<string name="date_time_set" msgid="5777075614321087758">"ตั้งค่า"</string>
<string name="date_time_done" msgid="2507683751759308828">"เสร็จสิ้น"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"เริ่มต้น"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"ใหม่: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"ใหม่: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"ไม่ต้องการการอนุญาต"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"ซ่อน"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"แสดงทั้งหมด"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"ที่จัดเก็บข้อมูลจำนวนมากแบบ USB"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"เชื่อมต่อ USB แล้ว"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"คุณได้เชื่อมต่อกับคอมพิวเตอร์ผ่าน USB แล้ว แตะปุ่มด้านล่างหากคุณต้องการคัดลอกไฟล์ระหว่างคอมพิวเตอร์กับที่จัดเก็บข้อมูล USB ของแอนดรอยด์"</string>
@@ -1320,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"กำลังส่ง…"</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"เปิดเบราว์เซอร์หรือไม่"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"รับสายหรือไม่"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml
index 19d1eddc..006fa63 100644
--- a/core/res/res/values-tl/strings.xml
+++ b/core/res/res/values-tl/strings.xml
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"Iyong mga mensahe"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"Basahin at isulat ang iyong SMS, e-mail, at iba pang mga mensahe."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Iyong personal na impormasyon"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Direktang access sa iyong mga contact at kalendaryong nakaimbak sa tablet."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Direktang access sa iyong mga contact at kalendaryong nakaimbak sa telepono."</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Direktang access sa impormasyon tungkol sa iyo, na naka-imbak sa iyong contact card."</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Ang iyong social na impormasyon"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Direktang access sa impormasyon tungkol sa iyong mga contact at social na koneksyon."</string>
<string name="permgrouplab_location" msgid="635149742436692049">"Iyong lokasyon"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"Subaybayan ang iyong pisikal na lokasyon."</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"Pakikipag-ugnay sa network"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"Mag-access ng iba\'t ibang mga tampok ng network."</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Mga Setting ng Audio"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Baguhin ang mga setting ng audio."</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Naaapektuhan ang Baterya"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Gumamit ng mga tampok na mabilisang uubos ng baterya."</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"Kalendaryo"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Direktang access sa kalendaryo at mga kaganapan."</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Mga Bookmark at Kasaysayan"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Direktang access sa mga bookmark at kasaysayan ng browser."</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Alarm"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Itakda ang alarm clock."</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Voicemail"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Direktang access sa voicemail."</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"Mikropono"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Direktang access sa mikropono upang mag-record ng audio."</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"Camera"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"Direktang access sa camera para sa pagkuha ng larawan o video."</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Ang impormasyon ng iyong mga application"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Kakayahang maapektuhan ang pag-uugali ng iba pang mga application sa iyong device."</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Wallpaper"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Baguhin ang mga setting ng wallpaper ng device."</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"Orasan"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Baguhin ang oras o timezone ng device."</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Status Bar"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Baguhin ang mga setting ng status bar ng device"</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Mga Setting ng Pag-sync"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Access sa mga setting ng pag-sync."</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"Iyong mga account"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"I-access ang mga available na account."</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Mga kontrol ng hardware"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Mas mababang antas na access at kontrol ng system."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Mga tool na pang-develop"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Kinakailangan lamang ang mga tampok para sa mga developer ng app."</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"Iba pang UI ng Application"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"Apektuhan ang UI ng iba pang mga application."</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"Imbakan"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"I-access ang imbakan na USB."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"I-access ang SD card."</string>
@@ -193,14 +238,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"Pinapayagan ang app na maging status bar."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"palawakin/tiklupin ang status bar"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Pinapayagan ang app na palawakin o tiklupin ang status bar."</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"baguhin ang ruta ng mga papalabas na tawag"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Pinapayagan ang app na iproseso ang mga papalabas na tawag at baguhin ang numerong ida-dial. Maaaring subaybayan, i-redirect, o pigilan ng nakakahamak na apps ang mga papalabas na tawag."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"tumanggap ng mga text message (SMS)"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"Pinapayagan ang app na tumanggap at magproseso ng mga mensaheng SMS. Maaaring subaybayan ng nakakahamak na apps ang iyong mga mensahe o tanggalin ang mga ito nang hindi ipinapakita ang mga ito sa iyo."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"tumanggap ng mga text message (MMS)"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"Pinapayagan ang app na tumanggap at magproseso ng mga mensaheng MMS. Maaaring subaybayan ng nakakahamak na apps ang iyong mga mensahe o tanggalin ang mga ito nang hindi ipinapakita ang mga ito sa iyo."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"makatanggap ng mga emergency broadcast"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Pinapayagan ang app na tumanggap at magproseso ng mga mensahe ng broadcast na pang-emergency. Available lamang ang pahintulot na ito sa apps ng system."</string>
@@ -210,16 +252,13 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"Pinapayagan ang app na magpadala ng mga mensaheng SMS. Maaari kang magastusan ng nakakahamak na apps sa pamamagitan ng pagpapadala ng mga mensahe nang wala ang iyong pagkumpirma."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"magpadala ng mga SMS na mensahe nang walang pagkumpirma"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Pinapayagan ang app na magpadala ng mga mensaheng SMS. Maaari kang magastusan ng nakakahamak na apps sa pamamagitan ng pagpapadala ng mga mensahe nang wala ang iyong pagkumpirma."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"basahin ang iyong mga text message (SMS o MMS)"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Pinapayagan ang apps na magbasa ng mga mensaheng SMS na nakaimbak sa iyong tablet o SIM card. Maaaring basahin ng nakakahamak na apps ang iyong mga kumpedensyal na mensahe."</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Pinapayagan ang apps na magbasa ng mga mensaheng SMS na nakaimbak sa iyong telepono o SIM card. Maaaring basahin ng nakakahamak na apps ang iyong mga kumpedensyal na mensahe."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"i-edit ang iyong mga text message (SMS o MMS)"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Pinapayagan ang app na magsulat sa mga mensaheng SMS na nakaimbak sa iyong tablet o SIM card. Maaaring tanggalin ng nakakahamak na apps ang iyong mga mensahe."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Pinapayagan ang app na magsulat sa mga mensaheng SMS na nakaimbak sa iyong telepono o SIM card. Maaaring tanggalin ng nakakahamak na apps ang iyong mga mensahe."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"tumanggap ng mga text message (WAP)"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Pinapayagan ang app na tumanggap at magproseso ng mga mensaheng WAP. Maaaring subaybayan ng nakakahamak na apps ang iyong mga mensahe o tanggalin ang mga ito nang hindi ipinapakita ang mga ito sa iyo."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"bawiin ang tumatakbong apps"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"Pinapayagan ang app na bawiin ang impormasyon tungkol sa kasalukuyan at kamakailang tumatakbong mga gawain. Maaaring makatuklas ang nakakahamak na apps ng pribadong impormasyon tungkol sa iba pang apps."</string>
@@ -235,13 +274,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Pinapayagan ang app na kontrolin ang mode ng pagkakatugma ng screen ng iba pang mga application. Maaaring sirain ng mga nakakahamak na application ang pag-uugali ng iba pang mga application."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"paganahin ang pag-debug ng app"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"Pinapayagan ang app na i-on ang pag-debug para sa isa pang app. Maaari itong gamitin ng nakakahamak na apps upang i-off ang iba pang apps."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"baguhin ang mga setting ng display ng system"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Pinapayagan ang app na baguhin ang kasalukuyang configuration, gaya ng lokal o pangkalahatang laki ng font."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"paganahin ang car mode"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"Pinapayagan ang app na paganahin ang car mode."</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"isara ang iba pang mga app"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Pinapayagan ang app na i-off ang mga proseso sa background ng iba pang apps, kahit na hindi mababa ang memory."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"puwersahang ihinto ang iba pang apps"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Pinapayagan ang app na puwersahang ihinto ang iba pang apps."</string>
@@ -265,8 +302,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Pinapayagan ang app na mag-broadcast ng isang notification na natanggap ang isang mensaheng WAP PUSH. Maaari itong gamitin ng nakakahamak na apps upang dayain ang pagtanggap ng mensaheng MMS o upang tahimik na palitan ang nilalaman ng anumang webpage ng mga nakakahamak na variant."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"limitahan ang numero ng mga tumatakbong proseso"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Pinapayagan ang app na kontrolin ang maximum na bilang ng mga proseso na tatakbo. Hindi kailanman kinakailangan para sa normal na apps."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"pwersahin ang mga app sa background na magsara"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Pinapayagan ang apps na kontrolin kung palaging natatapos ang mga aktibidad sa sandaling pumunta ang mga ito sa background. Hindi kailanman kinakailangan para sa normal na apps."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"baguhin ang mga istatistika ng baterya"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"Pinapayagan ang app na baguhin ang nakolektang mga istatistika ng baterya. Hindi para sa paggamit ng normal na apps."</string>
@@ -276,8 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Pinapayagan ang app na ilunsad ang buong backup na UI ng pagkumpirma. Hindi gagamitin ng anumang app."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"ipakita ang mga hindi pinahintulutang window"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Pinapayagan ang app na lumikha ng mga window na nakalaan upang gamitin ng user interface ng panloob na system. Hindi para sa paggamit ng normal na apps."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"gumuhit sa ibabaw ng ibang mga app"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Pinapayagan ang app na ipakita ang mga window ng alerto ng system. Maaaring pangasiwaan ng nakakahamak na apps ang buong screen."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"baguhin ang bilis ng global animation"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Pinapayagan ang app na baguhin ang bilis ng global animation (mas mabilis o mas mabagal na mga animation) anumang oras."</string>
@@ -339,26 +374,22 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Binibigyang-daan ang isang application na ibigay o bawiin ang mga tukoy na pahintulot para dito o sa iba pang mga application. Maaari itong gamitin ng mga nakakapahamak na application upang i-access ang mga tampok na hindi mo ibinigay sa mga ito."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"itakda ang gustong apps"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Pinapayagan ang app na baguhin ang iyong gustong apps. Maaaring tahimik na baguhin ng nakakahamak na apps ang apps na tumatakbo, na dinadaya ang iyong umiiral nang apps upang mangolekta ng pribadong data mula sa iyo."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"baguhin ang mga setting ng system"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"Pinapayagan ang app na baguhin ang data ng mga setting ng system. Maaaring sirain ng nakakahamak na apps ang configuration ng iyong system."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"baguhin ang mga setting ng secure na system"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Pinapayagan ang app na baguhin ang data ng mga secure na setting ng system. Hindi para sa paggamit ng normal na apps."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"baguhin ang mapa ng mga serbisyo ng Google"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"Pinapayagan ang app na baguhin ang mapa ng mga serbisyo ng Google. Hindi para sa paggamit ng normal na apps."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"patakbuhin sa pagbukas"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Pinapayagan ang app na mapasimula ang sarili nito sa sandaling matapos ang system sa pag-boot. Maaari nitong gawing mas matagal upang simulan ang tablet at pinapayagan ang app na pabagalin ang buong tablet sa pamamagitan ng palaging pagtakbo."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Pinapayagan ang app na mapasimula ang sarili nito sa sandaling matapos ang system sa pag-boot. Maaari nitong gawing mas matagal upang simulan ang telepono at pinapayagan ang app na pabagalin ang buong telepono sa pamamagitan ng palaging pagtakbo."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"magpadala ng sticky na pag-broadcast"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Pinapayagan ang app na magpadala ng mga sticky broadcast, na nananatili pagkatapos ng broadcast. Maaaring gawing mabagal o hindi matatag ng nakakahamak na apps ang tablet sa pamamagitan ng pagdudulot nito na gumamit ng masyadong maraming memory."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Pinapayagan ang app na magpadala ng mga sticky broadcast, na nananatili pagkatapos ng broadcast. Maaaring gawing mabagal o hindi matatag ng nakakahamak na apps ang telepono sa pamamagitan ng pagdudulot nito na gumamit ng masyadong maraming memory."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
+ <string name="permlab_readContacts" msgid="8348481131899886131">"basahin ang iyong mga contact"</string>
<string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Pinapayagan ang app na basahin ang lahat ng data tungkol sa iyong mga contact na naka-imbak sa iyong tablet, kabilang ang dalas ng pagtawag mo, pag-email, o pakikipag-ugnay sa iba pang mga paraan sa mga partikular na indibidwal. Nakakatulong ito sa awtomatikong pagkumpleto ng mga email address at iba pang mga maginhawang tampok. Maaaring gamitin ng mga nakakahamak na app ang pagpapahintulot na ito upang ipadala ang iyong data sa pakikipag-ugnay sa ibang tao."</string>
<string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Pinapayagan ang app na basahin ang lahat ng data tungkol sa iyong mga contact na naka-imbak sa iyong telepono, kabilang ang dalas ng pagtawag mo, pag-email, o pakikipag-ugnay sa iba pang mga paraan sa mga partikular na indibidwal. Nakakatulong ito sa awtomatikong pagkumpleto ng mga email address at iba pang mga maginhawang tampok. Maaaring gamitin ng mga nakakahamak na app ang pagpapahintulot na ito upang ipadala ang iyong data sa pakikipag-ugnay sa ibang tao."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"baguhin ang iyong mga contact"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Pinapayagan ang app na baguhin ang data tungkol sa iyong mga contact na naka-imbak sa iyong tablet, kabilang ang dalas ng pagtawag mo, pag-email, o pakikipag-ugnay sa iba pang mga paraan sa mga partikular na indibidwal. Nakakatulong ito sa awtomatikong pagkumpleto ng mga email address at iba pang mga maginhawang tampok. Maaari itong gamitin ng mga nakakahamak na app upang burahin o baguhin ang iyong data sa pakikipag-ugnay."</string>
<string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Pinapayagan ang app na baguhin ang data tungkol sa iyong mga contact na naka-imbak sa iyong telepono, kabilang ang dalas ng pagtawag mo, pag-email, o pakikipag-ugnay sa iba pang mga paraan sa mga partikular na indibidwal. Nakakatulong ito sa awtomatikong pagkumpleto ng mga email address at iba pang mga maginhawang tampok. Maaari itong gamitin ng mga nakakahamak na app upang burahin o baguhin ang iyong data sa pakikipag-ugnay."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"basahin ang log ng tawag"</string>
@@ -367,11 +398,9 @@
<string name="permlab_writeCallLog" msgid="8552045664743499354">"isulat ang log ng tawag"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Binibigyan-daan ang app na baguhin ang log ng tawag ng iyong tablet, kabilang ang data tungkol sa mga paparating at papalabas na tawag. Maaari itong gamitin ng nakakahamak na apps upang burahin o baguhin ang iyong log ng tawag."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Binibigyan-daan ang app na baguhin ang log ng tawag ng iyong telepono, kabilang ang data tungkol sa mga paparating at papalabas na tawag. Maaari itong gamitin ng nakakahamak na apps upang burahin o baguhin ang iyong log ng tawag."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"basahin sarili mo contact card"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Pinapayagan ang app na basahin ang personal na impormasyon ng profile na nakaimbak sa iyong device, gaya ng iyong pangalan at impormasyon ng contact. Nangangahulugan ito na makikilala ka ng app at maipapadala nito ang impormasyon ng iyong profile sa iba."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"baguhin sarili mo contact card"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Pinapayagan ang app na baguhin ang o magdagdag sa personal na impormasyon ng profile na nakaimbak sa iyong device, gaya ng iyong pangalan at impormasyon ng contact. Nangangahulugan ito na makikilala ka ng iba pang apps at maipapadala ng mga ito ang impormasyon ng iyong profile sa iba."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"basahin ang iyong social stream"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Binibigyang-daan ang app na i-access at i-sync ang mga social na update mula sa iyo at iyong mga kaibigan. Maaari itong gamitin ng nakakahamak na apps upang basahin ang mga pribadong pag-uusap sa pagitan mo at ng iyong mga kaibigan sa mga social network."</string>
@@ -412,15 +441,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"puwersahin ang pag-reboot ng telepono"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Pinapayagan ang app na puwersahin ang tablet upang mag-reboot."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Pinapayagan ang app na puwersahing i-reboot ang telepono."</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"access filesystem USB storage"</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"i-access ang filesystem ng SD Card"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Pinapayagan ang app na i-mount at i-unmount ang mga filesystem para sa naaalis na storage."</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"burahin ang imbakan ng USB"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"burahin ang SD card"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Pinapayagan ang app na i-format ang naaalis na storage."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"kumuha ng impormasyon sa panloob na imbakan"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"Pinapayagan ang app na kumuha ng impormasyon sa panloob na storage."</string>
@@ -432,8 +457,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Pinapayagan ang app na i-mount/i-unmount ang panloob na storage."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"palitan ang pangalan ng panloob na imbakan"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"Pinapayagan ang app na palitan ang pangalan ng panloob na storage."</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"kontrolin ang pag-vibrate"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"Pinapayagan ang app na kontrolin ang vibrator."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"kontrolin ang flashlight"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"Pinapayagan ang app na kontrolin ang flashlight."</string>
@@ -458,8 +482,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"Pinapayagan ang app na sabihin sa system kung aling mga widget ang magagamit ng aling app. Maaaring magbigay ng access ang isang app na may ganitong pahintulot sa personal na data sa iba pang apps. Hindi para sa paggamit ng normal na apps."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"baguhin ang katayuan ng telepono"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Pinapayagan ang app na kontrolin ang mga tampok ng telepono ng device. Maaaring lumipat ng mga network ang isang app na mayroong ganitong pahintulot, i-on o i-off ang radyo ng telepono at mga kaparehong bagay nang hindi ka nano-notify."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"basahin ang katayuan at pagkakakilanlan ng telepono"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"Pinapayagan ang app na i-access ang mga tampok ng telepono ng device. Maaaring tukuyin ng isang app na may ganitong pahintulot ang numero ng telepono at serial number ng teleponong ito, kung aktibo man ang isang tawag, ang numero kung saan nakakonekta ang tawag na iyon at kaparehong mga bagay."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"pigilan ang tablet mula sa pag-sleep"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"pigilan ang telepono mula sa paghinto"</string>
@@ -474,8 +497,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Patakbuhin bilang mababang antas na pagsubok ng gumawa, na nagpapahintulot ng kumpletong access sa hardware ng telepono. Available lang kapag tumatakbo ang telepono sa test mode ng gumawa."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"itakda ang wallpaper"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"Pinapayagan ang app na itakda ang wallpaper ng system."</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"isaayos ang laki ng iyong wallpaper"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Pinapayagan ang app na itakda ang mga pahiwatig sa laki ng wallpaper ng system."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"i-reset ang system sa mga factory default"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"Pinapayagan ang app na ganap na i-reset ang system sa mga setting ng factory nito, na binubura ang lahat ng data, configuration, at naka-install na apps."</string>
@@ -487,21 +509,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Pinapayagan ang app na baguhin ang time zone ng telepono."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"gumanap bilang AccountManagerService"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"Pinapayagan ang app na tumawag sa AccountAuthenticators."</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"maghanap ng mga account sa device"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Pinapayagan ang app na makuha ang listahan ng mga account na kilala ng tablet."</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Pinapayagan ang app na makuha ang listahan ng mga account na kilala ng telepono."</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"lumikha ng mga account at magtakda ng mga password"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Pinapayagan ang app na gamitin ang mga kakayahan ng tagapagpatunay ng account ng AccountManager, kabilang ang paglikha ng mga account at pagkuha at pagtatakda ng mga password ng mga ito."</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"magdagdag o mag-alis ng mga account"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"Pinapayagan ang app na magsagawa ng mga pagpapatakbo katulad ng pagdaragdag at pag-aalis ng mga account, at pagtanggal ng password ng mga ito."</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"gamitin ang mga account sa device"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"Pinapayagan ang app na humiling ng mga token sa pagpapatotoo."</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"tingnan ang mga koneksyon sa network"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"Pinapayagan ang app na tingnan ang katayuan ng lahat ng network."</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"ganap na access sa Internet"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Pinapayagan ang app na lumikha ng mga network socket."</string>
@@ -513,36 +530,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"Pinapayagan ang app na baguhin ang katayuan ng naka-tether na pagkakakonekta ng network."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"baguhin ang setting ng paggamit ng data ng background"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Pinapayagan ang app na baguhin ang setting ng paggamit ng data sa background."</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"tingnan ang mga koneksyon sa Wi-Fi"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"Pinapayagan ang app na tingnan ang impormasyon tungkol sa katayuan ng Wi-Fi."</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"kumonekta at magdiskonekta mula sa Wi-Fi"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"Pinapayagan ang app na kumonekta at umalis sa pagkakakonekta mula sa mga access point ng Wi-Fi, at gumawa ng mga pagbabago sa mga na-configure na network ng Wi-Fi."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"payagan ang pagtanggap ng Wi-Fi Multicast"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Pinapayagan ang app na tumanggap ng mga packet na hindi direktang nakatuon sa iyong device. Maaari itong maging kapaki-pakinabang kapag tumutuklas ng mga serbisyong inaalok sa malapit. Gumagamit ito ng higit pang lakas kaysa sa hindi pangmaramihang mode."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"I-access ang mga setting ng Bluetooth"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Pinapayagan ang app na i-configure ang lokal na Bluetooth tablet, at tumuklas ng at ipares sa mga malayuang device."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Pinapayagan ang app na i-configure ang lokal na Bluetooth na telepono, at tumuklas ng at ipares sa mga malayuang device."</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Tingnan ang mga WiMAX na koneksyon"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Pinapayagan ang app na tingnan ang impormasyon tungkol sa katayuan ng WiMAX."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"Baguhin ang katayuan ng WiMAX"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Pinapayagan ang app na kumonekta at magdiskonekta sa network ng WiMAX."</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"ipares sa mga Bluetooth device"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Pinapayagan ang app na tingnan ang configuration ng lokal na Bluetooth tablet, at upang gumawa at tumanggap ng mga koneksyon sa mga nakapares na device."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Pinapayagan ang app na tingnan ang configuration ng lokal na Bluetooth na telepono, at upang gumawa at tumanggap ng mga koneksyon sa mga nakapares na device."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"kontrolin ang Near Field Communication"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Pinapayagan ang app na makipag-ugnay sa Near Field Communication (NFC) na mga tag, card, at reader."</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"huwag paganahin ang iyong lock ng screen"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Pinapayagan ang app na huwag paganahin ang keylock at anumang nauugnay na seguridad ng password. Ang lehitimong halimbawa nito ay ang hindi pagpapagana ng telepono sa keylock kapag tumatanggap ng papasok na tawag sa telepono, pagkatapos ay muling pagpapagana sa keylock kapag tapos na ang tawag."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"basahin ang mga setting ng sync"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Pinapayagan ang app na basahin ang mga setting ng pag-sync, gaya ng kung pinagana ang pag-sync para sa app ng Mga Tao."</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"I-toggle on at off ang pag-sync"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Pinapayagan ang app na baguhin ang mga setting ng pag-sync, gaya ng kung pinagana ang pag-sync para sa app ng Mga Tao."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"basahin ang mga istatistika ng sync"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"Pinapayagan ang app na basahin ang mga istatistika ng pag-sync; hal., ang kasaysayan ng mga pag-sync na naganap."</string>
@@ -550,22 +560,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Pinapayagan ang app na kumuha ng mga detalye tungkol sa kasalukuyang naka-sync na mga feed."</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"sumulat ng mga naka-subscribe na feed"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Pinapayagan ang app na baguhin ang iyong kasalukuyang na-sync na mga feed. Maaaring baguhin ng nakakahamak na apps ang iyong na-sync na mga feed."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"basahin ang mga terminong idinagdag mo sa diksyunaryo"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Pinapayagan ang app na magbasa ng anumang pribadong mga salita, pangalan at parirala na maaaring inimbak ng user sa diksyunaryo ng user."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"magsulat sa diksyunaryong tinukoy ng user"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Pinapayagan ang app na magsulat ng mga bagong salita sa diksyunaryo ng user."</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"basa nilalaman USB storage mo"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"basahin ang mga nilalaman ng iyong SD card"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Bigay-daan app basahin nilalaman ng USB storage, maaaring may mga larawan at media."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Binibigyang-daan aang app na basahin ang mga nilalaman ng SD card, na maaaring may mga larawan at media."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"bago tanggal laman USB storage"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Pinapayagan ang app na magsulat sa USB storage."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Pinapayagan ang app na magsulat sa SD card."</string>
@@ -744,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Walang SIM card sa telepono."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Maglagay ng isang SIM card."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"Nawawala o hindi nababasa ang SIM card. Maglagay ng isang SIM card."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"Hindi nagagamit na SIM card."</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Ang iyong SIM card ay permanenteng hindi pinagana."\n" Makipag-ugnay sa iyong wireless service provider para sa isa pang SIM card."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Button na nakaraang track"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Button na Susunod na track"</string>
@@ -819,15 +824,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"Parokya"</string>
<string name="autofill_area" msgid="3547409050889952423">"Lugar"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"Emirate"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"basahin ang iyong mga bookmark at kasaysayan sa Web"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Pinapayagan ang app na basahin ang lahat ng URL na binisita ng Browser, at lahat ng bookmark ng Browser."</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"magsulat ng mga bookmark at kasaysayan sa web"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Pinapayagan ang app na baguhin ang kasaysayan ng Browser o mga bookmark na nakaimbak sa iyong tablet. Maaari itong gamitin ng nakakahamak na apps upang burahin o baguhin ang data ng iyong Browser."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Pinapayagan ang app na baguhin ang kasaysayan ng Browser o mga bookmark na nakaimbak sa iyong telepono. Maaari itong gamitin ng nakakahamak na apps upang burahin o baguhin ang data ng iyong Browser."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"magtakda ng alarm"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"Pinapayagan ang app na magtakda ng alarm sa isang naka-install na app ng alarm clock. Maaaring hindi ipatupad ng ilang apps ng alarm clock ang tampok na ito."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"magdagdag ng voicemail"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"Pinapayagan ang app na magdagdag ng mga mensahe sa iyong inbox ng voicemail."</string>
@@ -1087,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Itakda ang petsa"</string>
<string name="date_time_set" msgid="5777075614321087758">"Itakda"</string>
<string name="date_time_done" msgid="2507683751759308828">"Tapos na"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"Default"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"BAGO: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"BAGO: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"Walang mga kinakailangang pahintulot"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"Itago"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"Ipakita lahat"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"USB mass storage"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"Nakakonekta ang USB"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"Kumonekta ka sa iyong computer sa pamamagitan ng USB. Pindutin ang button sa ibaba kung gusto mong kumopya ng mga file sa pagitan ng iyong computer at USB storage ng iyong Android."</string>
@@ -1320,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"Ipinapadala..."</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"Ilunsad ang Browser?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"Tanggapin ang tawag?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index e193702..c13c520 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"Mesajlarınız"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"SMS mesajlarınızı, e-posta iletilerinizi ve diğer mesajlarınızı okuyup yazma."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Kişisel bilgileriniz"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Tabletinizde depolanan kişilere ve takvime doğrudan erişim."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Telefonunuzda depolanan kişilere ve takvime doğrudan erişim."</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Sizinle ilgili, kişi kartınızda kayıtlı bilgilere doğrudan erişim."</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Sosyal bilgileriniz"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Kişileriniz ve sosyal bağlantılarınızla ilgili bilgilere doğrudan erişim."</string>
<string name="permgrouplab_location" msgid="635149742436692049">"Konumunuz"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"Fiziksel konumunuzu izleme."</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"Ağ iletişimi"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"Çeşitli ağ özelliklerine erişme."</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Ses Ayarları"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Ses ayarlarını değiştirme."</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Pili Etkileyenler"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Pili çok çabuk tüketebilen özellikleri kullanma."</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"Takvim"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Takvime ve etkinliklere doğrudan erişim."</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Yer İşaretleri ve Geçmiş"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Yer işaretlerine ve tarayıcı geçmişine doğrudan erişim."</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Alarm"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Alarm saatini ayarlama."</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Sesli mesaj"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Sesli mesaja doğrudan erişim."</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"Mikrofon"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Ses kaydetmek için mikrofona doğrudan erişim."</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"Kamera"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"Resim ve video kaydı için kameraya doğrudan erişim."</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Uygulama bilgileriniz"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Cihazınızdaki diğer uygulamaların davranışlarını etkileyebilme."</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Duvar Kağıdı"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Cihazın duvar kâğıdı ayarlarını değiştirme."</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"Saat"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Cihazın saatini ve saat dilimini değiştirme."</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Durum Çubuğu"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Cihaz durumunun çubuk ayarlarını değiştirme."</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Senkronizasyon Ayarları"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Senkronizasyon ayarlarına erişme."</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"Hesaplarınız"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"Kullanılabilir hesaplara erişin."</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Donanım denetimleri"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Sisteme alt düzey erişim ve denetimi."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Geliştirme araçları"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Yalnızca uygulama geliştiriciler için gerekli özellikler."</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"Diğer Uygulamaların Kullanıcı Arayüzü"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"Diğer uygulamaların kullanıcı arayüzünü etkileme."</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"Depolama"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Payl depolama birimine erişin."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"SD karta erişin."</string>
@@ -193,14 +238,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"Uygulamaya, durum çubuğu olma izni verir."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"durum çubuğunu genişlet/daralt"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Uygulamaya, durum çubuğunu genişletip daraltma izni verir."</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"giden çağrıları yeniden yönlendir"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Uygulamaya, giden aramaları işleme ve aranacak numarayı değiştirme izni verir. Kötü amaçlı uygulamalar giden aramaları izleyebilir, yönlendirebilir ya da önleyebilir."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"kısa mesajları al (SMS)"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"Uygulamaya, SMS mesajları alma ve işleme izni verir. Kötü amaçlı uygulamalar mesajlarınızı izleyebilir veya onları size göstermeden silebilir."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"kısa mesajları (MMS) al"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"Uygulamaya, MMS mesajlarını alma ve işleme izni verir. Kötü amaçlı uygulamalar mesajlarınızı izleyebilir veya onları size göstermeden silebilir."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"acil durum yayınlarını al"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Uygulamaya, acil yayın mesajları alma ve işleme izni verir. Bu izin, sadece sistem uygulamaları için kullanılabilir."</string>
@@ -210,21 +252,18 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"Uygulamaya, SMS mesajları gönderme izni verir. Kötü amaçlı uygulamalar onayınızı almadan mesaj göndererek size masraf çıkarabilir."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"SMS mesajlarını onaysız gönder"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Uygulamaya, SMS mesajları gönderme izni verir. Kötü amaçlı uygulamalar onayınızı almadan mesaj göndererek size masraf çıkarabilir."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"kısa mesajlarımı (SMS veya MMS) oku"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Uygulamaya, tabletinizde veya SIM kartta depolanan SMS mesajlarını okuma izni verir. Kötü amaçlı uygulamalar gizli mesajlarınızı okuyabilir."</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Uygulamaya, telefonunuzda veya SIM kartınızda depolanan SMS mesajlarını okuma izni verir. Kötü amaçlı uygulamalar gizli mesajlarınızı okuyabilir."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"kısa mesajlarımı (SMS veya MMS) düzenle"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Uygulamaya, tabletinizde veya SIM kartınızda depolanan SMS mesajlarına yazma izni verir. Kötü amaçlı uygulamalar mesajlarınızı silebilir."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Uygulamaya, telefonunuzdaki veya SIM kartınızdaki SMS mesajlarına yazma izni verir. Kötü amaçlı uygulamalar mesajlarınızı silebilir."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"kısa mesajları (WAP) al"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Uygulamaya, WAP mesajlarını alma ve işleme izni verir. Kötü amaçlı uygulamalar mesajlarınızı izleyebilir veya onları size göstermeden silebilir."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"çalışan uygulamaları al"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"Uygulamaya, şu anda çalışmakta olan ve son çalışan işlemler hakkında bilgi alma izni verir. Kötü amaçlı uygulamalar diğer uygulamalar hakkında özel bilgileri ele geçirebilir."</string>
<string name="permlab_getDetailedTasks" msgid="6229468674753529501">"çalışan uygulamaların ayrıntılarını al"</string>
- <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Uygulamaya, şu anda çalışmakta olan ve son çalışan işlemler hakkında ayrıntılı bilgi alma izni verir. Kötü amaçlı uygulamalar diğer uygulamalar hakkında özel bilgileri ele geçirebilir."</string>
+ <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"Uygulamaya, şu anda çalışmakta olan ve son çalışan işlemler hakkında ayrıntılı bilgi alma izni verir. Kötü amaçlı uygulamalar diğer uygulamalar hakkında gizli bilgileri ele geçirebilir."</string>
<string name="permlab_reorderTasks" msgid="2018575526934422779">"çalışan uygulamaları yeniden sırala"</string>
<string name="permdesc_reorderTasks" msgid="4175137612205663399">"Uygulamaya, görevleri ön plana ve arka plana taşıma izni verir. Kötü amaçlı uygulamalar kendilerini sizin denetiminiz dışında ön plana taşıyabilir."</string>
<string name="permlab_removeTasks" msgid="6821513401870377403">"çalışan uygulamaları durdur"</string>
@@ -235,13 +274,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Uygulamaya diğer uygulamaların ekran uyumluluk modunu denetleme izni verir. Kötü amaçlı uygulamalar diğer uygulamaların çalışma şeklini bozabilir."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"uygulama hata ayıklamayı etkinleştir"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"Uygulamaya, başka bir uygulama için hata ayıklamayı açma izni verir. Kötü amaçlı uygulamalar diğer uygulamaları kaldırmak için bunu kullanabilir."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"sistem görüntüleme ayarlarını değiştir"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Uygulamaya, yerel ayar veya genel yazı tipi boyutu gibi mevcut yapılandırmayı değiştirme izni verir."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"araç modunu etkinleştir"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"Uygulamaya, araç modunu etkinleştirme izni verir."</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"diğer uygulamaları kapat"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Uygulamaya, bellek düşük olmasa bile diğer uygulamaların arka plan işlemlerini kapatma izni verir."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"diğer uygulamaları durmaya zorla"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Uygulamaya, diğer uygulamaları zorla durdurma izni verir."</string>
@@ -265,8 +302,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Uygulamaya, WAP PUSH mesajı alındığına dair bildirim yayınlama izni verir. Kötü amaçlı uygulamalar sahte MMS bildirimleri oluşturmak veya bir web sayfasının içeriğini sessiz şekilde zararlı öğelerle değiştirmek için bunu kullanabilir."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"çalışan işlem sayısını sınırla"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Uygulamaya, çalışacak süreçlerin azami sayısını denetleme izni verir. Normal uygulamalar için gerekli değildir."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"arka plan uygulamaları kapanmaya zorla"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Uygulamaya, etkinliklerin arka plana geçer geçmez her zaman tamamlanıp tamamlanmadıklarını denetleme izni verir. Normal uygulamalar için gerekli değildir."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"pil istatistiklerini değiştir"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"Uygulamaya, toplanan pil kullanım istatistiklerini değiştirme izni verir. Normal uygulamaların kullanımına yönelik değildir."</string>
@@ -276,8 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Uygulamaya, tam yedekleme onay arabirimini başlatma izni verir. Herhangi bir uygulamanın kullanımına yönelik değildir."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"yetkisiz pencereleri görüntüle"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Uygulamaya, dahili sistem kullanıcı arayüzü tarafından kullanılacak pencereler oluşturma izni verir. Normal uygulamaların kullanımına yönelik değildir."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"diğer uygulamaları sürükle"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Uygulamaya sistem uyarı pencerelerini gösterme izni verir. Kötü amaçlı uygulamalar tüm ekranı ele geçirebilir."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"genel animasyon hızını değiştir"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Uygulamaya, istediği zaman genel animasyon hızını değiştirme (animasyonları hızlandırma veya yavaşlatma) izni verir."</string>
@@ -339,26 +374,22 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Uygulamaya, kendisi veya başka uygulamalar için belirli izinleri verme ya da kaldırma izni verir. Zararlı uygulamalar bunu, kendilerine izin vermediğiniz özelliklere erişmek için kullanabilir."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"tercih edilen uygulamaları ayarla"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Uygulamaya, tercih edilen uygulamalarınızı değiştirme izni verir. Kötü amaçlı uygulamalar çalışmakta olan uygulamaları sessizce değiştirip gizli verilerinizi toplamak için mevcut uygulamalarınızı yanlış yönlendirebilir."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"sistem ayarlarını değiştir"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"Uygulamaya, sistem ayarı verilerini değiştirme izni verir. Kötü amaçlı uygulamalar sistem yapılandırmanızı bozabilir."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"güvenli sistem ayarlarını değiştir"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Uygulamaya, sisteme ait güvenlik ayarı verilerini değiştirme izni verir. Normal uygulamaların kullanımına yönelik değildir."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"Google hizmetler haritasını değiştir"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"Uygulamaya, Google hizmetleri haritasını değiştirme izni verir. Normal uygulamaların kullanımına yönelik değildir."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"başlangıçta çalıştır"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Uygulamaya, kendisini sistem açılışı bittikten hemen sonra başlatma izni verir. Bu izin, tabletin başlaması için daha uzun süre geçmesine ve uygulamanın her zaman çalışarak tableti yavaşlatmasına neden olabilir."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Uygulamaya, kendisini sistem açılışı bittikten hemen sonra başlatma izni verir. Bu izin, telefonun başlatılması için daha uzun bir süre geçmesine ve uygulamanın her zaman çalışarak telefonu yavaşlatmasına neden olur."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"sabit yayın gönder"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Uygulamaya, yayın bittikten sonra da kalan sabit yayınlar gönderme izni verir. Kötü amaçlı uygulamalar tabletin çok fazla bellek kullanmasına neden olarak onu yavaşlatabilir veya kararsız hale getirebilirler."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Uygulamaya, yayın bittikten sonra da kalan sabit yayınlar gönderme izni verir. Kötü amaçlı uygulamalar telefonun çok fazla bellek kullanmasına neden olarak onu yavaşlatabilir veya dengesiz hale getirebilir."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
+ <string name="permlab_readContacts" msgid="8348481131899886131">"kişilerimi oku"</string>
<string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Uygulamaya, belirli kişilerle ne sıklıkta sesli çağrı, e-posta ve diğer şekillerde iletişim kurduğunuz da dahil olmak üzere tabletinizde kayıtlı kişilerle ilgili tüm verileri okuma izni verir. Bu seçenek, e-posta adreslerinin otomatik tamamlanmasına ve diğer kullanışlı özelliklerin sağlanmasına yardımcı olur. Kötü amaçlı uygulamalar bu izni kullanarak kişi bilgilerinizi başkalarına gönderebilir."</string>
<string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Uygulamaya, belirli kişilerle ne sıklıkta sesli çağrı, e-posta ve diğer şekillerde iletişim kurduğunuz da dahil olmak üzere telefonunuzda kayıtlı kişilerle ilgili tüm verileri okuma izni verir. Bu seçenek, e-posta adreslerinin otomatik tamamlanmasına ve diğer kullanışlı özelliklerin sağlanmasına yardımcı olur. Kötü amaçlı uygulamalar bu izni kullanarak kişi bilgilerinizi başkalarına gönderebilir."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"kişilerimi değiştir"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Uygulamaya, belirli kişilerle ne sıklıkta sesli çağrı, e-posta ve diğer şekillerde iletişim kurduğunuz da dahil olmak üzere tabletinizde kayıtlı kişilerle ilgili tüm verileri değiştirme izni verir. Bu seçenek, e-posta adreslerinin otomatik tamamlanmasına ve diğer kullanışlı özelliklerin sağlanmasına yardımcı olur. Kötü amaçlı uygulamalar bu izni kullanarak kişi bilgilerinizi silebilir veya değiştirebilir."</string>
<string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Uygulamaya, belirli kişilerle ne sıklıkta sesli çağrı, e-posta ve diğer şekillerde iletişim kurduğunuz da dahil olmak üzere telefonunuzda kayıtlı kişilerle ilgili tüm verileri değiştirme izni verir. Bu seçenek, e-posta adreslerinin otomatik tamamlanmasına ve diğer kullanışlı özelliklerin sağlanmasına yardımcı olur. Kötü amaçlı uygulamalar bu izni kullanarak kişi bilgilerinizi silebilir veya değiştirebilir."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"çağrı günlüğünü oku"</string>
@@ -367,11 +398,9 @@
<string name="permlab_writeCallLog" msgid="8552045664743499354">"çağrı günlüğüne yaz"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Uygulamaya tabletinizin çağrı günlüğünde (gelen ve giden çağrılarla ilgili veriler dahil olmak üzere) değişiklik yapma izni verir. Kötü amaçlı uygulamalar bu izni kullanarak çağrı günlüğünüzü silebilir veya değiştirebilir."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Uygulamaya telefonunuzun çağrı günlüğünde (gelen ve giden çağrılarla ilgili veriler dahil olmak üzere) değişiklik yapma izni verir. Kötü amaçlı uygulamalar bu izni kullanarak çağrı günlüğünüzü silebilir veya değiştirebilir."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"kendi kişi kartımı oku"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Uygulamaya, adınız ve iletişim bilgileriniz gibi cihazınızda saklanan kişisel profil bilgilerini okuma izni verir. Bu izin, uygulamanın sizi tanımlayabileceği ve profil bilgilerinizi başkalarına gönderebileceği anlamına gelir."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"kendi kişi kartımı değiştir"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Uygulamaya, adınız ve iletişim bilgileriniz gibi cihazınızda saklanan kişisel profil bilgilerini değiştirme veya bunlara ekleme yapma izni verir. Bu, diğer uygulamaların sizi tanımlaması ve profil bilgilerinizi başkalarına göndermesi anlamına gelir."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"sosyal akışımı oku"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Uygulamaya, sizden ve arkadaşlarınızdan gelen sosyal güncellemelere erişme ve bunları senkronize etme izni verir. Kötü amaçlı uygulamalar sosyal ağlar üzerinde sizinle arkadaşlarınız arasındaki kişisel iletişimi okumak için bunu kullanabilir."</string>
@@ -412,15 +441,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"telefonu yeniden başlamaya zorla"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Uygulamaya, tableti yeniden açılmaya zorlama izni verir."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Uygulamaya, telefonu yeniden başlatmaya zorlama izni verir."</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"USB deplm dosya sistemine eriş"</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"SD Kartın dosya sistemine eriş"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Uygulamaya, çıkarılabilir depolama için dosya sistemlerini ekleme veya bağlantısını kesme izni verir."</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"USB depolamayı sil"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"SD Kartı sil"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Uygulamaya, çıkarılabilir depolama birimini biçimlendirme izni verir."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"dahili depolama birimi hakkında bilgi al"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"Uygulamaya, dahili depolama birimi hakkında bilgi alma izni verir."</string>
@@ -432,8 +457,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Uygulamaya, dahili depolama birimini ekleme/bağlantısını kesme izni verir."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"dahili dep br adını dğş"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"Uygulamaya, dahili depolama biriminin adını değiştirme izni verir."</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"titreşimi denetle"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"Uygulamaya, titreşimi denetleme izni verir."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"flaşı denetle"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"Uygulamaya, flaş ışığını denetleme izni verir."</string>
@@ -458,8 +482,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"Uygulamaya, hangi uygulamaların hangi widget\'ları kullanacağını sisteme bildirme izni verir. Bu izne sahip bir uygulama, başka uygulamalara kişisel veriler için erişim hakkı verebilir. Normal uygulamaların kullanımına yönelik değildir."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"telefon durumunu değiştir"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Uygulamaya, cihazın telefon özelliklerini kontrol etme izni verir. Bu izne sahip bir uygulama sizi hiç uyarmadan ağlar arasında geçiş, telefonun radyosunu açıp kapatma ve benzeri işlemler yapabilir."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"telefonun durumunu ve kimliğini oku"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"Uygulamaya cihazın telefon özelliklerine erişme izni verir. Bu izne sahip bir uygulama; telefon numarasını ve bu telefonun seri numarasını, bir çağrının etkin olup olmadığını, çağrının bağlandığı numarayı vb. belirleyebilir."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"tabletin uykuya geçmesini önle"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"telefonunun uykuya geçmesini önle"</string>
@@ -474,8 +497,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Telefon donanımına tam erişim veren alt düzey bir üretici testi olarak çalıştırılır. Yalnızca telefon üretici test modunda çalışırken kullanılabilir."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"duvar kağıdını ayarla"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"Uygulamaya, sistem duvar kağıdını ayarlama izni verir."</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"duvar kâğıdımın boyutunu ayarla"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Uygulamaya, sistem duvar kağıdı için boyut ipuçlarını ayarlama izni verir."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"sistemi fabrika değerlerine sıfırla"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"Uygulamaya, tüm verileri, yapılandırmayı ve yüklü uygulamaları silerek sistemi tamamen fabrika ayarlarına sıfırlama izni verir."</string>
@@ -487,21 +509,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Uygulamaya, telefonun saat dilimini değiştirme izni verir."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"Hesap Yönetici Hizmeti gibi davran"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"Uygulamaya, Hesap Kimlik Doğrulayıcılarına çağrı yapma izni verir."</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"cihazdaki hesapları bul"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Uygulamaya, tablet tarafından bilinen hesapların listesini alma izni verir."</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Uygulamaya, telefonda bilinen hesapların listesini alma izni verir."</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"hesap oluştur ve şifre ayarla"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Uygulamaya, hesaplar oluşturma ve bunların şifrelerini alma ve ayarlama da dahil olmak üzere Hesap Yöneticisi\'nin hesap doğrulama yetkilerini kullanma izni verir."</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"hesap ekle veya kaldır"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"Uygulamaya, hesap ekleme, kaldırma ve hesapların şifrelerini silme gibi işlemleri yapma izni verir."</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"bu cihazdaki hesapları kullan"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"Uygulamaya kimlik doğrulama jetonları isteme izni verir."</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"ağ bağlantılarını görüntüle"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"Uygulamaya, tüm ağların durumunu görme izni verir."</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"tam İnternet erişimi"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Uygulamaya, ağ yuvaları oluşturma izni verir."</string>
@@ -513,36 +530,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"Uygulamaya, tethering kullanan ağ bağlantısının durumunu değiştirme izni verir."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"arka plan veri kullanımı ayarını değiştir"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Uygulamaya, arka plan veri kullanımı ayarını değiştirme izni verir."</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"Kablosuz bağlantıları görüntüle"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"Uygulamaya, kablosuz bağlantının durumu ile ilgili bilgileri görüntüleme izni verir."</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"Kablosuza bağlan veya Kablosuz bağlantısını kes"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"Uygulamaya, kablosuz erişim noktalarına bağlanıp bunlarla bağlantısını kesme ve yapılandırılmış kablosuz ağlarda değişiklikler yapma izni verir."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"Kablosuz Çoklu Yayın alımına izin ver"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Uygulamaya, doğrudan cihazınıza yönlendirilmemiş paketleri alma izni verir. Yakın yerlerde sunulan hizmetlerin keşfedilmesi sırasında faydalı olabilir. Birden fazla noktaya yayın yapmayan moda göre daha fazla güç harcar."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"Bluetooth ayarlara eriş"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Uygulamaya, yerel Bluetooth tabletini yapılandırma ve uzak cihazları keşfedip bunlarla eşleşme izni verir."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Uygulamaya, yerel Bluetooth telefonunu yapılandırma ve uzak cihazları keşfedip bunlarla eşleşme izni verir."</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"WiMAX bağlantılarını görüntüle"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Uygulamanın, WiMAX\'in durumuyla ilgili bilgileri görüntülemesine izin verir."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"WiMAX durumunu değiştir"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Uygulamaya, WiMAX ağına bağlanma veya bağlantıyı kesme izni verir."</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"Bluetooth cihazlarla eşle"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Uygulamaya, yerel Bluetooth tabletinin yapılandırmasını görüntüleme, eşleştirilmiş cihazlarla bağlantı yapma ve bu tür bağlantıları kabul etme izni verir."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Uygulamaya, yerel Bluetooth telefonunun yapılandırmasını görüntüleme, eşleştirilmiş cihazlarla bağlantı yapma ve bu tür bağlantıları kabul etme izni verir."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"Yakın Alan İletişimini denetle"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Uygulamaya, Near Field Communication (NFC) etiketleri, kartlar ve okuyucular ile iletişim kurma izni verir."</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"ekran kilidimi devre dışı bırak"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Uygulamaya, tuş kilidini ve ilgili tüm şifreli güvenlik önlemlerini devre dışı bırakma izni verir. Bunun bir örneği çağrı alındığında tuş kilidinin devre dışı bırakılması, görüşme bittiğinde kilidin yeniden devreye sokulmasıdır."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"senk. ayarlarını oku"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Uygulamaya, senkronizasyonun Kişiler uygulaması için etkin olup olmadığı gibi senkronizasyonla ilgili ayarları okuma izni verir."</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"senkronizasyonu aç/kapat"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Uygulamaya, senkronizasyonun Kişiler uygulaması için etkin olup olmadığı gibi senkronizasyonla ilgili ayarları değiştirme izni verir."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"senk. istatistiklerini oku"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"Uygulamaya, senkronizasyon istatistiklerini (ör. geçmişte yapılmış senkronizasyonlar) okuma izni verir."</string>
@@ -550,22 +560,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Uygulamaya, o anda senkronize olan özet akışları ile ilgili bilgi alma izni verir."</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"abone olunan yayınları yaz"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Uygulamaya, o anda senkronize edilmiş özet akışlarını değiştirme izni verir. Kötü amaçlı uygulamalar senkronize edilmiş özet akışlarını değiştirebilir."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"sözlüğe eklediğim terimleri oku"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Uygulamaya, kullanıcının kullanıcı sözlüğünde depolamış olabileceği kişisel kelimeleri, adları ve kelime öbeklerini okuma izni verir."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"kullanıcı tanımlı sözlüğe yaz"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Uygulamaya, kullanıcı sözlüğüne yeni kelimeler yazma izni verir."</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"USB depolamamın içeriğini oku"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"SD kartımın içeriğini oku"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Uygulamaya USB depolamanın içeriğini okuma izni verir. Bu izin fotoğrafları ve medyayı da içerebilir."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Uygulamaya SD kartın içeriğini okuma izni verir. Bu izin fotoğrafları ve medyayı da içerebilir."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"USB depolamamın içeriğini değiştir veya sil"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Uygulamaya USB depolama birimine yazma izni verir."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Uygulamaya, SD karta yazma izni verir."</string>
@@ -744,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Telefonda SIM kart yok."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"SIM kartı takın."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM kart yok veya okunamıyor. Bir SIM kart takın."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"Kullanılamayan SIM kartı"</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"SIM kartınız kalıcı olarak devre dışı bırakıldı."\n" Başka bir SIM kart için kablosuz servis sağlayıcınıza başvurun."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Önceki parça düğmesi"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Sonraki parça düğmesi"</string>
@@ -819,15 +824,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"Mahalle"</string>
<string name="autofill_area" msgid="3547409050889952423">"Alan"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"Emirlik"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"Web yer işaretlerimi ve geçmişimi oku"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Uygulamaya, Tarayıcı\'nın ziyaret etmiş olduğu tüm URL\'leri ve Tarayıcı\'nın tüm yer işaretlerini okuma izni verir."</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"web yer işaretlerine ve geçmişe yaz"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Uygulamaya, Tarayıcı geçmişini veya tabletinizde depolanmış yer işaretlerini değiştirme izni verir. Kötü amaçlı uygulamalar Tarayıcı verilerinizi silmek veya değiştirmek için bunu kullanabilir."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Uygulamaya, Tarayıcı geçmişini veya telefonunuzda depolanmış yer işaretlerini değiştirme izni verir. Kötü amaçlı uygulamalar Tarayıcı verilerinizi silmek veya değiştirmek için bunu kullanabilir."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"alarm ayarla"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"Uygulamaya, çalar saat uygulamasının alarmını ayarlama izni verir. Bazı çalar saat uygulamaları bu özelliği uygulayamayabilir."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"sesli mesaj ekle"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"Uygulamaya, sesli mesaj gelen kutunuza mesaj ekleme izni verir."</string>
@@ -1087,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Tarihi ayarla"</string>
<string name="date_time_set" msgid="5777075614321087758">"Ayarla"</string>
<string name="date_time_done" msgid="2507683751759308828">"Tamamlandı"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"Varsayılan"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"YENİ: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"YENİ: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"İzin gerektirmez"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"Gizle"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"Tümünü göster"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"USB yığın depolama"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"USB bağlandı"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"Cihazınızı USB ile bilgisayarınıza bağladınız. Bilgisayarınız ile Android\'inizin USB depolama birimi arasında dosya kopyalamak istiyorsanız aşağıdaki düğmeye dokunun."</string>
@@ -1320,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"Gönderiliyor…"</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"Tarayıcı Başlatılsın mı?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"Çağrı kabul edilsin mi?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index 4543a699..0ad2da2 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"Ваші повідомл."</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"Читати та писати в SMS, електронні листи й інші повідомлення."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Ваша особиста інформація"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Прямий доступ до контактів і календаря, збережених у пристрої."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Прямий доступ до ваших контактів і календаря, збереж. у телефоні."</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Безпосередній доступ до інформації про вас, збереженої на вашій картці контакта."</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Соціальна інформація"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Безпосередній доступ до інформації про ваші контакти та соціальні зв’язки."</string>
<string name="permgrouplab_location" msgid="635149742436692049">"Ваше місцезнаходження"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"Відстежувати ваше фізичне місцезнаходження."</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"Підключення до мережі"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"Отримувати доступ до різних функцій мережі."</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Налаштування звуку"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Зміна налаштувань звуку."</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Заряд акумулятора"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Використання функцій, які швидко зменшують заряд акумулятора."</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"Календар"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Безпосередній доступ до календаря та подій."</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Закладки й історія"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Безпосередній доступ до закладок та історії веб-переглядача."</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Сигнал"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Налаштування сигналу будильника."</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Голосова пошта"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Безпосередній доступ до голосової пошти."</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"Мікрофон"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Безпосередній доступ до мікрофона для запису звуку."</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"Камера"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"Безпосередній доступ до камери для здійснення фото- чи відеозйомки."</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Інформація про програми"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Здатність впливати на роботу інших програм на пристрої."</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Фоновий малюнок"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Зміна налаштувань фонового малюнка пристрою."</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"Годинник"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Зміна часу чи часового поясу пристрою."</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Рядок стану"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Зміна налаштувань рядка стану пристрою."</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Налаштування синхронізації"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Доступ до налаштувань синхронізації."</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"Ваші облікові записи"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"Доступ до доступних обл. записів."</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Керув. апар. забезп."</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Контроль і доступ до системи на нижчому рівні."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Інструм. розробника"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Функції, потрібні лише для розробників програм."</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"Інтерфейс іншої програми"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"Вплив на інтерфейс інших програм."</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"Зберігання"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Отрим. доступу до носія USB."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Доступ до карти SD."</string>
@@ -193,14 +238,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"Дозволяє програмі бути рядком стану."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"розгорнути/згорн. рядок стану"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Дозволяє програмі розгортати чи згортати рядок стану."</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"переадресовувати вихідні виклики"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Дозволяє програмі обробляти вихідні дзвінки та змінювати номер для виклику. Шкідливі програми можуть відстежувати, переадресовувати чи блокувати вихідні дзвінки."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"отримувати текстові повідомлення (SMS)"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"Дозволяє програмі отримувати й обробляти SMS повідомлення. Шкідливі програми можуть відстежувати ваші повідомлення чи видаляти їх, навіть не показуючи вам."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"отримувати текстові повідомлення (MMS)"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"Дозволяє програмі отримувати й обробляти MMS повідомлення. Шкідливі програми можуть відстежувати ваші повідомлення чи видаляти їх, навіть не показуючи вам."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"отримувати повідомлення екстрених служб"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Дозволяє програмі отримувати й обробляти повідомлення екстрених служб. Цей дозвіл доступний лише для системних програм."</string>
@@ -210,16 +252,13 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"Дозволяє програмі надсилати SMS повідомлення. Шкідливі програми можуть надсилати повідомлення без вашого підтвердження, заставляючи вас платити."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"надсилати SMS-повідомлення без підтвердження"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Дозволяє програмі надсилати SMS повідомлення. Шкідливі програми можуть надсилати повідомлення без вашого підтвердження, змушуючи вас платити."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"читати текстові повідомлення (SMS або MMS)"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Дозволяє програмі читати SMS повідомлення, збережені в планшетному ПК чи на SIM-карті. Шкідливі програми можуть читати ваші конфіденційні повідомлення."</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Дозволяє програмі читати SMS повідомлення, збережені в телефоні чи на SIM-карті. Шкідливі програми можуть читати ваші конфіденційні повідомлення."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"редагувати текстові повідомлення (SMS або MMS)"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Дозволяє програмі писати в SMS повідомлення, збережені в планшетному ПК чи на SIM-карті. Шкідливі програми можуть видаляти ваші повідомлення."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Дозволяє програмі писати в SMS повідомлення, збережені в телефоні чи на SIM-карті. Шкідливі програми можуть видаляти ваші повідомлення."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"отримувати текстові повідомлення (WAP)"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Дозволяє програмі отримувати й обробляти WAP повідомлення. Шкідливі програми можуть відстежувати ваші повідомлення чи видаляти їх, навіть не показуючи вам."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"отримувати запущені програми"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"Дозволяє програмі отримувати інформацію про поточні й останні запущені завдання. Шкідливі програми можуть виявляти особисту інформацію про інші програми."</string>
@@ -235,13 +274,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Дозволяє програмі контролювати режим сумісності екрана інших програм. Шкідливі програми можуть переривати роботу інших програм."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"вмикати налагодження програми"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"Дозволяє програмі вмикати налагодження для іншої програми. Шкідливі програми можуть використовувати це для примусового припинення роботи інших програм."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"змінювати системні налаштування екрана"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Дозволяє програмі змінювати поточну конфігурацію, як-от мовний код чи розмір шрифту загалом."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"увімк. режим авто"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"Дозволяє програмі вмикати режим автомобіля."</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"закривати інші програми"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Дозволяє програмі примусово припиняти фонові процеси інших програм, навіть якщо пам’яті достатньо."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"примусово припиняти роботу інших програм"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Дозволяє програмі примусово припиняти роботу інших програм."</string>
@@ -265,8 +302,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Дозволяє програмі передавати сповіщення про отримання повідомлення WAP PUSH. Шкідливі програми можуть використовувати це для підробки отримання MMS повідомлень або для непомітної заміни вмісту будь-якої веб-сторінки шкідливими варіантами."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"обмежувати кількість запущ. процесів"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Дозволяє програмі контролювати максимальну кількість процесів, які буде запущено. Ніколи не вимагається для звичайних програм."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"примусово закривати фонові програми"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Дозволяє програмі контролювати обов’язкове завершення всіх дій, які переходять у фоновий режим. Ніколи не вимагається для звичайних програм."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"змінювати статистику батареї"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"Дозволяє програмі змінювати зібрану статистику акумулятора. Не для використання звичайними програмами."</string>
@@ -276,8 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Дозволяє програмі запускати користувацький інтерфейс підтвердження повного резервного копіювання. Не для використання жодною програмою."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"відображати несанкціон. вікна"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Дозволяє програмі створювати вікна, які мають використовуватися інтерфейсом користувача внутрішньої системи. Не для використання звичайними програмами."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"відображатися над іншими програмами"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Дозволяє програмі відображати вікна сповіщень системи. Шкідливі програми можуть контролювати весь екран."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"змінюв. заг. швидкість анімації"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Дозволяє програмі будь-коли змінювати загальну швидкість анімації (пришвидшувати чи сповільнювати анімації)."</string>
@@ -339,26 +374,22 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Дозволяє програмі надавати або скасовувати певні дозволи для себе чи інших програм. Шкідливі програми можуть використовувати це для доступу до функцій, якого ви їм не надавали."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"установлювати потрібні програми"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Дозволяє програмі змінювати ваші вибрані програми. Шкідливі програми можуть непомітно змінювати запущені програми, примушуючи існуючі програми оманливим шляхом збирати ваші особисті дані."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"змінювати налаштування системи"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"Дозволяє програмі змінювати дані налаштувань системи. Шкідливі програми можуть пошкодити конфігурацію вашої системи."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"змін. налашт-ня безпеки системи"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Дозволяє програмі змінювати дані налаштувань безпеки системи. Не для використання звичайними програмами."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"змінювати карту служб Google"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"Дозволяє програмі змінювати карту служб Google. Не для використання звичайними програмами."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"виконуватися під час запуску"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Дозволяє програмі запускатися, щойно завантаження системи закінчиться. Це може затримувати запуск планшетного ПК та дозволяє програмі сповільнювати загальну роботу планшетного ПК своїм постійним функціонуванням."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Дозволяє програмі запускатися, щойно завантаження системи закінчиться. Це може затримувати запуск телефону та дозволяє програмі сповільнювати загальну роботу телефону своїм постійним функціонуванням."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"надсилати закріпл. запис"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Дозволяє програмі надсилати закріплені широкомовні повідомлення, які залишаються після відтворення широкомовного повідомлення. Шкідливі програми можуть сповільнювати роботу планшетного ПК або порушувати її стабільність, спричиняючи завелике використання пам’яті."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Дозволяє програмі надсилати закріплені широкомовні повідомлення, які залишаються після відтворення широкомовного повідомлення. Шкідливі програми можуть сповільнювати роботу телефону або порушувати її стабільність, спричиняючи завелике використання пам’яті."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
+ <string name="permlab_readContacts" msgid="8348481131899886131">"читати контакти"</string>
<string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Дозволяє програмі читати всі дані про контакти, які зберігаються на вашому планшетному ПК, зокрема частоту здійснення дзвінків, надсилання електронних листів або інших способів спілкування з окремими особами. Це допомагає автоматично завершувати написання електронних адрес і користуватися іншими зручними функціями. Шкідливі програми можуть використовувати цей дозвіл для надсилання ваших контактних даних іншим людям."</string>
<string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Дозволяє програмі читати всі дані про контакти, які зберігаються на вашому телефоні, зокрема частоту здійснення дзвінків, надсилання електронних листів або інших способів спілкування з окремими особами. Це допомагає автоматично завершувати написання електронних адрес і користуватися іншими зручними функціями. Шкідливі програми можуть використовувати цей дозвіл для надсилання ваших контактних даних іншим людям."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"змінювати контакти"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Дозволяє програмі змінювати всі дані про контакти, які зберігаються на вашому планшетному ПК, зокрема частоту здійснення дзвінків, надсилання електронних листів або інших способів спілкування з окремими особами. Це допомагає автоматично завершувати написання електронних адрес і користуватися іншими зручними функціями. Шкідливі програми можуть використовувати це для стирання чи зміни ваших контактних даних."</string>
<string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Дозволяє програмі змінювати всі дані про контакти, які зберігаються на вашому телефоні, зокрема частоту здійснення дзвінків, надсилання електронних листів або інших способів спілкування з окремими особами. Це допомагає автоматично завершувати написання електронних адрес і користуватися іншими зручними функціями. Шкідливі програми можуть використовувати це для стирання чи зміни ваших контактних даних."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"читати журнал викликів"</string>
@@ -367,11 +398,9 @@
<string name="permlab_writeCallLog" msgid="8552045664743499354">"записувати в журнал викликів"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Дозволяє програмі змінювати журнал викликів вашого планшетного ПК, включно з даними про вхідні та вихідні дзвінки. Шкідливі програми можуть використовувати це для стирання або зміни вашого журналу викликів."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Дозволяє програмі змінювати журнал викликів вашого телефону, включно з даними про вхідні та вихідні дзвінки. Шкідливі програми можуть використовувати це для стирання або зміни вашого журналу викликів."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"читати картки контактів"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Дозволяє програмі читати особисту інформацію профілю, збережену на вашому пристрої, як-от ваше ім’я та контактну інформацію. Це означає, що інші програми можуть ідентифікувати вашу особу та надсилати дані вашого профілю іншим."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"змінювати картки контактів"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Дозволяє програмі змінювати чи додавати особисту інформацію профілю, збережену на вашому пристрої, як-от ваше ім’я та контактну інформацію. Це означає, що інші програми можуть ідентифікувати вашу особу та надсилати дані вашого профілю іншим."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"читати ваш соціальний потік"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Дозволяє програмі отримувати доступ до оновлень із соціальних мереж від вас і ваших друзів та синхронізувати їх. Шкідливі програми можуть використовувати це для читання приватної кореспонденції між вами та вашими друзями в соціальних мережах."</string>
@@ -412,15 +441,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"примус. перезав. тел."</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Дозволяє програмі примусово перезавантажувати планшетний ПК."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Дозволяє програмі примусово перезавантажувати телефон."</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"отрим.доступ до файл.сист. USB"</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"отримувати доступ до файлової системи карти SD"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Дозволяє програмі підключати та відключати файлові системи для пам’яті на знімних носіях."</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"очищати носій USB"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"очищати карту SD"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Дозволяє програмі форматувати пам’ять на знімних носіях."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"переносити інф-ю у внутрішню пам\'ять"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"Дозволяє програмі отримувати інформацію про внутрішню пам’ять."</string>
@@ -432,8 +457,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Дозволяє програмі підключати чи відключати внутрішню пам’ять."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"переймен. внутр. пам\'ять"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"Дозволяє програмі перейменовувати внутрішню пам’ять."</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"контролювати вібросигнал"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"Дозволяє програмі контролювати вібросигнал."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"контр. блим. світло"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"Дозволяє програмі контролювати світловий сигнал."</string>
@@ -458,8 +482,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"Дозволяє програмі повідомляти системі, які віджети можуть використовуватися певною програмою. Програма з цим дозволом може надавати іншим програмам доступ до особистих даних. Не для використання звичайними програмами."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"змінювати стан тел."</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Дозволяє програмі контролювати телефонні функції пристрою. Програма з цим дозволом може переключати мережі, вмикати та вимикати радіо в телефоні тощо без вашого відома."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"читати статус та ідентифікаційну інформацію телефону"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"Дозволяє програмі отримувати доступ до телефонних функцій пристрою. Програма з цим дозволом може визначати номер телефону та серійний номер цього телефону, активність виклику, номер, на який робиться виклик, тощо."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"не доп.перехід пристр.в реж.сну"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"недоп. перехід тел. в реж. сну"</string>
@@ -474,8 +497,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Запускає тест виробника на низькому рівні, дозволяючи повний доступ до апарат. забезп. тел. Доступно лише коли тел. запущено в режимі тестув. виробником."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"установити фоновий малюнок"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"Дозволяє програмі встановлювати фоновий малюнок системи."</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"налаштовувати розмір фонового малюнка"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Дозволяє програмі встановлювати підказки щодо розміру фонового малюнка системи."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"віднов. завод. парам. за умовч."</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"Дозволяє програмі повністю відновлювати заводські налаштування системи, видаляючи всі дані, конфігурацію та встановлені програми."</string>
@@ -487,21 +509,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Дозволяє програмі змінювати часовий пояс телефону."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"діяти як AccountManagerService"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"Дозволяє програмі здійснювати виклики AccountAuthenticators."</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"знаходити облікові записи на пристрої"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Дозволяє програмі отримувати список облікових записів, відомих планшетному ПК."</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Дозволяє програмі отримувати список облікових записів, відомих телефону."</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"створювати облікові записи й установлювати паролі"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Дозволяє програмі використовувати можливості автентифікатора облікового запису AccountManager, зокрема створювати облікові записи, а також отримувати та встановлювати паролі до них."</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"додавати або видаляти облікові записи"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"Дозволяє програмі виконувати такі операції, як додавання та видалення облікових записів і видалення паролів до них."</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"використовувати облікові записи на пристрої"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"Дозволяє програмі подавати запити на маркери автентифікації."</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"переглядати мережеві з’єднання"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"Дозволяє програмі переглядати стани всіх мереж."</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"повний доступ до Інтернету"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Дозволяє програмі створювати сокети мережі."</string>
@@ -513,36 +530,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"Дозволяє програмі змінювати стан під’єднання до мережі в режимі модема."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"змінювати параметр викор. фонових даних"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Дозволяє програмі змінювати параметр використання фонових даних."</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"переглядати з’єднання Wi-Fi"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"Дозволяє програмі переглядати інформацію про стан Wi-Fi."</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"під’єднуватися й від’єднуватися від Wi-Fi"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"Дозволяє програмі підключатися та відключатися від точок доступу Wi-Fi, а також вносити зміни в налаштовані мережі Wi-Fi."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"дозвол. отримання багатоадр. Wi-Fi"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Дозволяє програмі отримувати пакети, не адресовані безпосередньо вашому пристрою. Це може буди корисним для виявлення служб, які надаються поблизу. Використовує більше заряду, ніж режим не-багатоадресних пакетів."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"отримувати доступ до налаштувань Bluetooth"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Дозволяє програмі налаштовувати планшетний ПК із локальним Bluetooth, а також знаходити віддалені пристрої та створювати з ними пару."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Дозволяє програмі налаштовувати телефон із локальним Bluetooth, а також знаходити віддалені пристрої та створювати з ними пару."</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Переглядати з’єднання WiMAX"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Дозволяє програмі переглядати інформацію про стан WiMAX."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"Змінити стан WiMAX"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Дозволяє програмі підключатися та відключатися від мережі WiMAX."</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"створювати пару з пристроями Bluetooth"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Дозволяє програмі переглядати конфігурацію планшетного ПК із локальним Bluetooth, а також створювати та приймати з’єднання зі спареними пристроями."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Дозволяє програмі переглядати конфігурацію локального телефону з Bluetooth, а також створювати та приймати з’єднання зі спареними пристроями."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"контрол. Near Field Communication"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Дозволяє програмі обмінюватися даними з тегами, картками та читачами екрана Near Field Communication (NFC)."</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"вимикати блокування екрана"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Дозволяє програмі вимикати блокування клавіатури та будь-який пов’язаний паролем захист. Допустимий приклад: телефон вимикає блокування клавіатури під час отримання вхідного дзвінка, після закінчення якого блокування клавіатури відновлюється."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"читати налаштування синхронізації"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Дозволяє програмі читати налаштування синхронізації, наприклад, чи ввімкнено синхронізацію для програми \"Люди\"."</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"вмикати й вимикати синхронізацію"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Дозволяє програмі змінювати налаштування синхронізації, наприклад, чи ввімкнено синхронізацію для програми \"Люди\"."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"читати стат-ку синхрон."</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"Дозволяє програмі читати статистику синхронізації, напр., історію здійснених синхронізацій."</string>
@@ -550,22 +560,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Дозволяє програмі отримувати відомості про поточно синхронізовані канали."</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"запис. підписані канали"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Дозволяє програмі змінювати поточно синхронізовані канали. Шкідливі програми можуть змінювати ваші синхронізовані канали."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"читати додані в словник терміни"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Дозволяє програмі читати будь-які особисті вислови, назви та фрази, які користувач міг зберегти у своєму словнику."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"писати у вказаний користувачем словник"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Дозволяє програмі писати нові слова в словник користувача."</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"читати вміст носія USB"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"читати вміст карти SD"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Дозволяє програмі читати вміст носія USB, що може включати фотографії й медіа-файли."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Дозволяє програмі читати вміст карти SD, що може включати фотографії й медіа-файли."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"змінювати чи видаляти вміст USB"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Дозволяє програмі писати на носій USB"</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Дозволяє програмі записувати на карту SD."</string>
@@ -744,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"У тел. немає SIM-карти."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Вставте SIM-карту."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM-карта відсутня або недоступна для читання. Вставте SIM-карту."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"Непридатна SIM-карта."</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Вашу SIM-карту вимкнено назавжди."\n" Зверніться до свого постачальника послуг бездротового зв’язку, щоб отримати іншу SIM-карту."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Кнопка \"Попередня доріжка\""</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Кнопка \"Наступна доріжка\""</string>
@@ -819,15 +824,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"Община"</string>
<string name="autofill_area" msgid="3547409050889952423">"Область"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"Емірат"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"читати веб-закладки й історію"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Дозволяє програмі читати всі URL-адреси, які відкривалися в цьому веб-переглядачі, і всі закладки веб-переглядача."</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"писати у веб-закладки й історію"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Дозволяє програмі змінювати історію чи закладки веб-переглядача, збережені у вашому планшетному ПК. Шкідливі програми можуть використовувати це для видалення чи зміни даних веб-переглядача."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Дозволяє програмі змінювати історію чи закладки веб-переглядача, збережені у вашому телефоні. Шкідливі програми можуть використовувати це для видалення чи зміни даних веб-переглядача."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"установлювати будильник"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"Дозволяє програмі налаштовувати сигнал у встановленій програмі будильника. У деяких програмах будильника ця функція може не застосовуватися."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"додавати голосову пошту"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"Дозволяє програмі додавати повідомлення в папку \"Вхідні\" голосової пошти."</string>
@@ -1087,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Установити дату"</string>
<string name="date_time_set" msgid="5777075614321087758">"Застосувати"</string>
<string name="date_time_done" msgid="2507683751759308828">"Готово"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"За умовч."</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"НОВИЙ: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"НОВИЙ: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"Дозвіл не потрібний"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"Сховати"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"Показ. всі"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"USB великої ємності"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"Підкл. через USB"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"Ви під’єдналися до комп’ютера за допомогою USB. Торкніться кнопки нижче, якщо потрібно скопіювати файли з комп’ютера на носій USB вашого пристрою Android або навпаки."</string>
@@ -1320,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"Надсилання…"</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"Запустити веб-переглядач?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"Прийняти виклик?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index 5b8296a..192c1dc 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"Tin nhắn của bạn"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"Đọc và soạn SMS, email và các tin nhắn khác của bạn."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Thông tin cá nhân của bạn"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Quyền truy cập trực tiếp vào danh bạ và lịch của bạn được lưu trữ trên máy tính bảng."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Quyền truy cập trực tiếp vào danh bạ và lịch của bạn được lưu trữ trên điện thoại."</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Truy cập trực tiếp vào thông tin về bạn, được lưu trữ trên thẻ liên hệ của bạn."</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Thông tin xã hội của bạn"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Truy cập trực tiếp vào thông tin về các địa chỉ liên hệ và các kết nối xã hội của bạn."</string>
<string name="permgrouplab_location" msgid="635149742436692049">"Vị trí của bạn"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"Giám sát vị trí thực của bạn."</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"Kết nối mạng"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"Truy cập các tính năng mạng khác nhau."</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Cài đặt âm thanh"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Thay đổi cài đặt âm thanh."</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Ảnh hưởng tới pin"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Sử dụng các tính năng có thể làm nhanh hết pin."</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"Lịch"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Truy cập trực tiếp vào lịch và sự kiện."</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Dấu trang và lịch sử"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Truy cập trực tiếp vào dấu trang và lịch sử trình duyệt."</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"Báo thức"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Đặt đồng hồ báo thức."</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"Thư thoại"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Truy cập trực tiếp vào thư thoại."</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"Micrô"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Truy cập trực tiếp vào micrô để ghi âm."</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"Máy ảnh"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"Truy cập trực tiếp vào máy ảnh để chụp ảnh hoặc quay video."</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Thông tin về các ứng dụng của bạn"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Khả năng ảnh hưởng tới hoạt động của các ứng dụng khác trên thiết bị của bạn."</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Hình nền"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Thay đổi cài đặt hình nền của thiết bị."</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"Đồng hồ"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Thay đổi giờ hoặc múi giờ của thiết bị."</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Thanh trạng thái"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Thay đổi cài đặt thanh trạng thái của thiết bị."</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Cài đặt đồng bộ hóa"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Truy cập vào cài đặt đồng bộ hóa."</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"Tài khoản của bạn"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"Truy cập các tài khoản khả dụng."</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Kiểm soát phần cứng"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Quyền truy cập và quyền kiểm soát hệ thống cấp thấp hơn."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Công cụ phát triển"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Các tính năng chỉ cần cho nhà phát triển ứng dụng."</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"Giao diện người dùng của ứng dụng khác"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"Ảnh hưởng tới giao diện người dùng của các ứng dụng khác."</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"Dung lượng"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Truy cập bộ nhớ USB."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Truy cập thẻ SD."</string>
@@ -193,14 +238,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"Cho phép ứng dụng trở thành thanh trạng thái."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"mở rộng/thu gọn thanh trạng thái"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Cho phép ứng dụng mở rộng hoặc thu gọn thanh trạng thái."</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"định tuyến lại cuộc gọi đi"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Cho phép ứng dụng xử lý cuộc gọi đi và thay đổi số được gọi. Ứng dụng độc hại có thể theo dõi, chuyển hướng hoặc chặn cuộc gọi đi."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"nhận tin nhắn văn bản (SMS)"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"Cho phép ứng dụng nhận và xử lý tin nhắn SMS. Ứng dụng độc hại có thể giám sát tin nhắn của bạn hoặc xóa tin nhắn mà không hiển thị chúng cho bạn."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"nhận tin nhắn văn bản (MMS)"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"Cho phép ứng dụng nhận và xử lý tin nhắn MMS. Ứng dụng độc hại có thể theo dõi tin nhắn của bạn hoặc xóa tin nhắn mà không hiển thị chúng cho bạn."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"nhận các truyền phát khẩn cấp"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Cho phép ứng dụng nhận và xử lý tin nhắn truyền phát khẩn cấp. Quyền này chỉ sẵn có cho các ứng dụng hệ thống."</string>
@@ -210,16 +252,13 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"Cho phép ứng dụng gửi tin nhắn SMS. Ứng dụng độc hại có thể khiến bạn tốn tiền bằng cách gửi tin nhắn mà không cần xác nhận của bạn."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"gửi tin nhắn SMS mà không cần xác nhận"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Cho phép ứng dụng gửi tin nhắn SMS. Ứng dụng độc hại có thể khiến bạn bị mất tiền khi gửi tin nhắn mà không có xác nhận của bạn."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"đọc tin nhắn văn bản của bạn (SMS hoặc MMS)"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Cho phép ứng dụng đọc tin nhắn SMS được lưu trữ trên máy tính bảng hoặc thẻ SIM của bạn. Ứng dụng độc hại có thể đọc các tin nhắn bí mật của bạn."</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Cho phép ứng dụng đọc tin nhắn SMS được lưu trữ trên điện thoại hoặc thẻ SIM của bạn. Ứng dụng độc hại có thể đọc các tin nhắn bí mật của bạn."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"chỉnh sửa tin nhắn văn bản của bạn (SMS hoặc MMS)"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Cho phép ứng dụng ghi vào tin nhắn SMS được lưu trữ trên máy tính bảng hoặc thẻ SIM của bạn. Ứng dụng độc hại có thể xóa tin nhắn của bạn."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Cho phép ứng dụng ghi vào tin nhắn SMS được lưu trữ trên điện thoại hoặc thẻ SIM của bạn. Ứng dụng độc hại có thể xóa tin nhắn của bạn."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"nhận tin nhắn văn bản (WAP)"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Cho phép ứng dụng nhận và xử lý tin nhắn WAP. Ứng dụng độc hại có thể giám sát tin nhắn của bạn hoặc xóa tin nhắn mà không hiển thị chúng cho bạn."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"truy xuất các ứng dụng đang chạy"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"Cho phép ứng dụng truy xuất thông tin về các công việc đã và đang chạy gần đây. Ứng dụng độc hại có thể phát hiện thông tin riêng tư về các ứng dụng khác."</string>
@@ -235,13 +274,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Cho phép ứng dụng kiểm soát chế độ tương thích màn hình của ứng dụng khác. Các ứng dụng độc hại có thể phá vỡ hoạt động của các ứng dụng khác."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"bật gỡ lỗi ứng dụng"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"Cho phép ứng dụng bật gỡ lỗi cho một ứng dụng khác. Ứng dụng độc hại có thể sử dụng quyền này để loại bỏ những ứng dụng khác."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"thay đổi cài đặt hiển thị hệ thống"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Cho phép ứng dụng thay đổi cấu hình hiện tại, chẳng hạn như ngôn ngữ hoặc kích thước phông chữ chung."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"bật chế độ trên ô tô"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"Cho phép ứng dụng bật chế độ trên ô tô."</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"đóng ứng dụng khác"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Cho phép ứng dụng loại bỏ các quá trình ở nền sau của ứng dụng khác, ngay cả khi không thiếu dung lượng bộ nhớ."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"buộc dừng ứng dụng khác"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Cho phép ứng dụng buộc dừng ứng dụng khác."</string>
@@ -265,8 +302,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Cho phép ứng dụng truyền phát thông báo cho biết rằng đã nhận được tin nhắn WAP PUSH. Ứng dụng độc hại có thể sử dụng quyền này để giả mạo xác nhận đã nhận được tin nhắn MMS hoặc ngầm thay thế nội dung của bất kỳ trang web nào bằng các biến thể độc hại."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"giới hạn số quá trình đang chạy"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Cho phép ứng dụng kiểm soát số quy trình tối đa sẽ chạy. Không cần thiết cho các ứng dụng thông thường."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"buộc ứng dụng nền đóng"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Cho phép ứng dụng kiểm soát xem các hoạt động có luôn hoàn tất ngay khi chúng chuyển sang nền sau hay không. Không cần thiết cho các ứng dụng thông thường."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"sửa đổi thống kê về pin"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"Cho phép ứng dụng sửa đổi các số liệu thống kê về pin đã được thu thập. Không dành cho các ứng dụng thông thường."</string>
@@ -276,8 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Cho phép ứng dụng khởi chạy UI xác nhận sao lưu toàn bộ. Không dành cho bất kỳ ứng dụng nào."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"hiển thị các cửa sổ trái phép"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Cho phép ứng dụng tạo các cửa sổ dùng cho giao diện người dùng hệ thống nội bộ. Không dành cho các ứng dụng thông thường."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"vẽ trên ứng dụng khác"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Cho phép ứng dụng hiển thị các cửa sổ thông báo hệ thống. Ứng dụng độc hại có thể kiểm soát toàn bộ màn hình."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"sửa đổi tốc độ hoạt ảnh chung"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Cho phép ứng dụng thay đổi tốc độ hoạt ảnh nói chung (hoạt ảnh nhanh hơn hoặc chậm hơn) bất cứ lúc nào."</string>
@@ -339,26 +374,22 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Cho phép ứng dụng cấp hoặc thu hồi quyền cụ thể đối với ứng dụng đó hoặc các ứng dụng khác. Các ứng dụng độc hại có thể lợi dụng điều này để truy cập các tính năng mà bạn không cấp."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"đặt ứng dụng ưa thích"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Cho phép ứng dụng sửa đổi ứng dụng ưa thích của bạn. Ứng dụng độc hại có thể ngầm thay đổi các ứng dụng đã được chạy, giả mạo các ứng dụng hiện có để thu thập dữ liệu cá nhân của bạn."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"sửa đổi cài đặt hệ thống"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"Cho phép ứng dụng sửa đổi dữ liệu cài đặt của hệ thống. Ứng dụng độc hại có thể làm hỏng cấu hình hệ thống của bạn."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"sửa đổi cài đặt hệ thống bảo mật"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Cho phép ứng dụng sửa đổi dữ liệu cài đặt bảo mật của hệ thống. Không dành cho các ứng dụng thông thường."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"sửa đổi bản đồ dịch vụ của Google"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"Cho phép ứng dụng sửa đổi bản đồ dịch vụ của Google. Không dành cho ứng dụng thông thường."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"chạy khi khởi động"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Cho phép ứng dụng tự khởi chạy ngay khi hệ thống khởi động xong. Quyền này có thể khiến máy tính bảng mất nhiều thời gian khởi động hơn và cho phép ứng dụng làm chậm toàn bộ máy tính bảng do ứng dụng luôn chạy."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Cho phép ứng dụng tự khởi chạy ngay khi hệ thống khởi động xong. Quyền này có thể khiến điện thoại mất nhiều thời gian khởi động hơn và cho phép ứng dụng làm chậm toàn bộ điện thoại do ứng dụng luôn chạy."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"gửi truyền phát hấp dẫn người xem"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Cho phép ứng dụng gửi nội dung truyền phát hấp dẫn người xem. Nội dung này sẽ vẫn còn sau khi quá trình truyền phát kết thúc. Ứng dụng độc hại có thể làm cho máy tính bảng bị chậm hoặc không ổn định bằng cách khiến máy tính bảng sử dụng quá nhiều bộ nhớ."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Cho phép ứng dụng gửi nội dung truyền phát hấp dẫn người xem. Nội dung này sẽ vẫn còn sau khi quá trình truyền phát kết thúc. Ứng dụng độc hại có thể làm cho điện thoại bị chậm hoặc không ổn định bằng cách khiến điện thoại sử dụng quá nhiều bộ nhớ."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
+ <string name="permlab_readContacts" msgid="8348481131899886131">"đọc danh sách liên hệ của bạn"</string>
<string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Cho phép ứng dụng đọc tất cả dữ liệu về các liên hệ được lưu trữ trên máy tính bảng của bạn, bao gồm cả các liên hệ mà bạn thường xuyên gọi, gửi email hoặc liên lạc theo các cách khác với các cá nhân cụ thể. Việc này giúp ích cho tính năng tự động hoàn tất địa chỉ email và các tính năng tiện lợi khác. Các ứng dụng độc hại có thể sử dụng quyền này để gửi dữ liệu liên hệ của bạn cho những người khác."</string>
<string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Cho phép ứng dụng đọc tất cả dữ liệu về các liên hệ được lưu trữ trên điện thoại của bạn, bao gồm cả các liên hệ mà bạn thường xuyên gọi, gửi email hoặc liên lạc theo các cách khác với các cá nhân cụ thể. Việc này giúp ích cho tính năng tự động hoàn tất địa chỉ email và các tính năng tiện lợi khác. Các ứng dụng độc hại có thể sử dụng quyền này để gửi dữ liệu liên hệ của bạn cho những người khác."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"sửa đổi danh sách liên hệ của bạn"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Cho phép ứng dụng sửa đổi dữ liệu về các liên hệ được lưu trữ trên máy tính bảng của bạn, bao gồm cả các liên hệ mà bạn thường xuyên gọi, gửi email hoặc liên lạc theo các cách khác với các cá nhân cụ thể. Việc này giúp ích cho tính năng tự động hoàn tất địa chỉ email và các tính năng tiện lợi khác. Các ứng dụng độc hại có thể sử dụng quyền này để xóa hoặc sửa đổi dữ liệu liên hệ của bạn."</string>
<string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Cho phép ứng dụng sửa đổi dữ liệu về các liên hệ được lưu trữ trên điện thoại của bạn, bao gồm cả các liên hệ mà bạn thường xuyên gọi, gửi email hoặc liên lạc theo các cách khác với các cá nhân cụ thể. Việc này giúp ích cho tính năng tự động hoàn tất địa chỉ email và các tính năng tiện lợi khác. Các ứng dụng độc hại có thể sử dụng quyền này để xóa hoặc sửa đổi dữ liệu liên hệ của bạn."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"đọc nhật ký cuộc gọi"</string>
@@ -367,11 +398,9 @@
<string name="permlab_writeCallLog" msgid="8552045664743499354">"ghi nhật ký cuộc gọi"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Cho phép ứng dụng sửa đổi nhật ký cuộc gọi trên máy tính bảng của bạn, bao gồm dữ liệu về các cuộc gọi đến và gọi đi. Các ứng dụng độc hại có thể sử dụng quyền này để xóa hoặc sửa đổi nhật ký cuộc gọi của bạn."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Cho phép ứng dụng sửa đổi nhật ký cuộc gọi trên điện thoại của bạn, bao gồm dữ liệu về các cuộc gọi đến và gọi đi. Các ứng dụng độc hại có thể sử dụng quyền này để xóa hoặc sửa đổi nhật ký cuộc gọi của bạn."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"đọc thẻ liên hệ của riêng bạn"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Cho phép ứng dụng đọc thông tin tiểu sử cá nhân được lưu trữ trên thiết bị, chẳng hạn như tên và thông tin liên hệ của bạn. Điều này có nghĩa là ứng dụng có thể xác định danh tính của bạn và gửi thông tin tiểu sử của bạn cho người khác."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"sửa đổi thẻ liên hệ của riêng bạn"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Cho phép ứng dụng thay đổi hoặc thêm vào thông tin tiểu sử cá nhân được lưu trữ trên thiết bị, chẳng hạn như tên và thông tin liên hệ của bạn. Điều này có nghĩa là các ứng dụng khác có thể xác định danh tính của bạn và gửi thông tin tiểu sử của bạn cho người khác."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"đọc luồng xã hội của bạn"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Cho phép ứng dụng truy cập và đồng bộ hóa các cập nhật xã hội của bạn và bạn bè bạn. Ứng dụng độc hại có thể sử dụng quyền này để đọc thông tin liên lạc cá nhân giữa bạn và bạn bè bạn trên các mạng xã hội."</string>
@@ -412,15 +441,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"buộc khởi động lại điện thoại"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Cho phép ứng dụng buộc máy tính bảng khởi động lại."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Cho phép ứng dụng buộc điện thoại khởi động lại."</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"truy cập hệ thống tệp của bộ lưu trữ USB"</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"truy cập hệ thống tệp Thẻ SD"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Cho phép ứng dụng cài và gỡ các hệ thống tệp của bộ nhớ di động."</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"xóa bộ lưu trữ USB"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"xóa Thẻ SD"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Cho phép ứng dụng định dạng bộ nhớ di động."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"nhận thông tin trên bộ nhớ trong"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"Cho phép ứng dụng lấy thông tin trên bộ nhớ trong."</string>
@@ -432,8 +457,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Cho phép ứng dụng kết nối/ngắt kết nối bộ nhớ trong."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"đổi tên bộ nhớ trong"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"Cho phép ứng dụng đổi tên bộ nhớ trong."</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"kiểm soát rung"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"Cho phép ứng dụng kiểm soát bộ rung."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"kiểm soát đèn nháy"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"Cho phép ứng dụng kiểm soát đèn nháy."</string>
@@ -458,8 +482,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"Cho phép ứng dụng thông báo cho hệ thống biết tiện ích con nào có thể được sử dụng bởi ứng dụng nào. Với quyền này, ứng dụng có thể cấp quyền truy cập vào dữ liệu cá nhân cho các ứng dụng khác. Không dành cho các ứng dụng thông thường."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"sửa đổi trạng thái điện thoại"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Cho phép ứng dụng kiểm soát các tính năng điện thoại của thiết bị. Ứng dụng có quyền này có thể chuyển đổi mạng, bật và tắt radio điện thoại cũng như thực hiện các tác vụ tương tự mà không cần thông báo cho bạn."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"đọc trạng thái và nhận dạng của điện thoại"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"Cho phép ứng dụng truy cập vào các tính năng điện thoại của thiết bị. Ứng dụng có quyền này có thể xác định số điện thoại và số sêri của điện thoại này, cho dù cuộc gọi có hiện hoạt hay không, số mà cuộc gọi đó được kết nối và các thông tin tương tự."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"ngăn máy tính bảng chuyển sang chế độ ngủ"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"ngăn điện thoại chuyển sang chế độ ngủ"</string>
@@ -474,8 +497,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Chạy dưới dạng thử nghiệm nhà máy cấp thấp, cho phép quyền truy cập hoàn toàn vào phần cứng điện thoại. Chỉ khả dụng khi điện thoại chạy ở chế độ thử nghiệm trong nhà máy."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"đặt hình nền"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"Cho phép ứng dụng đặt hình nền hệ thống."</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"điều chỉnh kích thước hình nền của bạn"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Cho phép ứng dụng đặt gợi ý kích thước hình nền của hệ thống."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"đặt lại hệ thống về mặc định ban đầu"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"Cho phép ứng dụng đặt lại toàn bộ hệ thống về cài đặt ban đầu, xóa tất cả dữ liệu, cấu hình và ứng dụng đã cài đặt."</string>
@@ -487,21 +509,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Cho phép ứng dụng thay đổi múi giờ của điện thoại."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"hoạt động như AccountManagerService"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"Cho phép ứng dụng thực hiện cuộc gọi đến AccountAuthenticators."</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"tìm tài khoản trên thiết bị"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Cho phép ứng dụng nhận danh sách các tài khoản mà máy tính bảng biết."</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Cho phép ứng dụng nhận danh sách các tài khoản mà điện thoại biết."</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"tạo tài khoản và đặt mật khẩu"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Cho phép ứng dụng sử dụng các tính năng của trình xác thực tài khoản của AccountManager, bao gồm tạo tài khoản, nhận và đặt mật khẩu cho các tài khoản đó."</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"thêm hoặc xóa tài khoản"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"Cho phép ứng dụng thực hiện các thao tác như thêm và xóa tài khoản cũng như xóa mật khẩu của các tài khoản đó."</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"sử dụng tài khoản trên thiết bị"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"Cho phép ứng dụng yêu cầu mã thông báo xác thực."</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"xem kết nối mạng"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"Cho phép ứng dụng xem trạng thái của tất cả các mạng."</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"quyền truy cập Internet đầy đủ"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Cho phép ứng dụng tạo các cổng mạng."</string>
@@ -513,36 +530,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"Cho phép ứng dụng thay đổi trạng thái của kết nối mạng được dùng làm điểm truy cập Internet."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"thay đổi cài đặt sử dụng dữ liệu nền"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Cho phép ứng dụng thay đổi cài đặt sử dụng dữ liệu nền."</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"xem kết nối Wi-Fi"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"Cho phép ứng dụng xem thông tin về trạng thái Wi-Fi."</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"kết nối và ngắt kết nối Wi-Fi"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"Cho phép ứng dụng kết nối và ngắt kết nối khỏi điểm truy cập Wi-Fi cũng như thực hiện các thay đổi đối với mạng Wi-Fi đã được định cấu hình."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"cho phép thu tín hiệu Wi-Fi Đa hướng"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Cho phép ứng dụng nhận các gói không được gửi trực tiếp đến thiết bị của bạn. Quyền này có thể hữu ích khi phát hiện các dịch vụ được cung cấp gần đó. Chế độ này sử dụng nhiều năng lượng hơn chế độ không phát đa hướng."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"truy cập cài đặt Bluetooth"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Cho phép ứng dụng định cấu hình máy tính bảng Bluetooth cục bộ cũng như phát hiện và ghép nối với các thiết bị từ xa."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Cho phép ứng dụng định cấu hình điện thoại Bluetooth cục bộ cũng như phát hiện và ghép nối với các thiết bị từ xa."</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Xem kết nối WiMAX"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Cho phép ứng dụng xem thông tin về trạng thái của WiMAX."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"Thay đổi trạng thái WiMAX"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Cho phép ứng dụng kết nối và ngắt kết nối mạng WiMAX."</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"ghép nối với thiết bị Bluetooth"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Cho phép ứng dụng xem cấu hình của máy tính bảng Bluetooth cục bộ cũng như tạo và chấp nhận các kết nối với thiết bị được ghép nối."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Cho phép ứng dụng xem cấu hình của điện thoại Bluetooth cục bộ cũng như tạo và chấp nhận các kết nối với thiết bị được ghép nối."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"kiểm soát Liên lạc trường gần"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Cho phép ứng dụng giao tiếp với thẻ Giao tiếp trường gần (NFC), thẻ và trình đọc."</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"vô hiệu hóa khóa màn hình của bạn"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Cho phép ứng dụng tắt khóa phím và bất kỳ bảo mật mật khẩu được liên kết nào. Ví dụ thích hợp của việc này là điện thoại tắt khóa phím khi nhận được cuộc gọi đến, sau đó bật lại khóa phím khi cuộc gọi kết thúc."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"đọc cài đặt đồng bộ hóa"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Cho phép ứng dụng đọc cài đặt đồng bộ hóa, chẳng hạn như liệu đồng bộ hóa đã được bật cho ứng dụng Liên hệ hay chưa."</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"chuyển đổi bật và tắt đồng bộ hóa"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Cho phép ứng dụng sửa đổi cài đặt đồng bộ hóa, chẳng hạn như có bật đồng bộ hóa cho ứng dụng Liên hệ hay không."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"đọc thống kê đồng bộ hóa"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"Cho phép ứng dụng đọc các số liệu thống kê về đồng bộ hóa; ví dụ: lịch sử đồng bộ hóa đã diễn ra."</string>
@@ -550,22 +560,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Cho phép ứng dụng lấy thông tin chi tiết về nguồn cấp dữ liệu hiện được đồng bộ hóa."</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"ghi nguồn cấp dữ liệu đã đăng ký"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Cho phép ứng dụng sửa đổi nguồn cấp dữ liệu hiện đã được đồng bộ hóa của bạn. Ứng dụng độc hại có thể thay đổi nguồn cấp dữ liệu đã đồng bộ hóa của bạn."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"đọc cụm từ bạn đã thêm vào từ điển"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Cho phép ứng dụng đọc bất kỳ từ, tên và cụm từ riêng nào mà người dùng có thể đã lưu trữ trong từ điển của người dùng."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"ghi vào từ điển do người dùng xác định"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Cho phép ứng dụng ghi từ mới vào từ điển của người dùng."</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"đọc nội dung của bộ lưu trữ USB của bạn"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"đọc nội dung của thẻ SD của bạn"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Cho phép ứng dụng đọc nội dung của bộ lưu trữ USB, bộ lưu trữ này có thể bao gồm ảnh và đa phương tiện."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Cho phép ứng dụng đọc nội dung của thẻ SD, thẻ này có thể bao gồm ảnh và đa phương tiện."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"sửa đổi hoặc xóa nội dung của bộ lưu trữ USB của bạn"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Cho phép ứng dụng ghi vào bộ lưu trữ USB."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Cho phép ứng dụng ghi vào thẻ SD."</string>
@@ -744,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Không có thẻ SIM nào trong điện thoại."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Hãy lắp thẻ SIM."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"Thẻ SIM bị thiếu hoặc không thể đọc được. Vui lòng lắp thẻ SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"Thẻ SIM không sử dụng được."</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"Thẻ SIM của bạn đã bị vô hiệu hóa vĩnh viễn ."\n" Hãy liên hệ với nhà cung cấp dịch vụ không dây của bạn để lấy thẻ SIM khác."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Nút bài hát trước"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Nút bài hát tiếp theo"</string>
@@ -819,15 +824,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"Giáo xứ"</string>
<string name="autofill_area" msgid="3547409050889952423">"Khu vực"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"Tiểu vương quốc Ả rập"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"đọc lịch sử và dấu trang Web của bạn"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Cho phép ứng dụng đọc tất cả các URL mà Trình duyệt đã truy cập cũng như tất cả các dấu trang của Trình duyệt."</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"viết lịch sử và dấu trang web của bạn"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Cho phép ứng dụng sửa đổi lịch sử hoặc dấu trang của Trình duyệt được lưu trữ trên máy tính bảng của bạn. Ứng dụng độc hại có thể sử dụng quyền này để xóa hoặc sửa đổi dữ liệu của Trình duyệt."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Cho phép ứng dụng sửa đổi lịch sử hoặc dấu trang của Trình duyệt được lưu trữ trên điện thoại của bạn. Ứng dụng độc hại có thể sử dụng quyền này để xóa hoặc sửa đổi dữ liệu Trình duyệt của bạn."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"đặt báo thức"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"Cho phép ứng dụng đặt báo thức trong ứng dụng đồng hồ báo thức được cài đặt. Một số ứng dụng đồng hồ báo thức có thể không thực thi tính năng này."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"thêm thư thoại"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"Cho phép ứng dụng thêm thông báo vào hộp thư thoại đến của bạn."</string>
@@ -1087,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Đặt ngày"</string>
<string name="date_time_set" msgid="5777075614321087758">"Đặt"</string>
<string name="date_time_done" msgid="2507683751759308828">"Xong"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"Mặc định"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"MỚI: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"MỚI: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"Không yêu cầu quyền"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"Ẩn"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"Hiển thị tất cả"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"Bộ nhớ dung lượng lớn USB"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"USB đã kết nối"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"Bạn đã kết nối với máy tính của mình qua USB. Hãy chạm vào nút bên dưới nếu bạn muốn sao chép các tệp giữa máy tính và bộ lưu trữ USB của Android của bạn."</string>
@@ -1320,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"Đang gửi…"</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"Khởi chạy trình duyệt?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"Chấp nhận cuộc gọi?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/tools/localize/testdata/merge_xx_old.xml b/core/res/res/values-w500dp/bools.xml
similarity index 72%
copy from tools/localize/testdata/merge_xx_old.xml
copy to core/res/res/values-w500dp/bools.xml
index 9d3a7d8..f53fd39 100644
--- a/tools/localize/testdata/merge_xx_old.xml
+++ b/core/res/res/values-w500dp/bools.xml
@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2007 The Android Open Source Project
+<!-- Copyright (C) 2012 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.
@@ -14,8 +14,6 @@
limitations under the License.
-->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="changed_in_xx">aaa</string>
- <string name="previously_translated">CCC</string>
-</resources>
-
+<resources>
+ <bool name="activity_chooser_view_has_default_activity">true</bool>
+</resources>
\ No newline at end of file
diff --git a/core/res/res/values-w720dp/bools.xml b/core/res/res/values-w720dp/bools.xml
index 352c319..c87f689 100644
--- a/core/res/res/values-w720dp/bools.xml
+++ b/core/res/res/values-w720dp/bools.xml
@@ -16,4 +16,5 @@
<resources>
<bool name="action_bar_expanded_action_views_exclusive">false</bool>
+ <bool name="show_ongoing_ime_switcher">false</bool>
</resources>
diff --git a/core/res/res/values-w720dp/dimens.xml b/core/res/res/values-w720dp/dimens.xml
deleted file mode 100644
index c62c3f5..0000000
--- a/core/res/res/values-w720dp/dimens.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 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.
--->
-
-<resources>
- <!-- Preference fragment padding, sides -->
- <dimen name="preference_fragment_padding_side">32dp</dimen>
- <!-- Padding to the left of the preference panel breadcrumb -->
- <dimen name="preference_breadcrumb_paddingLeft">32dp</dimen>
- <!-- Padding to the right of the preference panel breadcrumb -->
- <dimen name="preference_breadcrumb_paddingRight">32dp</dimen>
- <!-- Weight of the left pane in a multi-pane preference layout. -->
- <integer name="preferences_left_pane_weight">1</integer>
- <!-- Weight of the right pane in a multi-pane preference layout. So the split is 1:2 -->
- <integer name="preferences_right_pane_weight">2</integer>
- <!-- Minimum space to allocate to the left of a preference item for an icon.
- This helps in aligning titles when some items have icons and some don't. When space is
- at a premium, we don't pre-allocate any space. -->
- <dimen name="preference_icon_minWidth">56dp</dimen>
-
- <dimen name="preference_screen_header_padding_side">0dip</dimen>
-
- <integer name="preference_screen_header_scrollbarStyle">0x0</integer> <!-- insideOverlay -->
- <integer name="preference_fragment_scrollbarStyle">0x0</integer> <!-- insideOverlay -->
-</resources>
diff --git a/core/res/res/values-xlarge/dimens.xml b/core/res/res/values-xlarge/dimens.xml
index c15770d..29cea26 100644
--- a/core/res/res/values-xlarge/dimens.xml
+++ b/core/res/res/values-xlarge/dimens.xml
@@ -25,10 +25,6 @@
<!-- keyboardHeight = key_height*4 + key_bottom_gap*3 -->
<dimen name="password_keyboard_height">48.0mm</dimen>
- <!-- The width that is used when creating thumbnails of applications. -->
- <dimen name="thumbnail_width">230dp</dimen>
- <!-- The height that is used when creating thumbnails of applications. -->
- <dimen name="thumbnail_height">135dp</dimen>
<!-- Minimum width of the search view text entry area. -->
<dimen name="search_view_text_min_width">192dip</dimen>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index 412c4ef..d61d513 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -168,12 +168,84 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"您的信息"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"读写短信、电子邮件和其他消息。"</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"您的个人信息"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"直接访问平板电脑上存储的联系人和日历。"</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"直接访问手机上存储的联系人和日历。"</string>
+ <!-- no translation found for permgroupdesc_personalInfo (8426453129788861338) -->
+ <skip />
+ <!-- no translation found for permgrouplab_socialInfo (5799096623412043791) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_socialInfo (7129842457611643493) -->
+ <skip />
<string name="permgrouplab_location" msgid="635149742436692049">"您的位置"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"监视您的实际位置。"</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"网络通信"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"使用各种网络功能。"</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <!-- no translation found for permgrouplab_audioSettings (8329261670151871235) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_audioSettings (2641515403347568130) -->
+ <skip />
+ <!-- no translation found for permgrouplab_affectsBattery (6209246653424798033) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_affectsBattery (6441275320638916947) -->
+ <skip />
+ <!-- no translation found for permgrouplab_calendar (5863508437783683902) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_calendar (5777534316982184416) -->
+ <skip />
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <!-- no translation found for permgrouplab_bookmarks (1949519673103968229) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bookmarks (4169771606257963028) -->
+ <skip />
+ <!-- no translation found for permgrouplab_deviceAlarms (6117704629728824101) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_deviceAlarms (4769356362251641175) -->
+ <skip />
+ <!-- no translation found for permgrouplab_voicemail (4162237145027592133) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_voicemail (2498403969862951393) -->
+ <skip />
+ <!-- no translation found for permgrouplab_microphone (171539900250043464) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_microphone (7106618286905738408) -->
+ <skip />
+ <!-- no translation found for permgrouplab_camera (4820372495894586615) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_camera (2933667372289567714) -->
+ <skip />
+ <!-- no translation found for permgrouplab_appInfo (8028789762634147725) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_appInfo (3950378538049625907) -->
+ <skip />
+ <!-- no translation found for permgrouplab_wallpaper (3850280158041175998) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_wallpaper (5630417854750540154) -->
+ <skip />
+ <!-- no translation found for permgrouplab_systemClock (406535759236612992) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_systemClock (3944359833624094992) -->
+ <skip />
+ <!-- no translation found for permgrouplab_statusBar (2095862568113945398) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_statusBar (6242593432226807171) -->
+ <skip />
+ <!-- no translation found for permgrouplab_syncSettings (3341990986147826541) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_syncSettings (7603195265129031797) -->
+ <skip />
<string name="permgrouplab_accounts" msgid="3359646291125325519">"您的帐户"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"访问可用的帐户。"</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"硬件控件"</string>
@@ -184,6 +256,10 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"对系统进行低级访问和控制。"</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"开发工具"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"只有应用开发人员才需要的功能。"</string>
+ <!-- no translation found for permgrouplab_display (4279909676036402636) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_display (6051002031933013714) -->
+ <skip />
<string name="permgrouplab_storage" msgid="1971118770546336966">"存储"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"访问 USB 存储设备。"</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"访问 SD 卡。"</string>
@@ -193,14 +269,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"允许以状态栏形式显示应用。"</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"展开/收拢状态栏"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"允许应用展开或折叠状态栏。"</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"重新设置外拨电话的路径"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"允许应用处理外拨通话并更改要拨打的号码。恶意应用可能会监视、重定向或阻止外拨通话。"</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"接收文字讯息(短信)"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"允许应用接收和处理短信。恶意应用可能会监视您的短信,或删除短信而不向您显示。"</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"接收文字讯息(彩信)"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"允许应用接收和处理彩信。恶意应用可能会监视您的短信,或删除短信而不向您显示。"</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"接收紧急广播"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"允许应用接收和处理紧急广播消息。此权限仅适用于系统应用。"</string>
@@ -210,16 +283,13 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"允许应用发送短信。恶意应用可能会未经您的确认而发送短信,由此产生相关费用。"</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"不经确认直接发送短信"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"允许应用发送短信。恶意应用可能会未经您的确认而发送短信,由此产生相关费用。"</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"读取您的文字讯息(短信或彩信)"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"允许应用读取您的平板电脑或 SIM 卡上存储的短信。恶意应用可能会读取您的机密短信。"</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"允许应用读取您的手机或 SIM 卡上存储的短信。恶意应用可能借此读取您的机密短信。"</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"编辑您的文字讯息(短信或彩信)"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"允许应用对平板电脑或 SIM 卡上存储的短信执行写入操作。恶意应用可能会删除您的短信。"</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"允许应用对手机或 SIM 卡上存储的短信执行写入操作。恶意应用可能会删除您的短信。"</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"接收文字讯息 (WAP)"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"允许应用接收和处理 WAP 短信。恶意应用可能会监视您的短信,或删除短信而不向您显示。"</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"检索正在运行的应用"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"允许应用针对近期运行的和当前正在运行的任务检索相关信息。恶意应用可能会发现有关其他应用的私密信息。"</string>
@@ -235,13 +305,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"允许该应用控制其他应用的屏幕兼容模式。恶意应用可以籍此影响其他应用的行为。"</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"启用应用调试"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"允许该应用对其他应用启用调试。恶意应用可以籍此终止其他的应用。"</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"更改系统显示设置"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"允许该应用更改当前配置,例如语言区域或整体的字体大小。"</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"启用车载模式"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"允许应用启用车载模式。"</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"关闭其他应用"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"允许应用在内存空间充足的情况下终止其他应用的后台进程。"</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"强行停止其他应用"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"允许应用强行停止其他应用。"</string>
@@ -265,8 +333,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"允许应用广播一条有关已收到 WAP PUSH 短信的通知。恶意应用可能借此伪造短信接收,或在后台将任意网页的内容替换为恶意内容。"</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"限制运行的进程个数"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"允许应用控制将运行的进程数上限。普通应用绝不需要此权限。"</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"强制关闭后台应用"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"允许应用控制活动在转入后台后是否立即结束。普通应用绝不需要此权限。"</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"修改电池统计信息"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"允许应用修改收集到的电池统计信息。普通应用不能使用此权限。"</string>
@@ -276,8 +343,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"允许应用启动完整备份确认用户界面。不用于任何应用。"</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"显示未授权的窗口"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"允许该应用创建供内部系统用户界面使用的窗口。普通应用不应使用此权限。"</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"在其他应用之上显示内容"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"允许应用显示系统警告窗口。恶意应用可能会控制整个屏幕。"</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"修改全局动画速度"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"允许该应用随时更改全局动画速度(加快或减慢)。"</string>
@@ -339,26 +405,22 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"允许应用针对自身或其他应用授予或撤消特定权限。恶意应用可能会借此访问您未授权它们访问的功能。"</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"设置首选应用"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"允许应用修改您的首选应用。恶意应用可能会在后台更改运行的应用,欺骗您现有的应用,以收集您的私人数据。"</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"修改系统设置"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"允许应用修改系统的设置数据。恶意应用可能会破坏您的系统配置。"</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"修改安全系统设置"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"允许应用修改系统的安全设置数据。普通应用不能使用此权限。"</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"修改 Google 服务地图"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"允许应用修改 Google 服务地图。普通应用不能使用此权限。"</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"开机启动"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"允许应用在系统完成引导后立即自动启动。这样可能会延长平板电脑的启动时间,并允许应用始终运行,从而导致平板电脑总体运行速度减慢。"</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"允许应用在系统完成引导后立即自动启动。这样可能会延长手机的启动时间,并允许应用始终运行,从而导致手机总体运行速度减慢。"</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"发送持久广播"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"允许应用发送持久广播,此类广播在结束后仍会保留。恶意应用可能会导致平板电脑使用过多内存,从而使速度变慢或变得不稳定。"</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"允许应用发送持久广播,此类广播在结束后仍会保留。恶意应用可能会导致手机使用过多内存,从而使速度变慢或变得不稳定。"</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
+ <string name="permlab_readContacts" msgid="8348481131899886131">"读取您的通讯录"</string>
<string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"允许该应用读取与您平板电脑上存储的联系人相关的所有数据,包括您呼叫特定联系人、向其发送电子邮件或以其他方式通信的频率。这有助于自动填充电子邮件地址,以及实现其他某些便利功能。恶意应用可能会借此将您的联系人数据发送给他人。"</string>
<string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"允许该应用读取与您手机上存储的联系人相关的所有数据,包括您呼叫特定联系人、向其发送电子邮件或以其他方式通信的频率。这有助于自动填充电子邮件地址,以及实现其他某些便利功能。恶意应用可能会借此将您的联系人数据发送给他人。"</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"修改您的通讯录"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"允许该应用修改与您平板电脑上存储的联系人相关的数据,包括您呼叫特定联系人、向其发送电子邮件或以其他方式通信的频率。这有助于自动填充电子邮件地址,以及实现其他某些便利功能。恶意应用可能会借此删除或修改您的联系人数据。"</string>
<string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"允许该应用修改与您手机上存储的联系人相关的数据,包括您呼叫特定联系人、向其发送电子邮件或以其他方式通信的频率。这有助于自动填充电子邮件地址,以及实现其他某些便利功能。恶意应用可能会借此删除或修改您的联系人数据。"</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"读取通话记录"</string>
@@ -367,11 +429,9 @@
<string name="permlab_writeCallLog" msgid="8552045664743499354">"写入通话记录"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"允许该应用修改平板电脑的通话记录,包括有关来电和外拨电话的数据。恶意应用可能会借此清除或修改您的通话记录。"</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"允许该应用修改手机的通话记录,包括有关来电和外拨电话的数据。恶意应用可能会借此清除或修改您的通话记录。"</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"读取您自己的名片"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"允许应用读取您设备上存储的个人资料信息,例如您的姓名和联系信息。这意味着应用可以识别您的身份,并将您的个人资料信息发送给他人。"</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"修改您自己的名片"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"允许应用更改或添加您设备上存储的个人资料信息,例如您的姓名和联系信息。这意味着其他应用可以识别您的身份,并将您的个人资料信息发送给他人。"</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"读取您的社交视频流"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"允许应用访问并同步您和好友的社交最新动态。恶意应用可能借此读取您与社交网络上的好友之间的私人交流信息。"</string>
@@ -412,15 +472,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"强行重新启动手机"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"允许应用强行重新启动平板电脑。"</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"允许应用强行重新启动手机。"</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"访问 USB 存储设备的文件系统"</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"访问 SD 卡文件系统"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"允许应用装载和卸载可移动存储设备的文件系统。"</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"清除 USB 存储设备内容"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"清除 SD 卡内容"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"允许应用格式化可移动存储设备。"</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"获取有关内部存储设备的信息"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"允许应用获取有关内存设备的信息。"</string>
@@ -432,8 +488,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"允许应用装载/卸载内存设备。"</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"重命名内部存储设备"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"允许应用重命名内存设备。"</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"控制振动"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"允许应用控制振动器。"</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"控制闪光灯"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"允许应用控制闪光灯。"</string>
@@ -458,8 +513,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"允许应用告知系统哪些窗口小部件可供哪个应用使用。拥有此权限的应用可向其他应用授予对个人资料的访问权限。普通应用不能使用此权限。"</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"修改手机状态"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"允许应用控制设备的电话功能。拥有此权限的应用可在不通知您的情况下执行切换网络、开关手机无线装置等此类操作。"</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"读取手机状态和身份"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"允许应用访问设备的电话功能。拥有此权限的应用可以确定本机的电话号码和序列号、通话是否有效、呼叫的号码等。"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"阻止平板电脑进入休眠状态"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"防止手机休眠"</string>
@@ -474,8 +528,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"作为一项低级制造商测试来运行,从而允许对手机硬件进行完全访问。此权限仅当手机在制造商测试模式下运行时才可用。。"</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"设置壁纸"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"允许应用设置系统壁纸。"</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"调整您的壁纸大小"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"允许应用设置有关系统壁纸大小的提示。"</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"将系统恢复为出厂设置"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"允许应用将系统完全重置为其出厂设置,这会清除所有数据、配置和已安装的应用。"</string>
@@ -487,21 +540,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"允许应用更改手机的时区。"</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"作为 AccountManagerService"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"允许该应用调用 AccountAuthenticators。"</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"查找设备上的帐户"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"允许应用获取平板电脑已知的帐户列表。"</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"允许应用获取手机已知的帐户列表。"</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"创建帐户并设置密码"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"允许应用使用 AccountManager 的帐户身份验证程序功能,包括创建帐户以及获取和设置其密码。"</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"添加或删除帐户"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"允许应用执行添加帐户、删除帐户、删除帐户密码等操作。"</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"使用设备上的帐户"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"允许应用请求身份验证令牌。"</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"查看网络连接"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"允许应用查看所有网络的状态。"</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"完全的互联网访问权限"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"允许应用创建网络套接字。"</string>
@@ -513,36 +561,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"允许应用更改绑定网络连接的状态。"</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"更改后台数据使用设置"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"允许应用更改后台数据使用设置。"</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"查看 Wi-Fi 连接"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"允许应用查看有关 Wi-Fi 状态的信息。"</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"连接 Wi-Fi 和断开连接"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"允许应用与 Wi-Fi 接入点建立和断开连接,并对配置的 Wi-Fi 网络进行更改。"</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"允许接收 Wi-Fi 多播"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"允许应用接收并非直接发送至您设备的数据包。在查找附近提供的服务时,此权限很有用。这种操作所耗电量大于非多播模式。"</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"访问蓝牙设置"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"允许应用配置本地蓝牙平板电脑,以及发现远程设备并进行配对。"</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"允许应用配置本地蓝牙手机,以及发现远程设备并进行配对。"</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"查看 WiMAX 连接"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"允许该应用查看有关 WiMAX 状态的信息。"</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"更改 WiMAX 状态"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"允许该应用连接到 WiMAX 网络以及从 WiMAX 网络断开连接。"</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"与蓝牙设备配对"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"允许应用查看本地蓝牙平板电脑的配置,以及建立和接受与配对设备的连接。"</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"允许应用查看本地蓝牙手机的配置,以及建立和接受与配对设备的连接。"</string>
<string name="permlab_nfc" msgid="4423351274757876953">"控制近距离通信"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"允许应用与近距离无线通信 (NFC) 标记、卡和阅读器进行通信。"</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"停用屏幕锁定"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"允许应用停用键锁和任何关联的密码安全设置。例如,在手机上接听电话时停用键锁,在通话结束后重新启用键锁。"</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"读取同步设置"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"允许应用读取同步设置,例如是否对“联系人”应用启用同步功能。"</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"启用和停用同步"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"允许应用修改同步设置,例如是否对“联系人”应用启用同步功能。"</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"读取同步统计信息"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"允许应用读取同步统计信息;例如,已发生的同步历史记录。"</string>
@@ -550,22 +591,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"允许应用获取有关当前同步的 Feed 的详情。"</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"写入订阅的供稿"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"允许应用修改您当前同步的 Feed。恶意应用可能会更改您的同步 Feed。"</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"读取您添加到字典的字词"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"允许应用读取用户可能在用户词典中已存储的任意私有字词、名称和短语。"</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"写入用户定义的词典"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"允许应用向用户词典中写入新词。"</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"读取您的 USB 存储设备中的内容"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"读取您的 SD 卡中的内容"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"允许该应用读取 USB 存储设备中的内容,其中可能包括照片和媒体。"</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"允许该应用读取 SD 卡中的内容,其中可能包括照片和媒体。"</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"修改或删除您的 USB 存储设备中的内容"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"允许应用写入 USB 存储设备。"</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"允许应用写入 SD 卡。"</string>
@@ -744,6 +779,8 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"手机中无 SIM 卡"</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"请插入 SIM 卡"</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"SIM 卡缺失或无法读取。请插入 SIM 卡。"</string>
+ <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (5096149665138916184) -->
+ <skip />
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"您的 SIM 卡已永久停用。"\n"请与您的无线服务提供商联系,以便重新获取一张 SIM 卡。"</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"“上一曲目”按钮"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"“下一曲目”按钮"</string>
@@ -819,15 +856,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"行政区"</string>
<string name="autofill_area" msgid="3547409050889952423">"区域"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"酋长国"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"读取您的网络书签和历史记录"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"允许应用读取“浏览器”访问过的所有网址,以及“浏览器”的所有书签。"</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"写入网络书签和历史记录"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"允许应用修改“浏览器”存储在平板电脑上的历史记录或书签。恶意应用可能借此删除或修改“浏览器”的数据。"</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"允许应用修改“浏览器”存储在手机上的历史记录或书签。恶意应用可能借此删除或修改“浏览器”的数据。"</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"设置闹钟"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"允许应用在已安装的闹钟应用中设置闹钟。有些闹钟应用可能无法实现此功能。"</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"添加语音邮件"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"允许应用向您的语音信箱收件箱添加邮件。"</string>
@@ -1008,7 +1042,7 @@
<string name="smv_application" msgid="3307209192155442829">"“<xliff:g id="APPLICATION">%1$s</xliff:g>”应用(<xliff:g id="PROCESS">%2$s</xliff:g> 进程)违反了自我强制执行的严格模式 (StrictMode) 政策。"</string>
<string name="smv_process" msgid="5120397012047462446">"进程 <xliff:g id="PROCESS">%1$s</xliff:g> 违反了自我强制执行的严格模式 (StrictMode) 政策。"</string>
<string name="android_upgrading_title" msgid="1584192285441405746">"Android 正在升级..."</string>
- <string name="android_upgrading_apk" msgid="7904042682111526169">"正在优化第 <xliff:g id="NUMBER_0">%1$d</xliff:g> 个(共 <xliff:g id="NUMBER_1">%2$d</xliff:g> 个)。"</string>
+ <string name="android_upgrading_apk" msgid="7904042682111526169">"正在优化第 <xliff:g id="NUMBER_0">%1$d</xliff:g> 个应用(共 <xliff:g id="NUMBER_1">%2$d</xliff:g> 个)。"</string>
<string name="android_upgrading_starting_apps" msgid="451464516346926713">"正在启动应用。"</string>
<string name="android_upgrading_complete" msgid="1405954754112999229">"即将完成启动。"</string>
<string name="heavy_weight_notification" msgid="9087063985776626166">"<xliff:g id="APP">%1$s</xliff:g>正在运行"</string>
@@ -1087,11 +1121,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"设置日期"</string>
<string name="date_time_set" msgid="5777075614321087758">"设置"</string>
<string name="date_time_done" msgid="2507683751759308828">"完成"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"默认"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"新增:"</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"新增:"</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"不需要任何权限"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"隐藏"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"全部显示"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"USB 大容量存储设备"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"USB 已连接"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"您已通过 USB 连接至计算机。如果您要在计算机与 Android 设备的 USB 存储设备之间复制文件,请触摸下面的按钮。"</string>
@@ -1320,4 +1353,8 @@
<string name="sending" msgid="3245653681008218030">"正在发送..."</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"要启动浏览器吗?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"要接听电话吗?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index fb5ccd9..28d7cab 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -147,7 +147,7 @@
<string name="shutdown_confirm" product="default" msgid="649792175242821353">"手機即將關機。"</string>
<string name="shutdown_confirm_question" msgid="2906544768881136183">"您要關機嗎?"</string>
<string name="reboot_safemode_title" msgid="7054509914500140361">"重新啟動進入安全模式"</string>
- <string name="reboot_safemode_confirm" msgid="55293944502784668">"您要重新啟動進入安全模式嗎?這會停用您所安裝的所有第三方應用程式。如要還原這些應用程式,只要再次重新啟動即可。"</string>
+ <string name="reboot_safemode_confirm" msgid="55293944502784668">"您要重新啟動進入安全模式嗎?這會將您安裝的所有第三方應用程式全部停用。如要還原這些應用程式,只要再次重新啟動即可。"</string>
<string name="recent_tasks_title" msgid="3691764623638127888">"最新的"</string>
<string name="no_recent_tasks" msgid="8794906658732193473">"沒有最近用過的應用程式。"</string>
<string name="global_actions" product="tablet" msgid="408477140088053665">"平板電腦選項"</string>
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"您的簡訊"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"讀取及寫入您的簡訊、電子郵件和其他訊息。"</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"您的個人資訊"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"直接存取平板電腦上儲存的聯絡人和日曆。"</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"直接存取手機上的聯絡人與日曆。"</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"直接存取您儲存在聯絡人卡片中的個人資訊。"</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"您的社交資訊"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"直接存取您的聯絡人資訊與社交網站資訊。"</string>
<string name="permgrouplab_location" msgid="635149742436692049">"您的位置"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"監控您的實際位置。"</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"網路通訊"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"存取各種網路功能。"</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"音效設定"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"變更音訊設定。"</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"影響電力"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"使用可能大量耗電的功能。"</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"日曆"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"直接存取日曆和活動。"</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"書籤與紀錄"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"直接存取書籤和瀏覽器紀錄。"</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"鬧鐘"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"設定鬧鐘。"</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"語音信箱"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"直接存取語音信箱。"</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"麥克風"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"直接使用麥克風錄音。"</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"相機"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"直接使用相機拍照或錄影。"</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"您的應用程式資訊"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"影響裝置上其他應用程式的行為。"</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"桌布"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"變更裝置桌布設定。"</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"時鐘"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"變更裝置時間或時區。"</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"狀態列"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"變更裝置狀態列設定。"</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"同步處理設定"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"存取同步處理設定。"</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"您的帳戶"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"存取可用帳戶。"</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"硬體控制"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"系統低階存取與控制。"</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"開發工具"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"只有應用程式開發人員需要使用的功能。"</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"其他應用程式使用者介面"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"影響其他應用程式的使用者介面。"</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"儲存"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"存取 USB 儲存裝置。"</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"存取 SD 卡。"</string>
@@ -193,55 +238,47 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"允許應用程式以狀態列顯示。"</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"展開/收攏狀態列"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"允許應用程式展開或收合狀態列。"</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"重設撥號路徑"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"允許應用程式處理撥出電話及更改撥打的號碼。請注意,惡意應用程式可能利用此功能監控、轉接或阻止撥出的電話。"</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"接收簡訊 (SMS)"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"允許應用程式接收及處理 SMS 簡訊。請注意,惡意應用程式可能利用此功能監視訊息,或在您讀取訊息前擅自將其刪除。"</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"接收簡訊 (MMS)"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"允許應用程式接收及處理 MMS 簡訊。請注意,惡意應用程式可能利用此功能監視您的訊息,或在您讀取訊息前擅自將其刪除。"</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"接收緊急廣播"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"允許應用程式接收及處理緊急廣播訊息,只有系統應用程式可以具備這項權限。"</string>
<string name="permlab_readCellBroadcasts" msgid="1598328843619646166">"讀取區域廣播訊息"</string>
- <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"允許應用程式讀取您裝置接收的區域廣播訊息。某些地點會發出區域廣播警告,警告您發生緊急狀況。惡意應用程式可能會在裝置收到緊急區域廣播時,干擾裝置的效能或運作。"</string>
+ <string name="permdesc_readCellBroadcasts" msgid="6361972776080458979">"允許應用程式讀取您裝置收到的區域廣播訊息。某些地點會發出區域廣播警示,警告您有緊急狀況發生。請注意,惡意應用程式可能會在裝置收到緊急區域廣播時,干擾裝置的效能或運作。"</string>
<string name="permlab_sendSms" msgid="5600830612147671529">"傳送 SMS 簡訊"</string>
<string name="permdesc_sendSms" msgid="906546667507626156">"允許應用程式傳送 SMS 簡訊。請注意,惡意應用程式可能利用此功能擅自傳送簡訊,導致您必須支付大筆費用。"</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"不需經過確認即傳送 SMS 簡訊"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"允許應用程式傳送 SMS 簡訊。請注意,惡意應用程式可能利用此功能擅自傳送簡訊,導致您必須支付大筆費用。"</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"讀取您的簡訊 (SMS 或 MMS)"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"允許應用程式讀取平板電腦或 SIM 卡上儲存的 SMS 簡訊。請注意,惡意應用程式可能利用此功能讀取您的機密訊息。"</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"允許應用程式讀取手機或 SIM 卡上儲存的 SMS 簡訊。請注意,惡意應用程式可能利用此功能讀取您的機密訊息。"</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"編輯簡訊 (SMS 或 MMS)"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"允許應用程式編寫平板電腦或 SIM 卡中儲存的 SMS 簡訊。請注意,惡意應用程式可能利用此功能刪除您的簡訊。"</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"允許應用程式寫入手機或 SIM 卡中儲存的 SMS 簡訊。請注意,惡意應用程式可能利用此功能刪除您的簡訊。"</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"接收簡訊 (WAP)"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"允許應用程式接收及處理 WAP 訊息。請注意,惡意應用程式可能利用此功能監視訊息,或在您讀取訊息前擅自將其刪除。"</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"擷取執行中的應用程式"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"允許應用程式取得最近執行任務的資訊。請注意,惡意應用程式可能利用此功能找出其他應用程式的隱私資訊。"</string>
- <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"擷取執行中應用程式的詳細資料"</string>
- <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"允許應用程式擷取目前及最近執行任務的詳細資訊。惡意應用程式可能會找出其他應用程式的私人資訊。"</string>
+ <string name="permlab_getDetailedTasks" msgid="6229468674753529501">"擷取執行中應用程式的詳細資訊"</string>
+ <string name="permdesc_getDetailedTasks" msgid="153824741440717599">"允許應用程式擷取目前及最近所執行任務的詳細資訊。請注意,惡意應用程式可能會找出其他應用程式的不公開資訊。"</string>
<string name="permlab_reorderTasks" msgid="2018575526934422779">"重新排序正在執行的應用程式"</string>
<string name="permdesc_reorderTasks" msgid="4175137612205663399">"允許應用程式將工作移至前景或背景。請注意,惡意應用程式可能利用此功能自行移動至前景。"</string>
<string name="permlab_removeTasks" msgid="6821513401870377403">"停止執行中的應用程式"</string>
<string name="permdesc_removeTasks" msgid="1394714352062635493">"允許應用程式移除工作並終止執行工作的應用程式。請注意,惡意應用程式可能利用此功能干擾其他應用程式的行為。"</string>
<string name="permlab_startAnyActivity" msgid="2918768238045206456">"啟動任何活動"</string>
- <string name="permdesc_startAnyActivity" msgid="997823695343584001">"允許應用程式忽視權限保護或匯出狀態,啟動任何活動。"</string>
+ <string name="permdesc_startAnyActivity" msgid="997823695343584001">"不論權限保護或匯出狀態為何,一律允許應用程式啟動任何活動。"</string>
<string name="permlab_setScreenCompatibility" msgid="6975387118861842061">"設定螢幕相容性"</string>
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"允許應用程式控制其他應用程式的螢幕相容性模式。惡意應用程式可能藉此破壞其他應用程式的正常運作。"</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"啟用應用程式偵錯"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"允許應用程式為其他程式開啟偵錯功能。提醒您,惡意應用程式可能會利用這個功能終止其他應用程式。"</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"變更系統顯示設定"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"允許應用程式變更目前設定,例如地區設定或字型大小。"</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"啟用行車模式"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"允許應用程式啟用車用模式。"</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"關閉其他應用程式"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"允許應用程式終止其他應用程式背景程序 (即使記憶體足夠)。"</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"強制停止其他應用程式"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"允許應用程式強制停止其他應用程式。"</string>
@@ -265,8 +302,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"允許應用程式在收到 WAP PUSH 訊息時發送通知。請注意,惡意應用程式可能利用此功能偽造 MMS 簡訊回條,或私自將網頁內容更換為惡意陷阱。"</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"執行程序限制數"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"允許應用程式控制可執行程序的數量上限 (一般應用程式不需使用)。"</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"強制關閉背景應用程式"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"允許應用程式控制活動是否隨時可於完成後立刻進入背景 (一般應用程式不需使用)。"</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"編輯電池狀態"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"允許應用程式修改收集到的電池使用統計資料 (不建議一般應用程式使用)。"</string>
@@ -276,8 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"允許應用程式啟動完整備份確認使用者介面 (不建議任何應用程式使用)。"</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"顯示未授權視窗"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"允許應用程式為內部系統使用者介面建立視窗 (不建議一般應用程式使用)。"</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"描繪其他應用程式"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"允許應用程式顯示系統警告視窗。請注意,惡意應用程式可能利用此功能操控整個螢幕。"</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"編輯全域動畫速度"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"允許應用程式隨時變更全域的動畫速度 (更快或更慢)。"</string>
@@ -339,26 +374,22 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"允許應用程式授予或撤銷本身或其他應用程式的特定權限。注意,惡意應用程式可能藉此存取您未授予權限的功能。"</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"設定偏好的應用程式"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"允許應用程式修改您偏好的應用程式。請注意,惡意應用程式可能利用此功能擅自竄改執行的應用程式,並冒充現有的程式收集您的私人資料。"</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"修改系統設定"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"允許應用程式修改系統設定資料。請注意,惡意應用程式可能利用此功能破壞系統設定。"</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"編輯安全系統設定"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"允許應用程式修改系統安全設定資料 (不建議一般應用程式使用)。"</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"修改 Google 服務地圖"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"允許應用程式修改 Google 服務地圖 (不建議一般應用程式使用)。"</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"啟動時執行"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"允許應用程式在系統完成開機程序後立即自行啟動。這會增加平板電腦的開機時間,而且會因為系統一直執行該應用程式導致平板電腦的整體運作速度變慢。"</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"允許應用程式在系統完成開機程序後立即自行啟動。這會增加手機的開機時間,而且會因為系統一直執行該應用程式導致手機的整體運作速度變慢。"</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"傳送附屬廣播"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"允許應用程式傳送記憶廣播,這類廣播在廣播動作結束後仍繼續存在。請注意,惡意應用程式可能利用此功能讓平板電腦使用過多的記憶體,導致平板電腦的執行速度變慢或不穩定。"</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"允許應用程式傳送記憶廣播,這類廣播在廣播動作結束後仍繼續存在。請注意,惡意應用程式可能利用此功能讓手機使用過多的記憶體,導致手機的執行速度變慢或不穩定。"</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
+ <string name="permlab_readContacts" msgid="8348481131899886131">"讀取您的聯絡人"</string>
<string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"允許應用程式讀取儲存在平板電腦中的所有聯絡人資料,包括您與特定聯絡人通話、傳送電子郵件或使用其他通訊方式的互動頻率,這樣您就可以在輸入電子郵件地址時使用自動完成功能和其他便利功能。不過,惡意應用程式也可藉此將您的聯絡人資料傳送給其他人。"</string>
<string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"允許應用程式讀取儲存在手機中的所有聯絡人資料,包括您與特定聯絡人通話、傳送電子郵件或使用其他通訊方式的互動頻率,這樣您就可以在輸入電子郵件地址時使用自動完成功能和其他便利功能。不過,惡意應用程式也可藉此將您的聯絡人資料傳送給其他人。"</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"修改您的聯絡人"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"允許應用程式修改儲存在平板電腦中的資料,包括您與特定聯絡人通話、傳送電子郵件或使用其他通訊方式的互動頻率,這樣您就可以在輸入電子郵件地址時使用自動完成功能和其他便利功能。不過,惡意應用程式也可藉此清除或修改您的聯絡人資料。"</string>
<string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"允許應用程式修改儲存在手機中的資料,包括您與特定聯絡人通話、傳送電子郵件或使用其他通訊方式的互動頻率,這樣您就可以在輸入電子郵件地址時使用自動完成功能和其他便利功能。不過,惡意應用程式也可藉此清除或修改您的聯絡人資料。"</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"讀取通話紀錄"</string>
@@ -367,11 +398,9 @@
<string name="permlab_writeCallLog" msgid="8552045664743499354">"寫入通話紀錄"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"允許應用程式修改平板電腦的通話紀錄,包括來電和已撥電話相關資料。請注意,惡意應用程式可能濫用此功能刪除或修改您的通話紀錄。"</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"允許應用程式修改手機的通話紀錄,包括來電和已撥電話相關資料。請注意,惡意應用程式可能濫用此功能刪除或修改您的通話紀錄。"</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"讀取自己的聯絡資訊"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"允許應用程式讀取裝置上儲存的個人資料,例如您的姓名和聯絡資訊。這表示應用程式可以識別您的身分,並將您的個人資料傳送給他人。"</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"修改自己的聯絡資訊"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"允許應用程式新增或變更裝置上儲存的個人資料,例如您的姓名和聯絡資訊。這表示其他應用程式可以識別您的身分,並將您的個人資料傳送給他人。"</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"讀取您的社交串流"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"允許應用程式存取並同步處理您和好友的最新動態。請注意,惡意應用程式可能利用此功能讀取您和好友在社交網路上的私人通訊。"</string>
@@ -412,15 +441,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"強制重開機"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"允許應用程式強制重新啟動平板電腦。"</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"允許應用程式強制重新啟動手機。"</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"存取 USB 儲存裝置檔案系統"</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"存取 SD 卡檔案系統"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"允許應用程式掛接及卸載移除式儲存裝置的檔案系統。"</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"清除 USB 儲存裝置"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"清除 SD 卡"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"允許應用程式將卸除式儲存裝置格式化。"</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"取得內部儲存空間的資訊"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"允許應用程式取得內部儲存空間的資訊。"</string>
@@ -432,8 +457,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"允許應用程式掛接/卸載內部儲存空間。"</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"重新命名內部儲存空間"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"允許應用程式重新命名內部儲存空間。"</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"控制震動"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"允許應用程式控制震動。"</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"控制閃光燈"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"允許應用程式控制閃光燈。"</string>
@@ -458,8 +482,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"允許應用程式告知系統哪個應用程式可以使用哪些小工具。啟用這項權限後,應用程式即會讓其他應用程式使用個人資料 (不建議一般應用程式使用)。"</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"修改手機狀態"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"允許應用程式控制裝置的電話功能。擁有這項權限的應用程式可在未通知您的情況下,任意切換網路、開啟或關閉手機無線電等。"</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"讀取手機狀態和識別碼"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"允許應用程式存取裝置的電話功能資料。擁有這項權限的應用程式可取得手機的號碼和序號、是否在通話中,以及通話另一方的電話號碼等資料。"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"防止平板電腦進入休眠狀態"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"防止手機進入待命狀態"</string>
@@ -474,8 +497,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"執行低階製造商測試,允許完全存取手機硬體。此功能只能在手機是製造商測試模式下才可執行。"</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"設定桌布"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"允許應用程式設定系統桌布。"</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"調整桌布大小"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"允許應用程式設定系統桌布大小的提示。"</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"將系統還原至出廠預設值"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"允許應用程式將系統設定全部重設回原廠設定,這表示所有資料、設定及安裝的應用程式都會遭到刪除。"</string>
@@ -487,21 +509,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"允許應用程式變更手機的時區。"</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"作為 AccountManagerService"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"允許應用程式呼叫 AccountAuthenticators。"</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"尋找裝置上的帳戶"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"允許應用程式取得平板電腦已知的帳戶清單。"</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"允許應用程式取得手機已知的帳戶清單。"</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"建立帳戶及設定密碼"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"允許應用程式使用 AccountManager 的帳戶驗證器功能,包括建立帳戶、取得及設定帳戶密碼。"</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"新增或移除帳戶"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"允許應用程式執行新增、移除帳戶和刪除帳戶密碼等作業。"</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"使用裝置上的帳戶"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"允許應用程式要求驗證憑證。"</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"查看網路連線"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"允許應用程式查看所有網路狀態。"</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"網際網路完整存取"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"允許應用程式建立網路通訊端。"</string>
@@ -513,36 +530,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"允許應用程式變更共用網路的連線狀態。"</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"變更背景資料使用設定"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"允許應用程式變更背景資料使用設定。"</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"查看 WiFi 連線"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"允許應用程式查看 WiFi 狀態相關資訊。"</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"建立及中斷 WiFi 連線"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"允許應用程式與 WiFi 存取點連線或中斷連線,並可變更 WiFi 網路設定。"</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"允許接收 Wi-Fi 多點傳播封包"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"允許應用程式接收非指定傳送給您裝置的封包,這在您偵測到附近有服務可使用時相當實用,但消耗的電力比非多點傳播模式多。"</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"存取藍牙設定"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"允許應用程式設定本機藍牙平板電腦,以及搜尋遠端裝置並配對連線。"</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"允許應用程式設定本機藍牙手機,以及搜尋遠端裝置並配對連線。"</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"查看 WiMAX 連線"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"允許應用程式查看 WiMax 狀態相關資訊。"</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"變更 WiMAX 狀態"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"允許應用程式建立或中斷 WiMAX 網路連線。"</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"與藍牙裝置配對"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"允許應用程式查看本機藍牙平板電腦設定,並可建立及接受與其他配對裝置的連線。"</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"允許應用程式查看本機藍牙手機設定,並可建立及接受與其他配對裝置的連線。"</string>
<string name="permlab_nfc" msgid="4423351274757876953">"控制近距離無線通訊"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"允許應用程式與近距離無線通訊 (NFC) 電子感應標籤、卡片及感應器進行通訊。"</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"停用螢幕鎖定"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"允許應用程式停用按鍵鎖定以及其他相關的密碼安全性功能。例如:手機收到來電時停用按鍵鎖定,通話結束後重新啟用按鍵鎖定。"</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"讀取同步處理設定"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"允許應用程式讀取同步處理設定,例如:是否要同步處理「使用者」應用程式。"</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"開啟及關閉同步功能"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"允許應用程式修改同步處理設定,例如:是否要同步處理「使用者」應用程式。"</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"讀取同步處理狀態"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"允許應用程式讀取同步處理統計資料,例如已完成的同步處理記錄。"</string>
@@ -550,22 +560,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"允許應用程式取得目前已同步處理的資訊提供詳細資料。"</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"寫入訂閱資訊提供"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"允許應用程式修改目前已同步處理的資訊提供。請注意,惡意應用程式可能利用此功能變更已同步處理的資訊提供。"</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"讀取您加入字典的字詞"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"允許應用程式讀取使用者儲存在使用者字典內的任何私人字詞、名稱和詞組。"</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"寫入使用者定義的字典"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"允許應用程式將新字詞寫入使用者的字典。"</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"讀取 USB 儲存裝置的內容"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"讀取 SD 卡的內容"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"允許應用程式讀取 USB 儲存裝置的內容 (可能含有相片和媒體)。"</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"允許應用程式讀取 SD 卡的內容 (可能含有相片和媒體)。"</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"修改或刪除 USB 儲存裝置的內容"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"允許應用程式寫入 USB 儲存裝置。"</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"允許應用程式寫入 SD 卡。"</string>
@@ -744,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"手機未插入 SIM 卡。"</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"插入 SIM 卡。"</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"找不到或無法讀取 SIM 卡。請插入 SIM 卡。"</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"SIM 卡無法使用。"</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"您的 SIM 卡已遭永久停用。"\n"請與您的無線網路服務供應商聯絡,以取得其他 SIM 卡。"</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"[上一首曲目] 按鈕"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"[下一首曲目] 按鈕"</string>
@@ -819,15 +824,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"教區"</string>
<string name="autofill_area" msgid="3547409050889952423">"區"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"大公國"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"讀取您的網路書籤和紀錄"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"允許應用程式讀取瀏覽器造訪過的所有網址,以及瀏覽器的所有書籤。"</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"寫入網路書籤和紀錄"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"允許應用程式修改平板電腦上儲存的瀏覽記錄或書籤。請注意,惡意應用程式可能利用此功能清除或修改您的瀏覽器資料。"</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"允許應用程式修改手機上儲存的瀏覽記錄或書籤。請注意,惡意應用程式可能利用此功能清除或修改您的瀏覽器資料。"</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"設定鬧鐘"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"允許應用程式在安裝的鬧鐘應用程式中設定鬧鐘,某些鬧鐘應用程式可能無法執行這項功能。"</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"新增語音留言"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"允許應用程式將訊息新增至您的語音信箱收件匣。"</string>
@@ -1087,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"日期設定"</string>
<string name="date_time_set" msgid="5777075614321087758">"設定"</string>
<string name="date_time_done" msgid="2507683751759308828">"完成"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"預設值"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"新增:"</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"新增:"</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"無須許可"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>" 隱藏"</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"顯示全部"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"USB 大量儲存裝置"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"USB 已連接"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"您已透過 USB 與電腦建立連線。如要在電腦和 Android 的 USB 儲存裝置之間複製檔案,請輕觸下方按鈕。"</string>
@@ -1320,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"傳送中..."</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"啟動「瀏覽器」嗎?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"接聽電話嗎?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml
index e718cbc..8010962 100644
--- a/core/res/res/values-zu/strings.xml
+++ b/core/res/res/values-zu/strings.xml
@@ -168,12 +168,55 @@
<string name="permgrouplab_messages" msgid="7521249148445456662">"Imiyalezo yakho"</string>
<string name="permgroupdesc_messages" msgid="7821999071003699236">"Funda futhi ubhale i-SMS yakho, i-imeyili, kanye neminye imiyalezo."</string>
<string name="permgrouplab_personalInfo" msgid="3519163141070533474">"Ukwaziswa kwakho komuntu siqu"</string>
- <string name="permgroupdesc_personalInfo" product="tablet" msgid="6975389054186265786">"Ukufinyelela okuqondile othintana nabo nekhalenda egcinwe kwithebhulethi yakho."</string>
- <string name="permgroupdesc_personalInfo" product="default" msgid="5488050357388806068">"Ukufinyelela okuqondile othintana nabo nekhalenda egcinwe efonini yakho."</string>
+ <string name="permgroupdesc_personalInfo" msgid="8426453129788861338">"Ukufinyelela okuqondile kulwazi mayelana nawe, kulondolozwe ekhadini loxhumana naye."</string>
+ <string name="permgrouplab_socialInfo" msgid="5799096623412043791">"Ulwazi lakho lomphakathi"</string>
+ <string name="permgroupdesc_socialInfo" msgid="7129842457611643493">"Ukufinyelela okuqondile kulwazi mayelana noxhumana nabo bomphakathi."</string>
<string name="permgrouplab_location" msgid="635149742436692049">"Indawo yakho"</string>
<string name="permgroupdesc_location" msgid="5704679763124170100">"Gada indawo yakho yokuhlala"</string>
<string name="permgrouplab_network" msgid="5808983377727109831">"Uxhumano lwenethiwekhi"</string>
<string name="permgroupdesc_network" msgid="4478299413241861987">"Finyelela kokuqukethwe inethiwekhi okuhlukahlukee."</string>
+ <!-- no translation found for permgrouplab_bluetoothNetwork (1585403544162128109) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_bluetoothNetwork (5625288577164282391) -->
+ <skip />
+ <!-- no translation found for permgrouplab_shortrangeNetwork (130808676377486118) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_shortrangeNetwork (1884069062653436007) -->
+ <skip />
+ <string name="permgrouplab_audioSettings" msgid="8329261670151871235">"Izilungiselelo zomsindo"</string>
+ <string name="permgroupdesc_audioSettings" msgid="2641515403347568130">"Shintsha izilungiselelo zomsindo."</string>
+ <string name="permgrouplab_affectsBattery" msgid="6209246653424798033">"Ithinta ibhethri"</string>
+ <string name="permgroupdesc_affectsBattery" msgid="6441275320638916947">"Sebenzisa izici ezingakhipha ngokushesha ibhethri."</string>
+ <string name="permgrouplab_calendar" msgid="5863508437783683902">"Ikhalenda"</string>
+ <string name="permgroupdesc_calendar" msgid="5777534316982184416">"Ukufinyelela okuqondile kukhalenda nezehlakalo."</string>
+ <!-- no translation found for permgrouplab_dictionary (4148597128843641379) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_dictionary (7921166355964764490) -->
+ <skip />
+ <!-- no translation found for permgrouplab_writeDictionary (8090237702432576788) -->
+ <skip />
+ <!-- no translation found for permgroupdesc_writeDictionary (2711561994497361646) -->
+ <skip />
+ <string name="permgrouplab_bookmarks" msgid="1949519673103968229">"Amabhukhimakhi nomlando"</string>
+ <string name="permgroupdesc_bookmarks" msgid="4169771606257963028">"Ukufinyelela okuqondile kumlando wamabhukimakhi nesiphequluli."</string>
+ <string name="permgrouplab_deviceAlarms" msgid="6117704629728824101">"I-alamu"</string>
+ <string name="permgroupdesc_deviceAlarms" msgid="4769356362251641175">"Setha i-alamu."</string>
+ <string name="permgrouplab_voicemail" msgid="4162237145027592133">"I-voicemail"</string>
+ <string name="permgroupdesc_voicemail" msgid="2498403969862951393">"Ukufinyelela okuqondile ku-voicemail."</string>
+ <string name="permgrouplab_microphone" msgid="171539900250043464">"I-Microphone"</string>
+ <string name="permgroupdesc_microphone" msgid="7106618286905738408">"Ukufinyelela okuqondile ku-microphone ukuze uqophe umsindo."</string>
+ <string name="permgrouplab_camera" msgid="4820372495894586615">"Ikhamela"</string>
+ <string name="permgroupdesc_camera" msgid="2933667372289567714">"Ukufinyelela okuqondile kukhamera ekuthwebuleni isithombe noma ividiyo."</string>
+ <string name="permgrouplab_appInfo" msgid="8028789762634147725">"Ulwazi lezinhlelo zakho zokusebenza"</string>
+ <string name="permgroupdesc_appInfo" msgid="3950378538049625907">"Amandla okuthinta ukuziphatha kwezinhlelo zokusebenza kudivayisi yakho."</string>
+ <string name="permgrouplab_wallpaper" msgid="3850280158041175998">"Isithombe sangemuva"</string>
+ <string name="permgroupdesc_wallpaper" msgid="5630417854750540154">"Shintsha izilungiselelo ze-wallpaper yedivayisi."</string>
+ <string name="permgrouplab_systemClock" msgid="406535759236612992">"Iwashi"</string>
+ <string name="permgroupdesc_systemClock" msgid="3944359833624094992">"Shintsha isikhathi sedivayisi noma izoni yesikhathi."</string>
+ <string name="permgrouplab_statusBar" msgid="2095862568113945398">"Ibha yesimo"</string>
+ <string name="permgroupdesc_statusBar" msgid="6242593432226807171">"Shintsha izilungiselelo zebha yesimo yedivayisi."</string>
+ <string name="permgrouplab_syncSettings" msgid="3341990986147826541">"Vumelanisa izilungiselelo"</string>
+ <string name="permgroupdesc_syncSettings" msgid="7603195265129031797">"Ukufinyela kuzilungiselelo zokuvumelanisa."</string>
<string name="permgrouplab_accounts" msgid="3359646291125325519">"Ama-akhawunti akho"</string>
<string name="permgroupdesc_accounts" msgid="4948732641827091312">"Finyelela kuma-akhawunti atholakalayo"</string>
<string name="permgrouplab_hardwareControls" msgid="7998214968791599326">"Izilawuli zezingxenyekazi zekhompyutha"</string>
@@ -184,6 +227,8 @@
<string name="permgroupdesc_systemTools" msgid="8162102602190734305">"Ukufinyelela kwezinga eliphansi nokulawula uhlelo."</string>
<string name="permgrouplab_developmentTools" msgid="3446164584710596513">"Amathuluzi okuthuthukisa"</string>
<string name="permgroupdesc_developmentTools" msgid="7058828032358142018">"Okuqukethwe okudingakela abasunguli bensiza kuphela."</string>
+ <string name="permgrouplab_display" msgid="4279909676036402636">"Enye i-UI yohlelo lokusebenza"</string>
+ <string name="permgroupdesc_display" msgid="6051002031933013714">"Kuthinta i-UI yezinye izinhlelo zokusebenza."</string>
<string name="permgrouplab_storage" msgid="1971118770546336966">"Isitoreji"</string>
<string name="permgroupdesc_storage" product="nosdcard" msgid="7442318502446874999">"Finyelela kwisitoreji se-USB."</string>
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Finyelela ikhadi le-SD."</string>
@@ -193,14 +238,11 @@
<string name="permdesc_statusBarService" msgid="716113660795976060">"Ivumela uhlelo lokusebenza ukuthi lube umudwa ochaza ngesimo."</string>
<string name="permlab_expandStatusBar" msgid="1148198785937489264">"khulisa/nciphisa ibha yomumo"</string>
<string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Ivumela insiza ukuthi ikhulise noma inciphise umudwa ochza ngesimo."</string>
- <!-- no translation found for permlab_processOutgoingCalls (3906007831192990946) -->
- <skip />
+ <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"thumela amakholi aphumayo kabusha"</string>
<string name="permdesc_processOutgoingCalls" msgid="1152111671618301044">"Ivumela ukuth insiza isebenze izingcingo ezphumayo iphinde futhi iguqule inombolo eshayelwayo. Izinsiza ezinobungozi zingabheka, zithumele kabusha noma zivimbe izingcingo eziphumayo."</string>
- <!-- no translation found for permlab_receiveSms (8673471768947895082) -->
- <skip />
+ <string name="permlab_receiveSms" msgid="8673471768947895082">"thola imiyalezo ebhaliwe (i-SMS)"</string>
<string name="permdesc_receiveSms" msgid="8107887121893611793">"Ivumela ukuthi insiza yamukele iphinde isebenze imiyalezo ye-SMS. Izinsiza ezinobungozi zingabheka imiyalezo yakho noma ziyisuse ngaphandle kokuthi zikukhombise."</string>
- <!-- no translation found for permlab_receiveMms (1821317344668257098) -->
- <skip />
+ <string name="permlab_receiveMms" msgid="1821317344668257098">"thola imiyalezo ebhaliwe (i-MMS)"</string>
<string name="permdesc_receiveMms" msgid="1424805308566612086">"Ivumela ukuthi insiza yamukele iphinde isebenze imiyalezo ye-MMS. Izinsiza ezinobungozi zingabheka imiyalezo yakho noma ziyisuse ziyikhombisa wena."</string>
<string name="permlab_receiveEmergencyBroadcast" msgid="1803477660846288089">"yamukela ukusakazwa okuphuthumayo"</string>
<string name="permdesc_receiveEmergencyBroadcast" msgid="848524070262431974">"Ivumela insiza ukuthi yamukele iphinde isebenze ukusakakwa kwemiyalezo yezokuphuthumayo. Imvume itholakla ezinsizeni zesistimu kuphela."</string>
@@ -210,16 +252,13 @@
<string name="permdesc_sendSms" msgid="906546667507626156">"Ivumela insiza ukuthi ithumele imiyalezo ye-SMS. Izinsiza ezinobungozi zingakudla ephaketheni ngokuthi zithuele imiyalezo ngaphandle kokuqinisekisa kwakho."</string>
<string name="permlab_sendSmsNoConfirmation" msgid="4781483105951730228">"thumela i-SMS engenakuqinisekiswa"</string>
<string name="permdesc_sendSmsNoConfirmation" msgid="3437759207020400204">"Ivumela insiza ukuthi ithuele iiyalezo ye-SMS. Izinsiza ezinobungozi zingakudla ephaketheni ngokuthi zithuele imiyalezo ngaphandle kwemvume yakho."</string>
- <!-- no translation found for permlab_readSms (8745086572213270480) -->
- <skip />
+ <string name="permlab_readSms" msgid="8745086572213270480">"funda imilayezo yakho ebhaliwe (i-SMS noma i-MMS)"</string>
<string name="permdesc_readSms" product="tablet" msgid="2341692916884515613">"Ivumela insiza ukuthi ifunde imiyalezo ye-SMS elondolozwe ekhompyutheni yakho yepeni noma kwi-SI khadi. Izinsiza ezinobungozi kungenzeka zifunde imiyalezo yakho eyimfihlo."</string>
<string name="permdesc_readSms" product="default" msgid="5653850482025875493">"Ivumela insiza ukuthi ifunde imiyalezo ye-SMS elondolozwe ocingweni lwakho noma kwi-SIM khadi. Izinsiza ezinobungozi kungenzeka zifunde imiyalezo yakho eyimfihlo."</string>
- <!-- no translation found for permlab_writeSms (3216950472636214774) -->
- <skip />
+ <string name="permlab_writeSms" msgid="3216950472636214774">"hlela imiyalezo yakho yombhalo (i-SMS noma i-MMS)"</string>
<string name="permdesc_writeSms" product="tablet" msgid="5160413947794501538">"Ivumela insiza ukuthi ibhale imiylezo ye-SMS egcinwe ekhompyutheni yakho yepeni noma kwikhadi lakho le-SIM. Izinsiza ezinobungozi zingayisusa imiyalezo yakho."</string>
<string name="permdesc_writeSms" product="default" msgid="7268668709052328567">"Ivumela insiza ukuthi ibhale imiylezo ye-SMS egcinwe ocingweni lwakh noma kwikhadi lakho le-SIM. Izinsiza ezinobungozi zingayisusa imiyalezo yakho."</string>
- <!-- no translation found for permlab_receiveWapPush (5991398711936590410) -->
- <skip />
+ <string name="permlab_receiveWapPush" msgid="5991398711936590410">"thola imiyalezo ebhaliwe (i-WAP)"</string>
<string name="permdesc_receiveWapPush" msgid="7983455145335316872">"Ivumela ukuthi insiza yamukele iphinde isebenze imiyalezo ye-WAP. Izinsiza ezinobungozi zingabheka imiyalezo yakho noma ziyisuse ngaphandle kokuthi zikukhombise."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"thola izinsiza ezisebenzayo"</string>
<string name="permdesc_getTasks" msgid="6608159250520381359">"Ivumela insiza uuthi ithole kabusha ulwazi mayelana nezinto ezenzeka manje nezisanda kwenzeka. Izinsiza ezinobungozi zingathola imininingwane eyimfihlo mayelana nezinye izinsiza."</string>
@@ -235,13 +274,11 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Ivumela uhlelo lokusebenza ukulawula imodi yokuhambelana kwesikrini kwezinye izinhlelo zokusebenza. Izinhlelo zokusebenza ezinonya zingase zephule ukuziphatha kwezinye izinhlelo zokusebenza."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"vumela insiza ilungise inkinga"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"Ivumela insiza ukuthi ivule uhlelo lokulungisa lwenye insiza. Izinsiza ezinobungozi zingasebenzisa lokhu ukubulala ezinye izinsiza."</string>
- <!-- no translation found for permlab_changeConfiguration (4162092185124234480) -->
- <skip />
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"guqula izilungiselo zohlelo zokubonisa"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Ivumela uhlelo lokusebenza ukushintsha ukumisa kwamanje, njengezici zakhona noma usayizi wefonti."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"vumela imodi yemoto"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"Ivumela insiza ukuthi yenze isimo semoto sisebenze."</string>
- <!-- no translation found for permlab_killBackgroundProcesses (3914026687420177202) -->
- <skip />
+ <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"vala ezinye izinhlelo zokusebenza"</string>
<string name="permdesc_killBackgroundProcesses" msgid="931129103262126617">"Ivumela insiza ukuthi ibulale okuqhubekw ngemumva kwezinye izinsiza ngisho ngabe imemori ayikho phansi."</string>
<string name="permlab_forceStopPackages" msgid="2329627428832067700">"phoqelela ezinye izinsiza ukuthi zime"</string>
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Ivumela insiza ukuthi iphoze ezinye izinsiza ukuthi zime."</string>
@@ -265,8 +302,7 @@
<string name="permdesc_broadcastWapPush" msgid="4783402525039442729">"Ivumela insiza ukuthi isakaze isaziso sokuthi umyalezo we-WAP PUSH utholakele. Izinsiza ezinobungozi zingasebenzisa lokhu ukufoja ukutholakala kwemiyalezo ye-S noa zisuse okuqukethwe kwanoma iliphi ikhasi lewebhu eliqukethe okunobungozi."</string>
<string name="permlab_setProcessLimit" msgid="2451873664363662666">"khawula inani lezinqubo ezisebenzayo"</string>
<string name="permdesc_setProcessLimit" msgid="7318061314040879542">"Ivumela insiza ukuthi ilawule isibalo esikhulu sezinto eziqhubekayo eziyosebenza. Ayidingakeli izinsiza ezijwayelekile."</string>
- <!-- no translation found for permlab_setAlwaysFinish (550958507798796965) -->
- <skip />
+ <string name="permlab_setAlwaysFinish" msgid="550958507798796965">"phoqa izinhlelo zokusebenza ezingemuva ukuthi zivaleke"</string>
<string name="permdesc_setAlwaysFinish" msgid="7471310652868841499">"Ivumela izinsiza ukuthi zilawule ukuthi izehlakalo ziyaphela yini emumva kokuba ziye ngemumva. Akudingakeli izinsiza ezijwayelekile."</string>
<string name="permlab_batteryStats" msgid="7863923071360031652">"guqula izibalo zebhetri"</string>
<string name="permdesc_batteryStats" msgid="6835186932305744068">"Ivumela insiza ukuthi iguqule imininingwane yebhethri eqoqiwe. Akwenzelwe ukuthi kusetshenziswe izinsiza ezijwayelekile."</string>
@@ -276,8 +312,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Ivumela insiza ukuthi iqalise ukuqinisekiswa okuphelele kwesipele kwe-UI. Akumelwe kusetshenziswe noma iyiphi insiza."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"bonisa amawindi angavunyelwe"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Ivumela insiza ukuthi yakhe amawindi enzelwe ukuthi asetshenziswe inkundla yokusetshenziswa kwangaphakathi kwesistimu. Ayisethsnziswa izinsiza ezijwayelekile."</string>
- <!-- no translation found for permlab_systemAlertWindow (3543347980839518613) -->
- <skip />
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"dweba phezulu kwezinye izinhlelo zokusebenza"</string>
<string name="permdesc_systemAlertWindow" msgid="8507863469978066409">"Ivumela insiza ukuthi ibonise iwindi lokwaziseka kwesistimu. Izinsiza ezinobungozi zingathatha ukulawulwa kwaso sonke iskrini."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"guqula isivinini sokugqwayiza jikelele"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Ivumela uhlelo lokusebenza ukushintsha isivinini sokugqwayiza jikelele (ukugqwayiza okusheshayo noma okulengayo) nganoma isiphi isikhathi."</string>
@@ -339,26 +374,22 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Ivumela izinhlelo zokusebenza ukunika noma ukubuyisa izimvume ezithile zayo noma ezinye izinhlelo zokusebenza. Izinhlelo zokusebenza ezingalungile zingasebenzisa lokhu ukufinyelela izici ongazinikanga zona."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"setha izinsiza ezincamelwayo"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Ivuela insiza ukuthi iguqule izinsiza ezincanyelwayo. Izinsiza ezinobungozi zingashintsha izinsiz buthule ezisebenzyo okwenza ukuthi izinsiza zakho ezikhona zingasebenzi ukuthola ze zithole imininingwane yakho eyimfihlo."</string>
- <!-- no translation found for permlab_writeSettings (2226195290955224730) -->
- <skip />
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"guqula izilungiselelo zohlelo"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"Ivumela insiza ukuthi iguqule i-data yezisetho zesistimu. Izinsiza ezinobungozi zingona ukusebenz kwesistimu yakho."</string>
<string name="permlab_writeSecureSettings" msgid="204676251876718288">"guqula izilungiselelo zohlelo oluphephile"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Ivumela insiza ukuthi iguqule imioniningwane yezisetho zokuphepha kwesistimu. Ayisetshenziswa izinsiza ezijwayelekile."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"guqula ibalazwe lesevisi ye-Google"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"Ivumela insiza ukuthi iguqule imephu yezinsizakalo ze-Google. Ayisetshenziswa izinsiza ezijwayelekile."</string>
- <!-- no translation found for permlab_receiveBootCompleted (5312965565987800025) -->
- <skip />
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"qalisa esiqalisweni sezinhlelo"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Ivumela uhlelo lokusebenza ukuthi luziqalise ngokushesha emuva kokuba isistimu isiqedile ukubhutha. Lokhu kwenza ukuthi ithathe isikhathi esithe ukuba side ukuqalise ithebhulethi nokuvumela izinhlelo zokusebenza ukuthi inciphise yonke ithebhulethi ngokuthi isebenze njalo."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Ivumela insiza ukuthi iziqalise ngokushesha uma isistiu isiqedile ukubhutha. Lokhu kungenz ukuthi kuthathe isikhathi esithe ukuba side ukuqalisa ucingo nokuvuela insiz ukuthi inciphise ucingo lonke ngokuthi luhlale lusebenza."</string>
<string name="permlab_broadcastSticky" msgid="7919126372606881614">"thumela ukusakaza okunamathelayo"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="1181582512022829259">"Ivumela ukuthi insiza ithumele ukusakaza okunamathelayo, okusalayo emva kokuba ukusakazwa sekuphelile. Izinsiza ezinobungozi zingenzaa amakhompyutha epeni ukuthi ahambe kancane noma angasebenzi kahle ngokuthi asebenzise imemori enkulu kakhulu."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="3287869131621514325">"Ivumela ukuthi insiza ithumele ukusakaza okunamathelayo, okusalayo emva kokuba ukusakazwa sekuphelile. Izinsiza ezinobungozi zingenzaa amakhompyutha epeni ukuthi ahambe kancane noma angasebenzi kahle ngokuthi asebenzise imemori enkulu kakhulu."</string>
- <!-- no translation found for permlab_readContacts (8348481131899886131) -->
- <skip />
+ <string name="permlab_readContacts" msgid="8348481131899886131">"funda oxhumana nabo"</string>
<string name="permdesc_readContacts" product="tablet" msgid="6370069055638209432">"Ivumela uhlelo lokusebenza ukufunda othintana nabo abagcinwe kwithebhulethi yakho, kuhlanganise ukuvama ukushaya ucingo, ukuthumela ama-imeyli, noma ukuxhumana ngezinye izindlela nabantu abathize. Lokhu kusiza ngokuqedela okuzenzakalelayo kwamakheli e-imeyli kanye nezinye izici eziwusizo. Izinhlelo zokusebenza ezinonya zingase zisebenzise le mvume ukuthumela idatha yakho yoxhumana nabo kwabanye abantu."</string>
<string name="permdesc_readContacts" product="default" msgid="4093353182535351501">"Ivumela uhlelo lokusebenza ukufunda yonke idatha emayelana noxhumana nabo abagcinwe efonini yakho, kuhlanganise ukuvama ukushaya ucingo, ukuthumela ama-imeyli, noma ukuxhumana ngezinye izindlela nabantu abathize. Lokhu kusiza ngokuqedela okuzenzakalelayo kwamakheli e-imeyli kanye nezinye izici eziwusizo. Izinhlelo zokusebenza ezinonya zingase zisebenzise le mvume ukuthumela idatha yakho yoxhumana nabo kwabanye abantu."</string>
- <!-- no translation found for permlab_writeContacts (5107492086416793544) -->
- <skip />
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"shintsha oxhumana nabo"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="5495863352173533286">"Ivumela uhlelo lokusebenza ukugugula idatha emayelana nabathintwayo bakho abagcinwe kwithebhulethi yakho, kuhlanganise ukuvama ukushaya ucingo, ukuthumela ama-imeyli, noma ukuxhumana ngezinye izindlela nabantu abathize. Lokhu kusiza ngokuqedela okuzenzakalelayo kwamakheli e-imeyli kanye nezinye izici eziwusizo. Izinhlelo zokusebenza ezinonya zingase zisebenzise le mvume ukusula noma ukuguqula idatha yakho yoxhunama nabo."</string>
<string name="permdesc_writeContacts" product="default" msgid="6108469962248865715">"Ivumela uhlelo lokusebenza ukugugula idatha emayelana nabathintwayo bakho abagcinwe efonini yakho, kuhlanganise ukuvama ukushaya ucingo, ukuthumela ama-imeyli, noma ukuxhumana ngezinye izindlela nabantu abathize. Lokhu kusiza ngokuqedela okuzenzakalelayo kwamakheli e-imeyli kanye nezinye izici eziwusizo. Izinhlelo zokusebenza ezinonya zingase zisebenzise le mvume ukusula noma ukuguqula idatha yakho yoxhumana nabo."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"funda irekhodi lamakholi"</string>
@@ -367,11 +398,9 @@
<string name="permlab_writeCallLog" msgid="8552045664743499354">"bhala irekhodi lamakholi"</string>
<string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"Ivumela uhlelo lokusebenza ukushintsha ilogi yekholi yethebulethi yakho, kufaka phakathi idatha mayelana namakholi angenayo naphumayo. Izinhlelo zikusebenza ezingalungile zingasebenzisa lokhu ukusula noma ukushintsha irekhodi lwamakholi wakho."</string>
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Ivumela uhlelo lokusebenza ukushintsha irekhodi lamakholi efoni yakho, kufaka phakathi idatha emayelana namakholi angenayo naphumayo. Izinhlelo zikusebenza ezingalungile zingasebenzisa lokhu ukusula noma ukushintsha irekhodi lwamakholi wakho."</string>
- <!-- no translation found for permlab_readProfile (4701889852612716678) -->
- <skip />
+ <string name="permlab_readProfile" msgid="4701889852612716678">"funda ikhadi lakho lokuxhumana"</string>
<string name="permdesc_readProfile" product="default" msgid="94520753797630679">"Ivumela insiza ukuthi ifunde ulwazi lomuntu lwephrofayli olugcinwe edivayisini yakho njengegama lakho kanye nemininingwane yokuxhumana nawe. Lokhu kuchaza ukuthi izinsa ingakuhlonza bese ithumelela abanye imininingwane yephrofayili yakho."</string>
- <!-- no translation found for permlab_writeProfile (907793628777397643) -->
- <skip />
+ <string name="permlab_writeProfile" msgid="907793628777397643">"guqula ikhadi lakho lokuxhumana"</string>
<string name="permdesc_writeProfile" product="default" msgid="4637366723793045603">"Ivumela insiza ukuthi iguqule noma yengezi ulwazi lomuntu lwephrofayli olugcinwe edivayisini yakho njengegama lakho kanye nemininingwane yokuxhumana nawe. Lokhu kuchaza ukuthi ezinye izinsiza zingakuhlonza bese zithumelela abanye imininingwane yephrofayili yakho."</string>
<string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"funda ngezindlela zakho zokuxhumana nabanye abantu"</string>
<string name="permdesc_readSocialStream" product="default" msgid="3419050808547335320">"Ivumela insiza ukuthi ifinyelele iphinde ivumelanisa izaziso zokuxhumana nabanye abantu. Izinsiza ezinobungozi zingasebnzisa lokhu ukufunda ukuxhumana okuyimfihlo phakathi kwakho nabangani bakho."</string>
@@ -412,15 +441,11 @@
<string name="permlab_reboot" product="default" msgid="2898560872462638242">"phoqelela ifoni ukuba iqalise kabusha"</string>
<string name="permdesc_reboot" product="tablet" msgid="8172056180063700741">"Ivumela uhlelo lokusebenza ukuphoqelela ithebhulethi ukuqalisa phansi."</string>
<string name="permdesc_reboot" product="default" msgid="5326008124289989969">"Ivumela uhlelo lokusebenza ukuphoqelela ifoni ukuqalisa phansi."</string>
- <!-- no translation found for permlab_mount_unmount_filesystems (2927361537942591841) -->
- <skip />
- <!-- no translation found for permlab_mount_unmount_filesystems (4402305049890953810) -->
- <skip />
+ <string name="permlab_mount_unmount_filesystems" product="nosdcard" msgid="2927361537942591841">"finyelela ohlelweni lokufayela lwe-USB"</string>
+ <string name="permlab_mount_unmount_filesystems" product="default" msgid="4402305049890953810">"finyelela ohlelweni lokufayela lwe-SD Card"</string>
<string name="permdesc_mount_unmount_filesystems" msgid="1829290701658992347">"Ivumela izinhlelo ukugibelisa nokukwehlisa izinhlelo zefayela zokugcina okukhiphekayo."</string>
- <!-- no translation found for permlab_mount_format_filesystems (6227819582624904972) -->
- <skip />
- <!-- no translation found for permlab_mount_format_filesystems (262582698639274056) -->
- <skip />
+ <string name="permlab_mount_format_filesystems" product="nosdcard" msgid="6227819582624904972">"susa okokulondoloza kwe-USB"</string>
+ <string name="permlab_mount_format_filesystems" product="default" msgid="262582698639274056">"susa ikhadi le-SD"</string>
<string name="permdesc_mount_format_filesystems" msgid="8784268246779198627">"Ivumela uhlelo lokusebenza ukufometha isitoreji esikhiphekayo."</string>
<string name="permlab_asec_access" msgid="3411338632002193846">"thola ulwazi ngesitoreji sangaphakathi"</string>
<string name="permdesc_asec_access" msgid="3094563844593878548">"Ivumela uhlelo lokusebenza ukuthola ukwaziswa ekugcineni kwangaphakathi."</string>
@@ -432,8 +457,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Ivumela uhlelo ukukhuphula / ukwehlisa isitoreji sangaphakathi."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"yetha kabusha isitoreji sangaphakathi"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"Ivumela uhlelo lokusebenza ukuqamba kabusha ukugcina kwangaphakathi."</string>
- <!-- no translation found for permlab_vibrate (7696427026057705834) -->
- <skip />
+ <string name="permlab_vibrate" msgid="7696427026057705834">"lawula ukudlidliza"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"Ivumela uhlelo lokusebenza ukulawula isidlidlizi."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"lawula ukukhanya kwefulashi"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"Ivumela uhlelo lokusebenza ukulawula ukukhanya kwefuleshi."</string>
@@ -458,8 +482,7 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"Ivumela insiza ukuthi itshele isistimu ukuthi amaphi amawijethi angasetshenziswa yiyiphi insiza. Insiza enalemvume inganikez ukufinyelela kwi-data yomuntu kwezinye izinsiza. Ayisetshenziswa izinsiza ezijwayelekile."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"guqula isimo sefoni"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Ivumela ukuthi insiza ilawule okuqukethwe ocingweni edivayisini. Insiza enalemvume ingaguquguqula amanethwekhi, ivule umsakazo wocingo iphinde iwucishe kanye nokunye okufana nalokho ngaphandle kokukwazisa."</string>
- <!-- no translation found for permlab_readPhoneState (9178228524507610486) -->
- <skip />
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"funda isimo sefoni kanye nesazisi"</string>
<string name="permdesc_readPhoneState" msgid="5127767618743602782">"Ivumela insiza ukuthi ifinyelele ezintweni eziqukethwe ucingo edivayisini. Insiza enalemvume ingakwazi ukubona inombolo yocingo kanye nesiriyeli nombolo yalolocingo ngisho ngabe ucingo luyasebenza, inombolo ucingo oluxhunywe kuyo kanye nokufanayo."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"gwema ithebhulethi ukuba ingalali"</string>
<string name="permlab_wakeLock" product="default" msgid="573480187941496130">"gwema ifoni ukuba ingalali"</string>
@@ -474,8 +497,7 @@
<string name="permdesc_factoryTest" product="default" msgid="8136644990319244802">"Sebenzise njengokuhlola komkhiqizi wezinga eliphansi, uvumela ukufinyelela okugcwele ihadiwe yefoni. Itholakala kuphela lapho ifoni isebenza kwimodi yokuhlola yomkhiqizi."</string>
<string name="permlab_setWallpaper" msgid="6627192333373465143">"setha iphephadonga"</string>
<string name="permdesc_setWallpaper" msgid="7373447920977624745">"Ivumela uhlelo lokusebenza ukumisa iphephadonga lohlelo."</string>
- <!-- no translation found for permlab_setWallpaperHints (3278608165977736538) -->
- <skip />
+ <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"shintsha usayizi wesithombe sakho sangemuva"</string>
<string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Ivumela uhlelo lokusebenza ukuhlela izihlawumbisela zosayizi wephephadonga lohlelo."</string>
<string name="permlab_masterClear" msgid="2315750423139697397">"setha kabusha kube okumisiwe kwemboni"</string>
<string name="permdesc_masterClear" msgid="3665380492633910226">"Ivuela insiza ukuthi isethe kabusha isistiu ngokuphelele iyibuyisele ezisethweni eyafika nazo, isusa konke ukumisw kwemininingwane, kanye nezinsiza ezifakiwe."</string>
@@ -487,21 +509,16 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Ivumela insiza ukuth iguqule isikhathi esisocingweni."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"yenza njenge Nsizakalo Yemeneja ye-Akhawunti"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"Ivumela insiza ukuthi ishaye izingcingo Kokokuqinisekisa Ama-akhawunti."</string>
- <!-- no translation found for permlab_getAccounts (1086795467760122114) -->
- <skip />
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"thola ama-akhawunti edivayisini"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="3238360555257773358">"Ivumela uhlelo lokusebenza ukuthi lithole uhlu lwama-akhawunti aziwa ithebhulethi."</string>
<string name="permdesc_getAccounts" product="default" msgid="2735689364629830348">"Ivumela insiza ukuthi ithole uhlu lwma-akhawunti aziwa ucingo."</string>
- <!-- no translation found for permlab_authenticateAccounts (5265908481172736933) -->
- <skip />
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"yakha ama-akhawunti bese usetha amaphasiwedi"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Ivumela uhlelo lokusebenza ukusebenzisa amakhono okufakazela ubuqiniso e-akhawunti Emeneja ye-Akhawunti, kuhlanganise ukwenza ama-akhawunti ngisho nokumisa amaphasiwedi ayo."</string>
- <!-- no translation found for permlab_manageAccounts (4983126304757177305) -->
- <skip />
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"engeza noma ukhiphe ama-akhawunti"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"Ivumela uhlelo lokusebenza ukwenza imisebenzi enjengokufaka, nokukhipha ama-akhawunti nokususa iphasiwedi yawo"</string>
- <!-- no translation found for permlab_useCredentials (235481396163877642) -->
- <skip />
+ <string name="permlab_useCredentials" msgid="235481396163877642">"sebenzisa ama-akhawunti edivayisini"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"Ivumela insiza ukuthi icele amathokheni okuqinisekisa."</string>
- <!-- no translation found for permlab_accessNetworkState (4951027964348974773) -->
- <skip />
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"buka ukuxhumeka kunethiwekhi"</string>
<string name="permdesc_accessNetworkState" msgid="479772796952547198">"Ivumela insiza ukuthi ibheke isio sawo wonke amanethiwekhi."</string>
<string name="permlab_createNetworkSockets" msgid="9121633680349549585">"Ukufinyelela i-Inthanethi ngokugcwele"</string>
<string name="permdesc_createNetworkSockets" msgid="5963922297444265950">"Ivumela insiza ukuthi yakhe amsokhethi enethiwekhi."</string>
@@ -513,36 +530,29 @@
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"Ivumela insiza ukuthi iguqule isimo sokuxhuaniseka kwenethiwekhi ehunyiwe."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"shintsha idatha yasemuva yelungiselelo lokusebenzisa"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Ivumela uhlelo lokusebenza ukuthi luguqule izilungiselelo zemininingwane yokusetshenziswa kwedatha."</string>
- <!-- no translation found for permlab_accessWifiState (5202012949247040011) -->
- <skip />
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"buka ukuxhumaneka kwi-Wi-Fi"</string>
<string name="permdesc_accessWifiState" msgid="7770452658226256831">"Ivumela insiza ukuthi ibheke imininingwane emayelana nesimo se-Wi-Fi."</string>
- <!-- no translation found for permlab_changeWifiState (6550641188749128035) -->
- <skip />
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"xhuma uphinde unqamule kwi-Wi-Fi"</string>
<string name="permdesc_changeWifiState" msgid="7399961004537946240">"Ivumela uhlelo lokusebenza ukuxhuma nokungaxhumeki kumaphoyinti okungena e-Wi-Fi, nokwenza izinguquko ukumisa amanethiwekhi e-Wi-Fi."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"ivumela isamukeli se-Wi-Fi Multicast"</string>
<string name="permdesc_changeWifiMulticastState" msgid="7633598524564320817">"Ivumela uhlelo lokusebenza ukuthola amaphakhethe ngokungaqondile angewona awedivaysi yakho. Lokhu kungaba usizo lapho uthola amasevisi anikezwa eduze. Kusebenzisa amandla amaninigi kunemodi yokungajikijeli okuningi."</string>
- <!-- no translation found for permlab_bluetoothAdmin (6006967373935926659) -->
- <skip />
+ <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"finyelela ezilungiselelweni ze-Bluetooth"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Ivumela uhlelo lokusebenza ukumisa ithebhulethi ye-Bluetooth yasendawni, nokuthola nokubhanqanisa namadivaysi okulawula okukude."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Ivumela uhlelo lokusebenza ukumisa ifoni ye-Bluetooth yasendawni, nokuthola nokubhanqanisa namadivaysi okulawula okukude."</string>
- <!-- no translation found for permlab_accessWimaxState (7436749103151096452) -->
- <skip />
+ <string name="permlab_accessWimaxState" msgid="7436749103151096452">"Buka ukuxhumeka kwi-WiMAX"</string>
<string name="permdesc_accessWimaxState" msgid="5914958077555177749">"Ivumela insiza ukubuka ulwazi mayelana nesimo se-WiMAX."</string>
<string name="permlab_changeWimaxState" msgid="2405042267131496579">"Shintsha isimo se-WiMAX"</string>
<string name="permdesc_changeWimaxState" msgid="3328853825006455912">"Vumela insiza ukuthi ixhumaniseke futhi ibhonculeke kwinethiwekhi ye-WiMAX."</string>
- <!-- no translation found for permlab_bluetooth (6127769336339276828) -->
- <skip />
+ <string name="permlab_bluetooth" msgid="6127769336339276828">"matanisa namadivayisi e-Bluetooth"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="7007851048416363446">"Ivumela insiza ukuthi ibheke ukumiswa kwe-Bluetooth ekhompyutheni yepeni, kanye nokwenza kanye nokwamukela ukuxhumaniseka nokwenziwa kwamadivayisi ukuthi asebenzisane."</string>
<string name="permdesc_bluetooth" product="default" msgid="31846362767164948">"Ivumela insiza ukuthi ibheke ukumiswa kwe-Bluetooth ocingweni, kanye nokwenza kanye nokwamukela ukuxhumaniseka nokwenziwa kwamadivayisi ukuthi asebenzisane."</string>
<string name="permlab_nfc" msgid="4423351274757876953">"lawula Uxhumano Lwenkambu Eseduze"</string>
<string name="permdesc_nfc" msgid="7120611819401789907">"Ivuela insiza ukuthi ixhumane ne-Near Field Communication (NFC) amathegi, amakhadi kanye nezinhlelo zokufunda."</string>
- <!-- no translation found for permlab_disableKeyguard (3598496301486439258) -->
- <skip />
+ <string name="permlab_disableKeyguard" msgid="3598496301486439258">"khubaza ukukhiya kwakho iskrini"</string>
<string name="permdesc_disableKeyguard" msgid="6231611286892232626">"Ivumela uhlelo lokusebenza ukuvimbela ukuvala ukhiye nanoma yikuphi ukuphepha kwephasiwedi okuhlobene. Isibonelo esisemthethweni salokhu ukuba ifoni ivimbele ukuvala ukhiye lapho ithola ikholi engenayo, bese ivumela futhi ukuvala ukhiye lapho ikholi isiqedile."</string>
<string name="permlab_readSyncSettings" msgid="6201810008230503052">"funda izilungiselelo zokuvumelanisa"</string>
<string name="permdesc_readSyncSettings" msgid="5464056785274229278">"Ivumela uhlelo lokusebenza ukuthi lifunde izilungiselelo zokuvumelanisa njengokuthi ukuvumelanise kuyasebenza yini kuhlelo lokusebenza Abantu."</string>
- <!-- no translation found for permlab_writeSyncSettings (5408694875793945314) -->
- <skip />
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"shintsha phakathi kokuvula kanye nokucisha ukuvumelanisa"</string>
<string name="permdesc_writeSyncSettings" msgid="1466056564502117130">"Ivumela insiza ukuthi iguqule izinsiza zokuvumelanisa, kuze kube ukuthi insiza ivumelanisekela abantu."</string>
<string name="permlab_readSyncStats" msgid="7396577451360202448">"funda izibalo zokuvumelanisa"</string>
<string name="permdesc_readSyncStats" msgid="3801971839939951678">"Ivumela uhlelo lokusebenza ukufunda izibalo zokuvumelanisa; isb., umlando wokuvumelanisa ovelile."</string>
@@ -550,22 +560,16 @@
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Ivumela insiza ukuthi ithole imininingwane mayelana namafidi avumelnisiwe njengamanje."</string>
<string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"bhala izifunzo ezikhokhelwayo"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Ivumela insiza ukuthi iguqule amafidi akho avumelanisiwe njengamanje. Izinsiza ezinobungozi zingaguqula amafidi akho avumelanisiwe."</string>
- <!-- no translation found for permlab_readDictionary (4107101525746035718) -->
- <skip />
+ <string name="permlab_readDictionary" msgid="4107101525746035718">"funda imibandela oyengezile esichazimazwini"</string>
<string name="permdesc_readDictionary" msgid="8977815988329283705">"Ivumela uhlelo lokusebenza ukufunda noma yimaphi amagama ayimfihlo, amagama nemisho leyo umsebenzisi ayigcine kwisichazamazwi somsebenzisi."</string>
<string name="permlab_writeDictionary" msgid="2296383164914812772">"bhala kwisichazamazwi esicacisiwe somsebenzisi"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Ivumela insiza ukuthi ibhale amagama amasha esichazinimazwi."</string>
- <!-- no translation found for permlab_sdcardRead (367275095159405468) -->
- <skip />
- <!-- no translation found for permlab_sdcardRead (2188156462934977940) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (3530894470637667917) -->
- <skip />
- <!-- no translation found for permdesc_sdcardRead (2555811422562526606) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (8485979062254666748) -->
- <skip />
- <!-- no translation found for permlab_sdcardWrite (9084476432661578751) -->
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="367275095159405468">"funda okuqukethwe kokugciniwe kwakho okufinyeleleka nge-USD"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="2188156462934977940">"funda okuqukethwe ekhadini lakho le-SD"</string>
+ <string name="permdesc_sdcardRead" product="nosdcard" msgid="3530894470637667917">"Ivumela uhlelo lokusebenza ukuthi lufunde okuqukethwe kwi-USB, okungabandakanya izithombe kanye nezingosi yezindaba."</string>
+ <string name="permdesc_sdcardRead" product="default" msgid="2555811422562526606">"Ivumela uhlelo lokusebenza ukuthi lufunde okuqukethwe ikhadi le-SD, okungabandakanya izithombe kanye nengosi yezindaba."</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"guqula noma ususe okuqukethwe kwakho okugciniwe okufinyeleleka nge-USB"</string>
+ <!-- no translation found for permlab_sdcardWrite (8805693630050458763) -->
<skip />
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Ivumela insiza ukuthi ibhalele ekulondolozweni kwe-USB."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Ivumela insiza ukuthi ibhalele ekhadini le-SD."</string>
@@ -744,6 +748,7 @@
<string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Alikho ikhadi le-SIM efonini."</string>
<string name="lockscreen_missing_sim_instructions" msgid="5372787138023272615">"Faka ikhadi le-SIM."</string>
<string name="lockscreen_missing_sim_instructions_long" msgid="3526573099019319472">"Ikhadi le-SIM alitholakali noma alifundeki. Sicela ufake ikhadi le-SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="5096149665138916184">"Ikhadi le-SIM elingasetshenzisiwe."</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="910904643433151371">"I-SIM khadi ykho isiyenziwe ukuthi ingasebenzi unomphela."\n" Xhumana nomhlinzeki wakho wokuxhumana okungenazintambo ukuze uthole enye i-SIM khadi."</string>
<string name="lockscreen_transport_prev_description" msgid="201594905152746886">"Inkinombo yengoma yangaphambilini"</string>
<string name="lockscreen_transport_next_description" msgid="6089297650481292363">"Inkinobho yengoma elandelayo"</string>
@@ -819,15 +824,12 @@
<string name="autofill_parish" msgid="8202206105468820057">"Parish"</string>
<string name="autofill_area" msgid="3547409050889952423">"Indawo"</string>
<string name="autofill_emirate" msgid="2893880978835698818">"Emirate"</string>
- <!-- no translation found for permlab_readHistoryBookmarks (3775265775405106983) -->
- <skip />
+ <string name="permlab_readHistoryBookmarks" msgid="3775265775405106983">"funda amabhukhimakhi akho ewebhu kanye nomlando"</string>
<string name="permdesc_readHistoryBookmarks" msgid="4577476392604595921">"Ivumela uhlelo lokusebenza ukufunda wonke ama-URL lawo Isiphequluli esiwavakashele, ngisho nawo wonke amabhukimakhi Esiphequluli."</string>
- <!-- no translation found for permlab_writeHistoryBookmarks (3714785165273314490) -->
- <skip />
+ <string name="permlab_writeHistoryBookmarks" msgid="3714785165273314490">"bhala amabhukhimakhi ewebhu kanye nomlando"</string>
<string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="1757103804824209530">"Ivumela insiza ukuthi iguqule ulando Wesiphequluli noma amabhukumaka agcinwe ekhompyutheni yakho yepeni. Izinsiza ezinobungozi zingasebenzisa lokhu ukususa noma ziguqule imininingwane Yesiphequluli sakho."</string>
<string name="permdesc_writeHistoryBookmarks" product="default" msgid="6693764355720719197">"Ivumela insiza ukuthi iguqule umlando Wesiphequluli noma amabhukumaka agcinwe ocingweni lwakho. Izinsiza ezinobungozi zingasebenzisa lokhu ukususa noma ukuguqula imininingwane Yesiphequluli sakho."</string>
- <!-- no translation found for permlab_setAlarm (1379294556362091814) -->
- <skip />
+ <string name="permlab_setAlarm" msgid="1379294556362091814">"setha i-alamu"</string>
<string name="permdesc_setAlarm" msgid="316392039157473848">"Ivumela insiza ukuthi isethe i-alamu ensizeni efkiwe ye-alamu. Ezinye izinsiza ze-alamu kungenzeka zingakusebenzisi lokho."</string>
<string name="permlab_addVoicemail" msgid="5525660026090959044">"engeza imeyili yezwi"</string>
<string name="permdesc_addVoicemail" msgid="6604508651428252437">"Ivumela uhlelo lokusebenza ukwengeza imiyalezo kwibhokisi lakho lemeyili yezwi."</string>
@@ -1087,11 +1089,10 @@
<string name="date_picker_dialog_title" msgid="5879450659453782278">"Setha idethi"</string>
<string name="date_time_set" msgid="5777075614321087758">"Hlela"</string>
<string name="date_time_done" msgid="2507683751759308828">"Kwenziwe"</string>
- <string name="default_permission_group" msgid="2690160991405646128">"Okuzenzakalelayo"</string>
- <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ffffa3a3">"OKUSHA: "</font></string>
+ <string name="perms_new_perm_prefix" msgid="8257740710754301407"><font size="12" fgcolor="#ff900000">"OKUSHA: "</font></string>
+ <!-- no translation found for perms_description_app (5139836143293299417) -->
+ <skip />
<string name="no_permissions" msgid="7283357728219338112">"Ayikho imvume edingekayo"</string>
- <string name="perms_hide" msgid="7283915391320676226"><b>"Fihla "</b></string>
- <string name="perms_show_all" msgid="2671791163933091180"><b>"Bonisa konke"</b></string>
<string name="usb_storage_activity_title" msgid="4465055157209648641">"Isitoreji Esikhulu se-USB"</string>
<string name="usb_storage_title" msgid="5901459041398751495">"I-USB ixhunyiwe"</string>
<string name="usb_storage_message" product="nosdcard" msgid="3308538094316477839">"Uxhumeke kwikhompyutha yakho nge-USB. Thinta inkinobho engenzansi uma ufuna ukukopisha amafayela phakathi kwekhompyutha yakho nokugcina nge-Android USB yakho."</string>
@@ -1320,4 +1321,8 @@
<string name="sending" msgid="3245653681008218030">"Iyathumela..."</string>
<string name="launchBrowserDefault" msgid="2057951947297614725">"Qala Isiphequluli?"</string>
<string name="SetupCallDefault" msgid="5834948469253758575">"Amukela ucingo?"</string>
+ <!-- no translation found for activity_resolver_use_always (4167356512478150080) -->
+ <skip />
+ <!-- no translation found for activity_resolver_use_once (405646673463328329) -->
+ <skip />
</resources>
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index 9fa666e..484de0d 100755
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -3107,7 +3107,7 @@
<attr name="singleLine" format="boolean" />
<!-- Specifies whether the widget is enabled. The interpretation of the enabled state varies by subclass.
For example, a non-enabled EditText prevents the user from editing the contained text, and
- a non-enabled Button prevents the user from tapping the button.
+ a non-enabled Button prevents the user from tapping the button.
The appearance of enabled and non-enabled widgets may differ, if the drawables referenced
from evaluating state_enabled differ. -->
<attr name="enabled" format="boolean" />
@@ -5378,12 +5378,17 @@
<!-- Number of waves/chevrons to show in animation. -->
<attr name="feedbackCount" format="integer" />
- <!-- Used to shift center of pattern vertically. -->
+ <!-- {@deprecated Not used by the framework. Use android:gravity instead}
+ Used to shift center of pattern vertically. -->
<attr name="verticalOffset" format="dimension" />
- <!-- Used to shift center of pattern horizontally. -->
+ <!-- {@deprecated Not used by the framework. Use android:gravity instead}
+ Used to shift center of pattern horizontally. -->
<attr name="horizontalOffset" format="dimension" />
+ <!-- How the items in this layout should be positioned -->
+ <attr name="gravity" />
+
<!-- Used when the handle shouldn't wait to be hit before following the finger -->
<attr name="alwaysTrackFinger" format="boolean" />
</declare-styleable>
diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml
index 0ac2ad74..b677513 100644
--- a/core/res/res/values/attrs_manifest.xml
+++ b/core/res/res/values/attrs_manifest.xml
@@ -198,7 +198,15 @@
(optionally) be granted to development applications. -->
<flag name="development" value="0x20" />
</attr>
-
+
+ <!-- Flags indicating more context for a permission group. -->
+ <attr name="permissionGroupFlags">
+ <!-- Set to indicate that this permission group contains permissions
+ protecting access to some information that is considered
+ personal to the user (such as contacts, e-mails, etc). -->
+ <flag name="personalInfo" value="0x0001" />
+ </attr>
+
<!-- Specified the name of a group that this permission is associated
with. The group must have been defined with the
{@link android.R.styleable#AndroidManifestPermissionGroup permission-group} tag. -->
@@ -895,6 +903,8 @@
<attr name="icon" />
<attr name="logo" />
<attr name="description" />
+ <attr name="permissionGroupFlags" />
+ <attr name="priority" />
</declare-styleable>
<!-- The <code>permission-tree</code> tag declares the base of a tree of
diff --git a/core/res/res/values/bools.xml b/core/res/res/values/bools.xml
index f9762b1..6910ebe 100644
--- a/core/res/res/values/bools.xml
+++ b/core/res/res/values/bools.xml
@@ -22,4 +22,5 @@
<bool name="show_ongoing_ime_switcher">true</bool>
<bool name="action_bar_expanded_action_views_exclusive">true</bool>
<bool name="target_honeycomb_needs_options_menu">true</bool>
+ <bool name="activity_chooser_view_has_default_activity">false</bool>
</resources>
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 472b19c..5fa7b7e 100755
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -287,11 +287,6 @@
Default value is 2 minutes. -->
<integer translatable="false" name="config_wifi_driver_stop_delay">120000</integer>
- <!-- Flag indicating whether the keyguard should be bypassed when
- the slider is open. This can be set or unset depending how easily
- the slider can be opened (for example, in a pocket or purse). -->
- <bool name="config_bypass_keyguard_if_slider_open">true</bool>
-
<!-- Flag indicating whether the we should enable the automatic brightness in Settings.
Software implementation will be used if config_hardware_auto_brightness_available is not set -->
<bool name="config_automatic_brightness_available">false</bool>
@@ -374,11 +369,16 @@
<integer name="config_lidKeyboardAccessibility">0</integer>
<!-- Indicate whether the lid state impacts the accessibility of
- the physical keyboard. 0 means it doesn't, 1 means it is accessible
+ the navigation buttons. 0 means it doesn't, 1 means it is accessible
when the lid is open, 2 means it is accessible when the lid is
closed. The default is 0. -->
<integer name="config_lidNavigationAccessibility">0</integer>
+ <!-- Indicate whether closing the lid causes the device to go to sleep and opening
+ it causes the device to wake up.
+ The default is false. -->
+ <bool name="config_lidControlsSleep">false</bool>
+
<!-- Control the behavior when the user long presses the power button.
0 - Nothing
1 - Global actions menu
@@ -846,6 +846,10 @@
movement threshold where scrolling should begin. -->
<dimen name="config_viewConfigurationTouchSlop">8dp</dimen>
+ <!-- Maximum number of grid columns permitted in the ResolverActivity
+ used for picking activities to handle an intent. -->
+ <integer name="config_maxResolverActivityColumns">2</integer>
+
<!-- Array of OEM specific USB mode override config.
OEM can override a certain USB mode depending on ro.bootmode.
Specify an array of below items to set override rule.
diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml
index f851e62..98c19cf 100644
--- a/core/res/res/values/public.xml
+++ b/core/res/res/values/public.xml
@@ -63,7 +63,6 @@
<java-symbol type="id" name="clearDefaultHint" />
<java-symbol type="id" name="contentPanel" />
<java-symbol type="id" name="customPanel" />
- <java-symbol type="id" name="dangerous_perms_list" />
<java-symbol type="id" name="datePicker" />
<java-symbol type="id" name="day" />
<java-symbol type="id" name="day_names" />
@@ -100,6 +99,7 @@
<java-symbol type="id" name="issued_on" />
<java-symbol type="id" name="left_icon" />
<java-symbol type="id" name="leftSpacer" />
+ <java-symbol type="id" name="line1" />
<java-symbol type="id" name="line3" />
<java-symbol type="id" name="list_footer" />
<java-symbol type="id" name="list_item" />
@@ -117,17 +117,18 @@
<java-symbol type="id" name="new_app_action" />
<java-symbol type="id" name="new_app_description" />
<java-symbol type="id" name="new_app_icon" />
- <java-symbol type="id" name="new_perms_list" />
<java-symbol type="id" name="no_permissions" />
- <java-symbol type="id" name="non_dangerous_perms_list" />
<java-symbol type="id" name="numberpicker_input" />
<java-symbol type="id" name="old_app_action" />
<java-symbol type="id" name="old_app_description" />
<java-symbol type="id" name="old_app_icon" />
+ <java-symbol type="id" name="overflow_title" />
<java-symbol type="id" name="package_label" />
<java-symbol type="id" name="packages_list" />
<java-symbol type="id" name="pause" />
+ <java-symbol type="id" name="perms_list" />
<java-symbol type="id" name="perm_icon" />
+ <java-symbol type="id" name="perm_name" />
<java-symbol type="id" name="permission_group" />
<java-symbol type="id" name="permission_list" />
<java-symbol type="id" name="pickers" />
@@ -163,9 +164,6 @@
<java-symbol type="id" name="sha256_fingerprint" />
<java-symbol type="id" name="share" />
<java-symbol type="id" name="shortcut" />
- <java-symbol type="id" name="show_more" />
- <java-symbol type="id" name="show_more_icon" />
- <java-symbol type="id" name="show_more_text" />
<java-symbol type="id" name="skip_button" />
<java-symbol type="id" name="slider_group" />
<java-symbol type="id" name="split_action_bar" />
@@ -464,7 +462,6 @@
<java-symbol type="string" name="db_default_sync_mode" />
<java-symbol type="string" name="db_wal_sync_mode" />
<java-symbol type="string" name="decline" />
- <java-symbol type="string" name="default_permission_group" />
<java-symbol type="string" name="default_text_encoding" />
<java-symbol type="string" name="description_target_unlock_tablet" />
<java-symbol type="string" name="double_tap_toast" />
@@ -654,10 +651,8 @@
<java-symbol type="string" name="orgTypeOther" />
<java-symbol type="string" name="orgTypeWork" />
<java-symbol type="string" name="passwordIncorrect" />
- <java-symbol type="string" name="permissions_format" />
+ <java-symbol type="string" name="perms_description_app" />
<java-symbol type="string" name="perms_new_perm_prefix" />
- <java-symbol type="string" name="perms_hide" />
- <java-symbol type="string" name="perms_show_all" />
<java-symbol type="string" name="petabyteShort" />
<java-symbol type="string" name="phoneTypeAssistant" />
<java-symbol type="string" name="phoneTypeCallback" />
@@ -1044,6 +1039,7 @@
<java-symbol type="layout" name="alert_dialog_progress" />
<java-symbol type="layout" name="always_use_checkbox" />
<java-symbol type="layout" name="app_permission_item" />
+ <java-symbol type="layout" name="app_permission_item_old" />
<java-symbol type="layout" name="app_perms_summary" />
<java-symbol type="layout" name="calendar_view" />
<java-symbol type="layout" name="character_picker" />
@@ -1174,12 +1170,13 @@
<java-symbol type="attr" name="dialogTitleDecorLayout" />
<java-symbol type="attr" name="dialogTitleIconsDecorLayout" />
<java-symbol type="bool" name="config_allowAllRotations" />
- <java-symbol type="bool" name="config_bypass_keyguard_if_slider_open" />
+ <java-symbol type="bool" name="config_annoy_dianne" />
<java-symbol type="bool" name="config_carDockEnablesAccelerometer" />
<java-symbol type="bool" name="config_deskDockEnablesAccelerometer" />
<java-symbol type="bool" name="config_disableMenuKeyInLockScreen" />
<java-symbol type="bool" name="config_enableLockBeforeUnlockScreen" />
<java-symbol type="bool" name="config_enableLockScreenRotation" />
+ <java-symbol type="bool" name="config_lidControlsSleep" />
<java-symbol type="bool" name="config_reverseDefaultRotation" />
<java-symbol type="bool" name="config_showNavigationBar" />
<java-symbol type="bool" name="target_honeycomb_needs_options_menu" />
@@ -1315,6 +1312,7 @@
<java-symbol type="string" name="lockscreen_password_wrong" />
<java-symbol type="string" name="lockscreen_pattern_instructions" />
<java-symbol type="string" name="lockscreen_pattern_wrong" />
+ <java-symbol type="string" name="lockscreen_permanent_disabled_sim_message_short" />
<java-symbol type="string" name="lockscreen_permanent_disabled_sim_instructions" />
<java-symbol type="string" name="lockscreen_plugged_in" />
<java-symbol type="string" name="lockscreen_sim_locked_message" />
@@ -1375,6 +1373,7 @@
<java-symbol type="bool" name="config_wifi_dual_band_support" />
<java-symbol type="bool" name="config_wimaxEnabled" />
<java-symbol type="bool" name="show_ongoing_ime_switcher" />
+ <java-symbol type="bool" name="activity_chooser_view_has_default_activity" />
<java-symbol type="color" name="config_defaultNotificationColor" />
<java-symbol type="drawable" name="ic_notification_ime_default" />
<java-symbol type="drawable" name="stat_notify_car_mode" />
@@ -1509,6 +1508,12 @@
<java-symbol type="bool" name="config_enableDreams" />
<java-symbol type="string" name="config_defaultDreamComponent" />
+ <java-symbol type="layout" name="resolver_grid" />
+ <java-symbol type="id" name="resolver_grid" />
+ <java-symbol type="id" name="button_once" />
+ <java-symbol type="id" name="button_always" />
+ <java-symbol type="integer" name="config_maxResolverActivityColumns" />
+
<!-- From SystemUI -->
<java-symbol type="anim" name="push_down_in" />
<java-symbol type="anim" name="push_down_out" />
@@ -3590,24 +3595,13 @@
=============================================================== -->
<public type="attr" name="isolatedProcess" id="0x010103a7" />
- <public type="attr" name="supportsRtl" id="0x010103a8" />
-
- <public type="attr" name="textDirection"/>
- <public type="attr" name="textAlignment"/>
-
- <public type="attr" name="layoutDirection" />
-
- <public type="attr" name="paddingStart"/>
- <public type="attr" name="paddingEnd"/>
-
- <public type="attr" name="layout_marginStart"/>
- <public type="attr" name="layout_marginEnd"/>
<public type="attr" name="kcm"/>
-
<public type="attr" name="parentActivityName" />
<public type="attr" name="importantForAccessibility"/>
<public type="attr" name="canHandleGestures"/>
+ <public type="attr" name="permissionGroupFlags"/>
+
</resources>
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index bc1e79c..687a00b 100755
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -390,11 +390,12 @@
<!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permgrouplab_personalInfo">Your personal information</string>
<!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
- <string name="permgroupdesc_personalInfo" product="tablet">Direct access to your contacts
- and calendar stored on the tablet.</string>
+ <string name="permgroupdesc_personalInfo">Direct access to information about you, stored in on your contact card.</string>
+
+ <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permgrouplab_socialInfo">Your social information</string>
<!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
- <string name="permgroupdesc_personalInfo" product="default">Direct access to your contacts
- and calendar stored on the phone.</string>
+ <string name="permgroupdesc_socialInfo">Direct access to information about your contacts and social connections.</string>
<!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permgrouplab_location">Your location</string>
@@ -407,6 +408,91 @@
<string name="permgroupdesc_network">Access various network features.</string>
<!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permgrouplab_bluetoothNetwork">Bluetooth</string>
+ <!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permgroupdesc_bluetoothNetwork">Access devices and networks through Bluetooth.</string>
+
+ <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permgrouplab_shortrangeNetwork">Short-range Networks</string>
+ <!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permgroupdesc_shortrangeNetwork">Access devices through short-range networks such as NFC.</string>
+
+ <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permgrouplab_audioSettings">Audio Settings</string>
+ <!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permgroupdesc_audioSettings">Change audio settings.</string>
+
+ <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permgrouplab_affectsBattery">Affects Battery</string>
+ <!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permgroupdesc_affectsBattery">Use features that can quickly drain battery.</string>
+
+ <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permgrouplab_calendar">Calendar</string>
+ <!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permgroupdesc_calendar">Direct access to calendar and events.</string>
+
+ <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permgrouplab_dictionary">Read User Dictionary</string>
+ <!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permgroupdesc_dictionary">Read words in user dictionary.</string>
+
+ <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permgrouplab_writeDictionary">Write User Dictionary</string>
+ <!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permgroupdesc_writeDictionary">Add words to the user dictionary.</string>
+
+ <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permgrouplab_bookmarks">Bookmarks and History</string>
+ <!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permgroupdesc_bookmarks">Direct access to bookmarks and browser history.</string>
+
+ <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permgrouplab_deviceAlarms">Alarm</string>
+ <!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permgroupdesc_deviceAlarms">Set the alarm clock.</string>
+
+ <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permgrouplab_voicemail">Voicemail</string>
+ <!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permgroupdesc_voicemail">Direct access to voicemail.</string>
+
+ <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permgrouplab_microphone">Microphone</string>
+ <!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permgroupdesc_microphone">Direct access to the microphone to record audio.</string>
+
+ <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permgrouplab_camera">Camera</string>
+ <!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permgroupdesc_camera">Direct access to camera for image or video capture.</string>
+
+ <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permgrouplab_appInfo">Your applications information</string>
+ <!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permgroupdesc_appInfo">Ability to affect behavior of other applications on your device.</string>
+
+ <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permgrouplab_wallpaper">Wallpaper</string>
+ <!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permgroupdesc_wallpaper">Change the device wallpaper settings.</string>
+
+ <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permgrouplab_systemClock">Clock</string>
+ <!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permgroupdesc_systemClock">Change the device time or timezone.</string>
+
+ <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permgrouplab_statusBar">Status Bar</string>
+ <!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permgroupdesc_statusBar">Change the device status bar settings.</string>
+
+ <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permgrouplab_syncSettings">Sync Settings</string>
+ <!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permgroupdesc_syncSettings">Access to the sync settings.</string>
+
+ <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permgrouplab_accounts">Your accounts</string>
<!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permgroupdesc_accounts">Access the available accounts.</string>
@@ -432,6 +518,11 @@
<string name="permgroupdesc_developmentTools">Features only needed for app developers.</string>
<!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permgrouplab_display">Other Application UI</string>
+ <!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
+ <string name="permgroupdesc_display">Effect the UI of other applications.</string>
+
+ <!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permgrouplab_storage">Storage</string>
<!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. [CHAR LIMIT=30] -->
<string name="permgroupdesc_storage" product="nosdcard">Access the USB storage.</string>
@@ -1516,7 +1607,7 @@
<!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. [CHAR LIMIT=30] -->
<string name="permlab_sdcardWrite" product="nosdcard">modify or delete the contents of your USB storage</string>
<!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
- <string name="permlab_sdcardWrite" product="default">modify or delete the contens of your SD card</string>
+ <string name="permlab_sdcardWrite" product="default">modify or delete the contents of your SD card</string>
<!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. [CHAR LIMIT=30] -->
<string name="permdesc_sdcardWrite" product="nosdcard">Allows the app to write to the USB storage.</string>
<!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
@@ -1898,6 +1989,8 @@
<string name="lockscreen_missing_sim_instructions">Insert a SIM card.</string>
<!-- Shown in the lock screen to ask the user to insert a SIM card when sim is missing or not readable. -->
<string name="lockscreen_missing_sim_instructions_long">The SIM card is missing or not readable. Insert a SIM card.</string>
+ <!-- Shown in the lock screen when SIM card is permanently disabled. -->
+ <string name="lockscreen_permanent_disabled_sim_message_short">Unusable SIM card.</string>
<!-- Shown in the lock screen to inform the user to SIM card is permanently disabled. -->
<string name="lockscreen_permanent_disabled_sim_instructions">Your SIM card has been permanently disabled.\n
Contact your wireless service provider for another SIM card.</string>
@@ -2893,18 +2986,12 @@
<string name="date_time_done">Done</string>
<!-- Security Permissions strings-->
- <!-- The default permission group for any permissions that have not explicitly set a group. -->
- <string name="default_permission_group">Default</string>
- <!-- Do not translate. -->
- <string name="permissions_format"><xliff:g id="perm_line1">%1$s</xliff:g>, <xliff:g id="perm_line2">%2$s</xliff:g></string>
<!-- Text that is placed at the front of a permission name that is being added to an app [CHAR LIMIT=NONE] -->
- <string name="perms_new_perm_prefix"><font size="12" fgcolor="#ffffa3a3">NEW: </font></string>
+ <string name="perms_new_perm_prefix"><font size="12" fgcolor="#ff900000">NEW: </font></string>
+ <!-- Text that is placed at the front of a permission name that is being added to an app [CHAR LIMIT=NONE] -->
+ <string name="perms_description_app">Provided by <xliff:g id="app_name">%1$s</xliff:g>.</string>
<!-- Shown for an application when it doesn't require any permission grants. -->
<string name="no_permissions">No permissions required</string>
- <!-- When installing an application, the less-dangerous permissions are hidden. If the user showed those, this is the text to hide them again. -->
- <string name="perms_hide"><b>Hide</b></string>
- <!-- When installing an application, the less-dangerous permissions are hidden. This is the text to show those. -->
- <string name="perms_show_all"><b>Show all</b></string>
<!-- USB storage dialog strings -->
<!-- This is the title for the activity's window. -->
@@ -3473,4 +3560,12 @@
<!-- STK setup Call -->
<string name="SetupCallDefault">Accept call?</string>
+ <!-- Title for a button to choose the currently selected activity
+ as the default in the activity resolver. [CHAR LIMIT=25] -->
+ <string name="activity_resolver_use_always">Always</string>
+
+ <!-- Title for a button to choose the currently selected activity
+ from the activity resolver to use just this once. [CHAR LIMIT=25] -->
+ <string name="activity_resolver_use_once">Just Once</string>
+
</resources>
diff --git a/core/res/res/values/themes.xml b/core/res/res/values/themes.xml
index 71738ad..77dbaa5 100644
--- a/core/res/res/values/themes.xml
+++ b/core/res/res/values/themes.xml
@@ -174,6 +174,13 @@
<item name="windowActionModeOverlay">false</item>
<item name="windowCloseOnTouchOutside">false</item>
+ <!-- Define these here; ContextThemeWrappers around themes that define them should
+ always clear these values. -->
+ <item name="windowFixedWidthMajor">0dp</item>
+ <item name="windowFixedWidthMinor">0dp</item>
+ <item name="windowFixedHeightMajor">0dp</item>
+ <item name="windowFixedHeightMinor">0dp</item>
+
<!-- Dialog attributes -->
<item name="alertDialogStyle">@android:style/AlertDialog</item>
<item name="dialogTheme">@android:style/Theme.Dialog</item>
diff --git a/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/ConnectivityManagerTestActivity.java b/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/ConnectivityManagerTestActivity.java
index 19aa77b..f7b0cd0 100644
--- a/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/ConnectivityManagerTestActivity.java
+++ b/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/ConnectivityManagerTestActivity.java
@@ -246,9 +246,7 @@
initializeNetworkStates();
- mWifiManager.setWifiEnabled(true);
log("Clear Wifi before we start the test.");
- sleep(SHORT_TIMEOUT);
removeConfiguredNetworksAndDisableWifi();
mWifiRegexs = mCM.getTetherableWifiRegexs();
}
@@ -645,6 +643,11 @@
*/
public boolean disconnectAP() {
// remove saved networks
+ if (!mWifiManager.isWifiEnabled()) {
+ log("Enabled wifi before remove configured networks");
+ mWifiManager.setWifiEnabled(true);
+ sleep(SHORT_TIMEOUT);
+ }
List<WifiConfiguration> wifiConfigList = mWifiManager.getConfiguredNetworks();
log("size of wifiConfigList: " + wifiConfigList.size());
for (WifiConfiguration wifiConfig: wifiConfigList) {
diff --git a/core/tests/coretests/res/raw/net_dev_typical b/core/tests/coretests/res/raw/net_dev_typical
deleted file mode 100644
index 290bf03..0000000
--- a/core/tests/coretests/res/raw/net_dev_typical
+++ /dev/null
@@ -1,8 +0,0 @@
-Inter-| Receive | Transmit
- face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
- lo: 8308 116 0 0 0 0 0 0 8308 116 0 0 0 0 0 0
-rmnet0: 1507570 2205 0 0 0 0 0 0 489339 2237 0 0 0 0 0 0
- ifb0: 52454 151 0 151 0 0 0 0 0 0 0 0 0 0 0 0
- ifb1: 52454 151 0 151 0 0 0 0 0 0 0 0 0 0 0 0
- sit0: 0 0 0 0 0 0 0 0 0 0 148 0 0 0 0 0
-ip6tnl0: 0 0 0 0 0 0 0 0 0 0 151 151 0 0 0 0
diff --git a/core/tests/coretests/res/raw/xt_qtaguid_iface_fmt_typical b/core/tests/coretests/res/raw/xt_qtaguid_iface_fmt_typical
new file mode 100644
index 0000000..656d5bb
--- /dev/null
+++ b/core/tests/coretests/res/raw/xt_qtaguid_iface_fmt_typical
@@ -0,0 +1,4 @@
+ifname total_skb_rx_bytes total_skb_rx_packets total_skb_tx_bytes total_skb_tx_packets
+rmnet2 4968 35 3081 39
+rmnet1 11153922 8051 190226 2468
+rmnet0 6824 16 5692 10
diff --git a/core/tests/coretests/src/android/content/SyncStorageEngineTest.java b/core/tests/coretests/src/android/content/SyncStorageEngineTest.java
index 96f313a..2add623 100644
--- a/core/tests/coretests/src/android/content/SyncStorageEngineTest.java
+++ b/core/tests/coretests/src/android/content/SyncStorageEngineTest.java
@@ -20,7 +20,6 @@
import android.accounts.Account;
import android.os.Bundle;
-import android.os.Debug;
import android.test.AndroidTestCase;
import android.test.RenamingDelegatingContext;
import android.test.mock.MockContentResolver;
@@ -57,7 +56,8 @@
long time0 = 1000;
long historyId = engine.insertStartSyncEvent(
- account, 0, authority, time0, SyncStorageEngine.SOURCE_LOCAL);
+ account, 0, authority, time0, SyncStorageEngine.SOURCE_LOCAL,
+ false /* initialization */);
long time1 = time0 + SyncStorageEngine.MILLIS_IN_4WEEKS * 2;
engine.stopSyncEvent(historyId, time1 - time0, "yay", 0, 0);
}
diff --git a/core/tests/coretests/src/android/content/pm/ContainerEncryptionParamsTest.java b/core/tests/coretests/src/android/content/pm/ContainerEncryptionParamsTest.java
new file mode 100644
index 0000000..7deaa9a
--- /dev/null
+++ b/core/tests/coretests/src/android/content/pm/ContainerEncryptionParamsTest.java
@@ -0,0 +1,370 @@
+/*
+ * Copyright (C) 2012 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 android.content.pm;
+
+import android.os.Parcel;
+import android.test.AndroidTestCase;
+
+import java.util.Arrays;
+
+import javax.crypto.SecretKey;
+import javax.crypto.spec.IvParameterSpec;
+import javax.crypto.spec.SecretKeySpec;
+
+public class ContainerEncryptionParamsTest extends AndroidTestCase {
+ private static final String ENC_ALGORITHM = "AES/CBC/PKCS7Padding";
+
+ private static final byte[] IV_BYTES = "FOOBAR".getBytes();
+
+ private static final IvParameterSpec ENC_PARAMS = new IvParameterSpec(IV_BYTES);
+
+ private static final byte[] ENC_KEY_BYTES = "abcd1234wxyz7890".getBytes();
+
+ private static final SecretKey ENC_KEY = new SecretKeySpec(ENC_KEY_BYTES, "RAW");
+
+ private static final String MAC_ALGORITHM = "HMAC-SHA1";
+
+ private static final byte[] MAC_KEY_BYTES = "4wxyzabcd1237890".getBytes();
+
+ private static final SecretKey MAC_KEY = new SecretKeySpec(MAC_KEY_BYTES, "RAW");
+
+ private static final byte[] MAC_TAG = "faketag".getBytes();
+
+ private static final int AUTHENTICATED_START = 5;
+
+ private static final int ENCRYPTED_START = 11;
+
+ private static final int DATA_END = 19;
+
+ public void testParcel() throws Exception {
+ ContainerEncryptionParams expected = new ContainerEncryptionParams(ENC_ALGORITHM,
+ ENC_PARAMS, ENC_KEY, MAC_ALGORITHM, null, MAC_KEY, MAC_TAG, AUTHENTICATED_START,
+ ENCRYPTED_START, DATA_END);
+
+ Parcel parcel = Parcel.obtain();
+ expected.writeToParcel(parcel, 0);
+ parcel.setDataPosition(0);
+
+ ContainerEncryptionParams actual = ContainerEncryptionParams.CREATOR
+ .createFromParcel(parcel);
+
+ assertEquals(ENC_ALGORITHM, actual.getEncryptionAlgorithm());
+
+ if (!(actual.getEncryptionSpec() instanceof IvParameterSpec)) {
+ fail("encryption parameters should be IvParameterSpec");
+ } else {
+ IvParameterSpec actualParams = (IvParameterSpec) actual.getEncryptionSpec();
+ assertTrue(Arrays.equals(IV_BYTES, actualParams.getIV()));
+ }
+
+ assertEquals(ENC_KEY, actual.getEncryptionKey());
+
+ assertEquals(MAC_ALGORITHM, actual.getMacAlgorithm());
+
+ assertNull(actual.getMacSpec());
+
+ assertEquals(MAC_KEY, actual.getMacKey());
+
+ assertTrue(Arrays.equals(MAC_TAG, actual.getMacTag()));
+
+ assertEquals(AUTHENTICATED_START, actual.getAuthenticatedDataStart());
+
+ assertEquals(ENCRYPTED_START, actual.getEncryptedDataStart());
+
+ assertEquals(DATA_END, actual.getDataEnd());
+ }
+
+ public void testEquals_Success() throws Exception {
+ ContainerEncryptionParams params1 = new ContainerEncryptionParams(ENC_ALGORITHM,
+ ENC_PARAMS, ENC_KEY, MAC_ALGORITHM, null, MAC_KEY, MAC_TAG, AUTHENTICATED_START,
+ ENCRYPTED_START, DATA_END);
+
+ ContainerEncryptionParams params2 = new ContainerEncryptionParams(
+ new String(ENC_ALGORITHM), new IvParameterSpec(IV_BYTES.clone()),
+ new SecretKeySpec(ENC_KEY_BYTES.clone(), "RAW"), new String(MAC_ALGORITHM), null,
+ new SecretKeySpec(MAC_KEY_BYTES.clone(), "RAW"), MAC_TAG, AUTHENTICATED_START,
+ ENCRYPTED_START, DATA_END);
+
+ assertEquals(params1, params2);
+ }
+
+ public void testEquals_EncAlgo_Failure() throws Exception {
+ ContainerEncryptionParams params1 = new ContainerEncryptionParams(ENC_ALGORITHM,
+ ENC_PARAMS, ENC_KEY, MAC_ALGORITHM, null, MAC_KEY, MAC_TAG, AUTHENTICATED_START,
+ ENCRYPTED_START, DATA_END);
+
+ ContainerEncryptionParams params2 = new ContainerEncryptionParams(new String(
+ "AES-256/CBC/PKCS7Padding"), new IvParameterSpec(IV_BYTES.clone()),
+ new SecretKeySpec(ENC_KEY_BYTES.clone(), "RAW"), new String(MAC_ALGORITHM), null,
+ new SecretKeySpec(MAC_KEY_BYTES.clone(), "RAW"), MAC_TAG, AUTHENTICATED_START,
+ ENCRYPTED_START, DATA_END);
+
+ assertFalse(params1.equals(params2));
+ }
+
+ public void testEquals_EncParams_Failure() throws Exception {
+ ContainerEncryptionParams params1 = new ContainerEncryptionParams(ENC_ALGORITHM,
+ ENC_PARAMS, ENC_KEY, MAC_ALGORITHM, null, MAC_KEY, MAC_TAG, AUTHENTICATED_START,
+ ENCRYPTED_START, DATA_END);
+
+ ContainerEncryptionParams params2 = new ContainerEncryptionParams(
+ new String(ENC_ALGORITHM), new IvParameterSpec("BLAHBLAH".getBytes()),
+ new SecretKeySpec(ENC_KEY_BYTES.clone(), "RAW"), new String(MAC_ALGORITHM), null,
+ new SecretKeySpec(MAC_KEY_BYTES.clone(), "RAW"), MAC_TAG, AUTHENTICATED_START,
+ ENCRYPTED_START, DATA_END);
+
+ assertFalse(params1.equals(params2));
+ }
+
+ public void testEquals_EncKey_Failure() throws Exception {
+ ContainerEncryptionParams params1 = new ContainerEncryptionParams(ENC_ALGORITHM,
+ ENC_PARAMS, ENC_KEY, MAC_ALGORITHM, null, MAC_KEY, MAC_TAG, AUTHENTICATED_START,
+ ENCRYPTED_START, DATA_END);
+
+ ContainerEncryptionParams params2 = new ContainerEncryptionParams(
+ new String(ENC_ALGORITHM), new IvParameterSpec(IV_BYTES.clone()),
+ new SecretKeySpec("BLAHBLAH".getBytes(), "RAW"), new String(MAC_ALGORITHM), null,
+ new SecretKeySpec(MAC_KEY_BYTES.clone(), "RAW"), MAC_TAG, AUTHENTICATED_START,
+ ENCRYPTED_START, DATA_END);
+
+ assertFalse(params1.equals(params2));
+ }
+
+ public void testEquals_MacAlgo_Failure() throws Exception {
+ ContainerEncryptionParams params1 = new ContainerEncryptionParams(ENC_ALGORITHM,
+ ENC_PARAMS, ENC_KEY, MAC_ALGORITHM, null, MAC_KEY, MAC_TAG, AUTHENTICATED_START,
+ ENCRYPTED_START, DATA_END);
+
+ ContainerEncryptionParams params2 = new ContainerEncryptionParams(
+ new String(ENC_ALGORITHM), new IvParameterSpec(IV_BYTES.clone()),
+ new SecretKeySpec(ENC_KEY_BYTES.clone(), "RAW"), "BLAHBLAH", null,
+ new SecretKeySpec(MAC_KEY_BYTES.clone(), "RAW"), MAC_TAG, AUTHENTICATED_START,
+ ENCRYPTED_START, DATA_END);
+
+ assertFalse(params1.equals(params2));
+ }
+
+ public void testEquals_MacKey_Failure() throws Exception {
+ ContainerEncryptionParams params1 = new ContainerEncryptionParams(ENC_ALGORITHM,
+ ENC_PARAMS, ENC_KEY, MAC_ALGORITHM, null, MAC_KEY, MAC_TAG, AUTHENTICATED_START,
+ ENCRYPTED_START, DATA_END);
+
+ ContainerEncryptionParams params2 = new ContainerEncryptionParams(
+ new String(ENC_ALGORITHM), new IvParameterSpec(IV_BYTES.clone()),
+ new SecretKeySpec(ENC_KEY_BYTES.clone(), "RAW"), new String(MAC_ALGORITHM), null,
+ new SecretKeySpec("FAKE_MAC_KEY".getBytes(), "RAW"), MAC_TAG, AUTHENTICATED_START,
+ ENCRYPTED_START, DATA_END);
+
+ assertFalse(params1.equals(params2));
+ }
+
+ public void testEquals_MacTag_Failure() throws Exception {
+ ContainerEncryptionParams params1 = new ContainerEncryptionParams(ENC_ALGORITHM,
+ ENC_PARAMS, ENC_KEY, MAC_ALGORITHM, null, MAC_KEY, MAC_TAG, AUTHENTICATED_START,
+ ENCRYPTED_START, DATA_END);
+
+ ContainerEncryptionParams params2 = new ContainerEncryptionParams(
+ new String(ENC_ALGORITHM), new IvParameterSpec(IV_BYTES.clone()),
+ new SecretKeySpec(ENC_KEY_BYTES.clone(), "RAW"), new String(MAC_ALGORITHM), null,
+ new SecretKeySpec(MAC_KEY_BYTES.clone(), "RAW"), "broken".getBytes(),
+ AUTHENTICATED_START, ENCRYPTED_START, DATA_END);
+
+ assertFalse(params1.equals(params2));
+ }
+
+ public void testEquals_AuthenticatedStart_Failure() throws Exception {
+ ContainerEncryptionParams params1 = new ContainerEncryptionParams(ENC_ALGORITHM,
+ ENC_PARAMS, ENC_KEY, MAC_ALGORITHM, null, MAC_KEY, MAC_TAG, AUTHENTICATED_START,
+ ENCRYPTED_START, DATA_END);
+
+ ContainerEncryptionParams params2 = new ContainerEncryptionParams(
+ new String(ENC_ALGORITHM), new IvParameterSpec(IV_BYTES.clone()),
+ new SecretKeySpec(ENC_KEY_BYTES.clone(), "RAW"), new String(MAC_ALGORITHM), null,
+ new SecretKeySpec(MAC_KEY_BYTES.clone(), "RAW"), MAC_TAG, AUTHENTICATED_START - 1,
+ ENCRYPTED_START, DATA_END);
+
+ assertFalse(params1.equals(params2));
+ }
+
+ public void testEquals_EncryptedStart_Failure() throws Exception {
+ ContainerEncryptionParams params1 = new ContainerEncryptionParams(ENC_ALGORITHM,
+ ENC_PARAMS, ENC_KEY, MAC_ALGORITHM, null, MAC_KEY, MAC_TAG, AUTHENTICATED_START,
+ ENCRYPTED_START, DATA_END);
+
+ ContainerEncryptionParams params2 = new ContainerEncryptionParams(
+ new String(ENC_ALGORITHM), new IvParameterSpec(IV_BYTES.clone()),
+ new SecretKeySpec(ENC_KEY_BYTES.clone(), "RAW"), new String(MAC_ALGORITHM), null,
+ new SecretKeySpec(MAC_KEY_BYTES.clone(), "RAW"), MAC_TAG, AUTHENTICATED_START,
+ ENCRYPTED_START - 1, DATA_END);
+
+ assertFalse(params1.equals(params2));
+ }
+
+ public void testEquals_DataEnd_Failure() throws Exception {
+ ContainerEncryptionParams params1 = new ContainerEncryptionParams(ENC_ALGORITHM,
+ ENC_PARAMS, ENC_KEY, MAC_ALGORITHM, null, MAC_KEY, MAC_TAG, AUTHENTICATED_START,
+ ENCRYPTED_START, DATA_END);
+
+ ContainerEncryptionParams params2 = new ContainerEncryptionParams(
+ new String(ENC_ALGORITHM), new IvParameterSpec(IV_BYTES.clone()),
+ new SecretKeySpec(ENC_KEY_BYTES.clone(), "RAW"), new String(MAC_ALGORITHM), null,
+ new SecretKeySpec(MAC_KEY_BYTES.clone(), "RAW"), MAC_TAG, AUTHENTICATED_START,
+ ENCRYPTED_START, DATA_END + 1);
+
+ assertFalse(params1.equals(params2));
+ }
+
+ public void testHashCode_Success() throws Exception {
+ ContainerEncryptionParams params1 = new ContainerEncryptionParams(ENC_ALGORITHM,
+ ENC_PARAMS, ENC_KEY, MAC_ALGORITHM, null, MAC_KEY, MAC_TAG, AUTHENTICATED_START,
+ ENCRYPTED_START, DATA_END);
+
+ ContainerEncryptionParams params2 = new ContainerEncryptionParams(
+ new String(ENC_ALGORITHM), new IvParameterSpec(IV_BYTES.clone()),
+ new SecretKeySpec(ENC_KEY_BYTES.clone(), "RAW"), new String(MAC_ALGORITHM), null,
+ new SecretKeySpec(MAC_KEY_BYTES.clone(), "RAW"), MAC_TAG, AUTHENTICATED_START,
+ ENCRYPTED_START, DATA_END);
+
+ assertEquals(params1.hashCode(), params2.hashCode());
+ }
+
+ public void testHashCode_EncAlgo_Failure() throws Exception {
+ ContainerEncryptionParams params1 = new ContainerEncryptionParams(ENC_ALGORITHM,
+ ENC_PARAMS, ENC_KEY, MAC_ALGORITHM, null, MAC_KEY, MAC_TAG, AUTHENTICATED_START,
+ ENCRYPTED_START, DATA_END);
+
+ ContainerEncryptionParams params2 = new ContainerEncryptionParams(new String(
+ "AES-256/CBC/PKCS7Padding"), new IvParameterSpec(IV_BYTES.clone()),
+ new SecretKeySpec(ENC_KEY_BYTES.clone(), "RAW"), new String(MAC_ALGORITHM), null,
+ new SecretKeySpec(MAC_KEY_BYTES.clone(), "RAW"), MAC_TAG, AUTHENTICATED_START,
+ ENCRYPTED_START, DATA_END);
+
+ assertFalse(params1.hashCode() == params2.hashCode());
+ }
+
+ public void testHashCode_EncParams_Failure() throws Exception {
+ ContainerEncryptionParams params1 = new ContainerEncryptionParams(ENC_ALGORITHM,
+ ENC_PARAMS, ENC_KEY, MAC_ALGORITHM, null, MAC_KEY, MAC_TAG, AUTHENTICATED_START,
+ ENCRYPTED_START, DATA_END);
+
+ ContainerEncryptionParams params2 = new ContainerEncryptionParams(
+ new String(ENC_ALGORITHM), new IvParameterSpec("BLAHBLAH".getBytes()),
+ new SecretKeySpec(ENC_KEY_BYTES.clone(), "RAW"), new String(MAC_ALGORITHM), null,
+ new SecretKeySpec(MAC_KEY_BYTES.clone(), "RAW"), MAC_TAG, AUTHENTICATED_START,
+ ENCRYPTED_START, DATA_END);
+
+ assertFalse(params1.hashCode() == params2.hashCode());
+ }
+
+ public void testHashCode_EncKey_Failure() throws Exception {
+ ContainerEncryptionParams params1 = new ContainerEncryptionParams(ENC_ALGORITHM,
+ ENC_PARAMS, ENC_KEY, MAC_ALGORITHM, null, MAC_KEY, MAC_TAG, AUTHENTICATED_START,
+ ENCRYPTED_START, DATA_END);
+
+ ContainerEncryptionParams params2 = new ContainerEncryptionParams(
+ new String(ENC_ALGORITHM), new IvParameterSpec(IV_BYTES.clone()),
+ new SecretKeySpec("BLAHBLAH".getBytes(), "RAW"), new String(MAC_ALGORITHM), null,
+ new SecretKeySpec(MAC_KEY_BYTES.clone(), "RAW"), MAC_TAG, AUTHENTICATED_START,
+ ENCRYPTED_START, DATA_END);
+
+ assertFalse(params1.hashCode() == params2.hashCode());
+ }
+
+ public void testHashCode_MacAlgo_Failure() throws Exception {
+ ContainerEncryptionParams params1 = new ContainerEncryptionParams(ENC_ALGORITHM,
+ ENC_PARAMS, ENC_KEY, MAC_ALGORITHM, null, MAC_KEY, MAC_TAG, AUTHENTICATED_START,
+ ENCRYPTED_START, DATA_END);
+
+ ContainerEncryptionParams params2 = new ContainerEncryptionParams(
+ new String(ENC_ALGORITHM), new IvParameterSpec(IV_BYTES.clone()),
+ new SecretKeySpec(ENC_KEY_BYTES.clone(), "RAW"), "BLAHBLAH", null,
+ new SecretKeySpec(MAC_KEY_BYTES.clone(), "RAW"), MAC_TAG, AUTHENTICATED_START,
+ ENCRYPTED_START, DATA_END);
+
+ assertFalse(params1.hashCode() == params2.hashCode());
+ }
+
+ public void testHashCode_MacKey_Failure() throws Exception {
+ ContainerEncryptionParams params1 = new ContainerEncryptionParams(ENC_ALGORITHM,
+ ENC_PARAMS, ENC_KEY, MAC_ALGORITHM, null, MAC_KEY, MAC_TAG, AUTHENTICATED_START,
+ ENCRYPTED_START, DATA_END);
+
+ ContainerEncryptionParams params2 = new ContainerEncryptionParams(
+ new String(ENC_ALGORITHM), new IvParameterSpec(IV_BYTES.clone()),
+ new SecretKeySpec(ENC_KEY_BYTES.clone(), "RAW"), new String(MAC_ALGORITHM), null,
+ new SecretKeySpec("FAKE_MAC_KEY".getBytes(), "RAW"), MAC_TAG, AUTHENTICATED_START,
+ ENCRYPTED_START, DATA_END);
+
+ assertFalse(params1.hashCode() == params2.hashCode());
+ }
+
+ public void testHashCode_MacTag_Failure() throws Exception {
+ ContainerEncryptionParams params1 = new ContainerEncryptionParams(ENC_ALGORITHM,
+ ENC_PARAMS, ENC_KEY, MAC_ALGORITHM, null, MAC_KEY, MAC_TAG, AUTHENTICATED_START,
+ ENCRYPTED_START, DATA_END);
+
+ ContainerEncryptionParams params2 = new ContainerEncryptionParams(
+ new String(ENC_ALGORITHM), new IvParameterSpec(IV_BYTES.clone()),
+ new SecretKeySpec(ENC_KEY_BYTES.clone(), "RAW"), new String(MAC_ALGORITHM), null,
+ new SecretKeySpec(MAC_KEY_BYTES.clone(), "RAW"), "broken".getBytes(),
+ AUTHENTICATED_START, ENCRYPTED_START, DATA_END);
+
+ assertFalse(params1.hashCode() == params2.hashCode());
+ }
+
+ public void testHashCode_AuthenticatedStart_Failure() throws Exception {
+ ContainerEncryptionParams params1 = new ContainerEncryptionParams(ENC_ALGORITHM,
+ ENC_PARAMS, ENC_KEY, MAC_ALGORITHM, null, MAC_KEY, MAC_TAG, AUTHENTICATED_START,
+ ENCRYPTED_START, DATA_END);
+
+ ContainerEncryptionParams params2 = new ContainerEncryptionParams(
+ new String(ENC_ALGORITHM), new IvParameterSpec(IV_BYTES.clone()),
+ new SecretKeySpec(ENC_KEY_BYTES.clone(), "RAW"), new String(MAC_ALGORITHM), null,
+ new SecretKeySpec(MAC_KEY_BYTES.clone(), "RAW"), MAC_TAG, AUTHENTICATED_START - 1,
+ ENCRYPTED_START, DATA_END);
+
+ assertFalse(params1.hashCode() == params2.hashCode());
+ }
+
+ public void testHashCode_EncryptedStart_Failure() throws Exception {
+ ContainerEncryptionParams params1 = new ContainerEncryptionParams(ENC_ALGORITHM,
+ ENC_PARAMS, ENC_KEY, MAC_ALGORITHM, null, MAC_KEY, MAC_TAG, AUTHENTICATED_START,
+ ENCRYPTED_START, DATA_END);
+
+ ContainerEncryptionParams params2 = new ContainerEncryptionParams(
+ new String(ENC_ALGORITHM), new IvParameterSpec(IV_BYTES.clone()),
+ new SecretKeySpec(ENC_KEY_BYTES.clone(), "RAW"), new String(MAC_ALGORITHM), null,
+ new SecretKeySpec(MAC_KEY_BYTES.clone(), "RAW"), MAC_TAG, AUTHENTICATED_START,
+ ENCRYPTED_START - 1, DATA_END);
+
+ assertFalse(params1.hashCode() == params2.hashCode());
+ }
+
+ public void testHashCode_DataEnd_Failure() throws Exception {
+ ContainerEncryptionParams params1 = new ContainerEncryptionParams(ENC_ALGORITHM,
+ ENC_PARAMS, ENC_KEY, MAC_ALGORITHM, null, MAC_KEY, MAC_TAG, AUTHENTICATED_START,
+ ENCRYPTED_START, DATA_END);
+
+ ContainerEncryptionParams params2 = new ContainerEncryptionParams(
+ new String(ENC_ALGORITHM), new IvParameterSpec(IV_BYTES.clone()),
+ new SecretKeySpec(ENC_KEY_BYTES.clone(), "RAW"), new String(MAC_ALGORITHM), null,
+ new SecretKeySpec(MAC_KEY_BYTES.clone(), "RAW"), MAC_TAG, AUTHENTICATED_START,
+ ENCRYPTED_START, DATA_END + 1);
+
+ assertFalse(params1.hashCode() == params2.hashCode());
+ }
+}
diff --git a/core/tests/coretests/src/android/content/pm/LimitedLengthInputStreamTest.java b/core/tests/coretests/src/android/content/pm/LimitedLengthInputStreamTest.java
new file mode 100644
index 0000000..0a0152b
--- /dev/null
+++ b/core/tests/coretests/src/android/content/pm/LimitedLengthInputStreamTest.java
@@ -0,0 +1,186 @@
+/*
+ * Copyright (C) 2012 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 android.content.pm;
+
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.MediumTest;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Arrays;
+
+public class LimitedLengthInputStreamTest extends AndroidTestCase {
+ private final byte[] TEST_STRING1 = "This is a test".getBytes();
+
+ private InputStream mTestStream1;
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ mTestStream1 = new ByteArrayInputStream(TEST_STRING1);
+ }
+
+ @MediumTest
+ public void testConstructor_NegativeOffset_Failure() throws Exception {
+ try {
+ InputStream is = new LimitedLengthInputStream(mTestStream1, -1, TEST_STRING1.length);
+ fail("Should throw IOException on negative index");
+ } catch (IOException e) {
+ // success
+ }
+ }
+
+ @MediumTest
+ public void testConstructor_NegativeLength_Failure() throws Exception {
+ try {
+ InputStream is = new LimitedLengthInputStream(mTestStream1, 0, -1);
+ fail("Should throw IOException on negative length");
+ } catch (IOException e) {
+ // success
+ }
+ }
+
+ @MediumTest
+ public void testConstructor_NullInputStream_Failure() throws Exception {
+ try {
+ InputStream is = new LimitedLengthInputStream(null, 0, 1);
+ fail("Should throw IOException on null input stream");
+ } catch (IOException e) {
+ // success
+ }
+ }
+
+ private void checkReadBytesWithOffsetAndLength_WithString1(int offset, int length)
+ throws Exception {
+ byte[] temp = new byte[TEST_STRING1.length];
+ byte[] expected = new byte[length];
+ byte[] actual = new byte[length];
+
+ System.arraycopy(TEST_STRING1, offset, expected, 0, length);
+
+ InputStream is = new LimitedLengthInputStream(mTestStream1, offset, length);
+ assertEquals(length, is.read(temp, 0, temp.length));
+
+ System.arraycopy(temp, 0, actual, 0, length);
+ assertTrue(Arrays.equals(expected, actual));
+
+ assertEquals(-1, is.read(temp, 0, temp.length));
+ }
+
+ @MediumTest
+ public void testReadBytesWithOffsetAndLength_ZeroOffset_PartialLength_Success()
+ throws Exception {
+ checkReadBytesWithOffsetAndLength_WithString1(0, 2);
+ }
+
+ @MediumTest
+ public void testReadBytesWithOffsetAndLength_NonZeroOffset_PartialLength_Success()
+ throws Exception {
+ checkReadBytesWithOffsetAndLength_WithString1(3, 2);
+ }
+
+ @MediumTest
+ public void testReadBytesWithOffsetAndLength_ZeroOffset_FullLength_Success() throws Exception {
+ checkReadBytesWithOffsetAndLength_WithString1(0, TEST_STRING1.length);
+ }
+
+ @MediumTest
+ public void testReadBytesWithOffsetAndLength_NonZeroOffset_FullLength_Success()
+ throws Exception {
+ checkReadBytesWithOffsetAndLength_WithString1(3, TEST_STRING1.length - 3);
+ }
+
+ @MediumTest
+ public void testReadBytesWithOffsetAndLength_ZeroOffset_PastEnd_Success() throws Exception {
+ byte[] temp = new byte[TEST_STRING1.length + 10];
+ InputStream is = new LimitedLengthInputStream(mTestStream1, 0, TEST_STRING1.length + 10);
+ assertEquals(TEST_STRING1.length, is.read(temp, 0, TEST_STRING1.length + 10));
+
+ byte[] actual = new byte[TEST_STRING1.length];
+ System.arraycopy(temp, 0, actual, 0, actual.length);
+ assertTrue(Arrays.equals(TEST_STRING1, actual));
+ }
+
+ private void checkReadBytes_WithString1(int offset, int length) throws Exception {
+ byte[] temp = new byte[TEST_STRING1.length];
+ byte[] expected = new byte[length];
+ byte[] actual = new byte[length];
+
+ System.arraycopy(TEST_STRING1, offset, expected, 0, length);
+
+ InputStream is = new LimitedLengthInputStream(mTestStream1, offset, length);
+ assertEquals(length, is.read(temp));
+
+ System.arraycopy(temp, 0, actual, 0, length);
+ assertTrue(Arrays.equals(expected, actual));
+
+ assertEquals(-1, is.read(temp));
+ }
+
+ @MediumTest
+ public void testReadBytes_ZeroOffset_PartialLength_Success() throws Exception {
+ checkReadBytesWithOffsetAndLength_WithString1(0, 2);
+ }
+
+ @MediumTest
+ public void testReadBytes_NonZeroOffset_PartialLength_Success() throws Exception {
+ checkReadBytesWithOffsetAndLength_WithString1(3, 2);
+ }
+
+ @MediumTest
+ public void testReadBytes_ZeroOffset_FullLength_Success() throws Exception {
+ checkReadBytesWithOffsetAndLength_WithString1(0, TEST_STRING1.length);
+ }
+
+ @MediumTest
+ public void testReadBytes_NonZeroOffset_FullLength_Success() throws Exception {
+ checkReadBytesWithOffsetAndLength_WithString1(3, TEST_STRING1.length - 3);
+ }
+
+ private void checkSingleByteRead_WithString1(int offset, int length) throws Exception {
+ InputStream is = new LimitedLengthInputStream(mTestStream1, offset, length);
+
+ for (int i = 0; i < length; i++) {
+ assertEquals(TEST_STRING1[offset + i], is.read());
+ }
+
+ assertEquals(-1, is.read());
+ }
+
+ @MediumTest
+ public void testSingleByteRead_ZeroOffset_PartialLength_Success() throws Exception {
+ checkSingleByteRead_WithString1(0, 2);
+ }
+
+ @MediumTest
+ public void testSingleByteRead_NonZeroOffset_PartialLength_Success() throws Exception {
+ checkSingleByteRead_WithString1(3, 2);
+ }
+
+ @MediumTest
+ public void testSingleByteRead_ZeroOffset_FullLength_Success() throws Exception {
+ checkSingleByteRead_WithString1(0, TEST_STRING1.length);
+ }
+
+ @MediumTest
+ public void testSingleByteRead_NonZeroOffset_FullLength_Success() throws Exception {
+ checkSingleByteRead_WithString1(3, TEST_STRING1.length - 3);
+ }
+
+}
diff --git a/core/tests/coretests/src/android/content/pm/MacAuthenticatedInputStreamTest.java b/core/tests/coretests/src/android/content/pm/MacAuthenticatedInputStreamTest.java
new file mode 100644
index 0000000..948e722
--- /dev/null
+++ b/core/tests/coretests/src/android/content/pm/MacAuthenticatedInputStreamTest.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2012 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 android.content.pm;
+
+import android.test.AndroidTestCase;
+
+import java.io.ByteArrayInputStream;
+import java.util.Arrays;
+
+import javax.crypto.Mac;
+import javax.crypto.SecretKey;
+import javax.crypto.spec.SecretKeySpec;
+
+import libcore.io.Streams;
+
+public class MacAuthenticatedInputStreamTest extends AndroidTestCase {
+
+ private static final SecretKey HMAC_KEY_1 = new SecretKeySpec("test_key_1".getBytes(), "HMAC");
+
+ private static final byte[] TEST_STRING_1 = "Hello, World!".getBytes();
+
+ /**
+ * Generated with:
+ *
+ * echo -n 'Hello, World!' | openssl dgst -hmac 'test_key_1' -binary -sha1 | recode ..//x1 |
+ * sed 's/0x/(byte) 0x/g'
+ */
+ private static final byte[] TEST_STRING_1_MAC = {
+ (byte) 0x29, (byte) 0xB1, (byte) 0x87, (byte) 0x6B, (byte) 0xFE, (byte) 0x83,
+ (byte) 0x96, (byte) 0x51, (byte) 0x61, (byte) 0x02, (byte) 0xAF, (byte) 0x7B,
+ (byte) 0xBA, (byte) 0x05, (byte) 0xE6, (byte) 0xA4, (byte) 0xAB, (byte) 0x36,
+ (byte) 0x18, (byte) 0x02
+ };
+
+ /**
+ * Same as TEST_STRING_1_MAC but with the first byte as 0x28 instead of
+ * 0x29.
+ */
+ private static final byte[] TEST_STRING_1_MAC_BROKEN = {
+ (byte) 0x28, (byte) 0xB1, (byte) 0x87, (byte) 0x6B, (byte) 0xFE, (byte) 0x83,
+ (byte) 0x96, (byte) 0x51, (byte) 0x61, (byte) 0x02, (byte) 0xAF, (byte) 0x7B,
+ (byte) 0xBA, (byte) 0x05, (byte) 0xE6, (byte) 0xA4, (byte) 0xAB, (byte) 0x36,
+ (byte) 0x18, (byte) 0x02
+ };
+
+ private ByteArrayInputStream mTestStream1;
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ mTestStream1 = new ByteArrayInputStream(TEST_STRING_1);
+ }
+
+ public void testString1Authenticate_Success() throws Exception {
+ Mac mac = Mac.getInstance("HMAC-SHA1");
+ mac.init(HMAC_KEY_1);
+
+ MacAuthenticatedInputStream is = new MacAuthenticatedInputStream(mTestStream1, mac);
+
+ assertTrue(Arrays.equals(TEST_STRING_1, Streams.readFully(is)));
+
+ assertTrue(is.isTagEqual(TEST_STRING_1_MAC));
+ }
+
+ public void testString1Authenticate_WrongTag_Failure() throws Exception {
+ Mac mac = Mac.getInstance("HMAC-SHA1");
+ mac.init(HMAC_KEY_1);
+
+ MacAuthenticatedInputStream is = new MacAuthenticatedInputStream(mTestStream1, mac);
+
+ assertTrue(Arrays.equals(TEST_STRING_1, Streams.readFully(is)));
+
+ assertFalse(is.isTagEqual(TEST_STRING_1_MAC_BROKEN));
+ }
+
+ public void testString1Authenticate_NullTag_Failure() throws Exception {
+ Mac mac = Mac.getInstance("HMAC-SHA1");
+ mac.init(HMAC_KEY_1);
+
+ MacAuthenticatedInputStream is = new MacAuthenticatedInputStream(mTestStream1, mac);
+
+ assertTrue(Arrays.equals(TEST_STRING_1, Streams.readFully(is)));
+
+ assertFalse(is.isTagEqual(null));
+ }
+
+ public void testString1Authenticate_ReadSingleByte_Success() throws Exception {
+ Mac mac = Mac.getInstance("HMAC-SHA1");
+ mac.init(HMAC_KEY_1);
+
+ MacAuthenticatedInputStream is = new MacAuthenticatedInputStream(mTestStream1, mac);
+
+ int numRead = 0;
+ while (is.read() != -1) {
+ numRead++;
+
+ if (numRead > TEST_STRING_1.length) {
+ fail("read too many bytes");
+ }
+ }
+ assertEquals(TEST_STRING_1.length, numRead);
+
+ assertTrue(is.isTagEqual(TEST_STRING_1_MAC));
+ }
+}
diff --git a/core/tests/coretests/src/android/content/pm/PackageManagerTests.java b/core/tests/coretests/src/android/content/pm/PackageManagerTests.java
index 8a5f8bb..77e4986 100755
--- a/core/tests/coretests/src/android/content/pm/PackageManagerTests.java
+++ b/core/tests/coretests/src/android/content/pm/PackageManagerTests.java
@@ -1229,9 +1229,8 @@
installFromRawResource("install.apk", R.raw.install_loc_unspecified,
PackageManager.INSTALL_FORWARD_LOCK |
- PackageManager.INSTALL_EXTERNAL, true, true,
- PackageManager.INSTALL_FAILED_INVALID_INSTALL_LOCATION,
- PackageInfo.INSTALL_LOCATION_UNSPECIFIED);
+ PackageManager.INSTALL_EXTERNAL, true, false, -1,
+ PackageInfo.INSTALL_LOCATION_PREFER_EXTERNAL);
}
@LargeTest
@@ -1626,8 +1625,8 @@
int installFlags = PackageManager.INSTALL_FORWARD_LOCK;
int moveFlags = PackageManager.MOVE_EXTERNAL_MEDIA;
- boolean fail = true;
- int result = PackageManager.MOVE_FAILED_FORWARD_LOCKED;
+ boolean fail = false;
+ int result = PackageManager.MOVE_SUCCEEDED;
sampleMoveFromRawResource(installFlags, moveFlags, fail, result);
}
@@ -1950,7 +1949,7 @@
PackageManager.INSTALL_FORWARD_LOCK,
true,
false, -1,
- PackageInfo.INSTALL_LOCATION_PREFER_EXTERNAL);
+ PackageInfo.INSTALL_LOCATION_AUTO);
}
/* The following test functions verify install location for existing apps.
diff --git a/core/tests/coretests/src/com/android/internal/net/NetworkStatsFactoryTest.java b/core/tests/coretests/src/com/android/internal/net/NetworkStatsFactoryTest.java
index 58269a8..d3dd01a 100644
--- a/core/tests/coretests/src/com/android/internal/net/NetworkStatsFactoryTest.java
+++ b/core/tests/coretests/src/com/android/internal/net/NetworkStatsFactoryTest.java
@@ -25,6 +25,7 @@
import android.content.res.Resources;
import android.net.NetworkStats;
+import android.net.TrafficStats;
import android.test.AndroidTestCase;
import com.android.frameworks.coretests.R;
@@ -80,64 +81,18 @@
assertStatsEntry(stats, "rmnet2", 10001, SET_DEFAULT, 0x0, 1125899906842624L, 984L);
}
- public void testNetworkStatsSummary() throws Exception {
- stageFile(R.raw.net_dev_typical, new File(mTestProc, "net/dev"));
-
- final NetworkStats stats = mFactory.readNetworkStatsSummary();
- assertEquals(6, stats.size());
- assertStatsEntry(stats, "lo", UID_ALL, SET_ALL, TAG_NONE, 8308L, 8308L);
- assertStatsEntry(stats, "rmnet0", UID_ALL, SET_ALL, TAG_NONE, 1507570L, 489339L);
- assertStatsEntry(stats, "ifb0", UID_ALL, SET_ALL, TAG_NONE, 52454L, 0L);
- assertStatsEntry(stats, "ifb1", UID_ALL, SET_ALL, TAG_NONE, 52454L, 0L);
- assertStatsEntry(stats, "sit0", UID_ALL, SET_ALL, TAG_NONE, 0L, 0L);
- assertStatsEntry(stats, "ip6tnl0", UID_ALL, SET_ALL, TAG_NONE, 0L, 0L);
- }
-
- public void testNetworkStatsSummaryDown() throws Exception {
- stageFile(R.raw.net_dev_typical, new File(mTestProc, "net/dev"));
- stageLong(1L, new File(mTestProc, "net/xt_qtaguid/iface_stat/wlan0/active"));
- stageLong(1024L, new File(mTestProc, "net/xt_qtaguid/iface_stat/wlan0/rx_bytes"));
- stageLong(128L, new File(mTestProc, "net/xt_qtaguid/iface_stat/wlan0/rx_packets"));
- stageLong(2048L, new File(mTestProc, "net/xt_qtaguid/iface_stat/wlan0/tx_bytes"));
- stageLong(256L, new File(mTestProc, "net/xt_qtaguid/iface_stat/wlan0/tx_packets"));
-
- final NetworkStats stats = mFactory.readNetworkStatsSummary();
- assertEquals(7, stats.size());
- assertStatsEntry(stats, "rmnet0", UID_ALL, SET_ALL, TAG_NONE, 1507570L, 489339L);
- assertStatsEntry(stats, "wlan0", UID_ALL, SET_ALL, TAG_NONE, 1024L, 2048L);
- }
-
- public void testNetworkStatsCombined() throws Exception {
- stageFile(R.raw.net_dev_typical, new File(mTestProc, "net/dev"));
- stageLong(1L, new File(mTestProc, "net/xt_qtaguid/iface_stat/rmnet0/active"));
- stageLong(10L, new File(mTestProc, "net/xt_qtaguid/iface_stat/rmnet0/rx_bytes"));
- stageLong(20L, new File(mTestProc, "net/xt_qtaguid/iface_stat/rmnet0/rx_packets"));
- stageLong(30L, new File(mTestProc, "net/xt_qtaguid/iface_stat/rmnet0/tx_bytes"));
- stageLong(40L, new File(mTestProc, "net/xt_qtaguid/iface_stat/rmnet0/tx_packets"));
-
- final NetworkStats stats = mFactory.readNetworkStatsSummary();
- assertStatsEntry(stats, "rmnet0", UID_ALL, SET_ALL, TAG_NONE, 1507570L + 10L,
- 2205L + 20L, 489339L + 30L, 2237L + 40L);
- }
-
- public void testNetworkStatsCombinedInactive() throws Exception {
- stageFile(R.raw.net_dev_typical, new File(mTestProc, "net/dev"));
- stageLong(0L, new File(mTestProc, "net/xt_qtaguid/iface_stat/rmnet0/active"));
- stageLong(10L, new File(mTestProc, "net/xt_qtaguid/iface_stat/rmnet0/rx_bytes"));
- stageLong(20L, new File(mTestProc, "net/xt_qtaguid/iface_stat/rmnet0/rx_packets"));
- stageLong(30L, new File(mTestProc, "net/xt_qtaguid/iface_stat/rmnet0/tx_bytes"));
- stageLong(40L, new File(mTestProc, "net/xt_qtaguid/iface_stat/rmnet0/tx_packets"));
-
- final NetworkStats stats = mFactory.readNetworkStatsSummary();
- assertStatsEntry(stats, "rmnet0", UID_ALL, SET_ALL, TAG_NONE, 10L, 20L, 30L, 40L);
- }
-
public void testKernelTags() throws Exception {
assertEquals(0, kernelToTag("0x0000000000000000"));
assertEquals(0x32, kernelToTag("0x0000003200000000"));
assertEquals(2147483647, kernelToTag("0x7fffffff00000000"));
assertEquals(0, kernelToTag("0x0000000000000000"));
assertEquals(2147483136, kernelToTag("0x7FFFFE0000000000"));
+
+ assertEquals(0, kernelToTag("0x0"));
+ assertEquals(0, kernelToTag("0xf00d"));
+ assertEquals(1, kernelToTag("0x100000000"));
+ assertEquals(14438007, kernelToTag("0xdc4e7700000000"));
+ assertEquals(TrafficStats.TAG_SYSTEM_DOWNLOAD, kernelToTag("0xffffff0100000000"));
}
public void testNetworkStatsWithSet() throws Exception {
@@ -152,13 +107,24 @@
public void testNetworkStatsSingle() throws Exception {
stageFile(R.raw.xt_qtaguid_iface_typical, new File(mTestProc, "net/xt_qtaguid/iface_stat_all"));
- final NetworkStats stats = mFactory.readNetworkStatsSummary();
+ final NetworkStats stats = mFactory.readNetworkStatsSummaryDev();
assertEquals(6, stats.size());
assertStatsEntry(stats, "rmnet0", UID_ALL, SET_ALL, TAG_NONE, 2112L, 24L, 700L, 10L);
assertStatsEntry(stats, "test1", UID_ALL, SET_ALL, TAG_NONE, 6L, 8L, 10L, 12L);
assertStatsEntry(stats, "test2", UID_ALL, SET_ALL, TAG_NONE, 1L, 2L, 3L, 4L);
}
+ public void testNetworkStatsXt() throws Exception {
+ stageFile(R.raw.xt_qtaguid_iface_fmt_typical,
+ new File(mTestProc, "net/xt_qtaguid/iface_stat_fmt"));
+
+ final NetworkStats stats = mFactory.readNetworkStatsSummaryXt();
+ assertEquals(3, stats.size());
+ assertStatsEntry(stats, "rmnet0", UID_ALL, SET_ALL, TAG_NONE, 6824L, 16L, 5692L, 10L);
+ assertStatsEntry(stats, "rmnet1", UID_ALL, SET_ALL, TAG_NONE, 11153922L, 8051L, 190226L, 2468L);
+ assertStatsEntry(stats, "rmnet2", UID_ALL, SET_ALL, TAG_NONE, 4968L, 35L, 3081L, 39L);
+ }
+
/**
* Copy a {@link Resources#openRawResource(int)} into {@link File} for
* testing purposes.
diff --git a/core/tests/overlaytests/OverlayTest/src/com/android/overlaytest/OverlayBaseTest.java b/core/tests/overlaytests/OverlayTest/src/com/android/overlaytest/OverlayBaseTest.java
index 85b49ce..6211c1c 100644
--- a/core/tests/overlaytests/OverlayTest/src/com/android/overlaytest/OverlayBaseTest.java
+++ b/core/tests/overlaytests/OverlayTest/src/com/android/overlaytest/OverlayBaseTest.java
@@ -64,8 +64,8 @@
}
public void testBoolean() throws Throwable {
- // config_bypass_keyguard_if_slider_open has no overlay
- final int resId = com.android.internal.R.bool.config_bypass_keyguard_if_slider_open;
+ // config_annoy_dianne has no overlay
+ final int resId = com.android.internal.R.bool.config_annoy_dianne;
assertResource(resId, true, true);
}
diff --git a/data/fonts/Android.mk b/data/fonts/Android.mk
index 85a77d6..16a98d3 100644
--- a/data/fonts/Android.mk
+++ b/data/fonts/Android.mk
@@ -65,6 +65,22 @@
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
+LOCAL_MODULE := DroidSansTamil-Regular.ttf
+LOCAL_SRC_FILES := $(LOCAL_MODULE)
+LOCAL_MODULE_CLASS := ETC
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_PATH := $(TARGET_OUT)/fonts
+include $(BUILD_PREBUILT)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := DroidSansTamil-Bold.ttf
+LOCAL_SRC_FILES := $(LOCAL_MODULE)
+LOCAL_MODULE_CLASS := ETC
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_PATH := $(TARGET_OUT)/fonts
+include $(BUILD_PREBUILT)
+
+include $(CLEAR_VARS)
LOCAL_MODULE := MTLmr3m.ttf
LOCAL_SRC_FILES := $(LOCAL_MODULE)
LOCAL_MODULE_CLASS := ETC
@@ -85,6 +101,8 @@
DroidSans.ttf \
DroidSans-Bold.ttf \
DroidSansEthiopic-Regular.ttf \
+ DroidSansTamil-Regular.ttf \
+ DroidSansTamil-Bold.ttf \
MTLmr3m.ttf \
fallback_fonts-ja.xml
endif # SMALLER_FONT_FOOTPRINT
@@ -124,8 +142,11 @@
Roboto-Bold.ttf \
Roboto-Italic.ttf \
Roboto-BoldItalic.ttf \
+ Roboto-Light.ttf \
+ Roboto-LightItalic.ttf \
DroidNaskh-Regular.ttf \
- DroidNaskh-Regular-Shift.ttf \
+ DroidNaskh-Regular-SystemUI.ttf \
+ DroidSansDevanagari-Regular.ttf \
DroidSansHebrew-Regular.ttf \
DroidSansHebrew-Bold.ttf \
DroidSansThai.ttf \
diff --git a/data/fonts/DroidNaskh-Regular-Shift.ttf b/data/fonts/DroidNaskh-Regular-Shift.ttf
deleted file mode 100644
index de475ca..0000000
--- a/data/fonts/DroidNaskh-Regular-Shift.ttf
+++ /dev/null
Binary files differ
diff --git a/data/fonts/DroidNaskh-Regular-SystemUI.ttf b/data/fonts/DroidNaskh-Regular-SystemUI.ttf
new file mode 100755
index 0000000..5818b49
--- /dev/null
+++ b/data/fonts/DroidNaskh-Regular-SystemUI.ttf
Binary files differ
diff --git a/data/fonts/DroidSansDevanagari-Regular.ttf b/data/fonts/DroidSansDevanagari-Regular.ttf
new file mode 100644
index 0000000..45e15e6
--- /dev/null
+++ b/data/fonts/DroidSansDevanagari-Regular.ttf
Binary files differ
diff --git a/data/fonts/DroidSansTamil-Bold.ttf b/data/fonts/DroidSansTamil-Bold.ttf
new file mode 100644
index 0000000..8ad0085
--- /dev/null
+++ b/data/fonts/DroidSansTamil-Bold.ttf
Binary files differ
diff --git a/data/fonts/DroidSansTamil-Regular.ttf b/data/fonts/DroidSansTamil-Regular.ttf
new file mode 100644
index 0000000..4b8f536
--- /dev/null
+++ b/data/fonts/DroidSansTamil-Regular.ttf
Binary files differ
diff --git a/data/fonts/Roboto-Light.ttf b/data/fonts/Roboto-Light.ttf
new file mode 100644
index 0000000..b50399e
--- /dev/null
+++ b/data/fonts/Roboto-Light.ttf
Binary files differ
diff --git a/data/fonts/Roboto-LightItalic.ttf b/data/fonts/Roboto-LightItalic.ttf
new file mode 100644
index 0000000..a1fdc8d
--- /dev/null
+++ b/data/fonts/Roboto-LightItalic.ttf
Binary files differ
diff --git a/data/fonts/fallback_fonts-ja.xml b/data/fonts/fallback_fonts-ja.xml
index db998d3..be53d1d 100644
--- a/data/fonts/fallback_fonts-ja.xml
+++ b/data/fonts/fallback_fonts-ja.xml
@@ -34,7 +34,7 @@
<familyset>
<family>
<fileset>
- <file>DroidNaskh-Regular-Shift.ttf</file>
+ <file>DroidNaskh-Regular-SystemUI.ttf</file>
</fileset>
</family>
<family>
@@ -65,7 +65,7 @@
</family>
<family>
<fileset>
- <file>Lohit-Devanagari.ttf</file>
+ <file>DroidSansDevanagari-Regular.ttf</file>
</fileset>
</family>
<family>
@@ -75,7 +75,8 @@
</family>
<family>
<fileset>
- <file>Lohit-Tamil.ttf</file>
+ <file>DroidSansTamil-Regular.ttf</file>
+ <file>DroidSansTamil-Bold.ttf</file>
</fileset>
</family>
<family>
diff --git a/data/fonts/fallback_fonts.xml b/data/fonts/fallback_fonts.xml
index a4b5212..80fffa9 100644
--- a/data/fonts/fallback_fonts.xml
+++ b/data/fonts/fallback_fonts.xml
@@ -34,7 +34,7 @@
<familyset>
<family>
<fileset>
- <file>DroidNaskh-Regular-Shift.ttf</file>
+ <file>DroidNaskh-Regular-SystemUI.ttf</file>
</fileset>
</family>
<family>
@@ -65,7 +65,7 @@
</family>
<family>
<fileset>
- <file>Lohit-Devanagari.ttf</file>
+ <file>DroidSansDevanagari-Regular.ttf</file>
</fileset>
</family>
<family>
@@ -75,7 +75,8 @@
</family>
<family>
<fileset>
- <file>Lohit-Tamil.ttf</file>
+ <file>DroidSansTamil-Regular.ttf</file>
+ <file>DroidSansTamil-Bold.ttf</file>
</fileset>
</family>
<family>
diff --git a/data/fonts/fonts.mk b/data/fonts/fonts.mk
index 702b069..397ccda 100644
--- a/data/fonts/fonts.mk
+++ b/data/fonts/fonts.mk
@@ -24,8 +24,11 @@
Roboto-Bold.ttf \
Roboto-Italic.ttf \
Roboto-BoldItalic.ttf \
+ Roboto-Light.ttf \
+ Roboto-LightItalic.ttf \
DroidNaskh-Regular.ttf \
- DroidNaskh-Regular-Shift.ttf \
+ DroidNaskh-Regular-SystemUI.ttf \
+ DroidSansDevanagari-Regular.ttf \
DroidSansHebrew-Regular.ttf \
DroidSansHebrew-Bold.ttf \
DroidSansThai.ttf \
diff --git a/data/fonts/system_fonts.xml b/data/fonts/system_fonts.xml
index d2fe546..95c4f70 100644
--- a/data/fonts/system_fonts.xml
+++ b/data/fonts/system_fonts.xml
@@ -36,6 +36,16 @@
<family>
<nameset>
+ <name>sans-serif-light</name>
+ </nameset>
+ <fileset>
+ <file>Roboto-Light.ttf</file>
+ <file>Roboto-LightItalic.ttf</file>
+ </fileset>
+ </family>
+
+ <family>
+ <nameset>
<name>serif</name>
<name>times</name>
<name>times new roman</name>
diff --git a/drm/java/android/drm/DrmManagerClient.java b/drm/java/android/drm/DrmManagerClient.java
index 482ab0a..4b51994 100755
--- a/drm/java/android/drm/DrmManagerClient.java
+++ b/drm/java/android/drm/DrmManagerClient.java
@@ -242,6 +242,7 @@
public DrmManagerClient(Context context) {
mContext = context;
mReleased = false;
+ createEventThreads();
// save the unique id
mUniqueId = _initialize();
@@ -283,21 +284,6 @@
_release(mUniqueId);
}
-
- private void createListeners() {
- if (mEventHandler == null && mInfoHandler == null) {
- mInfoThread = new HandlerThread("DrmManagerClient.InfoHandler");
- mInfoThread.start();
- mInfoHandler = new InfoHandler(mInfoThread.getLooper());
-
- mEventThread = new HandlerThread("DrmManagerClient.EventHandler");
- mEventThread.start();
- mEventHandler = new EventHandler(mEventThread.getLooper());
- _setListeners(mUniqueId, new WeakReference<DrmManagerClient>(this));
- }
- }
-
-
/**
* Registers an {@link DrmManagerClient.OnInfoListener} callback, which is invoked when the
* DRM framework sends status or warning information during registration or rights acquisition.
@@ -878,5 +864,21 @@
private native DrmConvertedStatus _closeConvertSession(int uniqueId, int convertId);
private native DrmSupportInfo[] _getAllSupportInfo(int uniqueId);
+
+ private void createEventThreads() {
+ if (mEventHandler == null && mInfoHandler == null) {
+ mInfoThread = new HandlerThread("DrmManagerClient.InfoHandler");
+ mInfoThread.start();
+ mInfoHandler = new InfoHandler(mInfoThread.getLooper());
+
+ mEventThread = new HandlerThread("DrmManagerClient.EventHandler");
+ mEventThread.start();
+ mEventHandler = new EventHandler(mEventThread.getLooper());
+ }
+ }
+
+ private void createListeners() {
+ _setListeners(mUniqueId, new WeakReference<DrmManagerClient>(this));
+ }
}
diff --git a/graphics/java/android/graphics/Canvas.java b/graphics/java/android/graphics/Canvas.java
index 7e92973..3949afd 100644
--- a/graphics/java/android/graphics/Canvas.java
+++ b/graphics/java/android/graphics/Canvas.java
@@ -1617,6 +1617,13 @@
*/
public static native void freeCaches();
+ /**
+ * Free up text layout caches
+ *
+ * @hide
+ */
+ public static native void freeTextLayoutCaches();
+
private static native int initRaster(int nativeBitmapOrZero);
private static native void native_setBitmap(int nativeCanvas, int bitmap);
private static native int native_saveLayer(int nativeCanvas, RectF bounds,
diff --git a/graphics/java/android/graphics/ImageFormat.java b/graphics/java/android/graphics/ImageFormat.java
index b3a8fd7..f6b747a 100644
--- a/graphics/java/android/graphics/ImageFormat.java
+++ b/graphics/java/android/graphics/ImageFormat.java
@@ -48,14 +48,26 @@
* </p>
*
* <pre> y_size = stride * height
- * c_size = ALIGN(stride/2, 16) * height/2
+ * c_stride = ALIGN(stride/2, 16)
+ * c_size = c_stride * height/2
* size = y_size + c_size * 2
* cr_offset = y_size
* cb_offset = y_size + c_size</pre>
*
- * This format is guaranteed to be supported for camera preview images since
+ * <p>This format is guaranteed to be supported for camera preview images since
* API level 12; for earlier API versions, check
* {@link android.hardware.Camera.Parameters#getSupportedPreviewFormats()}.
+ *
+ * <p>Note that for camera preview callback use (see
+ * {@link android.hardware.Camera#setPreviewCallback}), the
+ * <var>stride</var> value is the smallest possible; that is, it is equal
+ * to:
+ *
+ * <pre>stride = ALIGN(width, 16)</pre>
+ *
+ * @see android.hardware.Camera.Parameters#setPreviewCallback
+ * @see android.hardware.Camera.Parameters#setPreviewFormat
+ * @see android.hardware.Camera.Parameters#getSupportedPreviewFormats
* </p>
*/
public static final int YV12 = 0x32315659;
diff --git a/graphics/java/android/graphics/Paint.java b/graphics/java/android/graphics/Paint.java
index f68f9dc..f9b8a5f 100644
--- a/graphics/java/android/graphics/Paint.java
+++ b/graphics/java/android/graphics/Paint.java
@@ -1055,6 +1055,7 @@
* Get the text Locale.
*
* @return the paint's Locale used for drawing text, never null.
+ * @hide
*/
public Locale getTextLocale() {
return mLocale;
@@ -1085,6 +1086,7 @@
* job in certain ambiguous cases
*
* @param locale the paint's locale value for drawing text, must not be null.
+ * @hide
*/
public void setTextLocale(Locale locale) {
if (locale == null) {
diff --git a/graphics/java/android/graphics/drawable/Drawable.java b/graphics/java/android/graphics/drawable/Drawable.java
index 6193ca7..5f74c01 100644
--- a/graphics/java/android/graphics/drawable/Drawable.java
+++ b/graphics/java/android/graphics/drawable/Drawable.java
@@ -297,6 +297,7 @@
/**
* Implement this interface if you want to create an drawable that is RTL aware
+ * @hide
*/
public static interface Callback2 extends Callback {
/**
@@ -384,8 +385,7 @@
}
/**
- * Use the current {@link android.graphics.drawable.Drawable.Callback2} implementation to get
- * the resolved layout direction of this Drawable.
+ * Get the resolved layout direction of this Drawable.
*/
public int getResolvedLayoutDirectionSelf() {
final Callback callback = getCallback();
diff --git a/graphics/java/android/renderscript/Allocation.java b/graphics/java/android/renderscript/Allocation.java
index 6b1d66f..10ccb87 100644
--- a/graphics/java/android/renderscript/Allocation.java
+++ b/graphics/java/android/renderscript/Allocation.java
@@ -27,7 +27,7 @@
import android.util.Log;
import android.util.TypedValue;
-/** @deprecated renderscript is deprecated in J
+/**
* <p>
* Memory allocation class for renderscript. An allocation combines a
* {@link android.renderscript.Type} with the memory to provide storage for user data and objects.
@@ -93,7 +93,7 @@
int mCurrentCount;
- /** @deprecated renderscript is deprecated in J
+ /**
* The usage of the allocation. These signal to renderscript
* where to place the allocation in memory.
*
@@ -102,14 +102,14 @@
*/
public static final int USAGE_SCRIPT = 0x0001;
- /** @deprecated renderscript is deprecated in J
+ /**
* GRAPHICS_TEXTURE The allocation will be used as a texture
* source by one or more graphics programs.
*
*/
public static final int USAGE_GRAPHICS_TEXTURE = 0x0002;
- /** @deprecated renderscript is deprecated in J
+ /**
* GRAPHICS_VERTEX The allocation will be used as a graphics
* mesh.
*
@@ -117,21 +117,21 @@
public static final int USAGE_GRAPHICS_VERTEX = 0x0004;
- /** @deprecated renderscript is deprecated in J
+ /**
* GRAPHICS_CONSTANTS The allocation will be used as the source
* of shader constants by one or more programs.
*
*/
public static final int USAGE_GRAPHICS_CONSTANTS = 0x0008;
- /** @deprecated renderscript is deprecated in J
+ /**
* USAGE_GRAPHICS_RENDER_TARGET The allocation will be used as a
* target for offscreen rendering
*
*/
public static final int USAGE_GRAPHICS_RENDER_TARGET = 0x0010;
- /** @hide renderscript is deprecated in J
+ /**
* USAGE_IO_INPUT The allocation will be used as SurfaceTexture
* consumer. This usage will cause the allocation to be created
* read only.
@@ -139,7 +139,7 @@
*/
public static final int USAGE_IO_INPUT = 0x0020;
- /** @hide renderscript is deprecated in J
+ /**
* USAGE_IO_OUTPUT The allocation will be used as a
* SurfaceTexture producer. The dimensions and format of the
* SurfaceTexture will be forced to those of the allocation.
@@ -147,25 +147,25 @@
*/
public static final int USAGE_IO_OUTPUT = 0x0040;
- /** @deprecated renderscript is deprecated in J
+ /**
* Controls mipmap behavior when using the bitmap creation and
* update functions.
*/
public enum MipmapControl {
- /** @deprecated renderscript is deprecated in J
+ /**
* No mipmaps will be generated and the type generated from the
* incoming bitmap will not contain additional LODs.
*/
MIPMAP_NONE(0),
- /** @deprecated renderscript is deprecated in J
+ /**
* A Full mipmap chain will be created in script memory. The
* type of the allocation will contain a full mipmap chain. On
* upload to graphics the full chain will be transfered.
*/
MIPMAP_FULL(1),
- /** @deprecated renderscript is deprecated in J
+ /**
* The type of the allocation will be the same as MIPMAP_NONE.
* It will not contain mipmaps. On upload to graphics the
* graphics copy of the allocation data will contain a full
@@ -188,7 +188,7 @@
}
- /** @hide renderscript is deprecated in J
+ /**
* Get the element of the type of the Allocation.
*
* @return Element that describes the structure of data in the
@@ -199,7 +199,7 @@
return mType.getElement();
}
- /** @hide renderscript is deprecated in J
+ /**
* Get the usage flags of the Allocation.
*
* @return usage flags associated with the allocation. e.g.
@@ -210,7 +210,7 @@
return mUsage;
}
- /** @hide renderscript is deprecated in J
+ /**
* Get the size of the Allocation in bytes.
*
* @return size of the Allocation in bytes.
@@ -326,7 +326,7 @@
}
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Get the type of the Allocation.
*
* @return Type
@@ -336,7 +336,7 @@
return mType;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Propagate changes from one usage of the allocation to the
* remaining usages of the allocation.
*
@@ -355,7 +355,7 @@
mRS.nAllocationSyncAll(getIDSafe(), srcLocation);
}
- /** @hide renderscript is deprecated in J
+ /**
* Send a buffer to the output stream. The contents of the
* Allocation will be undefined after this operation.
*
@@ -369,7 +369,7 @@
mRS.nAllocationIoSend(getID(mRS));
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Delete once code is updated.
* @hide
*/
@@ -377,7 +377,7 @@
ioSend();
}
- /** @hide renderscript is deprecated in J
+ /**
* Receive the latest input into the Allocation.
*
*/
@@ -390,7 +390,7 @@
mRS.nAllocationIoReceive(getID(mRS));
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Copy an array of RS objects to the allocation.
*
* @param d Source array.
@@ -461,7 +461,7 @@
}
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Copy an allocation from an array. This variant is not type
* checked which allows an application to fill in structured
* data from an array.
@@ -472,7 +472,7 @@
mRS.validate();
copy1DRangeFromUnchecked(0, mCurrentCount, d);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Copy an allocation from an array. This variant is not type
* checked which allows an application to fill in structured
* data from an array.
@@ -483,7 +483,7 @@
mRS.validate();
copy1DRangeFromUnchecked(0, mCurrentCount, d);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Copy an allocation from an array. This variant is not type
* checked which allows an application to fill in structured
* data from an array.
@@ -494,7 +494,7 @@
mRS.validate();
copy1DRangeFromUnchecked(0, mCurrentCount, d);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Copy an allocation from an array. This variant is not type
* checked which allows an application to fill in structured
* data from an array.
@@ -506,7 +506,7 @@
copy1DRangeFromUnchecked(0, mCurrentCount, d);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Copy an allocation from an array. This variant is type
* checked and will generate exceptions if the Allocation type
* is not a 32 bit integer type.
@@ -518,7 +518,7 @@
copy1DRangeFrom(0, mCurrentCount, d);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Copy an allocation from an array. This variant is type
* checked and will generate exceptions if the Allocation type
* is not a 16 bit integer type.
@@ -530,7 +530,7 @@
copy1DRangeFrom(0, mCurrentCount, d);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Copy an allocation from an array. This variant is type
* checked and will generate exceptions if the Allocation type
* is not a 8 bit integer type.
@@ -542,7 +542,7 @@
copy1DRangeFrom(0, mCurrentCount, d);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Copy an allocation from an array. This variant is type
* checked and will generate exceptions if the Allocation type
* is not a 32 bit float type.
@@ -554,7 +554,7 @@
copy1DRangeFrom(0, mCurrentCount, d);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Copy an allocation from a bitmap. The height, width, and
* format of the bitmap must match the existing allocation.
*
@@ -567,7 +567,7 @@
mRS.nAllocationCopyFromBitmap(getID(mRS), b);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* This is only intended to be used by auto-generate code reflected from the
* renderscript script files.
*
@@ -587,7 +587,7 @@
copy1DRangeFromUnchecked(xoff, count, data);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* This is only intended to be used by auto-generate code reflected from the
* renderscript script files.
*
@@ -634,7 +634,7 @@
}
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Generate a mipmap chain. Requires the type of the allocation
* include mipmaps.
*
@@ -648,7 +648,7 @@
mRS.nAllocationGenerateMipmaps(getID(mRS));
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Copy part of an allocation from an array. This variant is
* not type checked which allows an application to fill in
* structured data from an array.
@@ -662,7 +662,7 @@
data1DChecks(off, count, d.length * 4, dataSize);
mRS.nAllocationData1D(getIDSafe(), off, mSelectedLOD, count, d, dataSize);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Copy part of an allocation from an array. This variant is
* not type checked which allows an application to fill in
* structured data from an array.
@@ -676,7 +676,7 @@
data1DChecks(off, count, d.length * 2, dataSize);
mRS.nAllocationData1D(getIDSafe(), off, mSelectedLOD, count, d, dataSize);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Copy part of an allocation from an array. This variant is
* not type checked which allows an application to fill in
* structured data from an array.
@@ -690,7 +690,7 @@
data1DChecks(off, count, d.length, dataSize);
mRS.nAllocationData1D(getIDSafe(), off, mSelectedLOD, count, d, dataSize);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Copy part of an allocation from an array. This variant is
* not type checked which allows an application to fill in
* structured data from an array.
@@ -705,7 +705,7 @@
mRS.nAllocationData1D(getIDSafe(), off, mSelectedLOD, count, d, dataSize);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Copy part of an allocation from an array. This variant is
* type checked and will generate exceptions if the Allocation
* type is not a 32 bit integer type.
@@ -719,7 +719,7 @@
copy1DRangeFromUnchecked(off, count, d);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Copy part of an allocation from an array. This variant is
* type checked and will generate exceptions if the Allocation
* type is not a 16 bit integer type.
@@ -733,7 +733,7 @@
copy1DRangeFromUnchecked(off, count, d);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Copy part of an allocation from an array. This variant is
* type checked and will generate exceptions if the Allocation
* type is not a 8 bit integer type.
@@ -747,7 +747,7 @@
copy1DRangeFromUnchecked(off, count, d);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Copy part of an allocation from an array. This variant is
* type checked and will generate exceptions if the Allocation
* type is not a 32 bit float type.
@@ -761,7 +761,7 @@
copy1DRangeFromUnchecked(off, count, d);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Copy part of an allocation from another allocation.
*
* @param off The offset of the first element to be copied.
@@ -794,7 +794,7 @@
}
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Copy a rectangular region from the array into the allocation.
* The incoming array is assumed to be tightly packed.
*
@@ -811,8 +811,6 @@
w, h, data, data.length);
}
- /** @deprecated renderscript is deprecated in J
- */
public void copy2DRangeFrom(int xoff, int yoff, int w, int h, short[] data) {
mRS.validate();
validate2DRange(xoff, yoff, w, h);
@@ -820,8 +818,6 @@
w, h, data, data.length * 2);
}
- /** @deprecated renderscript is deprecated in J
- */
public void copy2DRangeFrom(int xoff, int yoff, int w, int h, int[] data) {
mRS.validate();
validate2DRange(xoff, yoff, w, h);
@@ -829,8 +825,6 @@
w, h, data, data.length * 4);
}
- /** @deprecated renderscript is deprecated in J
- */
public void copy2DRangeFrom(int xoff, int yoff, int w, int h, float[] data) {
mRS.validate();
validate2DRange(xoff, yoff, w, h);
@@ -838,7 +832,7 @@
w, h, data, data.length * 4);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Copy a rectangular region into the allocation from another
* allocation.
*
@@ -860,7 +854,7 @@
data.mSelectedLOD, data.mSelectedFace.mID);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Copy a bitmap into an allocation. The height and width of
* the update will use the height and width of the incoming
* bitmap.
@@ -877,7 +871,7 @@
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Copy from the Allocation into a Bitmap. The bitmap must
* match the dimensions of the Allocation.
*
@@ -890,7 +884,7 @@
mRS.nAllocationCopyToBitmap(getID(mRS), b);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Copy from the Allocation into a byte array. The array must
* be at least as large as the Allocation. The allocation must
* be of an 8 bit elemental type.
@@ -903,7 +897,7 @@
mRS.nAllocationRead(getID(mRS), d);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Copy from the Allocation into a short array. The array must
* be at least as large as the Allocation. The allocation must
* be of an 16 bit elemental type.
@@ -916,7 +910,7 @@
mRS.nAllocationRead(getID(mRS), d);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Copy from the Allocation into a int array. The array must be
* at least as large as the Allocation. The allocation must be
* of an 32 bit elemental type.
@@ -929,7 +923,7 @@
mRS.nAllocationRead(getID(mRS), d);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Copy from the Allocation into a float array. The array must
* be at least as large as the Allocation. The allocation must
* be of an 32 bit float elemental type.
@@ -942,7 +936,7 @@
mRS.nAllocationRead(getID(mRS), d);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Resize a 1D allocation. The contents of the allocation are
* preserved. If new elements are allocated objects are created
* with null contents and the new region is otherwise undefined.
@@ -967,7 +961,7 @@
updateCacheInfo(mType);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Resize a 2D allocation. The contents of the allocation are
* preserved. If new elements are allocated objects are created
* with null contents and the new region is otherwise undefined.
@@ -1008,7 +1002,7 @@
mBitmapOptions.inScaled = false;
}
- /** @deprecated renderscript is deprecated in J
+ /**
*
* @param type renderscript type describing data layout
* @param mips specifies desired mipmap behaviour for the
@@ -1028,7 +1022,7 @@
return new Allocation(id, rs, type, usage);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Creates a renderscript allocation with the size specified by
* the type and no mipmaps generated by default
*
@@ -1043,7 +1037,7 @@
return createTyped(rs, type, MipmapControl.MIPMAP_NONE, usage);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Creates a renderscript allocation for use by the script with
* the size specified by the type and no mipmaps generated by
* default
@@ -1057,7 +1051,7 @@
return createTyped(rs, type, MipmapControl.MIPMAP_NONE, USAGE_SCRIPT);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Creates a renderscript allocation with a specified number of
* given elements
*
@@ -1083,7 +1077,7 @@
return new Allocation(id, rs, t, usage);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Creates a renderscript allocation with a specified number of
* given elements
*
@@ -1124,7 +1118,7 @@
return tb.create();
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Creates a renderscript allocation from a bitmap
*
* @param rs Context to which the allocation will belong.
@@ -1150,7 +1144,7 @@
return new Allocation(id, rs, t, usage);
}
- /** @deprecated renderscript is deprecated in J
+ /**
*
*
* @hide
@@ -1168,7 +1162,7 @@
return st;
}
- /** @hide renderscript is deprecated in J
+ /**
* For allocations used with io operations, returns the handle
* onto a raw buffer that is being managed by the screen
* compositor.
@@ -1180,7 +1174,7 @@
return new Surface(getSurfaceTexture());
}
- /** @hide renderscript is deprecated in J
+ /**
* Associate a surface for io output with this allocation
*
* @param sur Surface to associate with allocation
@@ -1194,7 +1188,7 @@
mRS.nAllocationSetSurface(getID(mRS), sur);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* @hide
*/
public void setSurfaceTexture(SurfaceTexture st) {
@@ -1207,7 +1201,7 @@
mRS.nAllocationSetSurface(getID(mRS), s);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Creates a non-mipmapped renderscript allocation to use as a
* graphics texture
*
@@ -1222,7 +1216,7 @@
USAGE_GRAPHICS_TEXTURE);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Creates a cubemap allocation from a bitmap containing the
* horizontal list of cube faces. Each individual face must be
* the same size and power of 2
@@ -1270,7 +1264,7 @@
return new Allocation(id, rs, t, usage);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Creates a non-mipmapped cubemap allocation for use as a
* graphics texture from a bitmap containing the horizontal list
* of cube faces. Each individual face must be the same size and
@@ -1289,7 +1283,7 @@
USAGE_GRAPHICS_TEXTURE);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Creates a cubemap allocation from 6 bitmaps containing
* the cube faces. All the faces must be the same size and
* power of 2
@@ -1356,7 +1350,7 @@
return cubemap;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Creates a non-mipmapped cubemap allocation for use as a
* graphics texture from 6 bitmaps containing
* the cube faces. All the faces must be the same size and
@@ -1385,7 +1379,7 @@
USAGE_GRAPHICS_TEXTURE);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Creates a renderscript allocation from the bitmap referenced
* by resource id
*
@@ -1413,7 +1407,7 @@
return alloc;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Creates a non-mipmapped renderscript allocation to use as a
* graphics texture from the bitmap referenced by resource id
*
@@ -1432,7 +1426,7 @@
USAGE_GRAPHICS_TEXTURE);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Creates a renderscript allocation containing string data
* encoded in UTF-8 format
*
diff --git a/graphics/java/android/renderscript/AllocationAdapter.java b/graphics/java/android/renderscript/AllocationAdapter.java
index 3b5993a..85d86e5 100644
--- a/graphics/java/android/renderscript/AllocationAdapter.java
+++ b/graphics/java/android/renderscript/AllocationAdapter.java
@@ -21,7 +21,7 @@
import android.graphics.BitmapFactory;
import android.util.TypedValue;
-/** @deprecated renderscript is deprecated in J
+/**
*
**/
public class AllocationAdapter extends Allocation {
@@ -129,7 +129,7 @@
mSelectedZ = 0;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Set the active LOD. The LOD must be within the range for the
* type being adapted. The base allocation must have mipmaps.
*
@@ -149,7 +149,7 @@
initLOD(lod);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Set the active Face. The base allocation must be of a type
* that includes faces.
*
@@ -169,7 +169,7 @@
mSelectedFace = cf;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Set the active Y. The y value must be within the range for
* the allocation being adapted. The base allocation must
* contain the Y dimension.
@@ -190,7 +190,7 @@
mSelectedY = y;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Set the active Z. The z value must be within the range for
* the allocation being adapted. The base allocation must
* contain the Z dimension.
@@ -211,8 +211,6 @@
mSelectedZ = z;
}
- /** @deprecated renderscript is deprecated in J
- */
static public AllocationAdapter create1D(RenderScript rs, Allocation a) {
rs.validate();
AllocationAdapter aa = new AllocationAdapter(0, rs, a);
@@ -224,8 +222,6 @@
return aa;
}
- /** @deprecated renderscript is deprecated in J
- */
static public AllocationAdapter create2D(RenderScript rs, Allocation a) {
android.util.Log.e("rs", "create2d " + a);
rs.validate();
@@ -239,7 +235,7 @@
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Override the Allocation resize. Resizing adapters is not
* allowed and will throw a RSInvalidStateException.
*
diff --git a/graphics/java/android/renderscript/BaseObj.java b/graphics/java/android/renderscript/BaseObj.java
index 0d74212..f464f9b 100644
--- a/graphics/java/android/renderscript/BaseObj.java
+++ b/graphics/java/android/renderscript/BaseObj.java
@@ -18,7 +18,7 @@
import android.util.Log;
-/** @deprecated renderscript is deprecated in J
+/**
* BaseObj is the base class for interfacing with native renderscript objects.
* It primarly contains code for tracking the native object ID and forcably
* disconecting the object from the native allocation for early cleanup.
@@ -39,7 +39,7 @@
mID = id;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Lookup the native object ID for this object. Primarily used by the
* generated reflected code.
*
@@ -73,7 +73,7 @@
private String mName;
RenderScript mRS;
- /** @deprecated renderscript is deprecated in J
+ /**
* setName assigns a name to an object. This object can later be looked up
* by this name. This name will also be retained if the object is written
* to an A3D file.
@@ -103,7 +103,7 @@
}
}
- /** @deprecated renderscript is deprecated in J
+ /**
* @return name of the renderscript object
*/
public String getName() {
@@ -124,7 +124,7 @@
super.finalize();
}
- /** @deprecated renderscript is deprecated in J
+ /**
* destroy disconnects the object from the native object effectively
* rendering this java object dead. The primary use is to force immediate
* cleanup of resources when it is believed the GC will not respond quickly
@@ -138,7 +138,7 @@
mRS.nObjDestroy(mID);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* If an object came from an a3d file, java fields need to be
* created with objects from the native layer
*/
@@ -147,7 +147,7 @@
mName = mRS.nGetName(getID(mRS));
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Calculates the hash code value for a BaseObj.
*
* @return int
@@ -157,7 +157,7 @@
return mID;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Compare the current BaseObj with another BaseObj for equality.
*
* @param obj The object to check equality with.
diff --git a/graphics/java/android/renderscript/Byte2.java b/graphics/java/android/renderscript/Byte2.java
index 163b8bd..7df5f2e 100644
--- a/graphics/java/android/renderscript/Byte2.java
+++ b/graphics/java/android/renderscript/Byte2.java
@@ -20,7 +20,7 @@
import android.util.Log;
-/** @deprecated renderscript is deprecated in J
+/**
* Class for exposing the native Renderscript byte2 type back to the Android system.
*
**/
diff --git a/graphics/java/android/renderscript/Byte3.java b/graphics/java/android/renderscript/Byte3.java
index eaa1d5f..02a01c1 100644
--- a/graphics/java/android/renderscript/Byte3.java
+++ b/graphics/java/android/renderscript/Byte3.java
@@ -20,7 +20,7 @@
import android.util.Log;
-/** @deprecated renderscript is deprecated in J
+/**
* Class for exposing the native Renderscript byte3 type back to the Android system.
*
**/
diff --git a/graphics/java/android/renderscript/Byte4.java b/graphics/java/android/renderscript/Byte4.java
index e162f9d..a55a696 100644
--- a/graphics/java/android/renderscript/Byte4.java
+++ b/graphics/java/android/renderscript/Byte4.java
@@ -20,7 +20,7 @@
import android.util.Log;
-/** @deprecated renderscript is deprecated in J
+/**
* Class for exposing the native Renderscript byte4 type back to the Android system.
*
**/
diff --git a/graphics/java/android/renderscript/Double2.java b/graphics/java/android/renderscript/Double2.java
index 0ef2f2b..9f4f328 100644
--- a/graphics/java/android/renderscript/Double2.java
+++ b/graphics/java/android/renderscript/Double2.java
@@ -20,7 +20,7 @@
import android.util.Log;
-/** @deprecated renderscript is deprecated in J
+/**
* Class for exposing the native Renderscript double2 type back
* to the Android system.
*
diff --git a/graphics/java/android/renderscript/Double3.java b/graphics/java/android/renderscript/Double3.java
index 09aba18..eb55142 100644
--- a/graphics/java/android/renderscript/Double3.java
+++ b/graphics/java/android/renderscript/Double3.java
@@ -20,7 +20,7 @@
import android.util.Log;
-/** @deprecated renderscript is deprecated in J
+/**
* Class for exposing the native Renderscript double3 type back
* to the Android system.
*
diff --git a/graphics/java/android/renderscript/Double4.java b/graphics/java/android/renderscript/Double4.java
index c5211be..4755a76 100644
--- a/graphics/java/android/renderscript/Double4.java
+++ b/graphics/java/android/renderscript/Double4.java
@@ -20,7 +20,7 @@
import android.util.Log;
-/** @deprecated renderscript is deprecated in J
+/**
* Class for exposing the native Renderscript double4 type back
* to the Android system.
*
diff --git a/graphics/java/android/renderscript/Element.java b/graphics/java/android/renderscript/Element.java
index babe57e..060f526 100644
--- a/graphics/java/android/renderscript/Element.java
+++ b/graphics/java/android/renderscript/Element.java
@@ -19,7 +19,7 @@
import java.lang.reflect.Field;
import android.util.Log;
-/** @deprecated renderscript is deprecated in J
+/**
* <p>The most basic data type. An element represents one cell of a memory allocation.
* Element is the basic data type of Renderscript. An element can be of two forms: Basic elements or Complex forms.
* Examples of basic elements are:</p>
@@ -84,12 +84,12 @@
}
}
- /** @hide renderscript is deprecated in J
+ /**
* @return element size in bytes
*/
public int getBytesSize() {return mSize;}
- /** @hide renderscript is deprecated in J
+ /**
* Returns the number of vector components. 2 for float2, 4 for
* float4, etc.
* @return element vector size
@@ -97,7 +97,7 @@
public int getVectorSize() {return mVectorSize;}
- /** @deprecated renderscript is deprecated in J
+ /**
* DataType represents the basic type information for a basic element. The
* naming convention follows. For numeric types it is FLOAT,
* SIGNED, or UNSIGNED followed by the _BITS where BITS is the
@@ -114,8 +114,6 @@
* RS_* objects. 32 bit opaque handles.
*/
public enum DataType {
- /** @hide
- */
NONE (0, 0),
//FLOAT_16 (1, 2),
FLOAT_32 (2, 4),
@@ -149,8 +147,6 @@
RS_PROGRAM_VERTEX (1007, 4),
RS_PROGRAM_RASTER (1008, 4),
RS_PROGRAM_STORE (1009, 4),
- /** @hide
- */
RS_FONT (1010, 4);
int mID;
@@ -161,7 +157,7 @@
}
}
- /** @deprecated renderscript is deprecated in J
+ /**
* The special interpretation of the data if required. This is primarly
* useful for graphical data. USER indicates no special interpretation is
* expected. PIXEL is used in conjunction with the standard data types for
@@ -183,7 +179,7 @@
}
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Return if a element is too complex for use as a data source for a Mesh or
* a Program.
*
@@ -201,7 +197,7 @@
return false;
}
- /** @hide renderscript is deprecated in J
+ /**
* Elements could be simple, such as an int or a float, or a
* structure with multiple sub elements, such as a collection of
* floats, float2, float4. This function returns zero for simple
@@ -215,7 +211,7 @@
return mVisibleElementMap.length;
}
- /** @hide renderscript is deprecated in J
+ /**
* For complex elements, this function will return the
* sub-element at index
* @param index index of the sub-element to return
@@ -231,7 +227,7 @@
return mElements[mVisibleElementMap[index]];
}
- /** @hide renderscript is deprecated in J
+ /**
* For complex elements, this function will return the
* sub-element name at index
* @param index index of the sub-element
@@ -247,7 +243,7 @@
return mElementNames[mVisibleElementMap[index]];
}
- /** @hide renderscript is deprecated in J
+ /**
* For complex elements, some sub-elements could be statically
* sized arrays. This function will return the array size for
* sub-element at index
@@ -264,7 +260,7 @@
return mArraySizes[mVisibleElementMap[index]];
}
- /** @hide renderscript is deprecated in J
+ /**
* This function specifies the location of a sub-element within
* the element
* @param index index of the sub-element
@@ -280,21 +276,21 @@
return mOffsetInBytes[mVisibleElementMap[index]];
}
- /** @hide renderscript is deprecated in J
+ /**
* @return element data type
*/
public DataType getDataType() {
return mType;
}
- /** @hide renderscript is deprecated in J
+ /**
* @return element data kind
*/
public DataKind getDataKind() {
return mKind;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Utility function for returning an Element containing a single Boolean.
*
* @param rs Context to which the element will belong.
@@ -308,7 +304,7 @@
return rs.mElement_BOOLEAN;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Utility function for returning an Element containing a single UNSIGNED_8.
*
* @param rs Context to which the element will belong.
@@ -322,7 +318,7 @@
return rs.mElement_U8;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Utility function for returning an Element containing a single SIGNED_8.
*
* @param rs Context to which the element will belong.
@@ -336,8 +332,6 @@
return rs.mElement_I8;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element U16(RenderScript rs) {
if(rs.mElement_U16 == null) {
rs.mElement_U16 = createUser(rs, DataType.UNSIGNED_16);
@@ -345,8 +339,6 @@
return rs.mElement_U16;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element I16(RenderScript rs) {
if(rs.mElement_I16 == null) {
rs.mElement_I16 = createUser(rs, DataType.SIGNED_16);
@@ -354,8 +346,6 @@
return rs.mElement_I16;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element U32(RenderScript rs) {
if(rs.mElement_U32 == null) {
rs.mElement_U32 = createUser(rs, DataType.UNSIGNED_32);
@@ -363,8 +353,6 @@
return rs.mElement_U32;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element I32(RenderScript rs) {
if(rs.mElement_I32 == null) {
rs.mElement_I32 = createUser(rs, DataType.SIGNED_32);
@@ -372,8 +360,6 @@
return rs.mElement_I32;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element U64(RenderScript rs) {
if(rs.mElement_U64 == null) {
rs.mElement_U64 = createUser(rs, DataType.UNSIGNED_64);
@@ -381,8 +367,6 @@
return rs.mElement_U64;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element I64(RenderScript rs) {
if(rs.mElement_I64 == null) {
rs.mElement_I64 = createUser(rs, DataType.SIGNED_64);
@@ -390,8 +374,6 @@
return rs.mElement_I64;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element F32(RenderScript rs) {
if(rs.mElement_F32 == null) {
rs.mElement_F32 = createUser(rs, DataType.FLOAT_32);
@@ -399,8 +381,6 @@
return rs.mElement_F32;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element F64(RenderScript rs) {
if(rs.mElement_F64 == null) {
rs.mElement_F64 = createUser(rs, DataType.FLOAT_64);
@@ -408,8 +388,6 @@
return rs.mElement_F64;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element ELEMENT(RenderScript rs) {
if(rs.mElement_ELEMENT == null) {
rs.mElement_ELEMENT = createUser(rs, DataType.RS_ELEMENT);
@@ -417,8 +395,6 @@
return rs.mElement_ELEMENT;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element TYPE(RenderScript rs) {
if(rs.mElement_TYPE == null) {
rs.mElement_TYPE = createUser(rs, DataType.RS_TYPE);
@@ -426,8 +402,6 @@
return rs.mElement_TYPE;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element ALLOCATION(RenderScript rs) {
if(rs.mElement_ALLOCATION == null) {
rs.mElement_ALLOCATION = createUser(rs, DataType.RS_ALLOCATION);
@@ -435,8 +409,6 @@
return rs.mElement_ALLOCATION;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element SAMPLER(RenderScript rs) {
if(rs.mElement_SAMPLER == null) {
rs.mElement_SAMPLER = createUser(rs, DataType.RS_SAMPLER);
@@ -444,8 +416,6 @@
return rs.mElement_SAMPLER;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element SCRIPT(RenderScript rs) {
if(rs.mElement_SCRIPT == null) {
rs.mElement_SCRIPT = createUser(rs, DataType.RS_SCRIPT);
@@ -453,8 +423,6 @@
return rs.mElement_SCRIPT;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element MESH(RenderScript rs) {
if(rs.mElement_MESH == null) {
rs.mElement_MESH = createUser(rs, DataType.RS_MESH);
@@ -462,8 +430,6 @@
return rs.mElement_MESH;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element PROGRAM_FRAGMENT(RenderScript rs) {
if(rs.mElement_PROGRAM_FRAGMENT == null) {
rs.mElement_PROGRAM_FRAGMENT = createUser(rs, DataType.RS_PROGRAM_FRAGMENT);
@@ -471,8 +437,6 @@
return rs.mElement_PROGRAM_FRAGMENT;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element PROGRAM_VERTEX(RenderScript rs) {
if(rs.mElement_PROGRAM_VERTEX == null) {
rs.mElement_PROGRAM_VERTEX = createUser(rs, DataType.RS_PROGRAM_VERTEX);
@@ -480,8 +444,6 @@
return rs.mElement_PROGRAM_VERTEX;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element PROGRAM_RASTER(RenderScript rs) {
if(rs.mElement_PROGRAM_RASTER == null) {
rs.mElement_PROGRAM_RASTER = createUser(rs, DataType.RS_PROGRAM_RASTER);
@@ -489,8 +451,6 @@
return rs.mElement_PROGRAM_RASTER;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element PROGRAM_STORE(RenderScript rs) {
if(rs.mElement_PROGRAM_STORE == null) {
rs.mElement_PROGRAM_STORE = createUser(rs, DataType.RS_PROGRAM_STORE);
@@ -498,8 +458,6 @@
return rs.mElement_PROGRAM_STORE;
}
- /** @hide
- */
public static Element FONT(RenderScript rs) {
if(rs.mElement_FONT == null) {
rs.mElement_FONT = createUser(rs, DataType.RS_FONT);
@@ -507,8 +465,7 @@
return rs.mElement_FONT;
}
- /** @deprecated renderscript is deprecated in J
- */
+
public static Element A_8(RenderScript rs) {
if(rs.mElement_A_8 == null) {
rs.mElement_A_8 = createPixel(rs, DataType.UNSIGNED_8, DataKind.PIXEL_A);
@@ -516,8 +473,6 @@
return rs.mElement_A_8;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element RGB_565(RenderScript rs) {
if(rs.mElement_RGB_565 == null) {
rs.mElement_RGB_565 = createPixel(rs, DataType.UNSIGNED_5_6_5, DataKind.PIXEL_RGB);
@@ -525,8 +480,6 @@
return rs.mElement_RGB_565;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element RGB_888(RenderScript rs) {
if(rs.mElement_RGB_888 == null) {
rs.mElement_RGB_888 = createPixel(rs, DataType.UNSIGNED_8, DataKind.PIXEL_RGB);
@@ -534,8 +487,6 @@
return rs.mElement_RGB_888;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element RGBA_5551(RenderScript rs) {
if(rs.mElement_RGBA_5551 == null) {
rs.mElement_RGBA_5551 = createPixel(rs, DataType.UNSIGNED_5_5_5_1, DataKind.PIXEL_RGBA);
@@ -543,8 +494,6 @@
return rs.mElement_RGBA_5551;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element RGBA_4444(RenderScript rs) {
if(rs.mElement_RGBA_4444 == null) {
rs.mElement_RGBA_4444 = createPixel(rs, DataType.UNSIGNED_4_4_4_4, DataKind.PIXEL_RGBA);
@@ -552,8 +501,6 @@
return rs.mElement_RGBA_4444;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element RGBA_8888(RenderScript rs) {
if(rs.mElement_RGBA_8888 == null) {
rs.mElement_RGBA_8888 = createPixel(rs, DataType.UNSIGNED_8, DataKind.PIXEL_RGBA);
@@ -561,8 +508,6 @@
return rs.mElement_RGBA_8888;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element F32_2(RenderScript rs) {
if(rs.mElement_FLOAT_2 == null) {
rs.mElement_FLOAT_2 = createVector(rs, DataType.FLOAT_32, 2);
@@ -570,8 +515,6 @@
return rs.mElement_FLOAT_2;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element F32_3(RenderScript rs) {
if(rs.mElement_FLOAT_3 == null) {
rs.mElement_FLOAT_3 = createVector(rs, DataType.FLOAT_32, 3);
@@ -579,8 +522,6 @@
return rs.mElement_FLOAT_3;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element F32_4(RenderScript rs) {
if(rs.mElement_FLOAT_4 == null) {
rs.mElement_FLOAT_4 = createVector(rs, DataType.FLOAT_32, 4);
@@ -588,8 +529,6 @@
return rs.mElement_FLOAT_4;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element F64_2(RenderScript rs) {
if(rs.mElement_DOUBLE_2 == null) {
rs.mElement_DOUBLE_2 = createVector(rs, DataType.FLOAT_64, 2);
@@ -597,8 +536,6 @@
return rs.mElement_DOUBLE_2;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element F64_3(RenderScript rs) {
if(rs.mElement_DOUBLE_3 == null) {
rs.mElement_DOUBLE_3 = createVector(rs, DataType.FLOAT_64, 3);
@@ -606,8 +543,6 @@
return rs.mElement_DOUBLE_3;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element F64_4(RenderScript rs) {
if(rs.mElement_DOUBLE_4 == null) {
rs.mElement_DOUBLE_4 = createVector(rs, DataType.FLOAT_64, 4);
@@ -615,8 +550,6 @@
return rs.mElement_DOUBLE_4;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element U8_2(RenderScript rs) {
if(rs.mElement_UCHAR_2 == null) {
rs.mElement_UCHAR_2 = createVector(rs, DataType.UNSIGNED_8, 2);
@@ -624,8 +557,6 @@
return rs.mElement_UCHAR_2;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element U8_3(RenderScript rs) {
if(rs.mElement_UCHAR_3 == null) {
rs.mElement_UCHAR_3 = createVector(rs, DataType.UNSIGNED_8, 3);
@@ -633,8 +564,6 @@
return rs.mElement_UCHAR_3;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element U8_4(RenderScript rs) {
if(rs.mElement_UCHAR_4 == null) {
rs.mElement_UCHAR_4 = createVector(rs, DataType.UNSIGNED_8, 4);
@@ -642,8 +571,6 @@
return rs.mElement_UCHAR_4;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element I8_2(RenderScript rs) {
if(rs.mElement_CHAR_2 == null) {
rs.mElement_CHAR_2 = createVector(rs, DataType.SIGNED_8, 2);
@@ -651,8 +578,6 @@
return rs.mElement_CHAR_2;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element I8_3(RenderScript rs) {
if(rs.mElement_CHAR_3 == null) {
rs.mElement_CHAR_3 = createVector(rs, DataType.SIGNED_8, 3);
@@ -660,8 +585,6 @@
return rs.mElement_CHAR_3;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element I8_4(RenderScript rs) {
if(rs.mElement_CHAR_4 == null) {
rs.mElement_CHAR_4 = createVector(rs, DataType.SIGNED_8, 4);
@@ -669,8 +592,6 @@
return rs.mElement_CHAR_4;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element U16_2(RenderScript rs) {
if(rs.mElement_USHORT_2 == null) {
rs.mElement_USHORT_2 = createVector(rs, DataType.UNSIGNED_16, 2);
@@ -678,8 +599,6 @@
return rs.mElement_USHORT_2;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element U16_3(RenderScript rs) {
if(rs.mElement_USHORT_3 == null) {
rs.mElement_USHORT_3 = createVector(rs, DataType.UNSIGNED_16, 3);
@@ -687,8 +606,6 @@
return rs.mElement_USHORT_3;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element U16_4(RenderScript rs) {
if(rs.mElement_USHORT_4 == null) {
rs.mElement_USHORT_4 = createVector(rs, DataType.UNSIGNED_16, 4);
@@ -696,8 +613,6 @@
return rs.mElement_USHORT_4;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element I16_2(RenderScript rs) {
if(rs.mElement_SHORT_2 == null) {
rs.mElement_SHORT_2 = createVector(rs, DataType.SIGNED_16, 2);
@@ -705,8 +620,6 @@
return rs.mElement_SHORT_2;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element I16_3(RenderScript rs) {
if(rs.mElement_SHORT_3 == null) {
rs.mElement_SHORT_3 = createVector(rs, DataType.SIGNED_16, 3);
@@ -714,8 +627,6 @@
return rs.mElement_SHORT_3;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element I16_4(RenderScript rs) {
if(rs.mElement_SHORT_4 == null) {
rs.mElement_SHORT_4 = createVector(rs, DataType.SIGNED_16, 4);
@@ -723,8 +634,6 @@
return rs.mElement_SHORT_4;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element U32_2(RenderScript rs) {
if(rs.mElement_UINT_2 == null) {
rs.mElement_UINT_2 = createVector(rs, DataType.UNSIGNED_32, 2);
@@ -732,8 +641,6 @@
return rs.mElement_UINT_2;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element U32_3(RenderScript rs) {
if(rs.mElement_UINT_3 == null) {
rs.mElement_UINT_3 = createVector(rs, DataType.UNSIGNED_32, 3);
@@ -741,8 +648,6 @@
return rs.mElement_UINT_3;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element U32_4(RenderScript rs) {
if(rs.mElement_UINT_4 == null) {
rs.mElement_UINT_4 = createVector(rs, DataType.UNSIGNED_32, 4);
@@ -750,8 +655,6 @@
return rs.mElement_UINT_4;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element I32_2(RenderScript rs) {
if(rs.mElement_INT_2 == null) {
rs.mElement_INT_2 = createVector(rs, DataType.SIGNED_32, 2);
@@ -759,8 +662,6 @@
return rs.mElement_INT_2;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element I32_3(RenderScript rs) {
if(rs.mElement_INT_3 == null) {
rs.mElement_INT_3 = createVector(rs, DataType.SIGNED_32, 3);
@@ -768,8 +669,6 @@
return rs.mElement_INT_3;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element I32_4(RenderScript rs) {
if(rs.mElement_INT_4 == null) {
rs.mElement_INT_4 = createVector(rs, DataType.SIGNED_32, 4);
@@ -777,8 +676,6 @@
return rs.mElement_INT_4;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element U64_2(RenderScript rs) {
if(rs.mElement_ULONG_2 == null) {
rs.mElement_ULONG_2 = createVector(rs, DataType.UNSIGNED_64, 2);
@@ -786,8 +683,6 @@
return rs.mElement_ULONG_2;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element U64_3(RenderScript rs) {
if(rs.mElement_ULONG_3 == null) {
rs.mElement_ULONG_3 = createVector(rs, DataType.UNSIGNED_64, 3);
@@ -795,8 +690,6 @@
return rs.mElement_ULONG_3;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element U64_4(RenderScript rs) {
if(rs.mElement_ULONG_4 == null) {
rs.mElement_ULONG_4 = createVector(rs, DataType.UNSIGNED_64, 4);
@@ -804,8 +697,6 @@
return rs.mElement_ULONG_4;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element I64_2(RenderScript rs) {
if(rs.mElement_LONG_2 == null) {
rs.mElement_LONG_2 = createVector(rs, DataType.SIGNED_64, 2);
@@ -813,8 +704,6 @@
return rs.mElement_LONG_2;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element I64_3(RenderScript rs) {
if(rs.mElement_LONG_3 == null) {
rs.mElement_LONG_3 = createVector(rs, DataType.SIGNED_64, 3);
@@ -822,8 +711,6 @@
return rs.mElement_LONG_3;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element I64_4(RenderScript rs) {
if(rs.mElement_LONG_4 == null) {
rs.mElement_LONG_4 = createVector(rs, DataType.SIGNED_64, 4);
@@ -831,22 +718,19 @@
return rs.mElement_LONG_4;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element MATRIX_4X4(RenderScript rs) {
if(rs.mElement_MATRIX_4X4 == null) {
rs.mElement_MATRIX_4X4 = createUser(rs, DataType.MATRIX_4X4);
}
return rs.mElement_MATRIX_4X4;
}
- /** @deprecated renderscript is deprecated in J
- */
+
+ /** @deprecated use MATRIX_4X4
+ */
public static Element MATRIX4X4(RenderScript rs) {
return MATRIX_4X4(rs);
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element MATRIX_3X3(RenderScript rs) {
if(rs.mElement_MATRIX_3X3 == null) {
rs.mElement_MATRIX_3X3 = createUser(rs, DataType.MATRIX_3X3);
@@ -854,8 +738,6 @@
return rs.mElement_MATRIX_3X3;
}
- /** @deprecated renderscript is deprecated in J
- */
public static Element MATRIX_2X2(RenderScript rs) {
if(rs.mElement_MATRIX_2X2 == null) {
rs.mElement_MATRIX_2X2 = createUser(rs, DataType.MATRIX_2X2);
@@ -945,7 +827,7 @@
updateVisibleSubElements();
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Create a custom Element of the specified DataType. The DataKind will be
* set to USER and the vector size to 1 indicating non-vector.
*
@@ -961,7 +843,7 @@
return new Element(id, rs, dt, dk, norm, vecSize);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Create a custom vector element of the specified DataType and vector size.
* DataKind will be set to USER. Only primitive types (FLOAT_32, FLOAT_64,
* SIGNED_8, SIGNED_16, SIGNED_32, SIGNED_64, UNSIGNED_8, UNSIGNED_16,
@@ -1005,7 +887,7 @@
}
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Create a new pixel Element type. A matching DataType and DataKind must
* be provided. The DataType and DataKind must contain the same number of
* components. Vector size will be set to 1.
@@ -1068,7 +950,7 @@
return new Element(id, rs, dt, dk, norm, size);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Check if the current Element is compatible with another Element.
* Primitive Elements are compatible if they share the same underlying
* size and type (i.e. U8 is compatible with A_8). User-defined Elements
@@ -1095,7 +977,7 @@
(mVectorSize == e.mVectorSize));
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Builder class for producing complex elements with matching field and name
* pairs. The builder starts empty. The order in which elements are added
* is retained for the layout in memory.
@@ -1109,7 +991,7 @@
int mCount;
int mSkipPadding;
- /** @deprecated renderscript is deprecated in J
+ /**
* Create a builder object.
*
* @param rs
@@ -1122,7 +1004,7 @@
mArraySizes = new int[8];
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Add an array of elements to this element.
*
* @param element
@@ -1166,7 +1048,7 @@
return this;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Add a single element to this Element.
*
* @param element
@@ -1176,7 +1058,7 @@
return add(element, name, 1);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Create the element from this builder.
*
*
diff --git a/graphics/java/android/renderscript/FieldPacker.java b/graphics/java/android/renderscript/FieldPacker.java
index 9d36e33..a215a57 100644
--- a/graphics/java/android/renderscript/FieldPacker.java
+++ b/graphics/java/android/renderscript/FieldPacker.java
@@ -17,7 +17,7 @@
package android.renderscript;
-/** @deprecated renderscript is deprecated in J
+/**
* Utility class for packing arguments and structures from Android system objects to
* Renderscript objects.
*
diff --git a/graphics/java/android/renderscript/FileA3D.java b/graphics/java/android/renderscript/FileA3D.java
index 1158061..42b508b 100644
--- a/graphics/java/android/renderscript/FileA3D.java
+++ b/graphics/java/android/renderscript/FileA3D.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008 The Android Open Source Project
+ * Copyright (C) 2008-2012 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.
@@ -27,7 +27,8 @@
import android.util.Log;
import android.util.TypedValue;
-/** @deprecated renderscript is deprecated in J
+/**
+ * @deprecated in API 16
* FileA3D allows users to load Renderscript objects from files
* or resources stored on disk. It could be used to load items
* such as 3D geometry data converted to a Renderscript format from
@@ -40,17 +41,20 @@
**/
public class FileA3D extends BaseObj {
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Specifies what renderscript object type is contained within
* the FileA3D IndexEntry
**/
public enum EntryType {
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Unknown or or invalid object, nothing will be loaded
**/
UNKNOWN (0),
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Renderscript Mesh object
**/
MESH (1);
@@ -65,7 +69,8 @@
}
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* IndexEntry contains information about one of the Renderscript
* objects inside the file's index. It could be used to query the
* object's type and also name and load the object itself if
@@ -79,7 +84,8 @@
EntryType mEntryType;
BaseObj mLoadedObj;
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Returns the name of a renderscript object the index entry
* describes
*
@@ -91,7 +97,8 @@
return mName;
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Returns the type of a renderscript object the index entry
* describes
* @return type of a renderscript object the index entry
@@ -101,7 +108,8 @@
return mEntryType;
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Used to load the object described by the index entry
* @return base renderscript object described by the entry
*/
@@ -111,7 +119,8 @@
return obj;
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Used to load the mesh described by the index entry, object
* described by the index entry must be a renderscript mesh
*
@@ -181,7 +190,8 @@
}
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Returns the number of objects stored inside the a3d file
*
* @return the number of objects stored inside the a3d file
@@ -193,7 +203,8 @@
return mFileEntries.length;
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Returns an index entry from the list of all objects inside
* FileA3D
*
@@ -208,7 +219,8 @@
return mFileEntries[index];
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Creates a FileA3D object from an asset stored on disk
*
* @param rs Context to which the object will belong.
@@ -229,7 +241,8 @@
return fa3d;
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Creates a FileA3D object from a file stored on disk
*
* @param rs Context to which the object will belong.
@@ -248,7 +261,8 @@
return fa3d;
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Creates a FileA3D object from a file stored on disk
*
* @param rs Context to which the object will belong.
@@ -260,7 +274,8 @@
return createFromFile(rs, path.getAbsolutePath());
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Creates a FileA3D object from an application resource
*
* @param rs Context to which the object will belong.
diff --git a/graphics/java/android/renderscript/Float2.java b/graphics/java/android/renderscript/Float2.java
index a89a5df..1d4ce36 100644
--- a/graphics/java/android/renderscript/Float2.java
+++ b/graphics/java/android/renderscript/Float2.java
@@ -20,7 +20,7 @@
import android.util.Log;
-/** @deprecated renderscript is deprecated in J
+/**
* Class for exposing the native Renderscript float2 type back to the Android system.
*
**/
diff --git a/graphics/java/android/renderscript/Float3.java b/graphics/java/android/renderscript/Float3.java
index 909a897..ffd1135 100644
--- a/graphics/java/android/renderscript/Float3.java
+++ b/graphics/java/android/renderscript/Float3.java
@@ -20,7 +20,7 @@
import android.util.Log;
-/** @deprecated renderscript is deprecated in J
+/**
* Class for exposing the native Renderscript float2 type back to the Android system.
*
**/
diff --git a/graphics/java/android/renderscript/Float4.java b/graphics/java/android/renderscript/Float4.java
index 3be6dbc..c7cc3ae 100644
--- a/graphics/java/android/renderscript/Float4.java
+++ b/graphics/java/android/renderscript/Float4.java
@@ -20,7 +20,7 @@
import android.util.Log;
-/** @deprecated renderscript is deprecated in J
+/**
* Class for exposing the native Renderscript float2 type back to the Android system.
*
**/
diff --git a/graphics/java/android/renderscript/Font.java b/graphics/java/android/renderscript/Font.java
index cd1010c..8a49abb 100644
--- a/graphics/java/android/renderscript/Font.java
+++ b/graphics/java/android/renderscript/Font.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008 The Android Open Source Project
+ * Copyright (C) 2008-2012 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.
@@ -29,8 +29,9 @@
import android.util.Log;
import android.util.TypedValue;
-/** @deprecated renderscript is deprecated in J
- * <p>This class gives users a simple way to draw hardware accelerated text.
+/**
+ * @deprecated in API 16
+ * <p>This class gives users a simple way to draw hardware accelerated text.
* Internally, the glyphs are rendered using the Freetype library and an internal cache of
* rendered glyph bitmaps is maintained. Each font object represents a combination of a typeface,
* and point size. You can create multiple font objects to represent styles such as bold or italic text,
@@ -42,7 +43,7 @@
* render large batches of text in sequence. It is also more efficient to render multiple
* characters at once instead of one by one to improve draw call batching.</p>
* <p>Font color and transparency are not part of the font object and you can freely modify
- * them in the script to suit the user's rendering needs. Font colors work as a state machine.
+ * them in the script to suit the user's rendering needs. Font colors work as a state machine.
* Every new call to draw text uses the last color set in the script.</p>
**/
public class Font extends BaseObj {
@@ -71,20 +72,25 @@
private static Map<String, FontFamily> sFontFamilyMap;
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
*/
public enum Style {
- /** @deprecated renderscript is deprecated in J
- */
+ /**
+ * @deprecated in API 16
+ */
NORMAL,
- /** @deprecated renderscript is deprecated in J
- */
+ /**
+ * @deprecated in API 16
+ */
BOLD,
- /** @deprecated renderscript is deprecated in J
- */
+ /**
+ * @deprecated in API 16
+ */
ITALIC,
- /** @deprecated renderscript is deprecated in J
- */
+ /**
+ * @deprecated in API 16
+ */
BOLD_ITALIC;
}
@@ -148,7 +154,8 @@
super(id, rs);
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Takes a specific file name as an argument
*/
static public Font createFromFile(RenderScript rs, Resources res, String path, float pointSize) {
@@ -164,13 +171,15 @@
return rsFont;
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
*/
static public Font createFromFile(RenderScript rs, Resources res, File path, float pointSize) {
return createFromFile(rs, res, path.getAbsolutePath(), pointSize);
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
*/
static public Font createFromAsset(RenderScript rs, Resources res, String path, float pointSize) {
rs.validate();
@@ -185,7 +194,8 @@
return rsFont;
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
*/
static public Font createFromResource(RenderScript rs, Resources res, int id, float pointSize) {
String name = "R." + Integer.toString(id);
@@ -215,7 +225,8 @@
return rsFont;
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Accepts one of the following family names as an argument
* and will attempt to produce the best match with a system font:
*
diff --git a/graphics/java/android/renderscript/Int2.java b/graphics/java/android/renderscript/Int2.java
index 4e2d344..434af21 100644
--- a/graphics/java/android/renderscript/Int2.java
+++ b/graphics/java/android/renderscript/Int2.java
@@ -20,7 +20,7 @@
import android.util.Log;
-/** @deprecated renderscript is deprecated in J
+/**
* Class for exposing the native Renderscript int2 type back to the Android system.
*
**/
diff --git a/graphics/java/android/renderscript/Int3.java b/graphics/java/android/renderscript/Int3.java
index 1ffc129..333ccf8 100644
--- a/graphics/java/android/renderscript/Int3.java
+++ b/graphics/java/android/renderscript/Int3.java
@@ -20,7 +20,7 @@
import android.util.Log;
-/** @deprecated renderscript is deprecated in J
+/**
* Class for exposing the native Renderscript int3 type back to the Android system.
*
**/
diff --git a/graphics/java/android/renderscript/Int4.java b/graphics/java/android/renderscript/Int4.java
index 555d431..8734c95 100644
--- a/graphics/java/android/renderscript/Int4.java
+++ b/graphics/java/android/renderscript/Int4.java
@@ -20,7 +20,7 @@
import android.util.Log;
-/** @deprecated renderscript is deprecated in J
+/**
* Class for exposing the native Renderscript int4 type back to the Android system.
*
**/
diff --git a/graphics/java/android/renderscript/Long2.java b/graphics/java/android/renderscript/Long2.java
index aad6bd6..95ea18c 100644
--- a/graphics/java/android/renderscript/Long2.java
+++ b/graphics/java/android/renderscript/Long2.java
@@ -20,7 +20,7 @@
import android.util.Log;
-/** @deprecated renderscript is deprecated in J
+/**
* Class for exposing the native Renderscript long2 type back to the Android system.
**/
public class Long2 {
diff --git a/graphics/java/android/renderscript/Long3.java b/graphics/java/android/renderscript/Long3.java
index 9c03d5c..96ee885 100644
--- a/graphics/java/android/renderscript/Long3.java
+++ b/graphics/java/android/renderscript/Long3.java
@@ -20,7 +20,7 @@
import android.util.Log;
-/** @deprecated renderscript is deprecated in J
+/**
* Class for exposing the native Renderscript long3 type back to the Android system.
**/
public class Long3 {
diff --git a/graphics/java/android/renderscript/Long4.java b/graphics/java/android/renderscript/Long4.java
index 6611cdf..50e664c 100644
--- a/graphics/java/android/renderscript/Long4.java
+++ b/graphics/java/android/renderscript/Long4.java
@@ -20,7 +20,7 @@
import android.util.Log;
-/** @deprecated renderscript is deprecated in J
+/**
* Class for exposing the native Renderscript long4 type back to the Android system.
**/
public class Long4 {
diff --git a/graphics/java/android/renderscript/Matrix2f.java b/graphics/java/android/renderscript/Matrix2f.java
index 38b5316..acc5bd8 100644
--- a/graphics/java/android/renderscript/Matrix2f.java
+++ b/graphics/java/android/renderscript/Matrix2f.java
@@ -20,13 +20,13 @@
import android.util.Log;
-/** @deprecated renderscript is deprecated in J
+/**
* Class for exposing the native Renderscript rs_matrix2x2 type back to the Android system.
*
**/
public class Matrix2f {
- /** @deprecated renderscript is deprecated in J
+ /**
* Creates a new identity 2x2 matrix
*/
public Matrix2f() {
@@ -34,7 +34,7 @@
loadIdentity();
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Creates a new matrix and sets its values from the given
* parameter
*
@@ -46,7 +46,7 @@
System.arraycopy(dataArray, 0, mMat, 0, mMat.length);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Return a reference to the internal array representing matrix
* values. Modifying this array will also change the matrix
*
@@ -56,7 +56,7 @@
return mMat;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Returns the value for a given row and column
*
* @param i row of the value to return
@@ -68,7 +68,7 @@
return mMat[i*2 + j];
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Sets the value for a given row and column
*
* @param i row of the value to set
@@ -78,7 +78,7 @@
mMat[i*2 + j] = v;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Sets the matrix values to identity
*/
public void loadIdentity() {
@@ -89,7 +89,7 @@
mMat[3] = 1;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Sets the values of the matrix to those of the parameter
*
* @param src matrix to load the values from
@@ -98,7 +98,7 @@
System.arraycopy(src.getArray(), 0, mMat, 0, mMat.length);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Sets current values to be a rotation matrix of given angle
*
* @param rot rotation angle
@@ -114,7 +114,7 @@
mMat[3] = c;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Sets current values to be a scale matrix of given dimensions
*
* @param x scale component x
@@ -126,7 +126,7 @@
mMat[3] = y;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Sets current values to be the result of multiplying two given
* matrices
*
@@ -147,7 +147,7 @@
}
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Post-multiplies the current matrix by a given parameter
*
* @param rhs right hand side to multiply by
@@ -157,7 +157,7 @@
tmp.loadMultiply(this, rhs);
load(tmp);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Modifies the current matrix by post-multiplying it with a
* rotation matrix of given angle
*
@@ -168,7 +168,7 @@
tmp.loadRotate(rot);
multiply(tmp);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Modifies the current matrix by post-multiplying it with a
* scale matrix of given dimensions
*
@@ -180,7 +180,7 @@
tmp.loadScale(x, y);
multiply(tmp);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Sets the current matrix to its transpose
*/
public void transpose() {
diff --git a/graphics/java/android/renderscript/Matrix3f.java b/graphics/java/android/renderscript/Matrix3f.java
index b821742..253506d 100644
--- a/graphics/java/android/renderscript/Matrix3f.java
+++ b/graphics/java/android/renderscript/Matrix3f.java
@@ -20,13 +20,13 @@
import android.util.Log;
-/** @deprecated renderscript is deprecated in J
+/**
* Class for exposing the native Renderscript rs_matrix3x3 type back to the Android system.
*
**/
public class Matrix3f {
- /** @deprecated renderscript is deprecated in J
+ /**
* Creates a new identity 3x3 matrix
*/
public Matrix3f() {
@@ -34,7 +34,7 @@
loadIdentity();
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Creates a new matrix and sets its values from the given
* parameter
*
@@ -46,7 +46,7 @@
System.arraycopy(dataArray, 0, mMat, 0, mMat.length);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Return a reference to the internal array representing matrix
* values. Modifying this array will also change the matrix
*
@@ -56,7 +56,7 @@
return mMat;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Returns the value for a given row and column
*
* @param i row of the value to return
@@ -68,7 +68,7 @@
return mMat[i*3 + j];
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Sets the value for a given row and column
*
* @param i row of the value to set
@@ -78,7 +78,7 @@
mMat[i*3 + j] = v;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Sets the matrix values to identity
*/
public void loadIdentity() {
@@ -95,7 +95,7 @@
mMat[8] = 1;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Sets the values of the matrix to those of the parameter
*
* @param src matrix to load the values from
@@ -104,7 +104,7 @@
System.arraycopy(src.getArray(), 0, mMat, 0, mMat.length);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Sets current values to be a rotation matrix of certain angle
* about a given axis
*
@@ -144,7 +144,7 @@
mMat[8] = z*z*nc + c;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Makes the upper 2x2 a rotation matrix of the given angle
*
* @param rot rotation angle
@@ -161,7 +161,7 @@
mMat[4] = c;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Makes the upper 2x2 a scale matrix of given dimensions
*
* @param x scale component x
@@ -173,7 +173,7 @@
mMat[4] = y;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Sets current values to be a scale matrix of given dimensions
*
* @param x scale component x
@@ -187,7 +187,7 @@
mMat[8] = z;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Sets current values to be a translation matrix of given
* dimensions
*
@@ -200,7 +200,7 @@
mMat[7] = y;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Sets current values to be the result of multiplying two given
* matrices
*
@@ -224,7 +224,7 @@
}
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Post-multiplies the current matrix by a given parameter
*
* @param rhs right hand side to multiply by
@@ -235,7 +235,7 @@
load(tmp);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Modifies the current matrix by post-multiplying it with a
* rotation matrix of certain angle about a given axis
*
@@ -250,7 +250,7 @@
multiply(tmp);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Modifies the upper 2x2 of the current matrix by
* post-multiplying it with a rotation matrix of given angle
*
@@ -262,7 +262,7 @@
multiply(tmp);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Modifies the upper 2x2 of the current matrix by
* post-multiplying it with a scale matrix of given dimensions
*
@@ -275,7 +275,7 @@
multiply(tmp);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Modifies the current matrix by post-multiplying it with a
* scale matrix of given dimensions
*
@@ -289,7 +289,7 @@
multiply(tmp);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Modifies the current matrix by post-multiplying it with a
* translation matrix of given dimensions
*
@@ -302,7 +302,7 @@
multiply(tmp);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Sets the current matrix to its transpose
*/
public void transpose() {
diff --git a/graphics/java/android/renderscript/Matrix4f.java b/graphics/java/android/renderscript/Matrix4f.java
index 8b7a0df..adc1806 100644
--- a/graphics/java/android/renderscript/Matrix4f.java
+++ b/graphics/java/android/renderscript/Matrix4f.java
@@ -20,13 +20,13 @@
import android.util.Log;
-/** @deprecated renderscript is deprecated in J
+/**
* Class for exposing the native Renderscript rs_matrix4x4 type back to the Android system.
*
**/
public class Matrix4f {
- /** @deprecated renderscript is deprecated in J
+ /**
* Creates a new identity 4x4 matrix
*/
public Matrix4f() {
@@ -34,7 +34,7 @@
loadIdentity();
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Creates a new matrix and sets its values from the given
* parameter
*
@@ -46,7 +46,7 @@
System.arraycopy(dataArray, 0, mMat, 0, mMat.length);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Return a reference to the internal array representing matrix
* values. Modifying this array will also change the matrix
*
@@ -56,7 +56,7 @@
return mMat;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Returns the value for a given row and column
*
* @param i row of the value to return
@@ -68,7 +68,7 @@
return mMat[i*4 + j];
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Sets the value for a given row and column
*
* @param i row of the value to set
@@ -78,7 +78,7 @@
mMat[i*4 + j] = v;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Sets the matrix values to identity
*/
public void loadIdentity() {
@@ -103,7 +103,7 @@
mMat[15] = 1;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Sets the values of the matrix to those of the parameter
*
* @param src matrix to load the values from
@@ -112,7 +112,7 @@
System.arraycopy(src.getArray(), 0, mMat, 0, mMat.length);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Sets current values to be a rotation matrix of certain angle
* about a given axis
*
@@ -159,7 +159,7 @@
mMat[10] = z*z*nc + c;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Sets current values to be a scale matrix of given dimensions
*
* @param x scale component x
@@ -173,7 +173,7 @@
mMat[10] = z;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Sets current values to be a translation matrix of given
* dimensions
*
@@ -188,7 +188,7 @@
mMat[14] = z;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Sets current values to be the result of multiplying two given
* matrices
*
@@ -215,7 +215,7 @@
}
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Set current values to be an orthographic projection matrix
*
* @param l location of the left vertical clipping plane
@@ -235,7 +235,7 @@
mMat[14]= -(f + n) / (f - n);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Set current values to be an orthographic projection matrix
* with the right and bottom clipping planes set to the given
* values. Left and top clipping planes are set to 0. Near and
@@ -249,7 +249,7 @@
loadOrtho(0,w, h,0, -1,1);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Sets current values to be a perspective projection matrix
*
* @param l location of the left vertical clipping plane
@@ -272,7 +272,7 @@
mMat[15]= 0;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Sets current values to be a perspective projection matrix
*
* @param fovy vertical field of view angle in degrees
@@ -288,7 +288,7 @@
loadFrustum(left, right, bottom, top, near, far);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Helper function to set the current values to a perspective
* projection matrix with aspect ratio defined by the parameters
* and (near, far), (bottom, top) mapping to (-1, 1) at z = 0
@@ -321,7 +321,7 @@
load(m1);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Post-multiplies the current matrix by a given parameter
*
* @param rhs right hand side to multiply by
@@ -331,7 +331,7 @@
tmp.loadMultiply(this, rhs);
load(tmp);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Modifies the current matrix by post-multiplying it with a
* rotation matrix of certain angle about a given axis
*
@@ -346,7 +346,7 @@
multiply(tmp);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Modifies the current matrix by post-multiplying it with a
* scale matrix of given dimensions
*
@@ -360,7 +360,7 @@
multiply(tmp);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Modifies the current matrix by post-multiplying it with a
* translation matrix of given dimensions
*
@@ -392,7 +392,7 @@
return cofactor;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Sets the current matrix to its inverse
*/
public boolean inverse() {
@@ -421,7 +421,7 @@
return true;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Sets the current matrix to its inverse transpose
*/
public boolean inverseTranspose() {
@@ -449,7 +449,7 @@
return true;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Sets the current matrix to its transpose
*/
public void transpose() {
diff --git a/graphics/java/android/renderscript/Mesh.java b/graphics/java/android/renderscript/Mesh.java
index bc32038..f49a24e 100644
--- a/graphics/java/android/renderscript/Mesh.java
+++ b/graphics/java/android/renderscript/Mesh.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008 The Android Open Source Project
+ * Copyright (C) 2008-2012 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.
@@ -20,7 +20,7 @@
import android.util.Log;
-/** @deprecated renderscript is deprecated in J
+/**
* <p>This class is a container for geometric data displayed with
* Renderscript. Internally, a mesh is a collection of allocations that
* represent vertex data (positions, normals, texture
@@ -39,34 +39,34 @@
**/
public class Mesh extends BaseObj {
- /** @deprecated renderscript is deprecated in J
+ /**
* Describes the way mesh vertex data is interpreted when rendering
*
**/
public enum Primitive {
- /** @deprecated renderscript is deprecated in J
+ /**
* Vertex data will be rendered as a series of points
*/
POINT (0),
- /** @deprecated renderscript is deprecated in J
+ /**
* Vertex pairs will be rendered as lines
*/
LINE (1),
- /** @deprecated renderscript is deprecated in J
+ /**
* Vertex data will be rendered as a connected line strip
*/
LINE_STRIP (2),
- /** @deprecated renderscript is deprecated in J
+ /**
* Vertices will be rendered as individual triangles
*/
TRIANGLE (3),
- /** @deprecated renderscript is deprecated in J
+ /**
* Vertices will be rendered as a connected triangle strip
* defined by the first three vertices with each additional
* triangle defined by a new vertex
*/
TRIANGLE_STRIP (4),
- /** @deprecated renderscript is deprecated in J
+ /**
* Vertices will be rendered as a sequence of triangles that all
* share first vertex as the origin
*/
@@ -86,7 +86,7 @@
super(id, rs);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* @return number of allocations containing vertex data
*
**/
@@ -96,7 +96,7 @@
}
return mVertexBuffers.length;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* @param slot index in the list of allocations to return
* @return vertex data allocation at the given index
*
@@ -105,7 +105,7 @@
return mVertexBuffers[slot];
}
- /** @deprecated renderscript is deprecated in J
+ /**
* @return number of primitives or index sets in the mesh
*
**/
@@ -116,7 +116,7 @@
return mIndexBuffers.length;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* @param slot locaton within the list of index set allocation
* @return allocation containing primtive index data or null if
* the index data is not specified explicitly
@@ -125,7 +125,7 @@
public Allocation getIndexSetAllocation(int slot) {
return mIndexBuffers[slot];
}
- /** @deprecated renderscript is deprecated in J
+ /**
* @param slot locaiton within the list of index set primitives
* @return index set primitive type
*
@@ -167,7 +167,7 @@
}
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Mesh builder object. It starts empty and requires you to
* add the types necessary to create vertex and index
* allocations.
@@ -189,7 +189,7 @@
Entry[] mVertexTypes;
Vector mIndexTypes;
- /** @deprecated renderscript is deprecated in J
+ /**
* Creates builder object
* @param rs Context to which the mesh will belong.
* @param usage specifies how the mesh allocations are to be
@@ -204,7 +204,7 @@
mIndexTypes = new Vector();
}
- /** @deprecated renderscript is deprecated in J
+ /**
* @return internal index of the last vertex buffer type added to
* builder
**/
@@ -212,7 +212,7 @@
return mVertexTypeCount - 1;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* @return internal index of the last index set added to the
* builder
**/
@@ -220,7 +220,7 @@
return mIndexTypes.size() - 1;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Adds a vertex data type to the builder object
*
* @param t type of the vertex data allocation to be created
@@ -239,7 +239,7 @@
return this;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Adds a vertex data type to the builder object
*
* @param e element describing the vertex data layout
@@ -260,7 +260,7 @@
return this;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Adds an index set data type to the builder object
*
* @param t type of the index set data, could be null
@@ -278,7 +278,7 @@
return this;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Adds an index set primitive type to the builder object
*
* @param p primitive type
@@ -295,7 +295,7 @@
return this;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Adds an index set data type to the builder object
*
* @param e element describing the index set data layout
@@ -320,7 +320,7 @@
return tb.create();
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Create a Mesh object from the current state of the builder
*
**/
@@ -372,7 +372,8 @@
}
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Mesh builder object. It starts empty and requires the user to
* add all the vertex and index allocations that comprise the
* mesh
@@ -391,8 +392,9 @@
Vector mIndexTypes;
- /** @deprecated renderscript is deprecated in J
- */
+ /**
+ * @deprecated in API 16
+ **/
public AllocationBuilder(RenderScript rs) {
mRS = rs;
mVertexTypeCount = 0;
@@ -400,7 +402,8 @@
mIndexTypes = new Vector();
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* @return internal index of the last vertex buffer type added to
* builder
**/
@@ -408,7 +411,8 @@
return mVertexTypeCount - 1;
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* @return internal index of the last index set added to the
* builder
**/
@@ -416,7 +420,8 @@
return mIndexTypes.size() - 1;
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Adds an allocation containing vertex buffer data to the
* builder
*
@@ -435,7 +440,8 @@
return this;
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Adds an allocation containing index buffer data and index type
* to the builder
*
@@ -452,7 +458,8 @@
return this;
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Adds an index set type to the builder
*
* @param p index set primitive type
@@ -467,7 +474,8 @@
return this;
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Create a Mesh object from the current state of the builder
*
**/
@@ -508,7 +516,8 @@
}
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Builder that allows creation of a mesh object point by point
* and triangle by triangle
*
@@ -535,17 +544,21 @@
int mVtxSize;
int mFlags;
- /** @deprecated renderscript is deprecated in J
- */
+ /**
+ * @deprecated in API 16
+ **/
public static final int COLOR = 0x0001;
- /** @deprecated renderscript is deprecated in J
- */
+ /**
+ * @deprecated in API 16
+ **/
public static final int NORMAL = 0x0002;
- /** @deprecated renderscript is deprecated in J
- */
+ /**
+ * @deprecated in API 16
+ **/
public static final int TEXTURE_0 = 0x0100;
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* @param rs Context to which the mesh will belong.
* @param vtxSize specifies whether the vertex is a float2 or
* float3
@@ -600,7 +613,8 @@
mMaxIndex ++;
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Adds a float2 vertex to the mesh
*
* @param x position x
@@ -620,7 +634,8 @@
return this;
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Adds a float3 vertex to the mesh
*
* @param x position x
@@ -643,7 +658,8 @@
return this;
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Sets the texture coordinate for the vertices that are added after this method call.
*
* @param s texture coordinate s
@@ -660,7 +676,8 @@
return this;
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Sets the normal vector for the vertices that are added after this method call.
*
* @param x normal vector x
@@ -679,7 +696,8 @@
return this;
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Sets the color for the vertices that are added after this method call.
*
* @param r red component
@@ -700,7 +718,8 @@
return this;
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Adds a new triangle to the mesh builder
*
* @param idx1 index of the first vertex in the triangle
@@ -726,7 +745,8 @@
return this;
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Creates the mesh object from the current state of the builder
*
* @param uploadToBufferObject specifies whether the vertex data
diff --git a/graphics/java/android/renderscript/Path.java b/graphics/java/android/renderscript/Path.java
index ec34d7c..9c4d41b 100644
--- a/graphics/java/android/renderscript/Path.java
+++ b/graphics/java/android/renderscript/Path.java
@@ -19,7 +19,7 @@
import java.util.Vector;
import android.util.Log;
-/** @deprecated renderscript is deprecated in J
+/**
* @hide
*
*/
diff --git a/graphics/java/android/renderscript/Program.java b/graphics/java/android/renderscript/Program.java
index 16186fa..d9f64c6 100644
--- a/graphics/java/android/renderscript/Program.java
+++ b/graphics/java/android/renderscript/Program.java
@@ -25,7 +25,7 @@
import android.util.Log;
-/** @deprecated renderscript is deprecated in J
+/**
*
* Program is a base class for all the objects that modify
* various stages of the graphics pipeline
@@ -37,18 +37,14 @@
static final int MAX_CONSTANT = 8;
static final int MAX_TEXTURE = 8;
- /** @deprecated renderscript is deprecated in J
+ /**
*
* TextureType specifies what textures are attached to Program
* objects
*
**/
public enum TextureType {
- /** @deprecated renderscript is deprecated in J
- */
TEXTURE_2D (0),
- /** @deprecated renderscript is deprecated in J
- */
TEXTURE_CUBE (1);
int mID;
@@ -81,7 +77,7 @@
super(id, rs);
}
- /** @hide renderscript is deprecated in J
+ /**
* Program object can have zero or more constant allocations
* associated with it. This method returns the total count.
* @return number of constant input types
@@ -90,7 +86,7 @@
return mConstants != null ? mConstants.length : 0;
}
- /** @hide renderscript is deprecated in J
+ /**
* Returns the type of the constant buffer used in the program
* object. It could be used to query internal elements or create
* an allocation to store constant data.
@@ -104,7 +100,7 @@
return mConstants[slot];
}
- /** @hide renderscript is deprecated in J
+ /**
* Returns the number of textures used in this program object
* @return number of texture inputs
*/
@@ -112,7 +108,7 @@
return mTextureCount;
}
- /** @hide renderscript is deprecated in J
+ /**
* Returns the type of texture at a given slot. e.g. 2D or Cube
* @param slot index of the texture input
* @return texture input type
@@ -124,7 +120,7 @@
return mTextures[slot];
}
- /** @hide renderscript is deprecated in J
+ /**
* Returns the name of the texture input at a given slot. e.g.
* tex0, diffuse, spec
* @param slot index of the texture input
@@ -137,7 +133,7 @@
return mTextureNames[slot];
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Binds a constant buffer to be used as uniform inputs to the
* program
*
@@ -157,7 +153,7 @@
mRS.nProgramBindConstants(getID(mRS), slot, id);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Binds a texture to be used in the program
*
* @param va allocation containing texture data
@@ -179,7 +175,7 @@
mRS.nProgramBindTexture(getID(mRS), slot, id);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Binds an object that describes how a texture at the
* corresponding location is sampled
*
@@ -214,8 +210,7 @@
int mTextureCount;
String mShader;
- /** @deprecated renderscript is deprecated in J
- */
+
protected BaseProgramBuilder(RenderScript rs) {
mRS = rs;
mInputs = new Element[MAX_INPUT];
@@ -229,7 +224,7 @@
mTextureNames = new String[MAX_TEXTURE];
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Sets the GLSL shader code to be used in the program
*
* @param s GLSL shader string
@@ -240,7 +235,7 @@
return this;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Sets the GLSL shader code to be used in the program
*
* @param resources application resources
@@ -286,7 +281,7 @@
return this;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Queries the index of the last added constant buffer type
*
*/
@@ -294,7 +289,7 @@
return mConstantCount - 1;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Queries the index of the last added texture type
*
*/
@@ -302,7 +297,7 @@
return mTextureCount - 1;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Adds constant (uniform) inputs to the program
*
* @param t Type that describes the layout of the Allocation
@@ -322,7 +317,7 @@
return this;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Adds a texture input to the Program
*
* @param texType describes that the texture to append it (2D,
@@ -334,7 +329,7 @@
return this;
}
- /** @hide renderscript is deprecated in J
+ /**
* Adds a texture input to the Program
*
* @param texType describes that the texture to append it (2D,
@@ -354,8 +349,6 @@
return this;
}
- /** @deprecated renderscript is deprecated in J
- */
protected void initProgram(Program p) {
p.mInputs = new Element[mInputCount];
System.arraycopy(mInputs, 0, p.mInputs, 0, mInputCount);
diff --git a/graphics/java/android/renderscript/ProgramFragment.java b/graphics/java/android/renderscript/ProgramFragment.java
index 0427c19..fa6e2d4 100644
--- a/graphics/java/android/renderscript/ProgramFragment.java
+++ b/graphics/java/android/renderscript/ProgramFragment.java
@@ -20,7 +20,7 @@
import android.util.Log;
-/** @deprecated renderscript is deprecated in J
+/**
* <p>The Renderscript fragment program, also known as fragment shader is responsible
* for manipulating pixel data in a user defined way. It's constructed from a GLSL
* shader string containing the program body, textures inputs, and a Type object
@@ -42,7 +42,7 @@
}
public static class Builder extends BaseProgramBuilder {
- /** @deprecated renderscript is deprecated in J
+ /**
* Create a builder object.
*
* @param rs Context to which the program will belong.
@@ -51,7 +51,7 @@
super(rs);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Creates ProgramFragment from the current state of the builder
*
* @return ProgramFragment
diff --git a/graphics/java/android/renderscript/ProgramFragmentFixedFunction.java b/graphics/java/android/renderscript/ProgramFragmentFixedFunction.java
index 19fca58..848c5a3 100644
--- a/graphics/java/android/renderscript/ProgramFragmentFixedFunction.java
+++ b/graphics/java/android/renderscript/ProgramFragmentFixedFunction.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008 The Android Open Source Project
+ * Copyright (C) 2008-2012 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.
@@ -20,7 +20,8 @@
import android.util.Log;
-/** @deprecated renderscript is deprecated in J
+/**
+ * @deprecated in API 16
* <p>ProgramFragmentFixedFunction is a helper class that provides
* a way to make a simple fragment shader without writing any
* GLSL code. This class allows for display of constant color, interpolated
@@ -34,11 +35,15 @@
}
static class InternalBuilder extends BaseProgramBuilder {
+ /**
+ * @deprecated in API 16
+ */
public InternalBuilder(RenderScript rs) {
super(rs);
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Creates ProgramFragmentFixedFunction from the current state
* of the builder
*
@@ -75,9 +80,13 @@
}
}
+ /**
+ * @deprecated in API 16
+ */
public static class Builder {
- /** @deprecated renderscript is deprecated in J
- */
+ /**
+ * @deprecated in API 16
+ */
public static final int MAX_TEXTURE = 2;
int mNumTextures;
boolean mPointSpriteEnable;
@@ -85,20 +94,24 @@
String mShader;
RenderScript mRS;
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* EnvMode describes how textures are combined with the existing
* color in the fixed function fragment shader
*
**/
public enum EnvMode {
- /** @deprecated renderscript is deprecated in J
- */
+ /**
+ * @deprecated in API 16
+ **/
REPLACE (1),
- /** @deprecated renderscript is deprecated in J
- */
+ /**
+ * @deprecated in API 16
+ **/
MODULATE (2),
- /** @deprecated renderscript is deprecated in J
- */
+ /**
+ * @deprecated in API 16
+ **/
DECAL (3);
int mID;
@@ -107,23 +120,28 @@
}
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Format describes the pixel format of textures in the fixed
* function fragment shader and how they are sampled
*
**/
public enum Format {
- /** @deprecated renderscript is deprecated in J
- */
+ /**
+ * @deprecated in API 16
+ **/
ALPHA (1),
- /** @deprecated renderscript is deprecated in J
- */
+ /**
+ * @deprecated in API 16
+ **/
LUMINANCE_ALPHA (2),
- /** @deprecated renderscript is deprecated in J
- */
+ /**
+ * @deprecated in API 16
+ **/
RGB (3),
- /** @deprecated renderscript is deprecated in J
- */
+ /**
+ * @deprecated in API 16
+ **/
RGBA (4);
int mID;
@@ -206,7 +224,8 @@
mShader += "}\n";
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated
* Creates a builder for fixed function fragment program
*
* @param rs Context to which the program will belong.
@@ -217,7 +236,8 @@
mPointSpriteEnable = false;
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Adds a texture to be fetched as part of the fixed function
* fragment program
*
@@ -239,7 +259,8 @@
return this;
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Specifies whether the texture coordinate passed from the
* vertex program is replaced with an openGL internal point
* sprite texture coordinate
@@ -250,7 +271,8 @@
return this;
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Specifies whether the varying color passed from the vertex
* program or the constant color set on the fragment program is
* used in the final color calculation in the fixed function
@@ -262,7 +284,8 @@
return this;
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Creates the fixed function fragment program from the current
* state of the builder.
*
diff --git a/graphics/java/android/renderscript/ProgramRaster.java b/graphics/java/android/renderscript/ProgramRaster.java
index 26fcafe..e40751f 100644
--- a/graphics/java/android/renderscript/ProgramRaster.java
+++ b/graphics/java/android/renderscript/ProgramRaster.java
@@ -20,23 +20,15 @@
import android.util.Log;
-/** @deprecated renderscript is deprecated in J
+/**
* Program raster is primarily used to specify whether point sprites are enabled and to control
* the culling mode. By default, back faces are culled.
**/
public class ProgramRaster extends BaseObj {
- /** @deprecated renderscript is deprecated in J
- */
public enum CullMode {
- /** @deprecated renderscript is deprecated in J
- */
BACK (0),
- /** @deprecated renderscript is deprecated in J
- */
FRONT (1),
- /** @deprecated renderscript is deprecated in J
- */
NONE (2);
int mID;
@@ -55,7 +47,7 @@
mCullMode = CullMode.BACK;
}
- /** @hide renderscript is deprecated in J
+ /**
* Specifies whether vertices are rendered as screen aligned
* elements of a specified size
* @return whether point sprites are enabled
@@ -64,7 +56,7 @@
return mPointSprite;
}
- /** @hide renderscript is deprecated in J
+ /**
* Specifies how triangles are culled based on their orientation
* @return cull mode
*/
@@ -72,8 +64,6 @@
return mCullMode;
}
- /** @deprecated renderscript is deprecated in J
- */
public static ProgramRaster CULL_BACK(RenderScript rs) {
if(rs.mProgramRaster_CULL_BACK == null) {
ProgramRaster.Builder builder = new ProgramRaster.Builder(rs);
@@ -83,8 +73,6 @@
return rs.mProgramRaster_CULL_BACK;
}
- /** @deprecated renderscript is deprecated in J
- */
public static ProgramRaster CULL_FRONT(RenderScript rs) {
if(rs.mProgramRaster_CULL_FRONT == null) {
ProgramRaster.Builder builder = new ProgramRaster.Builder(rs);
@@ -94,8 +82,6 @@
return rs.mProgramRaster_CULL_FRONT;
}
- /** @deprecated renderscript is deprecated in J
- */
public static ProgramRaster CULL_NONE(RenderScript rs) {
if(rs.mProgramRaster_CULL_NONE == null) {
ProgramRaster.Builder builder = new ProgramRaster.Builder(rs);
@@ -105,37 +91,27 @@
return rs.mProgramRaster_CULL_NONE;
}
- /** @deprecated renderscript is deprecated in J
- */
public static class Builder {
RenderScript mRS;
boolean mPointSprite;
CullMode mCullMode;
- /** @deprecated renderscript is deprecated in J
- */
public Builder(RenderScript rs) {
mRS = rs;
mPointSprite = false;
mCullMode = CullMode.BACK;
}
- /** @deprecated renderscript is deprecated in J
- */
public Builder setPointSpriteEnabled(boolean enable) {
mPointSprite = enable;
return this;
}
- /** @deprecated renderscript is deprecated in J
- */
public Builder setCullMode(CullMode m) {
mCullMode = m;
return this;
}
- /** @deprecated renderscript is deprecated in J
- */
public ProgramRaster create() {
mRS.validate();
int id = mRS.nProgramRasterCreate(mPointSprite, mCullMode.mID);
diff --git a/graphics/java/android/renderscript/ProgramStore.java b/graphics/java/android/renderscript/ProgramStore.java
index 20043f2..d0fd6e5 100644
--- a/graphics/java/android/renderscript/ProgramStore.java
+++ b/graphics/java/android/renderscript/ProgramStore.java
@@ -20,7 +20,7 @@
import android.util.Log;
-/** @deprecated renderscript is deprecated in J
+/**
* <p>ProgramStore contains a set of parameters that control how
* the graphics hardware handles writes to the framebuffer.
* It could be used to:</p>
@@ -35,7 +35,7 @@
*
**/
public class ProgramStore extends BaseObj {
- /** @deprecated renderscript is deprecated in J
+ /**
* Specifies the function used to determine whether a fragment
* will be drawn during the depth testing stage in the rendering
* pipeline by comparing its value with that already in the depth
@@ -44,36 +44,36 @@
*/
public enum DepthFunc {
- /** @deprecated renderscript is deprecated in J
+ /**
* Always drawn
*/
ALWAYS (0),
- /** @deprecated renderscript is deprecated in J
+ /**
* Drawn if the incoming depth value is less than that in the
* depth buffer
*/
LESS (1),
- /** @deprecated renderscript is deprecated in J
+ /**
* Drawn if the incoming depth value is less or equal to that in
* the depth buffer
*/
LESS_OR_EQUAL (2),
- /** @deprecated renderscript is deprecated in J
+ /**
* Drawn if the incoming depth value is greater than that in the
* depth buffer
*/
GREATER (3),
- /** @deprecated renderscript is deprecated in J
+ /**
* Drawn if the incoming depth value is greater or equal to that
* in the depth buffer
*/
GREATER_OR_EQUAL (4),
- /** @deprecated renderscript is deprecated in J
+ /**
* Drawn if the incoming depth value is equal to that in the
* depth buffer
*/
EQUAL (5),
- /** @deprecated renderscript is deprecated in J
+ /**
* Drawn if the incoming depth value is not equal to that in the
* depth buffer
*/
@@ -85,7 +85,7 @@
}
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Specifies the functions used to combine incoming pixels with
* those already in the frame buffer.
*
@@ -94,32 +94,14 @@
*
*/
public enum BlendSrcFunc {
- /** @deprecated renderscript is deprecated in J
- */
ZERO (0),
- /** @deprecated renderscript is deprecated in J
- */
ONE (1),
- /** @deprecated renderscript is deprecated in J
- */
DST_COLOR (2),
- /** @deprecated renderscript is deprecated in J
- */
ONE_MINUS_DST_COLOR (3),
- /** @deprecated renderscript is deprecated in J
- */
SRC_ALPHA (4),
- /** @deprecated renderscript is deprecated in J
- */
ONE_MINUS_SRC_ALPHA (5),
- /** @deprecated renderscript is deprecated in J
- */
DST_ALPHA (6),
- /** @deprecated renderscript is deprecated in J
- */
ONE_MINUS_DST_ALPHA (7),
- /** @deprecated renderscript is deprecated in J
- */
SRC_ALPHA_SATURATE (8);
int mID;
@@ -128,7 +110,7 @@
}
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Specifies the functions used to combine incoming pixels with
* those already in the frame buffer.
*
@@ -138,29 +120,13 @@
*
*/
public enum BlendDstFunc {
- /** @deprecated renderscript is deprecated in J
- */
ZERO (0),
- /** @deprecated renderscript is deprecated in J
- */
ONE (1),
- /** @deprecated renderscript is deprecated in J
- */
SRC_COLOR (2),
- /** @deprecated renderscript is deprecated in J
- */
ONE_MINUS_SRC_COLOR (3),
- /** @deprecated renderscript is deprecated in J
- */
SRC_ALPHA (4),
- /** @deprecated renderscript is deprecated in J
- */
ONE_MINUS_SRC_ALPHA (5),
- /** @deprecated renderscript is deprecated in J
- */
DST_ALPHA (6),
- /** @deprecated renderscript is deprecated in J
- */
ONE_MINUS_DST_ALPHA (7);
int mID;
@@ -183,7 +149,7 @@
super(id, rs);
}
- /** @hide renderscript is deprecated in J
+ /**
* Returns the function used to test writing into the depth
* buffer
* @return depth function
@@ -192,7 +158,7 @@
return mDepthFunc;
}
- /** @hide renderscript is deprecated in J
+ /**
* Queries whether writes are enabled into the depth buffer
* @return depth mask
*/
@@ -200,7 +166,7 @@
return mDepthMask;
}
- /** @hide renderscript is deprecated in J
+ /**
* Queries whether red channel is written
* @return red color channel mask
*/
@@ -208,7 +174,7 @@
return mColorMaskR;
}
- /** @hide renderscript is deprecated in J
+ /**
* Queries whether green channel is written
* @return green color channel mask
*/
@@ -216,7 +182,7 @@
return mColorMaskG;
}
- /** @hide renderscript is deprecated in J
+ /**
* Queries whether blue channel is written
* @return blue color channel mask
*/
@@ -224,7 +190,7 @@
return mColorMaskB;
}
- /** @hide renderscript is deprecated in J
+ /**
* Queries whether alpha channel is written
* @return alpha channel mask
*/
@@ -232,7 +198,7 @@
return mColorMaskA;
}
- /** @hide renderscript is deprecated in J
+ /**
* Specifies how the source blending factor is computed
* @return source blend function
*/
@@ -240,7 +206,7 @@
return mBlendSrc;
}
- /** @hide renderscript is deprecated in J
+ /**
* Specifies how the destination blending factor is computed
* @return destination blend function
*/
@@ -248,7 +214,7 @@
return mBlendDst;
}
- /** @hide renderscript is deprecated in J
+ /**
* Specifies whether colors are dithered before writing into the
* framebuffer
* @return whether dither is enabled
@@ -257,7 +223,7 @@
return mDither;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Returns a pre-defined program store object with the following
* characteristics:
* - incoming pixels are drawn if their depth value is less than
@@ -279,7 +245,7 @@
}
return rs.mProgramStore_BLEND_NONE_DEPTH_TEST;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Returns a pre-defined program store object with the following
* characteristics:
* - incoming pixels always pass the depth test and their value
@@ -300,7 +266,7 @@
}
return rs.mProgramStore_BLEND_NONE_DEPTH_NO_DEPTH;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Returns a pre-defined program store object with the following
* characteristics:
* - incoming pixels are drawn if their depth value is less than
@@ -324,7 +290,7 @@
}
return rs.mProgramStore_BLEND_ALPHA_DEPTH_TEST;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Returns a pre-defined program store object with the following
* characteristics:
* - incoming pixels always pass the depth test and their value
@@ -347,7 +313,7 @@
return rs.mProgramStore_BLEND_ALPHA_DEPTH_NO_DEPTH;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Builder class for ProgramStore object. If the builder is left
* empty, the equivalent of BLEND_NONE_DEPTH_NONE would be
* returned
@@ -376,7 +342,7 @@
mBlendDst = BlendDstFunc.ZERO;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Specifies the depth testing behavior
*
* @param func function used for depth testing
@@ -388,7 +354,7 @@
return this;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Enables writes into the depth buffer
*
* @param enable specifies whether depth writes are
@@ -401,7 +367,7 @@
return this;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Enables writes into the color buffer
*
* @param r specifies whether red channel is written
@@ -419,7 +385,7 @@
return this;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Specifies how incoming pixels are combined with the pixels
* stored in the framebuffer
*
@@ -436,7 +402,7 @@
return this;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Enables dithering
*
* @param enable specifies whether dithering is enabled or
@@ -449,7 +415,7 @@
return this;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Creates a program store from the current state of the builder
*/
public ProgramStore create() {
diff --git a/graphics/java/android/renderscript/ProgramVertex.java b/graphics/java/android/renderscript/ProgramVertex.java
index c13b9b0..74d666b 100644
--- a/graphics/java/android/renderscript/ProgramVertex.java
+++ b/graphics/java/android/renderscript/ProgramVertex.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
- /** @deprecated renderscript is deprecated in J
+ /**
* <p>The Renderscript vertex program, also known as a vertex shader, describes a stage in
* the graphics pipeline responsible for manipulating geometric data in a user-defined way.
* The object is constructed by providing the Renderscript system with the following data:</p>
@@ -42,7 +42,7 @@
import android.util.Log;
-/** @deprecated renderscript is deprecated in J
+/**
* ProgramVertex, also know as a vertex shader, describes a
* stage in the graphics pipeline responsible for manipulating
* geometric data in a user-defined way.
@@ -54,14 +54,14 @@
super(id, rs);
}
- /** @hide renderscript is deprecated in J
+ /**
* @return number of input attribute elements
*/
public int getInputCount() {
return mInputs != null ? mInputs.length : 0;
}
- /** @hide renderscript is deprecated in J
+ /**
* @param slot location of the input to return
* @return input attribute element
*/
@@ -72,7 +72,7 @@
return mInputs[slot];
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Builder class for creating ProgramVertex objects.
* The builder starts empty and the user must minimally provide
* the GLSL shader code, and the varying inputs. Constant, or
@@ -81,7 +81,7 @@
*
**/
public static class Builder extends BaseProgramBuilder {
- /** @deprecated renderscript is deprecated in J
+ /**
* Create a builder object.
*
* @param rs Context to which the program will belong.
@@ -90,7 +90,7 @@
super(rs);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Add varying inputs to the program
*
* @param e element describing the layout of the varying input
@@ -109,7 +109,7 @@
return this;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Creates ProgramVertex from the current state of the builder
*
* @return ProgramVertex
diff --git a/graphics/java/android/renderscript/ProgramVertexFixedFunction.java b/graphics/java/android/renderscript/ProgramVertexFixedFunction.java
index 97444db..88cade4 100644
--- a/graphics/java/android/renderscript/ProgramVertexFixedFunction.java
+++ b/graphics/java/android/renderscript/ProgramVertexFixedFunction.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008 The Android Open Source Project
+ * Copyright (C) 2008-2012 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.
@@ -21,7 +21,8 @@
import android.util.Log;
-/** @deprecated renderscript is deprecated in J
+/**
+ * @deprecated in API 16
* ProgramVertexFixedFunction is a helper class that provides a
* simple way to create a fixed function emulation vertex shader
* without writing any GLSL code.
@@ -33,7 +34,8 @@
super(id, rs);
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Binds the constant buffer containing fixed function emulation
* matrices
*
@@ -45,10 +47,16 @@
}
static class InternalBuilder extends BaseProgramBuilder {
+ /**
+ * @deprecated in API 16
+ */
public InternalBuilder(RenderScript rs) {
super(rs);
}
+ /**
+ * @deprecated in API 16
+ */
public InternalBuilder addInput(Element e) throws IllegalStateException {
// Should check for consistant and non-conflicting names...
if(mInputCount >= MAX_INPUT) {
@@ -61,7 +69,8 @@
return this;
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Creates ProgramVertexFixedFunction from the current state of
* the builder
*
@@ -98,12 +107,16 @@
}
}
+ /**
+ * @deprecated in API 16
+ */
public static class Builder {
boolean mTextureMatrixEnable;
String mShader;
RenderScript mRS;
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Creates a builder for fixed function vertex program
*
* @param rs Context to which the program will belong.
@@ -112,7 +125,8 @@
mRS = rs;
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Specifies whether texture matrix calculations are to be added
* to the shader
*
@@ -152,7 +166,8 @@
mShader += "}\n";
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Creates ProgramVertexFixedFunction from the current state of
* the builder
*
@@ -176,7 +191,8 @@
}
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Helper class to store modelview, projection and texture
* matrices for ProgramVertexFixedFunction
*
@@ -196,7 +212,8 @@
}
private FieldPacker mIOBuffer;
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Creates a buffer to store fixed function emulation matrices
*
* @param rs Context to which the allocation will belong.
@@ -215,7 +232,8 @@
setTexture(new Matrix4f());
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Forces deallocation of memory backing the contant matrices.
* Normally, this is unnecessary and will be garbage collected
*
@@ -233,7 +251,8 @@
mAlloc.setFromFieldPacker(0, mIOBuffer);
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Sets the modelview matrix in the fixed function matrix buffer
*
* @param m modelview matrix
@@ -243,7 +262,8 @@
addToBuffer(MODELVIEW_OFFSET*4, m);
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Sets the projection matrix in the fixed function matrix buffer
*
* @param m projection matrix
@@ -253,7 +273,8 @@
addToBuffer(PROJECTION_OFFSET*4, m);
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Sets the texture matrix in the fixed function matrix buffer.
* Texture matrix must be enabled in the
* ProgramVertexFixedFunction builder for the shader to utilize
diff --git a/graphics/java/android/renderscript/RSDriverException.java b/graphics/java/android/renderscript/RSDriverException.java
index 1784087..ce85b53 100644
--- a/graphics/java/android/renderscript/RSDriverException.java
+++ b/graphics/java/android/renderscript/RSDriverException.java
@@ -17,7 +17,7 @@
package android.renderscript;
-/** @deprecated renderscript is deprecated in J
+/**
* Base class for all exceptions thrown by the Android
* Renderscript
*/
diff --git a/graphics/java/android/renderscript/RSIllegalArgumentException.java b/graphics/java/android/renderscript/RSIllegalArgumentException.java
index 039d8f5..954c0e8 100644
--- a/graphics/java/android/renderscript/RSIllegalArgumentException.java
+++ b/graphics/java/android/renderscript/RSIllegalArgumentException.java
@@ -17,13 +17,11 @@
package android.renderscript;
-/** @deprecated renderscript is deprecated in J
+/**
* Base class for all exceptions thrown by the Android
* Renderscript
*/
public class RSIllegalArgumentException extends RSRuntimeException {
- /** @deprecated renderscript is deprecated in J
- */
public RSIllegalArgumentException(String string) {
super(string);
}
diff --git a/graphics/java/android/renderscript/RSInvalidStateException.java b/graphics/java/android/renderscript/RSInvalidStateException.java
index ccbaea1..691aeba 100644
--- a/graphics/java/android/renderscript/RSInvalidStateException.java
+++ b/graphics/java/android/renderscript/RSInvalidStateException.java
@@ -17,13 +17,11 @@
package android.renderscript;
-/** @deprecated renderscript is deprecated in J
+/**
* Base class for all exceptions thrown by the Android
* Renderscript
*/
public class RSInvalidStateException extends RSRuntimeException {
- /** @deprecated renderscript is deprecated in J
- */
public RSInvalidStateException(String string) {
super(string);
}
diff --git a/graphics/java/android/renderscript/RSRuntimeException.java b/graphics/java/android/renderscript/RSRuntimeException.java
index 3fb1ea9..5a16478 100644
--- a/graphics/java/android/renderscript/RSRuntimeException.java
+++ b/graphics/java/android/renderscript/RSRuntimeException.java
@@ -17,14 +17,12 @@
package android.renderscript;
-/** @deprecated renderscript is deprecated in J
+/**
* Base class for all exceptions thrown by the Android
* Renderscript
*/
public class RSRuntimeException
extends java.lang.RuntimeException {
- /** @deprecated renderscript is deprecated in J
- */
public RSRuntimeException(String string) {
super(string);
}
diff --git a/graphics/java/android/renderscript/RSSurfaceView.java b/graphics/java/android/renderscript/RSSurfaceView.java
index 997b7d0..506f1af 100644
--- a/graphics/java/android/renderscript/RSSurfaceView.java
+++ b/graphics/java/android/renderscript/RSSurfaceView.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008 The Android Open Source Project
+ * Copyright (C) 2008-2012 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.
@@ -29,7 +29,8 @@
import android.view.SurfaceHolder;
import android.view.SurfaceView;
-/** @deprecated renderscript is deprecated in J
+/**
+ * @deprecated in API 16
* The Surface View for a graphics renderscript (RenderScriptGL) to draw on.
*
* <div class="special reference">
@@ -42,7 +43,8 @@
private SurfaceHolder mSurfaceHolder;
private RenderScriptGL mRS;
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Standard View constructor. In order to render something, you
* must call {@link android.opengl.GLSurfaceView#setRenderer} to
* register a renderer.
@@ -53,7 +55,8 @@
//Log.v(RenderScript.LOG_TAG, "RSSurfaceView");
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Standard View constructor. In order to render something, you
* must call {@link android.opengl.GLSurfaceView#setRenderer} to
* register a renderer.
@@ -71,7 +74,8 @@
holder.addCallback(this);
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* This method is part of the SurfaceHolder.Callback interface, and is
* not normally called or subclassed by clients of RSSurfaceView.
*/
@@ -79,7 +83,8 @@
mSurfaceHolder = holder;
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* This method is part of the SurfaceHolder.Callback interface, and is
* not normally called or subclassed by clients of RSSurfaceView.
*/
@@ -92,7 +97,8 @@
}
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* This method is part of the SurfaceHolder.Callback interface, and is
* not normally called or subclassed by clients of RSSurfaceView.
*/
@@ -104,7 +110,8 @@
}
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Inform the view that the activity is paused. The owner of this view must
* call this method when the activity is paused. Calling this method will
* pause the rendering thread.
@@ -116,7 +123,8 @@
}
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Inform the view that the activity is resumed. The owner of this view must
* call this method when the activity is resumed. Calling this method will
* recreate the OpenGL display and resume the rendering
@@ -129,12 +137,18 @@
}
}
+ /**
+ * @deprecated in API 16
+ **/
public RenderScriptGL createRenderScriptGL(RenderScriptGL.SurfaceConfig sc) {
RenderScriptGL rs = new RenderScriptGL(this.getContext(), sc);
setRenderScriptGL(rs);
return rs;
}
+ /**
+ * @deprecated in API 16
+ **/
public void destroyRenderScriptGL() {
synchronized (this) {
mRS.destroy();
@@ -142,10 +156,16 @@
}
}
+ /**
+ * @deprecated in API 16
+ **/
public void setRenderScriptGL(RenderScriptGL rs) {
mRS = rs;
}
+ /**
+ * @deprecated in API 16
+ **/
public RenderScriptGL getRenderScriptGL() {
return mRS;
}
diff --git a/graphics/java/android/renderscript/RSTextureView.java b/graphics/java/android/renderscript/RSTextureView.java
index b40f73c..30b2f99 100644
--- a/graphics/java/android/renderscript/RSTextureView.java
+++ b/graphics/java/android/renderscript/RSTextureView.java
@@ -28,7 +28,7 @@
import android.util.Log;
import android.view.TextureView;
-/** @deprecated renderscript is deprecated in J
+/**
* The Texture View for a graphics renderscript (RenderScriptGL)
* to draw on.
*
@@ -37,7 +37,7 @@
private RenderScriptGL mRS;
private SurfaceTexture mSurfaceTexture;
- /** @deprecated renderscript is deprecated in J
+ /**
* Standard View constructor. In order to render something, you
* must call {@link android.opengl.GLSurfaceView#setRenderer} to
* register a renderer.
@@ -48,7 +48,7 @@
//Log.v(RenderScript.LOG_TAG, "RSSurfaceView");
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Standard View constructor. In order to render something, you
* must call {@link android.opengl.GLSurfaceView#setRenderer} to
* register a renderer.
@@ -102,7 +102,7 @@
mSurfaceTexture = surface;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Inform the view that the activity is paused. The owner of this view must
* call this method when the activity is paused. Calling this method will
* pause the rendering thread.
@@ -114,7 +114,7 @@
}
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Inform the view that the activity is resumed. The owner of this view must
* call this method when the activity is resumed. Calling this method will
* recreate the OpenGL display and resume the rendering
@@ -127,7 +127,7 @@
}
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Create a new RenderScriptGL object and attach it to the
* TextureView if present.
*
@@ -145,7 +145,7 @@
return rs;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Destroy the RenderScriptGL object associated with this
* TextureView.
*/
@@ -154,7 +154,7 @@
mRS = null;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Set a new RenderScriptGL object. This also will attach the
* new object to the TextureView if present.
*
@@ -167,7 +167,7 @@
}
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Returns the previously set RenderScriptGL object.
*
* @return RenderScriptGL
diff --git a/graphics/java/android/renderscript/RenderScript.java b/graphics/java/android/renderscript/RenderScript.java
index 9a5b349..2032f67 100644
--- a/graphics/java/android/renderscript/RenderScript.java
+++ b/graphics/java/android/renderscript/RenderScript.java
@@ -32,7 +32,7 @@
-/** @deprecated renderscript is deprecated in J
+/**
* Renderscript base master class. An instance of this class creates native
* worker threads for processing commands from this object. This base class
* does not provide any extended capabilities beyond simple data processing.
@@ -541,6 +541,13 @@
validate();
rsnScriptSetVarV(mContext, id, slot, val);
}
+ native void rsnScriptSetVarVE(int con, int id, int slot, byte[] val,
+ int e, int[] dims);
+ synchronized void nScriptSetVarVE(int id, int slot, byte[] val,
+ int e, int[] dims) {
+ validate();
+ rsnScriptSetVarVE(mContext, id, slot, val, e, dims);
+ }
native void rsnScriptSetVarObj(int con, int id, int slot, int val);
synchronized void nScriptSetVarObj(int id, int slot, int val) {
validate();
@@ -736,7 +743,7 @@
///////////////////////////////////////////////////////////////////////////////////
//
- /** @deprecated renderscript is deprecated in J
+ /**
* Base class application should derive from for handling RS messages
* coming from their scripts. When a script calls sendToClient the data
* fields will be filled in and then the run method called by a message
@@ -751,7 +758,7 @@
public void run() {
}
}
- /** @deprecated renderscript is deprecated in J
+ /**
* If an application is expecting messages it should set this field to an
* instance of RSMessage. This instance will receive all the user messages
* sent from sendToClient by scripts from this context.
@@ -766,7 +773,7 @@
return mMessageCallback;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Runtime error base class. An application should derive from this class
* if it wishes to install an error handler. When errors occur at runtime
* the fields in this class will be filled and the run method called.
@@ -779,7 +786,7 @@
}
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Application Error handler. All runtime errors will be dispatched to the
* instance of RSAsyncError set here. If this field is null a
* RSRuntimeException will instead be thrown with details about the error.
@@ -795,7 +802,7 @@
return mErrorCallback;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* RenderScript worker threads priority enumeration. The default value is
* NORMAL. Applications wishing to do background processing such as
* wallpapers should set their priority to LOW to avoid starving forground
@@ -818,7 +825,7 @@
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Change the priority of the worker threads for this context.
*
* @param p New priority to be set.
@@ -915,7 +922,7 @@
}
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Gets the application context associated with the RenderScript context.
*
* @return The application context.
@@ -924,7 +931,7 @@
return mApplicationContext;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Create a basic RenderScript context.
*
* @hide
@@ -944,7 +951,7 @@
return rs;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Create a basic RenderScript context.
*
* @param ctx The context.
@@ -955,7 +962,7 @@
return create(ctx, v);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Print the currently available debugging information about the state of
* the RS context to the log.
*
@@ -965,7 +972,7 @@
nContextDump(0);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Wait for any commands in the fifo between the java bindings and native to
* be processed.
*
@@ -974,7 +981,7 @@
nContextFinish();
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Destroy this renderscript context. Once this function is called its no
* longer legal to use this or any objects created by this context.
*
diff --git a/graphics/java/android/renderscript/RenderScriptGL.java b/graphics/java/android/renderscript/RenderScriptGL.java
index ac1a392..dbdbe3d 100644
--- a/graphics/java/android/renderscript/RenderScriptGL.java
+++ b/graphics/java/android/renderscript/RenderScriptGL.java
@@ -28,7 +28,7 @@
import android.view.SurfaceHolder;
import android.view.SurfaceView;
-/** @deprecated renderscript is deprecated in J
+/**
* The Graphics derivitive of Renderscript. Extends the basic context to add a
* root script which is the display window for graphical output. When the
* system needs to update the display the currently bound root script will be
@@ -45,7 +45,7 @@
int mWidth;
int mHeight;
- /** @deprecated renderscript is deprecated in J
+ /**
* Class which is used to describe a pixel format for a graphical buffer.
* This is used to describe the intended format of the display surface.
*
@@ -92,7 +92,7 @@
}
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Set the per-component bit depth for color (red, green, blue). This
* configures the surface for an unsigned integer buffer type.
*
@@ -105,7 +105,7 @@
mColorPref = preferred;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Set the bit depth for alpha. This configures the surface for
* an unsigned integer buffer type.
*
@@ -118,7 +118,7 @@
mAlphaPref = preferred;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Set the bit depth for the depth buffer. This configures the
* surface for an unsigned integer buffer type. If a minimum of 0
* is specified then its possible no depth buffer will be
@@ -133,7 +133,7 @@
mDepthPref = preferred;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Configure the multisample rendering.
*
* @param minimum The required number of samples, must be at least 1.
@@ -156,7 +156,7 @@
SurfaceConfig mSurfaceConfig;
- /** @deprecated renderscript is deprecated in J
+ /**
* Construct a new RenderScriptGL context.
*
* @param ctx The context.
@@ -186,7 +186,7 @@
mMessageThread.start();
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Bind an os surface
*
*
@@ -205,7 +205,8 @@
nContextSetSurface(w, h, s);
}
- /** @deprecated renderscript is deprecated in J
+ /**
+ * @deprecated in API 16
* Bind an os surface
*
* @param w
@@ -221,7 +222,7 @@
nContextSetSurfaceTexture(w, h, sur);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* return the height of the last set surface.
*
* @return int
@@ -230,7 +231,7 @@
return mHeight;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* return the width of the last set surface.
*
* @return int
@@ -239,7 +240,7 @@
return mWidth;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Temporarly halt calls to the root rendering script.
*
*/
@@ -248,7 +249,7 @@
nContextPause();
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Resume calls to the root rendering script.
*
*/
@@ -258,7 +259,7 @@
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Set the script to handle calls to render the primary surface.
*
* @param s Graphics script to process rendering requests.
@@ -268,7 +269,7 @@
nContextBindRootScript(safeID(s));
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Set the default ProgramStore object seen as the parent state by the root
* rendering script.
*
@@ -279,7 +280,7 @@
nContextBindProgramStore(safeID(p));
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Set the default ProgramFragment object seen as the parent state by the
* root rendering script.
*
@@ -290,7 +291,7 @@
nContextBindProgramFragment(safeID(p));
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Set the default ProgramRaster object seen as the parent state by the
* root rendering script.
*
@@ -301,7 +302,7 @@
nContextBindProgramRaster(safeID(p));
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Set the default ProgramVertex object seen as the parent state by the
* root rendering script.
*
diff --git a/graphics/java/android/renderscript/Sampler.java b/graphics/java/android/renderscript/Sampler.java
index 6b258ab..0df1012 100644
--- a/graphics/java/android/renderscript/Sampler.java
+++ b/graphics/java/android/renderscript/Sampler.java
@@ -27,32 +27,18 @@
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
-/** @deprecated renderscript is deprecated in J
+/**
* Sampler object which defines how data is extracted from textures. Samplers
* are attached to Program objects (currently only ProgramFragment) when those objects
* need to access texture data.
**/
public class Sampler extends BaseObj {
- /** @deprecated renderscript is deprecated in J
- */
public enum Value {
- /** @deprecated renderscript is deprecated in J
- */
NEAREST (0),
- /** @deprecated renderscript is deprecated in J
- */
LINEAR (1),
- /** @deprecated renderscript is deprecated in J
- */
LINEAR_MIP_LINEAR (2),
- /** @deprecated renderscript is deprecated in J
- */
LINEAR_MIP_NEAREST (5),
- /** @deprecated renderscript is deprecated in J
- */
WRAP (3),
- /** @deprecated renderscript is deprecated in J
- */
CLAMP (4);
int mID;
@@ -72,42 +58,42 @@
super(id, rs);
}
- /** @hide renderscript is deprecated in J
+ /**
* @return minification setting for the sampler
*/
public Value getMinification() {
return mMin;
}
- /** @hide renderscript is deprecated in J
+ /**
* @return magnification setting for the sampler
*/
public Value getMagnification() {
return mMag;
}
- /** @hide renderscript is deprecated in J
+ /**
* @return S wrapping mode for the sampler
*/
public Value getWrapS() {
return mWrapS;
}
- /** @hide renderscript is deprecated in J
+ /**
* @return T wrapping mode for the sampler
*/
public Value getWrapT() {
return mWrapT;
}
- /** @hide renderscript is deprecated in J
+ /**
* @return anisotropy setting for the sampler
*/
public float getAnisotropy() {
return mAniso;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Retrieve a sampler with min and mag set to nearest and wrap modes set to
* clamp.
*
@@ -127,7 +113,7 @@
return rs.mSampler_CLAMP_NEAREST;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Retrieve a sampler with min and mag set to linear and wrap modes set to
* clamp.
*
@@ -147,7 +133,7 @@
return rs.mSampler_CLAMP_LINEAR;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Retrieve a sampler with ag set to linear, min linear mipmap linear, and
* to and wrap modes set to clamp.
*
@@ -167,7 +153,7 @@
return rs.mSampler_CLAMP_LINEAR_MIP_LINEAR;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Retrieve a sampler with min and mag set to nearest and wrap modes set to
* wrap.
*
@@ -187,7 +173,7 @@
return rs.mSampler_WRAP_NEAREST;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Retrieve a sampler with min and mag set to nearest and wrap modes set to
* wrap.
*
@@ -207,7 +193,7 @@
return rs.mSampler_WRAP_LINEAR;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Retrieve a sampler with ag set to linear, min linear mipmap linear, and
* to and wrap modes set to wrap.
*
@@ -228,7 +214,7 @@
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Builder for creating non-standard samplers. Usefull if mix and match of
* wrap modes is necesary or if anisotropic filtering is desired.
*
diff --git a/graphics/java/android/renderscript/Script.java b/graphics/java/android/renderscript/Script.java
index 34d33a9..bbf5e7e 100644
--- a/graphics/java/android/renderscript/Script.java
+++ b/graphics/java/android/renderscript/Script.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008 The Android Open Source Project
+ * Copyright (C) 2008-2012 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.
@@ -16,11 +16,11 @@
package android.renderscript;
-/** @deprecated renderscript is deprecated in J
+/**
*
**/
public class Script extends BaseObj {
- /** @deprecated renderscript is deprecated in J
+ /**
* Only intended for use by generated reflected code.
*
* @param slot
@@ -29,7 +29,7 @@
mRS.nScriptInvoke(getID(mRS), slot);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Only intended for use by generated reflected code.
*
* @param slot
@@ -43,7 +43,7 @@
}
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Only intended for use by generated reflected code.
*
* @param slot
@@ -77,7 +77,7 @@
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Only intended for use by generated reflected code.
*
* @param va
@@ -92,7 +92,7 @@
}
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Only intended for use by generated reflected code.
*
* @param index
@@ -102,7 +102,7 @@
mRS.nScriptSetVarF(getID(mRS), index, v);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Only intended for use by generated reflected code.
*
* @param index
@@ -112,7 +112,7 @@
mRS.nScriptSetVarD(getID(mRS), index, v);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Only intended for use by generated reflected code.
*
* @param index
@@ -122,7 +122,7 @@
mRS.nScriptSetVarI(getID(mRS), index, v);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Only intended for use by generated reflected code.
*
* @param index
@@ -132,7 +132,7 @@
mRS.nScriptSetVarJ(getID(mRS), index, v);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Only intended for use by generated reflected code.
*
* @param index
@@ -142,7 +142,7 @@
mRS.nScriptSetVarI(getID(mRS), index, v ? 1 : 0);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Only intended for use by generated reflected code.
*
* @param index
@@ -152,7 +152,7 @@
mRS.nScriptSetVarObj(getID(mRS), index, (o == null) ? 0 : o.getID(mRS));
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Only intended for use by generated reflected code.
*
* @param index
@@ -162,8 +162,18 @@
mRS.nScriptSetVarV(getID(mRS), index, v.getData());
}
- /** @deprecated renderscript is deprecated in J
- */
+ /**
+ * Only intended for use by generated reflected code.
+ *
+ * @param index
+ * @param v
+ * @param e
+ * @param dims
+ */
+ public void setVar(int index, FieldPacker v, Element e, int[] dims) {
+ mRS.nScriptSetVarVE(getID(mRS), index, v.getData(), e.getID(mRS), dims);
+ }
+
public void setTimeZone(String timeZone) {
mRS.validate();
try {
diff --git a/graphics/java/android/renderscript/ScriptC.java b/graphics/java/android/renderscript/ScriptC.java
index b1d1fa5..108b230 100644
--- a/graphics/java/android/renderscript/ScriptC.java
+++ b/graphics/java/android/renderscript/ScriptC.java
@@ -29,13 +29,13 @@
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
-/** @deprecated renderscript is deprecated in J
+/**
*
**/
public class ScriptC extends Script {
private static final String TAG = "ScriptC";
- /** @deprecated renderscript is deprecated in J
+ /**
* Only intended for use by the generated derived classes.
*
* @param id
@@ -45,7 +45,7 @@
super(id, rs);
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Only intended for use by the generated derived classes.
*
*
diff --git a/graphics/java/android/renderscript/Short2.java b/graphics/java/android/renderscript/Short2.java
index 21c5f05..617f1f5 100644
--- a/graphics/java/android/renderscript/Short2.java
+++ b/graphics/java/android/renderscript/Short2.java
@@ -20,7 +20,7 @@
import android.util.Log;
-/** @deprecated renderscript is deprecated in J
+/**
* Class for exposing the native Renderscript Short2 type back to the Android system.
*
**/
diff --git a/graphics/java/android/renderscript/Short3.java b/graphics/java/android/renderscript/Short3.java
index 81a2954..b9ca49b 100644
--- a/graphics/java/android/renderscript/Short3.java
+++ b/graphics/java/android/renderscript/Short3.java
@@ -20,7 +20,7 @@
import android.util.Log;
-/** @deprecated renderscript is deprecated in J
+/**
* Class for exposing the native Renderscript short3 type back to the Android system.
*
**/
diff --git a/graphics/java/android/renderscript/Short4.java b/graphics/java/android/renderscript/Short4.java
index 861c3d7..d5f2db5 100644
--- a/graphics/java/android/renderscript/Short4.java
+++ b/graphics/java/android/renderscript/Short4.java
@@ -20,7 +20,7 @@
import android.util.Log;
-/** @deprecated renderscript is deprecated in J
+/**
* Class for exposing the native Renderscript short4 type back to the Android system.
*
**/
diff --git a/graphics/java/android/renderscript/Type.java b/graphics/java/android/renderscript/Type.java
index 9f630e7..a707df2 100644
--- a/graphics/java/android/renderscript/Type.java
+++ b/graphics/java/android/renderscript/Type.java
@@ -20,7 +20,7 @@
import java.lang.reflect.Field;
import android.util.Log;
-/** @deprecated renderscript is deprecated in J
+/**
* <p>Type is an allocation template. It consists of an Element and one or more
* dimensions. It describes only the layout of memory but does not allocate any
* storage for the data that is described.</p>
@@ -70,7 +70,7 @@
}
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Return the element associated with this Type.
*
* @return Element
@@ -79,7 +79,7 @@
return mElement;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Return the value of the X dimension.
*
* @return int
@@ -88,7 +88,7 @@
return mDimX;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Return the value of the Y dimension or 0 for a 1D allocation.
*
* @return int
@@ -97,7 +97,7 @@
return mDimY;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Return the value of the Z dimension or 0 for a 1D or 2D allocation.
*
* @return int
@@ -106,7 +106,7 @@
return mDimZ;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Return if the Type has a mipmap chain.
*
* @return boolean
@@ -115,7 +115,7 @@
return mDimMipmaps;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Return if the Type is a cube map.
*
* @return boolean
@@ -124,7 +124,7 @@
return mDimFaces;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Return the total number of accessable cells in the Type.
*
* @return int
@@ -196,7 +196,7 @@
calcElementCount();
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Builder class for Type.
*
*/
@@ -210,7 +210,7 @@
Element mElement;
- /** @deprecated renderscript is deprecated in J
+ /**
* Create a new builder object.
*
* @param rs
@@ -222,7 +222,7 @@
mElement = e;
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Add a dimension to the Type.
*
*
@@ -255,7 +255,7 @@
}
- /** @deprecated renderscript is deprecated in J
+ /**
* Validate structure and create a new type.
*
* @return Type
diff --git a/graphics/jni/android_renderscript_RenderScript.cpp b/graphics/jni/android_renderscript_RenderScript.cpp
index 1b7ef22..3d5d1a9 100644
--- a/graphics/jni/android_renderscript_RenderScript.cpp
+++ b/graphics/jni/android_renderscript_RenderScript.cpp
@@ -953,6 +953,20 @@
_env->ReleaseByteArrayElements(data, ptr, JNI_ABORT);
}
+static void
+nScriptSetVarVE(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slot, jbyteArray data, jint elem, jintArray dims)
+{
+ LOG_API("nScriptSetVarVE, con(%p), s(%p), slot(%i)", con, (void *)script, slot);
+ jint len = _env->GetArrayLength(data);
+ jbyte *ptr = _env->GetByteArrayElements(data, NULL);
+ jint dimsLen = _env->GetArrayLength(dims) * sizeof(int);
+ jint *dimsPtr = _env->GetIntArrayElements(dims, NULL);
+ rsScriptSetVarVE(con, (RsScript)script, slot, ptr, len, (RsElement)elem,
+ (const size_t*) dimsPtr, dimsLen);
+ _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT);
+ _env->ReleaseIntArrayElements(dims, dimsPtr, JNI_ABORT);
+}
+
static void
nScriptSetTimeZone(JNIEnv *_env, jobject _this, RsContext con, jint script, jbyteArray timeZone)
@@ -1394,6 +1408,7 @@
{"rsnScriptSetVarF", "(IIIF)V", (void*)nScriptSetVarF },
{"rsnScriptSetVarD", "(IIID)V", (void*)nScriptSetVarD },
{"rsnScriptSetVarV", "(III[B)V", (void*)nScriptSetVarV },
+{"rsnScriptSetVarVE", "(III[BI[I)V", (void*)nScriptSetVarVE },
{"rsnScriptSetVarObj", "(IIII)V", (void*)nScriptSetVarObj },
{"rsnScriptCCreate", "(ILjava/lang/String;Ljava/lang/String;[BI)I", (void*)nScriptCCreate },
diff --git a/include/androidfw/Input.h b/include/androidfw/Input.h
index 044f2bf..601a169 100644
--- a/include/androidfw/Input.h
+++ b/include/androidfw/Input.h
@@ -157,37 +157,6 @@
};
/*
- * Describes the basic configuration of input devices that are present.
- */
-struct InputConfiguration {
- enum {
- TOUCHSCREEN_UNDEFINED = 0,
- TOUCHSCREEN_NOTOUCH = 1,
- TOUCHSCREEN_STYLUS = 2,
- TOUCHSCREEN_FINGER = 3
- };
-
- enum {
- KEYBOARD_UNDEFINED = 0,
- KEYBOARD_NOKEYS = 1,
- KEYBOARD_QWERTY = 2,
- KEYBOARD_12KEY = 3
- };
-
- enum {
- NAVIGATION_UNDEFINED = 0,
- NAVIGATION_NONAV = 1,
- NAVIGATION_DPAD = 2,
- NAVIGATION_TRACKBALL = 3,
- NAVIGATION_WHEEL = 4
- };
-
- int32_t touchScreen;
- int32_t keyboard;
- int32_t navigation;
-};
-
-/*
* Pointer coordinate data.
*/
struct PointerCoords {
diff --git a/include/androidfw/InputDevice.h b/include/androidfw/InputDevice.h
index d6ecbf0..1aecf80 100644
--- a/include/androidfw/InputDevice.h
+++ b/include/androidfw/InputDevice.h
@@ -67,7 +67,7 @@
};
void initialize(int32_t id, int32_t generation, const InputDeviceIdentifier& identifier,
- const String8& alias);
+ const String8& alias, bool isExternal);
inline int32_t getId() const { return mId; }
inline int32_t getGeneration() const { return mGeneration; }
@@ -76,6 +76,7 @@
inline const String8& getDisplayName() const {
return mAlias.isEmpty() ? mIdentifier.name : mAlias;
}
+ inline bool isExternal() const { return mIsExternal; }
inline uint32_t getSources() const { return mSources; }
const MotionRange* getMotionRange(int32_t axis, uint32_t source) const;
@@ -108,6 +109,7 @@
int32_t mGeneration;
InputDeviceIdentifier mIdentifier;
String8 mAlias;
+ bool mIsExternal;
uint32_t mSources;
int32_t mKeyboardType;
sp<KeyCharacterMap> mKeyCharacterMap;
diff --git a/include/utils/Trace.h b/include/utils/Trace.h
deleted file mode 100644
index a0112d0..0000000
--- a/include/utils/Trace.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2012 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.
- */
-
-#ifndef ANDROID_TRACE_H
-#define ANDROID_TRACE_H
-
-#define ATRACE_TAG_NEVER 0 // The "never" tag is never enabled.
-#define ATRACE_TAG_ALWAYS (1<<0) // The "always" tag is always enabled.
-#define ATRACE_TAG_GRAPHICS (1<<1)
-#define ATRACE_TAG_INPUT (1<<2)
-#define ATRACE_TAG_VIEW (1<<3)
-#define ATRACE_TAG_WEBVIEW (1<<4)
-
-#define ATRACE_CALL()
-
-#define ATRACE_INT(name, value)
-
-#define ATRACE_ENABLED() false
-
-namespace android {
-
-class ScopedTrace {
-
-public:
- inline ScopedTrace(uint64_t tag, const char* name) {}
-};
-
-}; // namespace android
-
-#endif // ANDROID_TRACE_H
diff --git a/libs/androidfw/InputDevice.cpp b/libs/androidfw/InputDevice.cpp
index 928157f..fe891cb 100644
--- a/libs/androidfw/InputDevice.cpp
+++ b/libs/androidfw/InputDevice.cpp
@@ -127,12 +127,12 @@
// --- InputDeviceInfo ---
InputDeviceInfo::InputDeviceInfo() {
- initialize(-1, -1, InputDeviceIdentifier(), String8());
+ initialize(-1, -1, InputDeviceIdentifier(), String8(), false);
}
InputDeviceInfo::InputDeviceInfo(const InputDeviceInfo& other) :
mId(other.mId), mGeneration(other.mGeneration), mIdentifier(other.mIdentifier),
- mAlias(other.mAlias), mSources(other.mSources),
+ mAlias(other.mAlias), mIsExternal(other.mIsExternal), mSources(other.mSources),
mKeyboardType(other.mKeyboardType),
mKeyCharacterMap(other.mKeyCharacterMap),
mHasVibrator(other.mHasVibrator),
@@ -143,11 +143,12 @@
}
void InputDeviceInfo::initialize(int32_t id, int32_t generation,
- const InputDeviceIdentifier& identifier, const String8& alias) {
+ const InputDeviceIdentifier& identifier, const String8& alias, bool isExternal) {
mId = id;
mGeneration = generation;
mIdentifier = identifier;
mAlias = alias;
+ mIsExternal = isExternal;
mSources = 0;
mKeyboardType = AINPUT_KEYBOARD_TYPE_NONE;
mHasVibrator = false;
diff --git a/libs/hwui/DisplayListRenderer.cpp b/libs/hwui/DisplayListRenderer.cpp
index 7e19932..f6ca77c 100644
--- a/libs/hwui/DisplayListRenderer.cpp
+++ b/libs/hwui/DisplayListRenderer.cpp
@@ -184,6 +184,11 @@
}
mPaths.clear();
+ for (size_t i = 0; i < mSourcePaths.size(); i++) {
+ caches.resourceCache.decrementRefcount(mSourcePaths.itemAt(i));
+ }
+ mSourcePaths.clear();
+
for (size_t i = 0; i < mMatrices.size(); i++) {
delete mMatrices.itemAt(i);
}
@@ -242,6 +247,12 @@
mPaths.add(paths.itemAt(i));
}
+ const SortedVector<SkPath*> &sourcePaths = recorder.getSourcePaths();
+ for (size_t i = 0; i < sourcePaths.size(); i++) {
+ mSourcePaths.add(sourcePaths.itemAt(i));
+ caches.resourceCache.incrementRefcount(sourcePaths.itemAt(i));
+ }
+
const Vector<SkMatrix*> &matrices = recorder.getMatrices();
for (size_t i = 0; i < matrices.size(); i++) {
mMatrices.add(matrices.itemAt(i));
@@ -962,7 +973,7 @@
float x = getFloat();
float y = getFloat();
SkPaint* paint = getPaint(renderer);
- if (mCaching && mMultipliedAlpha < 255) {
+ if (mCaching) {
paint->setAlpha(mMultipliedAlpha);
}
DISPLAY_LIST_LOGD("%s%s %p, %.2f, %.2f, %p", (char*) indent, OP_NAMES[op],
@@ -975,7 +986,7 @@
float x = getFloat();
float y = getFloat();
SkPaint* paint = getPaint(renderer);
- if (mCaching && mMultipliedAlpha < 255) {
+ if (mCaching) {
paint->setAlpha(mMultipliedAlpha);
}
DISPLAY_LIST_LOGD("%s%s %p, %.2f, %.2f, %p", (char*) indent, OP_NAMES[op],
@@ -1273,6 +1284,11 @@
mShaders.clear();
mShaderMap.clear();
+ for (size_t i = 0; i < mSourcePaths.size(); i++) {
+ caches.resourceCache.decrementRefcount(mSourcePaths.itemAt(i));
+ }
+ mSourcePaths.clear();
+
mPaints.clear();
mPaintMap.clear();
diff --git a/libs/hwui/DisplayListRenderer.h b/libs/hwui/DisplayListRenderer.h
index a7fc23a..5ce770d 100644
--- a/libs/hwui/DisplayListRenderer.h
+++ b/libs/hwui/DisplayListRenderer.h
@@ -255,7 +255,7 @@
if (scaleY != mScaleY) {
mScaleY = scaleY;
mMatrixDirty = true;
- if (ALMOST_EQUAL(mScaleX, 1) && ALMOST_EQUAL(mScaleY, 1)) {
+ if (mScaleX == 1.0f && mScaleY == 1.0f) {
mMatrixFlags &= ~SCALE;
} else {
mMatrixFlags |= SCALE;
@@ -487,6 +487,7 @@
Vector<SkPaint*> mPaints;
Vector<SkPath*> mPaths;
+ SortedVector<SkPath*> mSourcePaths;
Vector<SkMatrix*> mMatrices;
Vector<SkiaShader*> mShaders;
@@ -634,6 +635,10 @@
return mPaths;
}
+ const SortedVector<SkPath*>& getSourcePaths() const {
+ return mSourcePaths;
+ }
+
const Vector<SkMatrix*>& getMatrices() const {
return mMatrices;
}
@@ -750,6 +755,10 @@
mPathMap.replaceValueFor(path, pathCopy);
mPaths.add(pathCopy);
}
+ if (mSourcePaths.indexOf(path) < 0) {
+ Caches::getInstance().resourceCache.incrementRefcount(path);
+ mSourcePaths.add(path);
+ }
addInt((int) pathCopy);
}
@@ -830,6 +839,8 @@
Vector<SkPath*> mPaths;
DefaultKeyedVector<SkPath*, SkPath*> mPathMap;
+ SortedVector<SkPath*> mSourcePaths;
+
Vector<SkiaShader*> mShaders;
DefaultKeyedVector<SkiaShader*, SkiaShader*> mShaderMap;
diff --git a/libs/hwui/Matrix.cpp b/libs/hwui/Matrix.cpp
index a8f937d..7348f4d 100644
--- a/libs/hwui/Matrix.cpp
+++ b/libs/hwui/Matrix.cpp
@@ -56,16 +56,13 @@
}
bool Matrix4::changesBounds() {
- return !(ALMOST_EQUAL(data[0], 1.0f) && ALMOST_EQUAL(data[1], 0.0f) &&
- ALMOST_EQUAL(data[2], 0.0f) && ALMOST_EQUAL(data[4], 0.0f) &&
- ALMOST_EQUAL(data[5], 1.0f) && ALMOST_EQUAL(data[6], 0.0f) &&
- ALMOST_EQUAL(data[8], 0.0f) && ALMOST_EQUAL(data[9], 0.0f) &&
- ALMOST_EQUAL(data[10], 1.0f));
+ return !(data[0] == 1.0f && data[1] == 0.0f && data[2] == 0.0f && data[4] == 0.0f &&
+ data[5] == 1.0f && data[6] == 0.0f && data[8] == 0.0f && data[9] == 0.0f &&
+ data[10] == 1.0f);
}
bool Matrix4::isPureTranslate() {
- return mSimpleMatrix &&
- ALMOST_EQUAL(data[kScaleX], 1.0f) && ALMOST_EQUAL(data[kScaleY], 1.0f);
+ return mSimpleMatrix && data[kScaleX] == 1.0f && data[kScaleY] == 1.0f;
}
bool Matrix4::isSimple() {
diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java
index f603525..ef5da5b 100644
--- a/media/java/android/media/AudioManager.java
+++ b/media/java/android/media/AudioManager.java
@@ -88,6 +88,8 @@
*
* @see #EXTRA_VIBRATE_TYPE
* @see #EXTRA_VIBRATE_SETTING
+ * @deprecated Applications should maintain their own vibrate policy based on
+ * current ringer mode and listen to {@link #RINGER_MODE_CHANGED_ACTION} instead.
*/
@SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
public static final String VIBRATE_SETTING_CHANGED_ACTION =
@@ -133,6 +135,8 @@
* @see #VIBRATE_SETTING_ON
* @see #VIBRATE_SETTING_OFF
* @see #VIBRATE_SETTING_ONLY_SILENT
+ * @deprecated Applications should maintain their own vibrate policy based on
+ * current ringer mode and listen to {@link #RINGER_MODE_CHANGED_ACTION} instead.
*/
public static final String EXTRA_VIBRATE_SETTING = "android.media.EXTRA_VIBRATE_SETTING";
@@ -142,6 +146,8 @@
* @see #VIBRATE_SETTING_CHANGED_ACTION
* @see #VIBRATE_TYPE_NOTIFICATION
* @see #VIBRATE_TYPE_RINGER
+ * @deprecated Applications should maintain their own vibrate policy based on
+ * current ringer mode and listen to {@link #RINGER_MODE_CHANGED_ACTION} instead.
*/
public static final String EXTRA_VIBRATE_TYPE = "android.media.EXTRA_VIBRATE_TYPE";
@@ -340,6 +346,8 @@
* @see #setVibrateSetting(int, int)
* @see #getVibrateSetting(int)
* @see #shouldVibrate(int)
+ * @deprecated Applications should maintain their own vibrate policy based on
+ * current ringer mode that can be queried via {@link #getRingerMode()}.
*/
public static final int VIBRATE_TYPE_RINGER = 0;
@@ -349,6 +357,8 @@
* @see #setVibrateSetting(int, int)
* @see #getVibrateSetting(int)
* @see #shouldVibrate(int)
+ * @deprecated Applications should maintain their own vibrate policy based on
+ * current ringer mode that can be queried via {@link #getRingerMode()}.
*/
public static final int VIBRATE_TYPE_NOTIFICATION = 1;
@@ -357,6 +367,8 @@
*
* @see #setVibrateSetting(int, int)
* @see #getVibrateSetting(int)
+ * @deprecated Applications should maintain their own vibrate policy based on
+ * current ringer mode that can be queried via {@link #getRingerMode()}.
*/
public static final int VIBRATE_SETTING_OFF = 0;
@@ -365,6 +377,8 @@
*
* @see #setVibrateSetting(int, int)
* @see #getVibrateSetting(int)
+ * @deprecated Applications should maintain their own vibrate policy based on
+ * current ringer mode that can be queried via {@link #getRingerMode()}.
*/
public static final int VIBRATE_SETTING_ON = 1;
@@ -374,6 +388,8 @@
*
* @see #setVibrateSetting(int, int)
* @see #getVibrateSetting(int)
+ * @deprecated Applications should maintain their own vibrate policy based on
+ * current ringer mode that can be queried via {@link #getRingerMode()}.
*/
public static final int VIBRATE_SETTING_ONLY_SILENT = 2;
@@ -966,6 +982,8 @@
* called.
* @see #setVibrateSetting(int, int)
* @see #getVibrateSetting(int)
+ * @deprecated Applications should maintain their own vibrate policy based on
+ * current ringer mode that can be queried via {@link #getRingerMode()}.
*/
public boolean shouldVibrate(int vibrateType) {
IAudioService service = getService();
@@ -991,6 +1009,8 @@
* {@link #VIBRATE_SETTING_ONLY_SILENT}.
* @see #setVibrateSetting(int, int)
* @see #shouldVibrate(int)
+ * @deprecated Applications should maintain their own vibrate policy based on
+ * current ringer mode that can be queried via {@link #getRingerMode()}.
*/
public int getVibrateSetting(int vibrateType) {
IAudioService service = getService();
@@ -1017,6 +1037,8 @@
* {@link #VIBRATE_SETTING_ONLY_SILENT}.
* @see #getVibrateSetting(int)
* @see #shouldVibrate(int)
+ * @deprecated Applications should maintain their own vibrate policy based on
+ * current ringer mode that can be queried via {@link #getRingerMode()}.
*/
public void setVibrateSetting(int vibrateType, int vibrateSetting) {
IAudioService service = getService();
diff --git a/media/java/android/media/AudioService.java b/media/java/android/media/AudioService.java
index dc9496f..1892fce 100644
--- a/media/java/android/media/AudioService.java
+++ b/media/java/android/media/AudioService.java
@@ -21,10 +21,12 @@
import static android.media.AudioManager.RINGER_MODE_SILENT;
import static android.media.AudioManager.RINGER_MODE_VIBRATE;
+import android.app.Activity;
import android.app.ActivityManagerNative;
import android.app.KeyguardManager;
import android.app.PendingIntent;
import android.app.PendingIntent.CanceledException;
+import android.app.PendingIntent.OnFinished;
import android.bluetooth.BluetoothA2dp;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothClass;
@@ -38,6 +40,7 @@
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
+import android.content.res.Configuration;
import android.database.ContentObserver;
import android.media.MediaPlayer.OnCompletionListener;
import android.media.MediaPlayer.OnErrorListener;
@@ -48,9 +51,11 @@
import android.os.IBinder;
import android.os.Looper;
import android.os.Message;
+import android.os.PowerManager;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.SystemProperties;
+import android.os.Vibrator;
import android.provider.Settings;
import android.provider.Settings.System;
import android.telephony.PhoneStateListener;
@@ -85,7 +90,7 @@
*
* @hide
*/
-public class AudioService extends IAudioService.Stub {
+public class AudioService extends IAudioService.Stub implements OnFinished {
private static final String TAG = "AudioService";
@@ -115,19 +120,18 @@
private static final int MSG_PERSIST_VOLUME = 1;
private static final int MSG_PERSIST_MASTER_VOLUME = 2;
private static final int MSG_PERSIST_RINGER_MODE = 3;
- private static final int MSG_PERSIST_VIBRATE_SETTING = 4;
- private static final int MSG_MEDIA_SERVER_DIED = 5;
- private static final int MSG_MEDIA_SERVER_STARTED = 6;
- private static final int MSG_PLAY_SOUND_EFFECT = 7;
- private static final int MSG_BTA2DP_DOCK_TIMEOUT = 8;
- private static final int MSG_LOAD_SOUND_EFFECTS = 9;
- private static final int MSG_SET_FORCE_USE = 10;
- private static final int MSG_PERSIST_MEDIABUTTONRECEIVER = 11;
- private static final int MSG_BT_HEADSET_CNCT_FAILED = 12;
- private static final int MSG_RCDISPLAY_CLEAR = 13;
- private static final int MSG_RCDISPLAY_UPDATE = 14;
- private static final int MSG_SET_ALL_VOLUMES = 15;
- private static final int MSG_PERSIST_MASTER_VOLUME_MUTE = 16;
+ private static final int MSG_MEDIA_SERVER_DIED = 4;
+ private static final int MSG_MEDIA_SERVER_STARTED = 5;
+ private static final int MSG_PLAY_SOUND_EFFECT = 6;
+ private static final int MSG_BTA2DP_DOCK_TIMEOUT = 7;
+ private static final int MSG_LOAD_SOUND_EFFECTS = 8;
+ private static final int MSG_SET_FORCE_USE = 9;
+ private static final int MSG_PERSIST_MEDIABUTTONRECEIVER = 10;
+ private static final int MSG_BT_HEADSET_CNCT_FAILED = 11;
+ private static final int MSG_RCDISPLAY_CLEAR = 12;
+ private static final int MSG_RCDISPLAY_UPDATE = 13;
+ private static final int MSG_SET_ALL_VOLUMES = 14;
+ private static final int MSG_PERSIST_MASTER_VOLUME_MUTE = 15;
// flags for MSG_PERSIST_VOLUME indicating if current and/or last audible volume should be
@@ -237,6 +241,20 @@
};
private int[] mStreamVolumeAlias;
+ // stream names used by dumpStreamStates()
+ private final String[] STREAM_NAMES = new String[] {
+ "STREAM_VOICE_CALL",
+ "STREAM_SYSTEM",
+ "STREAM_RING",
+ "STREAM_MUSIC",
+ "STREAM_ALARM",
+ "STREAM_NOTIFICATION",
+ "STREAM_BLUETOOTH_SCO",
+ "STREAM_SYSTEM_ENFORCED",
+ "STREAM_DTMF",
+ "STREAM_TTS"
+ };
+
private final AudioSystem.ErrorCallback mAudioSystemCallback = new AudioSystem.ErrorCallback() {
public void onError(int error) {
switch (error) {
@@ -278,21 +296,18 @@
private int mMuteAffectedStreams;
/**
- * Has multiple bits per vibrate type to indicate the type's vibrate
- * setting. See {@link #setVibrateSetting(int, int)}.
- * <p>
- * NOTE: This is not the final decision of whether vibrate is on/off for the
- * type since it depends on the ringer mode. See {@link #shouldVibrate(int)}.
+ * NOTE: setVibrateSetting(), getVibrateSetting(), shouldVibrate() are deprecated.
+ * mVibrateSetting is just maintained during deprecation period but vibration policy is
+ * now only controlled by mHasVibrator and mRingerMode
*/
private int mVibrateSetting;
+ // Is there a vibrator
+ private final boolean mHasVibrator;
+
// Broadcast receiver for device connections intent broadcasts
private final BroadcastReceiver mReceiver = new AudioServiceBroadcastReceiver();
- // Broadcast receiver for media button broadcasts (separate from mReceiver to
- // independently change its priority)
- private final BroadcastReceiver mMediaButtonReceiver = new MediaButtonBroadcastReceiver();
-
// Used to alter media button redirection when the phone is ringing.
private boolean mIsRinging = false;
@@ -372,6 +387,8 @@
// Used to play ringtones outside system_server
private volatile IRingtonePlayer mRingtonePlayer;
+ private int mDeviceOrientation = Configuration.ORIENTATION_UNDEFINED;
+
///////////////////////////////////////////////////////////////////////////
// Construction
///////////////////////////////////////////////////////////////////////////
@@ -383,6 +400,12 @@
mVoiceCapable = mContext.getResources().getBoolean(
com.android.internal.R.bool.config_voice_capable);
+ PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
+ mMediaEventWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "mediaKeyEvent");
+
+ Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
+ mHasVibrator = vibrator == null ? false : vibrator.hasVibrator();
+
// Intialized volume
MAX_STREAM_VOLUME[AudioSystem.STREAM_VOICE_CALL] = SystemProperties.getInt(
"ro.config.vc_call_vol_steps",
@@ -426,6 +449,16 @@
intentFilter.addAction(Intent.ACTION_BOOT_COMPLETED);
intentFilter.addAction(Intent.ACTION_SCREEN_ON);
intentFilter.addAction(Intent.ACTION_SCREEN_OFF);
+
+ // Register a configuration change listener only if requested by system properties
+ // to monitor orientation changes (off by default)
+ if (SystemProperties.getBoolean("ro.audio.monitorOrientation", false)) {
+ Log.v(TAG, "monitoring device orientation");
+ intentFilter.addAction(Intent.ACTION_CONFIGURATION_CHANGED);
+ // initialize orientation in AudioSystem
+ setOrientationForAudioSystem();
+ }
+
context.registerReceiver(mReceiver, intentFilter);
// Register for package removal intent broadcasts for media button receiver persistence
@@ -434,13 +467,6 @@
pkgFilter.addDataScheme("package");
context.registerReceiver(mReceiver, pkgFilter);
- // Register for media button intent broadcasts.
- intentFilter = new IntentFilter(Intent.ACTION_MEDIA_BUTTON);
- // Workaround for bug on priority setting
- //intentFilter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
- intentFilter.setPriority(Integer.MAX_VALUE);
- context.registerReceiver(mMediaButtonReceiver, intentFilter);
-
// Register for phone state monitoring
TelephonyManager tmgr = (TelephonyManager)
context.getSystemService(Context.TELEPHONY_SERVICE);
@@ -499,6 +525,16 @@
}
}
+ private void dumpStreamStates(PrintWriter pw) {
+ pw.println("\nStream volumes (device: index)");
+ int numStreamTypes = AudioSystem.getNumStreamTypes();
+ for (int i = 0; i < numStreamTypes; i++) {
+ pw.println("- "+STREAM_NAMES[i]+":");
+ mStreamStates[i].dump(pw);
+ pw.println("");
+ }
+ }
+
private void updateStreamVolumeAlias(boolean updateVolumes) {
int dtmfStreamAlias;
@@ -530,18 +566,34 @@
private void readPersistedSettings() {
final ContentResolver cr = mContentResolver;
- int ringerMode = System.getInt(cr, System.MODE_RINGER, AudioManager.RINGER_MODE_NORMAL);
+ int ringerModeFromSettings =
+ System.getInt(cr, System.MODE_RINGER, AudioManager.RINGER_MODE_NORMAL);
+ int ringerMode = ringerModeFromSettings;
// sanity check in case the settings are restored from a device with incompatible
// ringer modes
if (!AudioManager.isValidRingerMode(ringerMode)) {
ringerMode = AudioManager.RINGER_MODE_NORMAL;
+ }
+ if ((ringerMode == AudioManager.RINGER_MODE_VIBRATE) && !mHasVibrator) {
+ ringerMode = AudioManager.RINGER_MODE_SILENT;
+ }
+ if (ringerMode != ringerModeFromSettings) {
System.putInt(cr, System.MODE_RINGER, ringerMode);
}
synchronized(mSettingsLock) {
mRingerMode = ringerMode;
}
- mVibrateSetting = System.getInt(cr, System.VIBRATE_ON, 0);
+ // System.VIBRATE_ON is not used any more but defaults for mVibrateSetting
+ // are still needed while setVibrateSetting() and getVibrateSetting() are being deprecated.
+ mVibrateSetting = getValueForVibrateSetting(0,
+ AudioManager.VIBRATE_TYPE_NOTIFICATION,
+ mHasVibrator ? AudioManager.VIBRATE_SETTING_ONLY_SILENT
+ : AudioManager.VIBRATE_SETTING_OFF);
+ mVibrateSetting = getValueForVibrateSetting(mVibrateSetting,
+ AudioManager.VIBRATE_TYPE_RINGER,
+ mHasVibrator ? AudioManager.VIBRATE_SETTING_ONLY_SILENT
+ : AudioManager.VIBRATE_SETTING_OFF);
// make sure settings for ringer mode are consistent with device type: non voice capable
// devices (tablets) include media stream in silent mode whereas phones don't.
@@ -631,8 +683,7 @@
// If either the client forces allowing ringer modes for this adjustment,
// or the stream type is one that is affected by ringer modes
if (((flags & AudioManager.FLAG_ALLOW_RINGER_MODES) != 0) ||
- streamTypeAlias == AudioSystem.STREAM_RING ||
- (!mVoiceCapable && streamTypeAlias == AudioSystem.STREAM_MUSIC)) {
+ (streamTypeAlias == getMasterStreamType())) {
int ringerMode = getRingerMode();
// do not vibrate if already in vibrate mode
if (ringerMode == AudioManager.RINGER_MODE_VIBRATE) {
@@ -640,7 +691,7 @@
}
// Check if the ringer mode changes with this volume adjustment. If
// it does, it will handle adjusting the volume, so we won't below
- adjustVolume = checkForRingerModeChange(oldIndex, direction, streamTypeAlias);
+ adjustVolume = checkForRingerModeChange(oldIndex, direction);
}
// If stream is muted, adjust last audible index only
@@ -711,14 +762,13 @@
final int oldIndex = streamState.getIndex(device,
(streamState.muteCount() != 0) /* lastAudible */);
- // setting ring or notifications volume to 0 on voice capable devices enters silent mode
- if (mVoiceCapable && (((flags & AudioManager.FLAG_ALLOW_RINGER_MODES) != 0) ||
- (mStreamVolumeAlias[streamType] == AudioSystem.STREAM_RING))) {
+ // setting volume on master stream type also controls silent mode
+ if (((flags & AudioManager.FLAG_ALLOW_RINGER_MODES) != 0) ||
+ (mStreamVolumeAlias[streamType] == getMasterStreamType())) {
int newRingerMode;
if (index == 0) {
- newRingerMode = System.getInt(mContentResolver, System.VIBRATE_IN_SILENT, 1) == 1
- ? AudioManager.RINGER_MODE_VIBRATE
- : AudioManager.RINGER_MODE_SILENT;
+ newRingerMode = mHasVibrator ? AudioManager.RINGER_MODE_VIBRATE
+ : AudioManager.RINGER_MODE_SILENT;
setStreamVolumeInt(mStreamVolumeAlias[streamType],
index,
device,
@@ -1062,7 +1112,6 @@
// on voice capable devices
if (mVoiceCapable &&
mStreamVolumeAlias[streamType] == AudioSystem.STREAM_RING) {
-
Set set = mStreamStates[streamType].mLastAudibleIndex.entrySet();
Iterator i = set.iterator();
while (i.hasNext()) {
@@ -1103,6 +1152,7 @@
/** @see AudioManager#shouldVibrate(int) */
public boolean shouldVibrate(int vibrateType) {
+ if (!mHasVibrator) return false;
switch (getVibrateSetting(vibrateType)) {
@@ -1123,21 +1173,20 @@
/** @see AudioManager#getVibrateSetting(int) */
public int getVibrateSetting(int vibrateType) {
+ if (!mHasVibrator) return AudioManager.VIBRATE_SETTING_OFF;
return (mVibrateSetting >> (vibrateType * 2)) & 3;
}
/** @see AudioManager#setVibrateSetting(int, int) */
public void setVibrateSetting(int vibrateType, int vibrateSetting) {
+ if (!mHasVibrator) return;
+
mVibrateSetting = getValueForVibrateSetting(mVibrateSetting, vibrateType, vibrateSetting);
// Broadcast change
broadcastVibrateSetting(vibrateType);
- // Post message to set ringer mode (it in turn will post a message
- // to persist)
- sendMsg(mAudioHandler, MSG_PERSIST_VIBRATE_SETTING, SENDMSG_NOOP, 0, 0,
- null, 0);
}
/**
@@ -1959,48 +2008,56 @@
* adjusting volume. If so, this will set the proper ringer mode and volume
* indices on the stream states.
*/
- private boolean checkForRingerModeChange(int oldIndex, int direction, int streamType) {
+ private boolean checkForRingerModeChange(int oldIndex, int direction) {
boolean adjustVolumeIndex = true;
int ringerMode = getRingerMode();
- int newRingerMode = ringerMode;
int uiIndex = (oldIndex + 5) / 10;
- boolean vibeInSilent = System.getInt(mContentResolver, System.VIBRATE_IN_SILENT, 1) == 1;
- if (ringerMode == RINGER_MODE_NORMAL) {
- if ((direction == AudioManager.ADJUST_LOWER) && (uiIndex <= 1)) {
- // enter silent mode if current index is the last audible one and not repeating a
- // volume key down
- if (vibeInSilent || mPrevVolDirection != AudioManager.ADJUST_LOWER) {
- // "silent mode", but which one?
- newRingerMode = vibeInSilent ? RINGER_MODE_VIBRATE : RINGER_MODE_SILENT;
- }
- if (uiIndex == 0 ||
- (!vibeInSilent &&
- mPrevVolDirection == AudioManager.ADJUST_LOWER &&
- mVoiceCapable && streamType == AudioSystem.STREAM_RING)) {
- adjustVolumeIndex = false;
+ switch (ringerMode) {
+ case RINGER_MODE_NORMAL:
+ if (direction == AudioManager.ADJUST_LOWER) {
+ if (mHasVibrator) {
+ if (uiIndex == 1) {
+ ringerMode = RINGER_MODE_VIBRATE;
+ }
+ } else {
+ if (uiIndex == 0 && mPrevVolDirection != AudioManager.ADJUST_LOWER) {
+ ringerMode = RINGER_MODE_SILENT;
+ }
}
}
- } else if (ringerMode == RINGER_MODE_VIBRATE) {
+ break;
+ case RINGER_MODE_VIBRATE:
+ if (!mHasVibrator) {
+ Log.e(TAG, "checkForRingerModeChange() current ringer mode is vibrate" +
+ "but no vibrator is present");
+ break;
+ }
if ((direction == AudioManager.ADJUST_LOWER)) {
- // Set it to silent, if it wasn't a long-press
if (mPrevVolDirection != AudioManager.ADJUST_LOWER) {
- newRingerMode = RINGER_MODE_SILENT;
+ ringerMode = RINGER_MODE_SILENT;
}
} else if (direction == AudioManager.ADJUST_RAISE) {
- newRingerMode = RINGER_MODE_NORMAL;
+ ringerMode = RINGER_MODE_NORMAL;
}
adjustVolumeIndex = false;
- } else {
+ break;
+ case RINGER_MODE_SILENT:
if (direction == AudioManager.ADJUST_RAISE) {
- // exiting silent mode
- // If VIBRATE_IN_SILENT, then go into vibrate mode
- newRingerMode = vibeInSilent ? RINGER_MODE_VIBRATE : RINGER_MODE_NORMAL;
+ if (mHasVibrator) {
+ ringerMode = RINGER_MODE_VIBRATE;
+ } else {
+ ringerMode = RINGER_MODE_NORMAL;
+ }
}
adjustVolumeIndex = false;
+ break;
+ default:
+ Log.e(TAG, "checkForRingerModeChange() wrong ringer mode: "+ringerMode);
+ break;
}
- setRingerMode(newRingerMode);
+ setRingerMode(ringerMode);
mPrevVolDirection = direction;
@@ -2209,9 +2266,6 @@
}
public void readSettings() {
- boolean checkSilentVolume = (mRingerMode == AudioManager.RINGER_MODE_NORMAL) &&
- isStreamAffectedByRingerMode(mStreamType);
-
int remainingDevices = AudioSystem.DEVICE_OUT_ALL;
for (int i = 0; remainingDevices != 0; i++) {
@@ -2240,12 +2294,13 @@
index : AudioManager.DEFAULT_STREAM_VOLUME[mStreamType];
int lastAudibleIndex = Settings.System.getInt(mContentResolver, name, defaultIndex);
- // a last audible index of 0 is never stored, except on non-voice capable devices
- // (e.g. tablets) for the music stream type, where the music stream volume can reach
- // 0 without the device being in silent mode
+ // a last audible index of 0 should never be stored for ring and notification
+ // streams on phones (voice capable devices).
+ // same for system stream on phones and tablets
if ((lastAudibleIndex == 0) &&
- (mVoiceCapable ||
- (mStreamVolumeAlias[mStreamType] != AudioSystem.STREAM_MUSIC))) {
+ ((mVoiceCapable &&
+ (mStreamVolumeAlias[mStreamType] == AudioSystem.STREAM_RING)) ||
+ (mStreamVolumeAlias[mStreamType] == AudioSystem.STREAM_SYSTEM))) {
lastAudibleIndex = AudioManager.DEFAULT_STREAM_VOLUME[mStreamType];
// Correct the data base
sendMsg(mAudioHandler,
@@ -2257,12 +2312,13 @@
PERSIST_DELAY);
}
mLastAudibleIndex.put(device, getValidIndex(10 * lastAudibleIndex));
- // the initial index should never be 0 for a stream affected by ringer mode if not
- // in silent or vibrate mode.
- // this is permitted on tablets for music stream type.
- if (checkSilentVolume && (index == 0) &&
- (mVoiceCapable ||
- (mStreamVolumeAlias[mStreamType] != AudioSystem.STREAM_MUSIC))) {
+ // the initial index should never be 0 for ring and notification streams on phones
+ // (voice capable devices) if not in silent or vibrate mode.
+ // same for system stream on phones and tablets
+ if ((index == 0) && (mRingerMode == AudioManager.RINGER_MODE_NORMAL) &&
+ ((mVoiceCapable &&
+ (mStreamVolumeAlias[mStreamType] == AudioSystem.STREAM_RING)) ||
+ (mStreamVolumeAlias[mStreamType] == AudioSystem.STREAM_SYSTEM))) {
index = lastAudibleIndex;
// Correct the data base
sendMsg(mAudioHandler,
@@ -2320,14 +2376,22 @@
mLastAudibleIndex.put(device, index);
}
// Apply change to all streams using this one as alias
+ // if changing volume of current device, also change volume of current
+ // device on aliased stream
+ boolean currentDevice = (device == getDeviceForStream(mStreamType));
int numStreamTypes = AudioSystem.getNumStreamTypes();
for (int streamType = numStreamTypes - 1; streamType >= 0; streamType--) {
- if (streamType != mStreamType && mStreamVolumeAlias[streamType] == mStreamType) {
- mStreamStates[streamType].setIndex(rescaleIndex(index,
- mStreamType,
- streamType),
- getDeviceForStream(streamType),
+ if (streamType != mStreamType &&
+ mStreamVolumeAlias[streamType] == mStreamType) {
+ int scaledIndex = rescaleIndex(index, mStreamType, streamType);
+ mStreamStates[streamType].setIndex(scaledIndex,
+ device,
lastAudible);
+ if (currentDevice) {
+ mStreamStates[streamType].setIndex(scaledIndex,
+ getDeviceForStream(streamType),
+ lastAudible);
+ }
}
}
return true;
@@ -2536,6 +2600,25 @@
return handler;
}
}
+
+ private void dump(PrintWriter pw) {
+ pw.print(" Current: ");
+ Set set = mIndex.entrySet();
+ Iterator i = set.iterator();
+ while (i.hasNext()) {
+ Map.Entry entry = (Map.Entry)i.next();
+ pw.print(Integer.toHexString(((Integer)entry.getKey()).intValue())
+ + ": " + ((((Integer)entry.getValue()).intValue() + 5) / 10)+", ");
+ }
+ pw.print("\n Last audible: ");
+ set = mLastAudibleIndex.entrySet();
+ i = set.iterator();
+ while (i.hasNext()) {
+ Map.Entry entry = (Map.Entry)i.next();
+ pw.print(Integer.toHexString(((Integer)entry.getKey()).intValue())
+ + ": " + ((((Integer)entry.getValue()).intValue() + 5) / 10)+", ");
+ }
+ }
}
/** Thread that handles native AudioSystem control. */
@@ -2623,10 +2706,6 @@
System.putInt(mContentResolver, System.MODE_RINGER, ringerMode);
}
- private void persistVibrateSetting() {
- System.putInt(mContentResolver, System.VIBRATE_ON, mVibrateSetting);
- }
-
private void playSoundEffect(int effectType, int volume) {
synchronized (mSoundEffectsLock) {
if (mSoundPool == null) {
@@ -2726,10 +2805,6 @@
persistRingerMode(getRingerMode());
break;
- case MSG_PERSIST_VIBRATE_SETTING:
- persistVibrateSetting();
- break;
-
case MSG_MEDIA_SERVER_DIED:
if (!mMediaServerOk) {
Log.e(TAG, "Media server died.");
@@ -2783,6 +2858,11 @@
// Restore master volume
restoreMasterVolume();
+ // Reset device orientation (if monitored for this device)
+ if (SystemProperties.getBoolean("ro.audio.monitorOrientation", false)) {
+ setOrientationForAudioSystem();
+ }
+
// indicate the end of reconfiguration phase to audio HAL
AudioSystem.setParameters("restarting=false");
break;
@@ -3170,6 +3250,8 @@
AudioSystem.setParameters("screen_state=on");
} else if (action.equals(Intent.ACTION_SCREEN_OFF)) {
AudioSystem.setParameters("screen_state=off");
+ } else if (action.equalsIgnoreCase(Intent.ACTION_CONFIGURATION_CHANGED)) {
+ handleConfigurationChanged(context);
}
}
}
@@ -3492,54 +3574,109 @@
//==========================================================================================
// RemoteControl
//==========================================================================================
+ public void dispatchMediaKeyEvent(KeyEvent keyEvent) {
+ dispatchMediaKeyEvent(keyEvent, false /*needWakeLock*/);
+ }
+
+ public void dispatchMediaKeyEventUnderWakelock(KeyEvent keyEvent) {
+ dispatchMediaKeyEvent(keyEvent, true /*needWakeLock*/);
+ }
+
/**
- * Receiver for media button intents. Handles the dispatching of the media button event
- * to one of the registered listeners, or if there was none, resumes the intent broadcast
- * to the rest of the system.
+ * Handles the dispatching of the media button events to one of the registered listeners,
+ * or if there was none, broadcast a ACTION_MEDIA_BUTTON intent to the rest of the system.
*/
- private class MediaButtonBroadcastReceiver extends BroadcastReceiver {
- @Override
- public void onReceive(Context context, Intent intent) {
- String action = intent.getAction();
- if (!Intent.ACTION_MEDIA_BUTTON.equals(action)) {
+ private void dispatchMediaKeyEvent(KeyEvent keyEvent, boolean needWakeLock) {
+ // sanity check on the incoming key event
+ if (!isValidMediaKeyEvent(keyEvent)) {
+ Log.e(TAG, "not dispatching invalid media key event " + keyEvent);
+ return;
+ }
+ // event filtering
+ synchronized(mRingingLock) {
+ if (mIsRinging || (getMode() == AudioSystem.MODE_IN_CALL) ||
+ (getMode() == AudioSystem.MODE_IN_COMMUNICATION) ||
+ (getMode() == AudioSystem.MODE_RINGTONE) ) {
return;
}
- KeyEvent event = (KeyEvent) intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
- if (event != null) {
- // if in a call or ringing, do not break the current phone app behavior
- // TODO modify this to let the phone app specifically get the RC focus
- // add modify the phone app to take advantage of the new API
- synchronized(mRingingLock) {
- if (mIsRinging || (getMode() == AudioSystem.MODE_IN_CALL) ||
- (getMode() == AudioSystem.MODE_IN_COMMUNICATION) ||
- (getMode() == AudioSystem.MODE_RINGTONE) ) {
- return;
- }
+ }
+ if (needWakeLock) {
+ mMediaEventWakeLock.acquire();
+ }
+ Intent keyIntent = new Intent(Intent.ACTION_MEDIA_BUTTON, null);
+ keyIntent.putExtra(Intent.EXTRA_KEY_EVENT, keyEvent);
+ synchronized(mRCStack) {
+ if (!mRCStack.empty()) {
+ // send the intent that was registered by the client
+ try {
+ mRCStack.peek().mMediaIntent.send(mContext,
+ needWakeLock ? WAKELOCK_RELEASE_ON_FINISHED : 0 /*code*/,
+ keyIntent, AudioService.this, mAudioHandler);
+ } catch (CanceledException e) {
+ Log.e(TAG, "Error sending pending intent " + mRCStack.peek());
+ e.printStackTrace();
}
- synchronized(mRCStack) {
- if (!mRCStack.empty()) {
- // create a new intent to fill in the extras of the registered PendingIntent
- Intent targetedIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);
- Bundle extras = intent.getExtras();
- if (extras != null) {
- targetedIntent.putExtras(extras);
- // trap the current broadcast
- abortBroadcast();
- //Log.v(TAG, " Sending intent" + targetedIntent);
- // send the intent that was registered by the client
- try {
- mRCStack.peek().mMediaIntent.send(context, 0, targetedIntent);
- } catch (CanceledException e) {
- Log.e(TAG, "Error sending pending intent " + mRCStack.peek());
- e.printStackTrace();
- }
- }
- }
+ } else {
+ // legacy behavior when nobody registered their media button event receiver
+ // through AudioManager
+ if (needWakeLock) {
+ keyIntent.putExtra(EXTRA_WAKELOCK_ACQUIRED, WAKELOCK_RELEASE_ON_FINISHED);
}
+ mContext.sendOrderedBroadcast(keyIntent, null, mKeyEventDone,
+ mAudioHandler, Activity.RESULT_OK, null, null);
}
}
}
+ private static boolean isValidMediaKeyEvent(KeyEvent keyEvent) {
+ if (keyEvent == null) {
+ return false;
+ }
+ final int keyCode = keyEvent.getKeyCode();
+ switch (keyCode) {
+ case KeyEvent.KEYCODE_MUTE:
+ case KeyEvent.KEYCODE_HEADSETHOOK:
+ case KeyEvent.KEYCODE_MEDIA_PLAY:
+ case KeyEvent.KEYCODE_MEDIA_PAUSE:
+ case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
+ case KeyEvent.KEYCODE_MEDIA_STOP:
+ case KeyEvent.KEYCODE_MEDIA_NEXT:
+ case KeyEvent.KEYCODE_MEDIA_PREVIOUS:
+ case KeyEvent.KEYCODE_MEDIA_REWIND:
+ case KeyEvent.KEYCODE_MEDIA_RECORD:
+ case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD:
+ case KeyEvent.KEYCODE_MEDIA_CLOSE:
+ case KeyEvent.KEYCODE_MEDIA_EJECT:
+ break;
+ default:
+ return false;
+ }
+ return true;
+ }
+
+ private PowerManager.WakeLock mMediaEventWakeLock;
+
+ private static final int WAKELOCK_RELEASE_ON_FINISHED = 1980; //magic number
+
+ // only set when wakelock was acquired, no need to check value when received
+ private static final String EXTRA_WAKELOCK_ACQUIRED =
+ "android.media.AudioService.WAKELOCK_ACQUIRED";
+
+ public void onSendFinished(PendingIntent pendingIntent, Intent intent,
+ int resultCode, String resultData, Bundle resultExtras) {
+ if (resultCode == WAKELOCK_RELEASE_ON_FINISHED) {
+ mMediaEventWakeLock.release();
+ }
+ }
+
+ BroadcastReceiver mKeyEventDone = new BroadcastReceiver() {
+ public void onReceive(Context context, Intent intent) {
+ if (intent.getExtras().containsKey(EXTRA_WAKELOCK_ACQUIRED)) {
+ mMediaEventWakeLock.release();
+ }
+ }
+ };
+
private final Object mCurrentRcLock = new Object();
/**
* The one remote control client which will receive a request for display information.
@@ -4232,6 +4369,52 @@
}
}
+ //==========================================================================================
+ // Device orientation
+ //==========================================================================================
+ /**
+ * Handles device configuration changes that may map to a change in the orientation.
+ * This feature is optional, and is defined by the definition and value of the
+ * "ro.audio.monitorOrientation" system property.
+ */
+ private void handleConfigurationChanged(Context context) {
+ try {
+ // reading new orientation "safely" (i.e. under try catch) in case anything
+ // goes wrong when obtaining resources and configuration
+ int newOrientation = context.getResources().getConfiguration().orientation;
+ if (newOrientation != mDeviceOrientation) {
+ mDeviceOrientation = newOrientation;
+ setOrientationForAudioSystem();
+ }
+ } catch (Exception e) {
+ Log.e(TAG, "Error retrieving device orientation: " + e);
+ }
+ }
+
+ private void setOrientationForAudioSystem() {
+ switch (mDeviceOrientation) {
+ case Configuration.ORIENTATION_LANDSCAPE:
+ //Log.i(TAG, "orientation is landscape");
+ AudioSystem.setParameters("orientation=landscape");
+ break;
+ case Configuration.ORIENTATION_PORTRAIT:
+ //Log.i(TAG, "orientation is portrait");
+ AudioSystem.setParameters("orientation=portrait");
+ break;
+ case Configuration.ORIENTATION_SQUARE:
+ //Log.i(TAG, "orientation is square");
+ AudioSystem.setParameters("orientation=square");
+ break;
+ case Configuration.ORIENTATION_UNDEFINED:
+ //Log.i(TAG, "orientation is undefined");
+ AudioSystem.setParameters("orientation=undefined");
+ break;
+ default:
+ Log.e(TAG, "Unknown orientation");
+ }
+ }
+
+
@Override
public void setRingtonePlayer(IRingtonePlayer player) {
mContext.enforceCallingOrSelfPermission(REMOTE_AUDIO_PLAYBACK, null);
@@ -4250,5 +4433,6 @@
// TODO probably a lot more to do here than just the audio focus and remote control stacks
dumpFocusStack(pw);
dumpRCStack(pw);
+ dumpStreamStates(pw);
}
}
diff --git a/media/java/android/media/AudioSystem.java b/media/java/android/media/AudioSystem.java
index 9bafa5c..55071ec 100644
--- a/media/java/android/media/AudioSystem.java
+++ b/media/java/android/media/AudioSystem.java
@@ -260,6 +260,8 @@
public static final String DEVICE_OUT_AUX_DIGITAL_NAME = "aux_digital";
public static final String DEVICE_OUT_ANLG_DOCK_HEADSET_NAME = "analog_dock";
public static final String DEVICE_OUT_DGTL_DOCK_HEADSET_NAME = "digital_dock";
+ public static final String DEVICE_OUT_USB_ACCESSORY_NAME = "usb_accessory";
+ public static final String DEVICE_OUT_USB_DEVICE_NAME = "usb_device";
public static String getDeviceName(int device)
{
@@ -290,6 +292,10 @@
return DEVICE_OUT_ANLG_DOCK_HEADSET_NAME;
case DEVICE_OUT_DGTL_DOCK_HEADSET:
return DEVICE_OUT_DGTL_DOCK_HEADSET_NAME;
+ case DEVICE_OUT_USB_ACCESSORY:
+ return DEVICE_OUT_USB_ACCESSORY_NAME;
+ case DEVICE_OUT_USB_DEVICE:
+ return DEVICE_OUT_USB_DEVICE_NAME;
case DEVICE_IN_DEFAULT:
default:
return "";
diff --git a/media/java/android/media/IAudioService.aidl b/media/java/android/media/IAudioService.aidl
index 1a2714e..48f091c 100644
--- a/media/java/android/media/IAudioService.aidl
+++ b/media/java/android/media/IAudioService.aidl
@@ -23,6 +23,7 @@
import android.media.IRemoteControlDisplay;
import android.media.IRingtonePlayer;
import android.net.Uri;
+import android.view.KeyEvent;
/**
* {@hide}
@@ -102,6 +103,9 @@
void unregisterAudioFocusClient(String clientId);
+ oneway void dispatchMediaKeyEvent(in KeyEvent keyEvent);
+ void dispatchMediaKeyEventUnderWakelock(in KeyEvent keyEvent);
+
oneway void registerMediaButtonIntent(in PendingIntent pi, in ComponentName c);
oneway void unregisterMediaButtonIntent(in PendingIntent pi, in ComponentName c);
diff --git a/media/java/android/media/MediaCodec.java b/media/java/android/media/MediaCodec.java
index ab8f884..2debd57 100644
--- a/media/java/android/media/MediaCodec.java
+++ b/media/java/android/media/MediaCodec.java
@@ -17,6 +17,7 @@
package android.media;
import android.media.MediaCrypto;
+import android.media.MediaFormat;
import android.view.Surface;
import java.nio.ByteBuffer;
import java.util.Map;
@@ -90,14 +91,19 @@
* Most formats also require the actual data to be prefixed by a number
* of buffers containing setup data, or codec specific data, i.e. the
* first few buffers submitted to the codec object after starting it must
- * be codec specific data marked as such using the flag {@link #FLAG_CODECCONFIG}
+ * be codec specific data marked as such using the flag {@link #BUFFER_FLAG_CODEC_CONFIG}
* in a call to {@link #queueInputBuffer}.
*
+ * Codec specific data included in the format passed to {@link #configure}
+ * (in ByteBuffer entries with keys "csd-0", "csd-1", ...) is automatically
+ * submitted to the codec, this data MUST NOT be submitted explicitly by the
+ * client.
+ *
* Once the client reaches the end of the input data it signals the end of
- * the input stream by specifying a flag of {@link #FLAG_EOS} in the call to
+ * the input stream by specifying a flag of {@link #BUFFER_FLAG_END_OF_STREAM} in the call to
* {@link #queueInputBuffer}. The codec will continue to return output buffers
* until it eventually signals the end of the output stream by specifying
- * the same flag ({@link #FLAG_EOS}) on the BufferInfo returned in
+ * the same flag ({@link #BUFFER_FLAG_END_OF_STREAM}) on the BufferInfo returned in
* {@link #dequeueOutputBuffer}.
*
* In order to start decoding data that's not adjacent to previously submitted
@@ -109,42 +115,12 @@
* flush does not support format discontinuities,
* for this a full stop(), configure(), start() cycle is necessary.
*
- * The format of the media data is specified as string/value pairs represented
- * as a Map<String, Object>.<p>
- *
- * Fields common to all formats:
- *
- * <table>
- * <tr><th>Name</th><th>Value Type</th><th>Description</th></tr>
- * <tr><td>mime</td><td>String</td><td>The type of the format.</td></tr>
- * <tr><td>max-input-size</td><td>Integer</td><td>optional, maximum size of a buffer of input data</td></tr>
- * <tr><td>bitrate</td><td>Integer</td><td><b>encoder-only</b>, desired bitrate in bits/second</td></tr>
- * </table>
- *
- * Video formats have the following fields:
- * <table>
- * <tr><th>Name</th><th>Value Type</th><th>Description</th></tr>
- * <tr><td>width</td><td>Integer</td><td></td></tr>
- * <tr><td>height</td><td>Integer</td><td></td></tr>
- * <tr><td>color-format</td><td>Integer</td><td><b>encoder-only</b></td></tr>
- * <tr><td>frame-rate</td><td>Integer or Float</td><td><b>encoder-only</b></td></tr>
- * <tr><td>i-frame-interval</td><td>Integer</td><td><b>encoder-only</b></td></tr>
- * <tr><td>stride</td><td>Integer</td><td><b>encoder-only</b>, optional, defaults to width</td></tr>
- * <tr><td>slice-height</td><td>Integer</td><td><b>encoder-only</b>, optional, defaults to height</td></tr>
- * </table>
- *
- * Audio formats have the following fields:
- * <table>
- * <tr><th>Name</th><th>Value Type</th><th>Description</th></tr>
- * <tr><td>channel-count</td><td>Integer</td><td></td></tr>
- * <tr><td>sample-rate</td><td>Integer</td><td></td></tr>
- * </table>
- *
-*/
+ */
final public class MediaCodec {
- /** Per buffer metadata includes an offset and size specifying
- the range of valid data in the associated codec buffer.
- */
+ /**
+ * Per buffer metadata includes an offset and size specifying
+ * the range of valid data in the associated codec buffer.
+ */
public final static class BufferInfo {
public void set(
int newOffset, int newSize, long newTimeUs, int newFlags) {
@@ -163,45 +139,46 @@
// The follow flag constants MUST stay in sync with their equivalents
// in MediaCodec.h !
- /** This indicates that the buffer marked as such contains the data
- for a sync frame.
- */
- public static final int FLAG_SYNCFRAME = 1;
+ /**
+ * This indicates that the buffer marked as such contains the data
+ * for a sync frame.
+ */
+ public static final int BUFFER_FLAG_SYNC_FRAME = 1;
- /** This indicated that the buffer marked as such contains codec
- initialization / codec specific data instead of media data.
- */
- public static final int FLAG_CODECCONFIG = 2;
+ /**
+ * This indicated that the buffer marked as such contains codec
+ * initialization / codec specific data instead of media data.
+ */
+ public static final int BUFFER_FLAG_CODEC_CONFIG = 2;
- /** This signals the end of stream, i.e. no buffers will be available
- after this, unless of course, {@link #flush} follows.
- */
- public static final int FLAG_EOS = 4;
+ /**
+ * This signals the end of stream, i.e. no buffers will be available
+ * after this, unless of course, {@link #flush} follows.
+ */
+ public static final int BUFFER_FLAG_END_OF_STREAM = 4;
- // The following mode constants MUST stay in sync with their equivalents
- // in media/hardware/CryptoAPI.h !
- public static final int MODE_UNENCRYPTED = 0;
- public static final int MODE_AES_CTR = 1;
-
- /** Instantiate a decoder supporting input data of the given mime type.
- * @param type The mime type of the input data.
- */
+ /**
+ * Instantiate a decoder supporting input data of the given mime type.
+ * @param type The mime type of the input data.
+ */
public static MediaCodec createDecoderByType(String type) {
return new MediaCodec(type, true /* nameIsType */, false /* encoder */);
}
- /** Instantiate an encoder supporting output data of the given mime type.
- * @param type The desired mime type of the output data.
- */
+ /**
+ * Instantiate an encoder supporting output data of the given mime type.
+ * @param type The desired mime type of the output data.
+ */
public static MediaCodec createEncoderByType(String type) {
return new MediaCodec(type, true /* nameIsType */, true /* encoder */);
}
- /** If you know the exact name of the component you want to instantiate
- use this method to instantiate it. Use with caution.
- Likely to be used with information obtained from {@link android.media.MediaCodecList}
- @param name The name of the codec to be instantiated.
- */
+ /**
+ * If you know the exact name of the component you want to instantiate
+ * use this method to instantiate it. Use with caution.
+ * Likely to be used with information obtained from {@link android.media.MediaCodecList}
+ * @param name The name of the codec to be instantiated.
+ */
public static MediaCodec createByCodecName(String name) {
return new MediaCodec(
name, false /* nameIsType */, false /* unused */);
@@ -217,38 +194,44 @@
native_finalize();
}
- // Make sure you call this when you're done to free up any opened
- // component instance instead of relying on the garbage collector
- // to do this for you at some point in the future.
+ /**
+ * Make sure you call this when you're done to free up any opened
+ * component instance instead of relying on the garbage collector
+ * to do this for you at some point in the future.
+ */
public native final void release();
- /** If this codec is to be used as an encoder, pass this flag.
- */
- public static int CONFIGURE_FLAG_ENCODE = 1;
+ /**
+ * If this codec is to be used as an encoder, pass this flag.
+ */
+ public static final int CONFIGURE_FLAG_ENCODE = 1;
- /** Configures a component.
+ /**
+ * Configures a component.
*
- * @param format The format of the input data (decoder) or the desired
- * format of the output data (encoder).
- * @param surface Specify a surface on which to render the output of this
- * decoder.
- * @param crypto Specify a crypto object to facilitate secure decryption
- * of the media data.
- * @param flags Specify {@link #CONFIGURE_FLAG_ENCODE} to configure the
- * component as an encoder.
- */
+ * @param format The format of the input data (decoder) or the desired
+ * format of the output data (encoder).
+ * @param surface Specify a surface on which to render the output of this
+ * decoder.
+ * @param crypto Specify a crypto object to facilitate secure decryption
+ * of the media data.
+ * @param flags Specify {@link #CONFIGURE_FLAG_ENCODE} to configure the
+ * component as an encoder.
+ */
public void configure(
- Map<String, Object> format,
+ MediaFormat format,
Surface surface, MediaCrypto crypto, int flags) {
+ Map<String, Object> formatMap = format.getMap();
+
String[] keys = null;
Object[] values = null;
if (format != null) {
- keys = new String[format.size()];
- values = new Object[format.size()];
+ keys = new String[formatMap.size()];
+ values = new Object[formatMap.size()];
int i = 0;
- for (Map.Entry<String, Object> entry: format.entrySet()) {
+ for (Map.Entry<String, Object> entry: formatMap.entrySet()) {
keys[i] = entry.getKey();
values[i] = entry.getValue();
++i;
@@ -262,22 +245,25 @@
String[] keys, Object[] values,
Surface surface, MediaCrypto crypto, int flags);
- /** After successfully configuring the component, call start. On return
- * you can query the component for its input/output buffers.
- */
+ /**
+ * After successfully configuring the component, call start. On return
+ * you can query the component for its input/output buffers.
+ */
public native final void start();
- /** Finish the decode/encode session, note that the codec instance
- * remains active and ready to be {@link #start}ed again.
- * To ensure that it is available to other client call {@link #release}
- * and don't just rely on garbage collection to eventually do this for you.
- */
+ /**
+ * Finish the decode/encode session, note that the codec instance
+ * remains active and ready to be {@link #start}ed again.
+ * To ensure that it is available to other client call {@link #release}
+ * and don't just rely on garbage collection to eventually do this for you.
+ */
public native final void stop();
- /** Flush both input and output ports of the component, all indices
- * previously returned in calls to {@link #dequeueInputBuffer} and
- * {@link #dequeueOutputBuffer} become invalid.
- */
+ /**
+ * Flush both input and output ports of the component, all indices
+ * previously returned in calls to {@link #dequeueInputBuffer} and
+ * {@link #dequeueOutputBuffer} become invalid.
+ */
public native final void flush();
public final static class CryptoException extends RuntimeException {
@@ -293,46 +279,55 @@
private int mErrorCode;
}
- /** After filling a range of the input buffer at the specified index
- * submit it to the component.
+ /**
+ * After filling a range of the input buffer at the specified index
+ * submit it to the component.
*
- * Many decoders require the actual compressed data stream to be
- * preceded by "codec specific data", i.e. setup data used to initialize
- * the codec such as PPS/SPS in the case of AVC video or code tables
- * in the case of vorbis audio.
- * The class {@link android.media.MediaExtractor} provides codec
- * specific data as part of
- * the returned track format in entries named "csd-0", "csd-1" ...
+ * Many decoders require the actual compressed data stream to be
+ * preceded by "codec specific data", i.e. setup data used to initialize
+ * the codec such as PPS/SPS in the case of AVC video or code tables
+ * in the case of vorbis audio.
+ * The class {@link android.media.MediaExtractor} provides codec
+ * specific data as part of
+ * the returned track format in entries named "csd-0", "csd-1" ...
*
- * These buffers should be submitted using the flag {@link #FLAG_CODECCONFIG}.
+ * These buffers should be submitted using the flag {@link #BUFFER_FLAG_CODEC_CONFIG}.
*
- * To indicate that this is the final piece of input data (or rather that
- * no more input data follows unless the decoder is subsequently flushed)
- * specify the flag {@link #FLAG_EOS}.
+ * To indicate that this is the final piece of input data (or rather that
+ * no more input data follows unless the decoder is subsequently flushed)
+ * specify the flag {@link #BUFFER_FLAG_END_OF_STREAM}.
*
- * @param index The index of a client-owned input buffer previously returned
- * in a call to {@link #dequeueInputBuffer}.
- * @param offset The byte offset into the input buffer at which the data starts.
- * @param size The number of bytes of valid input data.
- * @param presentationTimeUs The time at which this buffer should be rendered.
- * @param flags A bitmask of flags {@link #FLAG_SYNCFRAME},
- * {@link #FLAG_CODECCONFIG} or {@link #FLAG_EOS}.
- * @throws CryptoException if a crypto object has been specified in
- * {@link #configure}
- */
+ * @param index The index of a client-owned input buffer previously returned
+ * in a call to {@link #dequeueInputBuffer}.
+ * @param offset The byte offset into the input buffer at which the data starts.
+ * @param size The number of bytes of valid input data.
+ * @param presentationTimeUs The time at which this buffer should be rendered.
+ * @param flags A bitmask of flags {@link #BUFFER_FLAG_SYNC_FRAME},
+ * {@link #BUFFER_FLAG_CODEC_CONFIG} or {@link #BUFFER_FLAG_END_OF_STREAM}.
+ * @throws CryptoException if a crypto object has been specified in
+ * {@link #configure}
+ */
public native final void queueInputBuffer(
int index,
int offset, int size, long presentationTimeUs, int flags)
throws CryptoException;
- /** Metadata describing the structure of a (at least partially) encrypted
- * input sample.
- * A buffer's data is considered to be partitioned into "subSamples",
- * each subSample starts with a (potentially empty) run of plain,
- * unencrypted bytes followed by a (also potentially empty) run of
- * encrypted bytes.
- * numBytesOfClearData can be null to indicate that all data is encrypted.
- */
+ // The following mode constants MUST stay in sync with their equivalents
+ // in media/hardware/CryptoAPI.h !
+ public static final int CRYPTO_MODE_UNENCRYPTED = 0;
+ public static final int CRYPTO_MODE_AES_CTR = 1;
+
+ /**
+ * Metadata describing the structure of a (at least partially) encrypted
+ * input sample.
+ * A buffer's data is considered to be partitioned into "subSamples",
+ * each subSample starts with a (potentially empty) run of plain,
+ * unencrypted bytes followed by a (also potentially empty) run of
+ * encrypted bytes.
+ * numBytesOfClearData can be null to indicate that all data is encrypted.
+ * This information encapsulates per-sample metadata as outlined in
+ * ISO/IEC FDIS 23001-7:2011 "Common encryption in ISO base media file format files".
+ */
public final static class CryptoInfo {
public void set(
int newNumSubSamples,
@@ -349,28 +344,44 @@
mode = newMode;
}
- /** The number of subSamples that make up the buffer's contents. */
+ /**
+ * The number of subSamples that make up the buffer's contents.
+ */
public int numSubSamples;
- /** The number of leading unencrypted bytes in each subSample. */
+ /**
+ * The number of leading unencrypted bytes in each subSample.
+ */
public int[] numBytesOfClearData;
- /** The number of trailing encrypted bytes in each subSample. */
+ /**
+ * The number of trailing encrypted bytes in each subSample.
+ */
public int[] numBytesOfEncryptedData;
- /** A 16-byte opaque key */
+ /**
+ * A 16-byte opaque key
+ */
public byte[] key;
- /** A 16-byte initialization vector */
+ /**
+ * A 16-byte initialization vector
+ */
public byte[] iv;
- /** The type of encryption that has been applied */
+ /**
+ * The type of encryption that has been applied,
+ * see {@link #CRYPTO_MODE_UNENCRYPTED} and {@link #CRYPTO_MODE_AES_CTR}.
+ */
public int mode;
};
- /** Similar to {@link #queueInputBuffer} but submits a buffer that is
- * potentially encrypted.
- * @param index The index of a client-owned input buffer previously returned
- * in a call to {@link #dequeueInputBuffer}.
- * @param offset The byte offset into the input buffer at which the data starts.
- * @param presentationTimeUs The time at which this buffer should be rendered.
- * @param flags A bitmask of flags {@link #FLAG_SYNCFRAME},
- * {@link #FLAG_CODECCONFIG} or {@link #FLAG_EOS}.
+ /**
+ * Similar to {@link #queueInputBuffer} but submits a buffer that is
+ * potentially encrypted.
+ * @param index The index of a client-owned input buffer previously returned
+ * in a call to {@link #dequeueInputBuffer}.
+ * @param offset The byte offset into the input buffer at which the data starts.
+ * @param info Metadata required to facilitate decryption, the object can be
+ * reused immediately after this call returns.
+ * @param presentationTimeUs The time at which this buffer should be rendered.
+ * @param flags A bitmask of flags {@link #BUFFER_FLAG_SYNC_FRAME},
+ * {@link #BUFFER_FLAG_CODEC_CONFIG} or {@link #BUFFER_FLAG_END_OF_STREAM}.
*/
public native final void queueSecureInputBuffer(
int index,
@@ -379,80 +390,97 @@
long presentationTimeUs,
int flags) throws CryptoException;
- /** Returns the index of an input buffer to be filled with valid data
- * or -1 if no such buffer is currently available.
- * This method will return immediately if timeoutUs == 0, wait indefinitely
- * for the availability of an input buffer if timeoutUs < 0 or wait up
- * to "timeoutUs" microseconds if timeoutUs > 0.
- * @param timeoutUs The timeout in microseconds, a negative timeout indicates "infinite".
- */
+ /**
+ * Returns the index of an input buffer to be filled with valid data
+ * or -1 if no such buffer is currently available.
+ * This method will return immediately if timeoutUs == 0, wait indefinitely
+ * for the availability of an input buffer if timeoutUs < 0 or wait up
+ * to "timeoutUs" microseconds if timeoutUs > 0.
+ * @param timeoutUs The timeout in microseconds, a negative timeout indicates "infinite".
+ */
public native final int dequeueInputBuffer(long timeoutUs);
- /** If a non-negative timeout had been specified in the call
+ /**
+ * If a non-negative timeout had been specified in the call
* to {@link #dequeueOutputBuffer}, indicates that the call timed out.
- */
+ */
public static final int INFO_TRY_AGAIN_LATER = -1;
- /** The output format has changed, subsequent data will follow the new
- * format. {@link #getOutputFormat} returns the new format.
- */
+ /**
+ * The output format has changed, subsequent data will follow the new
+ * format. {@link #getOutputFormat} returns the new format.
+ */
public static final int INFO_OUTPUT_FORMAT_CHANGED = -2;
- /** The output buffers have changed, the client must refer to the new
- * set of output buffers returned by {@link #getOutputBuffers} from
- * this point on.
- */
+ /**
+ * The output buffers have changed, the client must refer to the new
+ * set of output buffers returned by {@link #getOutputBuffers} from
+ * this point on.
+ */
public static final int INFO_OUTPUT_BUFFERS_CHANGED = -3;
- /** Dequeue an output buffer, block at most "timeoutUs" microseconds.
- * Returns the index of an output buffer that has been successfully
- * decoded or one of the INFO_* constants below.
- * @param info Will be filled with buffer meta data.
- * @param timeoutUs The timeout in microseconds, a negative timeout indicates "infinite".
- */
+ /**
+ * Dequeue an output buffer, block at most "timeoutUs" microseconds.
+ * Returns the index of an output buffer that has been successfully
+ * decoded or one of the INFO_* constants below.
+ * @param info Will be filled with buffer meta data.
+ * @param timeoutUs The timeout in microseconds, a negative timeout indicates "infinite".
+ */
public native final int dequeueOutputBuffer(
BufferInfo info, long timeoutUs);
- /** If you are done with a buffer, use this call to return the buffer to
- * the codec. If you previously specified a surface when configuring this
- * video decoder you can optionally render the buffer.
- * @param index The index of a client-owned output buffer previously returned
- * in a call to {@link #dequeueOutputBuffer}.
- * @param render If a valid surface was specified when configuring the codec,
- * passing true renders this output buffer to the surface.
- */
+ /**
+ * If you are done with a buffer, use this call to return the buffer to
+ * the codec. If you previously specified a surface when configuring this
+ * video decoder you can optionally render the buffer.
+ * @param index The index of a client-owned output buffer previously returned
+ * in a call to {@link #dequeueOutputBuffer}.
+ * @param render If a valid surface was specified when configuring the codec,
+ * passing true renders this output buffer to the surface.
+ */
public native final void releaseOutputBuffer(int index, boolean render);
- /** Call this after dequeueOutputBuffer signals a format change by returning
- * {@link #INFO_OUTPUT_FORMAT_CHANGED}
+ /**
+ * Call this after dequeueOutputBuffer signals a format change by returning
+ * {@link #INFO_OUTPUT_FORMAT_CHANGED}
*/
- public native final Map<String, Object> getOutputFormat();
+ public final MediaFormat getOutputFormat() {
+ return new MediaFormat(getOutputFormatNative());
+ }
- /** Call this after start() returns.
+ private native final Map<String, Object> getOutputFormatNative();
+
+ /**
+ * Call this after start() returns.
*/
public ByteBuffer[] getInputBuffers() {
return getBuffers(true /* input */);
}
- /** Call this after start() returns and whenever dequeueOutputBuffer
- * signals an output buffer change by returning
- * {@link #INFO_OUTPUT_BUFFERS_CHANGED}
+ /**
+ * Call this after start() returns and whenever dequeueOutputBuffer
+ * signals an output buffer change by returning
+ * {@link #INFO_OUTPUT_BUFFERS_CHANGED}
*/
public ByteBuffer[] getOutputBuffers() {
return getBuffers(false /* input */);
}
- /** The content is scaled to the surface dimensions */
- public static final int VIDEO_SCALING_MODE_STRETCH_TO_FIT = 1;
+ /**
+ * The content is scaled to the surface dimensions
+ */
+ public static final int VIDEO_SCALING_MODE_SCALE_TO_FIT = 1;
- /** The content is scaled, maintaining its aspect ratio, the whole
- surface area is used, content may be cropped
- */
+ /**
+ * The content is scaled, maintaining its aspect ratio, the whole
+ * surface area is used, content may be cropped
+ */
public static final int VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING = 2;
- /** If a surface has been specified in a previous call to {@link #configure}
- specifies the scaling mode to use. The default is "stretch to fit".
- */
+ /**
+ * If a surface has been specified in a previous call to {@link #configure}
+ * specifies the scaling mode to use. The default is "scale to fit".
+ */
public native final void setVideoScalingMode(int mode);
private native final ByteBuffer[] getBuffers(boolean input);
diff --git a/media/java/android/media/MediaCodecInfo.java b/media/java/android/media/MediaCodecInfo.java
new file mode 100644
index 0000000..4398642
--- /dev/null
+++ b/media/java/android/media/MediaCodecInfo.java
@@ -0,0 +1,213 @@
+/*
+ * Copyright (C) 2012 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 android.media;
+
+public final class MediaCodecInfo {
+ private int mIndex;
+
+ /* package private */ MediaCodecInfo(int index) {
+ mIndex = index;
+ }
+
+ /**
+ * Retrieve the codec name.
+ */
+ public final String getName() {
+ return MediaCodecList.getCodecName(mIndex);
+ }
+
+ /**
+ * Query if the codec is an encoder.
+ */
+ public final boolean isEncoder() {
+ return MediaCodecList.isEncoder(mIndex);
+ }
+
+ /**
+ * Query the media types supported by the codec.
+ */
+ public final String[] getSupportedTypes() {
+ return MediaCodecList.getSupportedTypes(mIndex);
+ }
+
+ public static final class CodecCapabilities {
+ public CodecProfileLevel[] profileLevels;
+
+ // from OMX_COLOR_FORMATTYPE
+ public final static int COLOR_FormatMonochrome = 1;
+ public final static int COLOR_Format8bitRGB332 = 2;
+ public final static int COLOR_Format12bitRGB444 = 3;
+ public final static int COLOR_Format16bitARGB4444 = 4;
+ public final static int COLOR_Format16bitARGB1555 = 5;
+ public final static int COLOR_Format16bitRGB565 = 6;
+ public final static int COLOR_Format16bitBGR565 = 7;
+ public final static int COLOR_Format18bitRGB666 = 8;
+ public final static int COLOR_Format18bitARGB1665 = 9;
+ public final static int COLOR_Format19bitARGB1666 = 10;
+ public final static int COLOR_Format24bitRGB888 = 11;
+ public final static int COLOR_Format24bitBGR888 = 12;
+ public final static int COLOR_Format24bitARGB1887 = 13;
+ public final static int COLOR_Format25bitARGB1888 = 14;
+ public final static int COLOR_Format32bitBGRA8888 = 15;
+ public final static int COLOR_Format32bitARGB8888 = 16;
+ public final static int COLOR_FormatYUV411Planar = 17;
+ public final static int COLOR_FormatYUV411PackedPlanar = 18;
+ public final static int COLOR_FormatYUV420Planar = 19;
+ public final static int COLOR_FormatYUV420PackedPlanar = 20;
+ public final static int COLOR_FormatYUV420SemiPlanar = 21;
+ public final static int COLOR_FormatYUV422Planar = 22;
+ public final static int COLOR_FormatYUV422PackedPlanar = 23;
+ public final static int COLOR_FormatYUV422SemiPlanar = 24;
+ public final static int COLOR_FormatYCbYCr = 25;
+ public final static int COLOR_FormatYCrYCb = 26;
+ public final static int COLOR_FormatCbYCrY = 27;
+ public final static int COLOR_FormatCrYCbY = 28;
+ public final static int COLOR_FormatYUV444Interleaved = 29;
+ public final static int COLOR_FormatRawBayer8bit = 30;
+ public final static int COLOR_FormatRawBayer10bit = 31;
+ public final static int COLOR_FormatRawBayer8bitcompressed = 32;
+ public final static int COLOR_FormatL2 = 33;
+ public final static int COLOR_FormatL4 = 34;
+ public final static int COLOR_FormatL8 = 35;
+ public final static int COLOR_FormatL16 = 36;
+ public final static int COLOR_FormatL24 = 37;
+ public final static int COLOR_FormatL32 = 38;
+ public final static int COLOR_FormatYUV420PackedSemiPlanar = 39;
+ public final static int COLOR_FormatYUV422PackedSemiPlanar = 40;
+ public final static int COLOR_Format18BitBGR666 = 41;
+ public final static int COLOR_Format24BitARGB6666 = 42;
+ public final static int COLOR_Format24BitABGR6666 = 43;
+
+ public final static int COLOR_TI_FormatYUV420PackedSemiPlanar = 0x7f000100;
+ public final static int COLOR_QCOM_FormatYUV420SemiPlanar = 0x7fa30c00;
+
+ /**
+ * Defined in the OpenMAX IL specs, color format values are drawn from
+ * OMX_COLOR_FORMATTYPE.
+ */
+ public int[] colorFormats;
+ };
+
+ public static final class CodecProfileLevel {
+ // from OMX_VIDEO_AVCPROFILETYPE
+ public static final int AVCProfileBaseline = 0x01;
+ public static final int AVCProfileMain = 0x02;
+ public static final int AVCProfileExtended = 0x04;
+ public static final int AVCProfileHigh = 0x08;
+ public static final int AVCProfileHigh10 = 0x10;
+ public static final int AVCProfileHigh422 = 0x20;
+ public static final int AVCProfileHigh444 = 0x40;
+
+ // from OMX_VIDEO_AVCLEVELTYPE
+ public static final int AVCLevel1 = 0x01;
+ public static final int AVCLevel1b = 0x02;
+ public static final int AVCLevel11 = 0x04;
+ public static final int AVCLevel12 = 0x08;
+ public static final int AVCLevel13 = 0x10;
+ public static final int AVCLevel2 = 0x20;
+ public static final int AVCLevel21 = 0x40;
+ public static final int AVCLevel22 = 0x80;
+ public static final int AVCLevel3 = 0x100;
+ public static final int AVCLevel31 = 0x200;
+ public static final int AVCLevel32 = 0x400;
+ public static final int AVCLevel4 = 0x800;
+ public static final int AVCLevel41 = 0x1000;
+ public static final int AVCLevel42 = 0x2000;
+ public static final int AVCLevel5 = 0x4000;
+ public static final int AVCLevel51 = 0x8000;
+
+ // from OMX_VIDEO_H263PROFILETYPE
+ public static final int H263ProfileBaseline = 0x01;
+ public static final int H263ProfileH320Coding = 0x02;
+ public static final int H263ProfileBackwardCompatible = 0x04;
+ public static final int H263ProfileISWV2 = 0x08;
+ public static final int H263ProfileISWV3 = 0x10;
+ public static final int H263ProfileHighCompression = 0x20;
+ public static final int H263ProfileInternet = 0x40;
+ public static final int H263ProfileInterlace = 0x80;
+ public static final int H263ProfileHighLatency = 0x100;
+
+ // from OMX_VIDEO_H263LEVELTYPE
+ public static final int H263Level10 = 0x01;
+ public static final int H263Level20 = 0x02;
+ public static final int H263Level30 = 0x04;
+ public static final int H263Level40 = 0x08;
+ public static final int H263Level45 = 0x10;
+ public static final int H263Level50 = 0x20;
+ public static final int H263Level60 = 0x40;
+ public static final int H263Level70 = 0x80;
+
+ // from OMX_VIDEO_MPEG4PROFILETYPE
+ public static final int MPEG4ProfileSimple = 0x01;
+ public static final int MPEG4ProfileSimpleScalable = 0x02;
+ public static final int MPEG4ProfileCore = 0x04;
+ public static final int MPEG4ProfileMain = 0x08;
+ public static final int MPEG4ProfileNbit = 0x10;
+ public static final int MPEG4ProfileScalableTexture = 0x20;
+ public static final int MPEG4ProfileSimpleFace = 0x40;
+ public static final int MPEG4ProfileSimpleFBA = 0x80;
+ public static final int MPEG4ProfileBasicAnimated = 0x100;
+ public static final int MPEG4ProfileHybrid = 0x200;
+ public static final int MPEG4ProfileAdvancedRealTime = 0x400;
+ public static final int MPEG4ProfileCoreScalable = 0x800;
+ public static final int MPEG4ProfileAdvancedCoding = 0x1000;
+ public static final int MPEG4ProfileAdvancedCore = 0x2000;
+ public static final int MPEG4ProfileAdvancedScalable = 0x4000;
+ public static final int MPEG4ProfileAdvancedSimple = 0x8000;
+
+ // from OMX_VIDEO_MPEG4LEVELTYPE
+ public static final int MPEG4Level0 = 0x01;
+ public static final int MPEG4Level0b = 0x02;
+ public static final int MPEG4Level1 = 0x04;
+ public static final int MPEG4Level2 = 0x08;
+ public static final int MPEG4Level3 = 0x10;
+ public static final int MPEG4Level4 = 0x20;
+ public static final int MPEG4Level4a = 0x40;
+ public static final int MPEG4Level5 = 0x80;
+
+ // from OMX_AUDIO_AACPROFILETYPE
+ public static final int AACObjectMain = 1;
+ public static final int AACObjectLC = 2;
+ public static final int AACObjectSSR = 3;
+ public static final int AACObjectLTP = 4;
+ public static final int AACObjectHE = 5;
+ public static final int AACObjectScalable = 6;
+ public static final int AACObjectERLC = 17;
+ public static final int AACObjectLD = 23;
+ public static final int AACObjectHE_PS = 29;
+ public static final int AACObjectELD = 39;
+
+ /**
+ * Defined in the OpenMAX IL specs, depending on the type of media
+ * this can be OMX_VIDEO_AVCPROFILETYPE, OMX_VIDEO_H263PROFILETYPE,
+ * or OMX_VIDEO_MPEG4PROFILETYPE.
+ */
+ public int profile;
+
+ /**
+ * Defined in the OpenMAX IL specs, depending on the type of media
+ * this can be OMX_VIDEO_AVCLEVELTYPE, OMX_VIDEO_H263LEVELTYPE
+ * or OMX_VIDEO_MPEG4LEVELTYPE.
+ */
+ public int level;
+ };
+
+ public final CodecCapabilities getCapabilitiesForType(
+ String type) {
+ return MediaCodecList.getCodecCapabilities(mIndex, type);
+ }
+}
diff --git a/media/java/android/media/MediaCodecList.java b/media/java/android/media/MediaCodecList.java
index 1772e9c..1749934 100644
--- a/media/java/android/media/MediaCodecList.java
+++ b/media/java/android/media/MediaCodecList.java
@@ -16,49 +16,35 @@
package android.media;
+import android.media.MediaCodecInfo;
+
/**
* MediaCodecList class can be used to enumerate available codecs,
* find a codec supporting a given format and query the capabilities
* of a given codec.
-*/
+ */
final public class MediaCodecList {
- /** Count the number of available codecs.
- */
- public static native final int countCodecs();
+ /**
+ * Count the number of available codecs.
+ */
+ public static native final int getCodecCount();
- /** Retrieve the codec name at the specified index. */
- public static native final String getCodecName(int index);
+ public static final MediaCodecInfo getCodecInfoAt(int index) {
+ if (index < 0 || index > getCodecCount()) {
+ throw new IllegalArgumentException();
+ }
- /** Query if the codec at the specified index is an encoder. */
- public static native final boolean isEncoder(int index);
+ return new MediaCodecInfo(index);
+ }
- /** Query the media types supported by the codec at the specified index */
- public static native final String[] getSupportedTypes(int index);
+ /* package private */ static native final String getCodecName(int index);
- public static final class CodecProfileLevel {
- /** Defined in the OpenMAX IL specs, depending on the type of media
- * this can be OMX_VIDEO_AVCPROFILETYPE, OMX_VIDEO_H263PROFILETYPE
- * or OMX_VIDEO_MPEG4PROFILETYPE.
- */
- public int profile;
+ /* package private */ static native final boolean isEncoder(int index);
- /** Defined in the OpenMAX IL specs, depending on the type of media
- * this can be OMX_VIDEO_AVCLEVELTYPE, OMX_VIDEO_H263LEVELTYPE
- * or OMX_VIDEO_MPEG4LEVELTYPE.
- */
- public int level;
- };
+ /* package private */ static native final String[] getSupportedTypes(int index);
- public static final class CodecCapabilities {
- public CodecProfileLevel[] profileLevels;
-
- /** Defined in the OpenMAX IL specs, color format values are drawn from
- * OMX_COLOR_FORMATTYPE.
- */
- public int[] colorFormats;
- };
- public static native final CodecCapabilities getCodecCapabilities(
- int index, String type);
+ /* package private */ static native final MediaCodecInfo.CodecCapabilities
+ getCodecCapabilities(int index, String type);
private static native final void native_init();
diff --git a/media/java/android/media/MediaCrypto.java b/media/java/android/media/MediaCrypto.java
index b84ed72..40a1326 100644
--- a/media/java/android/media/MediaCrypto.java
+++ b/media/java/android/media/MediaCrypto.java
@@ -16,6 +16,9 @@
package android.media;
+import android.media.MediaCryptoException;
+import java.util.UUID;
+
/**
* MediaCrypto class can be used in conjunction with {@link android.media.MediaCodec}
* to decode encrypted media data.
@@ -24,27 +27,47 @@
* the method {@link #isCryptoSchemeSupported} can be used to query if a given
* scheme is supported on the device.
*
-*/
+ */
public final class MediaCrypto {
- /** Query if the given scheme identified by its UUID is supported on
- * this device.
- * @param uuid The UUID of the crypto scheme.
- */
- public static final native boolean isCryptoSchemeSupported(byte[] uuid);
-
- /** Instantiate a MediaCrypto object using opaque, crypto scheme specific
- * data.
- * @param uuid The UUID of the crypto scheme.
- * @param initData Opaque initialization data specific to the crypto scheme.
- */
- public MediaCrypto(byte[] uuid, byte[] initData) throws RuntimeException {
- native_setup(uuid, initData);
+ /**
+ * Query if the given scheme identified by its UUID is supported on
+ * this device.
+ * @param uuid The UUID of the crypto scheme.
+ */
+ public static final boolean isCryptoSchemeSupported(UUID uuid) {
+ return isCryptoSchemeSupportedNative(getByteArrayFromUUID(uuid));
}
- /** Query if the crypto scheme requires the use of a secure decoder
- * to decode data of the given mime type.
- * @param mime The mime type of the media data
- */
+ private static final byte[] getByteArrayFromUUID(UUID uuid) {
+ long msb = uuid.getMostSignificantBits();
+ long lsb = uuid.getLeastSignificantBits();
+
+ byte[] uuidBytes = new byte[16];
+ for (int i = 0; i < 8; ++i) {
+ uuidBytes[i] = (byte)(msb >>> (8 * (7 - i)));
+ uuidBytes[8 + i] = (byte)(lsb >>> (8 * (7 - i)));
+ }
+
+ return uuidBytes;
+ }
+
+ private static final native boolean isCryptoSchemeSupportedNative(byte[] uuid);
+
+ /**
+ * Instantiate a MediaCrypto object using opaque, crypto scheme specific
+ * data.
+ * @param uuid The UUID of the crypto scheme.
+ * @param initData Opaque initialization data specific to the crypto scheme.
+ */
+ public MediaCrypto(UUID uuid, byte[] initData) throws MediaCryptoException {
+ native_setup(getByteArrayFromUUID(uuid), initData);
+ }
+
+ /**
+ * Query if the crypto scheme requires the use of a secure decoder
+ * to decode data of the given mime type.
+ * @param mime The mime type of the media data
+ */
public final native boolean requiresSecureDecoderComponent(String mime);
@Override
@@ -54,7 +77,10 @@
public native final void release();
private static native final void native_init();
- private native final void native_setup(byte[] uuid, byte[] initData);
+
+ private native final void native_setup(byte[] uuid, byte[] initData)
+ throws MediaCryptoException;
+
private native final void native_finalize();
static {
diff --git a/core/java/android/content/ICancellationSignal.aidl b/media/java/android/media/MediaCryptoException.java
similarity index 69%
copy from core/java/android/content/ICancellationSignal.aidl
copy to media/java/android/media/MediaCryptoException.java
index cf1c5d3..44c5222 100644
--- a/core/java/android/content/ICancellationSignal.aidl
+++ b/media/java/android/media/MediaCryptoException.java
@@ -14,11 +14,14 @@
* limitations under the License.
*/
-package android.content;
+package android.media;
/**
- * @hide
+ * Exception thrown if MediaCrypto object could not be instantiated for
+ * whatever reason.
*/
-interface ICancellationSignal {
- oneway void cancel();
+public final class MediaCryptoException extends Exception {
+ public MediaCryptoException(String detailMessage) {
+ super(detailMessage);
+ }
}
diff --git a/media/java/android/media/MediaExtractor.java b/media/java/android/media/MediaExtractor.java
index 5fe58a8..d3a00c2 100644
--- a/media/java/android/media/MediaExtractor.java
+++ b/media/java/android/media/MediaExtractor.java
@@ -20,6 +20,7 @@
import android.content.Context;
import android.content.res.AssetFileDescriptor;
import android.media.MediaCodec;
+import android.media.MediaFormat;
import android.net.Uri;
import java.io.FileDescriptor;
import java.io.IOException;
@@ -33,7 +34,7 @@
* <pre>
* MediaExtractor extractor = new MediaExtractor();
* extractor.setDataSource(...);
- * int numTracks = extractor.countTracks();
+ * int numTracks = extractor.getTrackCount();
* for (int i = 0; i < numTracks; ++i) {
* Map%lt;String, Object> format = extractor.getTrackFormat(i);
* String mime = (String)format.get("mime");
@@ -52,7 +53,7 @@
* extractor.release();
* extractor = null;
* </pre>
-*/
+ */
final public class MediaExtractor {
public MediaExtractor() {
native_setup();
@@ -174,105 +175,129 @@
native_finalize();
}
- /** Make sure you call this when you're done to free up any resources
- * instead of relying on the garbage collector to do this for you at
- * some point in the future.
- */
+ /**
+ * Make sure you call this when you're done to free up any resources
+ * instead of relying on the garbage collector to do this for you at
+ * some point in the future.
+ */
public native final void release();
- /** Count the number of tracks found in the data source.
+ /**
+ * Count the number of tracks found in the data source.
*/
- public native int countTracks();
+ public native final int getTrackCount();
- /** Get the track format at the specified index.
- * More detail on the representation can be found at {@link android.media.MediaCodec}
- */
- public native Map<String, Object> getTrackFormat(int index);
+ /**
+ * Get the track format at the specified index.
+ * More detail on the representation can be found at {@link android.media.MediaCodec}
+ */
+ public MediaFormat getTrackFormat(int index) {
+ return new MediaFormat(getTrackFormatNative(index));
+ }
- /** Subsequent calls to {@link #readSampleData}, {@link #getSampleTrackIndex} and
- * {@link #getSampleTime} only retrieve information for the subset of tracks
- * selected.
- * Selecting the same track multiple times has no effect, the track is
- * only selected once.
- */
+ private native Map<String, Object> getTrackFormatNative(int index);
+
+ /**
+ * Subsequent calls to {@link #readSampleData}, {@link #getSampleTrackIndex} and
+ * {@link #getSampleTime} only retrieve information for the subset of tracks
+ * selected.
+ * Selecting the same track multiple times has no effect, the track is
+ * only selected once.
+ */
public native void selectTrack(int index);
- /** Subsequent calls to {@link #readSampleData}, {@link #getSampleTrackIndex} and
- * {@link #getSampleTime} only retrieve information for the subset of tracks
- * selected.
- */
+ /**
+ * Subsequent calls to {@link #readSampleData}, {@link #getSampleTrackIndex} and
+ * {@link #getSampleTime} only retrieve information for the subset of tracks
+ * selected.
+ */
public native void unselectTrack(int index);
- /** If possible, seek to a sync sample at or before the specified time */
+ /**
+ * If possible, seek to a sync sample at or before the specified time
+ */
public static final int SEEK_TO_PREVIOUS_SYNC = 0;
- /** If possible, seek to a sync sample at or after the specified time */
+ /**
+ * If possible, seek to a sync sample at or after the specified time
+ */
public static final int SEEK_TO_NEXT_SYNC = 1;
- /** If possible, seek to the sync sample closest to the specified time */
+ /**
+ * If possible, seek to the sync sample closest to the specified time
+ */
public static final int SEEK_TO_CLOSEST_SYNC = 2;
- /** If possible, seek to a sample closest to the specified time, which may
- * NOT be a sync sample!
- */
- public static final int SEEK_TO_CLOSEST = 3;
- /** All selected tracks seek near the requested time according to the
- * specified mode.
- */
+ /**
+ * All selected tracks seek near the requested time according to the
+ * specified mode.
+ */
public native void seekTo(long timeUs, int mode);
- /** Advance to the next sample. Returns false if no more sample data
- * is available (end of stream).
+ /**
+ * Advance to the next sample. Returns false if no more sample data
+ * is available (end of stream).
*/
public native boolean advance();
- /** Retrieve the current encoded sample and store it in the byte buffer
- * starting at the given offset. Returns the sample size (or -1 if
- * no more samples are available).
- */
+ /**
+ * Retrieve the current encoded sample and store it in the byte buffer
+ * starting at the given offset. Returns the sample size (or -1 if
+ * no more samples are available).
+ */
public native int readSampleData(ByteBuffer byteBuf, int offset);
- /** Returns the track index the current sample originates from (or -1
- * if no more samples are available)
- */
+ /**
+ * Returns the track index the current sample originates from (or -1
+ * if no more samples are available)
+ */
public native int getSampleTrackIndex();
- /** Returns the current sample's presentation time in microseconds.
- * or -1 if no more samples are available.
- */
+ /**
+ * Returns the current sample's presentation time in microseconds.
+ * or -1 if no more samples are available.
+ */
public native long getSampleTime();
// Keep these in sync with their equivalents in NuMediaExtractor.h
- /** The sample is a sync sample */
+ /**
+ * The sample is a sync sample
+ */
public static final int SAMPLE_FLAG_SYNC = 1;
- /** The sample is (at least partially) encrypted, see also the documentation
- * for {@link android.media.MediaCodec#queueSecureInputBuffer}
- */
+ /**
+ * The sample is (at least partially) encrypted, see also the documentation
+ * for {@link android.media.MediaCodec#queueSecureInputBuffer}
+ */
public static final int SAMPLE_FLAG_ENCRYPTED = 2;
- /** Returns the current sample's flags. */
+ /**
+ * Returns the current sample's flags.
+ */
public native int getSampleFlags();
- /** If the sample flags indicate that the current sample is at least
- * partially encrypted, this call returns relevant information about
- * the structure of the sample data required for decryption.
- * @param info The android.media.MediaCodec.CryptoInfo structure
- * to be filled in.
- * @return true iff the sample flags contain {@link #SAMPLE_FLAG_ENCRYPTED}
- */
+ /**
+ * If the sample flags indicate that the current sample is at least
+ * partially encrypted, this call returns relevant information about
+ * the structure of the sample data required for decryption.
+ * @param info The android.media.MediaCodec.CryptoInfo structure
+ * to be filled in.
+ * @return true iff the sample flags contain {@link #SAMPLE_FLAG_ENCRYPTED}
+ */
public native boolean getSampleCryptoInfo(MediaCodec.CryptoInfo info);
- /** Returns an estimate of how much data is presently cached in memory
- expressed in microseconds. Returns -1 if that information is unavailable
- or not applicable (no cache).
+ /**
+ * Returns an estimate of how much data is presently cached in memory
+ * expressed in microseconds. Returns -1 if that information is unavailable
+ * or not applicable (no cache).
*/
public native long getCachedDuration();
- /** Returns true iff we are caching data and the cache has reached the
- * end of the data stream (for now, a future seek may of course restart
- * the fetching of data).
- * This API only returns a meaningful result if {link #getCachedDuration}
- * indicates the presence of a cache, i.e. does NOT return -1.
- */
+ /**
+ * Returns true iff we are caching data and the cache has reached the
+ * end of the data stream (for now, a future seek may of course restart
+ * the fetching of data).
+ * This API only returns a meaningful result if {link #getCachedDuration}
+ * indicates the presence of a cache, i.e. does NOT return -1.
+ */
public native boolean hasCacheReachedEndOfStream();
private static native final void native_init();
diff --git a/media/java/android/media/MediaFormat.java b/media/java/android/media/MediaFormat.java
new file mode 100644
index 0000000..df77c9e
--- /dev/null
+++ b/media/java/android/media/MediaFormat.java
@@ -0,0 +1,290 @@
+/*
+ * Copyright (C) 2012 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 android.media;
+
+import java.nio.ByteBuffer;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Encapsulates the information describing the format of media data,
+ * be it audio or video.
+ *
+ * The format of the media data is specified as string/value pairs.
+ *
+ * Keys common to all formats:
+ *
+ * <table>
+ * <tr><th>Name</th><th>Value Type</th><th>Description</th></tr>
+ * <tr><td>{@link #KEY_MIME}</td><td>String</td><td>The type of the format.</td></tr>
+ * <tr><td>{@link #KEY_MAX_INPUT_SIZE}</td><td>Integer</td><td>optional, maximum size of a buffer of input data</td></tr>
+ * <tr><td>{@link #KEY_BIT_RATE}</td><td>Integer</td><td><b>encoder-only</b>, desired bitrate in bits/second</td></tr>
+ * </table>
+ *
+ * Video formats have the following keys:
+ * <table>
+ * <tr><th>Name</th><th>Value Type</th><th>Description</th></tr>
+ * <tr><td>{@link #KEY_WIDTH}</td><td>Integer</td><td></td></tr>
+ * <tr><td>{@link #KEY_HEIGHT}</td><td>Integer</td><td></td></tr>
+ * <tr><td>{@link #KEY_COLOR_FORMAT}</td><td>Integer</td><td><b>encoder-only</b></td></tr>
+ * <tr><td>{@link #KEY_FRAME_RATE}</td><td>Integer or Float</td><td><b>encoder-only</b></td></tr>
+ * <tr><td>{@link #KEY_I_FRAME_INTERVAL}</td><td>Integer</td><td><b>encoder-only</b></td></tr>
+ * </table>
+ *
+ * Audio formats have the following keys:
+ * <table>
+ * <tr><th>Name</th><th>Value Type</th><th>Description</th></tr>
+ * <tr><td>{@link #KEY_CHANNEL_COUNT}</td><td>Integer</td><td></td></tr>
+ * <tr><td>{@link #KEY_SAMPLE_RATE}</td><td>Integer</td><td></td></tr>
+ * <tr><td>{@link #KEY_IS_ADTS}</td><td>Integer</td><td>optional, if content is AAC audio, setting this key to 1 indicates that each audio frame is prefixed by the ADTS header.</td></tr>
+ * <tr><td>{@link #KEY_AAC_PROFILE}</td><td>Integer</td><td><b>encoder-only</b>, optional, if content is AAC audio, specifies the desired profile.</td></tr>
+ * <tr><td>{@link #KEY_CHANNEL_MASK}</td><td>Integer</td><td>A mask of audio channel assignments</td></tr>
+ * </table>
+ *
+ */
+public final class MediaFormat {
+ private Map<String, Object> mMap;
+
+ /**
+ * A key describing the mime type of the MediaFormat.
+ * The associated value is a string.
+ */
+ public static final String KEY_MIME = "mime";
+
+ /**
+ * A key describing the sample rate of an audio format.
+ * The associated value is an integer
+ */
+ public static final String KEY_SAMPLE_RATE = "sample-rate";
+
+ /**
+ * A key describing the number of channels in an audio format.
+ * The associated value is an integer
+ */
+ public static final String KEY_CHANNEL_COUNT = "channel-count";
+
+ /**
+ * A key describing the width of the content in a video format.
+ * The associated value is an integer
+ */
+ public static final String KEY_WIDTH = "width";
+
+ /**
+ * A key describing the height of the content in a video format.
+ * The associated value is an integer
+ */
+ public static final String KEY_HEIGHT = "height";
+
+ /** A key describing the maximum size in bytes of a buffer of data
+ * described by this MediaFormat.
+ * The associated value is an integer
+ */
+ public static final String KEY_MAX_INPUT_SIZE = "max-input-size";
+
+ /**
+ * A key describing the bitrate in bits/sec.
+ * The associated value is an integer
+ */
+ public static final String KEY_BIT_RATE = "bitrate";
+
+ /**
+ * A key describing the color format of the content in a video format.
+ * Constants are declared in {@link android.media.MediaCodecInfo.CodecCapabilities}.
+ */
+ public static final String KEY_COLOR_FORMAT = "color-format";
+
+ /**
+ * A key describing the frame rate of a video format in frames/sec.
+ * The associated value is an integer or a float.
+ */
+ public static final String KEY_FRAME_RATE = "frame-rate";
+
+ /**
+ * A key describing the frequency of I frames expressed in secs
+ * between I frames.
+ * The associated value is an integer.
+ */
+ public static final String KEY_I_FRAME_INTERVAL = "i-frame-interval";
+
+ /**
+ * @hide
+ */
+ public static final String KEY_STRIDE = "stride";
+ /**
+ * @hide
+ */
+ public static final String KEY_SLICE_HEIGHT = "slice-height";
+
+ /**
+ * A key describing the duration (in microseconds) of the content.
+ * The associated value is a long.
+ */
+ public static final String KEY_DURATION = "durationUs";
+
+ /**
+ * A key mapping to a value of 1 if the content is AAC audio and
+ * audio frames are prefixed with an ADTS header.
+ * The associated value is an integer (0 or 1).
+ */
+ public static final String KEY_IS_ADTS = "is-adts";
+
+ /**
+ * A key describing the channel composition of audio content. This mask
+ * is composed of bits drawn from channel mask definitions in {@link android.media.AudioFormat}.
+ * The associated value is an integer.
+ */
+ public static final String KEY_CHANNEL_MASK = "channel-mask";
+
+ /**
+ * A key describing the AAC profile to be used (AAC audio formats only).
+ * Constants are declared in {@link android.media.MediaCodecInfo.CodecCapabilities}.
+ */
+ public static final String KEY_AAC_PROFILE = "aac-profile";
+
+ /* package private */ MediaFormat(Map<String, Object> map) {
+ mMap = map;
+ }
+
+ /**
+ * Creates an empty MediaFormat
+ */
+ public MediaFormat() {
+ mMap = new HashMap();
+ }
+
+ /* package private */ Map<String, Object> getMap() {
+ return mMap;
+ }
+
+ /**
+ * Returns true iff a key of the given name exists in the format.
+ */
+ public final boolean containsKey(String name) {
+ return mMap.containsKey(name);
+ }
+
+ /**
+ * Returns the value of an integer key.
+ */
+ public final int getInteger(String name) {
+ return ((Integer)mMap.get(name)).intValue();
+ }
+
+ /**
+ * Returns the value of a long key.
+ */
+ public final long getLong(String name) {
+ return ((Long)mMap.get(name)).longValue();
+ }
+
+ /**
+ * Returns the value of a float key.
+ */
+ public final float getFloat(String name) {
+ return ((Float)mMap.get(name)).floatValue();
+ }
+
+ /**
+ * Returns the value of a string key.
+ */
+ public final String getString(String name) {
+ return (String)mMap.get(name);
+ }
+
+ /**
+ * Returns the value of a ByteBuffer key.
+ */
+ public final ByteBuffer getByteBuffer(String name) {
+ return (ByteBuffer)mMap.get(name);
+ }
+
+ /**
+ * Sets the value of an integer key.
+ */
+ public final void setInteger(String name, int value) {
+ mMap.put(name, new Integer(value));
+ }
+
+ /**
+ * Sets the value of a long key.
+ */
+ public final void setLong(String name, long value) {
+ mMap.put(name, new Long(value));
+ }
+
+ /**
+ * Sets the value of a float key.
+ */
+ public final void setFloat(String name, float value) {
+ mMap.put(name, new Float(value));
+ }
+
+ /**
+ * Sets the value of a string key.
+ */
+ public final void setString(String name, String value) {
+ mMap.put(name, value);
+ }
+
+ /**
+ * Sets the value of a ByteBuffer key.
+ */
+ public final void setByteBuffer(String name, ByteBuffer bytes) {
+ mMap.put(name, bytes);
+ }
+
+ /**
+ * Creates a minimal audio format.
+ * @param mime The mime type of the content.
+ * @param sampleRate The sampling rate of the content.
+ * @param channelCount The number of audio channels in the content.
+ */
+ public static final MediaFormat createAudioFormat(
+ String mime,
+ int sampleRate,
+ int channelCount) {
+ MediaFormat format = new MediaFormat();
+ format.setString(KEY_MIME, mime);
+ format.setInteger(KEY_SAMPLE_RATE, sampleRate);
+ format.setInteger(KEY_CHANNEL_COUNT, channelCount);
+
+ return format;
+ }
+
+ /**
+ * Creates a minimal video format.
+ * @param mime The mime type of the content.
+ * @param width The width of the content (in pixels)
+ * @param height The height of the content (in pixels)
+ */
+ public static final MediaFormat createVideoFormat(
+ String mime,
+ int width,
+ int height) {
+ MediaFormat format = new MediaFormat();
+ format.setString(KEY_MIME, mime);
+ format.setInteger(KEY_WIDTH, width);
+ format.setInteger(KEY_HEIGHT, height);
+
+ return format;
+ }
+
+ @Override
+ public String toString() {
+ return mMap.toString();
+ }
+}
diff --git a/media/java/android/media/MediaPlayer.java b/media/java/android/media/MediaPlayer.java
index 33ed081..9f0fd48 100644
--- a/media/java/android/media/MediaPlayer.java
+++ b/media/java/android/media/MediaPlayer.java
@@ -394,6 +394,10 @@
* <td>{} </p></td>
* <td>This method can be called in any state and calling it does not change
* the object state. </p></td></tr>
+ * <tr><td>setVideoScalingMode </p></td>
+ * <td>{Initialized, Prepared, Started, Paused, Stopped, PlaybackCompleted} </p></td>
+ * <td>{Idle, Error}</p></td>
+ * <td>Successful invoke of this method does not change the state.</p></td></tr>
* <tr><td>setLooping </p></td>
* <td>{Idle, Initialized, Stopped, Prepared, Started, Paused,
* PlaybackCompleted}</p></td>
@@ -599,6 +603,7 @@
private static final int INVOKE_ID_ADD_EXTERNAL_SOURCE_FD = 3;
private static final int INVOKE_ID_SELECT_TRACK = 4;
private static final int INVOKE_ID_DESELECT_TRACK = 5;
+ private static final int INVOKE_ID_SET_VIDEO_SCALE_MODE = 6;
/**
* Create a request parcel which can be routed to the native media
@@ -691,6 +696,63 @@
updateSurfaceScreenOn();
}
+ /* Do not change these video scaling mode values below without updating
+ * their counterparts in system/window.h! Please do not forget to update
+ * {@link #isVideoScalingModeSupported} when new video scaling modes
+ * are added.
+ */
+ /**
+ * Specifies a video scaling mode. The content is stretched to the
+ * surface rendering area. When the surface has the same aspect ratio
+ * as the content, the aspect ratio of the content is maintained;
+ * otherwise, the aspect ratio of the content is not maintained when video
+ * is being rendered. Unlike {@ #VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING},
+ * there is no content cropping with this video scaling mode.
+ */
+ public static final int VIDEO_SCALING_MODE_SCALE_TO_FIT = 1;
+
+ /**
+ * Specifies a video scaling mode. The content is scaled, maintaining
+ * its aspect ratio. The whole surface area is always used. When the
+ * aspect ratio of the content is the same as the surface, no content
+ * is cropped; otherwise, content is cropped to fit the surface.
+ */
+ public static final int VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING = 2;
+ /**
+ * Sets video scaling mode. To make the target video scaling mode
+ * effective during playback, this method must be called after
+ * data source is set. If not called, the default video
+ * scaling mode is {@link #VIDEO_SCALING_MODE_SCALE_TO_FIT}.
+ *
+ * <p> The supported video scaling modes are:
+ * <ul>
+ * <li> {@link #VIDEO_SCALING_MODE_SCALE_TO_FIT}
+ * <li> {@link #VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING}
+ * </ul>
+ *
+ * @param mode target video scaling mode. Most be one of the supported
+ * video scaling modes; otherwise, IllegalArgumentException will be thrown.
+ *
+ * @see MediaPlayer#VIDEO_SCALING_MODE_SCALE_TO_FIT
+ * @see MediaPlayer#VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING
+ */
+ public void setVideoScalingMode(int mode) {
+ if (isVideoScalingModeSupported(mode)) {
+ final String msg = "Scaling mode " + mode + " is not supported";
+ throw new IllegalArgumentException(msg);
+ }
+ Parcel request = Parcel.obtain();
+ Parcel reply = Parcel.obtain();
+ try {
+ request.writeInterfaceToken(IMEDIA_PLAYER);
+ request.writeInt(INVOKE_ID_SET_VIDEO_SCALE_MODE);
+ invoke(request, reply);
+ } finally {
+ request.recycle();
+ reply.recycle();
+ }
+ }
+
/**
* Convenience method to create a MediaPlayer for a given Uri.
* On success, {@link #prepare()} will already have been called and must not be called again.
@@ -1585,11 +1647,16 @@
public TrackInfo[] getTrackInfo() throws IllegalStateException {
Parcel request = Parcel.obtain();
Parcel reply = Parcel.obtain();
- request.writeInterfaceToken(IMEDIA_PLAYER);
- request.writeInt(INVOKE_ID_GET_TRACK_INFO);
- invoke(request, reply);
- TrackInfo trackInfo[] = reply.createTypedArray(TrackInfo.CREATOR);
- return trackInfo;
+ try {
+ request.writeInterfaceToken(IMEDIA_PLAYER);
+ request.writeInt(INVOKE_ID_GET_TRACK_INFO);
+ invoke(request, reply);
+ TrackInfo trackInfo[] = reply.createTypedArray(TrackInfo.CREATOR);
+ return trackInfo;
+ } finally {
+ request.recycle();
+ reply.recycle();
+ }
}
/* Do not change these values without updating their counterparts
@@ -1734,13 +1801,18 @@
Parcel request = Parcel.obtain();
Parcel reply = Parcel.obtain();
- request.writeInterfaceToken(IMEDIA_PLAYER);
- request.writeInt(INVOKE_ID_ADD_EXTERNAL_SOURCE_FD);
- request.writeFileDescriptor(fd);
- request.writeLong(offset);
- request.writeLong(length);
- request.writeString(mimeType);
- invoke(request, reply);
+ try {
+ request.writeInterfaceToken(IMEDIA_PLAYER);
+ request.writeInt(INVOKE_ID_ADD_EXTERNAL_SOURCE_FD);
+ request.writeFileDescriptor(fd);
+ request.writeLong(offset);
+ request.writeLong(length);
+ request.writeString(mimeType);
+ invoke(request, reply);
+ } finally {
+ request.recycle();
+ reply.recycle();
+ }
}
/**
@@ -1797,10 +1869,15 @@
throws IllegalStateException {
Parcel request = Parcel.obtain();
Parcel reply = Parcel.obtain();
- request.writeInterfaceToken(IMEDIA_PLAYER);
- request.writeInt(select? INVOKE_ID_SELECT_TRACK: INVOKE_ID_DESELECT_TRACK);
- request.writeInt(index);
- invoke(request, reply);
+ try {
+ request.writeInterfaceToken(IMEDIA_PLAYER);
+ request.writeInt(select? INVOKE_ID_SELECT_TRACK: INVOKE_ID_DESELECT_TRACK);
+ request.writeInt(index);
+ invoke(request, reply);
+ } finally {
+ request.recycle();
+ reply.recycle();
+ }
}
@@ -2319,4 +2396,11 @@
private OnInfoListener mOnInfoListener;
+ /*
+ * Test whether a given video scaling mode is supported.
+ */
+ private boolean isVideoScalingModeSupported(int mode) {
+ return (mode == VIDEO_SCALING_MODE_SCALE_TO_FIT ||
+ mode == VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING);
+ }
}
diff --git a/media/java/android/media/Ringtone.java b/media/java/android/media/Ringtone.java
index 57139d2..23f7b55 100644
--- a/media/java/android/media/Ringtone.java
+++ b/media/java/android/media/Ringtone.java
@@ -128,13 +128,16 @@
actualTitle);
}
} else {
-
- if (DrmStore.AUTHORITY.equals(authority)) {
- cursor = res.query(uri, DRM_COLUMNS, null, null, null);
- } else if (MediaStore.AUTHORITY.equals(authority)) {
- cursor = res.query(uri, MEDIA_COLUMNS, null, null, null);
+ try {
+ if (DrmStore.AUTHORITY.equals(authority)) {
+ cursor = res.query(uri, DRM_COLUMNS, null, null, null);
+ } else if (MediaStore.AUTHORITY.equals(authority)) {
+ cursor = res.query(uri, MEDIA_COLUMNS, null, null, null);
+ }
+ } catch (SecurityException e) {
+ // missing cursor is handled below
}
-
+
try {
if (cursor != null && cursor.getCount() == 1) {
cursor.moveToFirst();
@@ -188,12 +191,12 @@
} catch (SecurityException e) {
destroyLocalPlayer();
if (!mAllowRemote) {
- throw new IllegalStateException("Remote playback not allowed", e);
+ Log.w(TAG, "Remote playback not allowed: " + e);
}
} catch (IOException e) {
destroyLocalPlayer();
if (!mAllowRemote) {
- throw new IllegalStateException("Remote playback not allowed", e);
+ Log.w(TAG, "Remote playback not allowed: " + e);
}
}
@@ -228,7 +231,7 @@
Log.w(TAG, "Problem playing ringtone: " + e);
}
} else {
- throw new IllegalStateException("Neither local nor remote playback available");
+ Log.w(TAG, "Neither local nor remote playback available");
}
}
@@ -271,7 +274,8 @@
return false;
}
} else {
- throw new IllegalStateException("Neither local nor remote playback available");
+ Log.w(TAG, "Neither local nor remote playback available");
+ return false;
}
}
diff --git a/media/jni/android_media_MediaCodec.cpp b/media/jni/android_media_MediaCodec.cpp
index f98c063..e43e66e 100644
--- a/media/jni/android_media_MediaCodec.cpp
+++ b/media/jni/android_media_MediaCodec.cpp
@@ -212,6 +212,25 @@
}
jclass byteBufferClass = env->FindClass("java/nio/ByteBuffer");
+ CHECK(byteBufferClass != NULL);
+
+ jmethodID orderID = env->GetMethodID(
+ byteBufferClass,
+ "order",
+ "(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer;");
+
+ CHECK(orderID != NULL);
+
+ jclass byteOrderClass = env->FindClass("java/nio/ByteOrder");
+ CHECK(byteOrderClass != NULL);
+
+ jmethodID nativeOrderID = env->GetStaticMethodID(
+ byteOrderClass, "nativeOrder", "()Ljava/nio/ByteOrder;");
+ CHECK(nativeOrderID != NULL);
+
+ jobject nativeByteOrderObj =
+ env->CallStaticObjectMethod(byteOrderClass, nativeOrderID);
+ CHECK(nativeByteOrderObj != NULL);
*bufArray = (jobjectArray)env->NewObjectArray(
buffers.size(), byteBufferClass, NULL);
@@ -224,6 +243,11 @@
buffer->base(),
buffer->capacity());
+ jobject me = env->CallObjectMethod(
+ byteBuffer, orderID, nativeByteOrderObj);
+ env->DeleteLocalRef(me);
+ me = NULL;
+
env->SetObjectArrayElement(
*bufArray, i, byteBuffer);
@@ -231,6 +255,9 @@
byteBuffer = NULL;
}
+ env->DeleteLocalRef(nativeByteOrderObj);
+ nativeByteOrderObj = NULL;
+
return OK;
}
@@ -630,9 +657,9 @@
throwExceptionAsNecessary(env, err);
}
-static jobject android_media_MediaCodec_getOutputFormat(
+static jobject android_media_MediaCodec_getOutputFormatNative(
JNIEnv *env, jobject thiz) {
- ALOGV("android_media_MediaCodec_getOutputFormat");
+ ALOGV("android_media_MediaCodec_getOutputFormatNative");
sp<JMediaCodec> codec = getMediaCodec(env, thiz);
@@ -790,8 +817,8 @@
{ "releaseOutputBuffer", "(IZ)V",
(void *)android_media_MediaCodec_releaseOutputBuffer },
- { "getOutputFormat", "()Ljava/util/Map;",
- (void *)android_media_MediaCodec_getOutputFormat },
+ { "getOutputFormatNative", "()Ljava/util/Map;",
+ (void *)android_media_MediaCodec_getOutputFormatNative },
{ "getBuffers", "(Z)[Ljava/nio/ByteBuffer;",
(void *)android_media_MediaCodec_getBuffers },
diff --git a/media/jni/android_media_MediaCodecList.cpp b/media/jni/android_media_MediaCodecList.cpp
index 7139560..0638b4a 100644
--- a/media/jni/android_media_MediaCodecList.cpp
+++ b/media/jni/android_media_MediaCodecList.cpp
@@ -27,7 +27,7 @@
using namespace android;
-static jint android_media_MediaCodecList_countCodecs(
+static jint android_media_MediaCodecList_getCodecCount(
JNIEnv *env, jobject thiz) {
return MediaCodecList::getInstance()->countCodecs();
}
@@ -105,13 +105,13 @@
}
jclass capsClazz =
- env->FindClass("android/media/MediaCodecList$CodecCapabilities");
+ env->FindClass("android/media/MediaCodecInfo$CodecCapabilities");
CHECK(capsClazz != NULL);
jobject caps = env->AllocObject(capsClazz);
jclass profileLevelClazz =
- env->FindClass("android/media/MediaCodecList$CodecProfileLevel");
+ env->FindClass("android/media/MediaCodecInfo$CodecProfileLevel");
CHECK(profileLevelClazz != NULL);
jobjectArray profileLevelArray =
@@ -140,7 +140,7 @@
jfieldID profileLevelsField = env->GetFieldID(
capsClazz,
"profileLevels",
- "[Landroid/media/MediaCodecList$CodecProfileLevel;");
+ "[Landroid/media/MediaCodecInfo$CodecProfileLevel;");
env->SetObjectField(caps, profileLevelsField, profileLevelArray);
@@ -169,7 +169,7 @@
}
static JNINativeMethod gMethods[] = {
- { "countCodecs", "()I", (void *)android_media_MediaCodecList_countCodecs },
+ { "getCodecCount", "()I", (void *)android_media_MediaCodecList_getCodecCount },
{ "getCodecName", "(I)Ljava/lang/String;",
(void *)android_media_MediaCodecList_getCodecName },
{ "isEncoder", "(I)Z", (void *)android_media_MediaCodecList_isEncoder },
@@ -177,7 +177,7 @@
(void *)android_media_MediaCodecList_getSupportedTypes },
{ "getCodecCapabilities",
- "(ILjava/lang/String;)Landroid/media/MediaCodecList$CodecCapabilities;",
+ "(ILjava/lang/String;)Landroid/media/MediaCodecInfo$CodecCapabilities;",
(void *)android_media_MediaCodecList_getCodecCapabilities },
{ "native_init", "()V", (void *)android_media_MediaCodecList_native_init },
diff --git a/media/jni/android_media_MediaCrypto.cpp b/media/jni/android_media_MediaCrypto.cpp
index f4f0953..517a293 100644
--- a/media/jni/android_media_MediaCrypto.cpp
+++ b/media/jni/android_media_MediaCrypto.cpp
@@ -210,7 +210,7 @@
if (err != OK) {
jniThrowException(
env,
- "java/lang/RuntimeException",
+ "android/media/MediaCryptoException",
"Failed to instantiate crypto object.");
return;
}
@@ -223,7 +223,7 @@
android_media_MediaCrypto_release(env, thiz);
}
-static jboolean android_media_MediaCrypto_isCryptoSchemeSupported(
+static jboolean android_media_MediaCrypto_isCryptoSchemeSupportedNative(
JNIEnv *env, jobject thiz, jbyteArray uuidObj) {
jsize uuidLength = env->GetArrayLength(uuidObj);
@@ -284,8 +284,8 @@
{ "native_finalize", "()V",
(void *)android_media_MediaCrypto_native_finalize },
- { "isCryptoSchemeSupported", "([B)Z",
- (void *)android_media_MediaCrypto_isCryptoSchemeSupported },
+ { "isCryptoSchemeSupportedNative", "([B)Z",
+ (void *)android_media_MediaCrypto_isCryptoSchemeSupportedNative },
{ "requiresSecureDecoderComponent", "(Ljava/lang/String;)Z",
(void *)android_media_MediaCrypto_requiresSecureDecoderComponent },
diff --git a/media/jni/android_media_MediaExtractor.cpp b/media/jni/android_media_MediaExtractor.cpp
index 9e1920c..351ff04 100644
--- a/media/jni/android_media_MediaExtractor.cpp
+++ b/media/jni/android_media_MediaExtractor.cpp
@@ -237,7 +237,7 @@
setMediaExtractor(env, thiz, NULL);
}
-static jint android_media_MediaExtractor_countTracks(
+static jint android_media_MediaExtractor_getTrackCount(
JNIEnv *env, jobject thiz) {
sp<JMediaExtractor> extractor = getMediaExtractor(env, thiz);
@@ -249,7 +249,7 @@
return extractor->countTracks();
}
-static jobject android_media_MediaExtractor_getTrackFormat(
+static jobject android_media_MediaExtractor_getTrackFormatNative(
JNIEnv *env, jobject thiz, jint index) {
sp<JMediaExtractor> extractor = getMediaExtractor(env, thiz);
@@ -313,7 +313,7 @@
}
if (mode < MediaSource::ReadOptions::SEEK_PREVIOUS_SYNC
- || mode > MediaSource::ReadOptions::SEEK_CLOSEST) {
+ || mode >= MediaSource::ReadOptions::SEEK_CLOSEST) {
jniThrowException(env, "java/lang/IllegalArgumentException", NULL);
return;
}
@@ -669,10 +669,10 @@
static JNINativeMethod gMethods[] = {
{ "release", "()V", (void *)android_media_MediaExtractor_release },
- { "countTracks", "()I", (void *)android_media_MediaExtractor_countTracks },
+ { "getTrackCount", "()I", (void *)android_media_MediaExtractor_getTrackCount },
- { "getTrackFormat", "(I)Ljava/util/Map;",
- (void *)android_media_MediaExtractor_getTrackFormat },
+ { "getTrackFormatNative", "(I)Ljava/util/Map;",
+ (void *)android_media_MediaExtractor_getTrackFormatNative },
{ "selectTrack", "(I)V", (void *)android_media_MediaExtractor_selectTrack },
diff --git a/media/mca/filterfw/java/android/filterfw/core/GLEnvironment.java b/media/mca/filterfw/java/android/filterfw/core/GLEnvironment.java
index fcf5f5d..19d564c 100644
--- a/media/mca/filterfw/java/android/filterfw/core/GLEnvironment.java
+++ b/media/mca/filterfw/java/android/filterfw/core/GLEnvironment.java
@@ -31,6 +31,8 @@
private int glEnvId;
+ private boolean mManageContext = true;
+
public GLEnvironment() {
nativeAllocate();
}
@@ -51,12 +53,14 @@
}
public void initWithNewContext() {
+ mManageContext = true;
if (!nativeInitWithNewContext()) {
throw new RuntimeException("Could not initialize GLEnvironment with new context!");
}
}
public void initWithCurrentContext() {
+ mManageContext = false;
if (!nativeInitWithCurrentContext()) {
throw new RuntimeException("Could not initialize GLEnvironment with current context!");
}
@@ -78,13 +82,13 @@
if (Looper.myLooper() != null && Looper.myLooper().equals(Looper.getMainLooper())) {
Log.e("FilterFramework", "Activating GL context in UI thread!");
}
- if (!nativeActivate()) {
+ if (mManageContext && !nativeActivate()) {
throw new RuntimeException("Could not activate GLEnvironment!");
}
}
public void deactivate() {
- if (!nativeDeactivate()) {
+ if (mManageContext && !nativeDeactivate()) {
throw new RuntimeException("Could not deactivate GLEnvironment!");
}
}
diff --git a/media/mca/filterpacks/java/android/filterpacks/imageproc/BlackWhiteFilter.java b/media/mca/filterpacks/java/android/filterpacks/imageproc/BlackWhiteFilter.java
index a1cec01..9e40d37 100644
--- a/media/mca/filterpacks/java/android/filterpacks/imageproc/BlackWhiteFilter.java
+++ b/media/mca/filterpacks/java/android/filterpacks/imageproc/BlackWhiteFilter.java
@@ -47,20 +47,19 @@
private int mHeight = 0;
private int mTarget = FrameFormat.TARGET_UNSPECIFIED;
- private Frame mNoiseFrame = null;
- private Random mRandom;
-
private final String mBlackWhiteShader =
"precision mediump float;\n" +
"uniform sampler2D tex_sampler_0;\n" +
- "uniform sampler2D tex_sampler_1;\n" +
"uniform float black;\n" +
"uniform float scale;\n" +
"uniform float stepsize;\n" +
"varying vec2 v_texcoord;\n" +
+ "float rand(vec2 loc) {\n" +
+ " return fract(sin(dot(loc, vec2(12.9898, 78.233))) * 43758.5453);\n" +
+ "}\n" +
"void main() {\n" +
" vec4 color = texture2D(tex_sampler_0, v_texcoord);\n" +
- " float dither = texture2D(tex_sampler_1, v_texcoord).r;\n" +
+ " float dither = rand(v_texcoord);\n" +
" vec3 xform = clamp((color.rgb - black) * scale, 0.0, 1.0);\n" +
" vec3 temp = clamp((color.rgb + stepsize - black) * scale, 0.0, 1.0);\n" +
" vec3 new_color = clamp(xform + (temp - xform) * (dither - 0.5), 0.0, 1.0);\n" +
@@ -69,8 +68,6 @@
public BlackWhiteFilter(String name) {
super(name);
-
- mRandom = new Random();
}
@Override
@@ -84,14 +81,6 @@
return inputFormat;
}
- @Override
- public void tearDown(FilterContext context) {
- if (mNoiseFrame != null) {
- mNoiseFrame.release();
- mNoiseFrame = null;
- }
- }
-
public void initProgram(FilterContext context, int target) {
switch (target) {
case FrameFormat.TARGET_GPU:
@@ -139,33 +128,13 @@
if (inputFormat.getWidth() != mWidth || inputFormat.getHeight() != mHeight) {
mWidth = inputFormat.getWidth();
mHeight = inputFormat.getHeight();
-
- if (mNoiseFrame != null) {
- mNoiseFrame.release();
- }
-
- int[] buffer = new int[mWidth * mHeight];
- for (int i = 0; i < mWidth * mHeight; ++i) {
- buffer[i] = mRandom.nextInt(255);
- }
- FrameFormat format = ImageFormat.create(mWidth, mHeight,
- ImageFormat.COLORSPACE_RGBA,
- FrameFormat.TARGET_GPU);
- mNoiseFrame = context.getFrameManager().newFrame(format);
- mNoiseFrame.setInts(buffer);
- }
-
- if (mNoiseFrame != null && (mNoiseFrame.getFormat().getWidth() != mWidth ||
- mNoiseFrame.getFormat().getHeight() != mHeight)) {
- throw new RuntimeException("Random map and imput image size mismatch!");
}
// Create output frame
Frame output = context.getFrameManager().newFrame(inputFormat);
// Process
- Frame[] inputs = {input, mNoiseFrame};
- mProgram.process(inputs, output);
+ mProgram.process(input, output);
// Push output
pushOutput("image", output);
diff --git a/media/mca/filterpacks/java/android/filterpacks/imageproc/DocumentaryFilter.java b/media/mca/filterpacks/java/android/filterpacks/imageproc/DocumentaryFilter.java
index 3c7b846..0144d4e 100644
--- a/media/mca/filterpacks/java/android/filterpacks/imageproc/DocumentaryFilter.java
+++ b/media/mca/filterpacks/java/android/filterpacks/imageproc/DocumentaryFilter.java
@@ -41,21 +41,20 @@
private int mHeight = 0;
private int mTarget = FrameFormat.TARGET_UNSPECIFIED;
- private Frame mNoiseFrame;
- private Random mRandom;
-
private final String mDocumentaryShader =
"precision mediump float;\n" +
"uniform sampler2D tex_sampler_0;\n" +
- "uniform sampler2D tex_sampler_1;\n" +
"uniform float stepsize;\n" +
"uniform float inv_max_dist;\n" +
"uniform vec2 center;\n" +
"varying vec2 v_texcoord;\n" +
+ "float rand(vec2 loc) {\n" +
+ " return fract(sin(dot(loc, vec2(12.9898, 78.233))) * 43758.5453);\n" +
+ "}\n" +
"void main() {\n" +
// black white
" vec4 color = texture2D(tex_sampler_0, v_texcoord);\n" +
- " float dither = texture2D(tex_sampler_1, v_texcoord).r;\n" +
+ " float dither = rand(v_texcoord);\n" +
" vec3 xform = clamp(2.0 * color.rgb, 0.0, 1.0);\n" +
" vec3 temp = clamp(2.0 * (color.rgb + stepsize), 0.0, 1.0);\n" +
" vec3 new_color = clamp(xform + (temp - xform) * (dither - 0.5), 0.0, 1.0);\n" +
@@ -70,8 +69,6 @@
public DocumentaryFilter(String name) {
super(name);
-
- mRandom = new Random();
}
@Override
@@ -85,14 +82,6 @@
return inputFormat;
}
- @Override
- public void tearDown(FilterContext context) {
- if (mNoiseFrame != null) {
- mNoiseFrame.release();
- mNoiseFrame = null;
- }
- }
-
public void initProgram(FilterContext context, int target) {
switch (target) {
case FrameFormat.TARGET_GPU:
@@ -123,34 +112,14 @@
if (inputFormat.getWidth() != mWidth || inputFormat.getHeight() != mHeight) {
mWidth = inputFormat.getWidth();
mHeight = inputFormat.getHeight();
-
- int[] buffer = new int[mWidth * mHeight];
- for (int i = 0; i < mWidth * mHeight; ++i) {
- buffer[i] = mRandom.nextInt(255);
- }
- FrameFormat format = ImageFormat.create(mWidth, mHeight,
- ImageFormat.COLORSPACE_RGBA,
- FrameFormat.TARGET_GPU);
- if (mNoiseFrame != null) {
- mNoiseFrame.release();
- }
- mNoiseFrame = context.getFrameManager().newFrame(format);
- mNoiseFrame.setInts(buffer);
-
initParameters();
}
- if (mNoiseFrame != null && (mNoiseFrame.getFormat().getWidth() != mWidth ||
- mNoiseFrame.getFormat().getHeight() != mHeight)) {
- throw new RuntimeException("Random map and imput image size mismatch!");
- }
-
// Create output frame
Frame output = context.getFrameManager().newFrame(inputFormat);
// Process
- Frame[] inputs = {input, mNoiseFrame};
- mProgram.process(inputs, output);
+ mProgram.process(input, output);
// Push output
pushOutput("image", output);
diff --git a/media/mca/filterpacks/java/android/filterpacks/imageproc/GrainFilter.java b/media/mca/filterpacks/java/android/filterpacks/imageproc/GrainFilter.java
index 168a9c6..31855460 100644
--- a/media/mca/filterpacks/java/android/filterpacks/imageproc/GrainFilter.java
+++ b/media/mca/filterpacks/java/android/filterpacks/imageproc/GrainFilter.java
@@ -42,14 +42,25 @@
@GenerateFieldPort(name = "tile_size", hasDefault = true)
private int mTileSize = 640;
- private Program mProgram;
+ private Program mGrainProgram;
+ private Program mNoiseProgram;
private int mWidth = 0;
private int mHeight = 0;
private int mTarget = FrameFormat.TARGET_UNSPECIFIED;
- private Frame mNoiseFrame = null;
- private Random mRandom;
+ private Random mRandom = new Random();
+
+ private final String mNoiseShader =
+ "precision mediump float;\n" +
+ "uniform vec2 seed;\n" +
+ "varying vec2 v_texcoord;\n" +
+ "float rand(vec2 loc) {\n" +
+ " return fract(sin(dot(loc, vec2(12.9898, 78.233))) * 43758.5453);\n" +
+ "}\n" +
+ "void main() {\n" +
+ " gl_FragColor = vec4(rand(v_texcoord + seed), 0.0, 0.0, 1.0);\n" +
+ "}\n";
private final String mGrainShader =
"precision mediump float;\n" +
@@ -75,8 +86,6 @@
public GrainFilter(String name) {
super(name);
-
- mRandom = new Random();
}
@Override
@@ -93,9 +102,13 @@
public void initProgram(FilterContext context, int target) {
switch (target) {
case FrameFormat.TARGET_GPU:
- ShaderProgram shaderProgram = new ShaderProgram(context, mGrainShader);
+ ShaderProgram shaderProgram = new ShaderProgram(context, mNoiseShader);
shaderProgram.setMaximumTileSize(mTileSize);
- mProgram = shaderProgram;
+ mNoiseProgram = shaderProgram;
+
+ shaderProgram = new ShaderProgram(context, mGrainShader);
+ shaderProgram.setMaximumTileSize(mTileSize);
+ mGrainProgram = shaderProgram;
break;
default:
@@ -106,46 +119,49 @@
}
private void updateParameters() {
- mProgram.setHostValue("scale", mScale);
+ float seed[] = { mRandom.nextFloat(), mRandom.nextFloat() };
+ mNoiseProgram.setHostValue("seed", seed);
+
+ mGrainProgram.setHostValue("scale", mScale);
}
private void updateFrameSize(int width, int height) {
mWidth = width;
mHeight = height;
- if (mProgram != null) {
- mProgram.setHostValue("stepX", 0.5f / mWidth);
- mProgram.setHostValue("stepY", 0.5f / mHeight);
+ if (mGrainProgram != null) {
+ mGrainProgram.setHostValue("stepX", 0.5f / mWidth);
+ mGrainProgram.setHostValue("stepY", 0.5f / mHeight);
updateParameters();
}
}
@Override
public void fieldPortValueUpdated(String name, FilterContext context) {
- if (mProgram != null) {
+ if (mGrainProgram != null && mNoiseProgram != null) {
updateParameters();
}
}
@Override
- public void tearDown(FilterContext context) {
- if (mNoiseFrame != null) {
- mNoiseFrame.release();
- mNoiseFrame = null;
- }
- }
-
- @Override
public void process(FilterContext context) {
// Get input frame
Frame input = pullInput("image");
FrameFormat inputFormat = input.getFormat();
+ FrameFormat noiseFormat = ImageFormat.create(inputFormat.getWidth() / 2,
+ inputFormat.getHeight() / 2,
+ ImageFormat.COLORSPACE_RGBA,
+ FrameFormat.TARGET_GPU);
+
+ // Create noise frame
+ Frame noiseFrame = context.getFrameManager().newFrame(inputFormat);
+
// Create output frame
Frame output = context.getFrameManager().newFrame(inputFormat);
// Create program if not created already
- if (mProgram == null || inputFormat.getTarget() != mTarget) {
+ if (mNoiseProgram == null || mGrainProgram == null || inputFormat.getTarget() != mTarget) {
initProgram(context, inputFormat.getTarget());
updateParameters();
}
@@ -153,35 +169,20 @@
// Check if the frame size has changed
if (inputFormat.getWidth() != mWidth || inputFormat.getHeight() != mHeight) {
updateFrameSize(inputFormat.getWidth(), inputFormat.getHeight());
-
- int[] buffer = new int[mWidth * mHeight];
- for (int i = 0; i < mWidth * mHeight; ++i) {
- buffer[i] = (mRandom.nextInt(256) < RAND_THRESHOLD) ?
- mRandom.nextInt(256) : 0;
- }
- FrameFormat format = ImageFormat.create(mWidth, mHeight,
- ImageFormat.COLORSPACE_RGBA,
- FrameFormat.TARGET_GPU);
- if (mNoiseFrame != null) {
- mNoiseFrame.release();
- }
- mNoiseFrame = context.getFrameManager().newFrame(format);
- mNoiseFrame.setInts(buffer);
}
- if (mNoiseFrame.getFormat().getWidth() != mWidth ||
- mNoiseFrame.getFormat().getHeight() != mHeight) {
- throw new RuntimeException("Random map and imput image size mismatch!");
- }
+ Frame[] empty = {};
+ mNoiseProgram.process(empty, noiseFrame);
// Process
- Frame[] inputs = {input, mNoiseFrame};
- mProgram.process(inputs, output);
+ Frame[] inputs = {input, noiseFrame};
+ mGrainProgram.process(inputs, output);
// Push output
pushOutput("image", output);
// Release pushed frame
output.release();
+ noiseFrame.release();
}
}
diff --git a/media/mca/filterpacks/java/android/filterpacks/imageproc/LomoishFilter.java b/media/mca/filterpacks/java/android/filterpacks/imageproc/LomoishFilter.java
index 452a833..0814ba5 100644
--- a/media/mca/filterpacks/java/android/filterpacks/imageproc/LomoishFilter.java
+++ b/media/mca/filterpacks/java/android/filterpacks/imageproc/LomoishFilter.java
@@ -28,8 +28,6 @@
import android.filterfw.core.ShaderProgram;
import android.filterfw.format.ImageFormat;
-import java.util.Random;
-
public class LomoishFilter extends Filter {
@GenerateFieldPort(name = "tile_size", hasDefault = true)
@@ -41,19 +39,18 @@
private int mHeight = 0;
private int mTarget = FrameFormat.TARGET_UNSPECIFIED;
- private Frame mNoiseFrame;
- private Random mRandom;
-
private final String mLomoishShader =
"precision mediump float;\n" +
"uniform sampler2D tex_sampler_0;\n" +
- "uniform sampler2D tex_sampler_1;\n" +
"uniform float stepsizeX;\n" +
"uniform float stepsizeY;\n" +
"uniform float stepsize;\n" +
"uniform vec2 center;\n" +
"uniform float inv_max_dist;\n" +
"varying vec2 v_texcoord;\n" +
+ "float rand(vec2 loc) {\n" +
+ " return fract(sin(dot(loc, vec2(12.9898, 78.233))) * 43758.5453);\n" +
+ "}\n" +
"void main() {\n" +
// sharpen
" vec3 nbr_color = vec3(0.0, 0.0, 0.0);\n" +
@@ -99,7 +96,7 @@
" }\n" +
" c_color.b = s_color.b * 0.5 + 0.25;\n" +
// blackwhite
- " float dither = texture2D(tex_sampler_1, v_texcoord).r;\n" +
+ " float dither = rand(v_texcoord);\n" +
" vec3 xform = clamp((c_color.rgb - 0.15) * 1.53846, 0.0, 1.0);\n" +
" vec3 temp = clamp((color.rgb + stepsize - 0.15) * 1.53846, 0.0, 1.0);\n" +
" vec3 bw_color = clamp(xform + (temp - xform) * (dither - 0.5), 0.0, 1.0);\n" +
@@ -111,8 +108,6 @@
public LomoishFilter(String name) {
super(name);
-
- mRandom = new Random();
}
@Override
@@ -126,14 +121,6 @@
return inputFormat;
}
- @Override
- public void tearDown(FilterContext context) {
- if (mNoiseFrame != null) {
- mNoiseFrame.release();
- mNoiseFrame = null;
- }
- }
-
public void initProgram(FilterContext context, int target) {
switch (target) {
case FrameFormat.TARGET_GPU:
@@ -180,34 +167,14 @@
if (inputFormat.getWidth() != mWidth || inputFormat.getHeight() != mHeight) {
mWidth = inputFormat.getWidth();
mHeight = inputFormat.getHeight();
-
- int[] buffer = new int[mWidth * mHeight];
- for (int i = 0; i < mWidth * mHeight; ++i) {
- buffer[i] = mRandom.nextInt(255);
- }
- FrameFormat format = ImageFormat.create(mWidth, mHeight,
- ImageFormat.COLORSPACE_RGBA,
- FrameFormat.TARGET_GPU);
- if (mNoiseFrame != null) {
- mNoiseFrame.release();
- }
- mNoiseFrame = context.getFrameManager().newFrame(format);
- mNoiseFrame.setInts(buffer);
-
initParameters();
}
- if (mNoiseFrame != null && (mNoiseFrame.getFormat().getWidth() != mWidth ||
- mNoiseFrame.getFormat().getHeight() != mHeight)) {
- throw new RuntimeException("Random map and imput image size mismatch!");
- }
-
// Create output frame
Frame output = context.getFrameManager().newFrame(inputFormat);
// Process
- Frame[] inputs = {input, mNoiseFrame};
- mProgram.process(inputs, output);
+ mProgram.process(input, output);
// Push output
pushOutput("image", output);
diff --git a/native/android/Android.mk b/native/android/Android.mk
index e2c99ee..00d11da 100644
--- a/native/android/Android.mk
+++ b/native/android/Android.mk
@@ -30,8 +30,7 @@
LOCAL_C_INCLUDES += \
frameworks/base/native/include \
- frameworks/base/core/jni/android \
- dalvik/libnativehelper/include/nativehelper
+ frameworks/base/core/jni/android
LOCAL_MODULE:= libandroid
diff --git a/native/graphics/jni/Android.mk b/native/graphics/jni/Android.mk
index 7b741db..8b333e7 100644
--- a/native/graphics/jni/Android.mk
+++ b/native/graphics/jni/Android.mk
@@ -25,8 +25,7 @@
LOCAL_C_INCLUDES += \
external/skia/include/core \
frameworks/base/native/include \
- frameworks/base/core/jni/android/graphics \
- dalvik/libnativehelper/include/nativehelper
+ frameworks/base/core/jni/android/graphics
LOCAL_MODULE:= libjnigraphics
diff --git a/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java b/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java
index 3eec18c..17e5f4e 100644
--- a/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java
+++ b/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java
@@ -22,7 +22,10 @@
import android.app.IntentService;
import android.content.Intent;
+import android.content.pm.MacAuthenticatedInputStream;
+import android.content.pm.ContainerEncryptionParams;
import android.content.pm.IPackageManager;
+import android.content.pm.LimitedLengthInputStream;
import android.content.pm.PackageInfo;
import android.content.pm.PackageInfoLite;
import android.content.pm.PackageManager;
@@ -49,9 +52,21 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.security.DigestException;
+import java.security.GeneralSecurityException;
+import java.security.InvalidAlgorithmParameterException;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
+
+import javax.crypto.Cipher;
+import javax.crypto.CipherInputStream;
+import javax.crypto.Mac;
+import javax.crypto.NoSuchPaddingException;
import libcore.io.ErrnoException;
+import libcore.io.IoUtils;
import libcore.io.Libcore;
+import libcore.io.Streams;
import libcore.io.StructStatFs;
/*
@@ -68,7 +83,7 @@
private static final String LIB_DIR_NAME = "lib";
private IMediaContainerService.Stub mBinder = new IMediaContainerService.Stub() {
- /*
+ /**
* Creates a new container and copies resource there.
* @param paackageURI the uri of resource to be copied. Can be either
* a content uri or a file uri
@@ -92,15 +107,19 @@
isExternal, isForwardLocked);
}
- /*
+ /**
* Copy specified resource to output stream
+ *
* @param packageURI the uri of resource to be copied. Should be a file
- * uri
+ * uri
+ * @param encryptionParams parameters describing the encryption used for
+ * this file
* @param outStream Remote file descriptor to be used for copying
- * @return returns status code according to those in {@link
- * PackageManager}
+ * @return returns status code according to those in
+ * {@link PackageManager}
*/
- public int copyResource(final Uri packageURI, ParcelFileDescriptor outStream) {
+ public int copyResource(final Uri packageURI, ContainerEncryptionParams encryptionParams,
+ ParcelFileDescriptor outStream) {
if (packageURI == null || outStream == null) {
return PackageManager.INSTALL_FAILED_INVALID_URI;
}
@@ -109,7 +128,7 @@
= new ParcelFileDescriptor.AutoCloseOutputStream(outStream);
try {
- copyFile(packageURI, autoOut);
+ copyFile(packageURI, autoOut, encryptionParams);
return PackageManager.INSTALL_SUCCEEDED;
} catch (FileNotFoundException e) {
Slog.e(TAG, "Could not copy URI " + packageURI.toString() + " FNF: "
@@ -119,10 +138,14 @@
Slog.e(TAG, "Could not copy URI " + packageURI.toString() + " IO: "
+ e.getMessage());
return PackageManager.INSTALL_FAILED_INSUFFICIENT_STORAGE;
+ } catch (DigestException e) {
+ Slog.e(TAG, "Could not copy URI " + packageURI.toString() + " Security: "
+ + e.getMessage());
+ return PackageManager.INSTALL_FAILED_INVALID_APK;
}
}
- /*
+ /**
* Determine the recommended install location for package
* specified by file uri location.
* @param fileUri the uri of resource to be copied. Should be a
@@ -130,28 +153,24 @@
* @return Returns PackageInfoLite object containing
* the package info and recommended app location.
*/
- public PackageInfoLite getMinimalPackageInfo(final Uri fileUri, int flags, long threshold) {
+ public PackageInfoLite getMinimalPackageInfo(final String packagePath, int flags,
+ long threshold) {
PackageInfoLite ret = new PackageInfoLite();
- if (fileUri == null) {
- Slog.i(TAG, "Invalid package uri " + fileUri);
+
+ if (packagePath == null) {
+ Slog.i(TAG, "Invalid package file " + packagePath);
ret.recommendedInstallLocation = PackageHelper.RECOMMEND_FAILED_INVALID_APK;
return ret;
}
- String scheme = fileUri.getScheme();
- if (scheme != null && !scheme.equals("file")) {
- Slog.w(TAG, "Falling back to installing on internal storage only");
- ret.recommendedInstallLocation = PackageHelper.RECOMMEND_INSTALL_INTERNAL;
- return ret;
- }
- String archiveFilePath = fileUri.getPath();
+
DisplayMetrics metrics = new DisplayMetrics();
metrics.setToDefaults();
- PackageParser.PackageLite pkg = PackageParser.parsePackageLite(archiveFilePath, 0);
+ PackageParser.PackageLite pkg = PackageParser.parsePackageLite(packagePath, 0);
if (pkg == null) {
Slog.w(TAG, "Failed to parse package");
- final File apkFile = new File(archiveFilePath);
+ final File apkFile = new File(packagePath);
if (!apkFile.exists()) {
ret.recommendedInstallLocation = PackageHelper.RECOMMEND_FAILED_INVALID_URI;
} else {
@@ -160,12 +179,13 @@
return ret;
}
+
ret.packageName = pkg.packageName;
ret.installLocation = pkg.installLocation;
ret.verifiers = pkg.verifiers;
ret.recommendedInstallLocation = recommendAppInstallLocation(pkg.installLocation,
- archiveFilePath, flags, threshold);
+ packagePath, flags, threshold);
return ret;
}
@@ -311,6 +331,14 @@
return null;
}
+ try {
+ Libcore.os.chmod(resFile.getAbsolutePath(), 0640);
+ } catch (ErrnoException e) {
+ Slog.e(TAG, "Could not chown APK: " + e.getMessage());
+ PackageHelper.destroySdDir(newCid);
+ return null;
+ }
+
if (isForwardLocked) {
File publicZipFile = new File(newCachePath, publicResFileName);
try {
@@ -326,10 +354,9 @@
}
try {
- Libcore.os.chmod(resFile.getAbsolutePath(), 0640);
Libcore.os.chmod(publicZipFile.getAbsolutePath(), 0644);
} catch (ErrnoException e) {
- Slog.e(TAG, "Could not chown APK or resource file: " + e.getMessage());
+ Slog.e(TAG, "Could not chown public resource file: " + e.getMessage());
PackageHelper.destroySdDir(newCid);
return null;
}
@@ -385,55 +412,195 @@
}
}
- private static void copyToFile(File srcFile, OutputStream out)
- throws FileNotFoundException, IOException {
- InputStream inputStream = new BufferedInputStream(new FileInputStream(srcFile));
+ private void copyFile(Uri pPackageURI, OutputStream outStream,
+ ContainerEncryptionParams encryptionParams) throws FileNotFoundException, IOException,
+ DigestException {
+ String scheme = pPackageURI.getScheme();
+ InputStream inStream = null;
try {
- copyToFile(inputStream, out);
+ if (scheme == null || scheme.equals("file")) {
+ final InputStream is = new FileInputStream(new File(pPackageURI.getPath()));
+ inStream = new BufferedInputStream(is);
+ } else if (scheme.equals("content")) {
+ final ParcelFileDescriptor fd;
+ try {
+ fd = getContentResolver().openFileDescriptor(pPackageURI, "r");
+ } catch (FileNotFoundException e) {
+ Slog.e(TAG, "Couldn't open file descriptor from download service. "
+ + "Failed with exception " + e);
+ throw e;
+ }
+
+ if (fd == null) {
+ Slog.e(TAG, "Provider returned no file descriptor for " +
+ pPackageURI.toString());
+ throw new FileNotFoundException("provider returned no file descriptor");
+ } else {
+ if (localLOGV) {
+ Slog.i(TAG, "Opened file descriptor from download service.");
+ }
+ inStream = new ParcelFileDescriptor.AutoCloseInputStream(fd);
+ }
+ } else {
+ Slog.e(TAG, "Package URI is not 'file:' or 'content:' - " + pPackageURI);
+ throw new FileNotFoundException("Package URI is not 'file:' or 'content:'");
+ }
+
+ /*
+ * If this resource is encrypted, get the decrypted stream version
+ * of it.
+ */
+ ApkContainer container = new ApkContainer(inStream, encryptionParams);
+
+ try {
+ /*
+ * We copy the source package file to a temp file and then
+ * rename it to the destination file in order to eliminate a
+ * window where the package directory scanner notices the new
+ * package file but it's not completely copied yet.
+ */
+ copyToFile(container.getInputStream(), outStream);
+
+ if (!container.isAuthenticated()) {
+ throw new DigestException();
+ }
+ } catch (GeneralSecurityException e) {
+ throw new DigestException("A problem occured copying the file.");
+ }
} finally {
- try { inputStream.close(); } catch (IOException e) {}
+ IoUtils.closeQuietly(inStream);
}
}
- private void copyFile(Uri pPackageURI, OutputStream outStream) throws FileNotFoundException,
- IOException {
- String scheme = pPackageURI.getScheme();
- if (scheme == null || scheme.equals("file")) {
- final File srcPackageFile = new File(pPackageURI.getPath());
- // We copy the source package file to a temp file and then rename it to the
- // destination file in order to eliminate a window where the package directory
- // scanner notices the new package file but it's not completely copied yet.
- copyToFile(srcPackageFile, outStream);
- } else if (scheme.equals("content")) {
- ParcelFileDescriptor fd = null;
- try {
- fd = getContentResolver().openFileDescriptor(pPackageURI, "r");
- } catch (FileNotFoundException e) {
- Slog.e(TAG, "Couldn't open file descriptor from download service. "
- + "Failed with exception " + e);
- throw e;
- }
+ private static class ApkContainer {
+ private final InputStream mInStream;
- if (fd == null) {
- Slog.e(TAG, "Provider returned no file descriptor for " + pPackageURI.toString());
- throw new FileNotFoundException("provider returned no file descriptor");
+ private MacAuthenticatedInputStream mAuthenticatedStream;
+
+ private byte[] mTag;
+
+ public ApkContainer(InputStream inStream, ContainerEncryptionParams encryptionParams)
+ throws IOException {
+ if (encryptionParams == null) {
+ mInStream = inStream;
} else {
- if (localLOGV) {
- Slog.i(TAG, "Opened file descriptor from download service.");
- }
- ParcelFileDescriptor.AutoCloseInputStream dlStream
- = new ParcelFileDescriptor.AutoCloseInputStream(fd);
-
- // We copy the source package file to a temp file and then rename it to the
- // destination file in order to eliminate a window where the package directory
- // scanner notices the new package file but it's not completely
- // copied
- copyToFile(dlStream, outStream);
+ mInStream = getDecryptedStream(inStream, encryptionParams);
+ mTag = encryptionParams.getMacTag();
}
- } else {
- Slog.e(TAG, "Package URI is not 'file:' or 'content:' - " + pPackageURI);
- throw new FileNotFoundException("Package URI is not 'file:' or 'content:'");
}
+
+ public boolean isAuthenticated() {
+ if (mAuthenticatedStream == null) {
+ return true;
+ }
+
+ return mAuthenticatedStream.isTagEqual(mTag);
+ }
+
+ private Mac getMacInstance(ContainerEncryptionParams encryptionParams) throws IOException {
+ final Mac m;
+ try {
+ final String macAlgo = encryptionParams.getMacAlgorithm();
+
+ if (macAlgo != null) {
+ m = Mac.getInstance(macAlgo);
+ m.init(encryptionParams.getMacKey(), encryptionParams.getMacSpec());
+ } else {
+ m = null;
+ }
+
+ return m;
+ } catch (NoSuchAlgorithmException e) {
+ throw new IOException(e);
+ } catch (InvalidKeyException e) {
+ throw new IOException(e);
+ } catch (InvalidAlgorithmParameterException e) {
+ throw new IOException(e);
+ }
+ }
+
+ public InputStream getInputStream() {
+ return mInStream;
+ }
+
+ private InputStream getDecryptedStream(InputStream inStream,
+ ContainerEncryptionParams encryptionParams) throws IOException {
+ final Cipher c;
+ try {
+ c = Cipher.getInstance(encryptionParams.getEncryptionAlgorithm());
+ c.init(Cipher.DECRYPT_MODE, encryptionParams.getEncryptionKey(),
+ encryptionParams.getEncryptionSpec());
+ } catch (NoSuchAlgorithmException e) {
+ throw new IOException(e);
+ } catch (NoSuchPaddingException e) {
+ throw new IOException(e);
+ } catch (InvalidKeyException e) {
+ throw new IOException(e);
+ } catch (InvalidAlgorithmParameterException e) {
+ throw new IOException(e);
+ }
+
+ final int encStart = encryptionParams.getEncryptedDataStart();
+ final int end = encryptionParams.getDataEnd();
+ if (end < encStart) {
+ throw new IOException("end <= encStart");
+ }
+
+ final Mac mac = getMacInstance(encryptionParams);
+ if (mac != null) {
+ final int macStart = encryptionParams.getAuthenticatedDataStart();
+
+ final int furtherOffset;
+ if (macStart >= 0 && encStart >= 0 && macStart < encStart) {
+ /*
+ * If there is authenticated data at the beginning, read
+ * that into our MAC first.
+ */
+ final int authenticatedLength = encStart - macStart;
+ final byte[] authenticatedData = new byte[authenticatedLength];
+
+ Streams.readFully(inStream, authenticatedData, macStart, authenticatedLength);
+ mac.update(authenticatedData, 0, authenticatedLength);
+
+ furtherOffset = 0;
+ } else {
+ /*
+ * No authenticated data at the beginning. Just skip the
+ * required number of bytes to the beginning of the stream.
+ */
+ if (encStart > 0) {
+ furtherOffset = encStart;
+ } else {
+ furtherOffset = 0;
+ }
+ }
+
+ /*
+ * If there is data at the end of the stream we want to ignore,
+ * wrap this in a LimitedLengthInputStream.
+ */
+ if (furtherOffset >= 0 && end > furtherOffset) {
+ inStream = new LimitedLengthInputStream(inStream, furtherOffset, end - encStart);
+ } else if (furtherOffset > 0) {
+ inStream.skip(furtherOffset);
+ }
+
+ mAuthenticatedStream = new MacAuthenticatedInputStream(inStream, mac);
+
+ inStream = mAuthenticatedStream;
+ } else {
+ if (encStart >= 0) {
+ if (end > encStart) {
+ inStream = new LimitedLengthInputStream(inStream, encStart, end - encStart);
+ } else {
+ inStream.skip(encStart);
+ }
+ }
+ }
+
+ return new CipherInputStream(inStream, c);
+ }
+
}
private static final int PREFER_INTERNAL = 1;
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
index abf713b..b0939de 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
@@ -63,7 +63,7 @@
// database gets upgraded properly. At a minimum, please confirm that 'upgradeVersion'
// is properly propagated through your change. Not doing so will result in a loss of user
// settings.
- private static final int DATABASE_VERSION = 76;
+ private static final int DATABASE_VERSION = 78;
private Context mContext;
@@ -657,7 +657,7 @@
upgradeVersion = 53;
}
-
+
if (upgradeVersion == 53) {
/*
* New settings for set install location UI no longer initiated here.
@@ -1031,6 +1031,29 @@
upgradeVersion = 76;
}
+ /************* The following are Jelly Bean changes ************/
+
+ if (upgradeVersion == 76) {
+ // Removed VIBRATE_IN_SILENT setting
+ db.beginTransaction();
+ try {
+ db.execSQL("DELETE FROM system WHERE name='"
+ + Settings.System.VIBRATE_IN_SILENT + "'");
+ db.setTransactionSuccessful();
+ } finally {
+ db.endTransaction();
+ }
+
+ upgradeVersion = 77;
+ }
+
+ if (upgradeVersion == 77) {
+ // Introduce "vibrate when ringing" setting
+ loadVibrateWhenRingingSetting(db);
+
+ upgradeVersion = 78;
+ }
+
// *** Remember to update DATABASE_VERSION above!
if (upgradeVersion != currentVersion) {
@@ -1124,7 +1147,7 @@
try {
stmt = db.compileStatement("INSERT OR REPLACE INTO system(name,value)"
+ " VALUES(?,?);");
-
+
// Set the timeout to 30 minutes in milliseconds
loadSetting(stmt, Settings.System.SCREEN_OFF_TIMEOUT,
Integer.toString(30 * 60 * 1000));
@@ -1286,7 +1309,7 @@
try {
stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)"
+ " VALUES(?,?);");
-
+
loadSetting(stmt, Settings.System.VOLUME_MUSIC,
AudioManager.DEFAULT_STREAM_VOLUME[AudioManager.STREAM_MUSIC]);
loadSetting(stmt, Settings.System.VOLUME_RING,
@@ -1307,12 +1330,10 @@
stmt,
Settings.System.VOLUME_BLUETOOTH_SCO,
AudioManager.DEFAULT_STREAM_VOLUME[AudioManager.STREAM_BLUETOOTH_SCO]);
-
+
loadSetting(stmt, Settings.System.MODE_RINGER,
AudioManager.RINGER_MODE_NORMAL);
-
- loadVibrateSetting(db, false);
-
+
// By default:
// - ringtones, notification, system and music streams are affected by ringer mode
// on non voice capable devices (tablets)
@@ -1337,6 +1358,8 @@
} finally {
if (stmt != null) stmt.close();
}
+
+ loadVibrateWhenRingingSetting(db);
}
private void loadVibrateSetting(SQLiteDatabase db, boolean deleteOld) {
@@ -1348,7 +1371,7 @@
try {
stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)"
+ " VALUES(?,?);");
-
+
// Vibrate on by default for ringer, on for notification
int vibrate = 0;
vibrate = AudioService.getValueForVibrateSetting(vibrate,
@@ -1362,6 +1385,24 @@
}
}
+ private void loadVibrateWhenRingingSetting(SQLiteDatabase db) {
+ // The default should be off. VIBRATE_SETTING_ONLY_SILENT should also be ignored here.
+ // Phone app should separately check whether AudioManager#getRingerMode() returns
+ // RINGER_MODE_VIBRATE, with which the device should vibrate anyway.
+ int vibrateSetting = getIntValueFromSystem(db, Settings.System.VIBRATE_ON,
+ AudioManager.VIBRATE_SETTING_OFF);
+ boolean vibrateWhenRinging = ((vibrateSetting & 3) == AudioManager.VIBRATE_SETTING_ON);
+
+ SQLiteStatement stmt = null;
+ try {
+ stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)"
+ + " VALUES(?,?);");
+ loadSetting(stmt, Settings.System.VIBRATE_WHEN_RINGING, vibrateWhenRinging ? 1 : 0);
+ } finally {
+ if (stmt != null) stmt.close();
+ }
+ }
+
private void loadSettings(SQLiteDatabase db) {
loadSystemSettings(db);
loadSecureSettings(db);
@@ -1372,7 +1413,7 @@
try {
stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)"
+ " VALUES(?,?);");
-
+
loadBooleanSetting(stmt, Settings.System.DIM_SCREEN,
R.bool.def_dim_screen);
loadSetting(stmt, Settings.System.STAY_ON_WHILE_PLUGGED_IN,
@@ -1381,31 +1422,31 @@
? 1 : 0);
loadIntegerSetting(stmt, Settings.System.SCREEN_OFF_TIMEOUT,
R.integer.def_screen_off_timeout);
-
+
// Set default cdma emergency tone
loadSetting(stmt, Settings.System.EMERGENCY_TONE, 0);
-
+
// Set default cdma call auto retry
loadSetting(stmt, Settings.System.CALL_AUTO_RETRY, 0);
-
+
// Set default cdma DTMF type
loadSetting(stmt, Settings.System.DTMF_TONE_TYPE_WHEN_DIALING, 0);
-
+
// Set default hearing aid
loadSetting(stmt, Settings.System.HEARING_AID, 0);
-
+
// Set default tty mode
loadSetting(stmt, Settings.System.TTY_MODE, 0);
-
+
loadBooleanSetting(stmt, Settings.System.AIRPLANE_MODE_ON,
R.bool.def_airplane_mode_on);
-
+
loadStringSetting(stmt, Settings.System.AIRPLANE_MODE_RADIOS,
R.string.def_airplane_mode_radios);
-
+
loadStringSetting(stmt, Settings.System.AIRPLANE_MODE_TOGGLEABLE_RADIOS,
R.string.airplane_mode_toggleable_radios);
-
+
loadBooleanSetting(stmt, Settings.System.AUTO_TIME,
R.bool.def_auto_time); // Sync time to NITZ
@@ -1414,17 +1455,17 @@
loadIntegerSetting(stmt, Settings.System.SCREEN_BRIGHTNESS,
R.integer.def_screen_brightness);
-
+
loadBooleanSetting(stmt, Settings.System.SCREEN_BRIGHTNESS_MODE,
R.bool.def_screen_brightness_automatic_mode);
-
+
loadDefaultAnimationSettings(stmt);
-
+
loadBooleanSetting(stmt, Settings.System.ACCELEROMETER_ROTATION,
R.bool.def_accelerometer_rotation);
-
+
loadDefaultHapticSettings(stmt);
-
+
loadBooleanSetting(stmt, Settings.System.NOTIFICATION_LIGHT_PULSE,
R.bool.def_notification_pulse);
loadSetting(stmt, Settings.Secure.SET_INSTALL_LOCATION, 0);
@@ -1433,9 +1474,6 @@
loadUISoundEffectsSettings(stmt);
- loadBooleanSetting(stmt, Settings.System.VIBRATE_IN_SILENT,
- R.bool.def_vibrate_in_silent);
-
loadIntegerSetting(stmt, Settings.System.POINTER_SPEED,
R.integer.def_pointer_speed);
@@ -1492,41 +1530,41 @@
try {
stmt = db.compileStatement("INSERT OR IGNORE INTO secure(name,value)"
+ " VALUES(?,?);");
-
+
loadBooleanSetting(stmt, Settings.Secure.BLUETOOTH_ON,
R.bool.def_bluetooth_on);
-
+
// Data roaming default, based on build
loadSetting(stmt, Settings.Secure.DATA_ROAMING,
"true".equalsIgnoreCase(
SystemProperties.get("ro.com.android.dataroaming",
"false")) ? 1 : 0);
-
+
loadBooleanSetting(stmt, Settings.Secure.INSTALL_NON_MARKET_APPS,
R.bool.def_install_non_market_apps);
-
+
loadStringSetting(stmt, Settings.Secure.LOCATION_PROVIDERS_ALLOWED,
R.string.def_location_providers_allowed);
-
+
loadBooleanSetting(stmt, Settings.Secure.ASSISTED_GPS_ENABLED,
R.bool.assisted_gps_enabled);
-
+
loadIntegerSetting(stmt, Settings.Secure.NETWORK_PREFERENCE,
R.integer.def_network_preference);
-
+
loadBooleanSetting(stmt, Settings.Secure.USB_MASS_STORAGE_ENABLED,
R.bool.def_usb_mass_storage_enabled);
-
+
loadBooleanSetting(stmt, Settings.Secure.WIFI_ON,
R.bool.def_wifi_on);
loadBooleanSetting(stmt, Settings.Secure.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON,
R.bool.def_networks_available_notification_on);
-
+
String wifiWatchList = SystemProperties.get("ro.com.android.wifi-watchlist");
if (!TextUtils.isEmpty(wifiWatchList)) {
loadSetting(stmt, Settings.Secure.WIFI_WATCHDOG_WATCH_LIST, wifiWatchList);
}
-
+
// Set the preferred network mode to 0 = Global, CDMA default
int type;
if (BaseCommands.getLteOnCdmaModeStatic() == Phone.LTE_ON_CDMA_TRUE) {
@@ -1536,30 +1574,30 @@
RILConstants.PREFERRED_NETWORK_MODE);
}
loadSetting(stmt, Settings.Secure.PREFERRED_NETWORK_MODE, type);
-
+
// Enable or disable Cell Broadcast SMS
loadSetting(stmt, Settings.Secure.CDMA_CELL_BROADCAST_SMS,
RILConstants.CDMA_CELL_BROADCAST_SMS_DISABLED);
-
+
// Don't do this. The SystemServer will initialize ADB_ENABLED from a
// persistent system property instead.
//loadSetting(stmt, Settings.Secure.ADB_ENABLED, 0);
-
+
// Allow mock locations default, based on build
loadSetting(stmt, Settings.Secure.ALLOW_MOCK_LOCATION,
"1".equals(SystemProperties.get("ro.allow.mock.location")) ? 1 : 0);
-
+
loadSecure35Settings(stmt);
-
+
loadBooleanSetting(stmt, Settings.Secure.MOUNT_PLAY_NOTIFICATION_SND,
R.bool.def_mount_play_notification_snd);
-
+
loadBooleanSetting(stmt, Settings.Secure.MOUNT_UMS_AUTOSTART,
R.bool.def_mount_ums_autostart);
-
+
loadBooleanSetting(stmt, Settings.Secure.MOUNT_UMS_PROMPT,
R.bool.def_mount_ums_prompt);
-
+
loadBooleanSetting(stmt, Settings.Secure.MOUNT_UMS_NOTIFY_ENABLED,
R.bool.def_mount_ums_notify_enabled);
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsHelper.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsHelper.java
index 3e7d86a..18e7faa 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsHelper.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsHelper.java
@@ -43,9 +43,6 @@
private IContentService mContentService;
private IPowerManager mPowerManager;
- private boolean mSilent;
- private boolean mVibrate;
-
public SettingsHelper(Context context) {
mContext = context;
mAudioManager = (AudioManager) context
@@ -119,18 +116,6 @@
}
}
- private void setRingerMode() {
- if (mSilent) {
- mAudioManager.setRingerMode(mVibrate ? AudioManager.RINGER_MODE_VIBRATE :
- AudioManager.RINGER_MODE_SILENT);
- } else {
- mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
- mAudioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,
- mVibrate ? AudioManager.VIBRATE_SETTING_ON
- : AudioManager.VIBRATE_SETTING_OFF);
- }
- }
-
byte[] getLocaleData() {
Configuration conf = mContext.getResources().getConfiguration();
final Locale loc = conf.locale;
diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml
index cef21b0..9d3a942 100644
--- a/packages/SystemUI/AndroidManifest.xml
+++ b/packages/SystemUI/AndroidManifest.xml
@@ -22,12 +22,14 @@
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
+ <uses-permission android:name="android.permission.MANAGE_NETWORK_POLICY" />
<!-- Physical hardware -->
<uses-permission android:name="android.permission.MANAGE_USB" />
<uses-permission android:name="android.permission.DEVICE_POWER" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" />
+ <uses-permission android:name="android.permission.MASTER_CLEAR" />
<!-- ActivityManager -->
<uses-permission android:name="android.permission.GET_TASKS" />
diff --git a/packages/SystemUI/res/drawable-hdpi/ic_notify_clear_normal.png b/packages/SystemUI/res/drawable-hdpi/ic_notify_clear_normal.png
index babddb1..a54761f 100644
--- a/packages/SystemUI/res/drawable-hdpi/ic_notify_clear_normal.png
+++ b/packages/SystemUI/res/drawable-hdpi/ic_notify_clear_normal.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/ic_notify_clear_pressed.png b/packages/SystemUI/res/drawable-hdpi/ic_notify_clear_pressed.png
index 56cd6f9..f3f336c 100644
--- a/packages/SystemUI/res/drawable-hdpi/ic_notify_clear_pressed.png
+++ b/packages/SystemUI/res/drawable-hdpi/ic_notify_clear_pressed.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/ic_notify_quicksettings_normal.png b/packages/SystemUI/res/drawable-hdpi/ic_notify_quicksettings_normal.png
index 23ce001..3ed7418 100644
--- a/packages/SystemUI/res/drawable-hdpi/ic_notify_quicksettings_normal.png
+++ b/packages/SystemUI/res/drawable-hdpi/ic_notify_quicksettings_normal.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/ic_notify_quicksettings_pressed.png b/packages/SystemUI/res/drawable-hdpi/ic_notify_quicksettings_pressed.png
index d0754a39..5e20eea 100644
--- a/packages/SystemUI/res/drawable-hdpi/ic_notify_quicksettings_pressed.png
+++ b/packages/SystemUI/res/drawable-hdpi/ic_notify_quicksettings_pressed.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/ic_notify_rotation_off_normal.png b/packages/SystemUI/res/drawable-hdpi/ic_notify_rotation_off_normal.png
new file mode 100644
index 0000000..4ca1ab8
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/ic_notify_rotation_off_normal.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/ic_notify_rotation_off_pressed.png b/packages/SystemUI/res/drawable-hdpi/ic_notify_rotation_off_pressed.png
new file mode 100644
index 0000000..85a4cd2
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/ic_notify_rotation_off_pressed.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/ic_notify_rotation_on_normal.png b/packages/SystemUI/res/drawable-hdpi/ic_notify_rotation_on_normal.png
new file mode 100644
index 0000000..d0cb087
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/ic_notify_rotation_on_normal.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/ic_notify_rotation_on_pressed.png b/packages/SystemUI/res/drawable-hdpi/ic_notify_rotation_on_pressed.png
new file mode 100644
index 0000000..c1c9e16
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/ic_notify_rotation_on_pressed.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/navbar_search_bg_scrim.9.png b/packages/SystemUI/res/drawable-hdpi/navbar_search_bg_scrim.9.png
new file mode 100644
index 0000000..4c163a2
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/navbar_search_bg_scrim.9.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/notification_panel_bg.9.png b/packages/SystemUI/res/drawable-hdpi/notification_panel_bg.9.png
new file mode 100644
index 0000000..8a0a30f
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/notification_panel_bg.9.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/status_bar_close_off.9.png b/packages/SystemUI/res/drawable-hdpi/status_bar_close_off.9.png
new file mode 100644
index 0000000..bc6462b
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/status_bar_close_off.9.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/status_bar_close_on.9.png b/packages/SystemUI/res/drawable-hdpi/status_bar_close_on.9.png
index 69f3543..f4e28ae 100644
--- a/packages/SystemUI/res/drawable-hdpi/status_bar_close_on.9.png
+++ b/packages/SystemUI/res/drawable-hdpi/status_bar_close_on.9.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/ic_notify_clear_normal.png b/packages/SystemUI/res/drawable-mdpi/ic_notify_clear_normal.png
index bf1bad5..b44b527 100644
--- a/packages/SystemUI/res/drawable-mdpi/ic_notify_clear_normal.png
+++ b/packages/SystemUI/res/drawable-mdpi/ic_notify_clear_normal.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/ic_notify_clear_pressed.png b/packages/SystemUI/res/drawable-mdpi/ic_notify_clear_pressed.png
index 320d92d..94c8165 100644
--- a/packages/SystemUI/res/drawable-mdpi/ic_notify_clear_pressed.png
+++ b/packages/SystemUI/res/drawable-mdpi/ic_notify_clear_pressed.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/ic_notify_quicksettings_normal.png b/packages/SystemUI/res/drawable-mdpi/ic_notify_quicksettings_normal.png
index b58e4dc..44cfc5b 100644
--- a/packages/SystemUI/res/drawable-mdpi/ic_notify_quicksettings_normal.png
+++ b/packages/SystemUI/res/drawable-mdpi/ic_notify_quicksettings_normal.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/ic_notify_quicksettings_pressed.png b/packages/SystemUI/res/drawable-mdpi/ic_notify_quicksettings_pressed.png
index 604eb75..0c3fdcd 100644
--- a/packages/SystemUI/res/drawable-mdpi/ic_notify_quicksettings_pressed.png
+++ b/packages/SystemUI/res/drawable-mdpi/ic_notify_quicksettings_pressed.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/ic_notify_rotation_off_normal.png b/packages/SystemUI/res/drawable-mdpi/ic_notify_rotation_off_normal.png
new file mode 100644
index 0000000..77da014
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/ic_notify_rotation_off_normal.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/ic_notify_rotation_off_pressed.png b/packages/SystemUI/res/drawable-mdpi/ic_notify_rotation_off_pressed.png
new file mode 100644
index 0000000..f132d5c
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/ic_notify_rotation_off_pressed.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/ic_notify_rotation_on_normal.png b/packages/SystemUI/res/drawable-mdpi/ic_notify_rotation_on_normal.png
new file mode 100644
index 0000000..1637209
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/ic_notify_rotation_on_normal.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/ic_notify_rotation_on_pressed.png b/packages/SystemUI/res/drawable-mdpi/ic_notify_rotation_on_pressed.png
new file mode 100644
index 0000000..4d8fbde
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/ic_notify_rotation_on_pressed.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/navbar_search_bg_scrim.9.png b/packages/SystemUI/res/drawable-mdpi/navbar_search_bg_scrim.9.png
new file mode 100644
index 0000000..21c5abd
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/navbar_search_bg_scrim.9.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/notification_panel_bg.9.png b/packages/SystemUI/res/drawable-mdpi/notification_panel_bg.9.png
new file mode 100644
index 0000000..25f15e6
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/notification_panel_bg.9.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/status_bar_close_off.9.png b/packages/SystemUI/res/drawable-mdpi/status_bar_close_off.9.png
new file mode 100644
index 0000000..4f5bba5
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/status_bar_close_off.9.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/status_bar_close_on.9.png b/packages/SystemUI/res/drawable-mdpi/status_bar_close_on.9.png
index fb30982..ef7afb8 100644
--- a/packages/SystemUI/res/drawable-mdpi/status_bar_close_on.9.png
+++ b/packages/SystemUI/res/drawable-mdpi/status_bar_close_on.9.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-hdpi/notification_panel_bg.9.png b/packages/SystemUI/res/drawable-sw600dp-hdpi/notification_panel_bg.9.png
new file mode 100644
index 0000000..2ff93d3
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw600dp-hdpi/notification_panel_bg.9.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-mdpi/notification_panel_bg.9.png b/packages/SystemUI/res/drawable-sw600dp-mdpi/notification_panel_bg.9.png
new file mode 100644
index 0000000..430f913
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw600dp-mdpi/notification_panel_bg.9.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw600dp-xhdpi/notification_panel_bg.9.png b/packages/SystemUI/res/drawable-sw600dp-xhdpi/notification_panel_bg.9.png
new file mode 100644
index 0000000..807241a
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw600dp-xhdpi/notification_panel_bg.9.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-hdpi/notification_panel_bg.9.png b/packages/SystemUI/res/drawable-sw720dp-hdpi/notification_panel_bg.9.png
new file mode 100644
index 0000000..2ff93d3
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-hdpi/notification_panel_bg.9.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-mdpi/notification_panel_bg.9.png b/packages/SystemUI/res/drawable-sw720dp-mdpi/notification_panel_bg.9.png
new file mode 100644
index 0000000..430f913
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-mdpi/notification_panel_bg.9.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-sw720dp-xhdpi/notification_panel_bg.9.png b/packages/SystemUI/res/drawable-sw720dp-xhdpi/notification_panel_bg.9.png
new file mode 100644
index 0000000..807241a
--- /dev/null
+++ b/packages/SystemUI/res/drawable-sw720dp-xhdpi/notification_panel_bg.9.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_notify_clear_normal.png b/packages/SystemUI/res/drawable-xhdpi/ic_notify_clear_normal.png
index cf9bd8e..870beb4 100644
--- a/packages/SystemUI/res/drawable-xhdpi/ic_notify_clear_normal.png
+++ b/packages/SystemUI/res/drawable-xhdpi/ic_notify_clear_normal.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_notify_clear_pressed.png b/packages/SystemUI/res/drawable-xhdpi/ic_notify_clear_pressed.png
index 8eee4d9..94a4646 100644
--- a/packages/SystemUI/res/drawable-xhdpi/ic_notify_clear_pressed.png
+++ b/packages/SystemUI/res/drawable-xhdpi/ic_notify_clear_pressed.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_notify_quicksettings_normal.png b/packages/SystemUI/res/drawable-xhdpi/ic_notify_quicksettings_normal.png
index 5e67545..80fdb79 100644
--- a/packages/SystemUI/res/drawable-xhdpi/ic_notify_quicksettings_normal.png
+++ b/packages/SystemUI/res/drawable-xhdpi/ic_notify_quicksettings_normal.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_notify_quicksettings_pressed.png b/packages/SystemUI/res/drawable-xhdpi/ic_notify_quicksettings_pressed.png
index e56aeda..ac7c1a7 100644
--- a/packages/SystemUI/res/drawable-xhdpi/ic_notify_quicksettings_pressed.png
+++ b/packages/SystemUI/res/drawable-xhdpi/ic_notify_quicksettings_pressed.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_notify_rotation_off_normal.png b/packages/SystemUI/res/drawable-xhdpi/ic_notify_rotation_off_normal.png
new file mode 100644
index 0000000..cebd6d8
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/ic_notify_rotation_off_normal.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_notify_rotation_off_pressed.png b/packages/SystemUI/res/drawable-xhdpi/ic_notify_rotation_off_pressed.png
new file mode 100644
index 0000000..ef4d9a1
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/ic_notify_rotation_off_pressed.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_notify_rotation_on_normal.png b/packages/SystemUI/res/drawable-xhdpi/ic_notify_rotation_on_normal.png
new file mode 100644
index 0000000..01146aa
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/ic_notify_rotation_on_normal.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_notify_rotation_on_pressed.png b/packages/SystemUI/res/drawable-xhdpi/ic_notify_rotation_on_pressed.png
new file mode 100644
index 0000000..e8f01c5
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/ic_notify_rotation_on_pressed.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/navbar_search_bg_scrim.9.png b/packages/SystemUI/res/drawable-xhdpi/navbar_search_bg_scrim.9.png
new file mode 100644
index 0000000..7874c63
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/navbar_search_bg_scrim.9.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/notification_panel_bg.9.png b/packages/SystemUI/res/drawable-xhdpi/notification_panel_bg.9.png
new file mode 100644
index 0000000..60e7418
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/notification_panel_bg.9.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/status_bar_close_off.9.png b/packages/SystemUI/res/drawable-xhdpi/status_bar_close_off.9.png
new file mode 100644
index 0000000..e243e50
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/status_bar_close_off.9.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/status_bar_close_on.9.png b/packages/SystemUI/res/drawable-xhdpi/status_bar_close_on.9.png
index fe2c642..cdad949 100644
--- a/packages/SystemUI/res/drawable-xhdpi/status_bar_close_on.9.png
+++ b/packages/SystemUI/res/drawable-xhdpi/status_bar_close_on.9.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable/ic_notify_quicksettings.xml b/packages/SystemUI/res/drawable/ic_notify_quicksettings.xml
index b37dc39..d8ea524 100644
--- a/packages/SystemUI/res/drawable/ic_notify_quicksettings.xml
+++ b/packages/SystemUI/res/drawable/ic_notify_quicksettings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
+<!-- Copyright (C) 2012 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.
@@ -16,6 +16,8 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
- android:drawable="@drawable/ic_notify_quicksettings_pressed" />
- <item android:drawable="@drawable/ic_notify_quicksettings_normal" />
+ android:drawable="@drawable/ic_notify_quicksettings_pressed" />
+ <item
+ android:drawable="@drawable/ic_notify_quicksettings_normal" />
</selector>
+
diff --git a/packages/SystemUI/res/drawable/ic_notify_rotation.xml b/packages/SystemUI/res/drawable/ic_notify_rotation.xml
new file mode 100644
index 0000000..11bc22c
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_notify_rotation.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 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.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:constantSize="true">
+ <item android:state_checked="true" android:state_pressed="true">
+ <bitmap android:src="@drawable/ic_notify_rotation_on_pressed"
+ android:gravity="center" />
+ </item>
+ <item android:state_checked="true">
+ <bitmap android:src="@drawable/ic_notify_rotation_on_normal"
+ android:gravity="center" />
+ </item>
+ <item android:state_pressed="true">
+ <bitmap android:src="@drawable/ic_notify_rotation_off_pressed"
+ android:gravity="center" />
+ </item>
+ <item>
+ <bitmap android:src="@drawable/ic_notify_rotation_off_normal"
+ android:gravity="center" />
+ </item>
+</selector>
+
diff --git a/packages/SystemUI/res/drawable/navbar_search_bg_scrim.png b/packages/SystemUI/res/drawable/navbar_search_bg_scrim.png
deleted file mode 100644
index d595ed2..0000000
--- a/packages/SystemUI/res/drawable/navbar_search_bg_scrim.png
+++ /dev/null
Binary files differ
diff --git a/tools/localize/testdata/merge_xx_old.xml b/packages/SystemUI/res/drawable/status_bar_close.xml
similarity index 65%
copy from tools/localize/testdata/merge_xx_old.xml
copy to packages/SystemUI/res/drawable/status_bar_close.xml
index 9d3a7d8..2efc3c3a 100644
--- a/tools/localize/testdata/merge_xx_old.xml
+++ b/packages/SystemUI/res/drawable/status_bar_close.xml
@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2007 The Android Open Source Project
+<!-- Copyright (C) 2012 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.
@@ -14,8 +14,10 @@
limitations under the License.
-->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="changed_in_xx">aaa</string>
- <string name="previously_translated">CCC</string>
-</resources>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:state_pressed="true"
+ android:drawable="@drawable/status_bar_close_on" />
+ <item
+ android:drawable="@drawable/status_bar_close_off" />
+</selector>
diff --git a/packages/SystemUI/res/layout-land/status_bar_search_panel.xml b/packages/SystemUI/res/layout-land/status_bar_search_panel.xml
index 2adee33..5d4d989 100644
--- a/packages/SystemUI/res/layout-land/status_bar_search_panel.xml
+++ b/packages/SystemUI/res/layout-land/status_bar_search_panel.xml
@@ -34,17 +34,18 @@
<RelativeLayout
android:id="@+id/search_panel_container"
- android:layout_width="230dip"
+ android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentRight="true">
<com.android.internal.widget.multiwaveview.MultiWaveView
android:id="@+id/multi_wave_view"
android:orientation="vertical"
- android:layout_width="match_parent"
+ android:layout_width="@dimen/navbar_search_panel_height"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:background="@drawable/navbar_search_bg_scrim"
+ android:gravity="left"
prvandroid:targetDrawables="@array/navbar_search_targets"
prvandroid:targetDescriptions="@array/navbar_search_target_descriptions"
@@ -54,8 +55,6 @@
prvandroid:outerRadius="@dimen/navbar_search_target_placement_radius"
prvandroid:snapMargin="@dimen/navbar_search_snap_margin"
prvandroid:hitRadius="@dimen/navbar_search_hit_radius"
- prvandroid:verticalOffset="0dip"
- prvandroid:horizontalOffset="60dip"
prvandroid:feedbackCount="0"
prvandroid:vibrationDuration="0"
prvandroid:alwaysTrackFinger="true"/>
diff --git a/packages/SystemUI/res/layout-port/status_bar_search_panel.xml b/packages/SystemUI/res/layout-port/status_bar_search_panel.xml
index 463fa04..2486b75 100644
--- a/packages/SystemUI/res/layout-port/status_bar_search_panel.xml
+++ b/packages/SystemUI/res/layout-port/status_bar_search_panel.xml
@@ -35,16 +35,17 @@
<RelativeLayout
android:id="@+id/search_panel_container"
android:layout_width="match_parent"
- android:layout_height="230dip"
+ android:layout_height="wrap_content"
android:layout_alignParentBottom="true">
<com.android.internal.widget.multiwaveview.MultiWaveView
android:id="@+id/multi_wave_view"
android:orientation="horizontal"
android:layout_width="match_parent"
- android:layout_height="match_parent"
+ android:layout_height="@dimen/navbar_search_panel_height"
android:layout_alignParentBottom="true"
android:background="@drawable/navbar_search_bg_scrim"
+ android:gravity="top"
prvandroid:targetDrawables="@array/navbar_search_targets"
prvandroid:targetDescriptions="@array/navbar_search_target_descriptions"
@@ -54,8 +55,6 @@
prvandroid:outerRadius="@dimen/navbar_search_target_placement_radius"
prvandroid:snapMargin="@dimen/navbar_search_snap_margin"
prvandroid:hitRadius="@dimen/navbar_search_hit_radius"
- prvandroid:horizontalOffset="0dip"
- prvandroid:verticalOffset="60dip"
prvandroid:feedbackCount="0"
prvandroid:vibrationDuration="0"
prvandroid:alwaysTrackFinger="true"/>
diff --git a/packages/SystemUI/res/layout-sw600dp/navigation_bar.xml b/packages/SystemUI/res/layout-sw600dp/navigation_bar.xml
index 662c186..67e13eb 100644
--- a/packages/SystemUI/res/layout-sw600dp/navigation_bar.xml
+++ b/packages/SystemUI/res/layout-sw600dp/navigation_bar.xml
@@ -41,17 +41,18 @@
>
<!-- navigation controls -->
- <Space
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_weight="1"
- />
<View
android:layout_width="48dp"
android:layout_height="match_parent"
android:layout_weight="0"
+ android:layout_marginLeft="2dp"
android:visibility="invisible"
/>
+ <Space
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_weight="1"
+ />
<com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/back"
android:layout_width="128dp" android:paddingLeft="25dp" android:paddingRight="25dp"
android:layout_height="match_parent"
@@ -79,21 +80,22 @@
systemui:glowBackground="@drawable/ic_sysbar_highlight"
android:contentDescription="@string/accessibility_recent"
/>
+ <Space
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_weight="1"
+ />
<com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/menu"
android:layout_width="48dp"
android:layout_height="match_parent"
android:src="@drawable/ic_sysbar_menu"
+ android:layout_marginRight="2dp"
systemui:keyCode="82"
android:layout_weight="0"
android:visibility="invisible"
android:contentDescription="@string/accessibility_menu"
systemui:glowBackground="@drawable/ic_sysbar_highlight"
/>
- <Space
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_weight="1"
- />
</LinearLayout>
<!-- lights out layout to match exactly -->
@@ -165,17 +167,18 @@
>
<!-- navigation controls -->
- <Space
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_weight="1"
- />
<View
android:layout_width="48dp"
android:layout_height="match_parent"
android:layout_weight="0"
+ android:layout_marginLeft="2dp"
android:visibility="invisible"
/>
+ <Space
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_weight="1"
+ />
<com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/back"
android:layout_width="162dp" android:paddingLeft="42dp" android:paddingRight="42dp"
android:layout_height="match_parent"
@@ -203,9 +206,15 @@
systemui:glowBackground="@drawable/ic_sysbar_highlight"
android:contentDescription="@string/accessibility_recent"
/>
+ <Space
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_weight="1"
+ />
<com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/menu"
android:layout_width="48dp"
android:layout_height="match_parent"
+ android:layout_marginRight="2dp"
android:src="@drawable/ic_sysbar_menu"
systemui:keyCode="82"
android:layout_weight="0"
@@ -213,11 +222,6 @@
android:contentDescription="@string/accessibility_menu"
systemui:glowBackground="@drawable/ic_sysbar_highlight"
/>
- <Space
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_weight="1"
- />
</LinearLayout>
<!-- lights out layout to match exactly -->
diff --git a/packages/SystemUI/res/layout-sw600dp/status_bar_search_panel.xml b/packages/SystemUI/res/layout-sw600dp/status_bar_search_panel.xml
index 6e33e27..4b2fbc7 100644
--- a/packages/SystemUI/res/layout-sw600dp/status_bar_search_panel.xml
+++ b/packages/SystemUI/res/layout-sw600dp/status_bar_search_panel.xml
@@ -29,23 +29,32 @@
<RelativeLayout
android:id="@+id/search_bg_protect"
android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginBottom="0dip">
+ android:layout_height="wrap_content">
<RelativeLayout
android:id="@+id/search_panel_container"
android:layout_width="wrap_content"
- android:layout_height="230dip"
+ android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
- android:layout_alignParentLeft="true">
+ android:layout_centerHorizontal="true">
+
+ <View
+ android:layout_width="0dip"
+ android:layout_height="0dip"
+ android:layout_alignTop="@id/multi_wave_view"
+ android:layout_alignLeft="@id/multi_wave_view"
+ android:layout_alignRight="@id/multi_wave_view"
+ android:layout_alignBottom="@id/multi_wave_view"
+ android:layout_marginBottom="@dimen/navigation_bar_size"
+ android:background="@drawable/navbar_search_bg_scrim"/>
<com.android.internal.widget.multiwaveview.MultiWaveView
android:id="@+id/multi_wave_view"
android:orientation="horizontal"
android:layout_width="wrap_content"
- android:layout_height="match_parent"
+ android:layout_height="@dimen/navbar_search_panel_height"
android:layout_alignParentBottom="true"
- android:background="@drawable/navbar_search_bg_scrim"
+ android:gravity="top"
prvandroid:targetDrawables="@array/navbar_search_targets"
prvandroid:targetDescriptions="@array/navbar_search_target_descriptions"
@@ -55,8 +64,6 @@
prvandroid:outerRadius="@dimen/navbar_search_target_placement_radius"
prvandroid:snapMargin="@dimen/navbar_search_snap_margin"
prvandroid:hitRadius="@dimen/navbar_search_hit_radius"
- prvandroid:horizontalOffset="0dip"
- prvandroid:verticalOffset="60dip"
prvandroid:feedbackCount="0"
prvandroid:vibrationDuration="0"
prvandroid:alwaysTrackFinger="true"/>
diff --git a/packages/SystemUI/res/layout-sw600dp/super_status_bar.xml b/packages/SystemUI/res/layout-sw600dp/super_status_bar.xml
new file mode 100644
index 0000000..b9af3a9
--- /dev/null
+++ b/packages/SystemUI/res/layout-sw600dp/super_status_bar.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+**
+** Copyright 2012, 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.
+*/
+-->
+
+<!-- This is the combined status bar / notification panel window. -->
+<com.android.systemui.statusbar.phone.StatusBarWindowView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui"
+ android:focusable="true"
+ android:descendantFocusability="afterDescendants"
+ android:fitsSystemWindows="true"
+ >
+
+ <include layout="@layout/status_bar_expanded"
+ android:layout_width="@dimen/notification_panel_width"
+ android:layout_height="match_parent"
+ android:layout_gravity="center_horizontal|top"
+ />
+
+ <include layout="@layout/status_bar"
+ android:layout_width="match_parent"
+ android:layout_height="@*android:dimen/status_bar_height"
+ />
+
+</com.android.systemui.statusbar.phone.StatusBarWindowView>
diff --git a/packages/SystemUI/res/layout-sw720dp/status_bar_search_panel.xml b/packages/SystemUI/res/layout-sw720dp/status_bar_search_panel.xml
new file mode 100644
index 0000000..b4872c7
--- /dev/null
+++ b/packages/SystemUI/res/layout-sw720dp/status_bar_search_panel.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/* apps/common/assets/default/default/skins/StatusBar.xml
+**
+** Copyright 2012, 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.
+*/
+-->
+
+<com.android.systemui.SearchPanelView
+ xmlns:prvandroid="http://schemas.android.com/apk/prv/res/android"
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/search_panel_container"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:paddingBottom="0dip">
+
+ <RelativeLayout
+ android:id="@+id/search_bg_protect"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+
+ <RelativeLayout
+ android:id="@+id/search_panel_container"
+ android:layout_width="wrap_content"
+ android:layout_height="@dimen/navbar_search_panel_height"
+ android:layout_alignParentBottom="true"
+ android:layout_alignParentLeft="true">
+
+ <View
+ android:layout_width="0dip"
+ android:layout_height="0dip"
+ android:layout_alignTop="@id/multi_wave_view"
+ android:layout_alignLeft="@id/multi_wave_view"
+ android:layout_alignRight="@id/multi_wave_view"
+ android:layout_alignBottom="@id/multi_wave_view"
+ android:layout_marginBottom="@dimen/navigation_bar_size"
+ android:background="@drawable/navbar_search_bg_scrim"/>
+
+ <com.android.internal.widget.multiwaveview.MultiWaveView
+ android:id="@+id/multi_wave_view"
+ android:orientation="horizontal"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:layout_alignParentBottom="true"
+
+ prvandroid:targetDrawables="@array/navbar_search_targets"
+ prvandroid:targetDescriptions="@array/navbar_search_target_descriptions"
+ prvandroid:directionDescriptions="@array/navbar_search_direction_descriptions"
+ prvandroid:handleDrawable="@drawable/navbar_search_handle"
+ prvandroid:waveDrawable="@drawable/navbar_search_outerring"
+ prvandroid:outerRadius="@dimen/navbar_search_target_placement_radius"
+ prvandroid:snapMargin="@dimen/navbar_search_snap_margin"
+ prvandroid:hitRadius="@dimen/navbar_search_hit_radius"
+ prvandroid:feedbackCount="0"
+ prvandroid:vibrationDuration="0"
+ prvandroid:alwaysTrackFinger="true"/>
+
+ </RelativeLayout>
+
+ </RelativeLayout>
+
+</com.android.systemui.SearchPanelView>
diff --git a/packages/SystemUI/res/layout/status_bar_expanded.xml b/packages/SystemUI/res/layout/status_bar_expanded.xml
index eb1e1c0..f69aac8 100644
--- a/packages/SystemUI/res/layout/status_bar_expanded.xml
+++ b/packages/SystemUI/res/layout/status_bar_expanded.xml
@@ -21,120 +21,103 @@
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui"
- android:focusable="true"
- android:descendantFocusability="afterDescendants"
+ android:id="@+id/notification_panel"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:background="@drawable/notification_panel_bg"
+ android:paddingTop="@dimen/notification_panel_padding_top"
+ android:layout_marginLeft="@dimen/notification_panel_margin_left"
>
- <FrameLayout
+ <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:orientation="vertical"
- android:id="@+id/notification_panel"
- android:background="@drawable/notification_tracking_bg"
- android:paddingTop="@*android:dimen/status_bar_height"
+ android:paddingTop="@dimen/notification_panel_header_padding_top"
+ android:background="@drawable/notification_header_bg"
+ android:orientation="horizontal"
+ android:gravity="center_vertical"
+ android:baselineAligned="false"
>
-
- <RelativeLayout
- android:layout_width="match_parent"
- android:layout_height="52dp"
- android:paddingTop="3dp"
- android:paddingBottom="5dp"
- android:paddingRight="3dp"
- android:background="@drawable/notification_header_bg"
- >
- <com.android.systemui.statusbar.policy.DateView android:id="@+id/date"
- android:textAppearance="@style/TextAppearance.StatusBar.Date"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:layout_alignParentLeft="true"
- android:singleLine="true"
- android:gravity="center_vertical|left"
- android:paddingLeft="16dp"
- />
- <!--
- <com.android.systemui.statusbar.phone.CarrierLabel
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:layout_marginTop="1dp"
- android:layout_marginLeft="5dp"
- android:layout_gravity="center_vertical"
- android:paddingBottom="1dp"
- android:paddingLeft="4dp"
- android:textAppearance="?android:attr/textAppearanceLarge"
- android:textColor="?android:attr/textColorSecondary"
- />
- -->
-
- <ImageView android:id="@+id/settings_button"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:layout_toRightOf="@id/date"
- android:paddingLeft="8dp"
- android:paddingRight="8dp"
- android:src="@drawable/ic_notify_quicksettings"
- android:contentDescription="@string/accessibility_settings_button"
- />
-
- <ImageView android:id="@+id/clear_all_button"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:layout_alignParentRight="true"
- android:paddingLeft="8dp"
- android:paddingRight="8dp"
- android:src="@drawable/ic_notify_clear"
- android:contentDescription="@string/accessibility_clear_all"
- />
- </RelativeLayout>
-
- <View
- android:layout_width="match_parent"
- android:layout_height="2dp"
- android:layout_marginTop="52dp"
- android:background="@drawable/status_bar_hr"
+ <com.android.systemui.statusbar.policy.Clock
+ android:id="@+id/clock"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="8dp"
+ android:singleLine="true"
+ android:textAppearance="@style/TextAppearance.StatusBar.Expanded.Clock"
/>
-
- <ScrollView
- android:id="@+id/scroll"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:fadingEdge="none"
- android:overScrollMode="ifContentScrolls"
- android:layout_marginTop="54dp"
- android:layout_marginBottom="34dp"
- >
- <com.android.systemui.statusbar.policy.NotificationRowLayout
- android:id="@+id/latestItems"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- systemui:rowHeight="@dimen/notification_height"
- />
- </ScrollView>
-
- <ImageView
+
+ <com.android.systemui.statusbar.policy.DateView android:id="@+id/date"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="8dp"
+ android:layout_marginRight="8dp"
+ android:textAppearance="@style/TextAppearance.StatusBar.Expanded.Date"
+ />
+
+ <com.android.systemui.statusbar.RotationToggle android:id="@+id/rotation_lock_button"
+ android:layout_width="32dp"
+ android:layout_height="32dp"
+ android:layout_margin="8dp"
+ android:button="@drawable/ic_notify_rotation"
+ android:contentDescription="@string/accessibility_rotation_lock_off"
+ />
+
+ <ImageView android:id="@+id/settings_button"
+ android:layout_width="48dp"
+ android:layout_height="48dp"
+ android:scaleType="center"
+ android:src="@drawable/ic_notify_quicksettings"
+ android:contentDescription="@string/accessibility_settings_button"
+ />
+
+ <Space
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ />
+
+ <ImageView android:id="@+id/clear_all_button"
+ android:layout_width="48dp"
+ android:layout_height="48dp"
+ android:scaleType="center"
+ android:src="@drawable/ic_notify_clear"
+ android:contentDescription="@string/accessibility_clear_all"
+ />
+ </LinearLayout>
+
+ <ScrollView
+ android:id="@+id/scroll"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:fadingEdge="none"
+ android:overScrollMode="ifContentScrolls"
+ android:layout_marginTop="@dimen/notification_panel_header_height"
+ android:layout_marginBottom="@dimen/close_handle_underlap"
+ >
+ <com.android.systemui.statusbar.policy.NotificationRowLayout
+ android:id="@+id/latestItems"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:src="@drawable/title_bar_shadow"
- android:layout_marginTop="54dp"
- android:scaleType="fitXY"
- />
-
- <com.android.systemui.statusbar.phone.CloseDragHandle android:id="@+id/close"
+ systemui:rowHeight="@dimen/notification_height"
+ />
+ </ScrollView>
+
+ <com.android.systemui.statusbar.phone.CloseDragHandle android:id="@+id/close"
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/close_handle_height"
+ android:layout_gravity="bottom"
+ android:orientation="vertical"
+ >
+ <ImageView
android:layout_width="match_parent"
android:layout_height="@dimen/close_handle_height"
android:layout_gravity="bottom"
- android:orientation="vertical"
- >
- <ImageView
- android:layout_width="match_parent"
- android:layout_height="34dp"
- android:layout_gravity="bottom"
- android:scaleType="fitXY"
- android:src="@drawable/status_bar_close_on"
- />
-
- </com.android.systemui.statusbar.phone.CloseDragHandle>
-
- </FrameLayout><!-- end of sliding panel -->
+ android:scaleType="fitXY"
+ android:src="@drawable/status_bar_close"
+ />
-</FrameLayout><!-- end of window -->
\ No newline at end of file
+ </com.android.systemui.statusbar.phone.CloseDragHandle>
+
+</FrameLayout><!-- end of sliding panel -->
\ No newline at end of file
diff --git a/packages/SystemUI/res/layout/status_bar_tracking.xml b/packages/SystemUI/res/layout/status_bar_tracking.xml
deleted file mode 100644
index c1b0066..0000000
--- a/packages/SystemUI/res/layout/status_bar_tracking.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2008 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.
--->
-
-<com.android.systemui.statusbar.phone.TrackingView
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:visibility="gone"
- android:focusable="true"
- android:descendantFocusability="afterDescendants"
- android:paddingBottom="0px"
- android:paddingLeft="0px"
- android:paddingRight="0px"
- >
-
- <FrameLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:background="@drawable/notification_tracking_bg"
- >
- <com.android.systemui.statusbar.phone.CarrierLabel
- android:textAppearance="@style/TextAppearance.StatusBar.Clock"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:layout_gravity="bottom"
- android:gravity="center"
- android:paddingBottom="20dp"
- />
- </FrameLayout>
-
- <com.android.systemui.statusbar.phone.CloseDragHandle android:id="@+id/close"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- >
- <ImageView
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="bottom"
- android:scaleType="fitXY"
- android:src="@drawable/status_bar_close_on"
- />
-
- </com.android.systemui.statusbar.phone.CloseDragHandle>
-
-</com.android.systemui.statusbar.phone.TrackingView>
diff --git a/packages/SystemUI/res/layout/super_status_bar.xml b/packages/SystemUI/res/layout/super_status_bar.xml
index c094988..6c31ff4 100644
--- a/packages/SystemUI/res/layout/super_status_bar.xml
+++ b/packages/SystemUI/res/layout/super_status_bar.xml
@@ -18,7 +18,7 @@
-->
<!-- This is the combined status bar / notification panel window. -->
-<FrameLayout
+<com.android.systemui.statusbar.phone.StatusBarWindowView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui"
android:focusable="true"
@@ -36,4 +36,4 @@
android:layout_height="@*android:dimen/status_bar_height"
/>
-</FrameLayout>
+</com.android.systemui.statusbar.phone.StatusBarWindowView>
diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml
index a9810d1..47ac16d 100644
--- a/packages/SystemUI/res/values-af/strings.xml
+++ b/packages/SystemUI/res/values-af/strings.xml
@@ -140,4 +140,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Verwyder alle kennisgewings."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Aktiveer sluimerskerm"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Programinligting"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml
index 873dd65..ece78dc 100644
--- a/packages/SystemUI/res/values-am/strings.xml
+++ b/packages/SystemUI/res/values-am/strings.xml
@@ -140,4 +140,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"ሁሉንም ማሳወቂያዎች አጽዳ"</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">" ገፁማያ ማቆያ አንቃ"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"የመተግበሪያ መረጃ"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml
index 9e316ec..c412d58 100644
--- a/packages/SystemUI/res/values-ar/strings.xml
+++ b/packages/SystemUI/res/values-ar/strings.xml
@@ -140,4 +140,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"محو جميع الإشعارات."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"تنشيط شاشة التوقف"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"معلومات التطبيق"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml
index a07ed56..859df39 100644
--- a/packages/SystemUI/res/values-be/strings.xml
+++ b/packages/SystemUI/res/values-be/strings.xml
@@ -142,4 +142,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Выдалiць усе апавяшчэннi."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Актывацыя экраннай застаўкі"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Інфармацыя пра прыкладанне"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml
index 258e001..ae1158d 100644
--- a/packages/SystemUI/res/values-bg/strings.xml
+++ b/packages/SystemUI/res/values-bg/strings.xml
@@ -140,4 +140,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Изчистване на всички известия."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Активиране на скрийнсейвъра"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Информация за приложението"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml
index 9eec352..8adba08 100644
--- a/packages/SystemUI/res/values-ca/strings.xml
+++ b/packages/SystemUI/res/values-ca/strings.xml
@@ -142,4 +142,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Esborra totes les notificacions."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Activa el protector de pantalla"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informació de l\'aplicació"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml
index 9fd8d35..601869d 100644
--- a/packages/SystemUI/res/values-cs/strings.xml
+++ b/packages/SystemUI/res/values-cs/strings.xml
@@ -142,4 +142,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Vymazat všechna oznámení."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Aktivovat spořič obrazovky"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informace o aplikaci"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml
index 4fa113b..32ae3a9 100644
--- a/packages/SystemUI/res/values-da/strings.xml
+++ b/packages/SystemUI/res/values-da/strings.xml
@@ -140,4 +140,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Ryd alle meddelelser."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Aktiver pauseskærm"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Oplysninger om appen"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml
index ac07e9b..a365ce2 100644
--- a/packages/SystemUI/res/values-de/strings.xml
+++ b/packages/SystemUI/res/values-de/strings.xml
@@ -142,4 +142,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Alle Benachrichtigungen löschen"</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Bildschirmschoner aktivieren"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"App-Details"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml
index 351c506..72e8629 100644
--- a/packages/SystemUI/res/values-el/strings.xml
+++ b/packages/SystemUI/res/values-el/strings.xml
@@ -142,4 +142,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Εκκαθάριση όλων των ειδοποιήσεων."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Ενεργοποίηση προφύλαξης οθόνης"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Πληροφορίες εφαρμογής"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml
index 118f7e3..9701ab8 100644
--- a/packages/SystemUI/res/values-en-rGB/strings.xml
+++ b/packages/SystemUI/res/values-en-rGB/strings.xml
@@ -140,4 +140,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Clear all notifications."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Activate screen saver"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"App info"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml
index 7a5b853..3bc4077 100644
--- a/packages/SystemUI/res/values-es-rUS/strings.xml
+++ b/packages/SystemUI/res/values-es-rUS/strings.xml
@@ -142,4 +142,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Eliminar todas las notificaciones"</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Activar el protector de pantalla"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Información de la aplicación"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml
index 20a6dee..c6e2604 100644
--- a/packages/SystemUI/res/values-es/strings.xml
+++ b/packages/SystemUI/res/values-es/strings.xml
@@ -140,4 +140,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Borrar todas las notificaciones"</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Activar salvapantallas"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Información de la aplicación"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml
index d254792..55ebbad 100644
--- a/packages/SystemUI/res/values-et/strings.xml
+++ b/packages/SystemUI/res/values-et/strings.xml
@@ -140,4 +140,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Kustuta kõik teatised."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Aktiveeri ekraanisäästja"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Rakenduse teave"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml
index b7ad8d9..c764821 100644
--- a/packages/SystemUI/res/values-fa/strings.xml
+++ b/packages/SystemUI/res/values-fa/strings.xml
@@ -140,4 +140,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"پاک کردن تمام اعلانها"</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"فعال کردن محافظ صفحه نمایش"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"اطلاعات برنامه"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml
index 0b904e7..a68675c 100644
--- a/packages/SystemUI/res/values-fi/strings.xml
+++ b/packages/SystemUI/res/values-fi/strings.xml
@@ -140,4 +140,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Tyhjennä kaikki ilmoitukset."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Ota näytönsäästäjä käyttöön"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Sovelluksen tiedot"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml
index a73fa12..52df763 100644
--- a/packages/SystemUI/res/values-fr/strings.xml
+++ b/packages/SystemUI/res/values-fr/strings.xml
@@ -142,4 +142,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Supprimer toutes les notifications"</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Activer l\'économiseur d\'écran"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informations sur l\'application"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml
index cd98042..9220a49 100644
--- a/packages/SystemUI/res/values-hi/strings.xml
+++ b/packages/SystemUI/res/values-hi/strings.xml
@@ -140,4 +140,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"सभी सूचनाएं साफ़ करें."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"स्क्रीन सेवर सक्रिय करें"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"एप्लिकेशन जानकारी"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml
index e96bac1..2c6c00a 100644
--- a/packages/SystemUI/res/values-hr/strings.xml
+++ b/packages/SystemUI/res/values-hr/strings.xml
@@ -140,4 +140,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Brisanje svih obavijesti."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Aktivirajte čuvar zaslona"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informacije o aplikaciji"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml
index d8af0c3..d1ac63a5 100644
--- a/packages/SystemUI/res/values-hu/strings.xml
+++ b/packages/SystemUI/res/values-hu/strings.xml
@@ -140,4 +140,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Minden értesítés törlése"</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Képernyővédő aktiválása"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Alkalmazásinformáció"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml
index 2f566e1..981782d 100644
--- a/packages/SystemUI/res/values-in/strings.xml
+++ b/packages/SystemUI/res/values-in/strings.xml
@@ -140,4 +140,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Menghapus semua pemberitahuan."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Aktifkan tirai layar"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Info aplikasi"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml
index 6072697..cac4e73 100644
--- a/packages/SystemUI/res/values-it/strings.xml
+++ b/packages/SystemUI/res/values-it/strings.xml
@@ -142,4 +142,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Cancella tutte le notifiche."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Attiva screensaver"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informazioni applicazione"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml
index cec71a7..eeca907 100644
--- a/packages/SystemUI/res/values-iw/strings.xml
+++ b/packages/SystemUI/res/values-iw/strings.xml
@@ -140,4 +140,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"נקה את כל ההתראות."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"הפעלת שומר מסך"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"פרטי יישום"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml
index a9aee94..2b1daf8 100644
--- a/packages/SystemUI/res/values-ja/strings.xml
+++ b/packages/SystemUI/res/values-ja/strings.xml
@@ -142,4 +142,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"通知をすべて消去。"</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"スクリーンセーバーを有効にする"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"アプリ情報"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml
index ba559a0..4cd5778 100644
--- a/packages/SystemUI/res/values-ko/strings.xml
+++ b/packages/SystemUI/res/values-ko/strings.xml
@@ -140,4 +140,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"모든 알림 지우기"</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"스크린 세이버 활성화"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"앱 정보"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-large-port/dimens.xml b/packages/SystemUI/res/values-large-port/dimens.xml
deleted file mode 100644
index 56effa3..0000000
--- a/packages/SystemUI/res/values-large-port/dimens.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (c) 2010, 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.
-*/
--->
-<resources>
- <!-- gap on either side of status bar notification icons -->
- <dimen name="status_bar_icon_padding">2dp</dimen>
-</resources>
-
-
-
diff --git a/packages/SystemUI/res/values-large/colors.xml b/packages/SystemUI/res/values-large/colors.xml
deleted file mode 100644
index a7a70c3..0000000
--- a/packages/SystemUI/res/values-large/colors.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
- <drawable name="status_bar_background">#000000</drawable>
- <drawable name="notification_icon_area_smoke">#aa000000</drawable>
-</resources>
-
diff --git a/packages/SystemUI/res/values-large/config.xml b/packages/SystemUI/res/values-large/config.xml
deleted file mode 100644
index 4014f8d..0000000
--- a/packages/SystemUI/res/values-large/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-** Copyright 2010, 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.
-*/
--->
-
-<!-- These resources are around just to allow their values to be customized
- for different hardware and product builds. -->
-<resources>
- <!-- Whether or not we show the number in the bar. -->
- <bool name="config_statusBarShowNumber">false</bool>
-</resources>
-
diff --git a/packages/SystemUI/res/values-large/dimens.xml b/packages/SystemUI/res/values-large/dimens.xml
deleted file mode 100644
index 9d89e21..0000000
--- a/packages/SystemUI/res/values-large/dimens.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (c) 2010, 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.
-*/
--->
-<resources>
- <!-- The width of the ticker, including the icon -->
- <dimen name="notification_ticker_width">360dp</dimen>
- <!-- Status bar panel bottom offset (height of status bar - overlap) -->
- <dimen name="status_bar_panel_bottom_offset">36dp</dimen>
- <!-- gap on either side of status bar notification icons -->
- <dimen name="status_bar_icon_padding">8dp</dimen>
-</resources>
-
-
diff --git a/packages/SystemUI/res/values-large/strings.xml b/packages/SystemUI/res/values-large/strings.xml
deleted file mode 100644
index f04dc04..0000000
--- a/packages/SystemUI/res/values-large/strings.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/**
- * Copyright (c) 2010, 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.
- */
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- The text for the button in the notification window-shade that clears
- all of the currently visible notifications. [CHAR LIMIT=10]-->
- <string name="status_bar_clear_all_button">Clear all</string>
-
- <!-- Separator for PLMN and SPN in network name. -->
- <string name="status_bar_network_name_separator" translatable="false">" – "</string>
-
- <!-- Title for the pseudo-notification shown when notifications are disabled (do-not-disturb
- mode) -->
- <string name="notifications_off_title">Notifications off</string>
-
- <!-- Content text for do-not-disturb mode notification -->
- <string name="notifications_off_text">Tap here to turn notifications back on.</string>
-</resources>
diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml
index 896d53c..54ed00c 100644
--- a/packages/SystemUI/res/values-lt/strings.xml
+++ b/packages/SystemUI/res/values-lt/strings.xml
@@ -140,4 +140,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Išvalyti visus pranešimus."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Aktyvinti ekrano užsklandą"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Programos informacija"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml
index 657df8b..afedc72 100644
--- a/packages/SystemUI/res/values-lv/strings.xml
+++ b/packages/SystemUI/res/values-lv/strings.xml
@@ -140,4 +140,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Notīrīt visus paziņojumus"</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Aktivizēt ekrānsaudzētāju"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informācija par lietotni"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml
index 6141732..d956d4d 100644
--- a/packages/SystemUI/res/values-ms/strings.xml
+++ b/packages/SystemUI/res/values-ms/strings.xml
@@ -140,4 +140,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Padamkan semua pemberitahuan."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Aktifkan gambar skrin"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Maklumat apl"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml
index e6c24a9..aca1f94 100644
--- a/packages/SystemUI/res/values-nb/strings.xml
+++ b/packages/SystemUI/res/values-nb/strings.xml
@@ -140,4 +140,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Fjern alle varslinger."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Aktiver skjermbeskytter"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Info om app"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml
index ff1c02a..7d50794 100644
--- a/packages/SystemUI/res/values-nl/strings.xml
+++ b/packages/SystemUI/res/values-nl/strings.xml
@@ -140,4 +140,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Alle meldingen wissen."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Schermbeveiliging inschakelen"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"App-info"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml
index 646993f4..4847e51 100644
--- a/packages/SystemUI/res/values-pl/strings.xml
+++ b/packages/SystemUI/res/values-pl/strings.xml
@@ -140,4 +140,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Usuń wszystkie powiadomienia."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Włącz wygaszacz ekranu."</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"O aplikacji"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml
index 31e6566..1d22d2f 100644
--- a/packages/SystemUI/res/values-pt-rPT/strings.xml
+++ b/packages/SystemUI/res/values-pt-rPT/strings.xml
@@ -140,4 +140,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Limpar todas as notificações."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Ativar proteção de ecrã"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informações da aplicação"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml
index 4f1fb95..8b774e6 100644
--- a/packages/SystemUI/res/values-pt/strings.xml
+++ b/packages/SystemUI/res/values-pt/strings.xml
@@ -142,4 +142,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Limpar todas as notificações."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Ativar proteção de tela"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informações do aplicativo"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-rm/strings.xml b/packages/SystemUI/res/values-rm/strings.xml
index 917306a..8d3103b 100644
--- a/packages/SystemUI/res/values-rm/strings.xml
+++ b/packages/SystemUI/res/values-rm/strings.xml
@@ -250,4 +250,8 @@
<skip />
<!-- no translation found for status_bar_notification_inspect_item_title (1163547729015390250) -->
<skip />
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml
index 22bdc7a..714ad2d 100644
--- a/packages/SystemUI/res/values-ro/strings.xml
+++ b/packages/SystemUI/res/values-ro/strings.xml
@@ -140,4 +140,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Ştergeţi toate notificările."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Activaţi screensaverul"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informaţii despre aplicaţie"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml
index 0fdbe2b..dcfe560 100644
--- a/packages/SystemUI/res/values-ru/strings.xml
+++ b/packages/SystemUI/res/values-ru/strings.xml
@@ -142,4 +142,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Удалить все уведомления"</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Активация заставки экрана"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"О приложении"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml
index 9b4b6ae..96cd983 100644
--- a/packages/SystemUI/res/values-sk/strings.xml
+++ b/packages/SystemUI/res/values-sk/strings.xml
@@ -142,4 +142,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Vymazať všetky upozornenia."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Aktivovať šetrič obrazovky"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Informácie o aplikácii"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml
index 08ab0f5..b8371ab 100644
--- a/packages/SystemUI/res/values-sl/strings.xml
+++ b/packages/SystemUI/res/values-sl/strings.xml
@@ -140,4 +140,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Izbriši vsa obvestila."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Vklop ohranjevalnika zaslona"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Podatki o aplikaciji"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml
index 7848059..e29fc0c 100644
--- a/packages/SystemUI/res/values-sr/strings.xml
+++ b/packages/SystemUI/res/values-sr/strings.xml
@@ -140,4 +140,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Обриши сва обавештења."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Активирање чувара екрана"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Информације о апликацији"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml
index 01c3eb6..691f89e 100644
--- a/packages/SystemUI/res/values-sv/strings.xml
+++ b/packages/SystemUI/res/values-sv/strings.xml
@@ -140,4 +140,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Ta bort alla meddelanden."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Aktivera skärmsläckare"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Info om appen"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml
index 78b7a95..5803f3c 100644
--- a/packages/SystemUI/res/values-sw/strings.xml
+++ b/packages/SystemUI/res/values-sw/strings.xml
@@ -138,4 +138,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Futa arifa zote."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Amilisha hifadhi ya skrini"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Taarifa ya programu"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-sw600dp-land/dimens.xml b/packages/SystemUI/res/values-sw600dp-land/dimens.xml
new file mode 100644
index 0000000..afa0b20
--- /dev/null
+++ b/packages/SystemUI/res/values-sw600dp-land/dimens.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (c) 2012, 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.
+*/
+-->
+<resources>
+ <!-- Layout parameters for the notification panel -->
+ <dimen name="notification_panel_margin_bottom">0dp</dimen>
+ <dimen name="notification_panel_margin_left">32dp</dimen>
+
+ <!-- Gravity for the notification panel -->
+ <!-- 0x33 = left|top -->
+ <integer name="notification_panel_layout_gravity">0x33</integer>
+</resources>
diff --git a/packages/SystemUI/res/values-sw600dp-port/config.xml b/packages/SystemUI/res/values-sw600dp-port/config.xml
deleted file mode 100644
index ab7661a..0000000
--- a/packages/SystemUI/res/values-sw600dp-port/config.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-** Copyright 2011, 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.
-*/
--->
-
-<!-- These resources are around just to allow their values to be customized
- for different hardware and product builds. -->
-<resources>
- <integer name="config_maxNotificationIcons">3</integer>
-</resources>
-
diff --git a/packages/SystemUI/res/values-sw600dp-port/dimens.xml b/packages/SystemUI/res/values-sw600dp-port/dimens.xml
deleted file mode 100644
index 39eade6..0000000
--- a/packages/SystemUI/res/values-sw600dp-port/dimens.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (c) 2011, 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.
-*/
--->
-<resources>
- <!-- gap on either side of status bar notification icons -->
- <dimen name="status_bar_icon_padding">0dp</dimen>
-
- <!-- The width of the view containing non-menu status bar icons -->
- <dimen name="navigation_key_width">70dip</dimen>
-
- <!-- The width of the view containing the menu status bar icon -->
- <dimen name="navigation_menu_key_width">40dip</dimen>
-</resources>
-
diff --git a/packages/SystemUI/res/values-sw600dp/dimens.xml b/packages/SystemUI/res/values-sw600dp/dimens.xml
new file mode 100644
index 0000000..2ff62a5
--- /dev/null
+++ b/packages/SystemUI/res/values-sw600dp/dimens.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (c) 2012, 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.
+*/
+-->
+<resources>
+ <!-- The width of the notification panel window: 446 + 16 + 16 (padding in the bg drawable) -->
+ <dimen name="notification_panel_width">478dp</dimen>
+
+ <!-- Layout parameters for the notification panel -->
+ <dimen name="notification_panel_margin_bottom">192dp</dimen>
+ <dimen name="notification_panel_margin_left">0dp</dimen>
+
+ <!-- Gravity for the notification panel -->
+ <!-- 0x33 = center_horizontal|top -->
+ <integer name="notification_panel_layout_gravity">0x31</integer>
+
+ <!-- Default target placement radius for navigation bar search target -->
+ <dimen name="navbar_search_target_placement_radius">182dip</dimen>
+
+ <!-- Diameter of outer shape drawable shown in navbar search-->
+ <dimen name="navbar_search_outerring_diameter">364dp</dimen>
+
+ <!-- Height of search panel including navigation bar height -->
+ <dimen name="navbar_search_panel_height">300dip</dimen>
+
+ <!-- Extra space above the clock in the panel; on this device, zero -->
+ <dimen name="notification_panel_header_padding_top">0dp</dimen>
+
+</resources>
diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml
index 6ad380a..2ead831 100644
--- a/packages/SystemUI/res/values-th/strings.xml
+++ b/packages/SystemUI/res/values-th/strings.xml
@@ -140,4 +140,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"ล้างการแจ้งเตือนทั้งหมด"</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"เปิดโปรแกรมรักษาหน้าจอ"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"ข้อมูลแอป"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml
index d750207..9729a17 100644
--- a/packages/SystemUI/res/values-tl/strings.xml
+++ b/packages/SystemUI/res/values-tl/strings.xml
@@ -140,4 +140,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"I-clear ang lahat ng notification."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"I-activate ang screen saver"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Impormasyon ng app"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml
index 72cf8d0..7a328b3 100644
--- a/packages/SystemUI/res/values-tr/strings.xml
+++ b/packages/SystemUI/res/values-tr/strings.xml
@@ -140,4 +140,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Tüm bildirimleri temizle"</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Ekran koruyucuyu etkinleştir"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Uygulama bilgileri"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml
index b787dc8..995f21a 100644
--- a/packages/SystemUI/res/values-uk/strings.xml
+++ b/packages/SystemUI/res/values-uk/strings.xml
@@ -140,4 +140,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Очистити всі сповіщення."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Активувати заставку"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Інформація про програму"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml
index fea33a4..7c99f6b 100644
--- a/packages/SystemUI/res/values-vi/strings.xml
+++ b/packages/SystemUI/res/values-vi/strings.xml
@@ -140,4 +140,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Xóa tất cả thông báo."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Kích hoạt trình bảo vệ màn hình"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Thông tin về ứng dụng"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml
index 4c9a27a..c6e2955 100644
--- a/packages/SystemUI/res/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res/values-zh-rCN/strings.xml
@@ -142,4 +142,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"清除所有通知。"</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"激活屏幕保护程序"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"应用信息"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml
index 224ae55..ad72466 100644
--- a/packages/SystemUI/res/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res/values-zh-rTW/strings.xml
@@ -142,4 +142,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"清除所有通知。"</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"啟用螢幕保護程式"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"應用程式資訊"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml
index dfebfe7..b2b111d 100644
--- a/packages/SystemUI/res/values-zu/strings.xml
+++ b/packages/SystemUI/res/values-zu/strings.xml
@@ -140,4 +140,8 @@
<string name="accessibility_clear_all" msgid="5235938559247164925">"Susa zonke izaziso."</string>
<string name="dreams_dock_launcher" msgid="3541196417659166245">"Yenza ukuthi iskrini seyiva sisebenze"</string>
<string name="status_bar_notification_inspect_item_title" msgid="1163547729015390250">"Ulwazi lohlelo lokusebenza"</string>
+ <!-- no translation found for notifications_off_title (8936620513608443224) -->
+ <skip />
+ <!-- no translation found for notifications_off_text (2529001315769385273) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values/colors.xml b/packages/SystemUI/res/values/colors.xml
index 9257195..ac2779f 100644
--- a/packages/SystemUI/res/values/colors.xml
+++ b/packages/SystemUI/res/values/colors.xml
@@ -20,11 +20,11 @@
<drawable name="notification_number_text_color">#ffffffff</drawable>
<drawable name="ticker_background_color">#ff1d1d1d</drawable>
<drawable name="status_bar_background">#ff000000</drawable>
+ <color name="notification_panel_solid_background">#ff000000</color>
<drawable name="status_bar_recents_app_thumbnail_background">#88000000</drawable>
<color name="status_bar_recents_app_label_color">#ffffffff</color>
<drawable name="status_bar_notification_row_background_color">#ff090909</drawable>
<drawable name="notification_header_bg">#FF000000</drawable>
- <drawable name="notification_tracking_bg">#66000000</drawable>
<color name="notification_list_shadow_top">#80000000</color>
<drawable name="recents_callout_line">#99ffffff</drawable>
<drawable name="notification_item_background_legacy_color">#ffaaaaaa</drawable>
diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml
index 1f22507..5548445 100644
--- a/packages/SystemUI/res/values/config.xml
+++ b/packages/SystemUI/res/values/config.xml
@@ -53,5 +53,8 @@
<!-- When true, show 1/2G networks as 3G. -->
<bool name="config_showMin3G">false</bool>
+
+ <!-- Show rotation lock button in phone-style notification panel. -->
+ <bool name="config_showRotationLock">true</bool>
</resources>
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index f7b8cc9..b908188 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -116,8 +116,34 @@
<dimen name="navbar_search_hit_radius">60dip</dimen>
<!-- Diameter of outer shape drawable shown in navbar search-->
- <dimen name="navbar_search_outerring_diameter">300dip</dimen>
+ <dimen name="navbar_search_outerring_diameter">270dp</dimen>
+
+ <!-- Threshold for swipe-up gesture to activate search dialog -->
+ <dimen name="navbar_search_up_threshhold">20dip</dimen>
+
+ <!-- Height of search panel including navigation bar height -->
+ <dimen name="navbar_search_panel_height">230dip</dimen>
<!-- Height of the draggable handle at the bottom of the phone notification panel -->
- <dimen name="close_handle_height">34dp</dimen>
+ <dimen name="close_handle_height">32dp</dimen>
+
+ <!-- Amount of close_handle that will not overlap the notification list -->
+ <dimen name="close_handle_underlap">18dp</dimen>
+
+ <!-- Height of the notification panel header bar -->
+ <dimen name="notification_panel_header_height">48dp</dimen>
+
+ <!-- Height of the notification panel header bar -->
+ <dimen name="notification_panel_padding_top">@*android:dimen/status_bar_height</dimen>
+
+ <!-- Extra space above the clock in the panel; half of (notification_panel_header_height - 32) -->
+ <dimen name="notification_panel_header_padding_top">0dp</dimen>
+
+ <!-- Layout parameters for the notification panel -->
+ <dimen name="notification_panel_margin_bottom">0dp</dimen>
+ <dimen name="notification_panel_margin_left">0dp</dimen>
+
+ <!-- Gravity for the notification panel -->
+ <!-- 0x37 = fill_horizontal|top -->
+ <integer name="notification_panel_layout_gravity">0x37</integer>
</resources>
diff --git a/packages/SystemUI/res/values/donottranslate.xml b/packages/SystemUI/res/values/donottranslate.xml
index 4ca2116..089a54d 100644
--- a/packages/SystemUI/res/values/donottranslate.xml
+++ b/packages/SystemUI/res/values/donottranslate.xml
@@ -21,6 +21,6 @@
We show both (DOW on one line, then the date) but this can be overridden for locales as
necessary.
-->
- <string name="status_bar_date_formatter">%2$s</string>
+ <string name="status_bar_date_formatter">%1$s\n%2$s</string>
</resources>
diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml
index 236ca6b..1eb353f 100644
--- a/packages/SystemUI/res/values/strings.xml
+++ b/packages/SystemUI/res/values/strings.xml
@@ -369,4 +369,20 @@
<!-- Title shown in notification popup for inspecting the responsible
application -->
<string name="status_bar_notification_inspect_item_title">App info</string>
+
+ <!-- Title for the pseudo-notification shown when notifications are disabled (do-not-disturb
+ mode) -->
+ <string name="notifications_off_title">Notifications off</string>
+
+ <!-- Content text for do-not-disturb mode notification -->
+ <string name="notifications_off_text">Tap here to turn notifications back on.</string>
+
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is on. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_rotation_lock_off">Screen will rotate automatically.</string>
+
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_rotation_lock_on_landscape">Screen is locked in landscape orientation.</string>
+
+ <!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_rotation_lock_on_portrait">Screen is locked in portrait orientation.</string>
</resources>
diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml
index 02411d4..144760e 100644
--- a/packages/SystemUI/res/values/styles.xml
+++ b/packages/SystemUI/res/values/styles.xml
@@ -53,6 +53,21 @@
<item name="android:textColor">@android:color/holo_blue_light</item>
</style>
+ <style name="TextAppearance.StatusBar.Expanded" parent="@*android:style/TextAppearance.StatusBar" />
+
+ <style name="TextAppearance.StatusBar.Expanded.Clock">
+ <item name="android:textSize">32dp</item>
+ <item name="android:textStyle">normal</item>
+ <item name="android:textColor">#ffffff</item>
+ </style>
+
+ <style name="TextAppearance.StatusBar.Expanded.Date">
+ <item name="android:textSize">12dp</item>
+ <item name="android:textStyle">normal</item>
+ <item name="android:textColor">#666666</item>
+ <item name="android:textAllCaps">true</item>
+ </style>
+
<style name="Animation" />
<style name="Animation.ShirtPocketPanel">
diff --git a/packages/SystemUI/src/com/android/systemui/ExpandHelper.java b/packages/SystemUI/src/com/android/systemui/ExpandHelper.java
index 5387bf5..c5928f1 100644
--- a/packages/SystemUI/src/com/android/systemui/ExpandHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/ExpandHelper.java
@@ -41,6 +41,13 @@
private static final long EXPAND_DURATION = 250;
private static final long GLOW_DURATION = 150;
+ // Set to false to disable focus-based gestures (two-finger pull).
+ private static final boolean USE_DRAG = true;
+ // Set to false to disable scale-based gestures (both horizontal and vertical).
+ private static final boolean USE_SPAN = true;
+ // Both gestures types may be active at the same time.
+ // At least one gesture type should be active.
+ // A variant of the screwdriver gesture will emerge from either gesture type.
// amount of overstretch for maximum brightness expressed in U
// 2f: maximum brightness is stretching a 1U to 3U, or a 4U to 6U
@@ -59,6 +66,7 @@
private View mCurrViewBottomGlow;
private float mOldHeight;
private float mNaturalHeight;
+ private float mInitialTouchFocusY;
private float mInitialTouchSpan;
private Callback mCallback;
private ScaleGestureDetector mDetector;
@@ -83,7 +91,7 @@
ViewGroup.LayoutParams lp = mView.getLayoutParams();
lp.height = (int)h;
mView.setLayoutParams(lp);
- mView.requestLayout();
+ mView.requestLayout();
}
public float getHeight() {
int height = mView.getLayoutParams().height;
@@ -94,15 +102,15 @@
}
public int getNaturalHeight(int maximum) {
ViewGroup.LayoutParams lp = mView.getLayoutParams();
- if (DEBUG) Log.v(TAG, "Inspecting a child of type: " + mView.getClass().getName());
+ if (DEBUG) Log.v(TAG, "Inspecting a child of type: " + mView.getClass().getName());
int oldHeight = lp.height;
lp.height = ViewGroup.LayoutParams.WRAP_CONTENT;
mView.setLayoutParams(lp);
mView.measure(
View.MeasureSpec.makeMeasureSpec(mView.getMeasuredWidth(),
- View.MeasureSpec.EXACTLY),
+ View.MeasureSpec.EXACTLY),
View.MeasureSpec.makeMeasureSpec(maximum,
- View.MeasureSpec.AT_MOST));
+ View.MeasureSpec.AT_MOST));
lp.height = oldHeight;
mView.setLayoutParams(lp);
return mView.getMeasuredHeight();
@@ -135,8 +143,9 @@
View v = mCallback.getChildAtPosition(detector.getFocusX(), detector.getFocusY());
// your fingers have to be somewhat close to the bounds of the view in question
- mInitialTouchSpan = Math.abs(detector.getCurrentSpanY());
- if (DEBUG) Log.d(TAG, "got mInitialTouchSpan: " + mInitialTouchSpan);
+ mInitialTouchFocusY = detector.getFocusY();
+ mInitialTouchSpan = Math.abs(detector.getCurrentSpan());
+ if (DEBUG) Log.d(TAG, "got mInitialTouchSpan: (" + mInitialTouchSpan + ")");
mStretching = initScale(v);
return mStretching;
@@ -145,16 +154,25 @@
@Override
public boolean onScale(ScaleGestureDetector detector) {
if (DEBUG) Log.v(TAG, "onscale() on " + mCurrView);
- float h = Math.abs(detector.getCurrentSpanY());
- if (DEBUG) Log.d(TAG, "current span is: " + h);
- h = h + mOldHeight - mInitialTouchSpan;
- float target = h;
+
+ // are we scaling or dragging?
+ float span = Math.abs(detector.getCurrentSpan()) - mInitialTouchSpan;
+ span *= USE_SPAN ? 1f : 0f;
+ float drag = detector.getFocusY() - mInitialTouchFocusY;
+ drag *= USE_DRAG ? 1f : 0f;
+ float pull = Math.abs(drag) + Math.abs(span) + 1f;
+ float hand = drag * Math.abs(drag) / pull + span * Math.abs(span) / pull;
+ if (DEBUG) Log.d(TAG, "current span handle is: " + hand);
+ hand = hand + mOldHeight;
+ float target = hand;
if (DEBUG) Log.d(TAG, "target is: " + target);
- h = h<mSmallSize?mSmallSize:(h>mLargeSize?mLargeSize:h);
- h = h>mNaturalHeight?mNaturalHeight:h;
- if (DEBUG) Log.d(TAG, "scale continues: h=" + h);
- mScaler.setHeight(h);
- float stretch = (float) Math.abs((target - h) / mMaximumStretch);
+ hand = hand < mSmallSize ? mSmallSize : (hand > mLargeSize ? mLargeSize : hand);
+ hand = hand > mNaturalHeight ? mNaturalHeight : hand;
+ if (DEBUG) Log.d(TAG, "scale continues: hand =" + hand);
+ mScaler.setHeight(hand);
+
+ // glow if overscale
+ float stretch = (float) Math.abs((target - hand) / mMaximumStretch);
float strength = 1f / (1f + (float) Math.pow(Math.E, -1 * ((8f * stretch) - 5f)));
if (DEBUG) Log.d(TAG, "stretch: " + stretch + " strength: " + strength);
setGlow(GLOW_BASE + strength * (1f - GLOW_BASE));
@@ -171,7 +189,10 @@
});
}
public void setGlow(float glow) {
- if (!mGlowAnimationSet.isRunning()) {
+ if (!mGlowAnimationSet.isRunning() || glow == 0f) {
+ if (mGlowAnimationSet.isRunning()) {
+ mGlowAnimationSet.cancel();
+ }
if (mCurrViewTopGlow != null && mCurrViewBottomGlow != null) {
if (glow == 0f || mCurrViewTopGlow.getAlpha() == 0f) {
// animate glow in and out
@@ -251,6 +272,7 @@
mScaleAnimation.start();
mStretching = false;
setGlow(0f);
+ if (DEBUG) Log.d(TAG, "scale was finished on view: " + mCurrView);
clearView();
}
@@ -261,12 +283,12 @@
}
private void setView(View v) {
- mCurrView = null;
+ mCurrView = v;
if (v instanceof ViewGroup) {
ViewGroup g = (ViewGroup) v;
mCurrViewTopGlow = g.findViewById(R.id.top_glow);
mCurrViewBottomGlow = g.findViewById(R.id.bottom_glow);
- if (DEBUG) {
+ if (DEBUG) {
String debugLog = "Looking for glows: " +
(mCurrViewTopGlow != null ? "found top " : "didn't find top") +
(mCurrViewBottomGlow != null ? "found bottom " : "didn't find bottom");
diff --git a/packages/SystemUI/src/com/android/systemui/SearchPanelView.java b/packages/SystemUI/src/com/android/systemui/SearchPanelView.java
index f3b9e30..57f15a8 100644
--- a/packages/SystemUI/src/com/android/systemui/SearchPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/SearchPanelView.java
@@ -52,7 +52,6 @@
private boolean mShowing;
private View mSearchTargetsContainer;
private MultiWaveView mMultiWaveView;
- private SearchManager mSearchManager;
public SearchPanelView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
@@ -67,10 +66,30 @@
}
}
- public boolean isSearchAvailable() {
+ private SearchManager mSearchManager;
+
+ public boolean isAssistantAvailable() {
return mSearchManager != null && mSearchManager.getGlobalSearchActivity() != null;
}
+ private void startAssistActivity() {
+ if (mSearchManager != null) {
+ ComponentName globalSearchActivity = mSearchManager.getGlobalSearchActivity();
+ if (globalSearchActivity != null) {
+ Intent intent = new Intent(Intent.ACTION_ASSIST);
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ intent.setPackage(globalSearchActivity.getPackageName());
+ try {
+ mContext.startActivity(intent);
+ } catch (ActivityNotFoundException e) {
+ Slog.w(TAG, "Activity not found for " + intent.getAction());
+ }
+ } else {
+ Slog.w(TAG, "No global search activity");
+ }
+ }
+ }
+
final MultiWaveView.OnTriggerListener mMultiWaveViewListener
= new MultiWaveView.OnTriggerListener() {
@@ -90,29 +109,11 @@
final int resId = mMultiWaveView.getResourceIdForTarget(target);
switch (resId) {
case com.android.internal.R.drawable.ic_lockscreen_search:
- startGlobalSearch();
+ startAssistActivity();
break;
}
mBar.hideSearchPanel();
}
-
- private void startGlobalSearch() {
- if (mSearchManager != null) {
- ComponentName globalSearchActivity = mSearchManager.getGlobalSearchActivity();
- if (globalSearchActivity != null) {
- Intent intent = new Intent(SearchManager.INTENT_ACTION_GLOBAL_SEARCH);
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- intent.setComponent(globalSearchActivity);
- try {
- mContext.startActivity(intent);
- } catch (ActivityNotFoundException e) {
- Slog.w(TAG, "Application not found for action " + intent.getAction());
- }
- } else {
- Slog.w(TAG, "No global search activity");
- }
- }
- }
};
@Override
@@ -145,7 +146,7 @@
}
}
- public void show(boolean show, boolean animate) {
+ public void show(final boolean show, boolean animate) {
if (animate) {
if (mShowing != show) {
mShowing = show;
@@ -155,21 +156,24 @@
mShowing = show;
onAnimationEnd(null);
}
- setVisibility(show ? View.VISIBLE : View.GONE);
- if (show) {
- setFocusable(true);
- setFocusableInTouchMode(true);
- requestFocus();
- }
+ postDelayed(new Runnable() {
+ public void run() {
+ setVisibility(show ? View.VISIBLE : View.INVISIBLE);
+ if (show) {
+ setFocusable(true);
+ setFocusableInTouchMode(true);
+ requestFocus();
+ }
+ }
+ }, show ? 0 : 100);
}
public void hide(boolean animate) {
- if (!animate) {
- setVisibility(View.GONE);
- }
if (mBar != null) {
// This will indirectly cause show(false, ...) to get called
mBar.animateCollapse();
+ } else {
+ setVisibility(View.INVISIBLE);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/SwipeHelper.java b/packages/SystemUI/src/com/android/systemui/SwipeHelper.java
index 414af89..6584c7d 100644
--- a/packages/SystemUI/src/com/android/systemui/SwipeHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/SwipeHelper.java
@@ -74,6 +74,7 @@
private boolean mLongPressSent;
private View.OnLongClickListener mLongPressListener;
private Runnable mWatchLongPress;
+ private long mLongPressTimeout;
public SwipeHelper(int swipeDirection, Callback callback, float densityScale,
float pagingTouchSlop) {
@@ -83,6 +84,8 @@
mVelocityTracker = VelocityTracker.obtain();
mDensityScale = densityScale;
mPagingTouchSlop = pagingTouchSlop;
+
+ mLongPressTimeout = (long) (ViewConfiguration.getLongPressTimeout() * 1.5f); // extra long-press!
}
public void setLongPressListener(View.OnLongClickListener listener) {
@@ -180,7 +183,7 @@
}
}
- private void removeLongPressCallback() {
+ public void removeLongPressCallback() {
if (mWatchLongPress != null) {
mHandler.removeCallbacks(mWatchLongPress);
}
@@ -214,7 +217,7 @@
}
};
}
- mHandler.postDelayed(mWatchLongPress, ViewConfiguration.getLongPressTimeout());
+ mHandler.postDelayed(mWatchLongPress, mLongPressTimeout);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java b/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java
index 492fe4b..e865b9c 100644
--- a/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java
@@ -714,7 +714,9 @@
public void handleSwipe(View view) {
TaskDescription ad = ((ViewHolder) view.getTag()).taskDescription;
if (ad == null) {
- Log.v(TAG, "Not able to find activity description for swiped task");
+ Log.v(TAG, "Not able to find activity description for swiped task; view=" + view +
+ " tag=" + view.getTag());
+ return;
}
if (DEBUG) Log.v(TAG, "Jettison " + ad.getLabel());
mRecentTaskDescriptions.remove(ad);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
index 4125704..f0db2bce 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
@@ -91,6 +91,8 @@
protected RecentsPanelView mRecentsPanel;
protected RecentTasksLoader mRecentTasksLoader;
+ protected PopupMenu mNotificationBlamePopup;
+
// UI-specific methods
/**
@@ -238,9 +240,11 @@
final String packageNameF = (String) v.getTag();
if (packageNameF == null) return false;
if (v.getWindowToken() == null) return false;
- PopupMenu popup = new PopupMenu(mContext, v);
- popup.getMenuInflater().inflate(R.menu.notification_popup_menu, popup.getMenu());
- popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
+ mNotificationBlamePopup = new PopupMenu(mContext, v);
+ mNotificationBlamePopup.getMenuInflater().inflate(
+ R.menu.notification_popup_menu,
+ mNotificationBlamePopup.getMenu());
+ mNotificationBlamePopup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
if (item.getItemId() == R.id.notification_inspect_item) {
startApplicationDetailsActivity(packageNameF);
@@ -251,13 +255,20 @@
return true;
}
});
- popup.show();
+ mNotificationBlamePopup.show();
return true;
}
};
}
+ public void dismissPopups() {
+ if (mNotificationBlamePopup != null) {
+ mNotificationBlamePopup.dismiss();
+ mNotificationBlamePopup = null;
+ }
+ }
+
public void dismissIntruder() {
// pass
}
@@ -397,7 +408,7 @@
break;
case MSG_OPEN_SEARCH_PANEL:
if (DEBUG) Slog.d(TAG, "opening search panel");
- if (mSearchPanelView != null && mSearchPanelView.isSearchAvailable()) {
+ if (mSearchPanelView != null && mSearchPanelView.isAssistantAvailable()) {
mSearchPanelView.show(true, true);
}
break;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/DelegateViewHelper.java b/packages/SystemUI/src/com/android/systemui/statusbar/DelegateViewHelper.java
index f725724..e074a80 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/DelegateViewHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/DelegateViewHelper.java
@@ -16,22 +16,28 @@
package com.android.systemui.statusbar;
+import android.util.Slog;
import android.view.MotionEvent;
import android.view.Surface;
-import android.view.VelocityTracker;
import android.view.View;
+import com.android.systemui.R;
+
public class DelegateViewHelper {
- private static final int VELOCITY_THRESHOLD = 1000;
- private VelocityTracker mVelocityTracker;
private View mDelegateView;
private View mSourceView;
private BaseStatusBar mBar;
private int[] mTempPoint = new int[2];
+ private float[] mDownPoint = new float[2];
private int mOrientation;
+ private float mTriggerThreshhold;
public DelegateViewHelper(View sourceView) {
mSourceView = sourceView;
+ if (mSourceView != null) {
+ mTriggerThreshhold = mSourceView.getContext().getResources()
+ .getDimension(R.dimen.navbar_search_up_threshhold);
+ }
}
public void setDelegateView(View view) {
@@ -49,30 +55,25 @@
public boolean onInterceptTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
- mVelocityTracker = VelocityTracker.obtain();
- break;
- case MotionEvent.ACTION_CANCEL:
- case MotionEvent.ACTION_UP:
- mVelocityTracker.recycle();
- mVelocityTracker = null;
+ mDownPoint[0] = event.getX();
+ mDownPoint[1] = event.getY();
break;
}
- if (mVelocityTracker != null) {
- if (mDelegateView != null && mDelegateView.getVisibility() != View.VISIBLE) {
- mVelocityTracker.addMovement(event);
- mVelocityTracker.computeCurrentVelocity(1000);
+ if (mDelegateView != null) {
+ if (mDelegateView.getVisibility() != View.VISIBLE && event.getAction() != MotionEvent.ACTION_CANCEL) {
final boolean isVertical = (mOrientation == Surface.ROTATION_90
|| mOrientation == Surface.ROTATION_270);
- float velocity = isVertical ? - mVelocityTracker.getXVelocity()
- : - mVelocityTracker.getYVelocity();
- if (velocity > VELOCITY_THRESHOLD) {
- if (mDelegateView != null && mDelegateView.getVisibility() != View.VISIBLE) {
+ final int historySize = event.getHistorySize();
+ for (int k = 0; k < historySize + 1; k++) {
+ float x = k < historySize ? event.getHistoricalX(k) : event.getX();
+ float y = k < historySize ? event.getHistoricalY(k) : event.getY();
+ final float distance = isVertical ? (mDownPoint[0] - x) : (mDownPoint[1] - y);
+ if (distance > mTriggerThreshhold) {
mBar.showSearchPanel();
+ break;
}
}
}
- }
- if (mDelegateView != null) {
mSourceView.getLocationOnScreen(mTempPoint);
float deltaX = mTempPoint[0];
float deltaY = mTempPoint[1];
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/RotationToggle.java b/packages/SystemUI/src/com/android/systemui/statusbar/RotationToggle.java
new file mode 100644
index 0000000..c5a7354
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/RotationToggle.java
@@ -0,0 +1,30 @@
+package com.android.systemui.statusbar;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.widget.CompoundButton;
+
+import com.android.systemui.statusbar.policy.AutoRotateController;
+
+public class RotationToggle extends CompoundButton {
+ AutoRotateController mRotater;
+
+ public RotationToggle(Context context) {
+ super(context);
+ mRotater = new AutoRotateController(context, this);
+ setClickable(true);
+ }
+
+ public RotationToggle(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ mRotater = new AutoRotateController(context, this);
+ setClickable(true);
+ }
+
+ public RotationToggle(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ mRotater = new AutoRotateController(context, this);
+ setClickable(true);
+ }
+
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
index 0125b64..db7969e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -46,6 +46,8 @@
import android.util.DisplayMetrics;
import android.util.Log;
import android.util.Slog;
+import android.util.TypedValue;
+import android.view.Choreographer;
import android.view.Display;
import android.view.Gravity;
import android.view.IWindowManager;
@@ -61,6 +63,8 @@
import android.view.animation.AccelerateInterpolator;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
+import android.widget.CompoundButton;
+import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RemoteViews;
@@ -73,8 +77,11 @@
import com.android.systemui.recent.RecentTasksLoader;
import com.android.systemui.statusbar.BaseStatusBar;
import com.android.systemui.statusbar.NotificationData;
+import com.android.systemui.statusbar.NotificationData.Entry;
+import com.android.systemui.statusbar.RotationToggle;
import com.android.systemui.statusbar.SignalClusterView;
import com.android.systemui.statusbar.StatusBarIconView;
+import com.android.systemui.statusbar.policy.AutoRotateController;
import com.android.systemui.statusbar.policy.BatteryController;
import com.android.systemui.statusbar.policy.DateView;
import com.android.systemui.statusbar.policy.IntruderAlertView;
@@ -99,12 +106,11 @@
= "com.android.internal.policy.statusbar.START";
private static final boolean ENABLE_INTRUDERS = false;
+ private static final boolean DIM_BEHIND_EXPANDED_PANEL = false;
static final int EXPANDED_LEAVE_ALONE = -10000;
static final int EXPANDED_FULL_OPEN = -10001;
- private static final int MSG_ANIMATE = 100;
- private static final int MSG_ANIMATE_REVEAL = 101;
private static final int MSG_OPEN_NOTIFICATION_PANEL = 1000;
private static final int MSG_CLOSE_NOTIFICATION_PANEL = 1001;
private static final int MSG_SHOW_INTRUDER = 1002;
@@ -116,6 +122,9 @@
private static final boolean CLOSE_PANEL_WHEN_EMPTIED = true;
+ private static final int NOTIFICATION_PRIORITY_MULTIPLIER = 10; // see NotificationManagerService
+ private static final int HIDE_ICONS_BELOW_SCORE = Notification.PRIORITY_LOW * NOTIFICATION_PRIORITY_MULTIPLIER;
+
// fling gesture tuning parameters, scaled to display density
private float mSelfExpandVelocityPx; // classic value: 2000px/s
private float mSelfCollapseVelocityPx; // classic value: 2000px/s (will be negated to collapse "up")
@@ -142,7 +151,7 @@
IWindowManager mWindowManager;
- View mStatusBarWindow;
+ StatusBarWindowView mStatusBarWindow;
PhoneStatusBarView mStatusBarView;
int mPixelFormat;
@@ -158,9 +167,13 @@
View mNotificationPanel; // the sliding/resizing panel within the notification window
ScrollView mScrollView;
View mExpandedContents;
+ int mNotificationPanelMarginBottomPx, mNotificationPanelMarginLeftPx;
+ int mNotificationPanelGravity;
+
// top bar
View mClearButton;
View mSettingsButton;
+ RotationToggle mRotationButton;
// drag bar
CloseDragHandle mCloseView;
@@ -198,14 +211,13 @@
boolean mTracking;
VelocityTracker mVelocityTracker;
- static final int ANIM_FRAME_DURATION = (1000/60);
-
+ Choreographer mChoreographer;
boolean mAnimating;
- long mCurAnimationTime;
+ boolean mClosing; // only valid when mAnimating; indicates the initial acceleration
float mAnimY;
float mAnimVel;
float mAnimAccel;
- long mAnimLastTime;
+ long mAnimLastTimeNanos;
boolean mAnimatingReveal = false;
int mViewDelta;
int[] mAbsPos = new int[2];
@@ -274,13 +286,38 @@
mIconSize = res.getDimensionPixelSize(com.android.internal.R.dimen.status_bar_icon_size);
- mStatusBarWindow = View.inflate(context,
+ mStatusBarWindow = (StatusBarWindowView) View.inflate(context,
R.layout.super_status_bar, null);
if (DEBUG) {
mStatusBarWindow.setBackgroundColor(0x6000FF80);
}
+ mStatusBarWindow.mService = this;
+ mStatusBarWindow.setOnTouchListener(new View.OnTouchListener() {
+ @Override
+ public boolean onTouch(View v, MotionEvent event) {
+ if (event.getAction() == MotionEvent.ACTION_DOWN) {
+ if (mExpanded && !mAnimating) {
+ animateCollapse();
+ }
+ }
+ return true;
+ }});
+
mStatusBarView = (PhoneStatusBarView) mStatusBarWindow.findViewById(R.id.status_bar);
mNotificationPanel = mStatusBarWindow.findViewById(R.id.notification_panel);
+ // don't allow clicks on the panel to pass through to the background where they will cause the panel to close
+ mNotificationPanel.setOnTouchListener(new View.OnTouchListener() {
+ @Override
+ public boolean onTouch(View v, MotionEvent event) {
+ return true;
+ }
+ });
+
+ if (!ActivityManager.isHighEndGfx(mDisplay)) {
+ mStatusBarWindow.setBackground(null);
+ mNotificationPanel.setBackgroundColor(context.getResources().getColor(
+ R.color.notification_panel_solid_background));
+ }
if (ENABLE_INTRUDERS) {
mIntruderAlertView = (IntruderAlertView) View.inflate(context, R.layout.intruder_alert, null);
@@ -290,6 +327,8 @@
mStatusBarView.mService = this;
+ mChoreographer = Choreographer.getInstance();
+
try {
boolean showNav = mWindowManager.hasNavigationBar();
if (DEBUG) Slog.v(TAG, "hasNavigationBar=" + showNav);
@@ -324,6 +363,8 @@
mDateView = (DateView)mStatusBarWindow.findViewById(R.id.date);
mSettingsButton = mStatusBarWindow.findViewById(R.id.settings_button);
mSettingsButton.setOnClickListener(mSettingsButtonListener);
+ mRotationButton = (RotationToggle) mStatusBarWindow.findViewById(R.id.rotation_lock_button);
+
mScrollView = (ScrollView)mStatusBarWindow.findViewById(R.id.scroll);
mScrollView.setVerticalScrollBarEnabled(false); // less drawing during pulldowns
@@ -431,7 +472,7 @@
@Override
protected void updateSearchPanel() {
super.updateSearchPanel();
- mSearchPanelView.setStatusBarView(mStatusBarView);
+ mSearchPanelView.setStatusBarView(mNavigationBarView);
mNavigationBarView.setDelegateView(mSearchPanelView);
}
@@ -441,7 +482,6 @@
WindowManager.LayoutParams lp =
(android.view.WindowManager.LayoutParams) mNavigationBarView.getLayoutParams();
lp.flags &= ~WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
- lp.flags &= ~WindowManager.LayoutParams.FLAG_SLIPPERY;
WindowManagerImpl.getDefault().updateViewLayout(mNavigationBarView, lp);
}
@@ -451,7 +491,6 @@
WindowManager.LayoutParams lp =
(android.view.WindowManager.LayoutParams) mNavigationBarView.getLayoutParams();
lp.flags |= WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
- lp.flags |= WindowManager.LayoutParams.FLAG_SLIPPERY;
WindowManagerImpl.getDefault().updateViewLayout(mNavigationBarView, lp);
}
@@ -532,8 +571,7 @@
| WindowManager.LayoutParams.FLAG_TOUCHABLE_WHEN_WAKING
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
- | WindowManager.LayoutParams.FLAG_SPLIT_TOUCH
- | WindowManager.LayoutParams.FLAG_SLIPPERY,
+ | WindowManager.LayoutParams.FLAG_SPLIT_TOUCH,
PixelFormat.OPAQUE);
// this will allow the navbar to run in an overlay on devices that support this
if (ActivityManager.isHighEndGfx(mDisplay)) {
@@ -889,7 +927,10 @@
ArrayList<View> toShow = new ArrayList<View>();
for (int i=0; i<N; i++) {
- toShow.add(mNotificationData.get(N-i-1).icon);
+ Entry ent = mNotificationData.get(N-i-1);
+ if (ent.notification.score >= HIDE_ICONS_BELOW_SCORE) {
+ toShow.add(ent.icon);
+ }
}
ArrayList<View> toRemove = new ArrayList<View>();
@@ -1067,12 +1108,6 @@
public void handleMessage(Message m) {
super.handleMessage(m);
switch (m.what) {
- case MSG_ANIMATE:
- doAnimation();
- break;
- case MSG_ANIMATE_REVEAL:
- doRevealAnimation();
- break;
case MSG_OPEN_NOTIFICATION_PANEL:
animateExpand();
break;
@@ -1090,6 +1125,20 @@
}
}
+ final Runnable mAnimationCallback = new Runnable() {
+ @Override
+ public void run() {
+ doAnimation(mChoreographer.getFrameTimeNanos());
+ }
+ };
+
+ final Runnable mRevealAnimationCallback = new Runnable() {
+ @Override
+ public void run() {
+ doRevealAnimation(mChoreographer.getFrameTimeNanos());
+ }
+ };
+
View.OnFocusChangeListener mFocusChangeListener = new View.OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
// Because 'v' is a ViewGroup, all its children will be (un)selected
@@ -1111,10 +1160,13 @@
// Expand the window to encompass the full screen in anticipation of the drag.
// This is only possible to do atomically because the status bar is at the top of the screen!
WindowManager.LayoutParams lp = (WindowManager.LayoutParams) mStatusBarWindow.getLayoutParams();
- lp.height = mDisplayMetrics.heightPixels;
+ lp.flags &= (~WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
+ lp.height = ViewGroup.LayoutParams.MATCH_PARENT;
final WindowManager wm = WindowManagerImpl.getDefault();
wm.updateViewLayout(mStatusBarWindow, lp);
+ mStatusBarWindow.requestFocus(View.FOCUS_FORWARD);
+
visibilityChanged(true);
}
@@ -1162,7 +1214,7 @@
if (mAnimating) {
y = (int)mAnimY;
} else {
- y = mDisplayMetrics.heightPixels-1;
+ y = getExpandedViewMaxHeight()-1;
}
// Let the fling think that we're open so it goes in the right direction
// and doesn't try to re-open the windowshade.
@@ -1201,6 +1253,7 @@
// Shrink the window to the size of the status bar only
WindowManager.LayoutParams lp = (WindowManager.LayoutParams) mStatusBarWindow.getLayoutParams();
lp.height = getStatusBarHeight();
+ lp.flags |= (WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
final WindowManager wm = WindowManagerImpl.getDefault();
wm.updateViewLayout(mStatusBarWindow, lp);
@@ -1212,35 +1265,64 @@
return;
}
mExpanded = false;
+
+ // Close any "App info" popups that might have snuck on-screen
+ dismissPopups();
+
if (mPostCollapseCleanup != null) {
mPostCollapseCleanup.run();
mPostCollapseCleanup = null;
}
}
- void doAnimation() {
+ void resetLastAnimTime() {
+ mAnimLastTimeNanos = System.nanoTime();
+ if (SPEW) {
+ Throwable t = new Throwable();
+ t.fillInStackTrace();
+ Slog.d(TAG, "resetting last anim time=" + mAnimLastTimeNanos, t);
+ }
+ }
+
+ void doAnimation(long frameTimeNanos) {
if (mAnimating) {
- if (SPEW) Slog.d(TAG, "doAnimation");
+ if (SPEW) Slog.d(TAG, "doAnimation dt=" + (frameTimeNanos - mAnimLastTimeNanos));
if (SPEW) Slog.d(TAG, "doAnimation before mAnimY=" + mAnimY);
- incrementAnim();
- if (SPEW) Slog.d(TAG, "doAnimation after mAnimY=" + mAnimY);
- if (mAnimY >= mDisplayMetrics.heightPixels-1) {
+ incrementAnim(frameTimeNanos);
+ if (SPEW) {
+ Slog.d(TAG, "doAnimation after mAnimY=" + mAnimY);
+ Slog.d(TAG, "doAnimation expandedViewMax=" + getExpandedViewMaxHeight());
+ }
+
+ if (mAnimY >= getExpandedViewMaxHeight()-1 && !mClosing) {
if (SPEW) Slog.d(TAG, "Animation completed to expanded state.");
mAnimating = false;
updateExpandedViewPos(EXPANDED_FULL_OPEN);
performExpand();
+ return;
}
- else if (mAnimY < getStatusBarHeight()) {
+
+ if (mAnimY == 0 && mAnimAccel == 0 && mClosing) {
if (SPEW) Slog.d(TAG, "Animation completed to collapsed state.");
mAnimating = false;
- updateExpandedViewPos(0);
performCollapse();
+ return;
}
- else {
- updateExpandedViewPos((int)mAnimY);
- mCurAnimationTime += ANIM_FRAME_DURATION;
- mHandler.sendMessageAtTime(mHandler.obtainMessage(MSG_ANIMATE), mCurAnimationTime);
+
+ if (mAnimY < getStatusBarHeight() && mClosing) {
+ // Draw one more frame with the bar positioned at the top of the screen
+ // before ending the animation so that the user sees the bar in
+ // its final position. The call to performCollapse() causes a window
+ // relayout which takes time and might cause the animation to skip
+ // on the very last frame before the bar disappears if we did it now.
+ mAnimY = 0;
+ mAnimAccel = 0;
+ mAnimVel = 0;
}
+
+ updateExpandedViewPos((int)mAnimY);
+ mChoreographer.postCallback(Choreographer.CALLBACK_ANIMATION,
+ mAnimationCallback, null);
}
}
@@ -1249,33 +1331,36 @@
mPile.setLayerType(View.LAYER_TYPE_NONE, null);
mVelocityTracker.recycle();
mVelocityTracker = null;
+ mCloseView.setPressed(false);
}
- void incrementAnim() {
- long now = SystemClock.uptimeMillis();
- float t = ((float)(now - mAnimLastTime)) / 1000; // ms -> s
+ void incrementAnim(long frameTimeNanos) {
+ final long deltaNanos = Math.max(frameTimeNanos - mAnimLastTimeNanos, 0);
+ final float t = deltaNanos * 0.000000001f; // ns -> s
final float y = mAnimY;
final float v = mAnimVel; // px/s
final float a = mAnimAccel; // px/s/s
mAnimY = y + (v*t) + (0.5f*a*t*t); // px
mAnimVel = v + (a*t); // px/s
- mAnimLastTime = now; // ms
+ mAnimLastTimeNanos = frameTimeNanos; // ns
//Slog.d(TAG, "y=" + y + " v=" + v + " a=" + a + " t=" + t + " mAnimY=" + mAnimY
// + " mAnimAccel=" + mAnimAccel);
}
- void doRevealAnimation() {
+ void doRevealAnimation(long frameTimeNanos) {
+ if (SPEW) {
+ Slog.d(TAG, "doRevealAnimation: dt=" + (frameTimeNanos - mAnimLastTimeNanos));
+ }
final int h = getCloseViewHeight() + getStatusBarHeight();
if (mAnimatingReveal && mAnimating && mAnimY < h) {
- incrementAnim();
+ incrementAnim(frameTimeNanos);
if (mAnimY >= h) {
mAnimY = h;
updateExpandedViewPos((int)mAnimY);
} else {
updateExpandedViewPos((int)mAnimY);
- mCurAnimationTime += ANIM_FRAME_DURATION;
- mHandler.sendMessageAtTime(mHandler.obtainMessage(MSG_ANIMATE_REVEAL),
- mCurAnimationTime);
+ mChoreographer.postCallback(Choreographer.CALLBACK_ANIMATION,
+ mRevealAnimationCallback, null);
}
}
}
@@ -1285,6 +1370,8 @@
Slog.d(TAG, "panel: beginning to track the user's touch, y=" + y + " opening=" + opening);
}
+ mCloseView.setPressed(true);
+
mTracking = true;
mPile.setLayerType(View.LAYER_TYPE_HARDWARE, null);
mVelocityTracker = VelocityTracker.obtain();
@@ -1295,20 +1382,20 @@
updateExpandedViewPos((int)mAnimY);
mAnimating = true;
mAnimatingReveal = true;
- mHandler.removeMessages(MSG_ANIMATE);
- mHandler.removeMessages(MSG_ANIMATE_REVEAL);
- long now = SystemClock.uptimeMillis();
- mAnimLastTime = now;
- mCurAnimationTime = now + ANIM_FRAME_DURATION;
- mAnimating = true;
- mHandler.sendMessageAtTime(mHandler.obtainMessage(MSG_ANIMATE_REVEAL),
- mCurAnimationTime);
+ resetLastAnimTime();
+ mChoreographer.removeCallbacks(Choreographer.CALLBACK_ANIMATION,
+ mAnimationCallback, null);
+ mChoreographer.removeCallbacks(Choreographer.CALLBACK_ANIMATION,
+ mRevealAnimationCallback, null);
+ mChoreographer.postCallback(Choreographer.CALLBACK_ANIMATION,
+ mRevealAnimationCallback, null);
makeExpandedVisible();
} else {
// it's open, close it?
if (mAnimating) {
mAnimating = false;
- mHandler.removeMessages(MSG_ANIMATE);
+ mChoreographer.removeCallbacks(Choreographer.CALLBACK_ANIMATION,
+ mAnimationCallback, null);
}
updateExpandedViewPos(y + mViewDelta);
}
@@ -1329,7 +1416,7 @@
if (mExpanded) {
if (!always && (
vel > mFlingCollapseMinVelocityPx
- || (y > (mDisplayMetrics.heightPixels*(1f-mCollapseMinDisplayFraction)) &&
+ || (y > (getExpandedViewMaxHeight()*(1f-mCollapseMinDisplayFraction)) &&
vel > -mFlingExpandMinVelocityPx))) {
// We are expanded, but they didn't move sufficiently to cause
// us to retract. Animate back to the expanded position.
@@ -1348,7 +1435,7 @@
} else {
if (always || (
vel > mFlingExpandMinVelocityPx
- || (y > (mDisplayMetrics.heightPixels*(1f-mExpandMinDisplayFraction)) &&
+ || (y > (getExpandedViewMaxHeight()*(1f-mExpandMinDisplayFraction)) &&
vel > -mFlingCollapseMinVelocityPx))) {
// We are collapsed, and they moved enough to allow us to
// expand. Animate in the notifications.
@@ -1369,13 +1456,16 @@
//Slog.d(TAG, "mAnimY=" + mAnimY + " mAnimVel=" + mAnimVel
// + " mAnimAccel=" + mAnimAccel);
- long now = SystemClock.uptimeMillis();
- mAnimLastTime = now;
- mCurAnimationTime = now + ANIM_FRAME_DURATION;
+ resetLastAnimTime();
mAnimating = true;
- mHandler.removeMessages(MSG_ANIMATE);
- mHandler.removeMessages(MSG_ANIMATE_REVEAL);
- mHandler.sendMessageAtTime(mHandler.obtainMessage(MSG_ANIMATE), mCurAnimationTime);
+ mClosing = mAnimAccel < 0;
+
+ mChoreographer.removeCallbacks(Choreographer.CALLBACK_ANIMATION,
+ mAnimationCallback, null);
+ mChoreographer.removeCallbacks(Choreographer.CALLBACK_ANIMATION,
+ mRevealAnimationCallback, null);
+ mChoreographer.postCallback(Choreographer.CALLBACK_ANIMATION,
+ mAnimationCallback, null);
stopTracking();
}
@@ -1408,11 +1498,12 @@
if (!mExpanded) {
mViewDelta = statusBarSize - y;
} else {
-// mCloseView.getLocationOnScreen(mAbsPos)...?
-// mViewDelta = mAbsPos[1] + mTrackingView.getHeight() - y;
+ mCloseView.getLocationOnScreen(mAbsPos);
+ mViewDelta = mAbsPos[1] + statusBarSize + getCloseViewHeight() - y; // XXX: not closeViewHeight, but paddingBottom from the 9patch
}
if ((!mExpanded && y < hitSize) ||
- (mExpanded && y > (mDisplayMetrics.heightPixels-hitSize))) {
+ // @@ add taps outside the panel if it's not full-screen
+ (mExpanded && y > (getExpandedViewMaxHeight()-hitSize))) {
// We drop events at the edge of the screen to make the windowshade come
// down by accident less, especially when pushing open a device with a keyboard
@@ -1756,8 +1847,7 @@
pw.println(" mAnimating=" + mAnimating
+ ", mAnimY=" + mAnimY + ", mAnimVel=" + mAnimVel
+ ", mAnimAccel=" + mAnimAccel);
- pw.println(" mCurAnimationTime=" + mCurAnimationTime
- + " mAnimLastTime=" + mAnimLastTime);
+ pw.println(" mAnimLastTimeNanos=" + mAnimLastTimeNanos);
pw.println(" mAnimatingReveal=" + mAnimatingReveal
+ " mViewDelta=" + mViewDelta);
pw.println(" mDisplayMetrics=" + mDisplayMetrics);
@@ -1864,15 +1954,22 @@
return a < 0f ? 0f : (a > 1f ? 1f : a);
}
+ int getExpandedViewMaxHeight() {
+ return mDisplayMetrics.heightPixels - mNotificationPanelMarginBottomPx;
+ }
+
void updateExpandedViewPos(int expandedPosition) {
if (SPEW) {
Slog.d(TAG, "updateExpandedViewPos before expandedPosition=" + expandedPosition
//+ " mTrackingParams.y=" + ((mTrackingParams == null) ? "?" : mTrackingParams.y)
- + " mTrackingPosition=" + mTrackingPosition);
+ + " mTrackingPosition=" + mTrackingPosition
+ + " gravity=" + mNotificationPanelGravity);
}
int panelh = 0;
- final int disph = mDisplayMetrics.heightPixels;
+ final boolean portrait = mDisplayMetrics.heightPixels > mDisplayMetrics.widthPixels;
+
+ final int disph = getExpandedViewMaxHeight();
// If the expanded view is not visible, make sure they're still off screen.
// Maybe the view was resized.
@@ -1906,113 +2003,28 @@
mTrackingPosition = panelh;
- final View cropView = mNotificationPanel;
- ViewGroup.LayoutParams lp = cropView.getLayoutParams();
+ FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) mNotificationPanel.getLayoutParams();
lp.height = panelh;
+ lp.gravity = mNotificationPanelGravity;
+ lp.leftMargin = mNotificationPanelMarginLeftPx;
if (SPEW) {
- Slog.v(TAG, "updated cropView height=" + panelh);
+ Slog.v(TAG, "updated cropView height=" + panelh + " grav=" + lp.gravity);
}
- cropView.setLayoutParams(lp);
- // woo, special effects
- final int barh = getCloseViewHeight() + getStatusBarHeight();
- final float frac = saturate((float)(panelh - barh) / (disph - barh));
- final int color = ((int)(0xB0 * Math.sin(frac * 1.57f))) << 24;
- mStatusBarWindow.setBackgroundColor(color);
+ mNotificationPanel.setLayoutParams(lp);
-// Slog.d(TAG, String.format("updateExpanded: pos=%d frac=%.2f col=0x%08x", pos, frac, color));
-
-// if (mExpandedParams != null) {
-// if (mCloseView.getWindowVisibility() == View.VISIBLE) {
-// mCloseView.getLocationInWindow(mPositionTmp);
-// final int closePos = mPositionTmp[1];
-//
-// mExpandedContents.getLocationInWindow(mPositionTmp);
-// final int contentsBottom = mPositionTmp[1] + mExpandedContents.getHeight();
-//
-// mExpandedParams.y = pos + mTrackingView.getHeight()
-// - (mTrackingParams.height-closePos) - contentsBottom;
-//
-// if (SPEW) {
-// Slog.d(PhoneStatusBar.TAG,
-// "pos=" + pos +
-// " trackingHeight=" + mTrackingView.getHeight() +
-// " (trackingParams.height - closePos)=" +
-// (mTrackingParams.height - closePos) +
-// " contentsBottom=" + contentsBottom);
-// }
-//
-// } else {
-// // If the tracking view is not yet visible, then we can't have
-// // a good value of the close view location. We need to wait for
-// // it to be visible to do a layout.
-// mExpandedParams.y = -mDisplayMetrics.heightPixels;
-// }
-// int max = h;
-// if (mExpandedParams.y > max) {
-// mExpandedParams.y = max;
-// }
-// int min = mTrackingPosition;
-// if (mExpandedParams.y < min) {
-// mExpandedParams.y = min;
-// }
-//
-// boolean visible = (mTrackingPosition + mTrackingView.getHeight()) > h;
-// if (!visible) {
-// // if the contents aren't visible, move the expanded view way off screen
-// // because the window itself extends below the content view.
-// mExpandedParams.y = -disph;
-// }
-// mExpandedDialog.getWindow().setAttributes(mExpandedParams);
-//
-// // As long as this isn't just a repositioning that's not supposed to affect
-// // the user's perception of what's showing, call to say that the visibility
-// // has changed. (Otherwise, someone else will call to do that).
-// if (expandedPosition != EXPANDED_LEAVE_ALONE) {
-// if (SPEW) Slog.d(TAG, "updateExpandedViewPos visibilityChanged(" + visible + ")");
-// visibilityChanged(visible);
-// }
-// }
-//
-// if (SPEW) {
-// Slog.d(TAG, "updateExpandedViewPos after expandedPosition=" + expandedPosition
-// + " mTrackingParams.y=" + mTrackingParams.y
-// + " mTrackingPosition=" + mTrackingPosition
-// + " mExpandedParams.y=" + mExpandedParams.y
-// + " mExpandedParams.height=" + mExpandedParams.height);
-// }
- }
-
- int getExpandedHeight() {
- return mDisplayMetrics.heightPixels;
+ if (DIM_BEHIND_EXPANDED_PANEL && ActivityManager.isHighEndGfx(mDisplay)) {
+ // woo, special effects
+ final int barh = getCloseViewHeight() + getStatusBarHeight();
+ final float frac = saturate((float)(panelh - barh) / (disph - barh));
+ final int color = ((int)(0xB0 * Math.sin(frac * 1.57f))) << 24;
+ mStatusBarWindow.setBackgroundColor(color);
+ }
}
void updateDisplaySize() {
mDisplay.getMetrics(mDisplayMetrics);
-// if (DEBUG) {
-// Slog.d(TAG, "updateDisplaySize: " + mDisplayMetrics);
-// }
-// updateExpandedSize();
}
-// void updateExpandedSize() {
-// if (DEBUG) {
-// Slog.d(TAG, "updateExpandedSize()");
-// }
-// if (mStatusBarWindow != null && mDisplayMetrics != null) {
-// mExpandedParams.width = mDisplayMetrics.widthPixels;
-// mExpandedParams.height = getExpandedHeight();
-// if (!mExpandedVisible) {
-// updateExpandedInvisiblePosition();
-// } else {
-// mExpandedDialog.getWindow().setAttributes(mExpandedParams);
-// }
-// if (DEBUG) {
-// Slog.d(TAG, "updateExpandedSize: height=" + mExpandedParams.height + " " +
-// (mExpandedVisible ? "VISIBLE":"INVISIBLE"));
-// }
-// }
-// }
-
void performDisableActions(int net) {
int old = mDisabled;
int diff = net ^ old;
@@ -2152,8 +2164,9 @@
animateCollapse(excludeRecents);
}
else if (Intent.ACTION_CONFIGURATION_CHANGED.equals(action)) {
- repositionNavigationBar();
updateResources();
+ repositionNavigationBar();
+ updateExpandedViewPos(EXPANDED_LEAVE_ALONE);
}
}
};
@@ -2228,6 +2241,15 @@
mCollapseAccelPx = res.getDimension(R.dimen.collapse_accel);
mFlingGestureMaxXVelocityPx = res.getDimension(R.dimen.fling_gesture_max_x_velocity);
+
+ mNotificationPanelMarginBottomPx
+ = (int) res.getDimension(R.dimen.notification_panel_margin_bottom);
+ mNotificationPanelMarginLeftPx
+ = (int) res.getDimension(R.dimen.notification_panel_margin_left);
+ mNotificationPanelGravity = res.getInteger(R.integer.notification_panel_layout_gravity);
+ if (mNotificationPanelGravity <= 0) {
+ mNotificationPanelGravity = Gravity.CENTER_VERTICAL | Gravity.TOP;
+ }
if (false) Slog.v(TAG, "updateResources");
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java
index 5f18b5d..374226d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java
@@ -122,8 +122,7 @@
action.equals(BluetoothAdapter.ACTION_CONNECTION_STATE_CHANGED)) {
updateBluetooth(intent);
}
- else if (action.equals(AudioManager.RINGER_MODE_CHANGED_ACTION) ||
- action.equals(AudioManager.VIBRATE_SETTING_CHANGED_ACTION)) {
+ else if (action.equals(AudioManager.RINGER_MODE_CHANGED_ACTION)) {
updateVolume();
}
else if (action.equals(TelephonyIntents.ACTION_SIM_STATE_CHANGED)) {
@@ -144,7 +143,6 @@
filter.addAction(Intent.ACTION_ALARM_CHANGED);
filter.addAction(Intent.ACTION_SYNC_STATE_CHANGED);
filter.addAction(AudioManager.RINGER_MODE_CHANGED_ACTION);
- filter.addAction(AudioManager.VIBRATE_SETTING_CHANGED_ACTION);
filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
filter.addAction(BluetoothAdapter.ACTION_CONNECTION_STATE_CHANGED);
filter.addAction(TelephonyIntents.ACTION_SIM_STATE_CHANGED);
@@ -238,7 +236,7 @@
final int iconId;
String contentDescription = null;
- if (audioManager.shouldVibrate(AudioManager.VIBRATE_TYPE_RINGER)) {
+ if (ringerMode == AudioManager.RINGER_MODE_VIBRATE) {
iconId = R.drawable.stat_sys_ringer_vibrate;
contentDescription = mContext.getString(R.string.accessibility_ringer_vibrate);
} else {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java
index 16071d4..a8f5c64 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java
@@ -22,6 +22,7 @@
import android.graphics.Rect;
import android.os.SystemClock;
import android.util.AttributeSet;
+import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java
new file mode 100644
index 0000000..0fc5b4d
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2012 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.systemui.statusbar.phone;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.KeyEvent;
+import android.widget.FrameLayout;
+import android.widget.TextSwitcher;
+
+
+public class StatusBarWindowView extends FrameLayout
+{
+ PhoneStatusBar mService;
+
+ public StatusBarWindowView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ @Override
+ public boolean dispatchKeyEvent(KeyEvent event) {
+ boolean down = event.getAction() == KeyEvent.ACTION_DOWN;
+ switch (event.getKeyCode()) {
+ case KeyEvent.KEYCODE_BACK:
+ if (!down) {
+ mService.animateCollapse();
+ }
+ return true;
+ }
+ return super.dispatchKeyEvent(event);
+ }
+}
+
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NotificationRowLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NotificationRowLayout.java
index 93803d9..03dfd1c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NotificationRowLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NotificationRowLayout.java
@@ -32,6 +32,7 @@
import android.view.View;
import android.view.ViewConfiguration;
import android.view.ViewGroup;
+import android.view.inputmethod.InputMethodManager;
import android.widget.LinearLayout;
import com.android.systemui.ExpandHelper;
@@ -108,6 +109,14 @@
mSwipeHelper.setLongPressListener(listener);
}
+ @Override
+ public void onWindowFocusChanged(boolean hasWindowFocus) {
+ super.onWindowFocusChanged(hasWindowFocus);
+ if (!hasWindowFocus) {
+ mSwipeHelper.removeLongPressCallback();
+ }
+ }
+
public void setAnimateBounds(boolean anim) {
mAnimateBounds = anim;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/VolumeController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/VolumeController.java
index c9da01a..43cb85e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/VolumeController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/VolumeController.java
@@ -20,6 +20,7 @@
import android.content.Context;
import android.os.RemoteException;
import android.os.ServiceManager;
+import android.os.Vibrator;
import android.media.AudioManager;
import android.provider.Settings;
import android.util.Slog;
@@ -36,10 +37,16 @@
private boolean mMute;
private int mVolume;
+ // Is there a vibrator
+ private final boolean mHasVibrator;
public VolumeController(Context context, ToggleSlider control) {
mContext = context;
mControl = control;
+
+ Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
+ mHasVibrator = vibrator == null ? false : vibrator.hasVibrator();
+
mAudioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
mMute = mAudioManager.getRingerMode() != AudioManager.RINGER_MODE_NORMAL;
@@ -54,10 +61,8 @@
public void onChanged(ToggleSlider view, boolean tracking, boolean mute, int level) {
if (!tracking) {
if (mute) {
- boolean vibeInSilent = (1 == Settings.System.getInt(mContext.getContentResolver(),
- Settings.System.VIBRATE_IN_SILENT, 1));
mAudioManager.setRingerMode(
- vibeInSilent ? AudioManager.RINGER_MODE_VIBRATE
+ mHasVibrator ? AudioManager.RINGER_MODE_VIBRATE
: AudioManager.RINGER_MODE_SILENT);
} else {
mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java
index f3a10e9..b0830ee 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java
@@ -67,9 +67,11 @@
import com.android.systemui.recent.RecentTasksLoader;
import com.android.systemui.recent.RecentsPanelView;
import com.android.systemui.statusbar.BaseStatusBar;
+import com.android.systemui.statusbar.DoNotDisturb;
import com.android.systemui.statusbar.NotificationData;
import com.android.systemui.statusbar.SignalClusterView;
import com.android.systemui.statusbar.StatusBarIconView;
+import com.android.systemui.statusbar.NotificationData.Entry;
import com.android.systemui.statusbar.policy.BatteryController;
import com.android.systemui.statusbar.policy.BluetoothController;
import com.android.systemui.statusbar.policy.CompatModeButton;
@@ -111,6 +113,9 @@
final static int NOTIFICATION_PEEK_HOLD_THRESH = 200; // ms
final static int NOTIFICATION_PEEK_FADE_DELAY = 3000; // ms
+ private static final int NOTIFICATION_PRIORITY_MULTIPLIER = 10; // see NotificationManagerService
+ private static final int HIDE_ICONS_BELOW_SCORE = Notification.PRIORITY_LOW * NOTIFICATION_PRIORITY_MULTIPLIER;
+
// The height of the bar, as definied by the build. It may be taller if we're plugged
// into hdmi.
int mNaturalBarHeight = -1;
@@ -161,6 +166,7 @@
BluetoothController mBluetoothController;
LocationController mLocationController;
NetworkController mNetworkController;
+ DoNotDisturb mDoNotDisturb;
ViewGroup mBarContents;
@@ -268,7 +274,7 @@
WindowManager.LayoutParams lp = mNotificationPanelParams = new WindowManager.LayoutParams(
res.getDimensionPixelSize(R.dimen.notification_panel_width),
getNotificationPanelHeight(),
- WindowManager.LayoutParams.TYPE_STATUS_BAR_PANEL,
+ WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANEL,
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
| WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
| WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM
@@ -516,6 +522,9 @@
// The icons
mLocationController = new LocationController(mContext); // will post a notification
+ // watch the PREF_DO_NOT_DISTURB and convert to appropriate disable() calls
+ mDoNotDisturb = new DoNotDisturb(mContext);
+
mBatteryController = new BatteryController(mContext);
mBatteryController.addIconView((ImageView)sb.findViewById(R.id.battery));
mBluetoothController = new BluetoothController(mContext);
@@ -636,7 +645,7 @@
WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
(int) mContext.getResources().getDimension(R.dimen.status_bar_recents_width),
ViewGroup.LayoutParams.MATCH_PARENT,
- WindowManager.LayoutParams.TYPE_STATUS_BAR_PANEL,
+ WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANEL,
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
| WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM
| WindowManager.LayoutParams.FLAG_SPLIT_TOUCH
@@ -695,7 +704,6 @@
WindowManager.LayoutParams lp =
(android.view.WindowManager.LayoutParams) mStatusBarView.getLayoutParams();
lp.flags &= ~WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
- lp.flags &= ~WindowManager.LayoutParams.FLAG_SLIPPERY;
WindowManagerImpl.getDefault().updateViewLayout(mStatusBarView, lp);
}
@@ -705,7 +713,6 @@
WindowManager.LayoutParams lp =
(android.view.WindowManager.LayoutParams) mStatusBarView.getLayoutParams();
lp.flags |= WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
- lp.flags |= WindowManager.LayoutParams.FLAG_SLIPPERY;
WindowManagerImpl.getDefault().updateViewLayout(mStatusBarView, lp);
}
@@ -1068,8 +1075,8 @@
mTicker.halt();
}
}
- if ((diff & (StatusBarManager.DISABLE_RECENT
- | StatusBarManager.DISABLE_BACK
+ if ((diff & (StatusBarManager.DISABLE_RECENT
+ | StatusBarManager.DISABLE_BACK
| StatusBarManager.DISABLE_HOME)) != 0) {
setNavigationVisibility(state);
@@ -1713,9 +1720,12 @@
if (mInputMethodSwitchButton.getVisibility() != View.GONE) maxNotificationIconsCount --;
if (mCompatModeButton.getVisibility() != View.GONE) maxNotificationIconsCount --;
- for (int i=0; i< maxNotificationIconsCount; i++) {
- if (i>=N) break;
- toShow.add(mNotificationData.get(N-i-1).icon);
+ for (int i=0; toShow.size()< maxNotificationIconsCount; i++) {
+ if (i >= N) break;
+ Entry ent = mNotificationData.get(N-i-1);
+ if (ent.notification.score >= HIDE_ICONS_BELOW_SCORE) {
+ toShow.add(ent.icon);
+ }
}
ArrayList<View> toRemove = new ArrayList<View>();
@@ -1764,7 +1774,8 @@
for (int i=0; i<toShow.size(); i++) {
View v = toShow.get(i);
if (v.getParent() == null) {
- mPile.addView(v, N-1-i); // the notification panel has newest at the bottom
+ // the notification panel has the most important things at the bottom
+ mPile.addView(v, N-1-i);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletTicker.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletTicker.java
index 754441c..d4ebe6d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletTicker.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletTicker.java
@@ -223,7 +223,7 @@
windowFlags |= WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE;
}
WindowManager.LayoutParams lp = new WindowManager.LayoutParams(width, mLargeIconHeight,
- WindowManager.LayoutParams.TYPE_STATUS_BAR_PANEL, windowFlags,
+ WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANEL, windowFlags,
PixelFormat.TRANSLUCENT);
lp.gravity = Gravity.BOTTOM | Gravity.RIGHT;
// lp.windowAnimations = com.android.internal.R.style.Animation_Toast;
diff --git a/policy/src/com/android/internal/policy/impl/BiometricSensorUnlock.java b/policy/src/com/android/internal/policy/impl/BiometricSensorUnlock.java
index ad26845..a13ccc2 100644
--- a/policy/src/com/android/internal/policy/impl/BiometricSensorUnlock.java
+++ b/policy/src/com/android/internal/policy/impl/BiometricSensorUnlock.java
@@ -62,7 +62,7 @@
public boolean start();
/**
- * Stops the biometric unlock procedure and unbinds from the service.
+ * Stops the biometric unlock procedure and unbinds from the service. Called on the UI thread.
* @return whether the biometric unlock was running when called.
*/
public boolean stop();
diff --git a/policy/src/com/android/internal/policy/impl/FaceUnlock.java b/policy/src/com/android/internal/policy/impl/FaceUnlock.java
index 16d4003..6590fb3 100644
--- a/policy/src/com/android/internal/policy/impl/FaceUnlock.java
+++ b/policy/src/com/android/internal/policy/impl/FaceUnlock.java
@@ -28,6 +28,7 @@
import android.content.ServiceConnection;
import android.os.Handler;
import android.os.IBinder;
+import android.os.Looper;
import android.os.Message;
import android.os.RemoteException;
import android.telephony.TelephonyManager;
@@ -45,32 +46,44 @@
// TODO: is mServiceRunning needed or can we just use mIsRunning or check if mService is null?
private boolean mServiceRunning = false;
+ // TODO: now that the code has been restructure to do almost all operations from a handler, this
+ // lock may no longer be necessary.
private final Object mServiceRunningLock = new Object();
private IFaceLockInterface mService;
private boolean mBoundToService = false;
private View mFaceUnlockView;
private Handler mHandler;
- private final int MSG_SHOW_AREA_VIEW = 0;
- private final int MSG_HIDE_AREA_VIEW = 1;
+ private final int MSG_SHOW_FACE_UNLOCK_VIEW = 0;
+ private final int MSG_HIDE_FACE_UNLOCK_VIEW = 1;
+ private final int MSG_SERVICE_CONNECTED = 2;
+ private final int MSG_SERVICE_DISCONNECTED = 3;
+ private final int MSG_UNLOCK = 4;
+ private final int MSG_CANCEL = 5;
+ private final int MSG_REPORT_FAILED_ATTEMPT = 6;
+ private final int MSG_EXPOSE_FALLBACK = 7;
+ private final int MSG_POKE_WAKELOCK = 8;
// TODO: This was added for the purpose of adhering to what the biometric interface expects
// the isRunning() function to return. However, it is probably not necessary to have both
// mRunning and mServiceRunning. I'd just rather wait to change that logic.
- private boolean mIsRunning = false;
+ private volatile boolean mIsRunning = false;
// Long enough to stay visible while the service starts
// Short enough to not have to wait long for backup if service fails to start or crashes
// The service can take a couple of seconds to start on the first try after boot
- private final int VIEW_AREA_SERVICE_TIMEOUT = 3000;
+ private final int SERVICE_STARTUP_VIEW_TIMEOUT = 3000;
// So the user has a consistent amount of time when brought to the backup method from Face
// Unlock
private final int BACKUP_LOCK_TIMEOUT = 5000;
-
KeyguardScreenCallback mKeyguardScreenCallback;
+ /**
+ * Stores some of the structures that Face Unlock will need to access and creates the handler
+ * will be used to execute messages on the UI thread.
+ */
public FaceUnlock(Context context, KeyguardUpdateMonitor updateMonitor,
LockPatternUtils lockPatternUtils, KeyguardScreenCallback keyguardScreenCallback) {
mContext = context;
@@ -86,6 +99,7 @@
* methods, we will have to add our other views (background, cancel button) here.
*/
public void initializeView(View biometricUnlockView) {
+ Log.d(TAG, "initializeView()");
mFaceUnlockView = biometricUnlockView;
show(0);
}
@@ -99,15 +113,20 @@
/**
* Sets the Face Unlock view to visible, hiding it after the specified amount of time. If
- * timeoutMillis is 0, no hide is performed.
+ * timeoutMillis is 0, no hide is performed. Called on the UI thread.
*/
public void show(long timeoutMillis) {
- removeAreaDisplayMessages();
+ if (DEBUG) Log.d(TAG, "show()");
+ if (mHandler.getLooper() != Looper.myLooper()) {
+ Log.e(TAG, "show() called off of the UI thread");
+ }
+
+ removeDisplayMessages();
if (mFaceUnlockView != null) {
mFaceUnlockView.setVisibility(View.VISIBLE);
}
if (timeoutMillis > 0) {
- mHandler.sendEmptyMessageDelayed(MSG_HIDE_AREA_VIEW, timeoutMillis);
+ mHandler.sendEmptyMessageDelayed(MSG_HIDE_FACE_UNLOCK_VIEW, timeoutMillis);
}
}
@@ -115,16 +134,23 @@
* Hides the Face Unlock view.
*/
public void hide() {
+ if (DEBUG) Log.d(TAG, "hide()");
// Remove messages to prevent a delayed show message from undo-ing the hide
- removeAreaDisplayMessages();
- mHandler.sendEmptyMessage(MSG_HIDE_AREA_VIEW);
+ removeDisplayMessages();
+ mHandler.sendEmptyMessage(MSG_HIDE_FACE_UNLOCK_VIEW);
}
/**
* Binds to the Face Unlock service. Face Unlock will be started when the bind completes. The
- * Face Unlock area is displayed to hide the backup while the service is starting up.
+ * Face Unlock view is displayed to hide the backup lock while the service is starting up.
+ * Called on the UI thread.
*/
public boolean start() {
+ if (DEBUG) Log.d(TAG, "start()");
+ if (mHandler.getLooper() != Looper.myLooper()) {
+ Log.e(TAG, "start() called off of the UI thread");
+ }
+
if (mIsRunning) {
Log.w(TAG, "start() called when already running");
}
@@ -132,14 +158,13 @@
// Show Face Unlock view, but only for a little bit so lockpattern will become visible if
// Face Unlock fails to start or crashes
// This must show before bind to guarantee that Face Unlock has a place to display
- show(VIEW_AREA_SERVICE_TIMEOUT);
+ show(SERVICE_STARTUP_VIEW_TIMEOUT);
if (!mBoundToService) {
- if (DEBUG) Log.d(TAG, "before bind to Face Unlock service");
+ Log.d(TAG, "Binding to Face Unlock service");
mContext.bindService(new Intent(IFaceLockInterface.class.getName()),
mConnection,
Context.BIND_AUTO_CREATE,
mLockPatternUtils.getCurrentUser());
- if (DEBUG) Log.d(TAG, "after bind to Face Unlock service");
mBoundToService = true;
} else {
Log.w(TAG, "Attempt to bind to Face Unlock when already bound");
@@ -155,14 +180,18 @@
}
/**
- * Stops Face Unlock and unbinds from the service.
+ * Stops Face Unlock and unbinds from the service. Called on the UI thread.
*/
public boolean stop() {
+ if (DEBUG) Log.d(TAG, "stop()");
+ if (mHandler.getLooper() != Looper.myLooper()) {
+ Log.e(TAG, "stop() called off of the UI thread");
+ }
+
boolean mWasRunning = mIsRunning;
stopUi();
if (mBoundToService) {
- if (DEBUG) Log.d(TAG, "before unbind from Face Unlock service");
if (mService != null) {
try {
mService.unregisterCallback(mFaceUnlockCallback);
@@ -170,8 +199,8 @@
// Not much we can do
}
}
+ Log.d(TAG, "Unbinding from Face Unlock service");
mContext.unbindService(mConnection);
- if (DEBUG) Log.d(TAG, "after unbind from Face Unlock service");
mBoundToService = false;
} else {
// This is usually not an error when this happens. Sometimes we will tell it to
@@ -187,6 +216,7 @@
* Frees up resources used by Face Unlock and stops it if it is still running.
*/
public void cleanUp() {
+ if (DEBUG) Log.d(TAG, "cleanUp()");
if (mService != null) {
try {
mService.unregisterCallback(mFaceUnlockCallback);
@@ -206,86 +236,224 @@
}
/**
- * Handles showing the Face Unlock view (hiding the backup lock) and hiding the Face Unlock view
- * (exposing the backup lock). In cases where 'show' needs to happen immediately,
- * setVisibility() is called directly (without using this handler). This handler is used when
- * 'show' needs to happen from a non-UI thread. It also handles hide() messages since they
- * often require a delay.
+ * Handles messages such that everything happens on the UI thread in a deterministic order.
+ * Calls from the Face Unlock service come from binder threads. Calls from lockscreen typically
+ * come from the UI thread. This makes sure there are no race conditions between those calls.
*/
@Override
public boolean handleMessage(Message msg) {
switch (msg.what) {
- case MSG_SHOW_AREA_VIEW:
- if (mFaceUnlockView != null) {
- mFaceUnlockView.setVisibility(View.VISIBLE);
- }
- break;
- case MSG_HIDE_AREA_VIEW:
- if (mFaceUnlockView != null) {
- mFaceUnlockView.setVisibility(View.INVISIBLE);
- }
- break;
- default:
- Log.w(TAG, "Unhandled message");
- return false;
+ case MSG_SHOW_FACE_UNLOCK_VIEW:
+ handleShowFaceUnlockView();
+ break;
+ case MSG_HIDE_FACE_UNLOCK_VIEW:
+ handleHideFaceUnlockView();
+ break;
+ case MSG_SERVICE_CONNECTED:
+ handleServiceConnected();
+ break;
+ case MSG_SERVICE_DISCONNECTED:
+ handleServiceDisconnected();
+ break;
+ case MSG_UNLOCK:
+ handleUnlock();
+ break;
+ case MSG_CANCEL:
+ handleCancel();
+ break;
+ case MSG_REPORT_FAILED_ATTEMPT:
+ handleReportFailedAttempt();
+ break;
+ case MSG_EXPOSE_FALLBACK:
+ handleExposeFallback();
+ break;
+ case MSG_POKE_WAKELOCK:
+ handlePokeWakelock();
+ break;
+ default:
+ Log.e(TAG, "Unhandled message");
+ return false;
}
return true;
}
/**
- * Removes show and hide messages from the message queue
+ * Sets the Face Unlock view to visible, thus covering the backup lock.
*/
- private void removeAreaDisplayMessages() {
- mHandler.removeMessages(MSG_SHOW_AREA_VIEW);
- mHandler.removeMessages(MSG_HIDE_AREA_VIEW);
+ void handleShowFaceUnlockView() {
+ if (DEBUG) Log.d(TAG, "handleShowFaceUnlockView()");
+ if (mFaceUnlockView != null) {
+ mFaceUnlockView.setVisibility(View.VISIBLE);
+ } else {
+ Log.e(TAG, "mFaceUnlockView is null in handleShowFaceUnlockView()");
+ }
}
- private ServiceConnection mConnection = new ServiceConnection() {
- /**
- * Completes connection, registers callback, and starts Face Unlock when service is bound
- */
- @Override
- public void onServiceConnected(ComponentName className, IBinder iservice) {
- mService = IFaceLockInterface.Stub.asInterface(iservice);
- if (DEBUG) Log.d(TAG, "Connected to Face Unlock service");
- try {
- mService.registerCallback(mFaceUnlockCallback);
- } catch (RemoteException e) {
- Log.e(TAG, "Caught exception connecting to Face Unlock: " + e.toString());
- mService = null;
- mBoundToService = false;
- mIsRunning = false;
- return;
- }
+ /**
+ * Sets the Face Unlock view to invisible, thus exposing the backup lock.
+ */
+ void handleHideFaceUnlockView() {
+ if (DEBUG) Log.d(TAG, "handleHideFaceUnlockView()");
+ if (mFaceUnlockView != null) {
+ mFaceUnlockView.setVisibility(View.INVISIBLE);
+ } else {
+ Log.e(TAG, "mFaceUnlockView is null in handleHideFaceUnlockView()");
+ }
+ }
- if (mFaceUnlockView != null) {
+ /**
+ * Tells the service to start its UI via an AIDL interface. Called when the
+ * onServiceConnected() callback is received.
+ */
+ void handleServiceConnected() {
+ if (DEBUG) Log.d(TAG, "handleServiceConnected()");
+ try {
+ mService.registerCallback(mFaceUnlockCallback);
+ } catch (RemoteException e) {
+ Log.e(TAG, "Caught exception connecting to Face Unlock: " + e.toString());
+ mService = null;
+ mBoundToService = false;
+ mIsRunning = false;
+ return;
+ }
+
+ if (mFaceUnlockView != null) {
+ IBinder windowToken = mFaceUnlockView.getWindowToken();
+ if (windowToken != null) {
int[] position;
position = new int[2];
mFaceUnlockView.getLocationInWindow(position);
- startUi(mFaceUnlockView.getWindowToken(), position[0], position[1],
- mFaceUnlockView.getWidth(), mFaceUnlockView.getHeight());
+ startUi(windowToken, position[0], position[1], mFaceUnlockView.getWidth(),
+ mFaceUnlockView.getHeight());
+ } else {
+ Log.e(TAG, "windowToken is null in handleServiceConnected()");
}
}
+ }
+
+ /**
+ * Called when the onServiceDisconnected() callback is received. This should not happen during
+ * normal operation. It indicates an error has occurred.
+ */
+ void handleServiceDisconnected() {
+ Log.e(TAG, "handleServiceDisconnected()");
+ // TODO: this lock may no longer be needed now that everything is being called from a
+ // handler
+ synchronized (mServiceRunningLock) {
+ mService = null;
+ mServiceRunning = false;
+ }
+ mBoundToService = false;
+ mIsRunning = false;
+ }
+
+ /**
+ * Stops the Face Unlock service and tells the device to grant access to the user. Shows the
+ * Face Unlock view to keep the backup lock covered while the device unlocks.
+ */
+ void handleUnlock() {
+ if (DEBUG) Log.d(TAG, "handleUnlock()");
+ removeDisplayMessages();
+ if (mFaceUnlockView != null) {
+ mFaceUnlockView.setVisibility(View.VISIBLE);
+ } else {
+ Log.e(TAG, "mFaceUnlockView is null in handleUnlock()");
+ }
+ stop();
+ mKeyguardScreenCallback.keyguardDone(true);
+ mKeyguardScreenCallback.reportSuccessfulUnlockAttempt();
+ }
+
+ /**
+ * Stops the Face Unlock service and exposes the backup lock. Called when the user presses the
+ * cancel button to skip Face Unlock or no face is detected.
+ */
+ void handleCancel() {
+ if (DEBUG) Log.d(TAG, "handleCancel()");
+ if (mFaceUnlockView != null) {
+ mFaceUnlockView.setVisibility(View.INVISIBLE);
+ } else {
+ Log.e(TAG, "mFaceUnlockView is null in handleCancel()");
+ }
+ stop();
+ mKeyguardScreenCallback.pokeWakelock(BACKUP_LOCK_TIMEOUT);
+ }
+
+ /**
+ * Stops the Face Unlock service and exposes the backup lock, reporting a failed unlock attempt.
+ * Called when Face Unlock denies access to the user.
+ */
+ void handleReportFailedAttempt() {
+ if (DEBUG) Log.d(TAG, "handleReportFailedAttempt()");
+ mUpdateMonitor.reportFailedBiometricUnlockAttempt();
+ if (mFaceUnlockView != null) {
+ mFaceUnlockView.setVisibility(View.INVISIBLE);
+ } else {
+ Log.e(TAG, "mFaceUnlockView is null in handleReportFailedAttempt()");
+ }
+ stop();
+ mKeyguardScreenCallback.pokeWakelock(BACKUP_LOCK_TIMEOUT);
+ }
+
+ /**
+ * Hides the Face Unlock view to expose the backup lock. Called when the Face Unlock service UI
+ * is started, indicating there is no need to continue displaying the underlying view because
+ * the service UI is now covering the backup lock.
+ */
+ void handleExposeFallback() {
+ if (DEBUG) Log.d(TAG, "handleExposeFallback()");
+ if (mFaceUnlockView != null) {
+ mFaceUnlockView.setVisibility(View.INVISIBLE);
+ } else {
+ Log.e(TAG, "mFaceUnlockView is null in handleExposeFallback()");
+ }
+ }
+
+ /**
+ * Pokes the wakelock to keep the screen alive and active.
+ */
+ void handlePokeWakelock() {
+ mKeyguardScreenCallback.pokeWakelock();
+ }
+
+ /**
+ * Removes show and hide messages from the message queue. Called to prevent delayed show/hide
+ * messages from undoing a new message.
+ */
+ private void removeDisplayMessages() {
+ mHandler.removeMessages(MSG_SHOW_FACE_UNLOCK_VIEW);
+ mHandler.removeMessages(MSG_HIDE_FACE_UNLOCK_VIEW);
+ }
+
+ /**
+ * Implements service connection methods.
+ */
+ private ServiceConnection mConnection = new ServiceConnection() {
+ /**
+ * Called when the Face Unlock service connects after calling bind().
+ */
+ @Override
+ public void onServiceConnected(ComponentName className, IBinder iservice) {
+ Log.d(TAG, "Connected to Face Unlock service");
+ mService = IFaceLockInterface.Stub.asInterface(iservice);
+ mHandler.sendEmptyMessage(MSG_SERVICE_CONNECTED);
+ }
/**
- * Cleans up if Face Unlock service unexpectedly disconnects
+ * Called if the Face Unlock service unexpectedly disconnects. This indicates an error.
*/
@Override
public void onServiceDisconnected(ComponentName className) {
- synchronized(mServiceRunningLock) {
- mService = null;
- mServiceRunning = false;
- }
- mBoundToService = false;
- mIsRunning = false;
- Log.w(TAG, "Unexpected disconnect from Face Unlock service");
+ Log.e(TAG, "Unexpected disconnect from Face Unlock service");
+ mHandler.sendEmptyMessage(MSG_SERVICE_DISCONNECTED);
}
};
/**
- * Tells the Face Unlock service to start displaying its UI and perform recognition
+ * Tells the Face Unlock service to start displaying its UI and start processing.
*/
private void startUi(IBinder windowToken, int x, int y, int w, int h) {
+ if (DEBUG) Log.d(TAG, "startUi()");
synchronized (mServiceRunningLock) {
if (!mServiceRunning) {
if (DEBUG) Log.d(TAG, "Starting Face Unlock");
@@ -298,93 +466,86 @@
}
mServiceRunning = true;
} else {
- if (DEBUG) Log.w(TAG, "startUi() attempted while running");
+ Log.w(TAG, "startUi() attempted while running");
}
}
}
/**
- * Tells the Face Unlock service to stop displaying its UI and stop recognition
+ * Tells the Face Unlock service to stop displaying its UI and stop processing.
*/
private void stopUi() {
+ if (DEBUG) Log.d(TAG, "stopUi()");
// Note that attempting to stop Face Unlock when it's not running is not an issue.
// Face Unlock can return, which stops it and then we try to stop it when the
// screen is turned off. That's why we check.
synchronized (mServiceRunningLock) {
if (mServiceRunning) {
+ if (DEBUG) Log.d(TAG, "Stopping Face Unlock");
try {
- if (DEBUG) Log.d(TAG, "Stopping Face Unlock");
mService.stopUi();
} catch (RemoteException e) {
Log.e(TAG, "Caught exception stopping Face Unlock: " + e.toString());
}
mServiceRunning = false;
+ } else {
+ // This is usually not an error when this happens. Sometimes we will tell it to
+ // stop multiple times because it's called from both onWindowFocusChanged and
+ // onDetachedFromWindow.
+ if (DEBUG) Log.d(TAG, "stopUi() attempted while not running");
}
}
}
/**
- * Implements the biometric unlock service callback interface defined in AIDL
+ * Implements the AIDL biometric unlock service callback interface.
*/
private final IFaceLockCallback mFaceUnlockCallback = new IFaceLockCallback.Stub() {
/**
- * Stops the Face Unlock UI and indicates that the phone should be unlocked
+ * Called when Face Unlock wants to grant access to the user.
*/
@Override
public void unlock() {
if (DEBUG) Log.d(TAG, "unlock()");
-
- // Keep fallback covered
- removeAreaDisplayMessages();
- mHandler.sendEmptyMessage(MSG_SHOW_AREA_VIEW);
-
- stop();
-
- mKeyguardScreenCallback.keyguardDone(true);
- mKeyguardScreenCallback.reportSuccessfulUnlockAttempt();
+ mHandler.sendEmptyMessage(MSG_UNLOCK);
}
/**
- * Stops the Face Unlock UI and exposes the backup method without unlocking
- * This means the user has cancelled out
+ * Called when the user presses cancel to skip Face Unlock or a face cannot be found.
*/
@Override
public void cancel() {
if (DEBUG) Log.d(TAG, "cancel()");
- hide(); // Expose fallback
- stop();
- mKeyguardScreenCallback.pokeWakelock(BACKUP_LOCK_TIMEOUT);
+ mHandler.sendEmptyMessage(MSG_CANCEL);
}
/**
- * Stops the Face Unlock UI and exposes the backup method without unlocking
- * This means Face Unlock failed to recognize them
+ * Called when Face Unlock denies access to the user.
*/
@Override
public void reportFailedAttempt() {
if (DEBUG) Log.d(TAG, "reportFailedAttempt()");
- mUpdateMonitor.reportFailedBiometricUnlockAttempt();
- hide(); // Expose fallback
- stop();
- mKeyguardScreenCallback.pokeWakelock(BACKUP_LOCK_TIMEOUT);
+ mHandler.sendEmptyMessage(MSG_REPORT_FAILED_ATTEMPT);
}
/**
- * Removes the black area that covers the backup unlock method
+ * Called when the Face Unlock service starts displaying the UI, indicating that the backup
+ * unlock can be exposed because the Face Unlock service is now covering the backup with its
+ * UI.
**/
@Override
public void exposeFallback() {
if (DEBUG) Log.d(TAG, "exposeFallback()");
- hide(); // Expose fallback
+ mHandler.sendEmptyMessage(MSG_EXPOSE_FALLBACK);
}
/**
- * Allows the Face Unlock service to poke the wake lock to keep the lockscreen alive
+ * Called when Face Unlock wants to keep the screen alive and active.
*/
@Override
public void pokeWakelock() {
if (DEBUG) Log.d(TAG, "pokeWakelock()");
- mKeyguardScreenCallback.pokeWakelock();
+ mHandler.sendEmptyMessage(MSG_POKE_WAKELOCK);
}
};
}
diff --git a/policy/src/com/android/internal/policy/impl/KeyguardStatusViewManager.java b/policy/src/com/android/internal/policy/impl/KeyguardStatusViewManager.java
index a6986de..d0fe42d 100644
--- a/policy/src/com/android/internal/policy/impl/KeyguardStatusViewManager.java
+++ b/policy/src/com/android/internal/policy/impl/KeyguardStatusViewManager.java
@@ -509,7 +509,8 @@
break;
case SimPermDisabled:
- carrierText = getContext().getText(R.string.lockscreen_missing_sim_message_short);
+ carrierText = getContext().getText(
+ R.string.lockscreen_permanent_disabled_sim_message_short);
carrierHelpTextId = R.string.lockscreen_permanent_disabled_sim_instructions;
mEmergencyButtonEnabledBecauseSimLocked = true;
break;
diff --git a/policy/src/com/android/internal/policy/impl/KeyguardUpdateMonitor.java b/policy/src/com/android/internal/policy/impl/KeyguardUpdateMonitor.java
index d340516..7238fdf 100644
--- a/policy/src/com/android/internal/policy/impl/KeyguardUpdateMonitor.java
+++ b/policy/src/com/android/internal/policy/impl/KeyguardUpdateMonitor.java
@@ -72,8 +72,6 @@
private IccCard.State mSimState = IccCard.State.READY;
- private boolean mKeyguardBypassEnabled;
-
private boolean mDeviceProvisioned;
private BatteryStatus mBatteryStatus;
@@ -217,9 +215,6 @@
}
};
- mKeyguardBypassEnabled = context.getResources().getBoolean(
- com.android.internal.R.bool.config_bypass_keyguard_if_slider_open);
-
mDeviceProvisioned = Settings.Secure.getInt(
mContext.getContentResolver(), Settings.Secure.DEVICE_PROVISIONED, 0) != 0;
@@ -660,10 +655,6 @@
handleSimStateChange(new SimArgs(IccCard.State.READY));
}
- public boolean isKeyguardBypassEnabled() {
- return mKeyguardBypassEnabled;
- }
-
public boolean isDevicePluggedIn() {
return isPluggedIn(mBatteryStatus);
}
diff --git a/policy/src/com/android/internal/policy/impl/KeyguardViewBase.java b/policy/src/com/android/internal/policy/impl/KeyguardViewBase.java
index 39fdf92..5aa764b 100644
--- a/policy/src/com/android/internal/policy/impl/KeyguardViewBase.java
+++ b/policy/src/com/android/internal/policy/impl/KeyguardViewBase.java
@@ -24,12 +24,17 @@
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
import android.media.AudioManager;
+import android.media.IAudioService;
+import android.os.RemoteException;
+import android.os.ServiceManager;
import android.telephony.TelephonyManager;
import android.view.KeyEvent;
import android.view.View;
import android.view.Gravity;
import android.widget.FrameLayout;
import android.util.AttributeSet;
+import android.util.Log;
+import android.util.Slog;
/**
* Base class for keyguard views. {@link #reset} is where you should
@@ -194,9 +199,7 @@
case KeyEvent.KEYCODE_MEDIA_REWIND:
case KeyEvent.KEYCODE_MEDIA_RECORD:
case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD: {
- Intent intent = new Intent(Intent.ACTION_MEDIA_BUTTON, null);
- intent.putExtra(Intent.EXTRA_KEY_EVENT, event);
- getContext().sendOrderedBroadcast(intent, null);
+ handleMediaKeyEvent(event);
return true;
}
@@ -240,9 +243,7 @@
case KeyEvent.KEYCODE_MEDIA_REWIND:
case KeyEvent.KEYCODE_MEDIA_RECORD:
case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD: {
- Intent intent = new Intent(Intent.ACTION_MEDIA_BUTTON, null);
- intent.putExtra(Intent.EXTRA_KEY_EVENT, event);
- getContext().sendOrderedBroadcast(intent, null);
+ handleMediaKeyEvent(event);
return true;
}
}
@@ -250,6 +251,20 @@
return false;
}
+ void handleMediaKeyEvent(KeyEvent keyEvent) {
+ IAudioService audioService = IAudioService.Stub.asInterface(
+ ServiceManager.checkService(Context.AUDIO_SERVICE));
+ if (audioService != null) {
+ try {
+ audioService.dispatchMediaKeyEvent(keyEvent);
+ } catch (RemoteException e) {
+ Log.e("KeyguardViewBase", "dispatchMediaKeyEvent threw exception " + e);
+ }
+ } else {
+ Slog.w("KeyguardViewBase", "Unable to find IAudioService for media key event");
+ }
+ }
+
@Override
public void dispatchSystemUiVisibilityChanged(int visibility) {
super.dispatchSystemUiVisibilityChanged(visibility);
diff --git a/policy/src/com/android/internal/policy/impl/KeyguardViewManager.java b/policy/src/com/android/internal/policy/impl/KeyguardViewManager.java
index 7100e89..7f432bf 100644
--- a/policy/src/com/android/internal/policy/impl/KeyguardViewManager.java
+++ b/policy/src/com/android/internal/policy/impl/KeyguardViewManager.java
@@ -181,6 +181,7 @@
( View.STATUS_BAR_DISABLE_BACK
| View.STATUS_BAR_DISABLE_HOME
);
+ Log.v(TAG, "KGVM: Set visibility on " + mKeyguardHost + " to " + visFlags);
mKeyguardHost.setSystemUiVisibility(visFlags);
mViewManager.updateViewLayout(mKeyguardHost, mWindowLayoutParams);
diff --git a/policy/src/com/android/internal/policy/impl/KeyguardViewMediator.java b/policy/src/com/android/internal/policy/impl/KeyguardViewMediator.java
index fec9530..11a1cd6 100644
--- a/policy/src/com/android/internal/policy/impl/KeyguardViewMediator.java
+++ b/policy/src/com/android/internal/policy/impl/KeyguardViewMediator.java
@@ -121,13 +121,6 @@
*/
protected static final int AWAKE_INTERVAL_DEFAULT_MS = 10000;
-
- /**
- * The default amount of time we stay awake (used for all key input) when
- * the keyboard is open
- */
- protected static final int AWAKE_INTERVAL_DEFAULT_KEYBOARD_OPEN_MS = 10000;
-
/**
* How long to wait after the screen turns off due to timeout before
* turning on the keyguard (i.e, the user has this much time to turn
@@ -237,8 +230,6 @@
private KeyguardUpdateMonitor mUpdateMonitor;
- private boolean mKeyboardOpen = false;
-
private boolean mScreenOn = false;
// last known state of the cellular connection
@@ -590,22 +581,6 @@
}
/**
- * Returns true if the change is resulting in the keyguard beign dismissed,
- * meaning the screen can turn on immediately. Otherwise returns false.
- */
- public boolean doLidChangeTq(boolean isLidOpen) {
- mKeyboardOpen = isLidOpen;
-
- if (mUpdateMonitor.isKeyguardBypassEnabled() && mKeyboardOpen
- && !mKeyguardViewProperties.isSecure() && mKeyguardViewManager.isShowing()) {
- if (DEBUG) Log.d(TAG, "bypassing keyguard on sliding open of keyboard with non-secure keyguard");
- mHandler.sendEmptyMessage(KEYGUARD_DONE_AUTHENTICATING);
- return true;
- }
- return false;
- }
-
- /**
* Enable the keyguard if the settings are appropriate. Return true if all
* work that will happen is done; returns false if the caller can wait for
* the keyguard to be shown.
@@ -955,8 +930,7 @@
/** {@inheritDoc} */
public void pokeWakelock() {
- pokeWakelock(mKeyboardOpen ?
- AWAKE_INTERVAL_DEFAULT_KEYBOARD_OPEN_MS : AWAKE_INTERVAL_DEFAULT_MS);
+ pokeWakelock(AWAKE_INTERVAL_DEFAULT_MS);
}
/** {@inheritDoc} */
diff --git a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java
index 010c8d6..8320b1d 100644
--- a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java
+++ b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java
@@ -117,6 +117,8 @@
private boolean mHasDialog = false;
//True if this device is currently plugged in
private boolean mPluggedIn;
+ // True the first time lockscreen is showing after boot
+ private static boolean sIsFirstAppearanceAfterBoot = true;
// The music control widget
private TransportControlView mTransportControlView;
@@ -437,7 +439,8 @@
mUpdateMonitor = updateMonitor;
mLockPatternUtils = lockPatternUtils;
mWindowController = controller;
- mSuppressBiometricUnlock = false;
+ mSuppressBiometricUnlock = sIsFirstAppearanceAfterBoot;
+ sIsFirstAppearanceAfterBoot = false;
mPluggedIn = mUpdateMonitor.isDevicePluggedIn();
mScreenOn = ((PowerManager)context.getSystemService(Context.POWER_SERVICE)).isScreenOn();
@@ -714,9 +717,10 @@
@Override
public void onClockVisibilityChanged() {
- int visFlags = getSystemUiVisibility() & ~View.STATUS_BAR_DISABLE_CLOCK;
- setSystemUiVisibility(visFlags
- | (mUpdateMonitor.isClockVisible() ? View.STATUS_BAR_DISABLE_CLOCK : 0));
+ int visFlags = (getSystemUiVisibility() & ~View.STATUS_BAR_DISABLE_CLOCK)
+ | (mUpdateMonitor.isClockVisible() ? View.STATUS_BAR_DISABLE_CLOCK : 0);
+ Log.v(TAG, "Set visibility on " + this + " to " + visFlags);
+ setSystemUiVisibility(visFlags);
}
// We need to stop the biometric unlock when a phone call comes in
diff --git a/policy/src/com/android/internal/policy/impl/LockScreen.java b/policy/src/com/android/internal/policy/impl/LockScreen.java
index e8ba21d..c7a30e2 100644
--- a/policy/src/com/android/internal/policy/impl/LockScreen.java
+++ b/policy/src/com/android/internal/policy/impl/LockScreen.java
@@ -29,17 +29,19 @@
import android.app.ActivityManagerNative;
import android.app.SearchManager;
import android.content.ActivityNotFoundException;
+import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.content.res.Resources;
+import android.os.Vibrator;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.*;
-import android.speech.RecognizerIntent;
import android.util.Log;
+import android.util.Slog;
import android.media.AudioManager;
import android.os.RemoteException;
import android.provider.MediaStore;
@@ -69,7 +71,6 @@
private boolean mEnableRingSilenceFallback = false;
// current configuration state of keyboard and display
- private int mKeyboardHidden;
private int mCreationOrientation;
private boolean mSilentMode;
@@ -81,6 +82,9 @@
private View mUnlockWidget;
private boolean mCameraDisabled;
private boolean mSearchDisabled;
+ private SearchManager mSearchManager;
+ // Is there a vibrator
+ private final boolean mHasVibrator;
InfoCallbackImpl mInfoCallback = new InfoCallbackImpl() {
@@ -238,6 +242,25 @@
}
}
+ private Intent getAssistIntent() {
+ Intent intent = null;
+ if (mSearchManager == null) {
+ mSearchManager = (SearchManager) mContext.getSystemService(Context.SEARCH_SERVICE);
+ }
+ if (mSearchManager != null) {
+ ComponentName globalSearchActivity = mSearchManager.getGlobalSearchActivity();
+ if (globalSearchActivity != null) {
+ intent = new Intent(Intent.ACTION_ASSIST);
+ intent.setPackage(globalSearchActivity.getPackageName());
+ } else {
+ Slog.w(TAG, "No global search activity");
+ }
+ } else {
+ Slog.w(TAG, "No SearchManager");
+ }
+ return intent;
+ }
+
class MultiWaveViewMethods implements MultiWaveView.OnTriggerListener,
UnlockWidgetCommonMethods {
private final MultiWaveView mMultiWaveView;
@@ -280,7 +303,12 @@
final int resId = mMultiWaveView.getResourceIdForTarget(target);
switch (resId) {
case com.android.internal.R.drawable.ic_lockscreen_search:
- launchActivity(new Intent(RecognizerIntent.ACTION_WEB_SEARCH));
+ Intent assistIntent = getAssistIntent();
+ if (assistIntent != null) {
+ launchActivity(assistIntent);
+ } else {
+ Log.w(TAG, "Failed to get intent for assist activity");
+ }
mCallback.pokeWakelock();
break;
@@ -360,11 +388,7 @@
// toggle silent mode
mSilentMode = !mSilentMode;
if (mSilentMode) {
- final boolean vibe = (Settings.System.getInt(
- mContext.getContentResolver(),
- Settings.System.VIBRATE_IN_SILENT, 1) == 1);
-
- mAudioManager.setRingerMode(vibe
+ mAudioManager.setRingerMode(mHasVibrator
? AudioManager.RINGER_MODE_VIBRATE
: AudioManager.RINGER_MODE_SILENT);
} else {
@@ -404,7 +428,6 @@
mCallback = callback;
mEnableMenuKeyInLockScreen = shouldEnableMenuKey();
mCreationOrientation = configuration.orientation;
- mKeyboardHidden = configuration.hardKeyboardHidden;
if (LockPatternKeyguardView.DEBUG_CONFIGURATION) {
Log.v(TAG, "***** CREATING LOCK SCREEN", new RuntimeException());
@@ -427,6 +450,8 @@
setFocusableInTouchMode(true);
setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
+ Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
+ mHasVibrator = vibrator == null ? false : vibrator.hasVibrator();
mAudioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
mSilentMode = isSilentMode();
mUnlockWidget = findViewById(R.id.unlock_widget);
@@ -506,12 +531,6 @@
Configuration newConfig = getResources().getConfiguration();
if (newConfig.orientation != mCreationOrientation) {
mCallback.recreateMe(newConfig);
- } else if (newConfig.hardKeyboardHidden != mKeyboardHidden) {
- mKeyboardHidden = newConfig.hardKeyboardHidden;
- final boolean isKeyboardOpen = mKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO;
- if (mUpdateMonitor.isKeyguardBypassEnabled() && isKeyboardOpen) {
- mCallback.goToUnlockScreen();
- }
}
}
diff --git a/policy/src/com/android/internal/policy/impl/PhoneFallbackEventHandler.java b/policy/src/com/android/internal/policy/impl/PhoneFallbackEventHandler.java
index 83f7788..b88d84b 100644
--- a/policy/src/com/android/internal/policy/impl/PhoneFallbackEventHandler.java
+++ b/policy/src/com/android/internal/policy/impl/PhoneFallbackEventHandler.java
@@ -23,8 +23,12 @@
import android.content.Intent;
import android.content.res.Configuration;
import android.media.AudioManager;
+import android.media.IAudioService;
+import android.os.RemoteException;
+import android.os.ServiceManager;
import android.telephony.TelephonyManager;
import android.util.EventLog;
+import android.util.Log;
import android.util.Slog;
import android.view.View;
import android.view.HapticFeedbackConstants;
@@ -99,9 +103,7 @@
case KeyEvent.KEYCODE_MEDIA_REWIND:
case KeyEvent.KEYCODE_MEDIA_RECORD:
case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD: {
- Intent intent = new Intent(Intent.ACTION_MEDIA_BUTTON, null);
- intent.putExtra(Intent.EXTRA_KEY_EVENT, event);
- mContext.sendOrderedBroadcast(intent, null);
+ handleMediaKeyEvent(event);
return true;
}
@@ -213,9 +215,7 @@
case KeyEvent.KEYCODE_MEDIA_REWIND:
case KeyEvent.KEYCODE_MEDIA_RECORD:
case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD: {
- Intent intent = new Intent(Intent.ACTION_MEDIA_BUTTON, null);
- intent.putExtra(Intent.EXTRA_KEY_EVENT, event);
- mContext.sendOrderedBroadcast(intent, null);
+ handleMediaKeyEvent(event);
return true;
}
@@ -285,5 +285,19 @@
void sendCloseSystemWindows() {
PhoneWindowManager.sendCloseSystemWindows(mContext, null);
}
+
+ private void handleMediaKeyEvent(KeyEvent keyEvent) {
+ IAudioService audioService = IAudioService.Stub.asInterface(
+ ServiceManager.checkService(Context.AUDIO_SERVICE));
+ if (audioService != null) {
+ try {
+ audioService.dispatchMediaKeyEvent(keyEvent);
+ } catch (RemoteException e) {
+ Log.e(TAG, "dispatchMediaKeyEvent threw exception " + e);
+ }
+ } else {
+ Slog.w(TAG, "Unable to find IAudioService for media key event.");
+ }
+ }
}
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindow.java b/policy/src/com/android/internal/policy/impl/PhoneWindow.java
index c3c49b0..cc7050a 100644
--- a/policy/src/com/android/internal/policy/impl/PhoneWindow.java
+++ b/policy/src/com/android/internal/policy/impl/PhoneWindow.java
@@ -2098,7 +2098,6 @@
if (widthMode == AT_MOST) {
final TypedValue tvw = isPortrait ? mFixedWidthMinor : mFixedWidthMajor;
if (tvw != null && tvw.type != TypedValue.TYPE_NULL) {
- fixedWidth = true;
final int w;
if (tvw.type == TypedValue.TYPE_DIMENSION) {
w = (int) tvw.getDimension(metrics);
@@ -2108,8 +2107,12 @@
w = 0;
}
- final int widthSize = MeasureSpec.getSize(widthMeasureSpec);
- widthMeasureSpec = MeasureSpec.makeMeasureSpec(Math.min(w, widthSize), EXACTLY);
+ if (w > 0) {
+ final int widthSize = MeasureSpec.getSize(widthMeasureSpec);
+ widthMeasureSpec = MeasureSpec.makeMeasureSpec(
+ Math.min(w, widthSize), EXACTLY);
+ fixedWidth = true;
+ }
}
}
@@ -2125,9 +2128,11 @@
h = 0;
}
- final int heightSize = MeasureSpec.getSize(heightMeasureSpec);
- heightMeasureSpec =
- MeasureSpec.makeMeasureSpec(Math.min(h, heightSize), EXACTLY);
+ if (h > 0) {
+ final int heightSize = MeasureSpec.getSize(heightMeasureSpec);
+ heightMeasureSpec = MeasureSpec.makeMeasureSpec(
+ Math.min(h, heightSize), EXACTLY);
+ }
}
}
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
index 319eb36..6348d37 100755
--- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
+++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
@@ -38,6 +38,7 @@
import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.graphics.RectF;
+import android.hardware.input.InputManager;
import android.media.AudioManager;
import android.media.IAudioService;
import android.os.BatteryManager;
@@ -323,6 +324,8 @@
volatile boolean mPowerKeyHandled; // accessed from input reader and handler thread
boolean mPendingPowerKeyUpCanceled;
Handler mHandler;
+ WindowState mLastInputMethodWindow = null;
+ WindowState mLastInputMethodTargetWindow = null;
static final int RECENT_APPS_BEHAVIOR_SHOW_OR_DISMISS = 0;
static final int RECENT_APPS_BEHAVIOR_EXIT_TOUCH_MODE_AND_SHOW = 1;
@@ -332,6 +335,7 @@
int mRecentAppsDialogHeldModifiers;
int mLidState = LID_ABSENT;
+ boolean mHaveBuiltInKeyboard;
boolean mSystemReady;
boolean mSystemBooted;
@@ -353,6 +357,7 @@
boolean mDeskDockEnablesAccelerometer;
int mLidKeyboardAccessibility;
int mLidNavigationAccessibility;
+ boolean mLidControlsSleep;
int mLongPressOnPowerBehavior = -1;
boolean mScreenOnEarly = false;
boolean mScreenOnFully = false;
@@ -548,8 +553,6 @@
resolver.registerContentObserver(Settings.System.getUriFor(
Settings.System.SCREEN_OFF_TIMEOUT), false, this);
resolver.registerContentObserver(Settings.System.getUriFor(
- Settings.System.WINDOW_ORIENTATION_LISTENER_LOG), false, this);
- resolver.registerContentObserver(Settings.System.getUriFor(
Settings.System.POINTER_LOCATION), false, this);
resolver.registerContentObserver(Settings.Secure.getUriFor(
Settings.Secure.DEFAULT_INPUT_METHOD), false, this);
@@ -897,6 +900,8 @@
com.android.internal.R.integer.config_lidKeyboardAccessibility);
mLidNavigationAccessibility = mContext.getResources().getInteger(
com.android.internal.R.integer.config_lidNavigationAccessibility);
+ mLidControlsSleep = mContext.getResources().getBoolean(
+ com.android.internal.R.bool.config_lidControlsSleep);
// register for dock events
IntentFilter filter = new IntentFilter();
filter.addAction(UiModeManager.ACTION_ENTER_CAR_MODE);
@@ -1091,10 +1096,6 @@
updateOrientationListenerLp();
}
- mOrientationListener.setLogEnabled(
- Settings.System.getInt(resolver,
- Settings.System.WINDOW_ORIENTATION_LISTENER_LOG, 0) != 0);
-
if (mSystemReady) {
int pointerLocation = Settings.System.getInt(resolver,
Settings.System.POINTER_LOCATION, 0);
@@ -1262,41 +1263,42 @@
mLidState = mWindowManagerFuncs.getLidState();
}
- private int determineHiddenState(int mode, int hiddenValue, int visibleValue) {
- if (mLidState != LID_ABSENT) {
- switch (mode) {
- case 1:
- return mLidState == LID_OPEN ? visibleValue : hiddenValue;
- case 2:
- return mLidState == LID_OPEN ? hiddenValue : visibleValue;
- }
+ private boolean isHidden(int accessibilityMode) {
+ switch (accessibilityMode) {
+ case 1:
+ return mLidState == LID_CLOSED;
+ case 2:
+ return mLidState == LID_OPEN;
+ default:
+ return false;
}
- return visibleValue;
+ }
+
+ private boolean isBuiltInKeyboardVisible() {
+ return mHaveBuiltInKeyboard && !isHidden(mLidKeyboardAccessibility);
}
/** {@inheritDoc} */
- public void adjustConfigurationLw(Configuration config) {
+ public void adjustConfigurationLw(Configuration config, int keyboardPresence,
+ int navigationPresence) {
+ mHaveBuiltInKeyboard = (keyboardPresence & PRESENCE_INTERNAL) != 0;
+
readLidState();
- updateKeyboardVisibility();
+ applyLidSwitchState();
- if (config.keyboard == Configuration.KEYBOARD_NOKEYS) {
+ if (config.keyboard == Configuration.KEYBOARD_NOKEYS
+ || (keyboardPresence == PRESENCE_INTERNAL
+ && isHidden(mLidKeyboardAccessibility))) {
config.hardKeyboardHidden = Configuration.HARDKEYBOARDHIDDEN_YES;
- } else {
- config.hardKeyboardHidden = determineHiddenState(mLidKeyboardAccessibility,
- Configuration.HARDKEYBOARDHIDDEN_YES, Configuration.HARDKEYBOARDHIDDEN_NO);
+ if (!mHasSoftInput) {
+ config.keyboardHidden = Configuration.KEYBOARDHIDDEN_YES;
+ }
}
- if (config.navigation == Configuration.NAVIGATION_NONAV) {
+ if (config.navigation == Configuration.NAVIGATION_NONAV
+ || (navigationPresence == PRESENCE_INTERNAL
+ && isHidden(mLidNavigationAccessibility))) {
config.navigationHidden = Configuration.NAVIGATIONHIDDEN_YES;
- } else {
- config.navigationHidden = determineHiddenState(mLidNavigationAccessibility,
- Configuration.NAVIGATIONHIDDEN_YES, Configuration.NAVIGATIONHIDDEN_NO);
- }
-
- if (mHasSoftInput || config.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO) {
- config.keyboardHidden = Configuration.KEYBOARDHIDDEN_NO;
- } else {
- config.keyboardHidden = Configuration.KEYBOARDHIDDEN_YES;
}
}
@@ -2389,6 +2391,14 @@
if (win == mStatusBar || win == mNavigationBar) {
return;
}
+ final boolean needsToOffsetInputMethodTarget =
+ (win == mLastInputMethodTargetWindow && mLastInputMethodWindow != null);
+ if (needsToOffsetInputMethodTarget) {
+ if (DEBUG_LAYOUT) {
+ Slog.i(TAG, "Offset ime target window by the last ime window state");
+ }
+ offsetInputMethodWindowLw(mLastInputMethodWindow);
+ }
final int fl = attrs.flags;
final int sim = attrs.softInputMode;
@@ -2666,22 +2676,27 @@
// Dock windows carve out the bottom of the screen, so normal windows
// can't appear underneath them.
if (attrs.type == TYPE_INPUT_METHOD && !win.getGivenInsetsPendingLw()) {
- int top = win.getContentFrameLw().top;
- top += win.getGivenContentInsetsLw().top;
- if (mContentBottom > top) {
- mContentBottom = top;
- }
- top = win.getVisibleFrameLw().top;
- top += win.getGivenVisibleInsetsLw().top;
- if (mCurBottom > top) {
- mCurBottom = top;
- }
- if (DEBUG_LAYOUT) Log.v(TAG, "Input method: mDockBottom="
- + mDockBottom + " mContentBottom="
- + mContentBottom + " mCurBottom=" + mCurBottom);
+ setLastInputMethodWindowLw(null, null);
+ offsetInputMethodWindowLw(win);
}
}
+ private void offsetInputMethodWindowLw(WindowState win) {
+ int top = win.getContentFrameLw().top;
+ top += win.getGivenContentInsetsLw().top;
+ if (mContentBottom > top) {
+ mContentBottom = top;
+ }
+ top = win.getVisibleFrameLw().top;
+ top += win.getGivenVisibleInsetsLw().top;
+ if (mCurBottom > top) {
+ mCurBottom = top;
+ }
+ if (DEBUG_LAYOUT) Log.v(TAG, "Input method: mDockBottom="
+ + mDockBottom + " mContentBottom="
+ + mContentBottom + " mCurBottom=" + mCurBottom);
+ }
+
/** {@inheritDoc} */
@Override
public void finishLayoutLw() {
@@ -2852,33 +2867,26 @@
if (mHeadless) return;
// lid changed state
- mLidState = lidOpen ? LID_OPEN : LID_CLOSED;
- updateKeyboardVisibility();
+ final int newLidState = lidOpen ? LID_OPEN : LID_CLOSED;
+ if (newLidState == mLidState) {
+ return;
+ }
- boolean awakeNow = mKeyguardMediator.doLidChangeTq(lidOpen);
+ mLidState = newLidState;
+ applyLidSwitchState();
updateRotation(true);
- if (awakeNow) {
- // If the lid is opening and we don't have to keep the
- // keyguard up, then we can turn on the screen
- // immediately.
- mKeyguardMediator.pokeWakelock();
- } else if (keyguardIsShowingTq()) {
- if (lidOpen) {
- // If we are opening the lid and not hiding the
- // keyguard, then we need to have it turn on the
- // screen once it is shown.
+
+ if (lidOpen) {
+ if (keyguardIsShowingTq()) {
mKeyguardMediator.onWakeKeyWhenKeyguardShowingTq(
KeyEvent.KEYCODE_POWER, mDockMode != Intent.EXTRA_DOCK_STATE_UNDOCKED);
- }
- } else {
- // Light up the keyboard if we are sliding up.
- if (lidOpen) {
- mPowerManager.userActivity(SystemClock.uptimeMillis(), false,
- LocalPowerManager.BUTTON_EVENT);
} else {
mPowerManager.userActivity(SystemClock.uptimeMillis(), false,
- LocalPowerManager.OTHER_EVENT);
+ LocalPowerManager.BUTTON_EVENT);
}
+ } else if (!mLidControlsSleep) {
+ mPowerManager.userActivity(SystemClock.uptimeMillis(), false,
+ LocalPowerManager.OTHER_EVENT);
}
}
@@ -3342,20 +3350,19 @@
public void run() {
if (ActivityManagerNative.isSystemReady()) {
- Intent intent = new Intent(Intent.ACTION_MEDIA_BUTTON, null);
- intent.putExtra(Intent.EXTRA_KEY_EVENT, mKeyEvent);
- mContext.sendOrderedBroadcast(intent, null, mBroadcastDone,
- mHandler, Activity.RESULT_OK, null, null);
+ IAudioService audioService = getAudioService();
+ if (audioService != null) {
+ try {
+ audioService.dispatchMediaKeyEventUnderWakelock(mKeyEvent);
+ } catch (RemoteException e) {
+ Log.e(TAG, "dispatchMediaKeyEvent threw exception " + e);
+ }
+ }
+ mBroadcastWakeLock.release();
}
}
}
- BroadcastReceiver mBroadcastDone = new BroadcastReceiver() {
- public void onReceive(Context context, Intent intent) {
- mBroadcastWakeLock.release();
- }
- };
-
BroadcastReceiver mDockReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
if (Intent.ACTION_DOCK_EVENT.equals(intent.getAction())) {
@@ -3927,13 +3934,16 @@
/** {@inheritDoc} */
public void enableScreenAfterBoot() {
readLidState();
- updateKeyboardVisibility();
-
+ applyLidSwitchState();
updateRotation(true);
}
- private void updateKeyboardVisibility() {
- mPowerManager.setKeyboardVisibility(mLidState == LID_OPEN);
+ private void applyLidSwitchState() {
+ mPowerManager.setKeyboardVisibility(isBuiltInKeyboardVisible());
+
+ if (mLidState == LID_CLOSED && mLidControlsSleep) {
+ mPowerManager.goToSleep(SystemClock.uptimeMillis());
+ }
}
void updateRotation(boolean alwaysSendConfiguration) {
@@ -4183,6 +4193,12 @@
return mHasNavigationBar;
}
+ @Override
+ public void setLastInputMethodWindowLw(WindowState ime, WindowState target) {
+ mLastInputMethodWindow = ime;
+ mLastInputMethodTargetWindow = target;
+ }
+
public void dump(String prefix, FileDescriptor fd, PrintWriter pw, String[] args) {
pw.print(prefix); pw.print("mSafeMode="); pw.print(mSafeMode);
pw.print(" mSystemReady="); pw.print(mSystemReady);
@@ -4219,6 +4235,7 @@
pw.print(prefix); pw.print("mLidKeyboardAccessibility=");
pw.print(mLidKeyboardAccessibility);
pw.print(" mLidNavigationAccessibility="); pw.print(mLidNavigationAccessibility);
+ pw.print(" mLidControlsSleep="); pw.print(mLidControlsSleep);
pw.print(" mLongPressOnPowerBehavior="); pw.println(mLongPressOnPowerBehavior);
pw.print(prefix); pw.print("mScreenOnEarly="); pw.print(mScreenOnEarly);
pw.print(" mScreenOnFully="); pw.print(mScreenOnFully);
diff --git a/policy/src/com/android/internal/policy/impl/SimPukUnlockScreen.java b/policy/src/com/android/internal/policy/impl/SimPukUnlockScreen.java
index f3e7d4a..3b2a473 100644
--- a/policy/src/com/android/internal/policy/impl/SimPukUnlockScreen.java
+++ b/policy/src/com/android/internal/policy/impl/SimPukUnlockScreen.java
@@ -304,11 +304,6 @@
mCallback.recreateMe(newConfig);
} else if (newConfig.hardKeyboardHidden != mKeyboardHidden) {
mKeyboardHidden = newConfig.hardKeyboardHidden;
- final boolean isKeyboardOpen =
- (mKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO);
- if (mUpdateMonitor.isKeyguardBypassEnabled() && isKeyboardOpen) {
- mCallback.goToUnlockScreen();
- }
}
}
diff --git a/policy/src/com/android/internal/policy/impl/SimUnlockScreen.java b/policy/src/com/android/internal/policy/impl/SimUnlockScreen.java
index 9604cdc..80407f5 100644
--- a/policy/src/com/android/internal/policy/impl/SimUnlockScreen.java
+++ b/policy/src/com/android/internal/policy/impl/SimUnlockScreen.java
@@ -282,10 +282,6 @@
mCallback.recreateMe(newConfig);
} else if (newConfig.hardKeyboardHidden != mKeyboardHidden) {
mKeyboardHidden = newConfig.hardKeyboardHidden;
- final boolean isKeyboardOpen = mKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO;
- if (mUpdateMonitor.isKeyguardBypassEnabled() && isKeyboardOpen) {
- mCallback.goToUnlockScreen();
- }
}
}
diff --git a/services/input/EventHub.cpp b/services/input/EventHub.cpp
index 6ec020c..50bfee6 100644
--- a/services/input/EventHub.cpp
+++ b/services/input/EventHub.cpp
@@ -16,7 +16,7 @@
#define LOG_TAG "EventHub"
-// #define LOG_NDEBUG 0
+#define LOG_NDEBUG 0
#include "EventHub.h"
@@ -767,11 +767,7 @@
size_t count = size_t(readSize) / sizeof(struct input_event);
for (size_t i = 0; i < count; i++) {
const struct input_event& iev = readBuffer[i];
- ALOGV("%s got: t0=%d, t1=%d, type=%d, code=%d, value=%d",
- device->path.string(),
- (int) iev.time.tv_sec, (int) iev.time.tv_usec,
- iev.type, iev.code, iev.value);
-
+ nsecs_t delta = 0;
#ifdef HAVE_POSIX_CLOCKS
// Use the time specified in the event instead of the current time
// so that downstream code can get more accurate estimates of
@@ -786,10 +782,23 @@
// system call that also queries ktime_get_ts().
event->when = nsecs_t(iev.time.tv_sec) * 1000000000LL
+ nsecs_t(iev.time.tv_usec) * 1000LL;
- ALOGV("event time %lld, now %lld", event->when, now);
+ delta = now - event->when;
+
+ // Only log verbose if events are older that 1ms
+ if (delta > 1 * 1000000LL) {
+ ALOGV("event time %lld, now %lld, delta %lldus", event->when, now, delta / 1000LL);
+ }
#else
event->when = now;
#endif
+ if (delta > 1 * 1000000LL) {
+ ALOGV("%s got: t0=%d, t1=%d, type=%d, code=%d, value=%d",
+ device->path.string(),
+ (int) iev.time.tv_sec, (int) iev.time.tv_usec,
+ iev.type, iev.code, iev.value);
+ }
+
+
event->deviceId = deviceId;
event->type = iev.type;
event->code = iev.code;
@@ -1194,7 +1203,8 @@
// As of Linux 3.4, there is a new EVIOCSCLOCKID ioctl to set the desired clock.
// Therefore, we no longer require the Android-specific kernel patch described above
// as long as we make sure to set select the monotonic clock. We do that here.
- bool usingClockIoctl = !ioctl(fd, EVIOCSCLOCKID, CLOCK_MONOTONIC);
+ int clockId = CLOCK_MONOTONIC;
+ bool usingClockIoctl = !ioctl(fd, EVIOCSCLOCKID, &clockId);
ALOGI("New device: id=%d, fd=%d, path='%s', name='%s', classes=0x%x, "
"configuration='%s', keyLayout='%s', keyCharacterMap='%s', builtinKeyboard=%s, "
diff --git a/services/input/InputDispatcher.cpp b/services/input/InputDispatcher.cpp
index dad4ef4..ada9d9e 100644
--- a/services/input/InputDispatcher.cpp
+++ b/services/input/InputDispatcher.cpp
@@ -185,7 +185,7 @@
mPolicy(policy),
mPendingEvent(NULL), mAppSwitchSawKeyDown(false), mAppSwitchDueTime(LONG_LONG_MAX),
mNextUnblockedEvent(NULL),
- mDispatchEnabled(true), mDispatchFrozen(false), mInputFilterEnabled(false),
+ mDispatchEnabled(false), mDispatchFrozen(false), mInputFilterEnabled(false),
mInputTargetWaitCause(INPUT_TARGET_WAIT_CAUSE_NONE) {
mLooper = new Looper(false);
diff --git a/services/input/InputReader.cpp b/services/input/InputReader.cpp
index c6b701f..cd6a2ec 100644
--- a/services/input/InputReader.cpp
+++ b/services/input/InputReader.cpp
@@ -250,7 +250,6 @@
refreshConfigurationLocked(0);
updateGlobalMetaStateLocked();
- updateInputConfigurationLocked();
} // release lock
}
@@ -502,9 +501,6 @@
// Reset global meta state because it depends on the list of all configured devices.
updateGlobalMetaStateLocked();
- // Update input configuration.
- updateInputConfigurationLocked();
-
// Enqueue configuration changed.
NotifyConfigurationChangedArgs args(when);
mQueuedListener->notifyConfigurationChanged(&args);
@@ -542,36 +538,6 @@
return mGlobalMetaState;
}
-void InputReader::updateInputConfigurationLocked() {
- int32_t touchScreenConfig = InputConfiguration::TOUCHSCREEN_NOTOUCH;
- int32_t keyboardConfig = InputConfiguration::KEYBOARD_NOKEYS;
- int32_t navigationConfig = InputConfiguration::NAVIGATION_NONAV;
- InputDeviceInfo deviceInfo;
- for (size_t i = 0; i < mDevices.size(); i++) {
- InputDevice* device = mDevices.valueAt(i);
- if (!(device->getClasses() & INPUT_DEVICE_CLASS_VIRTUAL)) {
- device->getDeviceInfo(& deviceInfo);
- uint32_t sources = deviceInfo.getSources();
-
- if ((sources & AINPUT_SOURCE_TOUCHSCREEN) == AINPUT_SOURCE_TOUCHSCREEN) {
- touchScreenConfig = InputConfiguration::TOUCHSCREEN_FINGER;
- }
- if ((sources & AINPUT_SOURCE_TRACKBALL) == AINPUT_SOURCE_TRACKBALL) {
- navigationConfig = InputConfiguration::NAVIGATION_TRACKBALL;
- } else if ((sources & AINPUT_SOURCE_DPAD) == AINPUT_SOURCE_DPAD) {
- navigationConfig = InputConfiguration::NAVIGATION_DPAD;
- }
- if (deviceInfo.getKeyboardType() == AINPUT_KEYBOARD_TYPE_ALPHABETIC) {
- keyboardConfig = InputConfiguration::KEYBOARD_QWERTY;
- }
- }
- }
-
- mInputConfiguration.touchScreen = touchScreenConfig;
- mInputConfiguration.keyboard = keyboardConfig;
- mInputConfiguration.navigation = navigationConfig;
-}
-
void InputReader::disableVirtualKeysUntilLocked(nsecs_t time) {
mDisableVirtualKeysTimeout = time;
}
@@ -608,12 +574,6 @@
return ++mGeneration;
}
-void InputReader::getInputConfiguration(InputConfiguration* outConfiguration) {
- AutoMutex _l(mLock);
-
- *outConfiguration = mInputConfiguration;
-}
-
void InputReader::getInputDevices(Vector<InputDeviceInfo>& outInputDevices) {
AutoMutex _l(mLock);
getInputDevicesLocked(outInputDevices);
@@ -1049,7 +1009,7 @@
}
void InputDevice::getDeviceInfo(InputDeviceInfo* outDeviceInfo) {
- outDeviceInfo->initialize(mId, mGeneration, mIdentifier, mAlias);
+ outDeviceInfo->initialize(mId, mGeneration, mIdentifier, mAlias, mIsExternal);
size_t numMappers = mMappers.size();
for (size_t i = 0; i < numMappers; i++) {
diff --git a/services/input/InputReader.h b/services/input/InputReader.h
index 8257dbc..03198a6 100644
--- a/services/input/InputReader.h
+++ b/services/input/InputReader.h
@@ -259,12 +259,6 @@
*/
virtual void loopOnce() = 0;
- /* Gets the current input device configuration.
- *
- * This method may be called on any thread (usually by the input manager).
- */
- virtual void getInputConfiguration(InputConfiguration* outConfiguration) = 0;
-
/* Gets information about all input devices.
*
* This method may be called on any thread (usually by the input manager).
@@ -344,7 +338,6 @@
virtual void loopOnce();
- virtual void getInputConfiguration(InputConfiguration* outConfiguration);
virtual void getInputDevices(Vector<InputDeviceInfo>& outInputDevices);
virtual int32_t getScanCodeState(int32_t deviceId, uint32_t sourceMask,
@@ -425,9 +418,6 @@
int32_t mGeneration;
int32_t bumpGenerationLocked();
- InputConfiguration mInputConfiguration;
- void updateInputConfigurationLocked();
-
void getInputDevicesLocked(Vector<InputDeviceInfo>& outInputDevices);
nsecs_t mDisableVirtualKeysTimeout;
diff --git a/services/input/tests/InputReader_test.cpp b/services/input/tests/InputReader_test.cpp
index 0f755ae..abda10b 100644
--- a/services/input/tests/InputReader_test.cpp
+++ b/services/input/tests/InputReader_test.cpp
@@ -984,96 +984,6 @@
}
};
-TEST_F(InputReaderTest, GetInputConfiguration_WhenNoDevices_ReturnsDefaults) {
- InputConfiguration config;
- mReader->getInputConfiguration(&config);
-
- ASSERT_EQ(InputConfiguration::KEYBOARD_NOKEYS, config.keyboard);
- ASSERT_EQ(InputConfiguration::NAVIGATION_NONAV, config.navigation);
- ASSERT_EQ(InputConfiguration::TOUCHSCREEN_NOTOUCH, config.touchScreen);
-}
-
-TEST_F(InputReaderTest, GetInputConfiguration_WhenAlphabeticKeyboardPresent_ReturnsQwertyKeyboard) {
- ASSERT_NO_FATAL_FAILURE(addDevice(0, String8("keyboard"),
- INPUT_DEVICE_CLASS_KEYBOARD | INPUT_DEVICE_CLASS_ALPHAKEY, NULL));
-
- InputConfiguration config;
- mReader->getInputConfiguration(&config);
-
- ASSERT_EQ(InputConfiguration::KEYBOARD_QWERTY, config.keyboard);
- ASSERT_EQ(InputConfiguration::NAVIGATION_NONAV, config.navigation);
- ASSERT_EQ(InputConfiguration::TOUCHSCREEN_NOTOUCH, config.touchScreen);
-}
-
-TEST_F(InputReaderTest, GetInputConfiguration_WhenTouchScreenPresent_ReturnsFingerTouchScreen) {
- PropertyMap configuration;
- configuration.addProperty(String8("touch.deviceType"), String8("touchScreen"));
- ASSERT_NO_FATAL_FAILURE(addDevice(0, String8("touchscreen"),
- INPUT_DEVICE_CLASS_TOUCH, &configuration));
-
- InputConfiguration config;
- mReader->getInputConfiguration(&config);
-
- ASSERT_EQ(InputConfiguration::KEYBOARD_NOKEYS, config.keyboard);
- ASSERT_EQ(InputConfiguration::NAVIGATION_NONAV, config.navigation);
- ASSERT_EQ(InputConfiguration::TOUCHSCREEN_FINGER, config.touchScreen);
-}
-
-TEST_F(InputReaderTest, GetInputConfiguration_WhenTouchPadPresent_ReturnsFingerNoTouch) {
- ASSERT_NO_FATAL_FAILURE(addDevice(0, String8("touchpad"),
- INPUT_DEVICE_CLASS_TOUCH, NULL));
-
- InputConfiguration config;
- mReader->getInputConfiguration(&config);
-
- ASSERT_EQ(InputConfiguration::KEYBOARD_NOKEYS, config.keyboard);
- ASSERT_EQ(InputConfiguration::NAVIGATION_NONAV, config.navigation);
- ASSERT_EQ(InputConfiguration::TOUCHSCREEN_NOTOUCH, config.touchScreen);
-}
-
-TEST_F(InputReaderTest, GetInputConfiguration_WhenMousePresent_ReturnsNoNavigation) {
- sp<FakePointerController> controller = new FakePointerController();
- mFakePolicy->setPointerController(0, controller);
-
- PropertyMap configuration;
- configuration.addProperty(String8("cursor.mode"), String8("pointer"));
- ASSERT_NO_FATAL_FAILURE(addDevice(0, String8("mouse"),
- INPUT_DEVICE_CLASS_CURSOR, &configuration));
-
- InputConfiguration config;
- mReader->getInputConfiguration(&config);
-
- ASSERT_EQ(InputConfiguration::KEYBOARD_NOKEYS, config.keyboard);
- ASSERT_EQ(InputConfiguration::NAVIGATION_NONAV, config.navigation);
- ASSERT_EQ(InputConfiguration::TOUCHSCREEN_NOTOUCH, config.touchScreen);
-}
-
-TEST_F(InputReaderTest, GetInputConfiguration_WhenTrackballPresent_ReturnsTrackballNavigation) {
- PropertyMap configuration;
- configuration.addProperty(String8("cursor.mode"), String8("navigation"));
- ASSERT_NO_FATAL_FAILURE(addDevice(0, String8("trackball"),
- INPUT_DEVICE_CLASS_CURSOR, &configuration));
-
- InputConfiguration config;
- mReader->getInputConfiguration(&config);
-
- ASSERT_EQ(InputConfiguration::KEYBOARD_NOKEYS, config.keyboard);
- ASSERT_EQ(InputConfiguration::NAVIGATION_TRACKBALL, config.navigation);
- ASSERT_EQ(InputConfiguration::TOUCHSCREEN_NOTOUCH, config.touchScreen);
-}
-
-TEST_F(InputReaderTest, GetInputConfiguration_WhenDPadPresent_ReturnsDPadNavigation) {
- ASSERT_NO_FATAL_FAILURE(addDevice(0, String8("dpad"),
- INPUT_DEVICE_CLASS_DPAD, NULL));
-
- InputConfiguration config;
- mReader->getInputConfiguration(&config);
-
- ASSERT_EQ(InputConfiguration::KEYBOARD_NOKEYS, config.keyboard);
- ASSERT_EQ(InputConfiguration::NAVIGATION_DPAD, config.navigation);
- ASSERT_EQ(InputConfiguration::TOUCHSCREEN_NOTOUCH, config.touchScreen);
-}
-
TEST_F(InputReaderTest, GetInputDevices) {
ASSERT_NO_FATAL_FAILURE(addDevice(1, String8("keyboard"),
INPUT_DEVICE_CLASS_KEYBOARD, NULL));
diff --git a/services/java/com/android/server/AppWidgetService.java b/services/java/com/android/server/AppWidgetService.java
index 7e71b08..38f4554 100644
--- a/services/java/com/android/server/AppWidgetService.java
+++ b/services/java/com/android/server/AppWidgetService.java
@@ -279,13 +279,13 @@
}
@Override
- public void updateAppWidgetExtras(int appWidgetId, Bundle extras) {
- getImplForUser().updateAppWidgetExtras(appWidgetId, extras);
+ public void updateAppWidgetOptions(int appWidgetId, Bundle options) {
+ getImplForUser().updateAppWidgetOptions(appWidgetId, options);
}
@Override
- public Bundle getAppWidgetExtras(int appWidgetId) {
- return getImplForUser().getAppWidgetExtras(appWidgetId);
+ public Bundle getAppWidgetOptions(int appWidgetId) {
+ return getImplForUser().getAppWidgetOptions(appWidgetId);
}
static int[] getAppWidgetIds(Provider p) {
diff --git a/services/java/com/android/server/AppWidgetServiceImpl.java b/services/java/com/android/server/AppWidgetServiceImpl.java
index a0b8c531..23f2fdd 100644
--- a/services/java/com/android/server/AppWidgetServiceImpl.java
+++ b/services/java/com/android/server/AppWidgetServiceImpl.java
@@ -112,7 +112,7 @@
int appWidgetId;
Provider provider;
RemoteViews views;
- Bundle extras;
+ Bundle options;
Host host;
}
@@ -820,7 +820,7 @@
}
}
- public void updateAppWidgetExtras(int appWidgetId, Bundle extras) {
+ public void updateAppWidgetOptions(int appWidgetId, Bundle options) {
synchronized (mAppWidgetIds) {
ensureStateLoadedLocked();
AppWidgetId id = lookupAppWidgetIdLocked(appWidgetId);
@@ -829,23 +829,23 @@
return;
}
Provider p = id.provider;
- id.extras = extras;
+ id.options = options;
// send the broacast saying that this appWidgetId has been deleted
- Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_EXTRAS_CHANGED);
+ Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_OPTIONS_CHANGED);
intent.setComponent(p.info.provider);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, id.appWidgetId);
- intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_EXTRAS, extras);
+ intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_OPTIONS, options);
mContext.sendBroadcast(intent, mUserId);
}
}
- public Bundle getAppWidgetExtras(int appWidgetId) {
+ public Bundle getAppWidgetOptions(int appWidgetId) {
synchronized (mAppWidgetIds) {
ensureStateLoadedLocked();
AppWidgetId id = lookupAppWidgetIdLocked(appWidgetId);
- if (id != null && id.extras != null) {
- return id.extras;
+ if (id != null && id.options != null) {
+ return id.options;
} else {
return Bundle.EMPTY;
}
@@ -1595,15 +1595,15 @@
AtomicFile savedStateFile() {
File dir = new File("/data/system/users/" + mUserId);
File settingsFile = getSettingsFile(mUserId);
- if (!dir.exists()) {
- dir.mkdirs();
- if (mUserId == 0) {
- // Migrate old data
- File oldFile = new File("/data/system/" + SETTINGS_FILENAME);
- // Method doesn't throw an exception on failure. Ignore any errors
- // in moving the file (like non-existence)
- oldFile.renameTo(settingsFile);
+ if (!settingsFile.exists() && mUserId == 0) {
+ if (!dir.exists()) {
+ dir.mkdirs();
}
+ // Migrate old data
+ File oldFile = new File("/data/system/" + SETTINGS_FILENAME);
+ // Method doesn't throw an exception on failure. Ignore any errors
+ // in moving the file (like non-existence)
+ oldFile.renameTo(settingsFile);
}
return new AtomicFile(settingsFile);
}
diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java
index dd650bf..e396a69 100644
--- a/services/java/com/android/server/ConnectivityService.java
+++ b/services/java/com/android/server/ConnectivityService.java
@@ -884,22 +884,25 @@
@Override
public boolean isActiveNetworkMetered() {
enforceAccessPermission();
-
final long token = Binder.clearCallingIdentity();
try {
- final NetworkState state = getNetworkStateUnchecked(mActiveDefaultNetwork);
- if (state != null) {
- try {
- return mPolicyManager.isNetworkMetered(state);
- } catch (RemoteException e) {
- }
- }
- return false;
+ return isNetworkMeteredUnchecked(mActiveDefaultNetwork);
} finally {
Binder.restoreCallingIdentity(token);
}
}
+ private boolean isNetworkMeteredUnchecked(int networkType) {
+ final NetworkState state = getNetworkStateUnchecked(networkType);
+ if (state != null) {
+ try {
+ return mPolicyManager.isNetworkMetered(state);
+ } catch (RemoteException e) {
+ }
+ }
+ return false;
+ }
+
public boolean setRadios(boolean turnOn) {
boolean result = true;
enforceChangePermission();
@@ -993,7 +996,8 @@
public int startUsingNetworkFeature(int networkType, String feature,
IBinder binder) {
if (VDBG) {
- log("startUsingNetworkFeature for net " + networkType + ": " + feature);
+ log("startUsingNetworkFeature for net " + networkType + ": " + feature + ", uid="
+ + Binder.getCallingUid());
}
enforceChangePermission();
if (!ConnectivityManager.isNetworkTypeValid(networkType) ||
@@ -1010,6 +1014,16 @@
enforceConnectivityInternalPermission();
}
+ // if UID is restricted, don't allow them to bring up metered APNs
+ final boolean networkMetered = isNetworkMeteredUnchecked(usedNetworkType);
+ final int uidRules;
+ synchronized (mRulesLock) {
+ uidRules = mUidRules.get(Binder.getCallingUid(), RULE_ALLOW_ALL);
+ }
+ if (networkMetered && (uidRules & RULE_REJECT_METERED) != 0) {
+ return Phone.APN_REQUEST_FAILED;
+ }
+
NetworkStateTracker network = mNetTrackers[usedNetworkType];
if (network != null) {
Integer currentPid = new Integer(getCallingPid());
@@ -1432,7 +1446,6 @@
mUidRules.put(uid, uidRules);
}
- // TODO: dispatch into NMS to push rules towards kernel module
// TODO: notify UID when it has requested targeted updates
}
diff --git a/services/java/com/android/server/InputMethodManagerService.java b/services/java/com/android/server/InputMethodManagerService.java
index 43c2292..a49ccf7 100644
--- a/services/java/com/android/server/InputMethodManagerService.java
+++ b/services/java/com/android/server/InputMethodManagerService.java
@@ -39,6 +39,7 @@
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
+import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.Context;
@@ -110,6 +111,7 @@
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
+import java.util.Locale;
import java.util.TreeMap;
/**
@@ -152,6 +154,7 @@
private static final String TAG_ENABLED_WHEN_DEFAULT_IS_NOT_ASCII_CAPABLE =
"EnabledWhenDefaultIsNotAsciiCapable";
private static final String TAG_ASCII_CAPABLE = "AsciiCapable";
+ private static final Locale ENGLISH_LOCALE = new Locale("en");
final Context mContext;
final Resources mRes;
@@ -371,6 +374,7 @@
private View mSwitchingDialogTitleView;
private InputMethodInfo[] mIms;
private int[] mSubtypeIds;
+ private Locale mLastSystemLocale;
class SettingsObserver extends ContentObserver {
SettingsObserver(Handler handler) {
@@ -586,6 +590,7 @@
mImeSwitcherNotification.vibrate = null;
Intent intent = new Intent(Settings.ACTION_SHOW_INPUT_METHOD_PICKER);
mImeSwitchPendingIntent = PendingIntent.getBroadcast(mContext, 0, intent, 0);
+ mLastSystemLocale = mRes.getConfiguration().locale;
mShowOngoingImeSwitcherForPhones = false;
@@ -612,32 +617,102 @@
if (TextUtils.isEmpty(Settings.Secure.getString(
mContext.getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD))) {
- InputMethodInfo defIm = null;
- for (InputMethodInfo imi: mMethodList) {
- if (defIm == null && imi.getIsDefaultResourceId() != 0) {
- try {
- Resources res = context.createPackageContext(
- imi.getPackageName(), 0).getResources();
- if (res.getBoolean(imi.getIsDefaultResourceId())) {
- defIm = imi;
- Slog.i(TAG, "Selected default: " + imi.getId());
- }
- } catch (PackageManager.NameNotFoundException ex) {
- } catch (Resources.NotFoundException ex) {
- }
- }
- }
- if (defIm == null && mMethodList.size() > 0) {
- defIm = getMostApplicableDefaultIMELocked();
- Slog.i(TAG, "No default found, using " + defIm.getId());
- }
- if (defIm != null) {
- setSelectedInputMethodAndSubtypeLocked(defIm, NOT_A_SUBTYPE_ID, false);
- }
+ resetDefaultImeLocked(context);
}
mSettingsObserver = new SettingsObserver(mHandler);
updateFromSettingsLocked();
+
+ // IMMS wants to receive Intent.ACTION_LOCALE_CHANGED in order to update the current IME
+ // according to the new system locale.
+ final IntentFilter filter = new IntentFilter();
+ filter.addAction(Intent.ACTION_LOCALE_CHANGED);
+ mContext.registerReceiver(
+ new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ synchronized(mMethodMap) {
+ checkCurrentLocaleChangedLocked();
+ }
+ }
+ }, filter);
+ }
+
+ private void checkCurrentLocaleChangedLocked() {
+ final Locale newLocale = mRes.getConfiguration().locale;
+ if (newLocale != null && !newLocale.equals(mLastSystemLocale)) {
+ if (DEBUG) {
+ Slog.i(TAG, "Locale has been changed to " + newLocale);
+ }
+ buildInputMethodListLocked(mMethodList, mMethodMap);
+ // Reset the current ime to the proper one
+ resetDefaultImeLocked(mContext);
+ mLastSystemLocale = newLocale;
+ }
+ }
+
+ private void resetDefaultImeLocked(Context context) {
+ // Do not reset the default (current) IME when it is a 3rd-party IME
+ if (mCurMethodId != null && !isSystemIme(mMethodMap.get(mCurMethodId))) {
+ return;
+ }
+
+ InputMethodInfo defIm = null;
+ for (InputMethodInfo imi : mMethodList) {
+ if (defIm == null) {
+ if (isValidSystemDefaultIme(imi, context)) {
+ defIm = imi;
+ Slog.i(TAG, "Selected default: " + imi.getId());
+ }
+ }
+ }
+ if (defIm == null && mMethodList.size() > 0) {
+ defIm = getMostApplicableDefaultIMELocked();
+ Slog.i(TAG, "No default found, using " + defIm.getId());
+ }
+ if (defIm != null) {
+ setSelectedInputMethodAndSubtypeLocked(defIm, NOT_A_SUBTYPE_ID, false);
+ }
+ }
+
+ private static boolean isValidSystemDefaultIme(InputMethodInfo imi, Context context) {
+ if (!isSystemIme(imi)) {
+ return false;
+ }
+ if (imi.getIsDefaultResourceId() != 0) {
+ try {
+ Resources res = context.createPackageContext(
+ imi.getPackageName(), 0).getResources();
+ if (res.getBoolean(imi.getIsDefaultResourceId())
+ && containsSubtypeOf(imi, context.getResources().getConfiguration().
+ locale.getLanguage())) {
+ return true;
+ }
+ } catch (PackageManager.NameNotFoundException ex) {
+ } catch (Resources.NotFoundException ex) {
+ }
+ }
+ if (imi.getSubtypeCount() == 0) {
+ Slog.w(TAG, "Found no subtypes in a system IME: " + imi.getPackageName());
+ }
+ return false;
+ }
+
+ private static boolean isSystemImeThatHasEnglishSubtype(InputMethodInfo imi) {
+ if (!isSystemIme(imi)) {
+ return false;
+ }
+ return containsSubtypeOf(imi, ENGLISH_LOCALE.getLanguage());
+ }
+
+ private static boolean containsSubtypeOf(InputMethodInfo imi, String language) {
+ final int N = imi.getSubtypeCount();
+ for (int i = 0; i < N; ++i) {
+ if (imi.getSubtypeAt(i).getLocale().startsWith(language)) {
+ return true;
+ }
+ }
+ return false;
}
@Override
@@ -663,6 +738,7 @@
mContext.getSystemService(Context.KEYGUARD_SERVICE);
mNotificationManager = (NotificationManager)
mContext.getSystemService(Context.NOTIFICATION_SERVICE);
+ mLastSystemLocale = mContext.getResources().getConfiguration().locale;
mStatusBar = statusBar;
statusBar.setIconVisibility("ime", false);
updateImeWindowStatusLocked();
@@ -1066,6 +1142,10 @@
if (mCurToken != null) {
try {
if (DEBUG) Slog.v(TAG, "Removing window token: " + mCurToken);
+ if ((mImeWindowVis & InputMethodService.IME_ACTIVE) != 0) {
+ // The current IME is shown. Hence an IME switch (transition) is happening.
+ mWindowManagerService.saveLastInputMethodWindowForTransition();
+ }
mIWindowManager.removeWindowToken(mCurToken);
} catch (RemoteException e) {
}
@@ -2043,7 +2123,7 @@
return false;
}
- private boolean isSystemIme(InputMethodInfo inputMethod) {
+ private static boolean isSystemIme(InputMethodInfo inputMethod) {
return (inputMethod.getServiceInfo().applicationInfo.flags
& ApplicationInfo.FLAG_SYSTEM) != 0;
}
@@ -2139,9 +2219,11 @@
final String id = p.getId();
map.put(id, p);
- // System IMEs are enabled by default, unless there's a hard keyboard
- // and the system IME was explicitly disabled
- if (isSystemIme(p) && (!haveHardKeyboard || disabledSysImes.indexOf(id) < 0)) {
+ // Valid system default IMEs and IMEs that have English subtypes are enabled
+ // by default, unless there's a hard keyboard and the system IME was explicitly
+ // disabled
+ if ((isValidSystemDefaultIme(p, mContext) || isSystemImeThatHasEnglishSubtype(p))
+ && (!haveHardKeyboard || disabledSysImes.indexOf(id) < 0)) {
setInputMethodEnabledLocked(id, true);
}
@@ -2332,17 +2414,63 @@
}
}
- private static class ImeSubtypeListItem {
+ private static class ImeSubtypeListItem implements Comparable<ImeSubtypeListItem> {
public final CharSequence mImeName;
public final CharSequence mSubtypeName;
public final InputMethodInfo mImi;
public final int mSubtypeId;
+ private final boolean mIsSystemLocale;
+ private final boolean mIsSystemLanguage;
+
public ImeSubtypeListItem(CharSequence imeName, CharSequence subtypeName,
- InputMethodInfo imi, int subtypeId) {
+ InputMethodInfo imi, int subtypeId, String subtypeLocale, String systemLocale) {
mImeName = imeName;
mSubtypeName = subtypeName;
mImi = imi;
mSubtypeId = subtypeId;
+ if (TextUtils.isEmpty(subtypeLocale)) {
+ mIsSystemLocale = false;
+ mIsSystemLanguage = false;
+ } else {
+ mIsSystemLocale = subtypeLocale.equals(systemLocale);
+ mIsSystemLanguage = mIsSystemLocale
+ || subtypeLocale.startsWith(systemLocale.substring(0, 2));
+ }
+ }
+
+ @Override
+ public int compareTo(ImeSubtypeListItem other) {
+ if (TextUtils.isEmpty(mImeName)) {
+ return 1;
+ }
+ if (TextUtils.isEmpty(other.mImeName)) {
+ return -1;
+ }
+ if (!TextUtils.equals(mImeName, other.mImeName)) {
+ return mImeName.toString().compareTo(other.mImeName.toString());
+ }
+ if (TextUtils.equals(mSubtypeName, other.mSubtypeName)) {
+ return 0;
+ }
+ if (mIsSystemLocale) {
+ return -1;
+ }
+ if (other.mIsSystemLocale) {
+ return 1;
+ }
+ if (mIsSystemLanguage) {
+ return -1;
+ }
+ if (other.mIsSystemLanguage) {
+ return 1;
+ }
+ if (TextUtils.isEmpty(mSubtypeName)) {
+ return 1;
+ }
+ if (TextUtils.isEmpty(other.mSubtypeName)) {
+ return -1;
+ }
+ return mSubtypeName.toString().compareTo(other.mSubtypeName.toString());
}
}
@@ -2541,7 +2669,11 @@
return getSubtypeIdFromHashCode(imi, subtypeId);
}
- private int getSubtypeIdFromHashCode(InputMethodInfo imi, int subtypeHashCode) {
+ private static boolean isValidSubtypeId(InputMethodInfo imi, int subtypeHashCode) {
+ return getSubtypeIdFromHashCode(imi, subtypeHashCode) != NOT_A_SUBTYPE_ID;
+ }
+
+ private static int getSubtypeIdFromHashCode(InputMethodInfo imi, int subtypeHashCode) {
if (imi != null) {
final int subtypeCount = imi.getSubtypeCount();
for (int i = 0; i < subtypeCount; ++i) {
@@ -2766,6 +2898,9 @@
*/
@Override
public InputMethodSubtype getCurrentInputMethodSubtype() {
+ if (mCurMethodId == null) {
+ return null;
+ }
boolean subtypeIsSelected = false;
try {
subtypeIsSelected = Settings.Secure.getInt(mContext.getContentResolver(),
@@ -2773,36 +2908,35 @@
} catch (SettingNotFoundException e) {
}
synchronized (mMethodMap) {
- if (!subtypeIsSelected || mCurrentSubtype == null) {
- String lastInputMethodId = Settings.Secure.getString(
- mContext.getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD);
- int subtypeId = getSelectedInputMethodSubtypeId(lastInputMethodId);
+ final InputMethodInfo imi = mMethodMap.get(mCurMethodId);
+ if (imi == null || imi.getSubtypeCount() == 0) {
+ return null;
+ }
+ if (!subtypeIsSelected || mCurrentSubtype == null
+ || !isValidSubtypeId(imi, mCurrentSubtype.hashCode())) {
+ int subtypeId = getSelectedInputMethodSubtypeId(mCurMethodId);
if (subtypeId == NOT_A_SUBTYPE_ID) {
- InputMethodInfo imi = mMethodMap.get(lastInputMethodId);
- if (imi != null) {
- // If there are no selected subtypes, the framework will try to find
- // the most applicable subtype from explicitly or implicitly enabled
- // subtypes.
- List<InputMethodSubtype> explicitlyOrImplicitlyEnabledSubtypes =
- getEnabledInputMethodSubtypeList(imi, true);
- // If there is only one explicitly or implicitly enabled subtype,
- // just returns it.
- if (explicitlyOrImplicitlyEnabledSubtypes.size() == 1) {
- mCurrentSubtype = explicitlyOrImplicitlyEnabledSubtypes.get(0);
- } else if (explicitlyOrImplicitlyEnabledSubtypes.size() > 1) {
+ // If there are no selected subtypes, the framework will try to find
+ // the most applicable subtype from explicitly or implicitly enabled
+ // subtypes.
+ List<InputMethodSubtype> explicitlyOrImplicitlyEnabledSubtypes =
+ getEnabledInputMethodSubtypeList(imi, true);
+ // If there is only one explicitly or implicitly enabled subtype,
+ // just returns it.
+ if (explicitlyOrImplicitlyEnabledSubtypes.size() == 1) {
+ mCurrentSubtype = explicitlyOrImplicitlyEnabledSubtypes.get(0);
+ } else if (explicitlyOrImplicitlyEnabledSubtypes.size() > 1) {
+ mCurrentSubtype = findLastResortApplicableSubtypeLocked(
+ mRes, explicitlyOrImplicitlyEnabledSubtypes,
+ SUBTYPE_MODE_KEYBOARD, null, true);
+ if (mCurrentSubtype == null) {
mCurrentSubtype = findLastResortApplicableSubtypeLocked(
- mRes, explicitlyOrImplicitlyEnabledSubtypes,
- SUBTYPE_MODE_KEYBOARD, null, true);
- if (mCurrentSubtype == null) {
- mCurrentSubtype = findLastResortApplicableSubtypeLocked(
- mRes, explicitlyOrImplicitlyEnabledSubtypes, null, null,
- true);
- }
+ mRes, explicitlyOrImplicitlyEnabledSubtypes, null, null,
+ true);
}
}
} else {
- mCurrentSubtype =
- getSubtypes(mMethodMap.get(lastInputMethodId)).get(subtypeId);
+ mCurrentSubtype = getSubtypes(imi).get(subtypeId);
}
}
return mCurrentSubtype;
@@ -2868,10 +3002,13 @@
private final Context mContext;
private final PackageManager mPm;
private final InputMethodManagerService mImms;
+ private final String mSystemLocaleStr;
public InputMethodAndSubtypeListManager(Context context, InputMethodManagerService imms) {
mContext = context;
mPm = context.getPackageManager();
mImms = imms;
+ mSystemLocaleStr =
+ imms.mLastSystemLocale != null ? imms.mLastSystemLocale.toString() : "";
}
private final TreeMap<InputMethodInfo, List<InputMethodSubtype>> mSortedImmis =
@@ -2901,7 +3038,7 @@
}
final int N = imList.size();
final int currentSubtypeId = subtype != null
- ? mImms.getSubtypeIdFromHashCode(imi, subtype.hashCode())
+ ? getSubtypeIdFromHashCode(imi, subtype.hashCode())
: NOT_A_SUBTYPE_ID;
for (int i = 0; i < N; ++i) {
final ImeSubtypeListItem isli = imList.get(i);
@@ -2959,7 +3096,8 @@
subtype.overridesImplicitlyEnabledSubtype() ? null
: subtype.getDisplayName(mContext, imi.getPackageName(),
imi.getServiceInfo().applicationInfo);
- imList.add(new ImeSubtypeListItem(imeLabel, subtypeLabel, imi, j));
+ imList.add(new ImeSubtypeListItem(imeLabel, subtypeLabel, imi, j,
+ subtype.getLocale(), mSystemLocaleStr));
// Removing this subtype from enabledSubtypeSet because we no longer
// need to add an entry of this subtype to imList to avoid duplicated
@@ -2968,9 +3106,11 @@
}
}
} else {
- imList.add(new ImeSubtypeListItem(imeLabel, null, imi, NOT_A_SUBTYPE_ID));
+ imList.add(new ImeSubtypeListItem(imeLabel, null, imi, NOT_A_SUBTYPE_ID,
+ null, mSystemLocaleStr));
}
}
+ Collections.sort(imList);
return imList;
}
}
@@ -3278,10 +3418,10 @@
for (Pair<String, ArrayList<String>> enabledIme: enabledImes) {
if (enabledIme.first.equals(imeId)) {
final ArrayList<String> explicitlyEnabledSubtypes = enabledIme.second;
+ final InputMethodInfo imi = mMethodMap.get(imeId);
if (explicitlyEnabledSubtypes.size() == 0) {
// If there are no explicitly enabled subtypes, applicable subtypes are
// enabled implicitly.
- InputMethodInfo imi = mMethodMap.get(imeId);
// If IME is enabled and no subtypes are enabled, applicable subtypes
// are enabled implicitly, so needs to treat them to be enabled.
if (imi != null && imi.getSubtypeCount() > 0) {
@@ -3301,7 +3441,17 @@
for (String s: explicitlyEnabledSubtypes) {
if (s.equals(subtypeHashCode)) {
// If both imeId and subtypeId are enabled, return subtypeId.
- return s;
+ try {
+ final int hashCode = Integer.valueOf(subtypeHashCode);
+ // Check whether the subtype id is valid or not
+ if (isValidSubtypeId(imi, hashCode)) {
+ return s;
+ } else {
+ return NOT_A_SUBTYPE_ID_STR;
+ }
+ } catch (NumberFormatException e) {
+ return NOT_A_SUBTYPE_ID_STR;
+ }
}
}
}
diff --git a/services/java/com/android/server/LocationManagerService.java b/services/java/com/android/server/LocationManagerService.java
index d651111..4582d67 100644
--- a/services/java/com/android/server/LocationManagerService.java
+++ b/services/java/com/android/server/LocationManagerService.java
@@ -489,6 +489,7 @@
mNetworkLocationProvider =
new LocationProviderProxy(mContext, LocationManager.NETWORK_PROVIDER,
mNetworkLocationProviderPackageName, mLocationHandler);
+
addProvider(mNetworkLocationProvider);
}
@@ -1156,11 +1157,11 @@
if (p == null) {
throw new IllegalArgumentException("provider=" + provider);
}
-
receiver.requiredPermissions = checkPermissionsSafe(provider,
receiver.requiredPermissions);
// so wakelock calls will succeed
+ final int callingPid = Binder.getCallingPid();
final int callingUid = Binder.getCallingUid();
boolean newUid = !providerHasListener(provider, callingUid, null);
long identity = Binder.clearCallingIdentity();
@@ -1179,6 +1180,8 @@
boolean isProviderEnabled = isAllowedBySettingsLocked(provider);
if (isProviderEnabled) {
long minTimeForProvider = getMinTimeLocked(provider);
+ Slog.i(TAG, "request " + provider + " (pid " + callingPid + ") " + minTime +
+ " " + minTimeForProvider + (singleShot ? " (singleshot)" : ""));
p.setMinTime(minTimeForProvider, mTmpWorkSource);
// try requesting single shot if singleShot is true, and fall back to
// regular location tracking if requestSingleShotFix() is not supported
@@ -1231,6 +1234,7 @@
}
// so wakelock calls will succeed
+ final int callingPid = Binder.getCallingPid();
final int callingUid = Binder.getCallingUid();
long identity = Binder.clearCallingIdentity();
try {
@@ -1280,8 +1284,13 @@
LocationProviderInterface p = mProvidersByName.get(provider);
if (p != null) {
if (hasOtherListener) {
- p.setMinTime(getMinTimeLocked(provider), mTmpWorkSource);
+ long minTime = getMinTimeLocked(provider);
+ Slog.i(TAG, "remove " + provider + " (pid " + callingPid +
+ "), next minTime = " + minTime);
+ p.setMinTime(minTime, mTmpWorkSource);
} else {
+ Slog.i(TAG, "remove " + provider + " (pid " + callingPid +
+ "), disabled");
p.enableLocationTracking(false);
}
}
diff --git a/services/java/com/android/server/NetworkManagementService.java b/services/java/com/android/server/NetworkManagementService.java
index 09d0698..4536a6d 100644
--- a/services/java/com/android/server/NetworkManagementService.java
+++ b/services/java/com/android/server/NetworkManagementService.java
@@ -23,7 +23,6 @@
import static android.net.NetworkStats.TAG_NONE;
import static android.net.NetworkStats.UID_ALL;
import static android.net.TrafficStats.UID_TETHERING;
-import static android.provider.Settings.Secure.NETSTATS_ENABLED;
import static com.android.server.NetworkManagementService.NetdResponseCode.InterfaceGetCfgResult;
import static com.android.server.NetworkManagementService.NetdResponseCode.InterfaceListResult;
import static com.android.server.NetworkManagementService.NetdResponseCode.InterfaceRxThrottleResult;
@@ -45,19 +44,19 @@
import android.net.RouteInfo;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiConfiguration.KeyMgmt;
+import android.os.Handler;
import android.os.INetworkManagementService;
import android.os.RemoteCallbackList;
import android.os.RemoteException;
import android.os.SystemClock;
import android.os.SystemProperties;
-import android.provider.Settings;
import android.util.Log;
import android.util.Slog;
import android.util.SparseBooleanArray;
import com.android.internal.net.NetworkStatsFactory;
import com.android.server.NativeDaemonConnector.Command;
-import com.google.android.collect.Sets;
+import com.google.android.collect.Maps;
import java.io.BufferedReader;
import java.io.DataInputStream;
@@ -74,7 +73,8 @@
import java.net.SocketException;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.HashSet;
+import java.util.HashMap;
+import java.util.Map;
import java.util.NoSuchElementException;
import java.util.StringTokenizer;
import java.util.concurrent.CountDownLatch;
@@ -133,8 +133,10 @@
*/
private NativeDaemonConnector mConnector;
+ private final Handler mMainHandler = new Handler();
+
private Thread mThread;
- private final CountDownLatch mConnectedSignal = new CountDownLatch(1);
+ private CountDownLatch mConnectedSignal = new CountDownLatch(1);
private final RemoteCallbackList<INetworkManagementEventObserver> mObservers =
new RemoteCallbackList<INetworkManagementEventObserver>();
@@ -143,9 +145,9 @@
private Object mQuotaLock = new Object();
/** Set of interfaces with active quotas. */
- private HashSet<String> mActiveQuotaIfaces = Sets.newHashSet();
+ private HashMap<String, Long> mActiveQuotas = Maps.newHashMap();
/** Set of interfaces with active alerts. */
- private HashSet<String> mActiveAlertIfaces = Sets.newHashSet();
+ private HashMap<String, Long> mActiveAlerts = Maps.newHashMap();
/** Set of UIDs with active reject rules. */
private SparseBooleanArray mUidRejectOnQuota = new SparseBooleanArray();
@@ -172,35 +174,19 @@
}
public static NetworkManagementService create(Context context) throws InterruptedException {
- NetworkManagementService service = new NetworkManagementService(context);
+ final NetworkManagementService service = new NetworkManagementService(context);
+ final CountDownLatch connectedSignal = service.mConnectedSignal;
if (DBG) Slog.d(TAG, "Creating NetworkManagementService");
service.mThread.start();
if (DBG) Slog.d(TAG, "Awaiting socket connection");
- service.mConnectedSignal.await();
+ connectedSignal.await();
if (DBG) Slog.d(TAG, "Connected");
return service;
}
public void systemReady() {
- // only enable bandwidth control when support exists, and requested by
- // system setting.
- final boolean hasKernelSupport = new File("/proc/net/xt_qtaguid/ctrl").exists();
- final boolean shouldEnable =
- Settings.Secure.getInt(mContext.getContentResolver(), NETSTATS_ENABLED, 1) != 0;
-
- if (hasKernelSupport && shouldEnable) {
- Slog.d(TAG, "enabling bandwidth control");
- try {
- mConnector.execute("bandwidth", "enable");
- mBandwidthControlEnabled = true;
- } catch (NativeDaemonConnectorException e) {
- Log.wtf(TAG, "problem enabling bandwidth controls", e);
- }
- } else {
- Slog.d(TAG, "not enabling bandwidth control");
- }
-
- SystemProperties.set(PROP_QTAGUID_ENABLED, mBandwidthControlEnabled ? "1" : "0");
+ prepareNativeDaemon();
+ if (DBG) Slog.d(TAG, "Prepared");
}
@Override
@@ -264,8 +250,8 @@
private void notifyInterfaceRemoved(String iface) {
// netd already clears out quota and alerts for removed ifaces; update
// our sanity-checking state.
- mActiveAlertIfaces.remove(iface);
- mActiveQuotaIfaces.remove(iface);
+ mActiveAlerts.remove(iface);
+ mActiveQuotas.remove(iface);
final int length = mObservers.beginBroadcast();
for (int i = 0; i < length; i++) {
@@ -292,24 +278,85 @@
}
/**
- * Let us know the daemon is connected
+ * Prepare native daemon once connected, enabling modules and pushing any
+ * existing in-memory rules.
*/
- protected void onDaemonConnected() {
- mConnectedSignal.countDown();
- }
+ private void prepareNativeDaemon() {
+ mBandwidthControlEnabled = false;
+ // only enable bandwidth control when support exists
+ final boolean hasKernelSupport = new File("/proc/net/xt_qtaguid/ctrl").exists();
+ if (hasKernelSupport) {
+ Slog.d(TAG, "enabling bandwidth control");
+ try {
+ mConnector.execute("bandwidth", "enable");
+ mBandwidthControlEnabled = true;
+ } catch (NativeDaemonConnectorException e) {
+ Log.wtf(TAG, "problem enabling bandwidth controls", e);
+ }
+ } else {
+ Slog.d(TAG, "not enabling bandwidth control");
+ }
+
+ SystemProperties.set(PROP_QTAGUID_ENABLED, mBandwidthControlEnabled ? "1" : "0");
+
+ // push any existing quota or UID rules
+ synchronized (mQuotaLock) {
+ int size = mActiveQuotas.size();
+ if (size > 0) {
+ Slog.d(TAG, "pushing " + size + " active quota rules");
+ final HashMap<String, Long> activeQuotas = mActiveQuotas;
+ mActiveQuotas = Maps.newHashMap();
+ for (Map.Entry<String, Long> entry : activeQuotas.entrySet()) {
+ setInterfaceQuota(entry.getKey(), entry.getValue());
+ }
+ }
+
+ size = mActiveAlerts.size();
+ if (size > 0) {
+ Slog.d(TAG, "pushing " + size + " active alert rules");
+ final HashMap<String, Long> activeAlerts = mActiveAlerts;
+ mActiveAlerts = Maps.newHashMap();
+ for (Map.Entry<String, Long> entry : activeAlerts.entrySet()) {
+ setInterfaceAlert(entry.getKey(), entry.getValue());
+ }
+ }
+
+ size = mUidRejectOnQuota.size();
+ if (size > 0) {
+ Slog.d(TAG, "pushing " + size + " active uid rules");
+ final SparseBooleanArray uidRejectOnQuota = mUidRejectOnQuota;
+ mUidRejectOnQuota = new SparseBooleanArray();
+ for (int i = 0; i < uidRejectOnQuota.size(); i++) {
+ setUidNetworkRules(uidRejectOnQuota.keyAt(i), uidRejectOnQuota.valueAt(i));
+ }
+ }
+ }
+ }
//
// Netd Callback handling
//
- class NetdCallbackReceiver implements INativeDaemonConnectorCallbacks {
- /** {@inheritDoc} */
+ private class NetdCallbackReceiver implements INativeDaemonConnectorCallbacks {
+ @Override
public void onDaemonConnected() {
- NetworkManagementService.this.onDaemonConnected();
+ // event is dispatched from internal NDC thread, so we prepare the
+ // daemon back on main thread.
+ if (mConnectedSignal != null) {
+ mConnectedSignal.countDown();
+ mConnectedSignal = null;
+ } else {
+ mMainHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ prepareNativeDaemon();
+ }
+ });
+ }
}
- /** {@inheritDoc} */
+ @Override
public boolean onEvent(int code, String raw, String[] cooked) {
switch (code) {
case NetdResponseCode.InterfaceChange:
@@ -942,9 +989,15 @@
}
@Override
- public NetworkStats getNetworkStatsSummary() {
+ public NetworkStats getNetworkStatsSummaryDev() {
mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
- return mStatsFactory.readNetworkStatsSummary();
+ return mStatsFactory.readNetworkStatsSummaryDev();
+ }
+
+ @Override
+ public NetworkStats getNetworkStatsSummaryXt() {
+ mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
+ return mStatsFactory.readNetworkStatsSummaryXt();
}
@Override
@@ -962,14 +1015,14 @@
if (!mBandwidthControlEnabled) return;
synchronized (mQuotaLock) {
- if (mActiveQuotaIfaces.contains(iface)) {
+ if (mActiveQuotas.containsKey(iface)) {
throw new IllegalStateException("iface " + iface + " already has quota");
}
try {
// TODO: support quota shared across interfaces
mConnector.execute("bandwidth", "setiquota", iface, quotaBytes);
- mActiveQuotaIfaces.add(iface);
+ mActiveQuotas.put(iface, quotaBytes);
} catch (NativeDaemonConnectorException e) {
throw e.rethrowAsParcelableException();
}
@@ -985,13 +1038,13 @@
if (!mBandwidthControlEnabled) return;
synchronized (mQuotaLock) {
- if (!mActiveQuotaIfaces.contains(iface)) {
+ if (!mActiveQuotas.containsKey(iface)) {
// TODO: eventually consider throwing
return;
}
- mActiveQuotaIfaces.remove(iface);
- mActiveAlertIfaces.remove(iface);
+ mActiveQuotas.remove(iface);
+ mActiveAlerts.remove(iface);
try {
// TODO: support quota shared across interfaces
@@ -1011,19 +1064,19 @@
if (!mBandwidthControlEnabled) return;
// quick sanity check
- if (!mActiveQuotaIfaces.contains(iface)) {
+ if (!mActiveQuotas.containsKey(iface)) {
throw new IllegalStateException("setting alert requires existing quota on iface");
}
synchronized (mQuotaLock) {
- if (mActiveAlertIfaces.contains(iface)) {
+ if (mActiveAlerts.containsKey(iface)) {
throw new IllegalStateException("iface " + iface + " already has alert");
}
try {
// TODO: support alert shared across interfaces
mConnector.execute("bandwidth", "setinterfacealert", iface, alertBytes);
- mActiveAlertIfaces.add(iface);
+ mActiveAlerts.put(iface, alertBytes);
} catch (NativeDaemonConnectorException e) {
throw e.rethrowAsParcelableException();
}
@@ -1039,7 +1092,7 @@
if (!mBandwidthControlEnabled) return;
synchronized (mQuotaLock) {
- if (!mActiveAlertIfaces.contains(iface)) {
+ if (!mActiveAlerts.containsKey(iface)) {
// TODO: eventually consider throwing
return;
}
@@ -1047,7 +1100,7 @@
try {
// TODO: support alert shared across interfaces
mConnector.execute("bandwidth", "removeinterfacealert", iface);
- mActiveAlertIfaces.remove(iface);
+ mActiveAlerts.remove(iface);
} catch (NativeDaemonConnectorException e) {
throw e.rethrowAsParcelableException();
}
@@ -1077,7 +1130,7 @@
// TODO: eventually migrate to be always enabled
if (!mBandwidthControlEnabled) return;
- synchronized (mUidRejectOnQuota) {
+ synchronized (mQuotaLock) {
final boolean oldRejectOnQuota = mUidRejectOnQuota.get(uid, false);
if (oldRejectOnQuota == rejectOnQuotaInterfaces) {
// TODO: eventually consider throwing
@@ -1272,8 +1325,8 @@
pw.print("Bandwidth control enabled: "); pw.println(mBandwidthControlEnabled);
synchronized (mQuotaLock) {
- pw.print("Active quota ifaces: "); pw.println(mActiveQuotaIfaces.toString());
- pw.print("Active alert ifaces: "); pw.println(mActiveAlertIfaces.toString());
+ pw.print("Active quota ifaces: "); pw.println(mActiveQuotas.toString());
+ pw.print("Active alert ifaces: "); pw.println(mActiveAlerts.toString());
}
synchronized (mUidRejectOnQuota) {
diff --git a/services/java/com/android/server/NetworkTimeUpdateService.java b/services/java/com/android/server/NetworkTimeUpdateService.java
index 1ff914f..76972bc 100644
--- a/services/java/com/android/server/NetworkTimeUpdateService.java
+++ b/services/java/com/android/server/NetworkTimeUpdateService.java
@@ -165,9 +165,15 @@
if (mTime.getCacheAge() < POLLING_INTERVAL_MS) {
final long ntp = mTime.currentTimeMillis();
mTryAgainCounter = 0;
- mLastNtpFetchTime = SystemClock.elapsedRealtime();
- if (Math.abs(ntp - currentTime) > TIME_ERROR_THRESHOLD_MS) {
+ // If the clock is more than N seconds off or this is the first time it's been
+ // fetched since boot, set the current time.
+ if (Math.abs(ntp - currentTime) > TIME_ERROR_THRESHOLD_MS
+ || mLastNtpFetchTime == NOT_SET) {
// Set the system time
+ if (DBG && mLastNtpFetchTime == NOT_SET
+ && Math.abs(ntp - currentTime) <= TIME_ERROR_THRESHOLD_MS) {
+ Log.d(TAG, "For initial setup, rtc = " + currentTime);
+ }
if (DBG) Log.d(TAG, "Ntp time to be set = " + ntp);
// Make sure we don't overflow, since it's going to be converted to an int
if (ntp / 1000 < Integer.MAX_VALUE) {
@@ -176,6 +182,7 @@
} else {
if (DBG) Log.d(TAG, "Ntp time is close enough = " + ntp);
}
+ mLastNtpFetchTime = SystemClock.elapsedRealtime();
} else {
// Try again shortly
mTryAgainCounter++;
diff --git a/services/java/com/android/server/NotificationManagerService.java b/services/java/com/android/server/NotificationManagerService.java
index 663a031..52ba665 100755
--- a/services/java/com/android/server/NotificationManagerService.java
+++ b/services/java/com/android/server/NotificationManagerService.java
@@ -1046,7 +1046,7 @@
final boolean useDefaultVibrate =
(notification.defaults & Notification.DEFAULT_VIBRATE) != 0;
if ((useDefaultVibrate || notification.vibrate != null)
- && audioManager.shouldVibrate(AudioManager.VIBRATE_TYPE_NOTIFICATION)) {
+ && !(audioManager.getRingerMode() == AudioManager.RINGER_MODE_SILENT)) {
mVibrateNotification = r;
mVibrator.vibrate(useDefaultVibrate ? DEFAULT_VIBRATE_PATTERN
diff --git a/services/java/com/android/server/PowerManagerService.java b/services/java/com/android/server/PowerManagerService.java
index 9a371c6..5799f2b 100644
--- a/services/java/com/android/server/PowerManagerService.java
+++ b/services/java/com/android/server/PowerManagerService.java
@@ -2521,7 +2521,8 @@
return val;
} catch (Exception e) {
// guard against null pointer or index out of bounds errors
- Slog.e(TAG, "getAutoBrightnessValue", e);
+ Slog.e(TAG, "Values array must be non-empty and must be one element longer than "
+ + "the auto-brightness levels array. Check config.xml.", e);
return 255;
}
}
@@ -2708,6 +2709,12 @@
}
private void goToSleepLocked(long time, int reason) {
+ if (mSpew) {
+ Exception ex = new Exception();
+ ex.fillInStackTrace();
+ Slog.d(TAG, "goToSleep mLastEventTime=" + mLastEventTime + " time=" + time
+ + " reason=" + reason, ex);
+ }
if (mLastEventTime <= time) {
mLastEventTime = time;
diff --git a/services/java/com/android/server/ThrottleService.java b/services/java/com/android/server/ThrottleService.java
index 2155147..f35a5af 100644
--- a/services/java/com/android/server/ThrottleService.java
+++ b/services/java/com/android/server/ThrottleService.java
@@ -511,7 +511,7 @@
long incRead = 0;
long incWrite = 0;
try {
- final NetworkStats stats = mNMService.getNetworkStatsSummary();
+ final NetworkStats stats = mNMService.getNetworkStatsSummaryDev();
final int index = stats.findIndex(mIface, NetworkStats.UID_ALL,
NetworkStats.SET_DEFAULT, NetworkStats.TAG_NONE);
diff --git a/services/java/com/android/server/VibratorService.java b/services/java/com/android/server/VibratorService.java
index 6282c31..b609867 100755
--- a/services/java/com/android/server/VibratorService.java
+++ b/services/java/com/android/server/VibratorService.java
@@ -391,9 +391,15 @@
}
private boolean doVibratorExists() {
- synchronized (mInputDeviceVibrators) {
- return !mInputDeviceVibrators.isEmpty() || vibratorExists();
- }
+ // For now, we choose to ignore the presence of input devices that have vibrators
+ // when reporting whether the device has a vibrator. Applications often use this
+ // information to decide whether to enable certain features so they expect the
+ // result of hasVibrator() to be constant. For now, just report whether
+ // the device has a built-in vibrator.
+ //synchronized (mInputDeviceVibrators) {
+ // return !mInputDeviceVibrators.isEmpty() || vibratorExists();
+ //}
+ return vibratorExists();
}
private void doVibratorOn(long millis) {
diff --git a/services/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/java/com/android/server/accessibility/AccessibilityManagerService.java
index 885389f..e447218 100644
--- a/services/java/com/android/server/accessibility/AccessibilityManagerService.java
+++ b/services/java/com/android/server/accessibility/AccessibilityManagerService.java
@@ -1251,7 +1251,6 @@
mContext, 0, new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS), 0));
} else {
mCanRetrieveScreenContent = true;
- mIncludeNotImportantViews = true;
mCanHandleGestures = true;
}
setDynamicallyConfigurableProperties(accessibilityServiceInfo);
@@ -1701,17 +1700,17 @@
| AccessibilityNodeInfo.ACTION_CLEAR_SELECTION
| AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS
| AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS
- | AccessibilityNodeInfo.ACTION_NEXT_AT_GRANULARITY
- | AccessibilityNodeInfo.ACTION_PREVIOUS_AT_GRANULARITY
+ | AccessibilityNodeInfo.ACTION_NEXT_AT_MOVEMENT_GRANULARITY
+ | AccessibilityNodeInfo.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY
| AccessibilityNodeInfo.ACTION_NEXT_HTML_ELEMENT
| AccessibilityNodeInfo.ACTION_PREVIOUS_HTML_ELEMENT;
private static final int VALID_GRANULARITIES =
- AccessibilityNodeInfo.GRANULARITY_CHARACTER
- | AccessibilityNodeInfo.GRANULARITY_WORD
- | AccessibilityNodeInfo.GRANULARITY_LINE
- | AccessibilityNodeInfo.GRANULARITY_PARAGRAPH
- | AccessibilityNodeInfo.GRANULARITY_PAGE;
+ AccessibilityNodeInfo.MOVEMENT_GRANULARITY_CHARACTER
+ | AccessibilityNodeInfo.MOVEMENT_GRANULARITY_WORD
+ | AccessibilityNodeInfo.MOVEMENT_GRANULARITY_LINE
+ | AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PARAGRAPH
+ | AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PAGE;
private static final int RETRIEVAL_ALLOWING_EVENT_TYPES =
AccessibilityEvent.TYPE_VIEW_CLICKED
@@ -1731,8 +1730,7 @@
private static final int RETRIEVAL_ALLOWING_WINDOW_CHANGE_EVENT_TYPES =
AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED
| AccessibilityEvent.TYPE_VIEW_HOVER_ENTER
- | AccessibilityEvent.TYPE_VIEW_HOVER_EXIT
- | AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED;
+ | AccessibilityEvent.TYPE_VIEW_HOVER_EXIT;
private int mRetrievalAlowingWindowId;
diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java
index 45665dd..40f64bf 100644
--- a/services/java/com/android/server/am/ActivityManagerService.java
+++ b/services/java/com/android/server/am/ActivityManagerService.java
@@ -4098,6 +4098,10 @@
EventLog.writeEvent(EventLogTags.BOOT_PROGRESS_ENABLE_SCREEN,
SystemClock.uptimeMillis());
mWindowManager.enableScreenAfterBoot();
+
+ synchronized (this) {
+ updateEventDispatchingLocked();
+ }
}
public void showBootMessage(final CharSequence msg, final boolean always) {
@@ -4107,12 +4111,17 @@
public void dismissKeyguardOnNextActivity() {
enforceNotIsolatedCaller("dismissKeyguardOnNextActivity");
- synchronized (this) {
- if (mLockScreenShown) {
- mLockScreenShown = false;
- comeOutOfSleepIfNeededLocked();
+ final long token = Binder.clearCallingIdentity();
+ try {
+ synchronized (this) {
+ if (mLockScreenShown) {
+ mLockScreenShown = false;
+ comeOutOfSleepIfNeededLocked();
+ }
+ mMainStack.dismissKeyguardOnNextActivityLocked();
}
- mMainStack.dismissKeyguardOnNextActivityLocked();
+ } finally {
+ Binder.restoreCallingIdentity(token);
}
}
@@ -6681,7 +6690,7 @@
synchronized(this) {
mWentToSleep = true;
- mWindowManager.setEventDispatching(false);
+ updateEventDispatchingLocked();
if (!mSleeping) {
mSleeping = true;
@@ -6707,7 +6716,7 @@
synchronized(this) {
mShuttingDown = true;
- mWindowManager.setEventDispatching(false);
+ updateEventDispatchingLocked();
if (mMainStack.mResumedActivity != null) {
mMainStack.stopIfSleepingLocked();
@@ -6771,11 +6780,15 @@
synchronized(this) {
mWentToSleep = false;
- mWindowManager.setEventDispatching(true);
+ updateEventDispatchingLocked();
comeOutOfSleepIfNeededLocked();
}
}
+ private void updateEventDispatchingLocked() {
+ mWindowManager.setEventDispatching(mBooted && !mWentToSleep && !mShuttingDown);
+ }
+
public void setLockScreenShown(boolean shown) {
if (checkCallingPermission(android.Manifest.permission.DEVICE_POWER)
!= PackageManager.PERMISSION_GRANTED) {
@@ -11044,7 +11057,7 @@
updateOomAdjLocked(r.app);
}
int flags = 0;
- if (si.deliveryCount > 0) {
+ if (si.deliveryCount > 1) {
flags |= Service.START_FLAG_RETRY;
}
if (si.doneExecutingCount > 0) {
@@ -13479,7 +13492,7 @@
parentLaunchMode == ActivityInfo.LAUNCH_SINGLE_TASK ||
parentLaunchMode == ActivityInfo.LAUNCH_SINGLE_TOP ||
(destIntentFlags & Intent.FLAG_ACTIVITY_CLEAR_TOP) != 0) {
- parent.deliverNewIntentLocked(srec.app.uid, destIntent);
+ parent.deliverNewIntentLocked(srec.info.applicationInfo.uid, destIntent);
} else {
try {
ActivityInfo aInfo = AppGlobals.getPackageManager().getActivityInfo(
@@ -14503,9 +14516,11 @@
// activities causes more harm than good.
if (curLevel >= ComponentCallbacks2.TRIM_MEMORY_COMPLETE
&& app != mHomeProcess && app != mPreviousProcess) {
+ // Need to do this on its own message because the stack may not
+ // be in a consistent state at this point.
// For these apps we will also finish their activities
// to help them free memory.
- mMainStack.destroyActivitiesLocked(app, false, "trim");
+ mMainStack.scheduleDestroyActivities(app, false, "trim");
}
}
}
@@ -14577,7 +14592,9 @@
}
if (mAlwaysFinishActivities) {
- mMainStack.destroyActivitiesLocked(null, false, "always-finish");
+ // Need to do this on its own message because the stack may not
+ // be in a consistent state at this point.
+ mMainStack.scheduleDestroyActivities(null, false, "always-finish");
}
}
diff --git a/services/java/com/android/server/am/ActivityRecord.java b/services/java/com/android/server/am/ActivityRecord.java
index cce8e7a..97bfd6f 100644
--- a/services/java/com/android/server/am/ActivityRecord.java
+++ b/services/java/com/android/server/am/ActivityRecord.java
@@ -29,6 +29,7 @@
import android.content.res.CompatibilityInfo;
import android.content.res.Configuration;
import android.graphics.Bitmap;
+import android.graphics.Rect;
import android.os.Build;
import android.os.Bundle;
import android.os.IBinder;
@@ -562,12 +563,26 @@
service.mWindowManager.overridePendingAppTransitionScaleUp(
pendingOptions.getStartX(), pendingOptions.getStartY(),
pendingOptions.getStartWidth(), pendingOptions.getStartHeight());
+ if (intent.getSourceBounds() == null) {
+ intent.setSourceBounds(new Rect(pendingOptions.getStartX(),
+ pendingOptions.getStartY(),
+ pendingOptions.getStartX()+pendingOptions.getStartWidth(),
+ pendingOptions.getStartY()+pendingOptions.getStartHeight()));
+ }
break;
case ActivityOptions.ANIM_THUMBNAIL:
service.mWindowManager.overridePendingAppTransitionThumb(
pendingOptions.getThumbnail(),
pendingOptions.getStartX(), pendingOptions.getStartY(),
pendingOptions.getOnAnimationStartListener());
+ if (intent.getSourceBounds() == null) {
+ intent.setSourceBounds(new Rect(pendingOptions.getStartX(),
+ pendingOptions.getStartY(),
+ pendingOptions.getStartX()
+ + pendingOptions.getThumbnail().getWidth(),
+ pendingOptions.getStartY()
+ + pendingOptions.getThumbnail().getHeight()));
+ }
break;
}
pendingOptions = null;
diff --git a/services/java/com/android/server/am/ActivityStack.java b/services/java/com/android/server/am/ActivityStack.java
index 25fae83..c300411 100755
--- a/services/java/com/android/server/am/ActivityStack.java
+++ b/services/java/com/android/server/am/ActivityStack.java
@@ -45,7 +45,6 @@
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Bitmap;
-import android.net.Uri;
import android.os.Binder;
import android.os.Bundle;
import android.os.Handler;
@@ -289,7 +288,19 @@
static final int RESUME_TOP_ACTIVITY_MSG = ActivityManagerService.FIRST_ACTIVITY_STACK_MSG + 6;
static final int LAUNCH_TICK_MSG = ActivityManagerService.FIRST_ACTIVITY_STACK_MSG + 7;
static final int STOP_TIMEOUT_MSG = ActivityManagerService.FIRST_ACTIVITY_STACK_MSG + 8;
-
+ static final int DESTROY_ACTIVITIES_MSG = ActivityManagerService.FIRST_ACTIVITY_STACK_MSG + 9;
+
+ static class ScheduleDestroyArgs {
+ final ProcessRecord mOwner;
+ final boolean mOomAdj;
+ final String mReason;
+ ScheduleDestroyArgs(ProcessRecord owner, boolean oomAdj, String reason) {
+ mOwner = owner;
+ mOomAdj = oomAdj;
+ mReason = reason;
+ }
+ }
+
final Handler mHandler = new Handler() {
//public Handler() {
// if (localLOGV) Slog.v(TAG, "Handler started!");
@@ -384,6 +395,12 @@
}
}
} break;
+ case DESTROY_ACTIVITIES_MSG: {
+ ScheduleDestroyArgs args = (ScheduleDestroyArgs)msg.obj;
+ synchronized (mService) {
+ destroyActivitiesLocked(args.mOwner, args.mOomAdj, args.mReason);
+ }
+ }
}
}
};
@@ -1777,10 +1794,6 @@
mService.mWindowManager.prepareAppTransition(
WindowManagerPolicy.TRANSIT_NONE, keepCurTransition);
mNoAnimActivities.add(r);
- } else if ((r.intent.getFlags()&Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET) != 0) {
- mService.mWindowManager.prepareAppTransition(
- WindowManagerPolicy.TRANSIT_TASK_OPEN, keepCurTransition);
- mNoAnimActivities.remove(r);
} else {
mService.mWindowManager.prepareAppTransition(newTask
? WindowManagerPolicy.TRANSIT_TASK_OPEN
@@ -3821,19 +3834,39 @@
r.connections = null;
}
}
-
+
+ final void scheduleDestroyActivities(ProcessRecord owner, boolean oomAdj, String reason) {
+ Message msg = mHandler.obtainMessage(DESTROY_ACTIVITIES_MSG);
+ msg.obj = new ScheduleDestroyArgs(owner, oomAdj, reason);
+ mHandler.sendMessage(msg);
+ }
+
final void destroyActivitiesLocked(ProcessRecord owner, boolean oomAdj, String reason) {
+ boolean lastIsOpaque = false;
for (int i=mHistory.size()-1; i>=0; i--) {
ActivityRecord r = mHistory.get(i);
+ if (r.finishing) {
+ continue;
+ }
+ if (r.fullscreen) {
+ lastIsOpaque = true;
+ }
if (owner != null && r.app != owner) {
continue;
}
+ if (!lastIsOpaque) {
+ continue;
+ }
// We can destroy this one if we have its icicle saved and
// it is not in the process of pausing/stopping/finishing.
- if (r.app != null && r.haveState && !r.visible && r.stopped && !r.finishing
+ if (r.app != null && r != mResumedActivity && r != mPausingActivity
+ && r.haveState && !r.visible && r.stopped
&& r.state != ActivityState.DESTROYING
&& r.state != ActivityState.DESTROYED) {
- destroyActivityLocked(r, true, oomAdj, "trim");
+ if (DEBUG_SWITCH) Slog.v(TAG, "Destroying " + r + " in state " + r.state
+ + " resumed=" + mResumedActivity
+ + " pausing=" + mPausingActivity);
+ destroyActivityLocked(r, true, oomAdj, reason);
}
}
}
@@ -3847,7 +3880,7 @@
final boolean destroyActivityLocked(ActivityRecord r,
boolean removeFromApp, boolean oomAdj, String reason) {
if (DEBUG_SWITCH) Slog.v(
- TAG, "Removing activity: token=" + r
+ TAG, "Removing activity from " + reason + ": token=" + r
+ ", app=" + (r.app != null ? r.app.processName : "(null)"));
EventLog.writeEvent(EventLogTags.AM_DESTROY_ACTIVITY,
System.identityHashCode(r),
diff --git a/services/java/com/android/server/am/TaskRecord.java b/services/java/com/android/server/am/TaskRecord.java
index e3ebcc61..4b4a89d 100644
--- a/services/java/com/android/server/am/TaskRecord.java
+++ b/services/java/com/android/server/am/TaskRecord.java
@@ -63,9 +63,10 @@
// If this Intent has a selector, we want to clear it for the
// recent task since it is not relevant if the user later wants
// to re-launch the app.
- if (_intent.getSelector() != null) {
+ if (_intent.getSelector() != null || _intent.getSourceBounds() != null) {
_intent = new Intent(_intent);
_intent.setSelector(null);
+ _intent.setSourceBounds(null);
}
}
intent = _intent;
@@ -78,6 +79,7 @@
Intent targetIntent = new Intent(_intent);
targetIntent.setComponent(targetComponent);
targetIntent.setSelector(null);
+ targetIntent.setSourceBounds(null);
intent = targetIntent;
realActivity = targetComponent;
origActivity = _intent.getComponent();
diff --git a/services/java/com/android/server/input/InputManagerService.java b/services/java/com/android/server/input/InputManagerService.java
index 189a9c7..299649d 100644
--- a/services/java/com/android/server/input/InputManagerService.java
+++ b/services/java/com/android/server/input/InputManagerService.java
@@ -140,7 +140,8 @@
private static native void nativeStart(int ptr);
private static native void nativeSetDisplaySize(int ptr, int displayId,
int width, int height, int externalWidth, int externalHeight);
- private static native void nativeSetDisplayOrientation(int ptr, int displayId, int rotation);
+ private static native void nativeSetDisplayOrientation(int ptr, int displayId,
+ int rotation, int externalRotation);
private static native int nativeGetScanCodeState(int ptr,
int deviceId, int sourceMask, int scanCode);
@@ -162,7 +163,6 @@
private static native void nativeSetSystemUiVisibility(int ptr, int visibility);
private static native void nativeSetFocusedApplication(int ptr,
InputApplicationHandle application);
- private static native void nativeGetInputConfiguration(int ptr, Configuration configuration);
private static native boolean nativeTransferTouchFocus(int ptr,
InputChannel fromChannel, InputChannel toChannel);
private static native void nativeSetPointerSpeed(int ptr, int speed);
@@ -199,6 +199,15 @@
/** The key is down but is a virtual key press that is being emulated by the system. */
public static final int KEY_STATE_VIRTUAL = 2;
+ /** Scan code: Mouse / trackball button. */
+ public static final int BTN_MOUSE = 0x110;
+
+ /** Switch code: Lid switch. When set, lid is shut. */
+ public static final int SW_LID = 0x00;
+
+ /** Switch code: Keypad slide. When set, keyboard is exposed. */
+ public static final int SW_KEYPAD_SLIDE = 0x0a;
+
public InputManagerService(Context context, Callbacks callbacks) {
this.mContext = context;
this.mCallbacks = callbacks;
@@ -279,23 +288,16 @@
nativeSetDisplaySize(mPtr, displayId, width, height, externalWidth, externalHeight);
}
- public void setDisplayOrientation(int displayId, int rotation) {
+ public void setDisplayOrientation(int displayId, int rotation, int externalRotation) {
if (rotation < Surface.ROTATION_0 || rotation > Surface.ROTATION_270) {
throw new IllegalArgumentException("Invalid rotation.");
}
if (DEBUG) {
- Slog.d(TAG, "Setting display #" + displayId + " orientation to " + rotation);
+ Slog.d(TAG, "Setting display #" + displayId + " orientation to rotation " + rotation
+ + " external rotation " + externalRotation);
}
- nativeSetDisplayOrientation(mPtr, displayId, rotation);
- }
-
- public void getInputConfiguration(Configuration config) {
- if (config == null) {
- throw new IllegalArgumentException("config must not be null.");
- }
-
- nativeGetInputConfiguration(mPtr, config);
+ nativeSetDisplayOrientation(mPtr, displayId, rotation, externalRotation);
}
/**
@@ -513,6 +515,16 @@
}
}
+ /**
+ * Gets all input devices in the system.
+ * @return The array of input devices.
+ */
+ public InputDevice[] getInputDevices() {
+ synchronized (mInputDevicesLock) {
+ return mInputDevices;
+ }
+ }
+
@Override // Binder call
public void registerInputDevicesChangedListener(IInputDevicesChangedListener listener) {
if (listener == null) {
diff --git a/services/java/com/android/server/location/GpsLocationProvider.java b/services/java/com/android/server/location/GpsLocationProvider.java
index 65b9627..ce53499 100755
--- a/services/java/com/android/server/location/GpsLocationProvider.java
+++ b/services/java/com/android/server/location/GpsLocationProvider.java
@@ -192,6 +192,11 @@
// stop trying if we do not receive a fix within 60 seconds
private static final int NO_FIX_TIMEOUT = 60 * 1000;
+ // if the fix interval is below this we leave GPS on,
+ // if above then we cycle the GPS driver.
+ // Typical hot TTTF is ~5 seconds, so 10 seconds seems sane.
+ private static final int GPS_POLLING_THRESHOLD_INTERVAL = 10 * 1000;
+
// true if we are enabled
private volatile boolean mEnabled;
@@ -842,7 +847,18 @@
}
public String getInternalState() {
- return native_get_internal_state();
+ StringBuilder s = new StringBuilder();
+ s.append(" mFixInterval=").append(mFixInterval).append("\n");
+ s.append(" mEngineCapabilities=0x").append(Integer.toHexString(mEngineCapabilities)).append(" (");
+ if (hasCapability(GPS_CAPABILITY_SCHEDULING)) s.append("SCHED ");
+ if (hasCapability(GPS_CAPABILITY_MSB)) s.append("MSB ");
+ if (hasCapability(GPS_CAPABILITY_MSA)) s.append("MSA ");
+ if (hasCapability(GPS_CAPABILITY_SINGLE_SHOT)) s.append("SINGLE_SHOT ");
+ if (hasCapability(GPS_CAPABILITY_ON_DEMAND_TIME)) s.append("ON_DEMAND_TIME ");
+ s.append(")\n");
+
+ s.append(native_get_internal_state());
+ return s.toString();
}
private final class Listener implements IBinder.DeathRecipient {
@@ -1131,7 +1147,8 @@
updateStatus(LocationProvider.AVAILABLE, mSvCount);
}
- if (!hasCapability(GPS_CAPABILITY_SCHEDULING) && mStarted && mFixInterval > 1000) {
+ if (!hasCapability(GPS_CAPABILITY_SCHEDULING) && mStarted &&
+ mFixInterval > GPS_POLLING_THRESHOLD_INTERVAL) {
if (DEBUG) Log.d(TAG, "got fix, hibernating");
hibernate();
}
diff --git a/services/java/com/android/server/net/NetworkPolicyManagerService.java b/services/java/com/android/server/net/NetworkPolicyManagerService.java
index 5255647..1b8c9cb 100644
--- a/services/java/com/android/server/net/NetworkPolicyManagerService.java
+++ b/services/java/com/android/server/net/NetworkPolicyManagerService.java
@@ -118,6 +118,7 @@
import android.text.format.Formatter;
import android.text.format.Time;
import android.util.Log;
+import android.util.MathUtils;
import android.util.NtpTrustedTime;
import android.util.Slog;
import android.util.SparseArray;
@@ -166,7 +167,7 @@
*/
public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
private static final String TAG = "NetworkPolicy";
- private static final boolean LOGD = true;
+ private static final boolean LOGD = false;
private static final boolean LOGV = false;
private static final int VERSION_INIT = 1;
@@ -318,6 +319,11 @@
}
public void systemReady() {
+ if (!isBandwidthControlEnabled()) {
+ Slog.w(TAG, "bandwidth controls disabled, unable to enforce policy");
+ return;
+ }
+
synchronized (mRulesLock) {
// read policy from disk
readPolicyLocked();
@@ -962,6 +968,7 @@
}
}
+ long lowestRule = Long.MAX_VALUE;
final HashSet<String> newMeteredIfaces = Sets.newHashSet();
// apply each policy that we found ifaces for; compute remaining data
@@ -985,6 +992,7 @@
+ Arrays.toString(ifaces));
}
+ final boolean hasWarning = policy.warningBytes != LIMIT_DISABLED;
final boolean hasLimit = policy.limitBytes != LIMIT_DISABLED;
if (hasLimit || policy.metered) {
final long quotaBytes;
@@ -1014,6 +1022,23 @@
newMeteredIfaces.add(iface);
}
}
+
+ // keep track of lowest warning or limit of active policies
+ if (hasWarning && policy.warningBytes < lowestRule) {
+ lowestRule = policy.warningBytes;
+ }
+ if (hasLimit && policy.limitBytes < lowestRule) {
+ lowestRule = policy.limitBytes;
+ }
+ }
+
+ try {
+ // make sure stats are recorded frequently enough; we aim for 2MB
+ // threshold for 2GB/month rules.
+ final long persistThreshold = lowestRule / 1000;
+ mNetworkStats.advisePersistThreshold(persistThreshold);
+ } catch (RemoteException e) {
+ // ignored; service lives in system_server
}
// remove quota on any trailing interfaces
@@ -1497,6 +1522,11 @@
public boolean isNetworkMetered(NetworkState state) {
final NetworkIdentity ident = NetworkIdentity.buildNetworkIdentity(mContext, state);
+ // roaming networks are always considered metered
+ if (ident.getRoaming()) {
+ return true;
+ }
+
final NetworkPolicy policy;
synchronized (mRulesLock) {
policy = findPolicyForNetworkLocked(ident);
@@ -1892,6 +1922,18 @@
}
}
+ private boolean isBandwidthControlEnabled() {
+ final long token = Binder.clearCallingIdentity();
+ try {
+ return mNetworkManager.isBandwidthControlEnabled();
+ } catch (RemoteException e) {
+ // ignored; service lives in system_server
+ return false;
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
/**
* Try refreshing {@link #mTime} when stale.
*/
diff --git a/services/java/com/android/server/net/NetworkStatsCollection.java b/services/java/com/android/server/net/NetworkStatsCollection.java
index 2892a74..c2e475a 100644
--- a/services/java/com/android/server/net/NetworkStatsCollection.java
+++ b/services/java/com/android/server/net/NetworkStatsCollection.java
@@ -186,12 +186,12 @@
if (history.size() == 0) return;
noteRecordedHistory(history.getStart(), history.getEnd(), history.getTotalBytes());
- final NetworkStatsHistory existing = mStats.get(key);
- if (existing != null) {
- existing.recordEntireHistory(history);
- } else {
- mStats.put(key, history);
+ NetworkStatsHistory target = mStats.get(key);
+ if (target == null) {
+ target = new NetworkStatsHistory(history.getBucketDuration());
+ mStats.put(key, target);
}
+ target.recordEntireHistory(history);
}
/**
diff --git a/services/java/com/android/server/net/NetworkStatsRecorder.java b/services/java/com/android/server/net/NetworkStatsRecorder.java
index 57ad158..2ce7771 100644
--- a/services/java/com/android/server/net/NetworkStatsRecorder.java
+++ b/services/java/com/android/server/net/NetworkStatsRecorder.java
@@ -17,6 +17,8 @@
package com.android.server.net;
import static android.net.NetworkStats.TAG_NONE;
+import static android.net.TrafficStats.KB_IN_BYTES;
+import static android.net.TrafficStats.MB_IN_BYTES;
import static com.android.internal.util.Preconditions.checkNotNull;
import android.net.NetworkStats;
@@ -25,6 +27,7 @@
import android.net.NetworkTemplate;
import android.net.TrafficStats;
import android.util.Log;
+import android.util.MathUtils;
import android.util.Slog;
import com.android.internal.util.FileRotator;
@@ -58,9 +61,9 @@
private final String mCookie;
private final long mBucketDuration;
- private final long mPersistThresholdBytes;
private final boolean mOnlyTags;
+ private long mPersistThresholdBytes = 2 * MB_IN_BYTES;
private NetworkStats mLastSnapshot;
private final NetworkStatsCollection mPending;
@@ -71,13 +74,12 @@
private WeakReference<NetworkStatsCollection> mComplete;
public NetworkStatsRecorder(FileRotator rotator, NonMonotonicObserver<String> observer,
- String cookie, long bucketDuration, long persistThresholdBytes, boolean onlyTags) {
+ String cookie, long bucketDuration, boolean onlyTags) {
mRotator = checkNotNull(rotator, "missing FileRotator");
mObserver = checkNotNull(observer, "missing NonMonotonicObserver");
mCookie = cookie;
mBucketDuration = bucketDuration;
- mPersistThresholdBytes = persistThresholdBytes;
mOnlyTags = onlyTags;
mPending = new NetworkStatsCollection(bucketDuration);
@@ -86,6 +88,12 @@
mPendingRewriter = new CombiningRewriter(mPending);
}
+ public void setPersistThreshold(long thresholdBytes) {
+ if (LOGV) Slog.v(TAG, "setPersistThreshold() with " + thresholdBytes);
+ mPersistThresholdBytes = MathUtils.constrain(
+ thresholdBytes, 1 * KB_IN_BYTES, 100 * MB_IN_BYTES);
+ }
+
public void resetLocked() {
mLastSnapshot = null;
mPending.reset();
@@ -128,6 +136,9 @@
Map<String, NetworkIdentitySet> ifaceIdent, long currentTimeMillis) {
final HashSet<String> unknownIfaces = Sets.newHashSet();
+ // skip recording when snapshot missing
+ if (snapshot == null) return;
+
// assume first snapshot is bootstrap and don't record
if (mLastSnapshot == null) {
mLastSnapshot = snapshot;
@@ -150,7 +161,7 @@
continue;
}
- // skip when no delta occured
+ // skip when no delta occurred
if (entry.isEmpty()) continue;
// only record tag data when requested
diff --git a/services/java/com/android/server/net/NetworkStatsService.java b/services/java/com/android/server/net/NetworkStatsService.java
index 1c3e24f..1a56b80 100644
--- a/services/java/com/android/server/net/NetworkStatsService.java
+++ b/services/java/com/android/server/net/NetworkStatsService.java
@@ -36,6 +36,7 @@
import static android.net.NetworkStats.UID_ALL;
import static android.net.NetworkTemplate.buildTemplateMobileWildcard;
import static android.net.NetworkTemplate.buildTemplateWifiWildcard;
+import static android.net.TrafficStats.KB_IN_BYTES;
import static android.net.TrafficStats.MB_IN_BYTES;
import static android.provider.Settings.Secure.NETSTATS_DEV_BUCKET_DURATION;
import static android.provider.Settings.Secure.NETSTATS_DEV_DELETE_AGE;
@@ -49,6 +50,10 @@
import static android.provider.Settings.Secure.NETSTATS_UID_DELETE_AGE;
import static android.provider.Settings.Secure.NETSTATS_UID_PERSIST_BYTES;
import static android.provider.Settings.Secure.NETSTATS_UID_ROTATE_AGE;
+import static android.provider.Settings.Secure.NETSTATS_UID_TAG_BUCKET_DURATION;
+import static android.provider.Settings.Secure.NETSTATS_UID_TAG_DELETE_AGE;
+import static android.provider.Settings.Secure.NETSTATS_UID_TAG_PERSIST_BYTES;
+import static android.provider.Settings.Secure.NETSTATS_UID_TAG_ROTATE_AGE;
import static android.telephony.PhoneStateListener.LISTEN_DATA_CONNECTION_STATE;
import static android.telephony.PhoneStateListener.LISTEN_NONE;
import static android.text.format.DateUtils.DAY_IN_MILLIS;
@@ -94,10 +99,12 @@
import android.os.RemoteException;
import android.os.SystemClock;
import android.provider.Settings;
+import android.provider.Settings.Secure;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.util.EventLog;
import android.util.Log;
+import android.util.MathUtils;
import android.util.NtpTrustedTime;
import android.util.Slog;
import android.util.SparseIntArray;
@@ -159,6 +166,7 @@
private PendingIntent mPollIntent;
private static final String PREFIX_DEV = "dev";
+ private static final String PREFIX_XT = "xt";
private static final String PREFIX_UID = "uid";
private static final String PREFIX_UID_TAG = "uid_tag";
@@ -168,27 +176,30 @@
public interface NetworkStatsSettings {
public long getPollInterval();
public long getTimeCacheMaxAge();
- public long getGlobalAlertBytes();
public boolean getSampleEnabled();
public static class Config {
public final long bucketDuration;
- public final long persistBytes;
public final long rotateAgeMillis;
public final long deleteAgeMillis;
- public Config(long bucketDuration, long persistBytes, long rotateAgeMillis,
- long deleteAgeMillis) {
+ public Config(long bucketDuration, long rotateAgeMillis, long deleteAgeMillis) {
this.bucketDuration = bucketDuration;
- this.persistBytes = persistBytes;
this.rotateAgeMillis = rotateAgeMillis;
this.deleteAgeMillis = deleteAgeMillis;
}
}
public Config getDevConfig();
+ public Config getXtConfig();
public Config getUidConfig();
public Config getUidTagConfig();
+
+ public long getGlobalAlertBytes(long def);
+ public long getDevPersistBytes(long def);
+ public long getXtPersistBytes(long def);
+ public long getUidPersistBytes(long def);
+ public long getUidTagPersistBytes(long def);
}
private final Object mStatsLock = new Object();
@@ -204,6 +215,7 @@
new DropBoxNonMonotonicObserver();
private NetworkStatsRecorder mDevRecorder;
+ private NetworkStatsRecorder mXtRecorder;
private NetworkStatsRecorder mUidRecorder;
private NetworkStatsRecorder mUidTagRecorder;
@@ -220,6 +232,8 @@
private final Handler mHandler;
private boolean mSystemReady;
+ private long mPersistThreshold = 2 * MB_IN_BYTES;
+ private long mGlobalAlertBytes;
public NetworkStatsService(
Context context, INetworkManagementService networkManager, IAlarmManager alarmManager) {
@@ -268,9 +282,12 @@
// create data recorders along with historical rotators
mDevRecorder = buildRecorder(PREFIX_DEV, mSettings.getDevConfig(), false);
+ mXtRecorder = buildRecorder(PREFIX_XT, mSettings.getXtConfig(), false);
mUidRecorder = buildRecorder(PREFIX_UID, mSettings.getUidConfig(), false);
mUidTagRecorder = buildRecorder(PREFIX_UID_TAG, mSettings.getUidTagConfig(), true);
+ updatePersistThresholds();
+
synchronized (mStatsLock) {
// upgrade any legacy stats, migrating them to rotated files
maybeUpgradeLegacyStatsLocked();
@@ -321,10 +338,9 @@
private NetworkStatsRecorder buildRecorder(
String prefix, NetworkStatsSettings.Config config, boolean includeTags) {
- return new NetworkStatsRecorder(
- new FileRotator(mBaseDir, prefix, config.rotateAgeMillis, config.deleteAgeMillis),
- mNonMonotonicObserver, prefix, config.bucketDuration, config.persistBytes,
- includeTags);
+ return new NetworkStatsRecorder(new FileRotator(
+ mBaseDir, prefix, config.rotateAgeMillis, config.deleteAgeMillis),
+ mNonMonotonicObserver, prefix, config.bucketDuration, includeTags);
}
private void shutdownLocked() {
@@ -343,10 +359,12 @@
// persist any pending stats
mDevRecorder.forcePersistLocked(currentTime);
+ mXtRecorder.forcePersistLocked(currentTime);
mUidRecorder.forcePersistLocked(currentTime);
mUidTagRecorder.forcePersistLocked(currentTime);
mDevRecorder = null;
+ mXtRecorder = null;
mUidRecorder = null;
mUidTagRecorder = null;
@@ -408,8 +426,7 @@
*/
private void registerGlobalAlert() {
try {
- final long alertBytes = mSettings.getGlobalAlertBytes();
- mNetworkManager.setGlobalAlert(alertBytes);
+ mNetworkManager.setGlobalAlert(mGlobalAlertBytes);
} catch (IllegalStateException e) {
Slog.w(TAG, "problem registering for global alert: " + e);
} catch (RemoteException e) {
@@ -431,14 +448,18 @@
private NetworkStatsCollection getUidComplete() {
if (mUidComplete == null) {
- mUidComplete = mUidRecorder.getOrLoadCompleteLocked();
+ synchronized (mStatsLock) {
+ mUidComplete = mUidRecorder.getOrLoadCompleteLocked();
+ }
}
return mUidComplete;
}
private NetworkStatsCollection getUidTagComplete() {
if (mUidTagComplete == null) {
- mUidTagComplete = mUidTagRecorder.getOrLoadCompleteLocked();
+ synchronized (mStatsLock) {
+ mUidTagComplete = mUidTagRecorder.getOrLoadCompleteLocked();
+ }
}
return mUidTagComplete;
}
@@ -578,6 +599,47 @@
}
}
+ @Override
+ public void advisePersistThreshold(long thresholdBytes) {
+ mContext.enforceCallingOrSelfPermission(MODIFY_NETWORK_ACCOUNTING, TAG);
+ assertBandwidthControlEnabled();
+
+ // clamp threshold into safe range
+ mPersistThreshold = MathUtils.constrain(thresholdBytes, 128 * KB_IN_BYTES, 2 * MB_IN_BYTES);
+ updatePersistThresholds();
+
+ if (LOGV) {
+ Slog.v(TAG, "advisePersistThreshold() given " + thresholdBytes + ", clamped to "
+ + mPersistThreshold);
+ }
+
+ // persist if beyond new thresholds
+ final long currentTime = mTime.hasCache() ? mTime.currentTimeMillis()
+ : System.currentTimeMillis();
+ synchronized (mStatsLock) {
+ mDevRecorder.maybePersistLocked(currentTime);
+ mXtRecorder.maybePersistLocked(currentTime);
+ mUidRecorder.maybePersistLocked(currentTime);
+ mUidTagRecorder.maybePersistLocked(currentTime);
+ }
+
+ // re-arm global alert
+ registerGlobalAlert();
+ }
+
+ /**
+ * Update {@link NetworkStatsRecorder} and {@link #mGlobalAlertBytes} to
+ * reflect current {@link #mPersistThreshold} value. Always defers to
+ * {@link Secure} values when defined.
+ */
+ private void updatePersistThresholds() {
+ mDevRecorder.setPersistThreshold(mSettings.getDevPersistBytes(mPersistThreshold));
+ mXtRecorder.setPersistThreshold(mSettings.getXtPersistBytes(mPersistThreshold));
+ mUidRecorder.setPersistThreshold(mSettings.getUidPersistBytes(mPersistThreshold));
+ mUidTagRecorder.setPersistThreshold(mSettings.getUidTagPersistBytes(mPersistThreshold));
+ mGlobalAlertBytes = mSettings.getGlobalAlertBytes(mPersistThreshold);
+ }
+
/**
* Receiver that watches for {@link IConnectivityManager} to claim network
* interfaces. Used to associate {@link TelephonyManager#getSubscriberId()}
@@ -772,9 +834,11 @@
// snapshot and record current counters; read UID stats first to
// avoid overcounting dev stats.
final NetworkStats uidSnapshot = getNetworkStatsUidDetail();
- final NetworkStats devSnapshot = getNetworkStatsSummary();
+ final NetworkStats xtSnapshot = mNetworkManager.getNetworkStatsSummaryXt();
+ final NetworkStats devSnapshot = mNetworkManager.getNetworkStatsSummaryDev();
mDevRecorder.recordSnapshotLocked(devSnapshot, mActiveIfaces, currentTime);
+ mXtRecorder.recordSnapshotLocked(xtSnapshot, mActiveIfaces, currentTime);
mUidRecorder.recordSnapshotLocked(uidSnapshot, mActiveIfaces, currentTime);
mUidTagRecorder.recordSnapshotLocked(uidSnapshot, mActiveIfaces, currentTime);
@@ -824,9 +888,11 @@
// snapshot and record current counters; read UID stats first to
// avoid overcounting dev stats.
final NetworkStats uidSnapshot = getNetworkStatsUidDetail();
- final NetworkStats devSnapshot = getNetworkStatsSummary();
+ final NetworkStats xtSnapshot = mNetworkManager.getNetworkStatsSummaryXt();
+ final NetworkStats devSnapshot = mNetworkManager.getNetworkStatsSummaryDev();
mDevRecorder.recordSnapshotLocked(devSnapshot, mActiveIfaces, currentTime);
+ mXtRecorder.recordSnapshotLocked(xtSnapshot, mActiveIfaces, currentTime);
mUidRecorder.recordSnapshotLocked(uidSnapshot, mActiveIfaces, currentTime);
mUidTagRecorder.recordSnapshotLocked(uidSnapshot, mActiveIfaces, currentTime);
@@ -841,11 +907,13 @@
// persist any pending data depending on requested flags
if (persistForce) {
mDevRecorder.forcePersistLocked(currentTime);
+ mXtRecorder.forcePersistLocked(currentTime);
mUidRecorder.forcePersistLocked(currentTime);
mUidTagRecorder.forcePersistLocked(currentTime);
} else {
if (persistNetwork) {
mDevRecorder.maybePersistLocked(currentTime);
+ mXtRecorder.maybePersistLocked(currentTime);
}
if (persistUid) {
mUidRecorder.maybePersistLocked(currentTime);
@@ -884,7 +952,7 @@
// collect mobile sample
template = buildTemplateMobileWildcard();
devTotal = mDevRecorder.getTotalSinceBootLocked(template);
- xtTotal = new NetworkStats.Entry();
+ xtTotal = mXtRecorder.getTotalSinceBootLocked(template);
uidTotal = mUidRecorder.getTotalSinceBootLocked(template);
EventLogTags.writeNetstatsMobileSample(
@@ -896,7 +964,7 @@
// collect wifi sample
template = buildTemplateWifiWildcard();
devTotal = mDevRecorder.getTotalSinceBootLocked(template);
- xtTotal = new NetworkStats.Entry();
+ xtTotal = mXtRecorder.getTotalSinceBootLocked(template);
uidTotal = mUidRecorder.getTotalSinceBootLocked(template);
EventLogTags.writeNetstatsWifiSample(
@@ -970,6 +1038,11 @@
mDevRecorder.dumpLocked(pw, fullHistory);
pw.decreaseIndent();
+ pw.println("Xt stats:");
+ pw.increaseIndent();
+ mXtRecorder.dumpLocked(pw, fullHistory);
+ pw.decreaseIndent();
+
if (includeUid) {
pw.println("UID stats:");
pw.increaseIndent();
@@ -986,10 +1059,6 @@
}
}
- private NetworkStats getNetworkStatsSummary() throws RemoteException {
- return mNetworkManager.getNetworkStatsSummary();
- }
-
/**
* Return snapshot of current UID statistics, including any
* {@link TrafficStats#UID_TETHERING} and {@link #mUidOperations} values.
@@ -1109,36 +1178,50 @@
return getSecureLong(NETSTATS_TIME_CACHE_MAX_AGE, DAY_IN_MILLIS);
}
@Override
- public long getGlobalAlertBytes() {
- return getSecureLong(NETSTATS_GLOBAL_ALERT_BYTES, 2 * MB_IN_BYTES);
+ public long getGlobalAlertBytes(long def) {
+ return getSecureLong(NETSTATS_GLOBAL_ALERT_BYTES, def);
}
@Override
public boolean getSampleEnabled() {
return getSecureBoolean(NETSTATS_SAMPLE_ENABLED, true);
}
-
@Override
public Config getDevConfig() {
return new Config(getSecureLong(NETSTATS_DEV_BUCKET_DURATION, HOUR_IN_MILLIS),
- getSecureLong(NETSTATS_DEV_PERSIST_BYTES, 2 * MB_IN_BYTES),
getSecureLong(NETSTATS_DEV_ROTATE_AGE, 15 * DAY_IN_MILLIS),
getSecureLong(NETSTATS_DEV_DELETE_AGE, 90 * DAY_IN_MILLIS));
}
-
+ @Override
+ public Config getXtConfig() {
+ return getDevConfig();
+ }
@Override
public Config getUidConfig() {
return new Config(getSecureLong(NETSTATS_UID_BUCKET_DURATION, 2 * HOUR_IN_MILLIS),
- getSecureLong(NETSTATS_UID_PERSIST_BYTES, 2 * MB_IN_BYTES),
getSecureLong(NETSTATS_UID_ROTATE_AGE, 15 * DAY_IN_MILLIS),
getSecureLong(NETSTATS_UID_DELETE_AGE, 90 * DAY_IN_MILLIS));
}
-
@Override
public Config getUidTagConfig() {
- return new Config(getSecureLong(NETSTATS_UID_BUCKET_DURATION, 2 * HOUR_IN_MILLIS),
- getSecureLong(NETSTATS_UID_PERSIST_BYTES, 2 * MB_IN_BYTES),
- getSecureLong(NETSTATS_UID_ROTATE_AGE, 5 * DAY_IN_MILLIS),
- getSecureLong(NETSTATS_UID_DELETE_AGE, 15 * DAY_IN_MILLIS));
+ return new Config(getSecureLong(NETSTATS_UID_TAG_BUCKET_DURATION, 2 * HOUR_IN_MILLIS),
+ getSecureLong(NETSTATS_UID_TAG_ROTATE_AGE, 5 * DAY_IN_MILLIS),
+ getSecureLong(NETSTATS_UID_TAG_DELETE_AGE, 15 * DAY_IN_MILLIS));
+ }
+ @Override
+ public long getDevPersistBytes(long def) {
+ return getSecureLong(NETSTATS_DEV_PERSIST_BYTES, def);
+ }
+ @Override
+ public long getXtPersistBytes(long def) {
+ return getDevPersistBytes(def);
+ }
+ @Override
+ public long getUidPersistBytes(long def) {
+ return getSecureLong(NETSTATS_UID_PERSIST_BYTES, def);
+ }
+ @Override
+ public long getUidTagPersistBytes(long def) {
+ return getSecureLong(NETSTATS_UID_TAG_PERSIST_BYTES, def);
}
}
}
diff --git a/services/java/com/android/server/pm/PackageManagerService.java b/services/java/com/android/server/pm/PackageManagerService.java
index 21ae624..7c14d49 100644
--- a/services/java/com/android/server/pm/PackageManagerService.java
+++ b/services/java/com/android/server/pm/PackageManagerService.java
@@ -53,6 +53,7 @@
import android.content.IntentSender.SendIntentException;
import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo;
+import android.content.pm.ContainerEncryptionParams;
import android.content.pm.FeatureInfo;
import android.content.pm.IPackageDataObserver;
import android.content.pm.IPackageDeleteObserver;
@@ -116,7 +117,6 @@
import java.io.FileReader;
import java.io.FilenameFilter;
import java.io.IOException;
-import java.io.InputStream;
import java.io.PrintWriter;
import java.security.NoSuchAlgorithmException;
import java.security.PublicKey;
@@ -128,7 +128,6 @@
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
-import java.util.Enumeration;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
@@ -136,9 +135,6 @@
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipFile;
-import java.util.zip.ZipOutputStream;
import libcore.io.ErrnoException;
import libcore.io.IoUtils;
@@ -1054,7 +1050,7 @@
mSystemInstallObserver.startWatching();
scanDirLI(mSystemAppDir, PackageParser.PARSE_IS_SYSTEM
| PackageParser.PARSE_IS_SYSTEM_DIR, scanMode, 0);
-
+
// Collect all vendor packages.
mVendorAppDir = new File("/vendor/app");
mVendorInstallObserver = new AppDirObserver(
@@ -1067,23 +1063,51 @@
mInstaller.moveFiles();
// Prune any system packages that no longer exist.
+ final List<String> possiblyDeletedSystemApps = new ArrayList<String>();
if (!mOnlyCore) {
Iterator<PackageSetting> psit = mSettings.mPackages.values().iterator();
while (psit.hasNext()) {
PackageSetting ps = psit.next();
- if ((ps.pkgFlags&ApplicationInfo.FLAG_SYSTEM) != 0
- && !mPackages.containsKey(ps.name)
- && !mSettings.mDisabledSysPackages.containsKey(ps.name)) {
+
+ /*
+ * If this is not a system app, it can't be a
+ * disable system app.
+ */
+ if ((ps.pkgFlags & ApplicationInfo.FLAG_SYSTEM) == 0) {
+ continue;
+ }
+
+ /*
+ * If the package is scanned, it's not erased.
+ */
+ if (mPackages.containsKey(ps.name)) {
+ /*
+ * If the system app is both scanned and in the
+ * disabled packages list, then it must have been
+ * added via OTA. Remove it from the currently
+ * scanned package so the previously user-installed
+ * application can be scanned.
+ */
+ if (mSettings.isDisabledSystemPackageLPr(ps.name)) {
+ mPackages.remove(ps.name);
+ }
+
+ continue;
+ }
+
+ if (!mSettings.isDisabledSystemPackageLPr(ps.name)) {
psit.remove();
String msg = "System package " + ps.name
+ " no longer exists; wiping its data";
reportSettingsProblem(Log.WARN, msg);
mInstaller.remove(ps.name, 0);
sUserManager.removePackageForAllUsers(ps.name);
+ } else {
+ possiblyDeletedSystemApps.add(ps.name);
}
}
}
-
+
mAppInstallDir = new File(dataDir, "app");
//look for any incomplete package installations
ArrayList<PackageSetting> deletePkgsList = mSettings.getListOfIncompleteInstallPackagesLPr();
@@ -1108,6 +1132,21 @@
mDrmAppInstallObserver.startWatching();
scanDirLI(mDrmAppPrivateInstallDir, PackageParser.PARSE_FORWARD_LOCK,
scanMode, 0);
+
+ /**
+ * Remove disable package settings for any system apps
+ * that were removed via an OTA.
+ */
+ for (String deletedAppName : possiblyDeletedSystemApps) {
+ PackageParser.Package deletedPkg = mPackages.get(deletedAppName);
+ if (deletedPkg != null) {
+ mSettings.removeDisabledSystemPackageLPw(deletedAppName);
+ deletedPkg.applicationInfo.flags &= ~ApplicationInfo.FLAG_SYSTEM;
+
+ PackageSetting deletedPs = mSettings.mPackages.get(deletedAppName);
+ deletedPs.pkgFlags &= ~ApplicationInfo.FLAG_SYSTEM;
+ }
+ }
} else {
mAppInstallObserver = null;
mDrmAppInstallObserver = null;
@@ -3047,8 +3086,7 @@
// Check to see if this package could be hiding/updating a system
// package. Must look for it either under the original or real
// package name depending on our state.
- updatedPkg = mSettings.mDisabledSysPackages.get(
- ps != null ? ps.name : pkg.packageName);
+ updatedPkg = mSettings.getDisabledSystemPkgLPr(ps != null ? ps.name : pkg.packageName);
}
// First check if this is a system package that may involve an update
if (updatedPkg != null && (parseFlags&PackageParser.PARSE_IS_SYSTEM) != 0) {
@@ -3080,15 +3118,21 @@
+ "reverting from " + ps.codePathString
+ ": new version " + pkg.mVersionCode
+ " better than installed " + ps.versionCode);
- InstallArgs args = new FileInstallArgs(ps.codePathString,
+ InstallArgs args = createInstallArgs(ps.pkgFlags, ps.codePathString,
ps.resourcePathString, ps.nativeLibraryPathString);
- args.cleanUpResourcesLI();
- mSettings.enableSystemPackageLPw(ps.name);
+ synchronized (mInstaller) {
+ args.cleanUpResourcesLI();
+ }
+ synchronized (mPackages) {
+ mSettings.enableSystemPackageLPw(ps.name);
+ }
}
}
}
+
if (updatedPkg != null) {
- // An updated system app will not have the PARSE_IS_SYSTEM flag set initially
+ // An updated system app will not have the PARSE_IS_SYSTEM flag set
+ // initially
parseFlags |= PackageParser.PARSE_IS_SYSTEM;
}
// Verify certificates against what was last scanned
@@ -3096,6 +3140,49 @@
Slog.w(TAG, "Failed verifying certificates for package:" + pkg.packageName);
return null;
}
+
+ /*
+ * A new system app appeared, but we already had a non-system one of the
+ * same name installed earlier.
+ */
+ boolean shouldHideSystemApp = false;
+ if (updatedPkg == null && ps != null
+ && (parseFlags & PackageParser.PARSE_IS_SYSTEM_DIR) != 0 && !isSystemApp(ps)) {
+ /*
+ * Check to make sure the signatures match first. If they don't,
+ * wipe the installed application and its data.
+ */
+ if (compareSignatures(ps.signatures.mSignatures, pkg.mSignatures)
+ != PackageManager.SIGNATURE_MATCH) {
+ deletePackageLI(pkg.packageName, true, 0, null, false);
+ ps = null;
+ } else {
+ /*
+ * If the newly-added system app is an older version than the
+ * already installed version, hide it. It will be scanned later
+ * and re-added like an update.
+ */
+ if (pkg.mVersionCode < ps.versionCode) {
+ shouldHideSystemApp = true;
+ } else {
+ /*
+ * The newly found system app is a newer version that the
+ * one previously installed. Simply remove the
+ * already-installed application and replace it with our own
+ * while keeping the application data.
+ */
+ Slog.w(TAG, "Package " + ps.name + " at " + scanFile + "reverting from "
+ + ps.codePathString + ": new version " + pkg.mVersionCode
+ + " better than installed " + ps.versionCode);
+ InstallArgs args = createInstallArgs(ps.pkgFlags, ps.codePathString,
+ ps.resourcePathString, ps.nativeLibraryPathString);
+ synchronized (mInstaller) {
+ args.cleanUpResourcesLI();
+ }
+ }
+ }
+ }
+
// The apk is forward locked (not public) if its code and resources
// are kept in different files.
// TODO grab this value from PackageSettings
@@ -3119,7 +3206,27 @@
// Set application objects path explicitly.
setApplicationInfoPaths(pkg, codePath, resPath);
// Note that we invoke the following method only if we are about to unpack an application
- return scanPackageLI(pkg, parseFlags, scanMode | SCAN_UPDATE_SIGNATURE, currentTime);
+ PackageParser.Package scannedPkg = scanPackageLI(pkg, parseFlags, scanMode
+ | SCAN_UPDATE_SIGNATURE, currentTime);
+
+ /*
+ * If the system app should be overridden by a previously installed
+ * data, hide the system app now and let the /data/app scan pick it up
+ * again.
+ */
+ if (shouldHideSystemApp) {
+ synchronized (mPackages) {
+ /*
+ * We have to grant systems permissions before we hide, because
+ * grantPermissions will assume the package update is trying to
+ * expand its permissions.
+ */
+ grantPermissionsLPw(pkg, true);
+ mSettings.disableSystemPackageLPw(pkg.packageName);
+ }
+ }
+
+ return scannedPkg;
}
private static void setApplicationInfoPaths(PackageParser.Package pkg, String destCodePath,
@@ -3527,7 +3634,7 @@
mTransferedPackages.add(pkg.packageName);
}
- if (mSettings.mDisabledSysPackages.get(pkg.packageName) != null) {
+ if (mSettings.isDisabledSystemPackageLPr(pkg.packageName)) {
pkg.applicationInfo.flags |= ApplicationInfo.FLAG_UPDATED_SYSTEM_APP;
}
@@ -5133,13 +5240,13 @@
final Uri packageURI, final IPackageInstallObserver observer, final int flags,
final String installerPackageName) {
installPackageWithVerification(packageURI, observer, flags, installerPackageName, null,
- null);
+ null, null);
}
@Override
public void installPackageWithVerification(Uri packageURI, IPackageInstallObserver observer,
int flags, String installerPackageName, Uri verificationURI,
- ManifestDigest manifestDigest) {
+ ManifestDigest manifestDigest, ContainerEncryptionParams encryptionParams) {
mContext.enforceCallingOrSelfPermission(android.Manifest.permission.INSTALL_PACKAGES, null);
final int uid = Binder.getCallingUid();
@@ -5157,7 +5264,7 @@
final Message msg = mHandler.obtainMessage(INIT_COPY);
msg.obj = new InstallParams(packageURI, observer, filteredFlags, installerPackageName,
- verificationURI, manifestDigest);
+ verificationURI, manifestDigest, encryptionParams);
mHandler.sendMessage(msg);
}
@@ -5560,22 +5667,27 @@
class InstallParams extends HandlerParams {
final IPackageInstallObserver observer;
int flags;
- final Uri packageURI;
+
+ private final Uri mPackageURI;
final String installerPackageName;
final Uri verificationURI;
final ManifestDigest manifestDigest;
private InstallArgs mArgs;
private int mRet;
+ private File mTempPackage;
+ final ContainerEncryptionParams encryptionParams;
InstallParams(Uri packageURI,
IPackageInstallObserver observer, int flags,
- String installerPackageName, Uri verificationURI, ManifestDigest manifestDigest) {
- this.packageURI = packageURI;
+ String installerPackageName, Uri verificationURI, ManifestDigest manifestDigest,
+ ContainerEncryptionParams encryptionParams) {
+ this.mPackageURI = packageURI;
this.flags = flags;
this.observer = observer;
this.installerPackageName = installerPackageName;
this.verificationURI = verificationURI;
this.manifestDigest = manifestDigest;
+ this.encryptionParams = encryptionParams;
}
private int installLocationPolicy(PackageInfoLite pkgLite, int flags) {
@@ -5655,16 +5767,51 @@
lowThreshold = dsm.getMemoryLowThreshold();
}
- // Remote call to find out default install location
try {
- mContext.grantUriPermission(DEFAULT_CONTAINER_PACKAGE, packageURI,
+ mContext.grantUriPermission(DEFAULT_CONTAINER_PACKAGE, mPackageURI,
Intent.FLAG_GRANT_READ_URI_PERMISSION);
- pkgLite = mContainerService.getMinimalPackageInfo(packageURI, flags,
- lowThreshold);
- } finally {
- mContext.revokeUriPermission(packageURI, Intent.FLAG_GRANT_READ_URI_PERMISSION);
- }
+ final File packageFile;
+ if (encryptionParams != null || !"file".equals(mPackageURI.getScheme())) {
+ ParcelFileDescriptor out = null;
+
+ mTempPackage = createTempPackageFile(mDrmAppPrivateInstallDir);
+ if (mTempPackage != null) {
+ try {
+ out = ParcelFileDescriptor.open(mTempPackage,
+ ParcelFileDescriptor.MODE_READ_WRITE);
+ } catch (FileNotFoundException e) {
+ Slog.e(TAG, "Failed to create temporary file for : " + mPackageURI);
+ }
+
+ // Make a temporary file for decryption.
+ ret = mContainerService
+ .copyResource(mPackageURI, encryptionParams, out);
+
+ packageFile = mTempPackage;
+
+ FileUtils.setPermissions(packageFile.getAbsolutePath(),
+ FileUtils.S_IRUSR | FileUtils.S_IWUSR | FileUtils.S_IROTH,
+ -1, -1);
+ } else {
+ packageFile = null;
+ }
+ } else {
+ packageFile = new File(mPackageURI.getPath());
+ }
+
+ if (packageFile != null) {
+ // Remote call to find out default install location
+ pkgLite = mContainerService.getMinimalPackageInfo(
+ packageFile.getAbsolutePath(), flags, lowThreshold);
+ }
+ } finally {
+ mContext.revokeUriPermission(mPackageURI,
+ Intent.FLAG_GRANT_READ_URI_PERMISSION);
+ }
+ }
+
+ if (ret == PackageManager.INSTALL_SUCCEEDED) {
int loc = pkgLite.recommendedInstallLocation;
if (loc == PackageHelper.RECOMMEND_FAILED_INVALID_LOCATION) {
ret = PackageManager.INSTALL_FAILED_INVALID_INSTALL_LOCATION;
@@ -5708,8 +5855,9 @@
final int requiredUid = mRequiredVerifierPackage == null ? -1
: getPackageUid(mRequiredVerifierPackage, 0);
if (requiredUid != -1 && isVerificationEnabled()) {
- final Intent verification = new Intent(Intent.ACTION_PACKAGE_NEEDS_VERIFICATION);
- verification.setDataAndType(packageURI, PACKAGE_MIME_TYPE);
+ final Intent verification = new Intent(
+ Intent.ACTION_PACKAGE_NEEDS_VERIFICATION);
+ verification.setDataAndType(getPackageUri(), PACKAGE_MIME_TYPE);
verification.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
final List<ResolveInfo> receivers = queryIntentReceivers(verification, null,
@@ -5812,6 +5960,13 @@
if (mArgs != null) {
processPendingInstall(mArgs, mRet);
}
+
+ if (mTempPackage != null) {
+ if (!mTempPackage.delete()) {
+ Slog.w(TAG, "Couldn't delete temporary file: "
+ + mTempPackage.getAbsolutePath());
+ }
+ }
}
@Override
@@ -5823,6 +5978,14 @@
public boolean isForwardLocked() {
return (flags & PackageManager.INSTALL_FORWARD_LOCK) != 0;
}
+
+ public Uri getPackageUri() {
+ if (mTempPackage != null) {
+ return Uri.fromFile(mTempPackage);
+ } else {
+ return mPackageURI;
+ }
+ }
}
/*
@@ -5863,9 +6026,28 @@
Log.w(TAG, "Insufficient storage to install");
return;
}
- // Create the file args now.
+
+ mRet = srcArgs.doPreCopy();
+ if (mRet != PackageManager.INSTALL_SUCCEEDED) {
+ return;
+ }
+
mRet = targetArgs.copyApk(mContainerService, false);
- targetArgs.doPreInstall(mRet);
+ if (mRet != PackageManager.INSTALL_SUCCEEDED) {
+ srcArgs.doPostCopy(uid);
+ return;
+ }
+
+ mRet = srcArgs.doPostCopy(uid);
+ if (mRet != PackageManager.INSTALL_SUCCEEDED) {
+ return;
+ }
+
+ mRet = targetArgs.doPreInstall(mRet);
+ if (mRet != PackageManager.INSTALL_SUCCEEDED) {
+ return;
+ }
+
if (DEBUG_SD_INSTALL) {
StringBuilder builder = new StringBuilder();
if (srcArgs != null) {
@@ -5936,7 +6118,7 @@
String nativeLibraryPath) {
if (installOnSd(flags) || installForwardLocked(flags)) {
return new AsecInstallArgs(fullCodePath, fullResourcePath, nativeLibraryPath,
- (flags & PackageManager.INSTALL_EXTERNAL) != 0);
+ installOnSd(flags), installForwardLocked(flags));
} else {
return new FileInstallArgs(fullCodePath, fullResourcePath, nativeLibraryPath);
}
@@ -5945,9 +6127,10 @@
// Used by package mover
private InstallArgs createInstallArgs(Uri packageURI, int flags, String pkgName, String dataDir) {
if (installOnSd(flags) || installForwardLocked(flags)) {
- String cid = getNextCodePath(null, pkgName, "/" + AsecInstallArgs.RES_FILE_NAME);
- return new AsecInstallArgs(packageURI, cid,
- (flags & PackageManager.INSTALL_EXTERNAL) != 0);
+ String cid = getNextCodePath(packageURI.getPath(), pkgName, "/"
+ + AsecInstallArgs.RES_FILE_NAME);
+ return new AsecInstallArgs(packageURI, cid, installOnSd(flags),
+ installForwardLocked(flags));
} else {
return new FileInstallArgs(packageURI, pkgName, dataDir);
}
@@ -5984,6 +6167,26 @@
abstract boolean doPostDeleteLI(boolean delete);
abstract boolean checkFreeStorage(IMediaContainerService imcs) throws RemoteException;
+ /**
+ * Called before the source arguments are copied. This is used mostly
+ * for MoveParams when it needs to read the source file to put it in the
+ * destination.
+ */
+ int doPreCopy() {
+ return PackageManager.INSTALL_SUCCEEDED;
+ }
+
+ /**
+ * Called after the source arguments are copied. This is used mostly for
+ * MoveParams when it needs to read the source file to put it in the
+ * destination.
+ *
+ * @return
+ */
+ int doPostCopy(int uid) {
+ return PackageManager.INSTALL_SUCCEEDED;
+ }
+
protected boolean isFwdLocked() {
return (flags & PackageManager.INSTALL_FORWARD_LOCK) != 0;
}
@@ -5997,8 +6200,8 @@
boolean created = false;
FileInstallArgs(InstallParams params) {
- super(params.packageURI, params.observer, params.flags, params.installerPackageName,
- params.manifestDigest);
+ super(params.getPackageUri(), params.observer, params.flags,
+ params.installerPackageName, params.manifestDigest);
}
FileInstallArgs(String fullCodePath, String fullResourcePath, String nativeLibraryPath) {
@@ -6088,7 +6291,7 @@
try {
mContext.grantUriPermission(DEFAULT_CONTAINER_PACKAGE, packageURI,
Intent.FLAG_GRANT_READ_URI_PERMISSION);
- ret = imcs.copyResource(packageURI, out);
+ ret = imcs.copyResource(packageURI, null, out);
} finally {
IoUtils.closeQuietly(out);
mContext.revokeUriPermission(packageURI, Intent.FLAG_GRANT_READ_URI_PERMISSION);
@@ -6275,13 +6478,14 @@
String libraryPath;
AsecInstallArgs(InstallParams params) {
- super(params.packageURI, params.observer, params.flags, params.installerPackageName,
- params.manifestDigest);
+ super(params.getPackageUri(), params.observer, params.flags,
+ params.installerPackageName, params.manifestDigest);
}
AsecInstallArgs(String fullCodePath, String fullResourcePath, String nativeLibraryPath,
- boolean isExternal) {
- super(null, null, isExternal ? PackageManager.INSTALL_EXTERNAL : 0, null, null);
+ boolean isExternal, boolean isForwardLocked) {
+ super(null, null, (isExternal ? PackageManager.INSTALL_EXTERNAL : 0)
+ | (isForwardLocked ? PackageManager.INSTALL_FORWARD_LOCK : 0), null, null);
// Extract cid from fullCodePath
int eidx = fullCodePath.lastIndexOf("/");
String subStr1 = fullCodePath.substring(0, eidx);
@@ -6296,8 +6500,9 @@
setCachePath(PackageHelper.getSdDir(cid));
}
- AsecInstallArgs(Uri packageURI, String cid, boolean isExternal) {
- super(packageURI, null, isExternal ? PackageManager.INSTALL_EXTERNAL : 0, null, null);
+ AsecInstallArgs(Uri packageURI, String cid, boolean isExternal, boolean isForwardLocked) {
+ super(packageURI, null, (isExternal ? PackageManager.INSTALL_EXTERNAL : 0)
+ | (isForwardLocked ? PackageManager.INSTALL_FORWARD_LOCK : 0), null, null);
this.cid = cid;
}
@@ -6443,8 +6648,18 @@
if (status != PackageManager.INSTALL_SUCCEEDED) {
cleanUp();
} else {
+ final int groupOwner;
+ final String protectedFile;
+ if (isFwdLocked()) {
+ groupOwner = uid;
+ protectedFile = RES_FILE_NAME;
+ } else {
+ groupOwner = -1;
+ protectedFile = null;
+ }
+
if (uid < Process.FIRST_APPLICATION_UID
- || !PackageHelper.fixSdPermissions(cid, uid, RES_FILE_NAME)) {
+ || !PackageHelper.fixSdPermissions(cid, groupOwner, protectedFile)) {
Slog.e(TAG, "Failed to finalize " + cid);
PackageHelper.destroySdDir(cid);
return PackageManager.INSTALL_FAILED_CONTAINER_ERROR;
@@ -6505,6 +6720,33 @@
}
return ret;
}
+
+ @Override
+ int doPreCopy() {
+ if (isFwdLocked()) {
+ if (!PackageHelper.fixSdPermissions(cid,
+ getPackageUid(DEFAULT_CONTAINER_PACKAGE, 0), RES_FILE_NAME)) {
+ return PackageManager.INSTALL_FAILED_CONTAINER_ERROR;
+ }
+ }
+
+ return PackageManager.INSTALL_SUCCEEDED;
+ }
+
+ @Override
+ int doPostCopy(int uid) {
+ if (isFwdLocked()) {
+ PackageHelper.fixSdPermissions(cid, uid, RES_FILE_NAME);
+ if (uid < Process.FIRST_APPLICATION_UID
+ || !PackageHelper.fixSdPermissions(cid, uid, RES_FILE_NAME)) {
+ Slog.e(TAG, "Failed to finalize " + cid);
+ PackageHelper.destroySdDir(cid);
+ return PackageManager.INSTALL_FAILED_CONTAINER_ERROR;
+ }
+ }
+
+ return PackageManager.INSTALL_SUCCEEDED;
+ }
};
// Utility method used to create code paths based on package name and available index.
@@ -7026,6 +7268,10 @@
return (info.flags & ApplicationInfo.FLAG_SYSTEM) != 0;
}
+ private static boolean isSystemApp(PackageSetting ps) {
+ return (ps.pkgFlags & ApplicationInfo.FLAG_SYSTEM) != 0;
+ }
+
private static boolean isUpdatedSystemApp(PackageParser.Package pkg) {
return (pkg.applicationInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0;
}
@@ -8696,9 +8942,15 @@
: PackageManager.INSTALL_INTERNAL;
currFlags = isExternal(pkg) ? PackageManager.INSTALL_EXTERNAL
: PackageManager.INSTALL_INTERNAL;
+
if (newFlags == currFlags) {
Slog.w(TAG, "No move required. Trying to move to same location");
returnCode = PackageManager.MOVE_FAILED_INVALID_LOCATION;
+ } else {
+ if (isForwardLocked(pkg)) {
+ currFlags |= PackageManager.INSTALL_FORWARD_LOCK;
+ newFlags |= PackageManager.INSTALL_FORWARD_LOCK;
+ }
}
}
if (returnCode == PackageManager.MOVE_SUCCEEDED) {
@@ -8784,21 +9036,31 @@
final String newNativePath = mp.targetArgs
.getNativeLibraryPath();
- if ((mp.flags & PackageManager.INSTALL_EXTERNAL) == 0) {
- if (mInstaller
- .unlinkNativeLibraryDirectory(pkg.applicationInfo.dataDir) < 0) {
- returnCode = PackageManager.MOVE_FAILED_INSUFFICIENT_STORAGE;
+ try {
+ final File newNativeDir = new File(newNativePath);
+
+ final String libParentDir = newNativeDir.getParentFile()
+ .getCanonicalPath();
+ if (newNativeDir.getParentFile().getCanonicalPath()
+ .equals(pkg.applicationInfo.dataDir)) {
+ if (mInstaller
+ .unlinkNativeLibraryDirectory(pkg.applicationInfo.dataDir) < 0) {
+ returnCode = PackageManager.MOVE_FAILED_INSUFFICIENT_STORAGE;
+ } else {
+ NativeLibraryHelper.copyNativeBinariesIfNeededLI(
+ new File(newCodePath), newNativeDir);
+ }
} else {
- NativeLibraryHelper.copyNativeBinariesIfNeededLI(new File(
- newCodePath), new File(newNativePath));
+ if (mInstaller.linkNativeLibraryDirectory(
+ pkg.applicationInfo.dataDir, newNativePath) < 0) {
+ returnCode = PackageManager.MOVE_FAILED_INSUFFICIENT_STORAGE;
+ }
}
- } else {
- if (mInstaller.linkNativeLibraryDirectory(
- pkg.applicationInfo.dataDir, newNativePath) < 0) {
- returnCode = PackageManager.MOVE_FAILED_INSUFFICIENT_STORAGE;
- }
+ } catch (IOException e) {
+ returnCode = PackageManager.MOVE_FAILED_INVALID_LOCATION;
}
+
if (returnCode == PackageManager.MOVE_SUCCEEDED) {
pkg.mPath = newCodePath;
// Move dex files around
diff --git a/services/java/com/android/server/pm/Settings.java b/services/java/com/android/server/pm/Settings.java
index d015278..d0eda2d 100644
--- a/services/java/com/android/server/pm/Settings.java
+++ b/services/java/com/android/server/pm/Settings.java
@@ -102,7 +102,7 @@
final HashMap<String, PackageSetting> mPackages =
new HashMap<String, PackageSetting>();
// List of replaced system applications
- final HashMap<String, PackageSetting> mDisabledSysPackages =
+ private final HashMap<String, PackageSetting> mDisabledSysPackages =
new HashMap<String, PackageSetting>();
// These are the last platform API version we were using for
@@ -280,6 +280,14 @@
return ret;
}
+ boolean isDisabledSystemPackageLPr(String name) {
+ return mDisabledSysPackages.containsKey(name);
+ }
+
+ void removeDisabledSystemPackageLPw(String name) {
+ mDisabledSysPackages.remove(name);
+ }
+
PackageSetting addPackageLPw(String name, String realName, File codePath, File resourcePath,
String nativeLibraryPathString, int uid, int vc, int pkgFlags) {
PackageSetting p = mPackages.get(name);
diff --git a/services/java/com/android/server/wm/AppWindowAnimator.java b/services/java/com/android/server/wm/AppWindowAnimator.java
index d635e8c..de756b1 100644
--- a/services/java/com/android/server/wm/AppWindowAnimator.java
+++ b/services/java/com/android/server/wm/AppWindowAnimator.java
@@ -85,6 +85,9 @@
animation = sDummyAnimation;
animInitialized = false;
}
+ hasTransformation = true;
+ transformation.clear();
+ transformation.setAlpha(mAppToken.reportedVisible ? 1 : 0);
}
public void clearAnimation() {
@@ -186,8 +189,6 @@
// it as not animating for purposes of scheduling transactions;
// when it is really time to animate, this will be set to
// a real animation and the next call will execute normally.
- hasTransformation = true;
- transformation.setAlpha(mAppToken.reportedVisible ? 1 : 0);
return false;
}
diff --git a/services/java/com/android/server/wm/BlackFrame.java b/services/java/com/android/server/wm/BlackFrame.java
index c915932..27af313 100644
--- a/services/java/com/android/server/wm/BlackFrame.java
+++ b/services/java/com/android/server/wm/BlackFrame.java
@@ -42,8 +42,17 @@
this.layer = layer;
int w = r-l;
int h = b-t;
- surface = new Surface(session, 0, "BlackSurface",
- -1, w, h, PixelFormat.OPAQUE, Surface.FX_SURFACE_DIM);
+ if (WindowManagerService.DEBUG_SURFACE_TRACE) {
+ surface = new WindowStateAnimator.SurfaceTrace(session, 0, "BlackSurface("
+ + l + ", " + t + ")",
+ -1, w, h, PixelFormat.OPAQUE, Surface.FX_SURFACE_DIM);
+ } else {
+ surface = new Surface(session, 0, "BlackSurface",
+ -1, w, h, PixelFormat.OPAQUE, Surface.FX_SURFACE_DIM);
+ }
+ surface.setAlpha(1);
+ surface.setLayer(layer);
+ surface.show();
if (WindowManagerService.SHOW_TRANSACTIONS ||
WindowManagerService.SHOW_SURFACE_ALLOC) Slog.i(WindowManagerService.TAG,
" BLACK " + surface + ": CREATE layer=" + layer);
@@ -58,8 +67,6 @@
surface.setMatrix(
mTmpFloats[Matrix.MSCALE_X], mTmpFloats[Matrix.MSKEW_Y],
mTmpFloats[Matrix.MSKEW_X], mTmpFloats[Matrix.MSCALE_Y]);
- surface.setAlpha(1.0f);
- surface.setLayer(layer);
if (false) {
Slog.i(WindowManagerService.TAG, "Black Surface @ (" + left + "," + top + "): ("
+ mTmpFloats[Matrix.MTRANS_X] + ","
@@ -159,14 +166,6 @@
}
}
- public void setAlpha(float alpha) {
- for (int i=0; i<mBlackSurfaces.length; i++) {
- if (mBlackSurfaces[i] != null) {
- mBlackSurfaces[i].surface.setAlpha(alpha);
- }
- }
- }
-
public void clearMatrix() {
for (int i=0; i<mBlackSurfaces.length; i++) {
if (mBlackSurfaces[i] != null) {
diff --git a/services/java/com/android/server/wm/DimAnimator.java b/services/java/com/android/server/wm/DimAnimator.java
index f9f9d1a..e8f56c8 100644
--- a/services/java/com/android/server/wm/DimAnimator.java
+++ b/services/java/com/android/server/wm/DimAnimator.java
@@ -68,8 +68,10 @@
* {@link #updateSurface} after all windows are examined.
*/
void updateParameters(final Resources res, final Parameters params, final long currentTime) {
- final int dw = params.mDimWidth;
- final int dh = params.mDimHeight;
+ // Multiply by 1.5 so that rotating a frozen surface that includes this does not expose a
+ // corner.
+ final int dw = (int) (params.mDimWidth * 1.5);
+ final int dh = (int) (params.mDimHeight * 1.5);
final WindowStateAnimator winAnimator = params.mDimWinAnimator;
final float target = params.mDimTarget;
if (!mDimShown) {
@@ -79,7 +81,8 @@
try {
mLastDimWidth = dw;
mLastDimHeight = dh;
- mDimSurface.setPosition(0, 0);
+ // back off position so mDimXXX/4 is before and mDimXXX/4 is after
+ mDimSurface.setPosition(-1 * dw / 6, -1 * dh /6);
mDimSurface.setSize(dw, dh);
mDimSurface.show();
} catch (RuntimeException e) {
@@ -89,6 +92,8 @@
mLastDimWidth = dw;
mLastDimHeight = dh;
mDimSurface.setSize(dw, dh);
+ // back off position so mDimXXX/4 is before and mDimXXX/4 is after
+ mDimSurface.setPosition(-1 * dw / 6, -1 * dh /6);
}
mDimSurface.setLayer(winAnimator.mAnimLayer - WindowManagerService.LAYER_OFFSET_DIM);
diff --git a/services/java/com/android/server/wm/InputMonitor.java b/services/java/com/android/server/wm/InputMonitor.java
index c28cfa2..c4bb519 100644
--- a/services/java/com/android/server/wm/InputMonitor.java
+++ b/services/java/com/android/server/wm/InputMonitor.java
@@ -41,7 +41,9 @@
private boolean mInputDispatchFrozen;
// When true, input dispatch proceeds normally. Otherwise all events are dropped.
- private boolean mInputDispatchEnabled = true;
+ // Initially false, so that input does not get dispatched until boot is finished at
+ // which point the ActivityManager will enable dispatching.
+ private boolean mInputDispatchEnabled;
// When true, need to call updateInputWindowsLw().
private boolean mUpdateInputWindowsNeeded = true;
diff --git a/services/java/com/android/server/wm/ScreenRotationAnimation.java b/services/java/com/android/server/wm/ScreenRotationAnimation.java
index 13013a8..938db9e 100644
--- a/services/java/com/android/server/wm/ScreenRotationAnimation.java
+++ b/services/java/com/android/server/wm/ScreenRotationAnimation.java
@@ -862,7 +862,6 @@
} else {
mExitFrameFinalMatrix.setConcat(mExitTransformation.getMatrix(), mFrameInitialMatrix);
mExitingBlackFrame.setMatrix(mExitFrameFinalMatrix);
- mExitingBlackFrame.setAlpha(mExitTransformation.getAlpha());
}
}
diff --git a/services/java/com/android/server/wm/WindowAnimator.java b/services/java/com/android/server/wm/WindowAnimator.java
index e5b1f2c..5536559 100644
--- a/services/java/com/android/server/wm/WindowAnimator.java
+++ b/services/java/com/android/server/wm/WindowAnimator.java
@@ -85,6 +85,15 @@
mPolicy = policy;
}
+ void hideWallpapersLocked() {
+ for (final WindowToken token : mService.mWallpaperTokens) {
+ for (final WindowState wallpaper : token.windows) {
+ wallpaper.mWinAnimator.hide();
+ }
+ token.hidden = true;
+ }
+ }
+
private void testWallpaperAndBackgroundLocked() {
if (mWindowDetachedWallpaper != mDetachedWallpaper) {
if (WindowManagerService.DEBUG_WALLPAPER) Slog.v(TAG,
@@ -140,6 +149,8 @@
mService.debugLayoutRepeats("appToken " + appAnimator.mAppToken + " done",
mPendingLayoutChanges);
}
+ if (WindowManagerService.DEBUG_ANIM) Slog.v(TAG,
+ "updateWindowsApps...: done animating " + appAnimator.mAppToken);
}
}
@@ -154,9 +165,11 @@
// stopped animating, do one more pass through the layout
mPendingLayoutChanges |= WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER;
if (WindowManagerService.DEBUG_LAYOUT_REPEATS) {
- mService.debugLayoutRepeats("exiting appToken " + appAnimator.mAppToken
+ mService.debugLayoutRepeats("exiting appToken " + appAnimator.mAppToken
+ " done", mPendingLayoutChanges);
}
+ if (WindowManagerService.DEBUG_ANIM) Slog.v(TAG,
+ "updateWindowsApps...: done animating exiting " + appAnimator.mAppToken);
}
}
@@ -246,9 +259,9 @@
if (mPolicy.doesForceHide(win, win.mAttrs)) {
if (!wasAnimating && nowAnimating) {
- if (WindowManagerService.DEBUG_VISIBILITY) Slog.v(TAG,
- "Animation started that could impact force hide: "
- + win);
+ if (WindowManagerService.DEBUG_ANIM ||
+ WindowManagerService.DEBUG_VISIBILITY) Slog.v(TAG,
+ "Animation started that could impact force hide: " + win);
mBulkUpdateParams |= SET_FORCE_HIDING_CHANGED;
mPendingLayoutChanges |= WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER;
if (WindowManagerService.DEBUG_LAYOUT_REPEATS) {
diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java
index 16aeb35..8957edf 100755
--- a/services/java/com/android/server/wm/WindowManagerService.java
+++ b/services/java/com/android/server/wm/WindowManagerService.java
@@ -130,8 +130,6 @@
import android.view.animation.AnimationUtils;
import android.view.animation.Interpolator;
import android.view.animation.ScaleAnimation;
-import android.view.animation.Transformation;
-import android.view.animation.TranslateAnimation;
import java.io.BufferedWriter;
import java.io.DataInputStream;
@@ -2262,6 +2260,7 @@
boolean imMayMove = true;
if (attrs.type == TYPE_INPUT_METHOD) {
+ win.mGivenInsetsPending = true;
mInputMethodWindow = win;
addInputMethodWindowToListLocked(win);
imMayMove = false;
@@ -3244,12 +3243,21 @@
if (mNextAppTransitionType == ActivityOptions.ANIM_CUSTOM) {
a = loadAnimation(mNextAppTransitionPackage, enter ?
mNextAppTransitionEnter : mNextAppTransitionExit);
+ if (DEBUG_ANIM) Slog.v(TAG, "applyAnimation: wtoken=" + wtoken
+ + " anim=" + a + " nextAppTransition=ANIM_CUSTOM"
+ + " transit=" + transit + " Callers " + Debug.getCallers(3));
} else if (mNextAppTransitionType == ActivityOptions.ANIM_SCALE_UP) {
a = createScaleUpAnimationLocked(transit, enter);
initialized = true;
+ if (DEBUG_ANIM) Slog.v(TAG, "applyAnimation: wtoken=" + wtoken
+ + " anim=" + a + " nextAppTransition=ANIM_SCALE_UP"
+ + " transit=" + transit + " Callers " + Debug.getCallers(3));
} else if (mNextAppTransitionType == ActivityOptions.ANIM_THUMBNAIL) {
a = createThumbnailAnimationLocked(transit, enter, false);
initialized = true;
+ if (DEBUG_ANIM) Slog.v(TAG, "applyAnimation: wtoken=" + wtoken
+ + " anim=" + a + " nextAppTransition=ANIM_THUMBNAIL"
+ + " transit=" + transit + " Callers " + Debug.getCallers(3));
} else {
int animAttr = 0;
switch (transit) {
@@ -3308,7 +3316,7 @@
if (DEBUG_ANIM) Slog.v(TAG, "applyAnimation: wtoken=" + wtoken
+ " anim=" + a
+ " animAttr=0x" + Integer.toHexString(animAttr)
- + " transit=" + transit);
+ + " transit=" + transit + " Callers " + Debug.getCallers(3));
}
if (a != null) {
if (DEBUG_ANIM) {
@@ -3814,7 +3822,8 @@
synchronized(mWindowMap) {
if (DEBUG_APP_TRANSITIONS) Slog.v(
TAG, "Prepare app transition: transit=" + transit
- + " mNextAppTransition=" + mNextAppTransition);
+ + " mNextAppTransition=" + mNextAppTransition
+ + "\nCallers=" + Debug.getCallers(3));
if (okToDisplay()) {
if (mNextAppTransition == WindowManagerPolicy.TRANSIT_UNSET
|| mNextAppTransition == WindowManagerPolicy.TRANSIT_NONE) {
@@ -4226,7 +4235,7 @@
e = new RuntimeException();
e.fillInStackTrace();
}
- Slog.v(TAG, "setAppVisibility(" + token + ", " + visible
+ Slog.v(TAG, "setAppVisibility(" + token + ", visible=" + visible
+ "): mNextAppTransition=" + mNextAppTransition
+ " hidden=" + wtoken.hidden
+ " hiddenRequested=" + wtoken.hiddenRequested, e);
@@ -4964,8 +4973,8 @@
// Called by window manager policy. Not exposed externally.
@Override
public int getLidState() {
- final int SW_LID = 0x00;
- int sw = mInputManager.getSwitchState(-1, InputDevice.SOURCE_ANY, SW_LID);
+ int sw = mInputManager.getSwitchState(-1, InputDevice.SOURCE_ANY,
+ InputManagerService.SW_LID);
if (sw > 0) {
// Switch state: AKEY_STATE_DOWN or AKEY_STATE_VIRTUAL.
return LID_CLOSED;
@@ -5138,7 +5147,7 @@
//Slog.i(TAG, "******* TELLING SURFACE FLINGER WE ARE BOOTED!");
Parcel data = Parcel.obtain();
data.writeInterfaceToken("android.ui.ISurfaceComposer");
- surfaceFlinger.transact(IBinder.FIRST_CALL_TRANSACTION,
+ surfaceFlinger.transact(IBinder.FIRST_CALL_TRANSACTION, // BOOT_FINISHED
data, null, 0);
data.recycle();
}
@@ -5569,7 +5578,8 @@
mWaitingForConfig = true;
mLayoutNeeded = true;
startFreezingDisplayLocked(inTransaction);
- mInputManager.setDisplayOrientation(0, rotation);
+ mInputManager.setDisplayOrientation(0, rotation,
+ mDisplay != null ? mDisplay.getExternalRotation() : Surface.ROTATION_0);
// We need to update our screen size information to match the new
// rotation. Note that this is redundant with the later call to
@@ -6284,8 +6294,6 @@
final int dh = mCurDisplayHeight;
if (config != null) {
- mInputManager.getInputConfiguration(config);
-
int orientation = Configuration.ORIENTATION_SQUARE;
if (dw < dh) {
orientation = Configuration.ORIENTATION_PORTRAIT;
@@ -6328,12 +6336,46 @@
config.compatScreenHeightDp = (int)(config.screenHeightDp / mCompatibleScreenScale);
config.compatSmallestScreenWidthDp = computeCompatSmallestWidth(rotated, dm, dw, dh);
+ // Update the configuration based on available input devices, lid switch,
+ // and platform configuration.
+ config.touchscreen = Configuration.TOUCHSCREEN_NOTOUCH;
+ config.keyboard = Configuration.KEYBOARD_NOKEYS;
+ config.navigation = Configuration.NAVIGATION_NONAV;
+
+ int keyboardPresence = 0;
+ int navigationPresence = 0;
+ for (InputDevice device : mInputManager.getInputDevices()) {
+ if (!device.isVirtual()) {
+ final int sources = device.getSources();
+ final int presenceFlag = device.isExternal() ?
+ WindowManagerPolicy.PRESENCE_EXTERNAL :
+ WindowManagerPolicy.PRESENCE_INTERNAL;
+
+ if ((sources & InputDevice.SOURCE_TOUCHSCREEN) != 0) {
+ config.touchscreen = Configuration.TOUCHSCREEN_FINGER;
+ }
+
+ if ((sources & InputDevice.SOURCE_TRACKBALL) != 0) {
+ config.navigation = Configuration.NAVIGATION_TRACKBALL;
+ navigationPresence |= presenceFlag;
+ } else if ((sources & InputDevice.SOURCE_DPAD) != 0
+ && config.navigation == Configuration.NAVIGATION_NONAV) {
+ config.navigation = Configuration.NAVIGATION_DPAD;
+ navigationPresence |= presenceFlag;
+ }
+
+ if (device.getKeyboardType() == InputDevice.KEYBOARD_TYPE_ALPHABETIC) {
+ config.keyboard = Configuration.KEYBOARD_QWERTY;
+ keyboardPresence |= presenceFlag;
+ }
+ }
+ }
+
// Determine whether a hard keyboard is available and enabled.
boolean hardKeyboardAvailable = config.keyboard != Configuration.KEYBOARD_NOKEYS;
if (hardKeyboardAvailable != mHardKeyboardAvailable) {
mHardKeyboardAvailable = hardKeyboardAvailable;
mHardKeyboardEnabled = hardKeyboardAvailable;
-
mH.removeMessages(H.REPORT_HARD_KEYBOARD_STATUS_CHANGE);
mH.sendEmptyMessage(H.REPORT_HARD_KEYBOARD_STATUS_CHANGE);
}
@@ -6341,13 +6383,11 @@
config.keyboard = Configuration.KEYBOARD_NOKEYS;
}
- // Update value of keyboardHidden, hardKeyboardHidden and navigationHidden
- // based on whether a hard or soft keyboard is present, whether navigation keys
- // are present and the lid switch state.
+ // Let the policy update hidden states.
config.keyboardHidden = Configuration.KEYBOARDHIDDEN_NO;
config.hardKeyboardHidden = Configuration.HARDKEYBOARDHIDDEN_NO;
config.navigationHidden = Configuration.NAVIGATIONHIDDEN_NO;
- mPolicy.adjustConfigurationLw(config);
+ mPolicy.adjustConfigurationLw(config, keyboardPresence, navigationPresence);
}
return true;
@@ -6511,14 +6551,13 @@
+ " milliseconds before attempting to detect safe mode.");
}
- final int BTN_MOUSE = 0x110;
int menuState = mInputManager.getKeyCodeState(-1, InputDevice.SOURCE_ANY,
KeyEvent.KEYCODE_MENU);
int sState = mInputManager.getKeyCodeState(-1, InputDevice.SOURCE_ANY, KeyEvent.KEYCODE_S);
int dpadState = mInputManager.getKeyCodeState(-1, InputDevice.SOURCE_DPAD,
KeyEvent.KEYCODE_DPAD_CENTER);
int trackballState = mInputManager.getScanCodeState(-1, InputDevice.SOURCE_TRACKBALL,
- BTN_MOUSE);
+ InputManagerService.BTN_MOUSE);
int volumeDownState = mInputManager.getKeyCodeState(-1, InputDevice.SOURCE_ANY,
KeyEvent.KEYCODE_VOLUME_DOWN);
mSafeMode = menuState > 0 || sState > 0 || dpadState > 0 || trackballState > 0
@@ -6566,6 +6605,8 @@
mInputManager.setDisplaySize(Display.DEFAULT_DISPLAY,
mDisplay.getRawWidth(), mDisplay.getRawHeight(),
mDisplay.getRawExternalWidth(), mDisplay.getRawExternalHeight());
+ mInputManager.setDisplayOrientation(Display.DEFAULT_DISPLAY,
+ mDisplay.getRotation(), mDisplay.getExternalRotation());
mPolicy.setInitialDisplaySize(mDisplay, mInitialDisplayWidth, mInitialDisplayHeight);
}
@@ -6630,8 +6671,7 @@
public static final int SET_TRANSPARENT_REGION = ANIMATOR_WHAT_OFFSET + 1;
public static final int SET_WALLPAPER_OFFSET = ANIMATOR_WHAT_OFFSET + 2;
public static final int SET_DIM_PARAMETERS = ANIMATOR_WHAT_OFFSET + 3;
- public static final int SET_MOVE_ANIMATION = ANIMATOR_WHAT_OFFSET + 4;
- public static final int CLEAR_PENDING_ACTIONS = ANIMATOR_WHAT_OFFSET + 5;
+ public static final int CLEAR_PENDING_ACTIONS = ANIMATOR_WHAT_OFFSET + 4;
private Session mLastReportedHold;
@@ -7115,18 +7155,6 @@
break;
}
- case SET_MOVE_ANIMATION: {
- WindowAnimator.SetAnimationParams params =
- (WindowAnimator.SetAnimationParams) msg.obj;
- WindowStateAnimator winAnimator = params.mWinAnimator;
- winAnimator.setAnimation(params.mAnimation);
- winAnimator.mAnimDw = params.mAnimDw;
- winAnimator.mAnimDh = params.mAnimDh;
-
- scheduleAnimationLocked();
- break;
- }
-
case CLEAR_PENDING_ACTIONS: {
mAnimator.clearPendingActions();
break;
@@ -7823,7 +7851,11 @@
mToTopApps.clear();
}
- WindowState oldWallpaper = mWallpaperTarget;
+ // if wallpaper is animating in or out set oldWallpaper to null else to wallpaper
+ WindowState oldWallpaper =
+ mWallpaperTarget != null && mWallpaperTarget.mWinAnimator.isAnimating()
+ && !mWallpaperTarget.mWinAnimator.isDummyAnimation()
+ ? null : mWallpaperTarget;
adjustWallpaperWindowsLocked();
mInnerFields.mWallpaperMayChange = false;
@@ -8134,8 +8166,8 @@
// to go through the process of getting informed
// by the application when it has finished drawing.
if (w.mOrientationChanging) {
- if (DEBUG_ORIENTATION) Slog.v(TAG,
- "Orientation start waiting for draw in "
+ if (DEBUG_ANIM || DEBUG_ORIENTATION) Slog.v(TAG,
+ "Orientation start waiting for draw mDrawState=DRAW_PENDING in "
+ w + ", surface " + winAnimator.mSurface);
winAnimator.mDrawState = WindowStateAnimator.DRAW_PENDING;
if (w.mAppToken != null) {
@@ -8370,9 +8402,6 @@
winAnimator.setAnimation(a);
winAnimator.mAnimDw = w.mLastFrame.left - w.mFrame.left;
winAnimator.mAnimDh = w.mLastFrame.top - w.mFrame.top;
- } else {
- winAnimator.mAnimDw = innerDw;
- winAnimator.mAnimDh = innerDh;
}
//Slog.i(TAG, "Window " + this + " clearing mContentChanged - done placing");
@@ -9221,6 +9250,15 @@
}
}
+ // It is assumed that this method is called only by InputMethodManagerService.
+ public void saveLastInputMethodWindowForTransition() {
+ synchronized (mWindowMap) {
+ if (mInputMethodWindow != null) {
+ mPolicy.setLastInputMethodWindowLw(mInputMethodWindow, mInputMethodTarget);
+ }
+ }
+ }
+
@Override
public boolean hasNavigationBar() {
return mPolicy.hasNavigationBar();
diff --git a/services/java/com/android/server/wm/WindowStateAnimator.java b/services/java/com/android/server/wm/WindowStateAnimator.java
index 9147a10..642de73 100644
--- a/services/java/com/android/server/wm/WindowStateAnimator.java
+++ b/services/java/com/android/server/wm/WindowStateAnimator.java
@@ -177,6 +177,13 @@
|| atoken.inPendingTransaction));
}
+ /** Is the window animating the DummyAnimation? */
+ boolean isDummyAnimation() {
+ final AppWindowToken atoken = mWin.mAppToken;
+ return atoken != null
+ && atoken.mAppAnimator.animation == AppWindowAnimator.sDummyAnimation;
+ }
+
/** Is this window currently animating? */
boolean isWindowAnimating() {
return mAnimation != null;
@@ -363,25 +370,40 @@
mWin.mDestroying = true;
if (WindowState.SHOW_TRANSACTIONS) WindowManagerService.logSurface(
mWin, "HIDE (finishExit)", null);
- mSurfaceShown = false;
- try {
- mSurface.hide();
- } catch (RuntimeException e) {
- Slog.w(TAG, "Error hiding surface in " + this, e);
- }
- mLastHidden = true;
+ hide();
}
mWin.mExiting = false;
if (mWin.mRemoveOnExit) {
mService.mPendingRemove.add(mWin);
mWin.mRemoveOnExit = false;
}
+ if (mService.mWallpaperTarget == mWin) {
+ mAnimator.hideWallpapersLocked();
+ }
+ }
+
+ void hide() {
+ if (!mLastHidden) {
+ //dump();
+ mLastHidden = true;
+ if (WindowManagerService.SHOW_TRANSACTIONS) WindowManagerService.logSurface(mWin,
+ "HIDE (performLayout)", null);
+ if (mSurface != null) {
+ mSurfaceShown = false;
+ try {
+ mSurface.hide();
+ } catch (RuntimeException e) {
+ Slog.w(TAG, "Exception hiding surface in " + mWin);
+ }
+ }
+ }
}
boolean finishDrawingLocked() {
if (mDrawState == DRAW_PENDING) {
- if (SHOW_TRANSACTIONS || DEBUG_ORIENTATION) Slog.v(
- TAG, "finishDrawingLocked: " + this + " in " + mSurface);
+ if (DEBUG_ANIM || SHOW_TRANSACTIONS || DEBUG_ORIENTATION) Slog.v(
+ TAG, "finishDrawingLocked: mDrawState=COMMIT_DRAW_PENDING " + this + " in "
+ + mSurface);
mDrawState = COMMIT_DRAW_PENDING;
return true;
}
@@ -393,7 +415,8 @@
if (mDrawState != COMMIT_DRAW_PENDING) {
return false;
}
- //Slog.i(TAG, "commitFinishDrawingLocked: Draw pending. " + mSurface);
+ if (DEBUG_ANIM)
+ Slog.i(TAG, "commitFinishDrawingLocked: mDrawState=READY_TO_SHOW " + mSurface);
mDrawState = READY_TO_SHOW;
final boolean starting = mWin.mAttrs.type == TYPE_APPLICATION_STARTING;
final AppWindowToken atoken = mWin.mAppToken;
@@ -526,8 +549,8 @@
if (mSurface == null) {
mReportDestroySurface = false;
mSurfacePendingDestroy = false;
- if (DEBUG_ORIENTATION) Slog.i(TAG,
- "createSurface " + this + ": DRAW NOW PENDING");
+ if (DEBUG_ANIM || DEBUG_ORIENTATION) Slog.i(TAG,
+ "createSurface " + this + ": mDrawState=DRAW_PENDING");
mDrawState = DRAW_PENDING;
if (mWin.mAppToken != null) {
mWin.mAppToken.allDrawn = false;
@@ -949,6 +972,10 @@
mSurface.setSize(width, height);
mAnimator.mPendingLayoutChanges |=
WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER;
+ if ((w.mAttrs.flags & LayoutParams.FLAG_DIM_BEHIND) != 0) {
+ mAnimator.startDimming(this, w.mExiting ? 0 : w.mAttrs.dimAmount,
+ mService.mAppDisplayWidth, mService.mAppDisplayHeight);
+ }
} catch (RuntimeException e) {
// If something goes wrong with the surface (such
// as running out of memory), don't take down the
@@ -981,20 +1008,7 @@
setSurfaceBoundaries(recoveringMemory);
if (w.mAttachedHidden || !w.isReadyForDisplay()) {
- if (!mLastHidden) {
- //dump();
- mLastHidden = true;
- if (WindowManagerService.SHOW_TRANSACTIONS) WindowManagerService.logSurface(w,
- "HIDE (performLayout)", null);
- if (mSurface != null) {
- mSurfaceShown = false;
- try {
- mSurface.hide();
- } catch (RuntimeException e) {
- Slog.w(TAG, "Exception hiding surface in " + w);
- }
- }
- }
+ hide();
// If we are waiting for this window to handle an
// orientation change, well, it is hidden, so
// doesn't really matter. Note that this does
@@ -1062,6 +1076,9 @@
}
}
} else {
+ if (DEBUG_ANIM) {
+ Slog.v(TAG, "prepareSurface: No changes in animation for " + mWin);
+ }
displayed = true;
}
@@ -1145,6 +1162,7 @@
// Force the show in the next prepareSurfaceLocked() call.
mLastAlpha = -1;
+ if (DEBUG_ANIM) Slog.v(TAG, "performShowLocked: mDrawState=HAS_DRAWN");
mDrawState = HAS_DRAWN;
mService.scheduleAnimationLocked();
@@ -1285,7 +1303,7 @@
+ " anim=" + anim + " attr=0x" + Integer.toHexString(attr)
+ " a=" + a
+ " mAnimation=" + mAnimation
- + " isEntrance=" + isEntrance);
+ + " isEntrance=" + isEntrance + " Callers " + Debug.getCallers(3));
if (a != null) {
if (WindowManagerService.DEBUG_ANIM) {
RuntimeException e = null;
diff --git a/services/jni/com_android_server_input_InputManagerService.cpp b/services/jni/com_android_server_input_InputManagerService.cpp
index b2a2429..0e1ce51 100644
--- a/services/jni/com_android_server_input_InputManagerService.cpp
+++ b/services/jni/com_android_server_input_InputManagerService.cpp
@@ -98,12 +98,6 @@
jclass clazz;
} gMotionEventClassInfo;
-static struct {
- jfieldID touchscreen;
- jfieldID keyboard;
- jfieldID navigation;
-} gConfigurationClassInfo;
-
// --- Global functions ---
@@ -172,7 +166,7 @@
void setDisplaySize(int32_t displayId, int32_t width, int32_t height,
int32_t externalWidth, int32_t externalHeight);
- void setDisplayOrientation(int32_t displayId, int32_t orientation);
+ void setDisplayOrientation(int32_t displayId, int32_t orientation, int32_t externalOrientation);
status_t registerInputChannel(JNIEnv* env, const sp<InputChannel>& inputChannel,
const sp<InputWindowHandle>& inputWindowHandle, bool monitor);
@@ -230,8 +224,9 @@
struct Locked {
// Display size information.
int32_t displayWidth, displayHeight; // -1 when not initialized
- int32_t displayExternalWidth, displayExternalHeight; // -1 when not initialized
int32_t displayOrientation;
+ int32_t displayExternalWidth, displayExternalHeight; // -1 when not initialized
+ int32_t displayExternalOrientation;
// System UI visibility.
int32_t systemUiVisibility;
@@ -281,9 +276,10 @@
AutoMutex _l(mLock);
mLocked.displayWidth = -1;
mLocked.displayHeight = -1;
+ mLocked.displayOrientation = DISPLAY_ORIENTATION_0;
mLocked.displayExternalWidth = -1;
mLocked.displayExternalHeight = -1;
- mLocked.displayOrientation = DISPLAY_ORIENTATION_0;
+ mLocked.displayExternalOrientation = DISPLAY_ORIENTATION_0;
mLocked.systemUiVisibility = ASYSTEM_UI_VISIBILITY_STATUS_BAR_VISIBLE;
mLocked.pointerSpeed = 0;
@@ -351,7 +347,8 @@
}
}
-void NativeInputManager::setDisplayOrientation(int32_t displayId, int32_t orientation) {
+void NativeInputManager::setDisplayOrientation(int32_t displayId, int32_t orientation,
+ int32_t externalOrientation) {
bool changed = false;
if (displayId == 0) {
AutoMutex _l(mLock);
@@ -365,6 +362,11 @@
controller->setDisplayOrientation(orientation);
}
}
+
+ if (mLocked.displayExternalOrientation != externalOrientation) {
+ changed = true;
+ mLocked.displayExternalOrientation = externalOrientation;
+ }
}
if (changed) {
@@ -450,7 +452,7 @@
mLocked.displayWidth, mLocked.displayHeight, mLocked.displayOrientation);
outConfig->setDisplayInfo(0, true /*external*/,
mLocked.displayExternalWidth, mLocked.displayExternalHeight,
- mLocked.displayOrientation);
+ mLocked.displayExternalOrientation);
} // release lock
}
@@ -1047,10 +1049,10 @@
}
static void nativeSetDisplayOrientation(JNIEnv* env, jclass clazz,
- jint ptr, jint displayId, jint orientation) {
+ jint ptr, jint displayId, jint orientation, jint externalOrientation) {
NativeInputManager* im = reinterpret_cast<NativeInputManager*>(ptr);
- im->setDisplayOrientation(displayId, orientation);
+ im->setDisplayOrientation(displayId, orientation, externalOrientation);
}
static jint nativeGetScanCodeState(JNIEnv* env, jclass clazz,
@@ -1228,18 +1230,6 @@
im->setSystemUiVisibility(visibility);
}
-static void nativeGetInputConfiguration(JNIEnv* env,
- jclass clazz, jint ptr, jobject configObj) {
- NativeInputManager* im = reinterpret_cast<NativeInputManager*>(ptr);
-
- InputConfiguration config;
- im->getInputManager()->getReader()->getInputConfiguration(& config);
-
- env->SetIntField(configObj, gConfigurationClassInfo.touchscreen, config.touchScreen);
- env->SetIntField(configObj, gConfigurationClassInfo.keyboard, config.keyboard);
- env->SetIntField(configObj, gConfigurationClassInfo.navigation, config.navigation);
-}
-
static jboolean nativeTransferTouchFocus(JNIEnv* env,
jclass clazz, jint ptr, jobject fromChannelObj, jobject toChannelObj) {
NativeInputManager* im = reinterpret_cast<NativeInputManager*>(ptr);
@@ -1345,7 +1335,7 @@
(void*) nativeStart },
{ "nativeSetDisplaySize", "(IIIIII)V",
(void*) nativeSetDisplaySize },
- { "nativeSetDisplayOrientation", "(III)V",
+ { "nativeSetDisplayOrientation", "(IIII)V",
(void*) nativeSetDisplayOrientation },
{ "nativeGetScanCodeState", "(IIII)I",
(void*) nativeGetScanCodeState },
@@ -1372,8 +1362,6 @@
(void*) nativeSetInputDispatchMode },
{ "nativeSetSystemUiVisibility", "(II)V",
(void*) nativeSetSystemUiVisibility },
- { "nativeGetInputConfiguration", "(ILandroid/content/res/Configuration;)V",
- (void*) nativeGetInputConfiguration },
{ "nativeTransferTouchFocus", "(ILandroid/view/InputChannel;Landroid/view/InputChannel;)Z",
(void*) nativeTransferTouchFocus },
{ "nativeSetPointerSpeed", "(II)V",
@@ -1504,19 +1492,6 @@
FIND_CLASS(gMotionEventClassInfo.clazz, "android/view/MotionEvent");
gMotionEventClassInfo.clazz = jclass(env->NewGlobalRef(gMotionEventClassInfo.clazz));
- // Configuration
-
- FIND_CLASS(clazz, "android/content/res/Configuration");
-
- GET_FIELD_ID(gConfigurationClassInfo.touchscreen, clazz,
- "touchscreen", "I");
-
- GET_FIELD_ID(gConfigurationClassInfo.keyboard, clazz,
- "keyboard", "I");
-
- GET_FIELD_ID(gConfigurationClassInfo.navigation, clazz,
- "navigation", "I");
-
return 0;
}
diff --git a/services/tests/servicestests/src/com/android/server/NetworkPolicyManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/NetworkPolicyManagerServiceTest.java
index ba3fd3c..c23e868 100644
--- a/services/tests/servicestests/src/com/android/server/NetworkPolicyManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/NetworkPolicyManagerServiceTest.java
@@ -37,6 +37,7 @@
import static com.android.server.net.NetworkPolicyManagerService.TYPE_LIMIT_SNOOZED;
import static com.android.server.net.NetworkPolicyManagerService.TYPE_WARNING;
import static org.easymock.EasyMock.anyInt;
+import static org.easymock.EasyMock.anyLong;
import static org.easymock.EasyMock.aryEq;
import static org.easymock.EasyMock.capture;
import static org.easymock.EasyMock.createMock;
@@ -106,8 +107,9 @@
private static final long TEST_START = 1194220800000L;
private static final String TEST_IFACE = "test0";
+ private static final String TEST_SSID = "AndroidAP";
- private static NetworkTemplate sTemplateWifi = NetworkTemplate.buildTemplateWifi();
+ private static NetworkTemplate sTemplateWifi = NetworkTemplate.buildTemplateWifi(TEST_SSID);
private BroadcastInterceptingContext mServiceContext;
private File mPolicyDir;
@@ -228,6 +230,7 @@
// expect to answer screen status during systemReady()
expect(mPowerManager.isScreenOn()).andReturn(true).atLeastOnce();
+ expect(mNetworkManager.isBandwidthControlEnabled()).andReturn(true).atLeastOnce();
expectCurrentTime();
replay();
@@ -612,6 +615,7 @@
expect(mConnManager.getAllNetworkState()).andReturn(state).atLeastOnce();
expectCurrentTime();
expectClearNotifications();
+ expectAdvisePersistThreshold();
future = expectMeteredIfacesChanged();
replay();
@@ -636,6 +640,7 @@
expectSetInterfaceQuota(TEST_IFACE, (2 * MB_IN_BYTES) - 512);
expectClearNotifications();
+ expectAdvisePersistThreshold();
future = expectMeteredIfacesChanged(TEST_IFACE);
replay();
@@ -703,6 +708,7 @@
expectPolicyDataEnable(TYPE_WIFI, true);
expectClearNotifications();
+ expectAdvisePersistThreshold();
future = expectMeteredIfacesChanged();
replay();
@@ -729,6 +735,7 @@
expectSetInterfaceQuota(TEST_IFACE, 2 * MB_IN_BYTES);
expectClearNotifications();
+ expectAdvisePersistThreshold();
future = expectMeteredIfacesChanged(TEST_IFACE);
replay();
@@ -793,6 +800,7 @@
// still restricted.
expectRemoveInterfaceQuota(TEST_IFACE);
expectSetInterfaceQuota(TEST_IFACE, Long.MAX_VALUE);
+ expectAdvisePersistThreshold();
expectMeteredIfacesChanged(TEST_IFACE);
future = expectClearNotifications();
@@ -834,6 +842,7 @@
expectSetInterfaceQuota(TEST_IFACE, Long.MAX_VALUE);
expectClearNotifications();
+ expectAdvisePersistThreshold();
future = expectMeteredIfacesChanged(TEST_IFACE);
replay();
@@ -860,7 +869,7 @@
info.setDetailedState(DetailedState.CONNECTED, null, null);
final LinkProperties prop = new LinkProperties();
prop.setInterfaceName(TEST_IFACE);
- return new NetworkState(info, prop, null);
+ return new NetworkState(info, prop, null, null, TEST_SSID);
}
private void expectCurrentTime() throws Exception {
@@ -942,6 +951,11 @@
return future;
}
+ private void expectAdvisePersistThreshold() throws Exception {
+ mStatsService.advisePersistThreshold(anyLong());
+ expectLastCall().anyTimes();
+ }
+
private static class TestAbstractFuture<T> extends AbstractFuture<T> {
@Override
public T get() throws InterruptedException, ExecutionException {
diff --git a/services/tests/servicestests/src/com/android/server/NetworkStatsServiceTest.java b/services/tests/servicestests/src/com/android/server/NetworkStatsServiceTest.java
index 6d9bb29..332d198 100644
--- a/services/tests/servicestests/src/com/android/server/NetworkStatsServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/NetworkStatsServiceTest.java
@@ -30,7 +30,7 @@
import static android.net.NetworkStats.UID_ALL;
import static android.net.NetworkStatsHistory.FIELD_ALL;
import static android.net.NetworkTemplate.buildTemplateMobileAll;
-import static android.net.NetworkTemplate.buildTemplateWifi;
+import static android.net.NetworkTemplate.buildTemplateWifiWildcard;
import static android.net.TrafficStats.MB_IN_BYTES;
import static android.net.TrafficStats.UID_REMOVED;
import static android.net.TrafficStats.UID_TETHERING;
@@ -93,8 +93,9 @@
private static final String IMSI_1 = "310004";
private static final String IMSI_2 = "310260";
+ private static final String TEST_SSID = "AndroidAP";
- private static NetworkTemplate sTemplateWifi = buildTemplateWifi();
+ private static NetworkTemplate sTemplateWifi = buildTemplateWifiWildcard();
private static NetworkTemplate sTemplateImsi1 = buildTemplateMobileAll(IMSI_1);
private static NetworkTemplate sTemplateImsi2 = buildTemplateMobileAll(IMSI_2);
@@ -136,7 +137,6 @@
mService = new NetworkStatsService(
mServiceContext, mNetManager, mAlarmManager, mTime, mStatsDir, mSettings);
mService.bindConnectivityManager(mConnManager);
- mSession = mService.openSession();
mElapsedRealtime = 0L;
@@ -154,6 +154,7 @@
replay();
mService.systemReady();
+ mSession = mService.openSession();
verifyAndReset();
mNetworkObserver = networkObserver.getValue();
@@ -162,9 +163,7 @@
@Override
public void tearDown() throws Exception {
- for (File file : mStatsDir.listFiles()) {
- file.delete();
- }
+ IoUtils.deleteContents(mStatsDir);
mServiceContext = null;
mStatsDir = null;
@@ -820,7 +819,8 @@
}
private void expectNetworkStatsSummary(NetworkStats summary) throws Exception {
- expect(mNetManager.getNetworkStatsSummary()).andReturn(summary).atLeastOnce();
+ expect(mNetManager.getNetworkStatsSummaryDev()).andReturn(summary).atLeastOnce();
+ expect(mNetManager.getNetworkStatsSummaryXt()).andReturn(summary).atLeastOnce();
}
private void expectNetworkStatsUidDetail(NetworkStats detail) throws Exception {
@@ -846,13 +846,19 @@
throws Exception {
expect(mSettings.getPollInterval()).andReturn(HOUR_IN_MILLIS).anyTimes();
expect(mSettings.getTimeCacheMaxAge()).andReturn(DAY_IN_MILLIS).anyTimes();
- expect(mSettings.getGlobalAlertBytes()).andReturn(MB_IN_BYTES).anyTimes();
expect(mSettings.getSampleEnabled()).andReturn(true).anyTimes();
- final Config config = new Config(bucketDuration, persistBytes, deleteAge, deleteAge);
+ final Config config = new Config(bucketDuration, deleteAge, deleteAge);
expect(mSettings.getDevConfig()).andReturn(config).anyTimes();
+ expect(mSettings.getXtConfig()).andReturn(config).anyTimes();
expect(mSettings.getUidConfig()).andReturn(config).anyTimes();
expect(mSettings.getUidTagConfig()).andReturn(config).anyTimes();
+
+ expect(mSettings.getGlobalAlertBytes(anyLong())).andReturn(MB_IN_BYTES).anyTimes();
+ expect(mSettings.getDevPersistBytes(anyLong())).andReturn(MB_IN_BYTES).anyTimes();
+ expect(mSettings.getXtPersistBytes(anyLong())).andReturn(MB_IN_BYTES).anyTimes();
+ expect(mSettings.getUidPersistBytes(anyLong())).andReturn(MB_IN_BYTES).anyTimes();
+ expect(mSettings.getUidTagPersistBytes(anyLong())).andReturn(MB_IN_BYTES).anyTimes();
}
private void expectCurrentTime() throws Exception {
@@ -903,7 +909,7 @@
info.setDetailedState(DetailedState.CONNECTED, null, null);
final LinkProperties prop = new LinkProperties();
prop.setInterfaceName(TEST_IFACE);
- return new NetworkState(info, prop, null);
+ return new NetworkState(info, prop, null, null, TEST_SSID);
}
private static NetworkState buildMobile3gState(String subscriberId) {
@@ -912,7 +918,7 @@
info.setDetailedState(DetailedState.CONNECTED, null, null);
final LinkProperties prop = new LinkProperties();
prop.setInterfaceName(TEST_IFACE);
- return new NetworkState(info, prop, null, subscriberId);
+ return new NetworkState(info, prop, null, subscriberId, null);
}
private static NetworkState buildMobile4gState(String iface) {
diff --git a/services/tests/servicestests/src/com/android/server/ThrottleServiceTest.java b/services/tests/servicestests/src/com/android/server/ThrottleServiceTest.java
index 6a9778e..afa0eec 100644
--- a/services/tests/servicestests/src/com/android/server/ThrottleServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/ThrottleServiceTest.java
@@ -232,7 +232,8 @@
final INetworkManagementService nmService = INetworkManagementService.Stub.asInterface(b);
// test is currently no-op, just exercises stats apis
- Log.d(TAG, nmService.getNetworkStatsSummary().toString());
+ Log.d(TAG, nmService.getNetworkStatsSummaryDev().toString());
+ Log.d(TAG, nmService.getNetworkStatsSummaryXt().toString());
Log.d(TAG, nmService.getNetworkStatsDetail().toString());
}
@@ -286,7 +287,7 @@
}
/**
- * Expect {@link NetworkManagementService#getNetworkStatsSummary()} mock
+ * Expect {@link NetworkManagementService#getNetworkStatsSummaryDev()} mock
* calls, responding with the given counter values.
*/
public void expectGetInterfaceCounter(long rx, long tx) throws Exception {
@@ -294,7 +295,7 @@
final NetworkStats stats = new NetworkStats(SystemClock.elapsedRealtime(), 1);
stats.addValues(TEST_IFACE, UID_ALL, SET_DEFAULT, TAG_NONE, rx, 0L, tx, 0L, 0);
- expect(mMockNMService.getNetworkStatsSummary()).andReturn(stats).atLeastOnce();
+ expect(mMockNMService.getNetworkStatsSummaryDev()).andReturn(stats).atLeastOnce();
}
/**
diff --git a/services/tests/servicestests/src/com/android/server/net/NetworkStatsCollectionTest.java b/services/tests/servicestests/src/com/android/server/net/NetworkStatsCollectionTest.java
index e40f166..8634821 100644
--- a/services/tests/servicestests/src/com/android/server/net/NetworkStatsCollectionTest.java
+++ b/services/tests/servicestests/src/com/android/server/net/NetworkStatsCollectionTest.java
@@ -43,7 +43,7 @@
*/
@MediumTest
public class NetworkStatsCollectionTest extends AndroidTestCase {
-
+
private static final String TEST_FILE = "test.bin";
private static final String TEST_IMSI = "310260000000000";
@@ -53,10 +53,10 @@
final NetworkStatsCollection collection = new NetworkStatsCollection(30 * MINUTE_IN_MILLIS);
collection.readLegacyNetwork(testFile);
-
+
// verify that history read correctly
assertSummaryTotal(collection, buildTemplateMobileAll(TEST_IMSI),
- 636014522L, 709291L, 88037144L, 518820L);
+ 636016770L, 709306L, 88038768L, 518836L);
// now export into a unified format
final ByteArrayOutputStream bos = new ByteArrayOutputStream();
@@ -70,7 +70,7 @@
// and read back into structure, verifying that totals are same
collection.read(new ByteArrayInputStream(bos.toByteArray()));
assertSummaryTotal(collection, buildTemplateMobileAll(TEST_IMSI),
- 636014522L, 709291L, 88037144L, 518820L);
+ 636016770L, 709306L, 88038768L, 518836L);
}
public void testReadLegacyUid() throws Exception {
@@ -82,7 +82,7 @@
// verify that history read correctly
assertSummaryTotal(collection, buildTemplateMobileAll(TEST_IMSI),
- 637073904L, 711398L, 88342093L, 521006L);
+ 637076152L, 711413L, 88343717L, 521022L);
// now export into a unified format
final ByteArrayOutputStream bos = new ByteArrayOutputStream();
@@ -96,7 +96,7 @@
// and read back into structure, verifying that totals are same
collection.read(new ByteArrayInputStream(bos.toByteArray()));
assertSummaryTotal(collection, buildTemplateMobileAll(TEST_IMSI),
- 637073904L, 711398L, 88342093L, 521006L);
+ 637076152L, 711413L, 88343717L, 521022L);
}
public void testReadLegacyUidTags() throws Exception {
diff --git a/telephony/java/android/telephony/PhoneNumberUtils.java b/telephony/java/android/telephony/PhoneNumberUtils.java
index 5afe56c..f740718 100644
--- a/telephony/java/android/telephony/PhoneNumberUtils.java
+++ b/telephony/java/android/telephony/PhoneNumberUtils.java
@@ -1711,12 +1711,8 @@
return false;
}
- // STOPSHIP: remove this after figuring out issue 5914560, 6383850.
Log.d(LOG_TAG, "System property doesn't provide any emergency numbers."
- + " Use embedded logic for determining emergency numbers."
- + " number: " + toLogSafePhoneNumber(number)
- + ", Iso: " + defaultCountryIso
- + ", useExactMatch: " + useExactMatch);
+ + " Use embedded logic for determining ones.");
// No ecclist system property, so use our own list.
if (defaultCountryIso != null) {
@@ -1735,21 +1731,6 @@
}
}
- private static String toLogSafePhoneNumber(String number) {
- // Do exactly same thing as Uri#toSafeString() does, which will enable us to compare
- // sanitized phone numbers.
- StringBuilder builder = new StringBuilder();
- for (int i = 0; i < number.length(); i++) {
- char c = number.charAt(i);
- if (c == '-' || c == '@' || c == '.') {
- builder.append(c);
- } else {
- builder.append('x');
- }
- }
- return builder.toString();
- }
-
/**
* Checks if a given number is an emergency number for the country that the user is in. The
* current country is determined using the CountryDetector.
diff --git a/telephony/java/com/android/internal/telephony/ServiceStateTracker.java b/telephony/java/com/android/internal/telephony/ServiceStateTracker.java
index 75eb226..bd78065 100644
--- a/telephony/java/com/android/internal/telephony/ServiceStateTracker.java
+++ b/telephony/java/com/android/internal/telephony/ServiceStateTracker.java
@@ -463,6 +463,61 @@
pollingContext = new int[1];
}
+ /**
+ * Return true if time zone needs fixing.
+ *
+ * @param phoneBase
+ * @param operatorNumeric
+ * @param prevOperatorNumeric
+ * @param needToFixTimeZone
+ * @return true if time zone needs to be fixed
+ */
+ protected boolean shouldFixTimeZoneNow(PhoneBase phoneBase, String operatorNumeric,
+ String prevOperatorNumeric, boolean needToFixTimeZone) {
+ // Return false if the mcc isn't valid as we don't know where we are.
+ // Return true if we have an IccCard and the mcc changed or we
+ // need to fix it because when the NITZ time came in we didn't
+ // know the country code.
+
+ // If mcc is invalid then we'll return false
+ int mcc;
+ try {
+ mcc = Integer.parseInt(operatorNumeric.substring(0, 3));
+ } catch (Exception e) {
+ if (DBG) {
+ log("shouldFixTimeZoneNow: no mcc, operatorNumeric=" + operatorNumeric +
+ " retVal=false");
+ }
+ return false;
+ }
+
+ // If prevMcc is invalid will make it different from mcc
+ // so we'll return true if the card exists.
+ int prevMcc;
+ try {
+ prevMcc = Integer.parseInt(prevOperatorNumeric.substring(0, 3));
+ } catch (Exception e) {
+ prevMcc = mcc + 1;
+ }
+
+ // Determine if the Icc card exists
+ IccCard iccCard = phoneBase.getIccCard();
+ boolean iccCardExist = (iccCard != null) && iccCard.getState().iccCardExist();
+
+ // Determine retVal
+ boolean retVal = ((iccCardExist && (mcc != prevMcc)) || needToFixTimeZone);
+ if (DBG) {
+ log("shouldFixTimeZoneNow: retVal=" + retVal +
+ " iccCard=" + iccCard +
+ " iccCard.state=" + (iccCard == null ? "null" : iccCard.getState().toString()) +
+ " iccCardExist=" + iccCardExist +
+ " operatorNumeric=" + operatorNumeric + " mcc=" + mcc +
+ " prevOperatorNumeric=" + prevOperatorNumeric + " prevMcc=" + prevMcc +
+ " needToFixTimeZone=" + needToFixTimeZone);
+ }
+ return retVal;
+ }
+
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
pw.println("ServiceStateTracker:");
pw.println(" ss=" + ss);
diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaLteServiceStateTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaLteServiceStateTracker.java
index ff7a0810..0a40c75 100644
--- a/telephony/java/com/android/internal/telephony/cdma/CdmaLteServiceStateTracker.java
+++ b/telephony/java/com/android/internal/telephony/cdma/CdmaLteServiceStateTracker.java
@@ -343,10 +343,16 @@
// new ERI text
if (ss.getState() == ServiceState.STATE_IN_SERVICE) {
eriText = phone.getCdmaEriText();
+ } else if (ss.getState() == ServiceState.STATE_POWER_OFF) {
+ eriText = phone.mIccRecords.getServiceProviderName();
+ if (TextUtils.isEmpty(eriText)) {
+ // Sets operator alpha property by retrieving from
+ // build-time system property
+ eriText = SystemProperties.get("ro.cdma.home.operator.alpha");
+ }
} else {
// Note that ServiceState.STATE_OUT_OF_SERVICE is valid used
- // for
- // mRegistrationState 0,2,3 and 4
+ // for mRegistrationState 0,2,3 and 4
eriText = phone.getContext()
.getText(com.android.internal.R.string.roamingTextSearching).toString();
}
@@ -377,12 +383,7 @@
phone.setSystemProperty(TelephonyProperties.PROPERTY_OPERATOR_NUMERIC, operatorNumeric);
if (operatorNumeric == null) {
- if (DBG) {
- log("pollStateDone: operatorNumeric=" + operatorNumeric +
- " prevOperatorNumeric=" + prevOperatorNumeric +
- " mNeedFixZone=" + mNeedFixZone +
- " clear PROPERTY_OPERATOR_ISO_COUNTRY");
- }
+ if (DBG) log("operatorNumeric is null");
phone.setSystemProperty(TelephonyProperties.PROPERTY_OPERATOR_ISO_COUNTRY, "");
mGotCountryCode = false;
} else {
@@ -396,20 +397,13 @@
} catch (StringIndexOutOfBoundsException ex) {
loge("countryCodeForMcc error" + ex);
}
- if (DBG) {
- log("pollStateDone: operatorNumeric=" + operatorNumeric +
- " prevOperatorNumeric=" + prevOperatorNumeric +
- " mNeedFixZone=" + mNeedFixZone +
- " mcc=" + mcc + " iso-cc=" + isoCountryCode);
- }
phone.setSystemProperty(TelephonyProperties.PROPERTY_OPERATOR_ISO_COUNTRY,
isoCountryCode);
mGotCountryCode = true;
- // Fix the time zone If the operator changed or we need to fix it because
- // when the NITZ time came in we didn't know the country code.
- if ( ! operatorNumeric.equals(prevOperatorNumeric) || mNeedFixZone) {
+ if (shouldFixTimeZoneNow(phone, operatorNumeric, prevOperatorNumeric,
+ mNeedFixZone)) {
fixTimeZone(isoCountryCode);
}
}
diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java
index b694e0a..ba2e51a 100755
--- a/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java
+++ b/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java
@@ -904,9 +904,11 @@
if (getAutoTimeZone()) {
setAndBroadcastNetworkSetTimeZone(zone.getID());
} else {
- log("fixTimeZone: zone == null");
+ log("fixTimeZone: skip changing zone as getAutoTimeZone was false");
}
saveNitzTimeZone(zone.getID());
+ } else {
+ log("fixTimeZone: zone == null, do nothing for zone");
}
}
@@ -1003,12 +1005,7 @@
phone.setSystemProperty(TelephonyProperties.PROPERTY_OPERATOR_NUMERIC, operatorNumeric);
if (operatorNumeric == null) {
- if (DBG) {
- log("pollStateDone: operatorNumeric=" + operatorNumeric +
- " prevOperatorNumeric=" + prevOperatorNumeric +
- " mNeedFixZone=" + mNeedFixZone +
- " clear PROPERTY_OPERATOR_ISO_COUNTRY");
- }
+ if (DBG) log("operatorNumeric is null");
phone.setSystemProperty(TelephonyProperties.PROPERTY_OPERATOR_ISO_COUNTRY, "");
mGotCountryCode = false;
} else {
@@ -1022,20 +1019,13 @@
} catch ( StringIndexOutOfBoundsException ex) {
loge("pollStateDone: countryCodeForMcc error" + ex);
}
- if (DBG) {
- log("pollStateDone: operatorNumeric=" + operatorNumeric +
- " prevOperatorNumeric=" + prevOperatorNumeric +
- " mNeedFixZone=" + mNeedFixZone +
- " mcc=" + mcc + " iso-cc=" + isoCountryCode);
- }
phone.setSystemProperty(TelephonyProperties.PROPERTY_OPERATOR_ISO_COUNTRY,
isoCountryCode);
mGotCountryCode = true;
- // Fix the time zone If the operator changed or we need to fix it because
- // when the NITZ time came in we didn't know the country code.
- if ( ! operatorNumeric.equals(prevOperatorNumeric) || mNeedFixZone) {
+ if (shouldFixTimeZoneNow(phone, operatorNumeric, prevOperatorNumeric,
+ mNeedFixZone)) {
fixTimeZone(isoCountryCode);
}
}
diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java
index c0acf5b..4235577 100644
--- a/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java
+++ b/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java
@@ -21,6 +21,7 @@
import com.android.internal.telephony.DataConnectionTracker;
import com.android.internal.telephony.EventLogTags;
import com.android.internal.telephony.IccCard;
+import com.android.internal.telephony.IccCardStatus;
import com.android.internal.telephony.MccTable;
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.RestrictedState;
@@ -645,8 +646,7 @@
String opNames[] = (String[])ar.result;
if (opNames != null && opNames.length >= 3) {
- newSS.setOperatorName (
- opNames[0], opNames[1], opNames[2]);
+ newSS.setOperatorName (opNames[0], opNames[1], opNames[2]);
}
break;
@@ -858,12 +858,7 @@
phone.setSystemProperty(TelephonyProperties.PROPERTY_OPERATOR_NUMERIC, operatorNumeric);
if (operatorNumeric == null) {
- if (DBG) {
- log("pollStateDone: operatorNumeric=" + operatorNumeric +
- " prevOperatorNumeric=" + prevOperatorNumeric +
- " mNeedFixZone=" + mNeedFixZone +
- " clear PROPERTY_OPERATOR_ISO_COUNTRY");
- }
+ if (DBG) log("operatorNumeric is null");
phone.setSystemProperty(TelephonyProperties.PROPERTY_OPERATOR_ISO_COUNTRY, "");
mGotCountryCode = false;
mNitzUpdatedTime = false;
@@ -877,12 +872,6 @@
} catch ( StringIndexOutOfBoundsException ex) {
loge("pollStateDone: countryCodeForMcc error" + ex);
}
- if (DBG) {
- log("pollStateDone: operatorNumeric=" + operatorNumeric +
- " prevOperatorNumeric=" + prevOperatorNumeric +
- " mNeedFixZone=" + mNeedFixZone +
- " mcc=" + mcc + " iso-cc=" + iso);
- }
phone.setSystemProperty(TelephonyProperties.PROPERTY_OPERATOR_ISO_COUNTRY, iso);
mGotCountryCode = true;
@@ -916,9 +905,8 @@
}
}
- // Fix the time zone If the operator changed or we need to fix it because
- // when the NITZ time came in we didn't know the country code.
- if ( ! operatorNumeric.equals(prevOperatorNumeric) || mNeedFixZone) {
+ if (shouldFixTimeZoneNow(phone, operatorNumeric, prevOperatorNumeric,
+ mNeedFixZone)) {
// If the offset is (0, false) and the timezone property
// is set, use the timezone property rather than
// GMT.
diff --git a/telephony/java/com/android/internal/telephony/gsm/SIMRecords.java b/telephony/java/com/android/internal/telephony/gsm/SIMRecords.java
index 80988fd..52e2caf 100755
--- a/telephony/java/com/android/internal/telephony/gsm/SIMRecords.java
+++ b/telephony/java/com/android/internal/telephony/gsm/SIMRecords.java
@@ -1459,6 +1459,11 @@
* After starting, FSM will search SPN EFs in order and stop after finding
* the first valid SPN
*
+ * If the FSM gets restart while waiting for one of
+ * SPN EFs results (i.e. a SIM refresh occurs after issuing
+ * read EF_CPHS_SPN), it will re-initialize only after
+ * receiving and discarding the unfinished SPN EF result.
+ *
* @param start set true only for initialize loading
* @param ar the AsyncResult from loadEFTransparent
* ar.exception holds exception in error
@@ -1468,7 +1473,19 @@
byte[] data;
if (start) {
- spnState = Get_Spn_Fsm_State.INIT;
+ // Check previous state to see if there is outstanding
+ // SPN read
+ if(spnState == Get_Spn_Fsm_State.READ_SPN_3GPP ||
+ spnState == Get_Spn_Fsm_State.READ_SPN_CPHS ||
+ spnState == Get_Spn_Fsm_State.READ_SPN_SHORT_CPHS ||
+ spnState == Get_Spn_Fsm_State.INIT) {
+ // Set INIT then return so the INIT code
+ // will run when the outstanding read done.
+ spnState = Get_Spn_Fsm_State.INIT;
+ return;
+ } else {
+ spnState = Get_Spn_Fsm_State.INIT;
+ }
}
switch(spnState){
diff --git a/test-runner/src/android/test/mock/MockContentProvider.java b/test-runner/src/android/test/mock/MockContentProvider.java
index a8c388e..1e41416 100644
--- a/test-runner/src/android/test/mock/MockContentProvider.java
+++ b/test-runner/src/android/test/mock/MockContentProvider.java
@@ -21,7 +21,6 @@
import android.content.ContentProviderResult;
import android.content.ContentValues;
import android.content.Context;
-import android.content.ICancellationSignal;
import android.content.IContentProvider;
import android.content.OperationApplicationException;
import android.content.pm.PathPermission;
@@ -31,6 +30,7 @@
import android.net.Uri;
import android.os.Bundle;
import android.os.IBinder;
+import android.os.ICancellationSignal;
import android.os.ParcelFileDescriptor;
import android.os.RemoteException;
diff --git a/test-runner/src/android/test/mock/MockIContentProvider.java b/test-runner/src/android/test/mock/MockIContentProvider.java
index 1aa0448..9fcfc22 100644
--- a/test-runner/src/android/test/mock/MockIContentProvider.java
+++ b/test-runner/src/android/test/mock/MockIContentProvider.java
@@ -21,12 +21,12 @@
import android.content.ContentValues;
import android.content.EntityIterator;
import android.content.IContentProvider;
-import android.content.ICancellationSignal;
import android.content.res.AssetFileDescriptor;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.os.IBinder;
+import android.os.ICancellationSignal;
import android.os.ParcelFileDescriptor;
import android.os.RemoteException;
diff --git a/test-runner/src/android/test/mock/MockPackageManager.java b/test-runner/src/android/test/mock/MockPackageManager.java
index 5610134..86689f3 100644
--- a/test-runner/src/android/test/mock/MockPackageManager.java
+++ b/test-runner/src/android/test/mock/MockPackageManager.java
@@ -22,6 +22,7 @@
import android.content.IntentSender;
import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo;
+import android.content.pm.ContainerEncryptionParams;
import android.content.pm.FeatureInfo;
import android.content.pm.IPackageDataObserver;
import android.content.pm.IPackageDeleteObserver;
@@ -29,6 +30,7 @@
import android.content.pm.IPackageMoveObserver;
import android.content.pm.IPackageStatsObserver;
import android.content.pm.InstrumentationInfo;
+import android.content.pm.ManifestDigest;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PermissionGroupInfo;
@@ -36,16 +38,12 @@
import android.content.pm.ProviderInfo;
import android.content.pm.ResolveInfo;
import android.content.pm.ServiceInfo;
-import android.content.pm.Signature;
import android.content.pm.UserInfo;
-import android.content.pm.ManifestDigest;
import android.content.pm.VerifierDeviceIdentity;
-import android.content.pm.VerifierInfo;
import android.content.res.Resources;
import android.content.res.XmlResourceParser;
import android.graphics.drawable.Drawable;
import android.net.Uri;
-import android.os.RemoteException;
import java.util.List;
@@ -565,7 +563,7 @@
@Override
public void installPackageWithVerification(Uri packageURI, IPackageInstallObserver observer,
int flags, String installerPackageName, Uri verificationURI,
- ManifestDigest manifestDigest) {
+ ManifestDigest manifestDigest, ContainerEncryptionParams encryptionParams) {
throw new UnsupportedOperationException();
}
diff --git a/tests/BiDiTests/Android.mk b/tests/BiDiTests/AndroidPrivate.mk
similarity index 100%
rename from tests/BiDiTests/Android.mk
rename to tests/BiDiTests/AndroidPrivate.mk
diff --git a/tests/HwAccelerationTest/AndroidManifest.xml b/tests/HwAccelerationTest/AndroidManifest.xml
index 3775f9f..9e103ac 100644
--- a/tests/HwAccelerationTest/AndroidManifest.xml
+++ b/tests/HwAccelerationTest/AndroidManifest.xml
@@ -658,6 +658,15 @@
</activity>
<activity
+ android:name="PathDestructionActivity"
+ android:label="_PathDestruction">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+
+ <activity
android:name="TransformsAndAnimationsActivity"
android:label="_TransformAnim">
<intent-filter>
@@ -675,5 +684,14 @@
</intent-filter>
</activity>
+ <activity
+ android:name="ViewLayerInvalidationActivity"
+ android:label="_ViewLayerInvalidation">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+
</application>
</manifest>
diff --git a/tests/HwAccelerationTest/res/layout/view_layer_invalidation.xml b/tests/HwAccelerationTest/res/layout/view_layer_invalidation.xml
new file mode 100644
index 0000000..7df8bb6
--- /dev/null
+++ b/tests/HwAccelerationTest/res/layout/view_layer_invalidation.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+**
+** Copyright 2012, 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.
+*/
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent">
+ <LinearLayout android:orientation="horizontal"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content">
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="This is some text"
+ android:id="@+id/nestedStatus"/>
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="This is some text"
+ android:id="@+id/invalidateStatus"/>
+ </LinearLayout>
+ <LinearLayout android:orientation="vertical"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:id="@+id/container">
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="This is some text"
+ android:id="@+id/textview"/>
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="This is some text"
+ android:id="@+id/textviewa"/>
+ <LinearLayout android:orientation="vertical"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:id="@+id/container1">
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="This is some text"
+ android:id="@+id/textview1"/>
+ </LinearLayout>
+ <LinearLayout android:orientation="vertical"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:id="@+id/container2">
+ <LinearLayout android:orientation="vertical"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:id="@+id/container2a">
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="This is some text"
+ android:id="@+id/textview2"/>
+ </LinearLayout>
+ </LinearLayout>
+ <LinearLayout android:orientation="vertical"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:id="@+id/container3">
+ <LinearLayout android:orientation="vertical"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:id="@+id/container3a">
+ <LinearLayout android:orientation="vertical"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:id="@+id/container3b">
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="This is some text"
+ android:id="@+id/textview3"/>
+ </LinearLayout>
+ </LinearLayout>
+ </LinearLayout>
+ </LinearLayout>
+</LinearLayout>
\ No newline at end of file
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/PathDestructionActivity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/PathDestructionActivity.java
new file mode 100644
index 0000000..4177725
--- /dev/null
+++ b/tests/HwAccelerationTest/src/com/android/test/hwui/PathDestructionActivity.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 2012 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.test.hwui;
+
+import android.app.Activity;
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.graphics.Path;
+import android.os.Bundle;
+import android.util.MathUtils;
+import android.view.View;
+
+/**
+ * The point of this test is to ensure that we can cause many paths to be created, drawn,
+ * and destroyed without causing hangs or crashes. This tests the native reference counting
+ * scheme in particular, because we should be able to have the Java-level path finalized
+ * without destroying the underlying native path object until we are done referencing it
+ * in pending DisplayLists.
+ */
+public class PathDestructionActivity extends Activity {
+
+ private static final int MIN_SIZE = 20;
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ MyView view = new MyView(this);
+ setContentView(view);
+ }
+
+ private static class MyView extends View {
+ Paint strokePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
+ Paint fillPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
+ Paint fillAndStrokePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
+
+ private MyView(Context context) {
+ super(context);
+ strokePaint.setStyle(Paint.Style.STROKE);
+ fillPaint.setStyle(Paint.Style.FILL);
+ fillAndStrokePaint.setStyle(Paint.Style.FILL_AND_STROKE);
+ }
+
+ private Path getRandomPath() {
+ float left, top, right, bottom;
+ left = MathUtils.random(getWidth() - MIN_SIZE);
+ top = MathUtils.random(getHeight() - MIN_SIZE);
+ right = left + MathUtils.random(getWidth() - left);
+ bottom = top + MathUtils.random(getHeight() - top);
+ Path path = new Path();
+ path.moveTo(left, top);
+ path.lineTo(right, top);
+ path.lineTo(right, bottom);
+ path.lineTo(left, bottom);
+ path.close();
+ return path;
+ }
+
+ private int getRandomColor() {
+ int red = MathUtils.random(255);
+ int green = MathUtils.random(255);
+ int blue = MathUtils.random(255);
+ return 0xff000000 | red << 16 | green << 8 | blue;
+ }
+
+ @Override
+ protected void onDraw(Canvas canvas) {
+ Path path;
+ for (int i = 0; i < 15; ++i) {
+ path = getRandomPath();
+ strokePaint.setColor(getRandomColor());
+ canvas.drawPath(path, strokePaint);
+ path = null;
+ path = getRandomPath();
+ fillPaint.setColor(getRandomColor());
+ canvas.drawPath(path, fillPaint);
+ path = null;
+ path = getRandomPath();
+ fillAndStrokePaint.setColor(getRandomColor());
+ canvas.drawPath(path, fillAndStrokePaint);
+ path = null;
+ }
+
+ invalidate();
+ }
+ }
+}
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayerInvalidationActivity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayerInvalidationActivity.java
new file mode 100644
index 0000000..6d47d6c
--- /dev/null
+++ b/tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayerInvalidationActivity.java
@@ -0,0 +1,162 @@
+/*
+ * Copyright (C) 2012 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.test.hwui;
+
+import android.app.Activity;
+import android.graphics.Color;
+import android.os.Bundle;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import java.util.ArrayList;
+
+public class ViewLayerInvalidationActivity extends Activity {
+
+ int currentColor = Color.WHITE;
+ boolean nestedLayersOn = false;
+ ArrayList<LinearLayout> linearLayouts = new ArrayList<LinearLayout>();
+ ArrayList<LinearLayout> topLayouts = new ArrayList<LinearLayout>();
+ ArrayList<TextView> textViews = new ArrayList<TextView>();
+ LinearLayout container = null;
+ boolean randomInvalidates = false;
+ TextView nestedStatusTV, invalidateStatusTV;
+ static final String NO_NESTING = "Nested Layer: NO ";
+ static final String NESTING = "Nested Layers: YES ";
+ static final String NO_INVALIDATING = "Random Invalidating: NO ";
+ static final String INVALIDATING = "Random Invalidating: YES ";
+ static final int TEXT_COLOR_INTERVAL = 400;
+ static final int INVALIDATING_INTERVAL = 1000;
+ static final int NESTING_INTERVAL = 2000;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.view_layer_invalidation);
+
+ container = (LinearLayout) findViewById(R.id.container);
+ final LinearLayout container1 = (LinearLayout) findViewById(R.id.container1);
+ final LinearLayout container2 = (LinearLayout) findViewById(R.id.container2);
+ final LinearLayout container3 = (LinearLayout) findViewById(R.id.container3);
+ nestedStatusTV = (TextView) findViewById(R.id.nestedStatus);
+ invalidateStatusTV = (TextView) findViewById(R.id.invalidateStatus);
+ final TextView tva = (TextView) findViewById(R.id.textviewa);
+
+ topLayouts.add(container1);
+ topLayouts.add(container2);
+ topLayouts.add(container3);
+
+ collectLinearLayouts(container);
+ collectTextViews(container);
+
+ nestedStatusTV.setText(NO_NESTING);
+ invalidateStatusTV.setText(NO_INVALIDATING);
+
+ tva.setLayerType(View.LAYER_TYPE_HARDWARE, null);
+ container1.setLayerType(View.LAYER_TYPE_HARDWARE, null);
+ container2.setLayerType(View.LAYER_TYPE_HARDWARE, null);
+ container3.setLayerType(View.LAYER_TYPE_HARDWARE, null);
+
+ container.postDelayed(textColorSetter, TEXT_COLOR_INTERVAL);
+ container.postDelayed(nestedLayerSetter, NESTING_INTERVAL);
+ container.postDelayed(randomInvalidatesSetter, INVALIDATING_INTERVAL);
+ }
+
+ private Runnable textColorSetter = new Runnable() {
+ @Override
+ public void run() {
+ currentColor = (currentColor == Color.WHITE) ? Color.RED : Color.WHITE;
+ for (TextView tv : textViews) {
+ tv.setTextColor(currentColor);
+ }
+ if (randomInvalidates) {
+ randomInvalidator(container);
+ }
+ container.postDelayed(textColorSetter, TEXT_COLOR_INTERVAL);
+ }
+ };
+
+ private Runnable randomInvalidatesSetter = new Runnable() {
+ @Override
+ public void run() {
+ randomInvalidates = !randomInvalidates;
+ invalidateStatusTV.setText(randomInvalidates ? INVALIDATING : NO_INVALIDATING);
+ container.postDelayed(randomInvalidatesSetter, INVALIDATING_INTERVAL);
+ }
+ };
+
+ private Runnable nestedLayerSetter = new Runnable() {
+ @Override
+ public void run() {
+ nestedLayersOn = !nestedLayersOn;
+ nestedStatusTV.setText(nestedLayersOn ? NESTING : NO_NESTING);
+ for (LinearLayout layout : linearLayouts) {
+ layout.setLayerType(nestedLayersOn ?
+ View.LAYER_TYPE_HARDWARE : View.LAYER_TYPE_NONE, null);
+ }
+ if (!nestedLayersOn) {
+ for (LinearLayout layout : topLayouts) {
+ layout.setLayerType(View.LAYER_TYPE_HARDWARE, null);
+ }
+ }
+ container.postDelayed(nestedLayerSetter, NESTING_INTERVAL);
+ }
+ };
+
+ /**
+ * Invalidates views based on random chance (50%). This is meant to test
+ * invalidating several items in the hierarchy at the same time, which can cause artifacts
+ * if our invalidation-propagation logic is not sound.
+ */
+ private void randomInvalidator(ViewGroup parent) {
+ for (int i = 0; i < parent.getChildCount(); ++i) {
+ View child = parent.getChildAt(i);
+ if (Math.random() < .5) {
+ child.invalidate();
+ }
+ if (child instanceof ViewGroup) {
+ randomInvalidator((ViewGroup) child);
+ }
+ }
+ }
+
+ private void collectLinearLayouts(View view) {
+ if (!(view instanceof LinearLayout)) {
+ return;
+ }
+ LinearLayout parent = (LinearLayout) view;
+ linearLayouts.add(parent);
+ for (int i = 0; i < parent.getChildCount(); ++i) {
+ collectLinearLayouts(parent.getChildAt(i));
+ }
+ }
+
+ private void collectTextViews(View view) {
+ if (view instanceof TextView) {
+ textViews.add((TextView) view);
+ return;
+ }
+ if (!(view instanceof ViewGroup)) {
+ return;
+ }
+ ViewGroup parent = (ViewGroup) view;
+ for (int i = 0; i < parent.getChildCount(); ++i) {
+ collectTextViews(parent.getChildAt(i));
+ }
+ }
+}
diff --git a/tests/RenderScriptTests/tests/src/com/android/rs/test/RSTestCore.java b/tests/RenderScriptTests/tests/src/com/android/rs/test/RSTestCore.java
index 7105f2d..d2e1527 100644
--- a/tests/RenderScriptTests/tests/src/com/android/rs/test/RSTestCore.java
+++ b/tests/RenderScriptTests/tests/src/com/android/rs/test/RSTestCore.java
@@ -68,6 +68,7 @@
unitTests.add(new UT_constant(this, mRes, mCtx));
unitTests.add(new UT_vector(this, mRes, mCtx));
unitTests.add(new UT_array_init(this, mRes, mCtx));
+ unitTests.add(new UT_array_alloc(this, mRes, mCtx));
unitTests.add(new UT_convert(this, mRes, mCtx));
unitTests.add(new UT_rsdebug(this, mRes, mCtx));
unitTests.add(new UT_rstime(this, mRes, mCtx));
@@ -80,11 +81,11 @@
unitTests.add(new UT_struct(this, mRes, mCtx));
unitTests.add(new UT_math(this, mRes, mCtx));
unitTests.add(new UT_math_conformance(this, mRes, mCtx));
- unitTests.add(new UT_mesh(this, mRes, mCtx));
unitTests.add(new UT_element(this, mRes, mCtx));
unitTests.add(new UT_sampler(this, mRes, mCtx));
unitTests.add(new UT_program_store(this, mRes, mCtx));
unitTests.add(new UT_program_raster(this, mRes, mCtx));
+ unitTests.add(new UT_mesh(this, mRes, mCtx));
unitTests.add(new UT_fp_mad(this, mRes, mCtx));
/*
diff --git a/tests/RenderScriptTests/tests/src/com/android/rs/test/UT_array_alloc.java b/tests/RenderScriptTests/tests/src/com/android/rs/test/UT_array_alloc.java
new file mode 100644
index 0000000..befe865
--- /dev/null
+++ b/tests/RenderScriptTests/tests/src/com/android/rs/test/UT_array_alloc.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2012 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.rs.test;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.renderscript.*;
+
+public class UT_array_alloc extends UnitTest {
+ private Resources mRes;
+
+ protected UT_array_alloc(RSTestCore rstc, Resources res, Context ctx) {
+ super(rstc, "Array Allocation", ctx);
+ mRes = res;
+ }
+
+ public void run() {
+ RenderScript pRS = RenderScript.create(mCtx);
+ ScriptC_array_alloc s = new ScriptC_array_alloc(pRS, mRes, R.raw.array_alloc);
+ pRS.setMessageHandler(mRsMessage);
+
+ int dimX = s.get_dimX();
+ Allocation[] Arr = new Allocation[dimX];
+ Type.Builder typeBuilder = new Type.Builder(pRS, Element.I32(pRS));
+ Type T = typeBuilder.setX(1).create();
+ for (int i = 0; i < dimX; i++) {
+ Allocation A = Allocation.createTyped(pRS, T);
+ Arr[i] = A;
+ }
+ s.set_a(Arr);
+
+ s.invoke_array_alloc_test();
+ pRS.finish();
+ waitForMessage();
+ pRS.destroy();
+ passTest();
+ }
+}
diff --git a/tests/RenderScriptTests/tests/src/com/android/rs/test/array_alloc.rs b/tests/RenderScriptTests/tests/src/com/android/rs/test/array_alloc.rs
new file mode 100644
index 0000000..74ffdb1
--- /dev/null
+++ b/tests/RenderScriptTests/tests/src/com/android/rs/test/array_alloc.rs
@@ -0,0 +1,21 @@
+#include "shared.rsh"
+
+const int dimX = 20;
+rs_allocation a[dimX];
+
+void array_alloc_test() {
+ bool failed = false;
+
+ for (int i = 0; i < dimX; i++) {
+ rsDebug("i: ", i);
+ _RS_ASSERT(rsAllocationGetDimX(a[i]) == 1);
+ }
+
+ if (failed) {
+ rsSendToClientBlocking(RS_MSG_TEST_FAILED);
+ }
+ else {
+ rsSendToClientBlocking(RS_MSG_TEST_PASSED);
+ }
+}
+
diff --git a/tests/StatusBar/src/com/android/statusbartest/NotificationTestList.java b/tests/StatusBar/src/com/android/statusbartest/NotificationTestList.java
index a90af15..70e2aac 100644
--- a/tests/StatusBar/src/com/android/statusbartest/NotificationTestList.java
+++ b/tests/StatusBar/src/com/android/statusbartest/NotificationTestList.java
@@ -715,20 +715,28 @@
new Test("Ten Notifications") {
public void run() {
for (int i = 0; i < 2; i++) {
- Notification n = new Notification(NotificationTestList.this,
+ Notification n = new Notification(
kNumberedIconResIDs[i],
- null, System.currentTimeMillis(), "Persistent #" + i,
- "Notify me!!!" + i, null);
- n.flags |= Notification.FLAG_ONGOING_EVENT;
+ null, System.currentTimeMillis());
n.number = i;
+ n.setLatestEventInfo(
+ NotificationTestList.this,
+ "Persistent #" + i,
+ "Notify me!!!" + i,
+ null);
+ n.flags |= Notification.FLAG_ONGOING_EVENT;
mNM.notify((i+1)*10, n);
}
for (int i = 2; i < 10; i++) {
- Notification n = new Notification(NotificationTestList.this,
+ Notification n = new Notification(
kNumberedIconResIDs[i],
- null, System.currentTimeMillis(), "Persistent #" + i,
- "Notify me!!!" + i, null);
+ null, System.currentTimeMillis());
n.number = i;
+ n.setLatestEventInfo(
+ NotificationTestList.this,
+ "Persistent #" + i,
+ "Notify me!!!" + i,
+ null);
mNM.notify((i+1)*10, n);
}
}
diff --git a/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
index 16f1575..9aed8c8 100644
--- a/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
@@ -307,6 +307,11 @@
}
@LayoutlibDelegate
+ /*package*/ static void freeTextLayoutCaches() {
+ // nothing to be done here yet.
+ }
+
+ @LayoutlibDelegate
/*package*/ static int initRaster(int nativeBitmapOrZero) {
if (nativeBitmapOrZero > 0) {
// get the Bitmap from the int
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContentProvider.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContentProvider.java
index e28866e..f770ccc 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContentProvider.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContentProvider.java
@@ -19,7 +19,6 @@
import android.content.ContentProviderOperation;
import android.content.ContentProviderResult;
import android.content.ContentValues;
-import android.content.ICancellationSignal;
import android.content.IContentProvider;
import android.content.OperationApplicationException;
import android.content.res.AssetFileDescriptor;
@@ -27,6 +26,7 @@
import android.net.Uri;
import android.os.Bundle;
import android.os.IBinder;
+import android.os.ICancellationSignal;
import android.os.ParcelFileDescriptor;
import android.os.RemoteException;
diff --git a/tools/localize/Android.mk b/tools/localize/Android.mk
deleted file mode 100644
index 5ec9feb..0000000
--- a/tools/localize/Android.mk
+++ /dev/null
@@ -1,55 +0,0 @@
-#
-# Copyright 2006 The Android Open Source Project
-#
-# Android Asset Packaging Tool
-#
-
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := \
- file_utils.cpp \
- localize.cpp \
- merge_res_and_xliff.cpp \
- res_check.cpp \
- xmb.cpp \
- Configuration.cpp \
- Perforce.cpp \
- SourcePos.cpp \
- Values.cpp \
- ValuesFile.cpp \
- XLIFFFile.cpp \
- XMLHandler.cpp
-
-LOCAL_C_INCLUDES := \
- external/expat/lib \
- build/libs/host/include
-
-LOCAL_CFLAGS += -g -O0
-
-LOCAL_STATIC_LIBRARIES := \
- libexpat \
- libhost \
- libutils \
- libcutils
-
-ifeq ($(HOST_OS),linux)
-LOCAL_LDLIBS += -lrt -ldl -lpthread
-endif
-
-
-LOCAL_MODULE := localize
-
-ifeq (a,a)
- LOCAL_CFLAGS += -DLOCALIZE_WITH_TESTS
- LOCAL_SRC_FILES += \
- test.cpp \
- localize_test.cpp \
- merge_res_and_xliff_test.cpp \
- Perforce_test.cpp \
- ValuesFile_test.cpp \
- XLIFFFile_test.cpp \
- XMLHandler_test.cpp
-endif
-
-include $(BUILD_HOST_EXECUTABLE)
diff --git a/tools/localize/Configuration.cpp b/tools/localize/Configuration.cpp
deleted file mode 100644
index 56addbd..0000000
--- a/tools/localize/Configuration.cpp
+++ /dev/null
@@ -1,76 +0,0 @@
-#include "Configuration.h"
-#include <string.h>
-
-int
-Configuration::Compare(const Configuration& that) const
-{
- int n;
-
- n = locale.compare(that.locale);
- if (n != 0) return n;
-
- n = vendor.compare(that.vendor);
- if (n != 0) return n;
-
- n = orientation.compare(that.orientation);
- if (n != 0) return n;
-
- n = density.compare(that.density);
- if (n != 0) return n;
-
- n = touchscreen.compare(that.touchscreen);
- if (n != 0) return n;
-
- n = keyboard.compare(that.keyboard);
- if (n != 0) return n;
-
- n = navigation.compare(that.navigation);
- if (n != 0) return n;
-
- n = screenSize.compare(that.screenSize);
- if (n != 0) return n;
-
- return 0;
-}
-
-string
-Configuration::ToString() const
-{
- string s;
- if (locale.length() > 0) {
- if (s.length() > 0) {
- s += "-";
- }
- s += locale;
- }
- return s;
-}
-
-bool
-split_locale(const string& in, string* language, string* region)
-{
- const int len = in.length();
- if (len == 2) {
- if (isalpha(in[0]) && isalpha(in[1])) {
- *language = in;
- region->clear();
- return true;
- } else {
- return false;
- }
- }
- else if (len == 5) {
- if (isalpha(in[0]) && isalpha(in[1]) && (in[2] == '_' || in[2] == '-')
- && isalpha(in[3]) && isalpha(in[4])) {
- language->assign(in.c_str(), 2);
- region->assign(in.c_str()+3, 2);
- return true;
- } else {
- return false;
- }
- }
- else {
- return false;
- }
-}
-
diff --git a/tools/localize/Configuration.h b/tools/localize/Configuration.h
deleted file mode 100644
index f91bf04..0000000
--- a/tools/localize/Configuration.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef CONFIGURATION_H
-#define CONFIGURATION_H
-
-#include <string>
-
-using namespace std;
-
-struct Configuration
-{
- string locale;
- string vendor;
- string orientation;
- string density;
- string touchscreen;
- string keyboard;
- string navigation;
- string screenSize;
-
- // Compare two configurations
- int Compare(const Configuration& that) const;
-
- inline bool operator<(const Configuration& that) const { return Compare(that) < 0; }
- inline bool operator<=(const Configuration& that) const { return Compare(that) <= 0; }
- inline bool operator==(const Configuration& that) const { return Compare(that) == 0; }
- inline bool operator!=(const Configuration& that) const { return Compare(that) != 0; }
- inline bool operator>=(const Configuration& that) const { return Compare(that) >= 0; }
- inline bool operator>(const Configuration& that) const { return Compare(that) > 0; }
-
- // Parse a directory name, like "values-en-rUS". Return the first segment in resType.
- bool ParseDiectoryName(const string& dir, string* resType);
-
- string ToString() const;
-};
-
-bool split_locale(const string& in, string* language, string* region);
-
-
-#endif // CONFIGURATION_H
diff --git a/tools/localize/Perforce.cpp b/tools/localize/Perforce.cpp
deleted file mode 100644
index ae11231..0000000
--- a/tools/localize/Perforce.cpp
+++ /dev/null
@@ -1,234 +0,0 @@
-#include "Perforce.h"
-#include "log.h"
-#include <string.h>
-#include <cstdio>
-#include <stdlib.h>
-#include <sstream>
-#include <sys/types.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/wait.h>
-#include <cstdio>
-
-using namespace std;
-
-extern char** environ;
-
-int
-Perforce::RunCommand(const string& cmd, string* result, bool printOnFailure)
-{
- int err;
- int outPipe[2];
- int errPipe[2];
- pid_t pid;
-
- log_printf("Perforce::RunCommand: %s\n", cmd.c_str());
-
- err = pipe(outPipe);
- err |= pipe(errPipe);
- if (err == -1) {
- printf("couldn't create pipe. exiting.\n");
- exit(1);
- return -1;
- }
-
- pid = fork();
- if (pid == -1) {
- printf("couldn't fork. eixiting\n");
- exit(1);
- return -1;
- }
- else if (pid == 0) {
- char const* args[] = {
- "/bin/sh",
- "-c",
- cmd.c_str(),
- NULL
- };
- close(outPipe[0]);
- close(errPipe[0]);
- dup2(outPipe[1], 1);
- dup2(errPipe[1], 2);
- execve(args[0], (char* const*)args, environ);
- // done
- }
-
- close(outPipe[1]);
- close(errPipe[1]);
-
- result->clear();
-
- char buf[1024];
-
- // stdout
- while (true) {
- size_t amt = read(outPipe[0], buf, sizeof(buf));
- result->append(buf, amt);
- if (amt <= 0) {
- break;
- }
- }
-
- // stderr -- the messages are short so it ought to just fit in the buffer
- string error;
- while (true) {
- size_t amt = read(errPipe[0], buf, sizeof(buf));
- error.append(buf, amt);
- if (amt <= 0) {
- break;
- }
- }
-
- close(outPipe[0]);
- close(errPipe[0]);
-
- waitpid(pid, &err, 0);
- if (WIFEXITED(err)) {
- err = WEXITSTATUS(err);
- } else {
- err = -1;
- }
- if (err != 0 && printOnFailure) {
- write(2, error.c_str(), error.length());
- }
- return err;
-}
-
-int
-Perforce::GetResourceFileNames(const string& version, const string& base,
- const vector<string>& apps, vector<string>* results,
- bool printOnFailure)
-{
- int err;
- string text;
- stringstream cmd;
-
- cmd << "p4 files";
-
- const size_t I = apps.size();
- for (size_t i=0; i<I; i++) {
- cmd << " \"" << base << '/' << apps[i] << "/res/values/strings.xml@" << version << '"';
- }
-
- err = RunCommand(cmd.str(), &text, printOnFailure);
-
- const char* str = text.c_str();
- while (*str) {
- const char* lineend = strchr(str, '\n');
- if (lineend == str) {
- str++;
- continue;
- }
- if (lineend-str > 1023) {
- fprintf(stderr, "line too long!\n");
- return 1;
- }
-
- string s(str, lineend-str);
-
- char filename[1024];
- char edit[1024];
- int count = sscanf(str, "%[^#]#%*d - %s change %*d %*[^\n]\n", filename, edit);
-
- if (count == 2 && 0 != strcmp("delete", edit)) {
- results->push_back(string(filename));
- }
-
- str = lineend + 1;
- }
-
- return err;
-}
-
-int
-Perforce::GetFile(const string& file, const string& version, string* result,
- bool printOnFailure)
-{
- stringstream cmd;
- cmd << "p4 print -q \"" << file << '@' << version << '"';
- return RunCommand(cmd.str(), result, printOnFailure);
-}
-
-string
-Perforce::GetCurrentChange(bool printOnFailure)
-{
- int err;
- string text;
-
- err = RunCommand("p4 changes -m 1 \\#have", &text, printOnFailure);
- if (err != 0) {
- return "";
- }
-
- long long n;
- int count = sscanf(text.c_str(), "Change %lld on", &n);
- if (count != 1) {
- return "";
- }
-
- char result[100];
- sprintf(result, "%lld", n);
-
- return string(result);
-}
-
-static int
-do_files(const string& op, const vector<string>& files, bool printOnFailure)
-{
- string text;
- stringstream cmd;
-
- cmd << "p4 " << op;
-
- const size_t I = files.size();
- for (size_t i=0; i<I; i++) {
- cmd << " \"" << files[i] << "\"";
- }
-
- return Perforce::RunCommand(cmd.str(), &text, printOnFailure);
-}
-
-int
-Perforce::EditFiles(const vector<string>& files, bool printOnFailure)
-{
- return do_files("edit", files, printOnFailure);
-}
-
-int
-Perforce::AddFiles(const vector<string>& files, bool printOnFailure)
-{
- return do_files("add", files, printOnFailure);
-}
-
-int
-Perforce::DeleteFiles(const vector<string>& files, bool printOnFailure)
-{
- return do_files("delete", files, printOnFailure);
-}
-
-string
-Perforce::Where(const string& depotPath, bool printOnFailure)
-{
- int err;
- string text;
- string cmd = "p4 where ";
- cmd += depotPath;
-
- err = RunCommand(cmd, &text, printOnFailure);
- if (err != 0) {
- return "";
- }
-
- size_t index = text.find(' ');
- if (index == text.npos) {
- return "";
- }
- index = text.find(' ', index+1)+1;
- if (index == text.npos) {
- return "";
- }
-
- return text.substr(index, text.length()-index-1);
-}
-
diff --git a/tools/localize/Perforce.h b/tools/localize/Perforce.h
deleted file mode 100644
index 522797d..0000000
--- a/tools/localize/Perforce.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef PERFORCE_H
-#define PERFORCE_H
-
-#include <string>
-#include <vector>
-
-using namespace std;
-
-class Perforce
-{
-public:
- static int RunCommand(const string& cmd, string* result, bool printOnFailure);
- static int GetResourceFileNames(const string& version, const string& base,
- const vector<string>& apps, vector<string>* result,
- bool printOnFailure);
- static int GetFile(const string& file, const string& version, string* result,
- bool printOnFailure);
- static string GetCurrentChange(bool printOnFailure);
- static int EditFiles(const vector<string>& filename, bool printOnFailure);
- static int AddFiles(const vector<string>& files, bool printOnFailure);
- static int DeleteFiles(const vector<string>& files, bool printOnFailure);
- static string Where(const string& depotPath, bool printOnFailure);
-};
-
-#endif // PERFORCE_H
diff --git a/tools/localize/Perforce_test.cpp b/tools/localize/Perforce_test.cpp
deleted file mode 100644
index 142b20e..0000000
--- a/tools/localize/Perforce_test.cpp
+++ /dev/null
@@ -1,62 +0,0 @@
-#include "Perforce.h"
-#include <stdio.h>
-
-static int
-RunCommand_test()
-{
- string result;
- int err = Perforce::RunCommand("p4 help csommands", &result, true);
- printf("err=%d result=[[%s]]\n", err, result.c_str());
- return 0;
-}
-
-static int
-GetResourceFileNames_test()
-{
- vector<string> results;
- vector<string> apps;
- apps.push_back("apps/common");
- apps.push_back("apps/Contacts");
- int err = Perforce::GetResourceFileNames("43019", "//device", apps, &results, true);
- if (err != 0) {
- return err;
- }
- if (results.size() != 2) {
- return 1;
- }
- if (results[0] != "//device/apps/common/res/values/strings.xml") {
- return 1;
- }
- if (results[1] != "//device/apps/Contacts/res/values/strings.xml") {
- return 1;
- }
- if (false) {
- for (size_t i=0; i<results.size(); i++) {
- printf("[%zd] '%s'\n", i, results[i].c_str());
- }
- }
- return 0;
-}
-
-static int
-GetFile_test()
-{
- string result;
- int err = Perforce::GetFile("//device/Makefile", "296", &result, true);
- printf("err=%d result=[[%s]]\n", err, result.c_str());
- return 0;
-}
-
-int
-Perforce_test()
-{
- bool all = false;
- int err = 0;
-
- if (all) err |= RunCommand_test();
- if (all) err |= GetResourceFileNames_test();
- if (all) err |= GetFile_test();
-
- return err;
-}
-
diff --git a/tools/localize/SourcePos.cpp b/tools/localize/SourcePos.cpp
deleted file mode 100644
index 184bfe0a..0000000
--- a/tools/localize/SourcePos.cpp
+++ /dev/null
@@ -1,168 +0,0 @@
-#include "SourcePos.h"
-
-#include <stdarg.h>
-#include <cstdio>
-#include <set>
-#include <cstdio>
-
-using namespace std;
-
-const SourcePos GENERATED_POS("<generated>", -1);
-
-// ErrorPos
-// =============================================================================
-struct ErrorPos
-{
- string file;
- int line;
- string error;
-
- ErrorPos();
- ErrorPos(const ErrorPos& that);
- ErrorPos(const string& file, int line, const string& error);
- ~ErrorPos();
- bool operator<(const ErrorPos& rhs) const;
- bool operator==(const ErrorPos& rhs) const;
- ErrorPos& operator=(const ErrorPos& rhs);
-
- void Print(FILE* to) const;
-};
-
-static set<ErrorPos> g_errors;
-
-ErrorPos::ErrorPos()
-{
-}
-
-ErrorPos::ErrorPos(const ErrorPos& that)
- :file(that.file),
- line(that.line),
- error(that.error)
-{
-}
-
-ErrorPos::ErrorPos(const string& f, int l, const string& e)
- :file(f),
- line(l),
- error(e)
-{
-}
-
-ErrorPos::~ErrorPos()
-{
-}
-
-bool
-ErrorPos::operator<(const ErrorPos& rhs) const
-{
- if (this->file < rhs.file) return true;
- if (this->file == rhs.file) {
- if (this->line < rhs.line) return true;
- if (this->line == rhs.line) {
- if (this->error < rhs.error) return true;
- }
- }
- return false;
-}
-
-bool
-ErrorPos::operator==(const ErrorPos& rhs) const
-{
- return this->file == rhs.file
- && this->line == rhs.line
- && this->error == rhs.error;
-}
-
-ErrorPos&
-ErrorPos::operator=(const ErrorPos& rhs)
-{
- this->file = rhs.file;
- this->line = rhs.line;
- this->error = rhs.error;
- return *this;
-}
-
-void
-ErrorPos::Print(FILE* to) const
-{
- if (this->line >= 0) {
- fprintf(to, "%s:%d: %s\n", this->file.c_str(), this->line, this->error.c_str());
- } else {
- fprintf(to, "%s: %s\n", this->file.c_str(), this->error.c_str());
- }
-}
-
-// SourcePos
-// =============================================================================
-SourcePos::SourcePos(const string& f, int l)
- : file(f), line(l)
-{
-}
-
-SourcePos::SourcePos(const SourcePos& that)
- : file(that.file), line(that.line)
-{
-}
-
-SourcePos::SourcePos()
- : file("???", 0)
-{
-}
-
-SourcePos::~SourcePos()
-{
-}
-
-string
-SourcePos::ToString() const
-{
- char buf[1024];
- if (this->line >= 0) {
- snprintf(buf, sizeof(buf)-1, "%s:%d", this->file.c_str(), this->line);
- } else {
- snprintf(buf, sizeof(buf)-1, "%s:", this->file.c_str());
- }
- buf[sizeof(buf)-1] = '\0';
- return string(buf);
-}
-
-int
-SourcePos::Error(const char* fmt, ...) const
-{
- int retval=0;
- char buf[1024];
- va_list ap;
- va_start(ap, fmt);
- retval = vsnprintf(buf, sizeof(buf), fmt, ap);
- va_end(ap);
- char* p = buf + retval - 1;
- while (p > buf && *p == '\n') {
- *p = '\0';
- p--;
- }
- ErrorPos err(this->file, this->line, string(buf));
- if (g_errors.find(err) == g_errors.end()) {
- err.Print(stderr);
- g_errors.insert(err);
- }
- return retval;
-}
-
-bool
-SourcePos::HasErrors()
-{
- return g_errors.size() > 0;
-}
-
-void
-SourcePos::PrintErrors(FILE* to)
-{
- set<ErrorPos>::const_iterator it;
- for (it=g_errors.begin(); it!=g_errors.end(); it++) {
- it->Print(to);
- }
-}
-
-
-
-
diff --git a/tools/localize/SourcePos.h b/tools/localize/SourcePos.h
deleted file mode 100644
index 5027129..0000000
--- a/tools/localize/SourcePos.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef SOURCEPOS_H
-#define SOURCEPOS_H
-
-#include <string>
-
-using namespace std;
-
-class SourcePos
-{
-public:
- string file;
- int line;
-
- SourcePos(const string& f, int l);
- SourcePos(const SourcePos& that);
- SourcePos();
- ~SourcePos();
-
- string ToString() const;
- int Error(const char* fmt, ...) const;
-
- static bool HasErrors();
- static void PrintErrors(FILE* to);
-};
-
-extern const SourcePos GENERATED_POS;
-
-#endif // SOURCEPOS_H
diff --git a/tools/localize/Values.cpp b/tools/localize/Values.cpp
deleted file mode 100644
index 8623b97..0000000
--- a/tools/localize/Values.cpp
+++ /dev/null
@@ -1,135 +0,0 @@
-#include "Values.h"
-#include <stdlib.h>
-#include <cstdio>
-
-
-// =====================================================================================
-StringResource::StringResource(const SourcePos& p, const string& f, const Configuration& c,
- const string& i, int ix, XMLNode* v, const int ve, const string& vs,
- const string& cmnt)
- :pos(p),
- file(f),
- config(c),
- id(i),
- index(ix),
- value(v),
- version(ve),
- versionString(vs),
- comment(cmnt)
-{
-}
-
-StringResource::StringResource()
- :pos(),
- file(),
- config(),
- id(),
- index(-1),
- value(NULL),
- version(),
- versionString(),
- comment()
-{
-}
-
-StringResource::StringResource(const StringResource& that)
- :pos(that.pos),
- file(that.file),
- config(that.config),
- id(that.id),
- index(that.index),
- value(that.value),
- version(that.version),
- versionString(that.versionString),
- comment(that.comment)
-{
-}
-
-int
-StringResource::Compare(const StringResource& that) const
-{
- if (file != that.file) {
- return file < that.file ? -1 : 1;
- }
- if (id != that.id) {
- return id < that.id ? -1 : 1;
- }
- if (index != that.index) {
- return index - that.index;
- }
- if (config != that.config) {
- return config < that.config ? -1 : 1;
- }
- if (version != that.version) {
- return version < that.version ? -1 : 1;
- }
- return 0;
-}
-
-string
-StringResource::TypedID() const
-{
- string result;
- if (index < 0) {
- result = "string:";
- } else {
- char n[20];
- sprintf(n, "%d:", index);
- result = "array:";
- result += n;
- }
- result += id;
- return result;
-}
-
-static void
-split(const string& raw, vector<string>*parts)
-{
- size_t index = 0;
- while (true) {
- size_t next = raw.find(':', index);
- if (next != raw.npos) {
- parts->push_back(string(raw, index, next-index));
- index = next + 1;
- } else {
- parts->push_back(string(raw, index));
- break;
- }
- }
-}
-
-bool
-StringResource::ParseTypedID(const string& raw, string* id, int* index)
-{
- vector<string> parts;
- split(raw, &parts);
-
- const size_t N = parts.size();
-
- for (size_t i=0; i<N; i++) {
- if (parts[i].length() == 0) {
- return false;
- }
- }
-
- if (N == 2 && parts[0] == "string") {
- *id = parts[1];
- *index = -1;
- return true;
- }
- else if (N == 3 && parts[0] == "array") {
- char* p;
- int n = (int)strtol(parts[1].c_str(), &p, 0);
- if (*p == '\0') {
- *id = parts[2];
- *index = n;
- return true;
- } else {
- return false;
- }
- }
- else {
- return false;
- }
-}
-
diff --git a/tools/localize/Values.h b/tools/localize/Values.h
deleted file mode 100644
index 0a60b6d..0000000
--- a/tools/localize/Values.h
+++ /dev/null
@@ -1,48 +0,0 @@
-#ifndef VALUES_H
-#define VALUES_H
-
-#include "Configuration.h"
-#include "XMLHandler.h"
-
-#include <string>
-
-using namespace std;
-
-enum {
- CURRENT_VERSION,
- OLD_VERSION
-};
-
-struct StringResource
-{
- StringResource();
- StringResource(const SourcePos& pos, const string& file, const Configuration& config,
- const string& id, int index, XMLNode* value,
- int version, const string& versionString, const string& comment = "");
- StringResource(const StringResource& that);
-
- // Compare two configurations
- int Compare(const StringResource& that) const;
-
- inline bool operator<(const StringResource& that) const { return Compare(that) < 0; }
- inline bool operator<=(const StringResource& that) const { return Compare(that) <= 0; }
- inline bool operator==(const StringResource& that) const { return Compare(that) == 0; }
- inline bool operator!=(const StringResource& that) const { return Compare(that) != 0; }
- inline bool operator>=(const StringResource& that) const { return Compare(that) >= 0; }
- inline bool operator>(const StringResource& that) const { return Compare(that) > 0; }
-
- string TypedID() const;
- static bool ParseTypedID(const string& typed, string* id, int* index);
-
- SourcePos pos;
- string file;
- Configuration config;
- string id;
- int index;
- XMLNode* value;
- int version;
- string versionString;
- string comment;
-};
-
-#endif // VALUES_H
diff --git a/tools/localize/ValuesFile.cpp b/tools/localize/ValuesFile.cpp
deleted file mode 100644
index bd6f494..0000000
--- a/tools/localize/ValuesFile.cpp
+++ /dev/null
@@ -1,266 +0,0 @@
-#include "ValuesFile.h"
-
-#include "XMLHandler.h"
-
-#include <algorithm>
-#include <fcntl.h>
-#include <expat.h>
-#include <unistd.h>
-#include <errno.h>
-
-using namespace std;
-
-const char* const ANDROID_XMLNS = "http://schemas.android.com/apk/res/android";
-const char* const XLIFF_XMLNS = "urn:oasis:names:tc:xliff:document:1.2";
-
-const char *const NS_MAP[] = {
- "android", ANDROID_XMLNS,
- "xliff", XLIFF_XMLNS,
- NULL, NULL
-};
-
-const XMLNamespaceMap ANDROID_NAMESPACES(NS_MAP);
-
-
-// =====================================================================================
-class ArrayHandler : public XMLHandler
-{
-public:
- ArrayHandler(ValuesFile* vf, int version, const string& versionString, const string& id);
-
- virtual int OnStartElement(const SourcePos& pos, const string& ns, const string& name,
- const vector<XMLAttribute>& attrs, XMLHandler** next);
- virtual int OnText(const SourcePos& pos, const string& text);
- virtual int OnComment(const SourcePos& pos, const string& text);
-
-private:
- ValuesFile* m_vf;
- int m_version;
- int m_index;
- string m_versionString;
- string m_id;
- string m_comment;
-};
-
-ArrayHandler::ArrayHandler(ValuesFile* vf, int version, const string& versionString,
- const string& id)
- :m_vf(vf),
- m_version(version),
- m_index(0),
- m_versionString(versionString),
- m_id(id)
-{
-}
-
-int
-ArrayHandler::OnStartElement(const SourcePos& pos, const string& ns, const string& name,
- const vector<XMLAttribute>& attrs, XMLHandler** next)
-{
- if (ns == "" && name == "item") {
- XMLNode* node = XMLNode::NewElement(pos, ns, name, attrs, XMLNode::EXACT);
- m_vf->AddString(StringResource(pos, pos.file, m_vf->GetConfiguration(),
- m_id, m_index, node, m_version, m_versionString,
- trim_string(m_comment)));
- *next = new NodeHandler(node, XMLNode::EXACT);
- m_index++;
- m_comment = "";
- return 0;
- } else {
- pos.Error("invalid <%s> element inside <array>\n", name.c_str());
- return 1;
- }
-}
-
-int
-ArrayHandler::OnText(const SourcePos& pos, const string& text)
-{
- return 0;
-}
-
-int
-ArrayHandler::OnComment(const SourcePos& pos, const string& text)
-{
- m_comment += text;
- return 0;
-}
-
-// =====================================================================================
-class ValuesHandler : public XMLHandler
-{
-public:
- ValuesHandler(ValuesFile* vf, int version, const string& versionString);
-
- virtual int OnStartElement(const SourcePos& pos, const string& ns, const string& name,
- const vector<XMLAttribute>& attrs, XMLHandler** next);
- virtual int OnText(const SourcePos& pos, const string& text);
- virtual int OnComment(const SourcePos& pos, const string& text);
-
-private:
- ValuesFile* m_vf;
- int m_version;
- string m_versionString;
- string m_comment;
-};
-
-ValuesHandler::ValuesHandler(ValuesFile* vf, int version, const string& versionString)
- :m_vf(vf),
- m_version(version),
- m_versionString(versionString)
-{
-}
-
-int
-ValuesHandler::OnStartElement(const SourcePos& pos, const string& ns, const string& name,
- const vector<XMLAttribute>& attrs, XMLHandler** next)
-{
- if (ns == "" && name == "string") {
- string id = XMLAttribute::Find(attrs, "", "name", "");
- XMLNode* node = XMLNode::NewElement(pos, ns, name, attrs, XMLNode::EXACT);
- m_vf->AddString(StringResource(pos, pos.file, m_vf->GetConfiguration(),
- id, -1, node, m_version, m_versionString,
- trim_string(m_comment)));
- *next = new NodeHandler(node, XMLNode::EXACT);
- }
- else if (ns == "" && name == "array") {
- string id = XMLAttribute::Find(attrs, "", "name", "");
- *next = new ArrayHandler(m_vf, m_version, m_versionString, id);
- }
- m_comment = "";
- return 0;
-}
-
-int
-ValuesHandler::OnText(const SourcePos& pos, const string& text)
-{
- return 0;
-}
-
-int
-ValuesHandler::OnComment(const SourcePos& pos, const string& text)
-{
- m_comment += text;
- return 0;
-}
-
-// =====================================================================================
-ValuesFile::ValuesFile(const Configuration& config)
- :m_config(config),
- m_strings(),
- m_arrays()
-{
-}
-
-ValuesFile::~ValuesFile()
-{
-}
-
-ValuesFile*
-ValuesFile::ParseFile(const string& filename, const Configuration& config,
- int version, const string& versionString)
-{
- ValuesFile* result = new ValuesFile(config);
-
- TopElementHandler top("", "resources", new ValuesHandler(result, version, versionString));
- XMLHandler::ParseFile(filename, &top);
-
- return result;
-}
-
-ValuesFile*
-ValuesFile::ParseString(const string& filename, const string& text, const Configuration& config,
- int version, const string& versionString)
-{
- ValuesFile* result = new ValuesFile(config);
-
- TopElementHandler top("", "resources", new ValuesHandler(result, version, versionString));
- XMLHandler::ParseString(filename, text, &top);
-
- return result;
-}
-
-const Configuration&
-ValuesFile::GetConfiguration() const
-{
- return m_config;
-}
-
-void
-ValuesFile::AddString(const StringResource& str)
-{
- if (str.index < 0) {
- m_strings.insert(str);
- } else {
- m_arrays[str.id].insert(str);
- }
-}
-
-set<StringResource>
-ValuesFile::GetStrings() const
-{
- set<StringResource> result = m_strings;
-
- for (map<string,set<StringResource> >::const_iterator it = m_arrays.begin();
- it != m_arrays.end(); it++) {
- result.insert(it->second.begin(), it->second.end());
- }
-
- return result;
-}
-
-XMLNode*
-ValuesFile::ToXMLNode() const
-{
- XMLNode* root;
-
- // <resources>
- {
- vector<XMLAttribute> attrs;
- ANDROID_NAMESPACES.AddToAttributes(&attrs);
- root = XMLNode::NewElement(GENERATED_POS, "", "resources", attrs, XMLNode::PRETTY);
- }
-
- // <array>
- for (map<string,set<StringResource> >::const_iterator it = m_arrays.begin();
- it != m_arrays.end(); it++) {
- vector<XMLAttribute> arrayAttrs;
- arrayAttrs.push_back(XMLAttribute("", "name", it->first));
- const set<StringResource>& items = it->second;
- XMLNode* arrayNode = XMLNode::NewElement(items.begin()->pos, "", "array", arrayAttrs,
- XMLNode::PRETTY);
- root->EditChildren().push_back(arrayNode);
-
- // <item>
- for (set<StringResource>::const_iterator item = items.begin();
- item != items.end(); item++) {
- XMLNode* itemNode = item->value->Clone();
- itemNode->SetName("", "item");
- itemNode->EditAttributes().clear();
- arrayNode->EditChildren().push_back(itemNode);
- }
- }
-
- // <string>
- for (set<StringResource>::const_iterator it=m_strings.begin(); it!=m_strings.end(); it++) {
- const StringResource& str = *it;
- vector<XMLAttribute> attrs;
- XMLNode* strNode = str.value->Clone();
- strNode->SetName("", "string");
- strNode->EditAttributes().clear();
- strNode->EditAttributes().push_back(XMLAttribute("", "name", str.id));
- root->EditChildren().push_back(strNode);
- }
-
- return root;
-}
-
-string
-ValuesFile::ToString() const
-{
- XMLNode* xml = ToXMLNode();
- string s = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
- s += xml->ToString(ANDROID_NAMESPACES);
- delete xml;
- s += '\n';
- return s;
-}
-
diff --git a/tools/localize/ValuesFile.h b/tools/localize/ValuesFile.h
deleted file mode 100644
index 752fd78..0000000
--- a/tools/localize/ValuesFile.h
+++ /dev/null
@@ -1,52 +0,0 @@
-#ifndef VALUES_FILE_H
-#define VALUES_FILE_H
-
-#include "SourcePos.h"
-#include "Configuration.h"
-#include "XMLHandler.h"
-#include "Values.h"
-
-#include <string>
-#include <set>
-
-using namespace std;
-
-extern const XMLNamespaceMap ANDROID_NAMESPACES;
-
-class ValuesFile
-{
-public:
- ValuesFile(const Configuration& config);
-
- static ValuesFile* ParseFile(const string& filename, const Configuration& config,
- int version, const string& versionString);
- static ValuesFile* ParseString(const string& filename, const string& text,
- const Configuration& config,
- int version, const string& versionString);
- ~ValuesFile();
-
- const Configuration& GetConfiguration() const;
-
- void AddString(const StringResource& str);
- set<StringResource> GetStrings() const;
-
- // exports this file as a n XMLNode, you own this object
- XMLNode* ToXMLNode() const;
-
- // writes the ValuesFile out to a string in the canonical format (i.e. writes the contents of
- // ToXMLNode()).
- string ToString() const;
-
-private:
- class ParseState;
- friend class ValuesFile::ParseState;
- friend class StringHandler;
-
- ValuesFile();
-
- Configuration m_config;
- set<StringResource> m_strings;
- map<string,set<StringResource> > m_arrays;
-};
-
-#endif // VALUES_FILE_H
diff --git a/tools/localize/ValuesFile_test.cpp b/tools/localize/ValuesFile_test.cpp
deleted file mode 100644
index 56d2ec2..0000000
--- a/tools/localize/ValuesFile_test.cpp
+++ /dev/null
@@ -1,54 +0,0 @@
-#include "ValuesFile.h"
-#include <stdio.h>
-
-int
-ValuesFile_test()
-{
- int err = 0;
- Configuration config;
- config.locale = "zz_ZZ";
- ValuesFile* vf = ValuesFile::ParseFile("testdata/values/strings.xml", config,
- OLD_VERSION, "1");
-
- const set<StringResource>& strings = vf->GetStrings();
- string canonical = vf->ToString();
-
- if (false) {
- printf("Strings (%zd)\n", strings.size());
- for (set<StringResource>::const_iterator it=strings.begin();
- it!=strings.end(); it++) {
- const StringResource& str = *it;
- printf("%s: '%s'[%d]='%s' (%s) <!-- %s -->\n", str.pos.ToString().c_str(),
- str.id.c_str(), str.index,
- str.value->ContentsToString(ANDROID_NAMESPACES).c_str(),
- str.config.ToString().c_str(), str.comment.c_str());
- }
-
- printf("XML:[[%s]]\n", canonical.c_str());
- }
-
- const char * const EXPECTED =
- "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
- "<resources xmlns:android=\"http://schemas.android.com/apk/res/android\"\n"
- " xmlns:xliff=\"urn:oasis:names:tc:xliff:document:1.2\">\n"
- " <array name=\"emailAddressTypes\">\n"
- " <item>Email</item>\n"
- " <item>Home</item>\n"
- " <item>Work</item>\n"
- " <item>Other\\u2026</item>\n"
- " </array>\n"
- " <string name=\"test1\">Discard</string>\n"
- " <string name=\"test2\">a<b>b<i>c</i></b>d</string>\n"
- " <string name=\"test3\">a<xliff:g a=\"b\" xliff:a=\"asdf\">bBb</xliff:g>C</string>\n"
- "</resources>\n";
-
- if (canonical != EXPECTED) {
- fprintf(stderr, "ValuesFile_test failed\n");
- fprintf(stderr, "canonical=[[%s]]\n", canonical.c_str());
- fprintf(stderr, "EXPECTED=[[%s]]\n", EXPECTED);
- err = 1;
- }
-
- delete vf;
- return err;
-}
diff --git a/tools/localize/XLIFFFile.cpp b/tools/localize/XLIFFFile.cpp
deleted file mode 100644
index 4e217d9..0000000
--- a/tools/localize/XLIFFFile.cpp
+++ /dev/null
@@ -1,610 +0,0 @@
-#include "XLIFFFile.h"
-
-#include <algorithm>
-#include <sys/time.h>
-#include <time.h>
-#include <cstdio>
-
-const char* const XLIFF_XMLNS = "urn:oasis:names:tc:xliff:document:1.2";
-
-const char *const NS_MAP[] = {
- "", XLIFF_XMLNS,
- "xml", XMLNS_XMLNS,
- NULL, NULL
-};
-
-const XMLNamespaceMap XLIFF_NAMESPACES(NS_MAP);
-
-int
-XLIFFFile::File::Compare(const XLIFFFile::File& that) const
-{
- if (filename != that.filename) {
- return filename < that.filename ? -1 : 1;
- }
- return 0;
-}
-
-// =====================================================================================
-XLIFFFile::XLIFFFile()
-{
-}
-
-XLIFFFile::~XLIFFFile()
-{
-}
-
-static XMLNode*
-get_unique_node(const XMLNode* parent, const string& ns, const string& name, bool required)
-{
- size_t count = parent->CountElementsByName(ns, name);
- if (count == 1) {
- return parent->GetElementByNameAt(ns, name, 0);
- } else {
- if (required) {
- SourcePos pos = count == 0
- ? parent->Position()
- : parent->GetElementByNameAt(XLIFF_XMLNS, name, 1)->Position();
- pos.Error("<%s> elements must contain exactly one <%s> element",
- parent->Name().c_str(), name.c_str());
- }
- return NULL;
- }
-}
-
-XLIFFFile*
-XLIFFFile::Parse(const string& filename)
-{
- XLIFFFile* result = new XLIFFFile();
-
- XMLNode* root = NodeHandler::ParseFile(filename, XMLNode::PRETTY);
- if (root == NULL) {
- return NULL;
- }
-
- // <file>
- vector<XMLNode*> files = root->GetElementsByName(XLIFF_XMLNS, "file");
- for (size_t i=0; i<files.size(); i++) {
- XMLNode* file = files[i];
-
- string datatype = file->GetAttribute("", "datatype", "");
- string originalFile = file->GetAttribute("", "original", "");
-
- Configuration sourceConfig;
- sourceConfig.locale = file->GetAttribute("", "source-language", "");
- result->m_sourceConfig = sourceConfig;
-
- Configuration targetConfig;
- targetConfig.locale = file->GetAttribute("", "target-language", "");
- result->m_targetConfig = targetConfig;
-
- result->m_currentVersion = file->GetAttribute("", "build-num", "");
- result->m_oldVersion = "old";
-
- // <body>
- XMLNode* body = get_unique_node(file, XLIFF_XMLNS, "body", true);
- if (body == NULL) continue;
-
- // <trans-unit>
- vector<XMLNode*> transUnits = body->GetElementsByName(XLIFF_XMLNS, "trans-unit");
- for (size_t j=0; j<transUnits.size(); j++) {
- XMLNode* transUnit = transUnits[j];
-
- string rawID = transUnit->GetAttribute("", "id", "");
- if (rawID == "") {
- transUnit->Position().Error("<trans-unit> tag requires an id");
- continue;
- }
- string id;
- int index;
-
- if (!StringResource::ParseTypedID(rawID, &id, &index)) {
- transUnit->Position().Error("<trans-unit> has invalid id '%s'\n", rawID.c_str());
- continue;
- }
-
- // <source>
- XMLNode* source = get_unique_node(transUnit, XLIFF_XMLNS, "source", false);
- if (source != NULL) {
- XMLNode* node = source->Clone();
- node->SetPrettyRecursive(XMLNode::EXACT);
- result->AddStringResource(StringResource(source->Position(), originalFile,
- sourceConfig, id, index, node, CURRENT_VERSION,
- result->m_currentVersion));
- }
-
- // <target>
- XMLNode* target = get_unique_node(transUnit, XLIFF_XMLNS, "target", false);
- if (target != NULL) {
- XMLNode* node = target->Clone();
- node->SetPrettyRecursive(XMLNode::EXACT);
- result->AddStringResource(StringResource(target->Position(), originalFile,
- targetConfig, id, index, node, CURRENT_VERSION,
- result->m_currentVersion));
- }
-
- // <alt-trans>
- XMLNode* altTrans = get_unique_node(transUnit, XLIFF_XMLNS, "alt-trans", false);
- if (altTrans != NULL) {
- // <source>
- XMLNode* altSource = get_unique_node(altTrans, XLIFF_XMLNS, "source", false);
- if (altSource != NULL) {
- XMLNode* node = altSource->Clone();
- node->SetPrettyRecursive(XMLNode::EXACT);
- result->AddStringResource(StringResource(altSource->Position(),
- originalFile, sourceConfig, id, index, node, OLD_VERSION,
- result->m_oldVersion));
- }
-
- // <target>
- XMLNode* altTarget = get_unique_node(altTrans, XLIFF_XMLNS, "target", false);
- if (altTarget != NULL) {
- XMLNode* node = altTarget->Clone();
- node->SetPrettyRecursive(XMLNode::EXACT);
- result->AddStringResource(StringResource(altTarget->Position(),
- originalFile, targetConfig, id, index, node, OLD_VERSION,
- result->m_oldVersion));
- }
- }
- }
- }
- delete root;
- return result;
-}
-
-XLIFFFile*
-XLIFFFile::Create(const Configuration& sourceConfig, const Configuration& targetConfig,
- const string& currentVersion)
-{
- XLIFFFile* result = new XLIFFFile();
- result->m_sourceConfig = sourceConfig;
- result->m_targetConfig = targetConfig;
- result->m_currentVersion = currentVersion;
- return result;
-}
-
-set<string>
-XLIFFFile::Files() const
-{
- set<string> result;
- for (vector<File>::const_iterator f = m_files.begin(); f != m_files.end(); f++) {
- result.insert(f->filename);
- }
- return result;
-}
-
-void
-XLIFFFile::AddStringResource(const StringResource& str)
-{
- string id = str.TypedID();
-
- File* f = NULL;
- const size_t I = m_files.size();
- for (size_t i=0; i<I; i++) {
- if (m_files[i].filename == str.file) {
- f = &m_files[i];
- break;
- }
- }
- if (f == NULL) {
- File file;
- file.filename = str.file;
- m_files.push_back(file);
- f = &m_files[I];
- }
-
- const size_t J = f->transUnits.size();
- TransUnit* g = NULL;
- for (size_t j=0; j<J; j++) {
- if (f->transUnits[j].id == id) {
- g = &f->transUnits[j];
- }
- }
- if (g == NULL) {
- TransUnit group;
- group.id = id;
- f->transUnits.push_back(group);
- g = &f->transUnits[J];
- }
-
- StringResource* res = find_string_res(*g, str);
- if (res == NULL) {
- return ;
- }
- if (res->id != "") {
- str.pos.Error("Duplicate string resource: %s", res->id.c_str());
- res->pos.Error("Previous definition here");
- return ;
- }
- *res = str;
-
- m_strings.insert(str);
-}
-
-void
-XLIFFFile::Filter(bool (*func)(const string&,const TransUnit&,void*), void* cookie)
-{
- const size_t I = m_files.size();
- for (size_t ix=0, i=I-1; ix<I; ix++, i--) {
- File& file = m_files[i];
-
- const size_t J = file.transUnits.size();
- for (size_t jx=0, j=J-1; jx<J; jx++, j--) {
- TransUnit& tu = file.transUnits[j];
-
- bool keep = func(file.filename, tu, cookie);
- if (!keep) {
- if (tu.source.id != "") {
- m_strings.erase(tu.source);
- }
- if (tu.target.id != "") {
- m_strings.erase(tu.target);
- }
- if (tu.altSource.id != "") {
- m_strings.erase(tu.altSource);
- }
- if (tu.altTarget.id != "") {
- m_strings.erase(tu.altTarget);
- }
- file.transUnits.erase(file.transUnits.begin()+j);
- }
- }
- if (file.transUnits.size() == 0) {
- m_files.erase(m_files.begin()+i);
- }
- }
-}
-
-void
-XLIFFFile::Map(void (*func)(const string&,TransUnit*,void*), void* cookie)
-{
- const size_t I = m_files.size();
- for (size_t i=0; i<I; i++) {
- File& file = m_files[i];
-
- const size_t J = file.transUnits.size();
- for (size_t j=0; j<J; j++) {
- func(file.filename, &(file.transUnits[j]), cookie);
- }
- }
-}
-
-TransUnit*
-XLIFFFile::EditTransUnit(const string& filename, const string& id)
-{
- const size_t I = m_files.size();
- for (size_t ix=0, i=I-1; ix<I; ix++, i--) {
- File& file = m_files[i];
- if (file.filename == filename) {
- const size_t J = file.transUnits.size();
- for (size_t jx=0, j=J-1; jx<J; jx++, j--) {
- TransUnit& tu = file.transUnits[j];
- if (tu.id == id) {
- return &tu;
- }
- }
- }
- }
- return NULL;
-}
-
-StringResource*
-XLIFFFile::find_string_res(TransUnit& g, const StringResource& str)
-{
- int index;
- if (str.version == CURRENT_VERSION) {
- index = 0;
- }
- else if (str.version == OLD_VERSION) {
- index = 2;
- }
- else {
- str.pos.Error("Internal Error %s:%d\n", __FILE__, __LINE__);
- return NULL;
- }
- if (str.config == m_sourceConfig) {
- // index += 0;
- }
- else if (str.config == m_targetConfig) {
- index += 1;
- }
- else {
- str.pos.Error("unknown config for string %s: %s", str.id.c_str(),
- str.config.ToString().c_str());
- return NULL;
- }
- switch (index) {
- case 0:
- return &g.source;
- case 1:
- return &g.target;
- case 2:
- return &g.altSource;
- case 3:
- return &g.altTarget;
- }
- str.pos.Error("Internal Error %s:%d\n", __FILE__, __LINE__);
- return NULL;
-}
-
-int
-convert_html_to_xliff(const XMLNode* original, const string& name, XMLNode* addTo, int* phID)
-{
- int err = 0;
- if (original->Type() == XMLNode::TEXT) {
- addTo->EditChildren().push_back(original->Clone());
- return 0;
- } else {
- string ctype;
- if (original->Namespace() == "") {
- if (original->Name() == "b") {
- ctype = "bold";
- }
- else if (original->Name() == "i") {
- ctype = "italic";
- }
- else if (original->Name() == "u") {
- ctype = "underline";
- }
- }
- if (ctype != "") {
- vector<XMLAttribute> attrs;
- attrs.push_back(XMLAttribute(XLIFF_XMLNS, "ctype", ctype));
- XMLNode* copy = XMLNode::NewElement(original->Position(), XLIFF_XMLNS, "g",
- attrs, XMLNode::EXACT);
-
- const vector<XMLNode*>& children = original->Children();
- size_t I = children.size();
- for (size_t i=0; i<I; i++) {
- err |= convert_html_to_xliff(children[i], name, copy, phID);
- }
- return err;
- }
- else {
- if (original->Namespace() == XLIFF_XMLNS) {
- addTo->EditChildren().push_back(original->Clone());
- return 0;
- } else {
- if (original->Namespace() == "") {
- // flatten out the tag into ph tags -- but only if there is no namespace
- // that's still unsupported because propagating the xmlns attribute is hard.
- vector<XMLAttribute> attrs;
- char idStr[30];
- (*phID)++;
- sprintf(idStr, "id-%d", *phID);
- attrs.push_back(XMLAttribute(XLIFF_XMLNS, "id", idStr));
-
- if (original->Children().size() == 0) {
- XMLNode* ph = XMLNode::NewElement(original->Position(), XLIFF_XMLNS,
- "ph", attrs, XMLNode::EXACT);
- ph->EditChildren().push_back(
- XMLNode::NewText(original->Position(),
- original->ToString(XLIFF_NAMESPACES),
- XMLNode::EXACT));
- addTo->EditChildren().push_back(ph);
- } else {
- XMLNode* begin = XMLNode::NewElement(original->Position(), XLIFF_XMLNS,
- "bpt", attrs, XMLNode::EXACT);
- begin->EditChildren().push_back(
- XMLNode::NewText(original->Position(),
- original->OpenTagToString(XLIFF_NAMESPACES, XMLNode::EXACT),
- XMLNode::EXACT));
- XMLNode* end = XMLNode::NewElement(original->Position(), XLIFF_XMLNS,
- "ept", attrs, XMLNode::EXACT);
- string endText = "</";
- endText += original->Name();
- endText += ">";
- end->EditChildren().push_back(XMLNode::NewText(original->Position(),
- endText, XMLNode::EXACT));
-
- addTo->EditChildren().push_back(begin);
-
- const vector<XMLNode*>& children = original->Children();
- size_t I = children.size();
- for (size_t i=0; i<I; i++) {
- err |= convert_html_to_xliff(children[i], name, addTo, phID);
- }
-
- addTo->EditChildren().push_back(end);
- }
- return err;
- } else {
- original->Position().Error("invalid <%s> element in <%s> tag\n",
- original->Name().c_str(), name.c_str());
- return 1;
- }
- }
- }
- }
-}
-
-XMLNode*
-create_string_node(const StringResource& str, const string& name)
-{
- vector<XMLAttribute> attrs;
- attrs.push_back(XMLAttribute(XMLNS_XMLNS, "space", "preserve"));
- XMLNode* node = XMLNode::NewElement(str.pos, XLIFF_XMLNS, name, attrs, XMLNode::EXACT);
-
- const vector<XMLNode*>& children = str.value->Children();
- size_t I = children.size();
- int err = 0;
- for (size_t i=0; i<I; i++) {
- int phID = 0;
- err |= convert_html_to_xliff(children[i], name, node, &phID);
- }
-
- if (err != 0) {
- delete node;
- }
- return node;
-}
-
-static bool
-compare_id(const TransUnit& lhs, const TransUnit& rhs)
-{
- string lid, rid;
- int lindex, rindex;
- StringResource::ParseTypedID(lhs.id, &lid, &lindex);
- StringResource::ParseTypedID(rhs.id, &rid, &rindex);
- if (lid < rid) return true;
- if (lid == rid && lindex < rindex) return true;
- return false;
-}
-
-XMLNode*
-XLIFFFile::ToXMLNode() const
-{
- XMLNode* root;
- size_t N;
-
- // <xliff>
- {
- vector<XMLAttribute> attrs;
- XLIFF_NAMESPACES.AddToAttributes(&attrs);
- attrs.push_back(XMLAttribute(XLIFF_XMLNS, "version", "1.2"));
- root = XMLNode::NewElement(GENERATED_POS, XLIFF_XMLNS, "xliff", attrs, XMLNode::PRETTY);
- }
-
- vector<TransUnit> groups;
-
- // <file>
- vector<File> files = m_files;
- sort(files.begin(), files.end());
- const size_t I = files.size();
- for (size_t i=0; i<I; i++) {
- const File& file = files[i];
-
- vector<XMLAttribute> fileAttrs;
- fileAttrs.push_back(XMLAttribute(XLIFF_XMLNS, "datatype", "x-android-res"));
- fileAttrs.push_back(XMLAttribute(XLIFF_XMLNS, "original", file.filename));
-
- struct timeval tv;
- struct timezone tz;
- gettimeofday(&tv, &tz);
- fileAttrs.push_back(XMLAttribute(XLIFF_XMLNS, "date", trim_string(ctime(&tv.tv_sec))));
-
- fileAttrs.push_back(XMLAttribute(XLIFF_XMLNS, "source-language", m_sourceConfig.locale));
- fileAttrs.push_back(XMLAttribute(XLIFF_XMLNS, "target-language", m_targetConfig.locale));
- fileAttrs.push_back(XMLAttribute(XLIFF_XMLNS, "build-num", m_currentVersion));
-
- XMLNode* fileNode = XMLNode::NewElement(GENERATED_POS, XLIFF_XMLNS, "file", fileAttrs,
- XMLNode::PRETTY);
- root->EditChildren().push_back(fileNode);
-
- // <body>
- XMLNode* bodyNode = XMLNode::NewElement(GENERATED_POS, XLIFF_XMLNS, "body",
- vector<XMLAttribute>(), XMLNode::PRETTY);
- fileNode->EditChildren().push_back(bodyNode);
-
- // <trans-unit>
- vector<TransUnit> transUnits = file.transUnits;
- sort(transUnits.begin(), transUnits.end(), compare_id);
- const size_t J = transUnits.size();
- for (size_t j=0; j<J; j++) {
- const TransUnit& transUnit = transUnits[j];
-
- vector<XMLAttribute> tuAttrs;
-
- // strings start with string:
- tuAttrs.push_back(XMLAttribute(XLIFF_XMLNS, "id", transUnit.id));
- XMLNode* transUnitNode = XMLNode::NewElement(GENERATED_POS, XLIFF_XMLNS, "trans-unit",
- tuAttrs, XMLNode::PRETTY);
- bodyNode->EditChildren().push_back(transUnitNode);
-
- // <extradata>
- if (transUnit.source.comment != "") {
- vector<XMLAttribute> extradataAttrs;
- XMLNode* extraNode = XMLNode::NewElement(GENERATED_POS, XLIFF_XMLNS, "extradata",
- extradataAttrs, XMLNode::EXACT);
- transUnitNode->EditChildren().push_back(extraNode);
- extraNode->EditChildren().push_back(
- XMLNode::NewText(GENERATED_POS, transUnit.source.comment,
- XMLNode::PRETTY));
- }
-
- // <source>
- if (transUnit.source.id != "") {
- transUnitNode->EditChildren().push_back(
- create_string_node(transUnit.source, "source"));
- }
-
- // <target>
- if (transUnit.target.id != "") {
- transUnitNode->EditChildren().push_back(
- create_string_node(transUnit.target, "target"));
- }
-
- // <alt-trans>
- if (transUnit.altSource.id != "" || transUnit.altTarget.id != ""
- || transUnit.rejectComment != "") {
- vector<XMLAttribute> altTransAttrs;
- XMLNode* altTransNode = XMLNode::NewElement(GENERATED_POS, XLIFF_XMLNS, "alt-trans",
- altTransAttrs, XMLNode::PRETTY);
- transUnitNode->EditChildren().push_back(altTransNode);
-
- // <extradata>
- if (transUnit.rejectComment != "") {
- vector<XMLAttribute> extradataAttrs;
- XMLNode* extraNode = XMLNode::NewElement(GENERATED_POS, XLIFF_XMLNS,
- "extradata", extradataAttrs,
- XMLNode::EXACT);
- altTransNode->EditChildren().push_back(extraNode);
- extraNode->EditChildren().push_back(
- XMLNode::NewText(GENERATED_POS, transUnit.rejectComment,
- XMLNode::PRETTY));
- }
-
- // <source>
- if (transUnit.altSource.id != "") {
- altTransNode->EditChildren().push_back(
- create_string_node(transUnit.altSource, "source"));
- }
-
- // <target>
- if (transUnit.altTarget.id != "") {
- altTransNode->EditChildren().push_back(
- create_string_node(transUnit.altTarget, "target"));
- }
- }
-
- }
- }
-
- return root;
-}
-
-
-string
-XLIFFFile::ToString() const
-{
- XMLNode* xml = ToXMLNode();
- string s = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
- s += xml->ToString(XLIFF_NAMESPACES);
- delete xml;
- s += '\n';
- return s;
-}
-
-Stats
-XLIFFFile::GetStats(const string& config) const
-{
- Stats stat;
- stat.config = config;
- stat.files = m_files.size();
- stat.toBeTranslated = 0;
- stat.noComments = 0;
-
- for (vector<File>::const_iterator file=m_files.begin(); file!=m_files.end(); file++) {
- stat.toBeTranslated += file->transUnits.size();
-
- for (vector<TransUnit>::const_iterator tu=file->transUnits.begin();
- tu!=file->transUnits.end(); tu++) {
- if (tu->source.comment == "") {
- stat.noComments++;
- }
- }
- }
-
- stat.totalStrings = stat.toBeTranslated;
-
- return stat;
-}
diff --git a/tools/localize/XLIFFFile.h b/tools/localize/XLIFFFile.h
deleted file mode 100644
index a93d479..0000000
--- a/tools/localize/XLIFFFile.h
+++ /dev/null
@@ -1,98 +0,0 @@
-#ifndef XLIFF_FILE_H
-#define XLIFF_FILE_H
-
-#include "Values.h"
-
-#include "Configuration.h"
-
-#include <set>
-
-using namespace std;
-
-extern const XMLNamespaceMap XLIFF_NAMESPACES;
-
-extern const char*const XLIFF_XMLNS;
-
-struct Stats
-{
- string config;
- size_t files;
- size_t toBeTranslated;
- size_t noComments;
- size_t totalStrings;
-};
-
-struct TransUnit {
- string id;
- StringResource source;
- StringResource target;
- StringResource altSource;
- StringResource altTarget;
- string rejectComment;
-};
-
-class XLIFFFile
-{
-public:
- static XLIFFFile* Parse(const string& filename);
- static XLIFFFile* Create(const Configuration& sourceConfig, const Configuration& targetConfig,
- const string& currentVersion);
- ~XLIFFFile();
-
- inline const Configuration& SourceConfig() const { return m_sourceConfig; }
- inline const Configuration& TargetConfig() const { return m_targetConfig; }
-
- inline const string& CurrentVersion() const { return m_currentVersion; }
- inline const string& OldVersion() const { return m_oldVersion; }
-
- set<string> Files() const;
-
- void AddStringResource(const StringResource& res);
- inline set<StringResource> const& GetStringResources() const { return m_strings; }
- bool FindStringResource(const string& filename, int version, bool source);
-
- void Filter(bool (*func)(const string&,const TransUnit&,void*), void* cookie);
- void Map(void (*func)(const string&,TransUnit*,void*), void* cookie);
-
- TransUnit* EditTransUnit(const string& file, const string& id);
-
- // exports this file as a n XMLNode, you own this object
- XMLNode* ToXMLNode() const;
-
- // writes the ValuesFile out to a string in the canonical format (i.e. writes the contents of
- // ToXMLNode()).
- string ToString() const;
-
- Stats GetStats(const string& config) const;
-
-private:
- struct File {
- int Compare(const File& that) const;
-
- inline bool operator<(const File& that) const { return Compare(that) < 0; }
- inline bool operator<=(const File& that) const { return Compare(that) <= 0; }
- inline bool operator==(const File& that) const { return Compare(that) == 0; }
- inline bool operator!=(const File& that) const { return Compare(that) != 0; }
- inline bool operator>=(const File& that) const { return Compare(that) >= 0; }
- inline bool operator>(const File& that) const { return Compare(that) > 0; }
-
- string filename;
- vector<TransUnit> transUnits;
- };
-
- XLIFFFile();
- StringResource* find_string_res(TransUnit& g, const StringResource& str);
-
- Configuration m_sourceConfig;
- Configuration m_targetConfig;
-
- string m_currentVersion;
- string m_oldVersion;
-
- set<StringResource> m_strings;
- vector<File> m_files;
-};
-
-int convert_html_to_xliff(const XMLNode* original, const string& name, XMLNode* addTo, int* phID);
-
-#endif // XLIFF_FILE_H
diff --git a/tools/localize/XLIFFFile_test.cpp b/tools/localize/XLIFFFile_test.cpp
deleted file mode 100644
index 52ed4c3..0000000
--- a/tools/localize/XLIFFFile_test.cpp
+++ /dev/null
@@ -1,115 +0,0 @@
-#include "XLIFFFile.h"
-#include <stdio.h>
-#include "ValuesFile.h"
-
-XMLNode* create_string_node(const StringResource& str, const string& name);
-
-static int
-Parse_test()
-{
- XLIFFFile* xf = XLIFFFile::Parse("testdata/xliff1.xliff");
- if (xf == NULL) {
- return 1;
- }
-
- set<StringResource> const& strings = xf->GetStringResources();
-
- if (false) {
- for (set<StringResource>::iterator it=strings.begin(); it!=strings.end(); it++) {
- const StringResource& str = *it;
- printf("STRING!!! id=%s index=%d value='%s' pos=%s file=%s version=%d(%s)\n",
- str.id.c_str(), str.index,
- str.value->ContentsToString(ANDROID_NAMESPACES).c_str(),
- str.pos.ToString().c_str(), str.file.c_str(), str.version,
- str.versionString.c_str());
- }
- printf("XML:[[%s]]\n", xf->ToString().c_str());
- }
-
- delete xf;
- return 0;
-}
-
-static XMLNode*
-add_html_tag(XMLNode* addTo, const string& tag)
-{
- vector<XMLAttribute> attrs;
- XMLNode* node = XMLNode::NewElement(GENERATED_POS, "", tag, attrs, XMLNode::EXACT);
- addTo->EditChildren().push_back(node);
- return node;
-}
-
-static int
-create_string_node_test()
-{
- int err = 0;
- StringResource res;
- vector<XMLAttribute> attrs;
- res.value = XMLNode::NewElement(GENERATED_POS, "", "something", attrs, XMLNode::EXACT);
- res.value->EditChildren().push_back(XMLNode::NewText(GENERATED_POS, " begin ", XMLNode::EXACT));
-
- XMLNode* child;
-
- child = add_html_tag(res.value, "b");
- child->EditChildren().push_back(XMLNode::NewText(GENERATED_POS, "b", XMLNode::EXACT));
-
- child = add_html_tag(res.value, "i");
- child->EditChildren().push_back(XMLNode::NewText(GENERATED_POS, "i", XMLNode::EXACT));
-
- child = add_html_tag(child, "b");
- child->EditChildren().push_back(XMLNode::NewText(GENERATED_POS, "b", XMLNode::EXACT));
-
- child = add_html_tag(res.value, "u");
- child->EditChildren().push_back(XMLNode::NewText(GENERATED_POS, "u", XMLNode::EXACT));
-
-
- res.value->EditChildren().push_back(XMLNode::NewText(GENERATED_POS, " end ", XMLNode::EXACT));
-
- XMLNode* xliff = create_string_node(res, "blah");
-
- string oldString = res.value->ToString(XLIFF_NAMESPACES);
- string newString = xliff->ToString(XLIFF_NAMESPACES);
-
- if (false) {
- printf("OLD=\"%s\"\n", oldString.c_str());
- printf("NEW=\"%s\"\n", newString.c_str());
- }
-
- const char* const EXPECTED_OLD
- = "<something> begin <b>b</b><i>i<b>b</b></i><u>u</u> end </something>";
- if (oldString != EXPECTED_OLD) {
- fprintf(stderr, "oldString mismatch:\n");
- fprintf(stderr, " expected='%s'\n", EXPECTED_OLD);
- fprintf(stderr, " actual='%s'\n", oldString.c_str());
- err |= 1;
- }
-
- const char* const EXPECTED_NEW
- = "<blah xml:space=\"preserve\"> begin <g ctype=\"bold\">b</g>"
- "<g ctype=\"italic\">i<g ctype=\"bold\">b</g></g><g ctype=\"underline\">u</g>"
- " end </blah>";
- if (newString != EXPECTED_NEW) {
- fprintf(stderr, "newString mismatch:\n");
- fprintf(stderr, " expected='%s'\n", EXPECTED_NEW);
- fprintf(stderr, " actual='%s'\n", newString.c_str());
- err |= 1;
- }
-
- if (err != 0) {
- fprintf(stderr, "create_string_node_test failed\n");
- }
- return err;
-}
-
-int
-XLIFFFile_test()
-{
- bool all = true;
- int err = 0;
-
- if (all) err |= Parse_test();
- if (all) err |= create_string_node_test();
-
- return err;
-}
-
diff --git a/tools/localize/XMLHandler.cpp b/tools/localize/XMLHandler.cpp
deleted file mode 100644
index 3fab211..0000000
--- a/tools/localize/XMLHandler.cpp
+++ /dev/null
@@ -1,793 +0,0 @@
-#include "XMLHandler.h"
-
-#include <algorithm>
-#include <expat.h>
-#include <stdio.h>
-#include <string.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <errno.h>
-
-#define NS_SEPARATOR 1
-#define MORE_INDENT " "
-
-static string
-xml_text_escape(const string& s)
-{
- string result;
- const size_t N = s.length();
- for (size_t i=0; i<N; i++) {
- char c = s[i];
- switch (c) {
- case '<':
- result += "<";
- break;
- case '>':
- result += ">";
- break;
- case '&':
- result += "&";
- break;
- default:
- result += c;
- break;
- }
- }
- return result;
-}
-
-static string
-xml_attr_escape(const string& s)
-{
- string result;
- const size_t N = s.length();
- for (size_t i=0; i<N; i++) {
- char c = s[i];
- switch (c) {
- case '\"':
- result += """;
- break;
- default:
- result += c;
- break;
- }
- }
- return result;
-}
-
-XMLNamespaceMap::XMLNamespaceMap()
-{
-}
-
-XMLNamespaceMap::XMLNamespaceMap(char const*const* nspaces)
-
-{
- while (*nspaces) {
- m_map[nspaces[1]] = nspaces[0];
- nspaces += 2;
- }
-}
-
-string
-XMLNamespaceMap::Get(const string& ns) const
-{
- if (ns == "xml") {
- return ns;
- }
- map<string,string>::const_iterator it = m_map.find(ns);
- if (it == m_map.end()) {
- return "";
- } else {
- return it->second;
- }
-}
-
-string
-XMLNamespaceMap::GetPrefix(const string& ns) const
-{
- if (ns == "") {
- return "";
- }
- map<string,string>::const_iterator it = m_map.find(ns);
- if (it != m_map.end()) {
- if (it->second == "") {
- return "";
- } else {
- return it->second + ":";
- }
- } else {
- return ":"; // invalid
- }
-}
-
-void
-XMLNamespaceMap::AddToAttributes(vector<XMLAttribute>* attrs) const
-{
- map<string,string>::const_iterator it;
- for (it=m_map.begin(); it!=m_map.end(); it++) {
- if (it->second == "xml") {
- continue;
- }
- XMLAttribute attr;
- if (it->second == "") {
- attr.name = "xmlns";
- } else {
- attr.name = "xmlns:";
- attr.name += it->second;
- }
- attr.value = it->first;
- attrs->push_back(attr);
- }
-}
-
-XMLAttribute::XMLAttribute()
-{
-}
-
-XMLAttribute::XMLAttribute(const XMLAttribute& that)
- :ns(that.ns),
- name(that.name),
- value(that.value)
-{
-}
-
-XMLAttribute::XMLAttribute(string n, string na, string v)
- :ns(n),
- name(na),
- value(v)
-{
-}
-
-XMLAttribute::~XMLAttribute()
-{
-}
-
-int
-XMLAttribute::Compare(const XMLAttribute& that) const
-{
- if (ns != that.ns) {
- return ns < that.ns ? -1 : 1;
- }
- if (name != that.name) {
- return name < that.name ? -1 : 1;
- }
- return 0;
-}
-
-string
-XMLAttribute::Find(const vector<XMLAttribute>& list, const string& ns, const string& name,
- const string& def)
-{
- const size_t N = list.size();
- for (size_t i=0; i<N; i++) {
- const XMLAttribute& attr = list[i];
- if (attr.ns == ns && attr.name == name) {
- return attr.value;
- }
- }
- return def;
-}
-
-struct xml_handler_data {
- vector<XMLHandler*> stack;
- XML_Parser parser;
- vector<vector<XMLAttribute>*> attributes;
- string filename;
-};
-
-XMLNode::XMLNode()
-{
-}
-
-XMLNode::~XMLNode()
-{
-// for_each(m_children.begin(), m_children.end(), delete_object<XMLNode>);
-}
-
-XMLNode*
-XMLNode::Clone() const
-{
- switch (m_type) {
- case ELEMENT: {
- XMLNode* e = XMLNode::NewElement(m_pos, m_ns, m_name, m_attrs, m_pretty);
- const size_t N = m_children.size();
- for (size_t i=0; i<N; i++) {
- e->m_children.push_back(m_children[i]->Clone());
- }
- return e;
- }
- case TEXT: {
- return XMLNode::NewText(m_pos, m_text, m_pretty);
- }
- default:
- return NULL;
- }
-}
-
-XMLNode*
-XMLNode::NewElement(const SourcePos& pos, const string& ns, const string& name,
- const vector<XMLAttribute>& attrs, int pretty)
-{
- XMLNode* node = new XMLNode();
- node->m_type = ELEMENT;
- node->m_pretty = pretty;
- node->m_pos = pos;
- node->m_ns = ns;
- node->m_name = name;
- node->m_attrs = attrs;
- return node;
-}
-
-XMLNode*
-XMLNode::NewText(const SourcePos& pos, const string& text, int pretty)
-{
- XMLNode* node = new XMLNode();
- node->m_type = TEXT;
- node->m_pretty = pretty;
- node->m_pos = pos;
- node->m_text = text;
- return node;
-}
-
-void
-XMLNode::SetPrettyRecursive(int value)
-{
- m_pretty = value;
- const size_t N = m_children.size();
- for (size_t i=0; i<N; i++) {
- m_children[i]->SetPrettyRecursive(value);
- }
-}
-
-string
-XMLNode::ContentsToString(const XMLNamespaceMap& nspaces) const
-{
- return contents_to_string(nspaces, "");
-}
-
-string
-XMLNode::ToString(const XMLNamespaceMap& nspaces) const
-{
- return to_string(nspaces, "");
-}
-
-string
-XMLNode::OpenTagToString(const XMLNamespaceMap& nspaces, int pretty) const
-{
- return open_tag_to_string(nspaces, "", pretty);
-}
-
-string
-XMLNode::contents_to_string(const XMLNamespaceMap& nspaces, const string& indent) const
-{
- string result;
- const size_t N = m_children.size();
- for (size_t i=0; i<N; i++) {
- const XMLNode* child = m_children[i];
- switch (child->Type()) {
- case ELEMENT:
- if (m_pretty == PRETTY) {
- result += '\n';
- result += indent;
- }
- case TEXT:
- result += child->to_string(nspaces, indent);
- break;
- }
- }
- return result;
-}
-
-string
-trim_string(const string& str)
-{
- const char* p = str.c_str();
- while (*p && isspace(*p)) {
- p++;
- }
- const char* q = str.c_str() + str.length() - 1;
- while (q > p && isspace(*q)) {
- q--;
- }
- q++;
- return string(p, q-p);
-}
-
-string
-XMLNode::open_tag_to_string(const XMLNamespaceMap& nspaces, const string& indent, int pretty) const
-{
- if (m_type != ELEMENT) {
- return "";
- }
- string result = "<";
- result += nspaces.GetPrefix(m_ns);
- result += m_name;
-
- vector<XMLAttribute> attrs = m_attrs;
-
- sort(attrs.begin(), attrs.end());
-
- const size_t N = attrs.size();
- for (size_t i=0; i<N; i++) {
- const XMLAttribute& attr = attrs[i];
- if (i == 0 || m_pretty == EXACT || pretty == EXACT) {
- result += ' ';
- }
- else {
- result += "\n";
- result += indent;
- result += MORE_INDENT;
- result += MORE_INDENT;
- }
- result += nspaces.GetPrefix(attr.ns);
- result += attr.name;
- result += "=\"";
- result += xml_attr_escape(attr.value);
- result += '\"';
- }
-
- if (m_children.size() > 0) {
- result += '>';
- } else {
- result += " />";
- }
- return result;
-}
-
-string
-XMLNode::to_string(const XMLNamespaceMap& nspaces, const string& indent) const
-{
- switch (m_type)
- {
- case TEXT: {
- if (m_pretty == EXACT) {
- return xml_text_escape(m_text);
- } else {
- return xml_text_escape(trim_string(m_text));
- }
- }
- case ELEMENT: {
- string result = open_tag_to_string(nspaces, indent, PRETTY);
-
- if (m_children.size() > 0) {
- result += contents_to_string(nspaces, indent + MORE_INDENT);
-
- if (m_pretty == PRETTY && m_children.size() > 0) {
- result += '\n';
- result += indent;
- }
-
- result += "</";
- result += nspaces.GetPrefix(m_ns);
- result += m_name;
- result += '>';
- }
- return result;
- }
- default:
- return "";
- }
-}
-
-string
-XMLNode::CollapseTextContents() const
-{
- if (m_type == TEXT) {
- return m_text;
- }
- else if (m_type == ELEMENT) {
- string result;
-
- const size_t N=m_children.size();
- for (size_t i=0; i<N; i++) {
- result += m_children[i]->CollapseTextContents();
- }
-
- return result;
- }
- else {
- return "";
- }
-}
-
-vector<XMLNode*>
-XMLNode::GetElementsByName(const string& ns, const string& name) const
-{
- vector<XMLNode*> result;
- const size_t N=m_children.size();
- for (size_t i=0; i<N; i++) {
- XMLNode* child = m_children[i];
- if (child->m_type == ELEMENT && child->m_ns == ns && child->m_name == name) {
- result.push_back(child);
- }
- }
- return result;
-}
-
-XMLNode*
-XMLNode::GetElementByNameAt(const string& ns, const string& name, size_t index) const
-{
- vector<XMLNode*> result;
- const size_t N=m_children.size();
- for (size_t i=0; i<N; i++) {
- XMLNode* child = m_children[i];
- if (child->m_type == ELEMENT && child->m_ns == ns && child->m_name == name) {
- if (index == 0) {
- return child;
- } else {
- index--;
- }
- }
- }
- return NULL;
-}
-
-size_t
-XMLNode::CountElementsByName(const string& ns, const string& name) const
-{
- size_t result = 0;
- const size_t N=m_children.size();
- for (size_t i=0; i<N; i++) {
- XMLNode* child = m_children[i];
- if (child->m_type == ELEMENT && child->m_ns == ns && child->m_name == name) {
- result++;
- }
- }
- return result;
-}
-
-string
-XMLNode::GetAttribute(const string& ns, const string& name, const string& def) const
-{
- return XMLAttribute::Find(m_attrs, ns, name, def);
-}
-
-static void
-parse_namespace(const char* data, string* ns, string* name)
-{
- const char* p = strchr(data, NS_SEPARATOR);
- if (p != NULL) {
- ns->assign(data, p-data);
- name->assign(p+1);
- } else {
- ns->assign("");
- name->assign(data);
- }
-}
-
-static void
-convert_attrs(const char** in, vector<XMLAttribute>* out)
-{
- while (*in) {
- XMLAttribute attr;
- parse_namespace(in[0], &attr.ns, &attr.name);
- attr.value = in[1];
- out->push_back(attr);
- in += 2;
- }
-}
-
-static bool
-list_contains(const vector<XMLHandler*>& stack, XMLHandler* handler)
-{
- const size_t N = stack.size();
- for (size_t i=0; i<N; i++) {
- if (stack[i] == handler) {
- return true;
- }
- }
- return false;
-}
-
-static void XMLCALL
-start_element_handler(void *userData, const char *name, const char **attrs)
-{
- xml_handler_data* data = (xml_handler_data*)userData;
-
- XMLHandler* handler = data->stack[data->stack.size()-1];
-
- SourcePos pos(data->filename, (int)XML_GetCurrentLineNumber(data->parser));
- string nsString;
- string nameString;
- XMLHandler* next = handler;
- vector<XMLAttribute> attributes;
-
- parse_namespace(name, &nsString, &nameString);
- convert_attrs(attrs, &attributes);
-
- handler->OnStartElement(pos, nsString, nameString, attributes, &next);
-
- if (next == NULL) {
- next = handler;
- }
-
- if (next != handler) {
- next->elementPos = pos;
- next->elementNamespace = nsString;
- next->elementName = nameString;
- next->elementAttributes = attributes;
- }
-
- data->stack.push_back(next);
-}
-
-static void XMLCALL
-end_element_handler(void *userData, const char *name)
-{
- xml_handler_data* data = (xml_handler_data*)userData;
-
- XMLHandler* handler = data->stack[data->stack.size()-1];
- data->stack.pop_back();
-
- SourcePos pos(data->filename, (int)XML_GetCurrentLineNumber(data->parser));
-
- if (!list_contains(data->stack, handler)) {
- handler->OnDone(pos);
- if (data->stack.size() > 1) {
- // not top one
- delete handler;
- }
- }
-
- handler = data->stack[data->stack.size()-1];
-
- string nsString;
- string nameString;
-
- parse_namespace(name, &nsString, &nameString);
-
- handler->OnEndElement(pos, nsString, nameString);
-}
-
-static void XMLCALL
-text_handler(void *userData, const XML_Char *s, int len)
-{
- xml_handler_data* data = (xml_handler_data*)userData;
- XMLHandler* handler = data->stack[data->stack.size()-1];
- SourcePos pos(data->filename, (int)XML_GetCurrentLineNumber(data->parser));
- handler->OnText(pos, string(s, len));
-}
-
-static void XMLCALL
-comment_handler(void *userData, const char *comment)
-{
- xml_handler_data* data = (xml_handler_data*)userData;
- XMLHandler* handler = data->stack[data->stack.size()-1];
- SourcePos pos(data->filename, (int)XML_GetCurrentLineNumber(data->parser));
- handler->OnComment(pos, string(comment));
-}
-
-bool
-XMLHandler::ParseFile(const string& filename, XMLHandler* handler)
-{
- char buf[16384];
- int fd = open(filename.c_str(), O_RDONLY);
- if (fd < 0) {
- SourcePos(filename, -1).Error("Unable to open file for read: %s", strerror(errno));
- return false;
- }
-
- XML_Parser parser = XML_ParserCreateNS(NULL, NS_SEPARATOR);
- xml_handler_data state;
- state.stack.push_back(handler);
- state.parser = parser;
- state.filename = filename;
-
- XML_SetUserData(parser, &state);
- XML_SetElementHandler(parser, start_element_handler, end_element_handler);
- XML_SetCharacterDataHandler(parser, text_handler);
- XML_SetCommentHandler(parser, comment_handler);
-
- ssize_t len;
- bool done;
- do {
- len = read(fd, buf, sizeof(buf));
- done = len < (ssize_t)sizeof(buf);
- if (len < 0) {
- SourcePos(filename, -1).Error("Error reading file: %s\n", strerror(errno));
- close(fd);
- return false;
- }
- if (XML_Parse(parser, buf, len, done) == XML_STATUS_ERROR) {
- SourcePos(filename, (int)XML_GetCurrentLineNumber(parser)).Error(
- "Error parsing XML: %s\n", XML_ErrorString(XML_GetErrorCode(parser)));
- close(fd);
- return false;
- }
- } while (!done);
-
- XML_ParserFree(parser);
-
- close(fd);
-
- return true;
-}
-
-bool
-XMLHandler::ParseString(const string& filename, const string& text, XMLHandler* handler)
-{
- XML_Parser parser = XML_ParserCreateNS(NULL, NS_SEPARATOR);
- xml_handler_data state;
- state.stack.push_back(handler);
- state.parser = parser;
- state.filename = filename;
-
- XML_SetUserData(parser, &state);
- XML_SetElementHandler(parser, start_element_handler, end_element_handler);
- XML_SetCharacterDataHandler(parser, text_handler);
- XML_SetCommentHandler(parser, comment_handler);
-
- if (XML_Parse(parser, text.c_str(), text.size(), true) == XML_STATUS_ERROR) {
- SourcePos(filename, (int)XML_GetCurrentLineNumber(parser)).Error(
- "Error parsing XML: %s\n", XML_ErrorString(XML_GetErrorCode(parser)));
- return false;
- }
-
- XML_ParserFree(parser);
-
- return true;
-}
-
-XMLHandler::XMLHandler()
-{
-}
-
-XMLHandler::~XMLHandler()
-{
-}
-
-int
-XMLHandler::OnStartElement(const SourcePos& pos, const string& ns, const string& name,
- const vector<XMLAttribute>& attrs, XMLHandler** next)
-{
- return 0;
-}
-
-int
-XMLHandler::OnEndElement(const SourcePos& pos, const string& ns, const string& name)
-{
- return 0;
-}
-
-int
-XMLHandler::OnText(const SourcePos& pos, const string& text)
-{
- return 0;
-}
-
-int
-XMLHandler::OnComment(const SourcePos& pos, const string& text)
-{
- return 0;
-}
-
-int
-XMLHandler::OnDone(const SourcePos& pos)
-{
- return 0;
-}
-
-TopElementHandler::TopElementHandler(const string& ns, const string& name, XMLHandler* next)
- :m_ns(ns),
- m_name(name),
- m_next(next)
-{
-}
-
-int
-TopElementHandler::OnStartElement(const SourcePos& pos, const string& ns, const string& name,
- const vector<XMLAttribute>& attrs, XMLHandler** next)
-{
- *next = m_next;
- return 0;
-}
-
-int
-TopElementHandler::OnEndElement(const SourcePos& pos, const string& ns, const string& name)
-{
- return 0;
-}
-
-int
-TopElementHandler::OnText(const SourcePos& pos, const string& text)
-{
- return 0;
-}
-
-int
-TopElementHandler::OnDone(const SourcePos& pos)
-{
- return 0;
-}
-
-
-NodeHandler::NodeHandler(XMLNode* root, int pretty)
- :m_root(root),
- m_pretty(pretty)
-{
- if (root != NULL) {
- m_nodes.push_back(root);
- }
-}
-
-NodeHandler::~NodeHandler()
-{
-}
-
-int
-NodeHandler::OnStartElement(const SourcePos& pos, const string& ns, const string& name,
- const vector<XMLAttribute>& attrs, XMLHandler** next)
-{
- int pretty;
- if (XMLAttribute::Find(attrs, XMLNS_XMLNS, "space", "") == "preserve") {
- pretty = XMLNode::EXACT;
- } else {
- if (m_root == NULL) {
- pretty = m_pretty;
- } else {
- pretty = m_nodes[m_nodes.size()-1]->Pretty();
- }
- }
- XMLNode* n = XMLNode::NewElement(pos, ns, name, attrs, pretty);
- if (m_root == NULL) {
- m_root = n;
- } else {
- m_nodes[m_nodes.size()-1]->EditChildren().push_back(n);
- }
- m_nodes.push_back(n);
- return 0;
-}
-
-int
-NodeHandler::OnEndElement(const SourcePos& pos, const string& ns, const string& name)
-{
- m_nodes.pop_back();
- return 0;
-}
-
-int
-NodeHandler::OnText(const SourcePos& pos, const string& text)
-{
- if (m_root == NULL) {
- return 1;
- }
- XMLNode* n = XMLNode::NewText(pos, text, m_nodes[m_nodes.size()-1]->Pretty());
- m_nodes[m_nodes.size()-1]->EditChildren().push_back(n);
- return 0;
-}
-
-int
-NodeHandler::OnComment(const SourcePos& pos, const string& text)
-{
- return 0;
-}
-
-int
-NodeHandler::OnDone(const SourcePos& pos)
-{
- return 0;
-}
-
-XMLNode*
-NodeHandler::ParseFile(const string& filename, int pretty)
-{
- NodeHandler handler(NULL, pretty);
- if (!XMLHandler::ParseFile(filename, &handler)) {
- fprintf(stderr, "error parsing file: %s\n", filename.c_str());
- return NULL;
- }
- return handler.Root();
-}
-
-XMLNode*
-NodeHandler::ParseString(const string& filename, const string& text, int pretty)
-{
- NodeHandler handler(NULL, pretty);
- if (!XMLHandler::ParseString(filename, text, &handler)) {
- fprintf(stderr, "error parsing file: %s\n", filename.c_str());
- return NULL;
- }
- return handler.Root();
-}
-
-
diff --git a/tools/localize/XMLHandler.h b/tools/localize/XMLHandler.h
deleted file mode 100644
index 324385f..0000000
--- a/tools/localize/XMLHandler.h
+++ /dev/null
@@ -1,198 +0,0 @@
-#ifndef XML_H
-#define XML_H
-
-#include "SourcePos.h"
-
-#include <algorithm>
-#include <string>
-#include <vector>
-#include <map>
-
-#define XMLNS_XMLNS "http://www.w3.org/XML/1998/namespace"
-
-using namespace std;
-
-string trim_string(const string& str);
-
-struct XMLAttribute
-{
- string ns;
- string name;
- string value;
-
- XMLAttribute();
- XMLAttribute(const XMLAttribute& that);
- XMLAttribute(string ns, string name, string value);
- ~XMLAttribute();
-
- int Compare(const XMLAttribute& that) const;
-
- inline bool operator<(const XMLAttribute& that) const { return Compare(that) < 0; }
- inline bool operator<=(const XMLAttribute& that) const { return Compare(that) <= 0; }
- inline bool operator==(const XMLAttribute& that) const { return Compare(that) == 0; }
- inline bool operator!=(const XMLAttribute& that) const { return Compare(that) != 0; }
- inline bool operator>=(const XMLAttribute& that) const { return Compare(that) >= 0; }
- inline bool operator>(const XMLAttribute& that) const { return Compare(that) > 0; }
-
- static string Find(const vector<XMLAttribute>& list,
- const string& ns, const string& name, const string& def);
-};
-
-class XMLNamespaceMap
-{
-public:
- XMLNamespaceMap();
- XMLNamespaceMap(char const*const* nspaces);
- string Get(const string& ns) const;
- string GetPrefix(const string& ns) const;
- void AddToAttributes(vector<XMLAttribute>* attrs) const;
-private:
- map<string,string> m_map;
-};
-
-struct XMLNode
-{
-public:
- enum {
- EXACT = 0,
- PRETTY = 1
- };
-
- enum {
- ELEMENT = 0,
- TEXT = 1
- };
-
- static XMLNode* NewElement(const SourcePos& pos, const string& ns, const string& name,
- const vector<XMLAttribute>& attrs, int pretty);
- static XMLNode* NewText(const SourcePos& pos, const string& text, int pretty);
-
- ~XMLNode();
-
- // a deep copy
- XMLNode* Clone() const;
-
- inline int Type() const { return m_type; }
- inline int Pretty() const { return m_pretty; }
- void SetPrettyRecursive(int value);
- string ContentsToString(const XMLNamespaceMap& nspaces) const;
- string ToString(const XMLNamespaceMap& nspaces) const;
- string OpenTagToString(const XMLNamespaceMap& nspaces, int pretty) const;
-
- string CollapseTextContents() const;
-
- inline const SourcePos& Position() const { return m_pos; }
-
- // element
- inline string Namespace() const { return m_ns; }
- inline string Name() const { return m_name; }
- inline void SetName(const string& ns, const string& n) { m_ns = ns; m_name = n; }
- inline const vector<XMLAttribute>& Attributes() const { return m_attrs; }
- inline vector<XMLAttribute>& EditAttributes() { return m_attrs; }
- inline const vector<XMLNode*>& Children() const { return m_children; }
- inline vector<XMLNode*>& EditChildren() { return m_children; }
- vector<XMLNode*> GetElementsByName(const string& ns, const string& name) const;
- XMLNode* GetElementByNameAt(const string& ns, const string& name, size_t index) const;
- size_t CountElementsByName(const string& ns, const string& name) const;
- string GetAttribute(const string& ns, const string& name, const string& def) const;
-
- // text
- inline string Text() const { return m_text; }
-
-private:
- XMLNode();
- XMLNode(const XMLNode&);
-
- string contents_to_string(const XMLNamespaceMap& nspaces, const string& indent) const;
- string to_string(const XMLNamespaceMap& nspaces, const string& indent) const;
- string open_tag_to_string(const XMLNamespaceMap& nspaces, const string& indent,
- int pretty) const;
-
- int m_type;
- int m_pretty;
- SourcePos m_pos;
-
- // element
- string m_ns;
- string m_name;
- vector<XMLAttribute> m_attrs;
- vector<XMLNode*> m_children;
-
- // text
- string m_text;
-};
-
-class XMLHandler
-{
-public:
- // information about the element that started us
- SourcePos elementPos;
- string elementNamespace;
- string elementName;
- vector<XMLAttribute> elementAttributes;
-
- XMLHandler();
- virtual ~XMLHandler();
-
- XMLHandler* parent;
-
- virtual int OnStartElement(const SourcePos& pos, const string& ns, const string& name,
- const vector<XMLAttribute>& attrs, XMLHandler** next);
- virtual int OnEndElement(const SourcePos& pos, const string& ns, const string& name);
- virtual int OnText(const SourcePos& pos, const string& text);
- virtual int OnComment(const SourcePos& pos, const string& text);
- virtual int OnDone(const SourcePos& pos);
-
- static bool ParseFile(const string& filename, XMLHandler* handler);
- static bool ParseString(const string& filename, const string& text, XMLHandler* handler);
-};
-
-class TopElementHandler : public XMLHandler
-{
-public:
- TopElementHandler(const string& ns, const string& name, XMLHandler* next);
-
- virtual int OnStartElement(const SourcePos& pos, const string& ns, const string& name,
- const vector<XMLAttribute>& attrs, XMLHandler** next);
- virtual int OnEndElement(const SourcePos& pos, const string& ns, const string& name);
- virtual int OnText(const SourcePos& pos, const string& text);
- virtual int OnDone(const SourcePos& endPos);
-
-private:
- string m_ns;
- string m_name;
- XMLHandler* m_next;
-};
-
-class NodeHandler : public XMLHandler
-{
-public:
- // after it's done, you own everything created and added to root
- NodeHandler(XMLNode* root, int pretty);
- ~NodeHandler();
-
- virtual int OnStartElement(const SourcePos& pos, const string& ns, const string& name,
- const vector<XMLAttribute>& attrs, XMLHandler** next);
- virtual int OnEndElement(const SourcePos& pos, const string& ns, const string& name);
- virtual int OnText(const SourcePos& pos, const string& text);
- virtual int OnComment(const SourcePos& pos, const string& text);
- virtual int OnDone(const SourcePos& endPos);
-
- inline XMLNode* Root() const { return m_root; }
-
- static XMLNode* ParseFile(const string& filename, int pretty);
- static XMLNode* ParseString(const string& filename, const string& text, int pretty);
-
-private:
- XMLNode* m_root;
- int m_pretty;
- vector<XMLNode*> m_nodes;
-};
-
-template <class T>
-static void delete_object(T* obj)
-{
- delete obj;
-}
-
-#endif // XML_H
diff --git a/tools/localize/XMLHandler_test.cpp b/tools/localize/XMLHandler_test.cpp
deleted file mode 100644
index 1c81c0c..0000000
--- a/tools/localize/XMLHandler_test.cpp
+++ /dev/null
@@ -1,133 +0,0 @@
-#include "XMLHandler.h"
-#include <stdio.h>
-#include <unistd.h>
-#include <fcntl.h>
-
-const char *const NS_MAP[] = {
- "xml", XMLNS_XMLNS,
- NULL, NULL
-};
-
-const XMLNamespaceMap NO_NAMESPACES(NS_MAP);
-
-char const*const EXPECTED_EXACT =
- "<ASDF>\n"
- " <a id=\"system\" old-cl=\"1\" new-cl=\"43019\">\n"
- " <app dir=\"apps/common\" />\n"
- " </a>\n"
- " <a id=\"samples\" old-cl=\"1\" new-cl=\"43019\">asdf\n"
- " <app dir=\"samples/NotePad\" />\n"
- " <app dir=\"samples/LunarLander\" />\n"
- " <something>a<b>,</b>b </something>\n"
- " <exact xml:space=\"preserve\">a<b>,</b>b </exact>\n"
- " </a>\n"
- "</ASDF>\n";
-
-char const*const EXPECTED_PRETTY =
- "<ASDF>\n"
- " <a id=\"system\"\n"
- " old-cl=\"1\"\n"
- " new-cl=\"43019\">\n"
- " <app dir=\"apps/common\" />\n"
- " </a>\n"
- " <a id=\"samples\"\n"
- " old-cl=\"1\"\n"
- " new-cl=\"43019\">asdf\n"
- " <app dir=\"samples/NotePad\" />\n"
- " <app dir=\"samples/LunarLander\" />\n"
- " <something>a\n"
- " <b>,\n"
- " </b>b \n"
- " </something>\n"
- " <exact xml:space=\"preserve\">a<b>,</b>b </exact>\n"
- " </a>\n"
- "</ASDF>\n";
-
-static string
-read_file(const string& filename)
-{
- char buf[1024];
- int fd = open(filename.c_str(), O_RDONLY);
- if (fd < 0) {
- return "";
- }
- string result;
- while (true) {
- ssize_t len = read(fd, buf, sizeof(buf)-1);
- buf[len] = '\0';
- if (len <= 0) {
- break;
- }
- result.append(buf, len);
- }
- close(fd);
- return result;
-}
-
-static int
-ParseFile_EXACT_test()
-{
- XMLNode* root = NodeHandler::ParseFile("testdata/xml.xml", XMLNode::EXACT);
- if (root == NULL) {
- return 1;
- }
- string result = root->ToString(NO_NAMESPACES);
- delete root;
- //printf("[[%s]]\n", result.c_str());
- return result == EXPECTED_EXACT;
-}
-
-static int
-ParseFile_PRETTY_test()
-{
- XMLNode* root = NodeHandler::ParseFile("testdata/xml.xml", XMLNode::PRETTY);
- if (root == NULL) {
- return 1;
- }
- string result = root->ToString(NO_NAMESPACES);
- delete root;
- //printf("[[%s]]\n", result.c_str());
- return result == EXPECTED_PRETTY;
-}
-
-static int
-ParseString_EXACT_test()
-{
- string text = read_file("testdata/xml.xml");
- XMLNode* root = NodeHandler::ParseString("testdata/xml.xml", text, XMLNode::EXACT);
- if (root == NULL) {
- return 1;
- }
- string result = root->ToString(NO_NAMESPACES);
- delete root;
- //printf("[[%s]]\n", result.c_str());
- return result == EXPECTED_EXACT;
-}
-
-static int
-ParseString_PRETTY_test()
-{
- string text = read_file("testdata/xml.xml");
- XMLNode* root = NodeHandler::ParseString("testdata/xml.xml", text, XMLNode::PRETTY);
- if (root == NULL) {
- return 1;
- }
- string result = root->ToString(NO_NAMESPACES);
- delete root;
- //printf("[[%s]]\n", result.c_str());
- return result == EXPECTED_PRETTY;
-}
-
-int
-XMLHandler_test()
-{
- int err = 0;
- bool all = true;
-
- if (all) err |= ParseFile_EXACT_test();
- if (all) err |= ParseFile_PRETTY_test();
- if (all) err |= ParseString_EXACT_test();
- if (all) err |= ParseString_PRETTY_test();
-
- return err;
-}
diff --git a/tools/localize/XMLNode.h b/tools/localize/XMLNode.h
deleted file mode 100644
index bfb9f55..0000000
--- a/tools/localize/XMLNode.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifndef XMLNODE_H
-#define XMLNODE_H
-
-#include <string>
-
-using namespace std;
-
-struct XMLAttribute
-{
- string ns;
- string name;
- string value;
-
- static string Find(const vector<XMLAttribute>& list,
- const string& ns, const string& name, const string& def);
-};
-
-
-#endif // XMLNODE_H
diff --git a/tools/localize/file_utils.cpp b/tools/localize/file_utils.cpp
deleted file mode 100644
index 775ce2f..0000000
--- a/tools/localize/file_utils.cpp
+++ /dev/null
@@ -1,181 +0,0 @@
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include "file_utils.h"
-#include "Perforce.h"
-#include <utils/String8.h>
-#include <sys/fcntl.h>
-#include <sys/stat.h>
-#include <errno.h>
-#include <string.h>
-#include <stdlib.h>
-#include <cstdio>
-#include "log.h"
-
-using namespace android;
-using namespace std;
-
-static string
-parent_dir(const string& path)
-{
- return string(String8(path.c_str()).getPathDir().string());
-}
-
-static int
-mkdirs(const char* last)
-{
- String8 dest;
- const char* s = last-1;
- int err;
- do {
- s++;
- if (s > last && (*s == '.' || *s == 0)) {
- String8 part(last, s-last);
- dest.appendPath(part);
-#ifdef HAVE_MS_C_RUNTIME
- err = _mkdir(dest.string());
-#else
- err = mkdir(dest.string(), S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IXGRP);
-#endif
- if (err != 0) {
- return err;
- }
- last = s+1;
- }
- } while (*s);
- return 0;
-}
-
-string
-translated_file_name(const string& file, const string& locale)
-{
- const char* str = file.c_str();
- const char* p = str + file.length();
- const char* rest = NULL;
- const char* values = p;
-
- while (p > str) {
- p--;
- if (*p == '/') {
- rest = values;
- values = p;
- if (0 == strncmp("values", values+1, rest-values-1)) {
- break;
- }
- }
- }
- values++;
-
- string result(str, values-str);
- result.append(values, rest-values);
-
- string language, region;
- if (locale == "") {
- language = "";
- region = "";
- }
- else if (!split_locale(locale, &language, ®ion)) {
- return "";
- }
-
- if (language != "") {
- result += '-';
- result += language;
- }
- if (region != "") {
- result += "-r";
- result += region;
- }
-
- result += rest;
-
- return result;
-}
-
-ValuesFile*
-get_values_file(const string& filename, const Configuration& configuration,
- int version, const string& versionString, bool printOnFailure)
-{
- int err;
- string text;
-
- log_printf("get_values_file filename=%s\n", filename.c_str());
- err = Perforce::GetFile(filename, versionString, &text, printOnFailure);
- if (err != 0 || text == "") {
- return NULL;
- }
-
- ValuesFile* result = ValuesFile::ParseString(filename, text, configuration, version,
- versionString);
- if (result == NULL) {
- fprintf(stderr, "unable to parse file: %s\n", filename.c_str());
- exit(1);
- }
- return result;
-}
-
-ValuesFile*
-get_local_values_file(const string& filename, const Configuration& configuration,
- int version, const string& versionString, bool printOnFailure)
-{
- int err;
- string text;
- char buf[2049];
- int fd;
- ssize_t amt;
-
- fd = open(filename.c_str(), O_RDONLY);
- if (fd == -1) {
- fprintf(stderr, "unable to open file: %s\n", filename.c_str());
- return NULL;
- }
-
- while ((amt = read(fd, buf, sizeof(buf)-1)) > 0) {
- text.append(buf, amt);
- }
-
- close(fd);
-
- if (text == "") {
- return NULL;
- }
-
- ValuesFile* result = ValuesFile::ParseString(filename, text, configuration, version,
- versionString);
- if (result == NULL) {
- fprintf(stderr, "unable to parse file: %s\n", filename.c_str());
- exit(1);
- }
- return result;
-}
-
-void
-print_file_status(size_t j, size_t J, const string& message)
-{
- printf("\r%s file %zd of %zd...", message.c_str(), j, J);
- fflush(stdout);
-}
-
-int
-write_to_file(const string& filename, const string& text)
-{
- mkdirs(parent_dir(filename).c_str());
- int fd = open(filename.c_str(), O_RDWR | O_CREAT | O_TRUNC, 0666);
- if (fd < 0) {
- fprintf(stderr, "unable to open file for write (%s): %s\n", strerror(errno),
- filename.c_str());
- return -1;
- }
-
- ssize_t amt = write(fd, text.c_str(), text.length());
-
- close(fd);
-
- if (amt < 0) {
- return amt;
- }
- return amt == (ssize_t)text.length() ? 0 : -1;
-}
-
-
diff --git a/tools/localize/file_utils.h b/tools/localize/file_utils.h
deleted file mode 100644
index 7706587..0000000
--- a/tools/localize/file_utils.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef FILE_UTILS_H
-#define FILE_UTILS_H
-
-#include "ValuesFile.h"
-#include "Configuration.h"
-#include <string>
-#include <cstdio>
-
-using namespace std;
-
-string translated_file_name(const string& file, const string& locale);
-
-ValuesFile* get_values_file(const string& filename, const Configuration& configuration,
- int version, const string& versionString, bool printOnFailure);
-ValuesFile* get_local_values_file(const string& filename, const Configuration& configuration,
- int version, const string& versionString, bool printOnFailure);
-
-void print_file_status(size_t j, size_t J, const string& message = "Reading");
-int write_to_file(const string& filename, const string& text);
-
-
-#endif // FILE_UTILS_H
diff --git a/tools/localize/localize.cpp b/tools/localize/localize.cpp
deleted file mode 100644
index 68c03b6..0000000
--- a/tools/localize/localize.cpp
+++ /dev/null
@@ -1,768 +0,0 @@
-#include "SourcePos.h"
-#include "ValuesFile.h"
-#include "XLIFFFile.h"
-#include "Perforce.h"
-#include "merge_res_and_xliff.h"
-#include "localize.h"
-#include "file_utils.h"
-#include "res_check.h"
-#include "xmb.h"
-
-#include <host/pseudolocalize.h>
-
-#include <stdlib.h>
-#include <stdarg.h>
-#include <sstream>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-using namespace std;
-
-FILE* g_logFile = NULL;
-
-int test();
-
-int
-read_settings(const string& filename, map<string,Settings>* result, const string& rootDir)
-{
- XMLNode* root = NodeHandler::ParseFile(filename, XMLNode::PRETTY);
- if (root == NULL) {
- SourcePos(filename, -1).Error("Error reading file.");
- return 1;
- }
-
- // <configuration>
- vector<XMLNode*> configNodes = root->GetElementsByName("", "configuration");
- const size_t I = configNodes.size();
- for (size_t i=0; i<I; i++) {
- const XMLNode* configNode = configNodes[i];
-
- Settings settings;
- settings.id = configNode->GetAttribute("", "id", "");
- if (settings.id == "") {
- configNode->Position().Error("<configuration> needs an id attribute.");
- delete root;
- return 1;
- }
-
- settings.oldVersion = configNode->GetAttribute("", "old-cl", "");
-
- settings.currentVersion = configNode->GetAttribute("", "new-cl", "");
- if (settings.currentVersion == "") {
- configNode->Position().Error("<configuration> needs a new-cl attribute.");
- delete root;
- return 1;
- }
-
- // <app>
- vector<XMLNode*> appNodes = configNode->GetElementsByName("", "app");
-
- const size_t J = appNodes.size();
- for (size_t j=0; j<J; j++) {
- const XMLNode* appNode = appNodes[j];
-
- string dir = appNode->GetAttribute("", "dir", "");
- if (dir == "") {
- appNode->Position().Error("<app> needs a dir attribute.");
- delete root;
- return 1;
- }
-
- settings.apps.push_back(dir);
- }
-
- // <reject>
- vector<XMLNode*> rejectNodes = configNode->GetElementsByName("", "reject");
-
- const size_t K = rejectNodes.size();
- for (size_t k=0; k<K; k++) {
- const XMLNode* rejectNode = rejectNodes[k];
-
- Reject reject;
-
- reject.file = rejectNode->GetAttribute("", "file", "");
- if (reject.file == "") {
- rejectNode->Position().Error("<reject> needs a file attribute.");
- delete root;
- return 1;
- }
- string f = reject.file;
- reject.file = rootDir;
- reject.file += '/';
- reject.file += f;
-
- reject.name = rejectNode->GetAttribute("", "name", "");
- if (reject.name == "") {
- rejectNode->Position().Error("<reject> needs a name attribute.");
- delete root;
- return 1;
- }
-
- reject.comment = trim_string(rejectNode->CollapseTextContents());
-
- settings.reject.push_back(reject);
- }
-
- (*result)[settings.id] = settings;
- }
-
- delete root;
- return 0;
-}
-
-
-static void
-ValuesFile_to_XLIFFFile(const ValuesFile* values, XLIFFFile* xliff, const string& englishFilename)
-{
- const set<StringResource>& strings = values->GetStrings();
- for (set<StringResource>::const_iterator it=strings.begin(); it!=strings.end(); it++) {
- StringResource res = *it;
- res.file = englishFilename;
- xliff->AddStringResource(res);
- }
-}
-
-static bool
-contains_reject(const Settings& settings, const string& file, const TransUnit& tu)
-{
- const string name = tu.id;
- const vector<Reject>& reject = settings.reject;
- const size_t I = reject.size();
- for (size_t i=0; i<I; i++) {
- const Reject& r = reject[i];
- if (r.file == file && r.name == name) {
- return true;
- }
- }
- return false;
-}
-
-/**
- * If it's been rejected, then we keep whatever info we have.
- *
- * Implements this truth table:
- *
- * S AT AS Keep
- * -----------------------
- * 0 0 0 0 (this case can't happen)
- * 0 0 1 0 (it was there, never translated, and removed)
- * 0 1 0 0 (somehow it got translated, but it was removed)
- * 0 1 1 0 (it was removed after having been translated)
- *
- * 1 0 0 1 (it was just added)
- * 1 0 1 1 (it was added, has been changed, but it never got translated)
- * 1 1 0 1 (somehow it got translated, but we don't know based on what)
- * 1 1 1 0/1 (it's in both. 0 if S=AS b/c there's no need to retranslate if they're
- * the same. 1 if S!=AS because S changed, so it should be retranslated)
- *
- * The first four are cases where, whatever happened in the past, the string isn't there
- * now, so it shouldn't be in the XLIFF file.
- *
- * For cases 4 and 5, the string has never been translated, so get it translated.
- *
- * For case 6, it's unclear where the translated version came from, so we're conservative
- * and send it back for them to have another shot at.
- *
- * For case 7, we have some data. We have two choices. We could rely on the translator's
- * translation memory or tools to notice that the strings haven't changed, and populate the
- * <target> field themselves. Or if the string hasn't changed since last time, we can just
- * not even tell them about it. As the project nears the end, it will be convenient to see
- * the xliff files reducing in size, so we pick the latter. Obviously, if the string has
- * changed, then we need to get it retranslated.
- */
-bool
-keep_this_trans_unit(const string& file, const TransUnit& unit, void* cookie)
-{
- const Settings* settings = reinterpret_cast<const Settings*>(cookie);
-
- if (contains_reject(*settings, file, unit)) {
- return true;
- }
-
- if (unit.source.id == "") {
- return false;
- }
- if (unit.altTarget.id == "" || unit.altSource.id == "") {
- return true;
- }
- return unit.source.value->ContentsToString(XLIFF_NAMESPACES)
- != unit.altSource.value->ContentsToString(XLIFF_NAMESPACES);
-}
-
-int
-validate_config(const string& settingsFile, const map<string,Settings>& settings,
- const string& config)
-{
- if (settings.find(config) == settings.end()) {
- SourcePos(settingsFile, -1).Error("settings file does not contain setting: %s\n",
- config.c_str());
- return 1;
- }
- return 0;
-}
-
-int
-validate_configs(const string& settingsFile, const map<string,Settings>& settings,
- const vector<string>& configs)
-{
- int err = 0;
- for (size_t i=0; i<configs.size(); i++) {
- string config = configs[i];
- err |= validate_config(settingsFile, settings, config);
- }
- return err;
-}
-
-int
-select_files(vector<string> *resFiles, const string& config,
- const map<string,Settings>& settings, const string& rootDir)
-{
- int err;
- vector<vector<string> > allResFiles;
- vector<string> configs;
- configs.push_back(config);
- err = select_files(&allResFiles, configs, settings, rootDir);
- if (err == 0) {
- *resFiles = allResFiles[0];
- }
- return err;
-}
-
-int
-select_files(vector<vector<string> > *allResFiles, const vector<string>& configs,
- const map<string,Settings>& settings, const string& rootDir)
-{
- int err;
- printf("Selecting files...");
- fflush(stdout);
-
- for (size_t i=0; i<configs.size(); i++) {
- const string& config = configs[i];
- const Settings& setting = settings.find(config)->second;
-
- vector<string> resFiles;
- err = Perforce::GetResourceFileNames(setting.currentVersion, rootDir,
- setting.apps, &resFiles, true);
- if (err != 0) {
- fprintf(stderr, "error with perforce. bailing\n");
- return err;
- }
-
- allResFiles->push_back(resFiles);
- }
- return 0;
-}
-
-static int
-do_export(const string& settingsFile, const string& rootDir, const string& outDir,
- const string& targetLocale, const vector<string>& configs)
-{
- bool success = true;
- int err;
-
- if (false) {
- printf("settingsFile=%s\n", settingsFile.c_str());
- printf("rootDir=%s\n", rootDir.c_str());
- printf("outDir=%s\n", outDir.c_str());
- for (size_t i=0; i<configs.size(); i++) {
- printf("config[%zd]=%s\n", i, configs[i].c_str());
- }
- }
-
- map<string,Settings> settings;
- err = read_settings(settingsFile, &settings, rootDir);
- if (err != 0) {
- return err;
- }
-
- err = validate_configs(settingsFile, settings, configs);
- if (err != 0) {
- return err;
- }
-
- vector<vector<string> > allResFiles;
- err = select_files(&allResFiles, configs, settings, rootDir);
- if (err != 0) {
- return err;
- }
-
- size_t totalFileCount = 0;
- for (size_t i=0; i<allResFiles.size(); i++) {
- totalFileCount += allResFiles[i].size();
- }
- totalFileCount *= 3; // we try all 3 versions of the file
-
- size_t fileProgress = 0;
- vector<Stats> stats;
- vector<pair<string,XLIFFFile*> > xliffs;
-
- for (size_t i=0; i<configs.size(); i++) {
- const string& config = configs[i];
- const Settings& setting = settings[config];
-
- if (false) {
- fprintf(stderr, "Configuration: %s (%zd of %zd)\n", config.c_str(), i+1,
- configs.size());
- fprintf(stderr, " Old CL: %s\n", setting.oldVersion.c_str());
- fprintf(stderr, " Current CL: %s\n", setting.currentVersion.c_str());
- }
-
- Configuration english;
- english.locale = "en_US";
- Configuration translated;
- translated.locale = targetLocale;
- XLIFFFile* xliff = XLIFFFile::Create(english, translated, setting.currentVersion);
-
- const vector<string>& resFiles = allResFiles[i];
- const size_t J = resFiles.size();
- for (size_t j=0; j<J; j++) {
- string resFile = resFiles[j];
-
- // parse the files into a ValuesFile
- // pull out the strings and add them to the XLIFFFile
-
- // current file
- print_file_status(++fileProgress, totalFileCount);
- ValuesFile* currentFile = get_values_file(resFile, english, CURRENT_VERSION,
- setting.currentVersion, true);
- if (currentFile != NULL) {
- ValuesFile_to_XLIFFFile(currentFile, xliff, resFile);
- //printf("currentFile=[%s]\n", currentFile->ToString().c_str());
- } else {
- fprintf(stderr, "error reading file %s@%s\n", resFile.c_str(),
- setting.currentVersion.c_str());
- success = false;
- }
-
- // old file
- print_file_status(++fileProgress, totalFileCount);
- ValuesFile* oldFile = get_values_file(resFile, english, OLD_VERSION,
- setting.oldVersion, false);
- if (oldFile != NULL) {
- ValuesFile_to_XLIFFFile(oldFile, xliff, resFile);
- //printf("oldFile=[%s]\n", oldFile->ToString().c_str());
- }
-
- // translated version
- // (get the head of the tree for the most recent translation, but it's considered
- // the old one because the "current" one hasn't been made yet, and this goes into
- // the <alt-trans> tag if necessary
- print_file_status(++fileProgress, totalFileCount);
- string transFilename = translated_file_name(resFile, targetLocale);
- ValuesFile* transFile = get_values_file(transFilename, translated, OLD_VERSION,
- setting.currentVersion, false);
- if (transFile != NULL) {
- ValuesFile_to_XLIFFFile(transFile, xliff, resFile);
- }
-
- delete currentFile;
- delete oldFile;
- delete transFile;
- }
-
- Stats beforeFilterStats = xliff->GetStats(config);
-
- // run through the XLIFFFile and strip out TransUnits that have identical
- // old and current source values and are not in the reject list, or just
- // old values and no source values
- xliff->Filter(keep_this_trans_unit, (void*)&setting);
-
- Stats afterFilterStats = xliff->GetStats(config);
- afterFilterStats.totalStrings = beforeFilterStats.totalStrings;
-
- // add the reject comments
- for (vector<Reject>::const_iterator reject = setting.reject.begin();
- reject != setting.reject.end(); reject++) {
- TransUnit* tu = xliff->EditTransUnit(reject->file, reject->name);
- tu->rejectComment = reject->comment;
- }
-
- // config-locale-current_cl.xliff
- stringstream filename;
- if (outDir != "") {
- filename << outDir << '/';
- }
- filename << config << '-' << targetLocale << '-' << setting.currentVersion << ".xliff";
- xliffs.push_back(pair<string,XLIFFFile*>(filename.str(), xliff));
-
- stats.push_back(afterFilterStats);
- }
-
- // today is a good day to die
- if (!success || SourcePos::HasErrors()) {
- return 1;
- }
-
- // write the XLIFF files
- printf("\nWriting %zd file%s...\n", xliffs.size(), xliffs.size() == 1 ? "" : "s");
- for (vector<pair<string,XLIFFFile*> >::iterator it = xliffs.begin(); it != xliffs.end(); it++) {
- const string& filename = it->first;
- XLIFFFile* xliff = it->second;
- string text = xliff->ToString();
- write_to_file(filename, text);
- }
-
- // the stats
- printf("\n"
- " to without total\n"
- " config files translate comments strings\n"
- "-----------------------------------------------------------------------\n");
- Stats totals;
- totals.config = "total";
- totals.files = 0;
- totals.toBeTranslated = 0;
- totals.noComments = 0;
- totals.totalStrings = 0;
- for (vector<Stats>::iterator it=stats.begin(); it!=stats.end(); it++) {
- string cfg = it->config;
- if (cfg.length() > 20) {
- cfg.resize(20);
- }
- printf(" %-20s %-9zd %-9zd %-9zd %-19zd\n", cfg.c_str(), it->files,
- it->toBeTranslated, it->noComments, it->totalStrings);
- totals.files += it->files;
- totals.toBeTranslated += it->toBeTranslated;
- totals.noComments += it->noComments;
- totals.totalStrings += it->totalStrings;
- }
- if (stats.size() > 1) {
- printf("-----------------------------------------------------------------------\n"
- " %-20s %-9zd %-9zd %-9zd %-19zd\n", totals.config.c_str(), totals.files,
- totals.toBeTranslated, totals.noComments, totals.totalStrings);
- }
- printf("\n");
- return 0;
-}
-
-struct PseudolocalizeSettings {
- XLIFFFile* xliff;
- bool expand;
-};
-
-
-string
-pseudolocalize_string(const string& source, const PseudolocalizeSettings* settings)
-{
- return pseudolocalize_string(source);
-}
-
-static XMLNode*
-pseudolocalize_xml_node(const XMLNode* source, const PseudolocalizeSettings* settings)
-{
- if (source->Type() == XMLNode::TEXT) {
- return XMLNode::NewText(source->Position(), pseudolocalize_string(source->Text(), settings),
- source->Pretty());
- } else {
- XMLNode* target;
- if (source->Namespace() == XLIFF_XMLNS && source->Name() == "g") {
- // XXX don't translate these
- target = XMLNode::NewElement(source->Position(), source->Namespace(),
- source->Name(), source->Attributes(), source->Pretty());
- } else {
- target = XMLNode::NewElement(source->Position(), source->Namespace(),
- source->Name(), source->Attributes(), source->Pretty());
- }
-
- const vector<XMLNode*>& children = source->Children();
- const size_t I = children.size();
- for (size_t i=0; i<I; i++) {
- target->EditChildren().push_back(pseudolocalize_xml_node(children[i], settings));
- }
-
- return target;
- }
-}
-
-void
-pseudolocalize_trans_unit(const string&file, TransUnit* unit, void* cookie)
-{
- const PseudolocalizeSettings* settings = (PseudolocalizeSettings*)cookie;
-
- const StringResource& source = unit->source;
- StringResource* target = &unit->target;
- *target = source;
-
- target->config = settings->xliff->TargetConfig();
-
- delete target->value;
- target->value = pseudolocalize_xml_node(source.value, settings);
-}
-
-int
-pseudolocalize_xliff(XLIFFFile* xliff, bool expand)
-{
- PseudolocalizeSettings settings;
-
- settings.xliff = xliff;
- settings.expand = expand;
- xliff->Map(pseudolocalize_trans_unit, &settings);
- return 0;
-}
-
-static int
-do_pseudo(const string& infile, const string& outfile, bool expand)
-{
- int err;
-
- XLIFFFile* xliff = XLIFFFile::Parse(infile);
- if (xliff == NULL) {
- return 1;
- }
-
- pseudolocalize_xliff(xliff, expand);
-
- err = write_to_file(outfile, xliff->ToString());
-
- delete xliff;
-
- return err;
-}
-
-void
-log_printf(const char *fmt, ...)
-{
- int ret;
- va_list ap;
-
- if (g_logFile != NULL) {
- va_start(ap, fmt);
- ret = vfprintf(g_logFile, fmt, ap);
- va_end(ap);
- fflush(g_logFile);
- }
-}
-
-void
-close_log_file()
-{
- if (g_logFile != NULL) {
- fclose(g_logFile);
- }
-}
-
-void
-open_log_file(const char* file)
-{
- g_logFile = fopen(file, "w");
- printf("log file: %s -- %p\n", file, g_logFile);
- atexit(close_log_file);
-}
-
-static int
-usage()
-{
- fprintf(stderr,
- "usage: localize export OPTIONS CONFIGS...\n"
- " REQUIRED OPTIONS\n"
- " --settings SETTINGS The settings file to use. See CONFIGS below.\n"
- " --root TREE_ROOT The location in Perforce of the files. e.g. //device\n"
- " --target LOCALE The target locale. See LOCALES below.\n"
- "\n"
- " OPTIONAL OPTIONS\n"
- " --out DIR Directory to put the output files. Defaults to the\n"
- " current directory if not supplied. Files are\n"
- " named as follows:\n"
- " CONFIG-LOCALE-CURRENT_CL.xliff\n"
- "\n"
- "\n"
- "usage: localize import XLIFF_FILE...\n"
- "\n"
- "Import a translated XLIFF file back into the tree.\n"
- "\n"
- "\n"
- "usage: localize xlb XMB_FILE VALUES_FILES...\n"
- "\n"
- "Read resource files from the tree file and write the corresponding XLB file\n"
- "\n"
- "Supply all of the android resource files (values files) to export after that.\n"
- "\n"
- "\n"
- "\n"
- "CONFIGS\n"
- "\n"
- "LOCALES\n"
- "Locales are specified in the form en_US They will be processed correctly\n"
- "to locate the resouce files in the tree.\n"
- "\n"
- "\n"
- "usage: localize pseudo OPTIONS INFILE [OUTFILE]\n"
- " OPTIONAL OPTIONS\n"
- " --big Pad strings so they get longer.\n"
- "\n"
- "Read INFILE, an XLIFF file, and output a pseudotranslated version of that file. If\n"
- "OUTFILE is specified, the results are written there; otherwise, the results are\n"
- "written back to INFILE.\n"
- "\n"
- "\n"
- "usage: localize rescheck FILES...\n"
- "\n"
- "Reads the base strings and prints warnings about bad resources from the given files.\n"
- "\n");
- return 1;
-}
-
-int
-main(int argc, const char** argv)
-{
- //open_log_file("log.txt");
- //g_logFile = stdout;
-
- if (argc == 2 && 0 == strcmp(argv[1], "--test")) {
- return test();
- }
-
- if (argc < 2) {
- return usage();
- }
-
- int index = 1;
-
- if (0 == strcmp("export", argv[index])) {
- string settingsFile;
- string rootDir;
- string outDir;
- string baseLocale = "en";
- string targetLocale;
- string language, region;
- vector<string> configs;
-
- index++;
- while (index < argc) {
- if (0 == strcmp("--settings", argv[index])) {
- settingsFile = argv[index+1];
- index += 2;
- }
- else if (0 == strcmp("--root", argv[index])) {
- rootDir = argv[index+1];
- index += 2;
- }
- else if (0 == strcmp("--out", argv[index])) {
- outDir = argv[index+1];
- index += 2;
- }
- else if (0 == strcmp("--target", argv[index])) {
- targetLocale = argv[index+1];
- index += 2;
- }
- else if (argv[index][0] == '-') {
- fprintf(stderr, "unknown argument %s\n", argv[index]);
- return usage();
- }
- else {
- break;
- }
- }
- for (; index<argc; index++) {
- configs.push_back(argv[index]);
- }
-
- if (settingsFile == "" || rootDir == "" || configs.size() == 0 || targetLocale == "") {
- return usage();
- }
- if (!split_locale(targetLocale, &language, ®ion)) {
- fprintf(stderr, "illegal --target locale: '%s'\n", targetLocale.c_str());
- return usage();
- }
-
-
- return do_export(settingsFile, rootDir, outDir, targetLocale, configs);
- }
- else if (0 == strcmp("import", argv[index])) {
- vector<string> xliffFilenames;
-
- index++;
- for (; index<argc; index++) {
- xliffFilenames.push_back(argv[index]);
- }
-
- return do_merge(xliffFilenames);
- }
- else if (0 == strcmp("xlb", argv[index])) {
- string outfile;
- vector<string> resFiles;
-
- index++;
- if (argc < index+1) {
- return usage();
- }
-
- outfile = argv[index];
-
- index++;
- for (; index<argc; index++) {
- resFiles.push_back(argv[index]);
- }
-
- return do_xlb_export(outfile, resFiles);
- }
- else if (0 == strcmp("pseudo", argv[index])) {
- string infile;
- string outfile;
- bool big = false;
-
- index++;
- while (index < argc) {
- if (0 == strcmp("--big", argv[index])) {
- big = true;
- index += 1;
- }
- else if (argv[index][0] == '-') {
- fprintf(stderr, "unknown argument %s\n", argv[index]);
- return usage();
- }
- else {
- break;
- }
- }
-
- if (index == argc-1) {
- infile = argv[index];
- outfile = argv[index];
- }
- else if (index == argc-2) {
- infile = argv[index];
- outfile = argv[index+1];
- }
- else {
- fprintf(stderr, "unknown argument %s\n", argv[index]);
- return usage();
- }
-
- return do_pseudo(infile, outfile, big);
- }
- else if (0 == strcmp("rescheck", argv[index])) {
- vector<string> files;
-
- index++;
- while (index < argc) {
- if (argv[index][0] == '-') {
- fprintf(stderr, "unknown argument %s\n", argv[index]);
- return usage();
- }
- else {
- break;
- }
- }
- for (; index<argc; index++) {
- files.push_back(argv[index]);
- }
-
- if (files.size() == 0) {
- return usage();
- }
-
- return do_rescheck(files);
- }
- else {
- return usage();
- }
-
- if (SourcePos::HasErrors()) {
- SourcePos::PrintErrors(stderr);
- return 1;
- }
-
- return 0;
-}
-
diff --git a/tools/localize/localize.h b/tools/localize/localize.h
deleted file mode 100644
index 615d14e..0000000
--- a/tools/localize/localize.h
+++ /dev/null
@@ -1,40 +0,0 @@
-#ifndef LOCALIZE_H
-#define LOCALIZE_H
-
-#include "XLIFFFile.h"
-
-#include <map>
-#include <string>
-
-using namespace std;
-
-struct Reject
-{
- string file;
- string name;
- string comment;
-};
-
-struct Settings
-{
- string id;
- string oldVersion;
- string currentVersion;
- vector<string> apps;
- vector<Reject> reject;
-};
-
-int read_settings(const string& filename, map<string,Settings>* result, const string& rootDir);
-string translated_file_name(const string& file, const string& locale);
-bool keep_this_trans_unit(const string& file, const TransUnit& unit, void* cookie);
-int validate_config(const string& settingsFile, const map<string,Settings>& settings,
- const string& configs);
-int validate_configs(const string& settingsFile, const map<string,Settings>& settings,
- const vector<string>& configs);
-int select_files(vector<string> *resFiles, const string& config,
- const map<string,Settings>& settings, const string& rootDir);
-int select_files(vector<vector<string> > *allResFiles, const vector<string>& configs,
- const map<string,Settings>& settings, const string& rootDir);
-
-
-#endif // LOCALIZE_H
diff --git a/tools/localize/localize_test.cpp b/tools/localize/localize_test.cpp
deleted file mode 100644
index 1d0ac9a..0000000
--- a/tools/localize/localize_test.cpp
+++ /dev/null
@@ -1,221 +0,0 @@
-#include <cstdio>
-#include "XLIFFFile.h"
-#include "ValuesFile.h"
-#include "localize.h"
-#include <stdio.h>
-
-int pseudolocalize_xliff(XLIFFFile* xliff, bool expand);
-
-static int
-test_filename(const string& file, const string& locale, const string& expected)
-{
- string result = translated_file_name(file, locale);
- if (result != expected) {
- fprintf(stderr, "translated_file_name test failed\n");
- fprintf(stderr, " locale='%s'\n", locale.c_str());
- fprintf(stderr, " expected='%s'\n", expected.c_str());
- fprintf(stderr, " result='%s'\n", result.c_str());
- return 1;
- } else {
- if (false) {
- fprintf(stderr, "translated_file_name test passed\n");
- fprintf(stderr, " locale='%s'\n", locale.c_str());
- fprintf(stderr, " expected='%s'\n", expected.c_str());
- fprintf(stderr, " result='%s'\n", result.c_str());
- }
- return 0;
- }
-}
-
-static int
-translated_file_name_test()
-{
- bool all = true;
- int err = 0;
-
- if (all) err |= test_filename("//device/samples/NotePad/res/values/strings.xml", "zz_ZZ",
- "//device/samples/NotePad/res/values-zz-rZZ/strings.xml");
-
- if (all) err |= test_filename("//device/samples/NotePad/res/values/strings.xml", "zz",
- "//device/samples/NotePad/res/values-zz/strings.xml");
-
- if (all) err |= test_filename("//device/samples/NotePad/res/values/strings.xml", "",
- "//device/samples/NotePad/res/values/strings.xml");
-
- return err;
-}
-
-bool
-return_false(const string&, const TransUnit& unit, void* cookie)
-{
- return false;
-}
-
-static int
-delete_trans_units()
-{
- XLIFFFile* xliff = XLIFFFile::Parse("testdata/strip_xliff.xliff");
- if (xliff == NULL) {
- printf("couldn't read file\n");
- return 1;
- }
- if (false) {
- printf("XLIFF was [[%s]]\n", xliff->ToString().c_str());
- }
-
- xliff->Filter(return_false, NULL);
-
- if (false) {
- printf("XLIFF is [[%s]]\n", xliff->ToString().c_str());
-
- set<StringResource> const& strings = xliff->GetStringResources();
- printf("strings.size=%zd\n", strings.size());
- for (set<StringResource>::iterator it=strings.begin(); it!=strings.end(); it++) {
- const StringResource& str = *it;
- printf("STRING!!! id=%s value='%s' pos=%s file=%s version=%d(%s)\n", str.id.c_str(),
- str.value->ContentsToString(ANDROID_NAMESPACES).c_str(),
- str.pos.ToString().c_str(), str.file.c_str(), str.version,
- str.versionString.c_str());
- }
- }
-
- return 0;
-}
-
-static int
-filter_trans_units()
-{
- XLIFFFile* xliff = XLIFFFile::Parse("testdata/strip_xliff.xliff");
- if (xliff == NULL) {
- printf("couldn't read file\n");
- return 1;
- }
-
- if (false) {
- printf("XLIFF was [[%s]]\n", xliff->ToString().c_str());
- }
-
- Settings setting;
- xliff->Filter(keep_this_trans_unit, &setting);
-
- if (false) {
- printf("XLIFF is [[%s]]\n", xliff->ToString().c_str());
-
- set<StringResource> const& strings = xliff->GetStringResources();
- printf("strings.size=%zd\n", strings.size());
- for (set<StringResource>::iterator it=strings.begin(); it!=strings.end(); it++) {
- const StringResource& str = *it;
- printf("STRING!!! id=%s value='%s' pos=%s file=%s version=%d(%s)\n", str.id.c_str(),
- str.value->ContentsToString(ANDROID_NAMESPACES).c_str(),
- str.pos.ToString().c_str(), str.file.c_str(), str.version,
- str.versionString.c_str());
- }
- }
-
- return 0;
-}
-
-static int
-settings_test()
-{
- int err;
- map<string,Settings> settings;
- map<string,Settings>::iterator it;
-
- err = read_settings("testdata/config.xml", &settings, "//asdf");
- if (err != 0) {
- return err;
- }
-
- if (false) {
- for (it=settings.begin(); it!=settings.end(); it++) {
- const Settings& setting = it->second;
- printf("CONFIG:\n");
- printf(" id='%s'\n", setting.id.c_str());
- printf(" oldVersion='%s'\n", setting.oldVersion.c_str());
- printf(" currentVersion='%s'\n", setting.currentVersion.c_str());
- int i=0;
- for (vector<string>::const_iterator app=setting.apps.begin();
- app!=setting.apps.end(); app++) {
- printf(" apps[%02d]='%s'\n", i, app->c_str());
- i++;
- }
- i=0;
- for (vector<Reject>::const_iterator reject=setting.reject.begin();
- reject!=setting.reject.end(); reject++) {
- i++;
- printf(" reject[%02d]=('%s','%s','%s')\n", i, reject->file.c_str(),
- reject->name.c_str(), reject->comment.c_str());
- }
- }
- }
-
- for (it=settings.begin(); it!=settings.end(); it++) {
- const Settings& setting = it->second;
- if (it->first != setting.id) {
- fprintf(stderr, "it->first='%s' setting.id='%s'\n", it->first.c_str(),
- setting.id.c_str());
- err |= 1;
- }
- }
-
-
- return err;
-}
-
-static int
-test_one_pseudo(bool big, const char* expected)
-{
- XLIFFFile* xliff = XLIFFFile::Parse("testdata/pseudo.xliff");
- if (xliff == NULL) {
- printf("couldn't read file\n");
- return 1;
- }
- if (false) {
- printf("XLIFF was [[%s]]\n", xliff->ToString().c_str());
- }
-
- pseudolocalize_xliff(xliff, big);
- string newString = xliff->ToString();
- delete xliff;
-
- if (false) {
- printf("XLIFF is [[%s]]\n", newString.c_str());
- }
-
- if (false && newString != expected) {
- fprintf(stderr, "xliff didn't translate as expected\n");
- fprintf(stderr, "newString=[[%s]]\n", newString.c_str());
- fprintf(stderr, "expected=[[%s]]\n", expected);
- return 1;
- }
-
- return 0;
-}
-
-static int
-pseudolocalize_test()
-{
- int err = 0;
-
- err |= test_one_pseudo(false, "");
- //err |= test_one_pseudo(true, "");
-
- return err;
-}
-
-int
-localize_test()
-{
- bool all = true;
- int err = 0;
-
- if (all) err |= translated_file_name_test();
- if (all) err |= delete_trans_units();
- if (all) err |= filter_trans_units();
- if (all) err |= settings_test();
- if (all) err |= pseudolocalize_test();
-
- return err;
-}
-
diff --git a/tools/localize/log.h b/tools/localize/log.h
deleted file mode 100644
index 4a5fa7f..0000000
--- a/tools/localize/log.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef LOG_H
-#define LOG_H
-
-void log_printf(const char* fmt, ...);
-
-#endif // LOG_H
-
diff --git a/tools/localize/merge_res_and_xliff.cpp b/tools/localize/merge_res_and_xliff.cpp
deleted file mode 100644
index 1fdaa0e..0000000
--- a/tools/localize/merge_res_and_xliff.cpp
+++ /dev/null
@@ -1,392 +0,0 @@
-#include "merge_res_and_xliff.h"
-
-#include "file_utils.h"
-#include "Perforce.h"
-#include "log.h"
-#include <stdio.h>
-
-static set<StringResource>::const_iterator
-find_id(const set<StringResource>& s, const string& id, int index)
-{
- for (set<StringResource>::const_iterator it = s.begin(); it != s.end(); it++) {
- if (it->id == id && it->index == index) {
- return it;
- }
- }
- return s.end();
-}
-
-static set<StringResource>::const_iterator
-find_in_xliff(const set<StringResource>& s, const string& filename, const string& id, int index,
- int version, const Configuration& config)
-{
- for (set<StringResource>::const_iterator it = s.begin(); it != s.end(); it++) {
- if (it->file == filename && it->id == id && it->index == index && it->version == version
- && it->config == config) {
- return it;
- }
- }
- return s.end();
-}
-
-
-static void
-printit(const set<StringResource>& s, const set<StringResource>::const_iterator& it)
-{
- if (it == s.end()) {
- printf("(none)\n");
- } else {
- printf("id=%s index=%d config=%s file=%s value='%s'\n", it->id.c_str(), it->index,
- it->config.ToString().c_str(), it->file.c_str(),
- it->value->ToString(ANDROID_NAMESPACES).c_str());
- }
-}
-
-StringResource
-convert_resource(const StringResource& s, const string& file, const Configuration& config,
- int version, const string& versionString)
-{
- return StringResource(s.pos, file, config, s.id, s.index, s.value ? s.value->Clone() : NULL,
- version, versionString, s.comment);
-}
-
-static bool
-resource_has_contents(const StringResource& res)
-{
- XMLNode* value = res.value;
- if (value == NULL) {
- return false;
- }
- string contents = value->ContentsToString(ANDROID_NAMESPACES);
- return contents != "";
-}
-
-ValuesFile*
-merge_res_and_xliff(const ValuesFile* en_currentFile,
- const ValuesFile* xx_currentFile, const ValuesFile* xx_oldFile,
- const string& filename, const XLIFFFile* xliffFile)
-{
- bool success = true;
-
- Configuration en_config = xliffFile->SourceConfig();
- Configuration xx_config = xliffFile->TargetConfig();
- string currentVersion = xliffFile->CurrentVersion();
-
- ValuesFile* result = new ValuesFile(xx_config);
-
- set<StringResource> en_cur = en_currentFile->GetStrings();
- set<StringResource> xx_cur = xx_currentFile->GetStrings();
- set<StringResource> xx_old = xx_oldFile->GetStrings();
- set<StringResource> xliff = xliffFile->GetStringResources();
-
- // for each string in en_current
- for (set<StringResource>::const_iterator en_c = en_cur.begin();
- en_c != en_cur.end(); en_c++) {
- set<StringResource>::const_iterator xx_c = find_id(xx_cur, en_c->id, en_c->index);
- set<StringResource>::const_iterator xx_o = find_id(xx_old, en_c->id, en_c->index);
- set<StringResource>::const_iterator xlf = find_in_xliff(xliff, en_c->file, en_c->id,
- en_c->index, CURRENT_VERSION, xx_config);
-
- if (false) {
- printf("\nen_c: "); printit(en_cur, en_c);
- printf("xx_c: "); printit(xx_cur, xx_c);
- printf("xx_o: "); printit(xx_old, xx_o);
- printf("xlf: "); printit(xliff, xlf);
- }
-
- // if it changed between xx_old and xx_current, use xx_current
- // (someone changed it by hand)
- if (xx_o != xx_old.end() && xx_c != xx_cur.end()) {
- string xx_o_value = xx_o->value->ToString(ANDROID_NAMESPACES);
- string xx_c_value = xx_c->value->ToString(ANDROID_NAMESPACES);
- if (xx_o_value != xx_c_value && xx_c_value != "") {
- StringResource r(convert_resource(*xx_c, filename, xx_config,
- CURRENT_VERSION, currentVersion));
- if (resource_has_contents(r)) {
- result->AddString(r);
- }
- continue;
- }
- }
-
- // if it is present in xliff, use that
- // (it just got translated)
- if (xlf != xliff.end() && xlf->value->ToString(ANDROID_NAMESPACES) != "") {
- StringResource r(convert_resource(*xlf, filename, xx_config,
- CURRENT_VERSION, currentVersion));
- if (resource_has_contents(r)) {
- result->AddString(r);
- }
- }
-
- // if it is present in xx_current, use that
- // (it was already translated, and not retranslated)
- // don't filter out empty strings if they were added by hand, the above code just
- // guarantees that this tool never adds an empty one.
- if (xx_c != xx_cur.end()) {
- StringResource r(convert_resource(*xx_c, filename, xx_config,
- CURRENT_VERSION, currentVersion));
- result->AddString(r);
- }
-
- // othwerwise, leave it out. The resource fall-through code will use the English
- // one at runtime, and the xliff export code will pick it up for translation next time.
- }
-
- if (success) {
- return result;
- } else {
- delete result;
- return NULL;
- }
-}
-
-
-struct MergedFile {
- XLIFFFile* xliff;
- string xliffFilename;
- string original;
- string translated;
- ValuesFile* en_current;
- ValuesFile* xx_current;
- ValuesFile* xx_old;
- ValuesFile* xx_new;
- string xx_new_text;
- string xx_new_filename;
- bool new_file;
- bool deleted_file;
-
- MergedFile();
- MergedFile(const MergedFile&);
-};
-
-struct compare_filenames {
- bool operator()(const MergedFile& lhs, const MergedFile& rhs) const
- {
- return lhs.original < rhs.original;
- }
-};
-
-MergedFile::MergedFile()
- :xliff(NULL),
- xliffFilename(),
- original(),
- translated(),
- en_current(NULL),
- xx_current(NULL),
- xx_old(NULL),
- xx_new(NULL),
- xx_new_text(),
- xx_new_filename(),
- new_file(false),
- deleted_file(false)
-{
-}
-
-MergedFile::MergedFile(const MergedFile& that)
- :xliff(that.xliff),
- xliffFilename(that.xliffFilename),
- original(that.original),
- translated(that.translated),
- en_current(that.en_current),
- xx_current(that.xx_current),
- xx_old(that.xx_old),
- xx_new(that.xx_new),
- xx_new_text(that.xx_new_text),
- xx_new_filename(that.xx_new_filename),
- new_file(that.new_file),
- deleted_file(that.deleted_file)
-{
-}
-
-
-typedef set<MergedFile, compare_filenames> MergedFileSet;
-
-int
-do_merge(const vector<string>& xliffFilenames)
-{
- int err = 0;
- MergedFileSet files;
-
- printf("\rPreparing..."); fflush(stdout);
- string currentChange = Perforce::GetCurrentChange(true);
-
- // for each xliff, make a MergedFile record and do a little error checking
- for (vector<string>::const_iterator xliffFilename=xliffFilenames.begin();
- xliffFilename!=xliffFilenames.end(); xliffFilename++) {
- XLIFFFile* xliff = XLIFFFile::Parse(*xliffFilename);
- if (xliff == NULL) {
- fprintf(stderr, "localize import: unable to read file %s\n", xliffFilename->c_str());
- err = 1;
- continue;
- }
-
- set<string> xf = xliff->Files();
- for (set<string>::const_iterator f=xf.begin(); f!=xf.end(); f++) {
- MergedFile mf;
- mf.xliff = xliff;
- mf.xliffFilename = *xliffFilename;
- mf.original = *f;
- mf.translated = translated_file_name(mf.original, xliff->TargetConfig().locale);
- log_printf("mf.translated=%s mf.original=%s locale=%s\n", mf.translated.c_str(),
- mf.original.c_str(), xliff->TargetConfig().locale.c_str());
-
- if (files.find(mf) != files.end()) {
- fprintf(stderr, "%s: duplicate string resources for file %s\n",
- xliffFilename->c_str(), f->c_str());
- fprintf(stderr, "%s: previously defined here.\n",
- files.find(mf)->xliffFilename.c_str());
- err = 1;
- continue;
- }
- files.insert(mf);
- }
- }
-
- size_t deletedFileCount = 0;
- size_t J = files.size() * 3;
- size_t j = 1;
- // Read all of the files from perforce.
- for (MergedFileSet::iterator mf = files.begin(); mf != files.end(); mf++) {
- MergedFile* file = const_cast<MergedFile*>(&(*mf));
- // file->en_current
- print_file_status(j++, J);
- file->en_current = get_values_file(file->original, file->xliff->SourceConfig(),
- CURRENT_VERSION, currentChange, true);
- if (file->en_current == NULL) {
- // deleted file
- file->deleted_file = true;
- deletedFileCount++;
- continue;
- }
-
- // file->xx_current;
- print_file_status(j++, J);
- file->xx_current = get_values_file(file->translated, file->xliff->TargetConfig(),
- CURRENT_VERSION, currentChange, false);
- if (file->xx_current == NULL) {
- file->xx_current = new ValuesFile(file->xliff->TargetConfig());
- file->new_file = true;
- }
-
- // file->xx_old (note that the xliff's current version is our old version, because that
- // was the current version when it was exported)
- print_file_status(j++, J);
- file->xx_old = get_values_file(file->translated, file->xliff->TargetConfig(),
- OLD_VERSION, file->xliff->CurrentVersion(), false);
- if (file->xx_old == NULL) {
- file->xx_old = new ValuesFile(file->xliff->TargetConfig());
- file->new_file = true;
- }
- }
-
- // merge them
- for (MergedFileSet::iterator mf = files.begin(); mf != files.end(); mf++) {
- MergedFile* file = const_cast<MergedFile*>(&(*mf));
- if (file->deleted_file) {
- continue;
- }
- file->xx_new = merge_res_and_xliff(file->en_current, file->xx_current, file->xx_old,
- file->original, file->xliff);
- }
-
- // now is a good time to stop if there was an error
- if (err != 0) {
- return err;
- }
-
- // locate the files
- j = 1;
- for (MergedFileSet::iterator mf = files.begin(); mf != files.end(); mf++) {
- MergedFile* file = const_cast<MergedFile*>(&(*mf));
- print_file_status(j++, J, "Locating");
-
- file->xx_new_filename = Perforce::Where(file->translated, true);
- if (file->xx_new_filename == "") {
- fprintf(stderr, "\nWas not able to determine the location of depot file %s\n",
- file->translated.c_str());
- err = 1;
- }
- }
-
- if (err != 0) {
- return err;
- }
-
- // p4 edit the files
- // only do this if it changed - no need to submit files that haven't changed meaningfully
- vector<string> filesToEdit;
- vector<string> filesToAdd;
- vector<string> filesToDelete;
- for (MergedFileSet::iterator mf = files.begin(); mf != files.end(); mf++) {
- MergedFile* file = const_cast<MergedFile*>(&(*mf));
- if (file->deleted_file) {
- filesToDelete.push_back(file->xx_new_filename);
- continue;
- }
- string xx_current_text = file->xx_current->ToString();
- string xx_new_text = file->xx_new->ToString();
- if (xx_current_text != xx_new_text) {
- if (file->xx_new->GetStrings().size() == 0) {
- file->deleted_file = true;
- filesToDelete.push_back(file->xx_new_filename);
- } else {
- file->xx_new_text = xx_new_text;
- if (file->new_file) {
- filesToAdd.push_back(file->xx_new_filename);
- } else {
- filesToEdit.push_back(file->xx_new_filename);
- }
- }
- }
- }
- if (filesToAdd.size() == 0 && filesToEdit.size() == 0 && deletedFileCount == 0) {
- printf("\nAll of the files are the same. Nothing to change.\n");
- return 0;
- }
- if (filesToEdit.size() > 0) {
- printf("\np4 editing files...\n");
- if (0 != Perforce::EditFiles(filesToEdit, true)) {
- return 1;
- }
- }
-
-
- printf("\n");
-
- for (MergedFileSet::iterator mf = files.begin(); mf != files.end(); mf++) {
- MergedFile* file = const_cast<MergedFile*>(&(*mf));
- if (file->deleted_file) {
- continue;
- }
- if (file->xx_new_text != "" && file->xx_new_filename != "") {
- if (0 != write_to_file(file->xx_new_filename, file->xx_new_text)) {
- err = 1;
- }
- }
- }
-
- if (err != 0) {
- return err;
- }
-
- if (filesToAdd.size() > 0) {
- printf("p4 adding %zd new files...\n", filesToAdd.size());
- err = Perforce::AddFiles(filesToAdd, true);
- }
-
- if (filesToDelete.size() > 0) {
- printf("p4 deleting %zd removed files...\n", filesToDelete.size());
- err = Perforce::DeleteFiles(filesToDelete, true);
- }
-
- if (err != 0) {
- return err;
- }
-
- printf("\n"
- "Theoretically, this merge was successfull. Next you should\n"
- "review the diffs, get a code review, and submit it. Enjoy.\n\n");
- return 0;
-}
-
diff --git a/tools/localize/merge_res_and_xliff.h b/tools/localize/merge_res_and_xliff.h
deleted file mode 100644
index acf2fff..0000000
--- a/tools/localize/merge_res_and_xliff.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#ifndef MERGE_RES_AND_XLIFF_H
-#define MERGE_RES_AND_XLIFF_H
-
-#include "ValuesFile.h"
-#include "XLIFFFile.h"
-
-ValuesFile* merge_res_and_xliff(const ValuesFile* en_current,
- const ValuesFile* xx_current, const ValuesFile* xx_old,
- const string& filename, const XLIFFFile* xliff);
-
-int do_merge(const vector<string>& xliffFilenames);
-
-#endif // MERGE_RES_AND_XLIFF_H
diff --git a/tools/localize/merge_res_and_xliff_test.cpp b/tools/localize/merge_res_and_xliff_test.cpp
deleted file mode 100644
index 6fe2629..0000000
--- a/tools/localize/merge_res_and_xliff_test.cpp
+++ /dev/null
@@ -1,48 +0,0 @@
-#include <cstdio>
-#include "merge_res_and_xliff.h"
-#include <stdio.h>
-
-int
-merge_test()
-{
- Configuration english;
- english.locale = "en_US";
- Configuration translated;
- translated.locale = "zz_ZZ";
-
- ValuesFile* en_current = ValuesFile::ParseFile("testdata/merge_en_current.xml", english,
- CURRENT_VERSION, "3");
- if (en_current == NULL) {
- fprintf(stderr, "merge_test: unable to read testdata/merge_en_current.xml\n");
- return 1;
- }
-
- ValuesFile* xx_current = ValuesFile::ParseFile("testdata/merge_xx_current.xml", translated,
- CURRENT_VERSION, "3");
- if (xx_current == NULL) {
- fprintf(stderr, "merge_test: unable to read testdata/merge_xx_current.xml\n");
- return 1;
- }
- ValuesFile* xx_old = ValuesFile::ParseFile("testdata/merge_xx_old.xml", translated,
- OLD_VERSION, "2");
- if (xx_old == NULL) {
- fprintf(stderr, "merge_test: unable to read testdata/merge_xx_old.xml\n");
- return 1;
- }
-
- XLIFFFile* xliff = XLIFFFile::Parse("testdata/merge.xliff");
-
- ValuesFile* result = merge_res_and_xliff(en_current, xx_current, xx_old,
- "//device/tools/localize/testdata/res/values/strings.xml", xliff);
-
- if (result == NULL) {
- fprintf(stderr, "merge_test: result is NULL\n");
- return 1;
- }
-
- printf("======= RESULT =======\n%s===============\n", result->ToString().c_str());
-
- return 0;
-}
-
-
diff --git a/tools/localize/res_check.cpp b/tools/localize/res_check.cpp
deleted file mode 100644
index 0fab98a..0000000
--- a/tools/localize/res_check.cpp
+++ /dev/null
@@ -1,106 +0,0 @@
-#include "res_check.h"
-#include "localize.h"
-#include "file_utils.h"
-#include "ValuesFile.h"
-
-#include <stdio.h>
-
-static int check_file(const ValuesFile* file);
-static int check_value(const SourcePos& pos, const XMLNode* value);
-static int scan_for_unguarded_format(const SourcePos& pos, const XMLNode* value, int depth = 0);
-
-int
-do_rescheck(const vector<string>& files)
-{
- int err;
-
- Configuration english;
- english.locale = "en_US";
-
- for (size_t i=0; i<files.size(); i++) {
- const string filename = files[i];
- ValuesFile* valuesFile = get_local_values_file(filename, english, CURRENT_VERSION,
- "0", true);
- if (valuesFile != NULL) {
- err |= check_file(valuesFile);
- delete valuesFile;
- } else {
- err |= 1;
- }
- }
-
- return err;
-}
-
-static int
-check_file(const ValuesFile* file)
-{
- int err = 0;
- set<StringResource> strings = file->GetStrings();
- for (set<StringResource>::iterator it=strings.begin(); it!=strings.end(); it++) {
- XMLNode* value = it->value;
- if (value != NULL) {
- err |= check_value(it->pos, value);
- }
- }
- return err;
-}
-
-static bool
-contains_percent(const string& str)
-{
- const size_t len = str.length();
- for (size_t i=0; i<len; i++) {
- char c = str[i];
- if (c == '%') {
- return true;
- }
- }
- return false;
-}
-
-static int
-check_value(const SourcePos& pos, const XMLNode* value)
-{
- int err = 0;
- err |= scan_for_unguarded_format(pos, value);
- return err;
-}
-
-static bool
-is_xliff_block(const string& ns, const string& name)
-{
- if (ns == XLIFF_XMLNS) {
- return name == "g";
- } else {
- return false;
- }
-}
-
-static int
-scan_for_unguarded_format(const SourcePos& pos, const string& string)
-{
- bool containsPercent = contains_percent(string);
- if (containsPercent) {
- pos.Error("unguarded percent: '%s'\n", string.c_str());
- }
- return 0;
-}
-
-static int
-scan_for_unguarded_format(const SourcePos& pos, const XMLNode* value, int depth)
-{
- if (value->Type() == XMLNode::ELEMENT) {
- int err = 0;
- if (depth == 0 || !is_xliff_block(value->Namespace(), value->Name())) {
- const vector<XMLNode*>& children = value->Children();
- for (size_t i=0; i<children.size(); i++) {
- err |= scan_for_unguarded_format(pos, children[i], depth+1);
- }
- }
- return err;
- } else {
- return scan_for_unguarded_format(pos, value->Text());
- }
-}
-
diff --git a/tools/localize/res_check.h b/tools/localize/res_check.h
deleted file mode 100644
index 86e7ce6..0000000
--- a/tools/localize/res_check.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef RESCHECK_H
-#define RESCHECK_H
-
-#include <map>
-#include <string>
-#include <vector>
-
-using namespace std;
-
-int do_rescheck(const vector<string>& files);
-
-#endif // RESCHECK_H
diff --git a/tools/localize/test.cpp b/tools/localize/test.cpp
deleted file mode 100644
index 5fa2c17..0000000
--- a/tools/localize/test.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
-#include "SourcePos.h"
-#include <stdio.h>
-
-int ValuesFile_test();
-int XLIFFFile_test();
-int XMLHandler_test();
-int Perforce_test();
-int localize_test();
-int merge_test();
-
-int
-test()
-{
- bool all = true;
- int err = 0;
-
- if (all) err |= XMLHandler_test();
- if (all) err |= ValuesFile_test();
- if (all) err |= XLIFFFile_test();
- if (all) err |= Perforce_test();
- if (all) err |= localize_test();
- if (all) err |= merge_test();
-
- if (err != 0) {
- fprintf(stderr, "some tests failed\n");
- } else {
- fprintf(stderr, "all tests passed\n");
- }
-
- return err;
-}
diff --git a/tools/localize/testdata/config.xml b/tools/localize/testdata/config.xml
deleted file mode 100644
index affa140..0000000
--- a/tools/localize/testdata/config.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<localize-config>
- <configuration id="system"
- old-cl="1"
- new-cl="43019">
- <app dir="apps/common" />
- </configuration>
- <configuration id="samples"
- old-cl="24801"
- new-cl="43019">
- <app dir="samples/NotePad" />
- <reject file="samples/NotePad/res/values/strings.xml" name="string:menu_delete">
- QA says this sounds <b>rude</b>.
- </reject>
- </configuration>
-</localize-config>
diff --git a/tools/localize/testdata/import.xliff b/tools/localize/testdata/import.xliff
deleted file mode 100644
index b99b739..0000000
--- a/tools/localize/testdata/import.xliff
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2"
- version="1.2"
- >
- <file datatype="x-android-res"
- original="//device/tools/localize/testdata/res/values/strings.xml"
- product-version="1.0"
- date="08:10:54 12/07/07 PST"
- source-language="en_US"
- product-name="kila"
- target-language="zz_ZZ"
- build-num="44391"
- >
- <body>
- <trans-unit id="string:changed_in_xx">
- <source>aaa</source>
- <target>AAA</target>
- </trans-unit>
- <trans-unit id="string:first_translation">
- <source>bbb</source>
- <target>BBB</target>
- </trans-unit>
- <trans-unit id="string:deleted_string">
- <source>ddd</source>
- <target>DDDD</target>
- </trans-unit>
- <trans-unit id="array:0:growing_array">
- <source>1-One</source>
- <target>1-oNE</target>
- </trans-unit>
- <trans-unit id="array:1:growing_array">
- <source>1-Two</source>
- <target>1-tWO</target>
- </trans-unit>
- <trans-unit id="array:2:growing_array">
- <source>1-Three</source>
- <target>1-tHREE</target>
- </trans-unit>
- <trans-unit id="array:0:shrinking_array">
- <source>2-One</source>
- <target>2-oNE</target>
- </trans-unit>
- <trans-unit id="array:1:shrinking_array">
- <source>2-Two</source>
- <target>2-tWO</target>
- </trans-unit>
- <trans-unit id="array:2:shrinking_array">
- <source>2-Three</source>
- <target>2-tHREE</target>
- </trans-unit>
- <trans-unit id="array:3:shrinking_array">
- <source>2-Four</source>
- <target>2-fOUR</target>
- </trans-unit>
- <trans-unit id="array:0:deleted_array">
- <source>4-One</source>
- <target>4-oNE</target>
- </trans-unit>
- <trans-unit id="array:1:deleted_array">
- <source>4-Two</source>
- <target>4-tWO</target>
- </trans-unit>
- <trans-unit id="array:2:deleted_array">
- <source>4-Three</source>
- <target>4-tHREE</target>
- </trans-unit>
-
- </body>
- </file>
-</xliff>
-
-
diff --git a/tools/localize/testdata/merge.xliff b/tools/localize/testdata/merge.xliff
deleted file mode 100644
index 2b78c45..0000000
--- a/tools/localize/testdata/merge.xliff
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2"
- version="1.2"
- >
- <file datatype="x-android-res"
- original="testdata/merge_en_current.xml"
- product-version="1.0"
- date="08:10:54 12/07/07 PST"
- source-language="en-US"
- product-name="kila"
- target-language="zz-ZZ"
- build-num="44391"
- >
- <body>
- <trans-unit id="string:changed_in_xx">
- <source>aaa</source>
- <target>AAA</target>
- </trans-unit>
- <trans-unit id="string:first_translation">
- <source>bbb</source>
- <target>BBB</target>
- </trans-unit>
- <trans-unit id="string:deleted_string">
- <source>ddd</source>
- <target>DDDD</target>
- </trans-unit>
- <trans-unit id="array:0:growing_array">
- <source>1-One</source>
- <target>1-oNE</target>
- </trans-unit>
- <trans-unit id="array:1:growing_array">
- <source>1-Two</source>
- <target>1-tWO</target>
- </trans-unit>
- <trans-unit id="array:2:growing_array">
- <source>1-Three</source>
- <target>1-tHREE</target>
- </trans-unit>
- <trans-unit id="array:0:shrinking_array">
- <source>2-One</source>
- <target>2-oNE</target>
- </trans-unit>
- <trans-unit id="array:1:shrinking_array">
- <source>2-Two</source>
- <target>2-tWO</target>
- </trans-unit>
- <trans-unit id="array:2:shrinking_array">
- <source>2-Three</source>
- <target>2-tHREE</target>
- </trans-unit>
- <trans-unit id="array:3:shrinking_array">
- <source>2-Four</source>
- <target>2-fOUR</target>
- </trans-unit>
- <trans-unit id="array:0:deleted_array">
- <source>4-One</source>
- <target>4-oNE</target>
- </trans-unit>
- <trans-unit id="array:1:deleted_array">
- <source>4-Two</source>
- <target>4-tWO</target>
- </trans-unit>
- <trans-unit id="array:2:deleted_array">
- <source>4-Three</source>
- <target>4-tHREE</target>
- </trans-unit>
-
- </body>
- </file>
-</xliff>
-
-
diff --git a/tools/localize/testdata/merge_en_current.xml b/tools/localize/testdata/merge_en_current.xml
deleted file mode 100644
index 6a11e68..0000000
--- a/tools/localize/testdata/merge_en_current.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="changed_in_xx">aaa</string>
- <string name="first_translation">bbb</string>
- <string name="previously_translated">ccc</string>
- <string name="new_string">ccc</string>
-
- <string name="formatted_string"><b>bold</b><i>italic<u>italic_underline</u></i><u>underline</u></string>
-
- <array name="growing_array">
- <!-- somebody wrote a comment! -->
- <item>1-One</item>
- <item>1-Two</item>
- <item>1-Three</item>
- <item>1-Four</item>
- </array>
- <array name="shrinking_array">
- <!-- somebody wrote a comment! -->
- <item>2-One</item>
- <item>2-Two</item>
- <item>2-Three</item>
- </array>
- <array name="new_array">
- <!-- somebody wrote a comment! -->
- <item>3-One</item>
- <item>3-Two</item>
- <item>3-Three</item>
- </array>
-</resources>
diff --git a/tools/localize/testdata/merge_en_old.xml b/tools/localize/testdata/merge_en_old.xml
deleted file mode 100644
index 933f98e..0000000
--- a/tools/localize/testdata/merge_en_old.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="changed_in_xx">aaa</string>
- <string name="first_translation">bbb</string>
- <string name="previously_translated">ccc</string>
- <string name="deleted_string">ddd</string>
-
- <string name="formatted_string"><b>bold</b><i>italic<u>italic_underline</u></i><u>underline</u></string>
-
- <array name="growing_array">
- <!-- somebody wrote a comment! -->
- <item>1-One</item>
- <item>1-Two</item>
- <item>1-Three</item>
- </array>
- <array name="shrinking_array">
- <!-- somebody wrote a comment! -->
- <item>2-One</item>
- <item>2-Two</item>
- <item>2-Three</item>
- <item>2-Four</item>
- </array>
- <array name="deleted_array">
- <!-- somebody wrote a comment! -->
- <item>4-One</item>
- <item>4-Two</item>
- <item>4-Three</item>
- </array>
-</resources>
-
diff --git a/tools/localize/testdata/merge_xx_current.xml b/tools/localize/testdata/merge_xx_current.xml
deleted file mode 100644
index c2a783d..0000000
--- a/tools/localize/testdata/merge_xx_current.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="changed_in_xx">AAAA</string>
- <string name="previously_translated">CCC</string>
-</resources>
-
-
diff --git a/tools/localize/testdata/pseudo.xliff b/tools/localize/testdata/pseudo.xliff
deleted file mode 100644
index 5b44f86..0000000
--- a/tools/localize/testdata/pseudo.xliff
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2"
- version="1.2"
- >
- <file datatype="x-android-res"
- original="//device/tools/localization/tests/res/values/strings.xml"
- product-version="1.0"
- date="08:10:54 12/07/07 PST"
- source-language="en-US"
- product-name="kila"
- target-language="zz-ZZ"
- build-num="32138"
- >
- <body>
- <trans-unit id="string:complex">
- <source>First <g id="string:complex:0" ctype="underline">underline</g>, <g id="string:complex:1" ctype="italic">italic<g id="string:complex:2" ctype="bold">italicbold</g></g> End </source>
- </trans-unit>
- <trans-unit id="string:complex-quoted">
- <source xml:space="preserve">First <g id="string:complex-quoted:0" ctype="underline">underline</g>, <g id="string:complex-quoted:1" ctype="italic">italic<g id="string:complex-quoted:2" ctype="bold">italicbold</g></g> End</source>
- </trans-unit>
- <trans-unit id="string:simple">
- <source>Simple</source>
- </trans-unit>
- <trans-unit id="array:0:simple">
- <source>Simple</source>
- </trans-unit>
- <trans-unit id="array:1:simple">
- <source>Simple</source>
- </trans-unit>
- <trans-unit id="string:simple-quoted">
- <source xml:space="preserve"> Quote</source>
- <alt-trans>
- <source xml:lang="en" xml:space="preserve"> OLD Quote</source>
- <target xml:lang="xx"> OLD Ờũỡŧę</target>
- </alt-trans>
- </trans-unit>
- </body>
- </file>
-</xliff>
-
diff --git a/tools/localize/testdata/res/values/strings.xml b/tools/localize/testdata/res/values/strings.xml
deleted file mode 100644
index 6a11e68..0000000
--- a/tools/localize/testdata/res/values/strings.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="changed_in_xx">aaa</string>
- <string name="first_translation">bbb</string>
- <string name="previously_translated">ccc</string>
- <string name="new_string">ccc</string>
-
- <string name="formatted_string"><b>bold</b><i>italic<u>italic_underline</u></i><u>underline</u></string>
-
- <array name="growing_array">
- <!-- somebody wrote a comment! -->
- <item>1-One</item>
- <item>1-Two</item>
- <item>1-Three</item>
- <item>1-Four</item>
- </array>
- <array name="shrinking_array">
- <!-- somebody wrote a comment! -->
- <item>2-One</item>
- <item>2-Two</item>
- <item>2-Three</item>
- </array>
- <array name="new_array">
- <!-- somebody wrote a comment! -->
- <item>3-One</item>
- <item>3-Two</item>
- <item>3-Three</item>
- </array>
-</resources>
diff --git a/tools/localize/testdata/strip_xliff.xliff b/tools/localize/testdata/strip_xliff.xliff
deleted file mode 100644
index 9254cf2..0000000
--- a/tools/localize/testdata/strip_xliff.xliff
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2"
- version="1.2"
- >
- <file datatype="x-android-res"
- original="//device/tools/localization/tests/res/values/strings.xml"
- product-version="1.0"
- date="08:10:54 12/07/07 PST"
- source-language="en-US"
- product-name="kila"
- target-language="zz-ZZ"
- build-num="32138"
- >
- <body>
-
- <trans-unit id="string:string-000-0">
- </trans-unit>
- <trans-unit id="string:string-001-0">
- <alt-trans>
- <source xml:lang="en" xml:space="preserve">source</source>
- </alt-trans>
- </trans-unit>
- <trans-unit id="string:string-010-0">
- <alt-trans>
- <target xml:lang="zz" xml:space="preserve">target</target>
- </alt-trans>
- </trans-unit>
- <trans-unit id="string:string-011-0">
- <alt-trans>
- <source xml:lang="en" xml:space="preserve">source</source>
- <target xml:lang="zz" xml:space="preserve">target</target>
- </alt-trans>
- </trans-unit>
-
- <trans-unit id="string:string-100-1">
- <source xml:space="preserve">source</source>
- </trans-unit>
- <trans-unit id="string:string-101-1">
- <source xml:space="preserve">source</source>
- <alt-trans>
- <source xml:lang="en" xml:space="preserve">source</source>
- </alt-trans>
- </trans-unit>
- <trans-unit id="string:string-110-1">
- <source xml:space="preserve">source</source>
- <alt-trans>
- <target xml:lang="zz" xml:space="preserve">target</target>
- </alt-trans>
- </trans-unit>
-
- <trans-unit id="string:string-111-0">
- <source xml:space="preserve">source</source>
- <alt-trans>
- <source xml:lang="en" xml:space="preserve">source</source>
- <target xml:lang="zz" xml:space="preserve">target</target>
- </alt-trans>
- </trans-unit>
- <trans-unit id="string:string-111-1">
- <source xml:space="preserve">source</source>
- <alt-trans>
- <source xml:lang="en" xml:space="preserve">alt-source</source>
- <target xml:lang="zz" xml:space="preserve">target</target>
- </alt-trans>
- </trans-unit>
-
- </body>
- </file>
-</xliff>
-
-
diff --git a/tools/localize/testdata/values/strings.xml b/tools/localize/testdata/values/strings.xml
deleted file mode 100644
index 5e8d43d..0000000
--- a/tools/localize/testdata/values/strings.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-
-<resources
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="test1">Discard</string>
- <!-- comment -->
- <string name="test2">a<b>b<i>c</i></b>d</string>
- <string name="test3">a<xliff:g a="b" xliff:a="asdf">bBb</xliff:g>C</string>
-
- <!-- Email address types from android.provider.Contacts -->
- <array name="emailAddressTypes">
- <!-- somebody wrote a comment! -->
- <item>Email</item>
- <item>Home</item>
- <item>Work</item>
- <item>Other\u2026</item>
- </array>
-</resources>
diff --git a/tools/localize/testdata/xliff1.xliff b/tools/localize/testdata/xliff1.xliff
deleted file mode 100644
index 55a8d8e..0000000
--- a/tools/localize/testdata/xliff1.xliff
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2"
- version="1.2"
- >
- <file datatype="x-android-res"
- original="//device/tools/localization/tests/res/values/strings.xml"
- product-version="1.0"
- date="08:10:54 12/07/07 PST"
- source-language="en-US"
- product-name="kila"
- target-language="zz-ZZ"
- build-num="32138"
- >
- <body>
- <trans-unit id="string:complex">
- <source>First <g id="string:complex:0" ctype="underline">underline</g>, <g id="string:complex:1" ctype="italic">italic<g id="string:complex:2" ctype="bold">italicbold</g></g> End </source>
- <target>Ḟịṙṩŧ , Ḛŋḋ </target>
- </trans-unit>
- <trans-unit id="string:complex-quoted">
- <source xml:space="preserve">First <g id="string:complex-quoted:0" ctype="underline">underline</g>, <g id="string:complex-quoted:1" ctype="italic">italic<g id="string:complex-quoted:2" ctype="bold">italicbold</g></g> End</source>
- <target>Ḟịṙṩŧ , Ḛŋḋ</target>
- </trans-unit>
- <trans-unit id="string:simple">
- <source>Simple</source>
- <target>Ṩịṃṕļę</target>
- </trans-unit>
- <trans-unit id="array:0:simple">
- <source>Simple</source>
- <target>Ṩịṃṕļę</target>
- </trans-unit>
- <trans-unit id="array:1:simple">
- <source>Simple</source>
- <target>Ṩịṃṕļę</target>
- </trans-unit>
- <trans-unit id="string:simple-quoted">
- <source xml:space="preserve"> Quote</source>
- <target> Ờũỡŧę</target>
- <alt-trans>
- <source xml:lang="en" xml:space="preserve"> OLD Quote</source>
- <target xml:lang="xx"> OLD Ờũỡŧę</target>
- </alt-trans>
- </trans-unit>
- </body>
- </file>
-</xliff>
-
diff --git a/tools/localize/testdata/xml.xml b/tools/localize/testdata/xml.xml
deleted file mode 100644
index ef930d0..0000000
--- a/tools/localize/testdata/xml.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<ASDF>
- <a id="system"
- old-cl="1"
- new-cl="43019">
- <app dir="apps/common" />
- </a>
- <a id="samples"
- old-cl="1"
- new-cl="43019">asdf
- <app dir="samples/NotePad" />
- <app dir="samples/LunarLander" />
- <something>a<b>,</b>b </something>
- <exact xml:space="preserve">a<b>,</b>b </exact>
- </a>
-</ASDF>
-
diff --git a/tools/localize/xmb.cpp b/tools/localize/xmb.cpp
deleted file mode 100644
index d8f6ff0..0000000
--- a/tools/localize/xmb.cpp
+++ /dev/null
@@ -1,182 +0,0 @@
-#include "xmb.h"
-
-#include "file_utils.h"
-#include "localize.h"
-#include "ValuesFile.h"
-#include "XMLHandler.h"
-#include "XLIFFFile.h"
-
-#include <map>
-#include <cstdio>
-
-using namespace std;
-
-const char *const NS_MAP[] = {
- "xml", XMLNS_XMLNS,
- NULL, NULL
-};
-
-set<string> g_tags;
-
-static string
-strip_newlines(const string& str)
-{
- string res;
- const size_t N = str.length();
- for (size_t i=0; i<N; i++) {
- char c = str[i];
- if (c != '\n' && c != '\r') {
- res += c;
- } else {
- res += ' ';
- }
- }
- return res;
-}
-
-static int
-rename_id_attribute(XMLNode* node)
-{
- vector<XMLAttribute>& attrs = node->EditAttributes();
- const size_t I = attrs.size();
- for (size_t i=0; i<I; i++) {
- XMLAttribute attr = attrs[i];
- if (attr.name == "id") {
- attr.name = "name";
- attrs.erase(attrs.begin()+i);
- attrs.push_back(attr);
- return 0;
- }
- }
- return 1;
-}
-
-static int
-convert_xliff_to_ph(XMLNode* node, int* phID)
-{
- int err = 0;
- if (node->Type() == XMLNode::ELEMENT) {
- if (node->Namespace() == XLIFF_XMLNS) {
- g_tags.insert(node->Name());
- node->SetName("", "ph");
-
- err = rename_id_attribute(node);
- if (err != 0) {
- char name[30];
- (*phID)++;
- sprintf(name, "id-%d", *phID);
- node->EditAttributes().push_back(XMLAttribute("", "name", name));
- err = 0;
- }
- }
- vector<XMLNode*>& children = node->EditChildren();
- const size_t I = children.size();
- for (size_t i=0; i<I; i++) {
- err |= convert_xliff_to_ph(children[i], phID);
- }
- }
- return err;
-}
-
-XMLNode*
-resource_to_xmb_msg(const StringResource& res)
-{
- // the msg element
- vector<XMLAttribute> attrs;
- string name = res.pos.file;
- name += ":";
- name += res.TypedID();
- attrs.push_back(XMLAttribute("", "name", name));
- attrs.push_back(XMLAttribute("", "desc", strip_newlines(res.comment)));
- attrs.push_back(XMLAttribute(XMLNS_XMLNS, "space", "preserve"));
- XMLNode* msg = XMLNode::NewElement(res.pos, "", "msg", attrs, XMLNode::EXACT);
-
- // the contents are in xliff/html, convert it to xliff
- int err = 0;
- XMLNode* value = res.value;
- string tag = value->Name();
- int phID = 0;
- for (vector<XMLNode*>::const_iterator it=value->Children().begin();
- it!=value->Children().end(); it++) {
- err |= convert_html_to_xliff(*it, tag, msg, &phID);
- }
-
- if (err != 0) {
- return NULL;
- }
-
- // and then convert that to xmb
- for (vector<XMLNode*>::iterator it=msg->EditChildren().begin();
- it!=msg->EditChildren().end(); it++) {
- err |= convert_xliff_to_ph(*it, &phID);
- }
-
- if (err == 0) {
- return msg;
- } else {
- return NULL;
- }
-}
-
-int
-do_xlb_export(const string& outfile, const vector<string>& resFiles)
-{
- int err = 0;
-
- size_t totalFileCount = resFiles.size();
-
- Configuration english;
- english.locale = "en_US";
-
- set<StringResource> allResources;
-
- const size_t J = resFiles.size();
- for (size_t j=0; j<J; j++) {
- string resFile = resFiles[j];
-
- ValuesFile* valuesFile = get_local_values_file(resFile, english, CURRENT_VERSION, "", true);
- if (valuesFile != NULL) {
- set<StringResource> resources = valuesFile->GetStrings();
- allResources.insert(resources.begin(), resources.end());
- } else {
- fprintf(stderr, "error reading file %s\n", resFile.c_str());
- }
-
- delete valuesFile;
- }
-
- // Construct the XLB xml
- vector<XMLAttribute> attrs;
- attrs.push_back(XMLAttribute("", "locale", "en"));
- XMLNode* localizationbundle = XMLNode::NewElement(GENERATED_POS, "", "localizationbundle",
- attrs, XMLNode::PRETTY);
-
- for (set<StringResource>::iterator it=allResources.begin(); it!=allResources.end(); it++) {
- XMLNode* msg = resource_to_xmb_msg(*it);
- if (msg) {
- localizationbundle->EditChildren().push_back(msg);
- } else {
- err = 1;
- }
- }
-
-#if 0
- for (set<string>::iterator it=g_tags.begin(); it!=g_tags.end(); it++) {
- printf("tag: %s\n", it->c_str());
- }
- printf("err=%d\n", err);
-#endif
- if (err == 0) {
- FILE* f = fopen(outfile.c_str(), "wb");
- if (f == NULL) {
- fprintf(stderr, "can't open outputfile: %s\n", outfile.c_str());
- return 1;
- }
- fprintf(f, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
- fprintf(f, "%s\n", localizationbundle->ToString(NS_MAP).c_str());
- fclose(f);
- }
-
- return err;
-}
-
diff --git a/tools/localize/xmb.h b/tools/localize/xmb.h
deleted file mode 100644
index 96492b1..0000000
--- a/tools/localize/xmb.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifndef XMB_H
-#define XMB_H
-
-#include <string>
-#include <vector>
-
-using namespace std;
-
-int do_xlb_export(const string& outFile, const vector<string>& resFiles);
-
-#endif // XMB_H
diff --git a/tools/makekeycodes/Android.mk b/tools/makekeycodes/Android.mk
deleted file mode 100644
index 401d44e..0000000
--- a/tools/makekeycodes/Android.mk
+++ /dev/null
@@ -1,13 +0,0 @@
-# Copyright 2005 The Android Open Source Project
-
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := \
- makekeycodes.cpp
-
-LOCAL_MODULE := makekeycodes
-
-include $(BUILD_HOST_EXECUTABLE)
-
-
diff --git a/tools/makekeycodes/makekeycodes.cpp b/tools/makekeycodes/makekeycodes.cpp
deleted file mode 100644
index 6ffbfb8..0000000
--- a/tools/makekeycodes/makekeycodes.cpp
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2012 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.
- */
-
-#include <stdio.h>
-#include <androidfw/KeycodeLabels.h>
-
-int
-main(int argc, char** argv)
-{
- // TODO: Add full copyright.
- printf("// Copyright (C) 2008 The Android Open Source Project\n");
- printf("//\n");
- printf("// This file is generated by makekeycodes from the definitions.\n");
- printf("// in includes/ui/KeycodeLabels.h.\n");
- printf("//\n");
- printf("// If you modify this, your changes will be overwritten.\n");
- printf("\n");
- printf("pacakge android.os;\n");
- printf("\n");
- printf("public class KeyEvent\n");
- printf("{\n");
-
- for (int i=0; KEYCODES[i].literal != NULL; i++) {
- printf(" public static final int KEYCODE_%s = 0x%08x;\n",
- KEYCODES[i].literal, KEYCODES[i].value);
- }
-
- printf("\n");
- for (int i=0; FLAGS[i].literal != NULL; i++) {
- printf(" public static final int MODIFIER_%s = 0x%08x;\n",
- FLAGS[i].literal, FLAGS[i].value);
- }
-
- printf("}\n");
- return 0;
-}
diff --git a/tools/orientationplot/README.txt b/tools/orientationplot/README.txt
index 0143510..d53f65e 100644
--- a/tools/orientationplot/README.txt
+++ b/tools/orientationplot/README.txt
@@ -16,15 +16,15 @@
The tool works by scaping the debug log output from WindowOrientationListener
for interesting data and then plotting it.
-1. Enable the Window Orientation Listener debugging data log using the
- Development Settings in the Dev Tools application (Development.apk).
-
-2. Plug in the device. Ensure that it is the only device plugged in
+1. Plug in the device. Ensure that it is the only device plugged in
since this script is of very little brain and will get confused otherwise.
-3. Run "orientationplot.py".
+2. Enable the Window Orientation Listener debugging data log.
+ adb shell setprop debug.orientation.log true
+ adb shell stop
+ adb shell start
-4. When finished, remember to disable the debug log output since it is quite verbose!
+3. Run "orientationplot.py".
WHAT IT ALL MEANS
diff --git a/tools/orientationplot/orientationplot.py b/tools/orientationplot/orientationplot.py
index f4e6b45..6fc3922 100755
--- a/tools/orientationplot/orientationplot.py
+++ b/tools/orientationplot/orientationplot.py
@@ -152,6 +152,7 @@
self.time_until_settled = self._make_timeseries()
self.time_until_flat_delay_expired = self._make_timeseries()
self.time_until_swing_delay_expired = self._make_timeseries()
+ self.time_until_acceleration_delay_expired = self._make_timeseries()
self.stability_axes = self._add_timeseries_axes(
6, 'Proposal Stability', 'ms', [-10, 600],
sharex=shared_axis,
@@ -162,6 +163,8 @@
self.stability_axes, 'time until flat delay expired', 'green')
self.time_until_swing_delay_expired_line = self._add_timeseries_line(
self.stability_axes, 'time until swing delay expired', 'blue')
+ self.time_until_acceleration_delay_expired_line = self._add_timeseries_line(
+ self.stability_axes, 'time until acceleration delay expired', 'red')
self._add_timeseries_legend(self.stability_axes)
self.sample_latency = self._make_timeseries()
@@ -253,6 +256,7 @@
self.parse_time_until_settled = None
self.parse_time_until_flat_delay_expired = None
self.parse_time_until_swing_delay_expired = None
+ self.parse_time_until_acceleration_delay_expired = None
self.parse_sample_latency = None
# Update samples.
@@ -303,6 +307,7 @@
self.parse_time_until_settled = self._get_following_number(line, 'timeUntilSettledMS=')
self.parse_time_until_flat_delay_expired = self._get_following_number(line, 'timeUntilFlatDelayExpiredMS=')
self.parse_time_until_swing_delay_expired = self._get_following_number(line, 'timeUntilSwingDelayExpiredMS=')
+ self.parse_time_until_acceleration_delay_expired = self._get_following_number(line, 'timeUntilAccelerationDelayExpiredMS=')
self._append(self.raw_acceleration_x, timeindex, self.parse_raw_acceleration_x)
self._append(self.raw_acceleration_y, timeindex, self.parse_raw_acceleration_y)
@@ -326,6 +331,7 @@
self._append(self.time_until_settled, timeindex, self.parse_time_until_settled)
self._append(self.time_until_flat_delay_expired, timeindex, self.parse_time_until_flat_delay_expired)
self._append(self.time_until_swing_delay_expired, timeindex, self.parse_time_until_swing_delay_expired)
+ self._append(self.time_until_acceleration_delay_expired, timeindex, self.parse_time_until_acceleration_delay_expired)
self._append(self.sample_latency, timeindex, self.parse_sample_latency)
self._reset_parse_state()
@@ -349,6 +355,7 @@
self._scroll(self.time_until_settled, bottom)
self._scroll(self.time_until_flat_delay_expired, bottom)
self._scroll(self.time_until_swing_delay_expired, bottom)
+ self._scroll(self.time_until_acceleration_delay_expired, bottom)
self._scroll(self.sample_latency, bottom)
# Redraw the plots.
@@ -368,6 +375,7 @@
self.time_until_settled_line.set_data(self.time_until_settled)
self.time_until_flat_delay_expired_line.set_data(self.time_until_flat_delay_expired)
self.time_until_swing_delay_expired_line.set_data(self.time_until_swing_delay_expired)
+ self.time_until_acceleration_delay_expired_line.set_data(self.time_until_acceleration_delay_expired)
self.sample_latency_line.set_data(self.sample_latency)
self.fig.canvas.draw_idle()
diff --git a/wifi/java/android/net/wifi/WifiManager.java b/wifi/java/android/net/wifi/WifiManager.java
index 8aa613b..36f38f9 100644
--- a/wifi/java/android/net/wifi/WifiManager.java
+++ b/wifi/java/android/net/wifi/WifiManager.java
@@ -1557,7 +1557,7 @@
*/
public void acquire() {
synchronized (mBinder) {
- if (mRefCounted ? (++mRefCount > 0) : (!mHeld)) {
+ if (mRefCounted ? (++mRefCount == 1) : (!mHeld)) {
try {
mService.acquireWifiLock(mBinder, mLockType, mTag, mWorkSource);
synchronized (WifiManager.this) {
@@ -1786,7 +1786,7 @@
*/
public void acquire() {
synchronized (mBinder) {
- if (mRefCounted ? (++mRefCount > 0) : (!mHeld)) {
+ if (mRefCounted ? (++mRefCount == 1) : (!mHeld)) {
try {
mService.acquireMulticastLock(mBinder, mTag);
synchronized (WifiManager.this) {
diff --git a/wifi/java/android/net/wifi/WifiNative.java b/wifi/java/android/net/wifi/WifiNative.java
index 26229be..73618f6 100644
--- a/wifi/java/android/net/wifi/WifiNative.java
+++ b/wifi/java/android/net/wifi/WifiNative.java
@@ -442,8 +442,8 @@
return doBooleanCommand("SET p2p_ssid_postfix " + postfix);
}
- public boolean setP2pGroupIdle(String iface, int time) {
- return doBooleanCommand("SET interface=" + iface + " p2p_group_idle " + time);
+ public boolean setP2pGroupIdle(int time) {
+ return doBooleanCommand("SET p2p_group_idle " + time);
}
public void setPowerSave(boolean enabled) {
@@ -467,7 +467,7 @@
* P2P connection over STA
*/
public boolean setConcurrencyPriority(String s) {
- return doBooleanCommand("P2P_SET conc_priority " + s);
+ return doBooleanCommand("P2P_SET conc_pref " + s);
}
public boolean p2pFind() {
@@ -536,15 +536,17 @@
/* Persist unless there is an explicit request to not do so*/
//if (config.persist != WifiP2pConfig.Persist.NO) args.add("persistent");
- if (joinExistingGroup) args.add("join");
-
- //TODO: This can be adapted based on device plugged in state and
- //device battery state
- int groupOwnerIntent = config.groupOwnerIntent;
- if (groupOwnerIntent < 0 || groupOwnerIntent > 15) {
- groupOwnerIntent = DEFAULT_GROUP_OWNER_INTENT;
+ if (joinExistingGroup) {
+ args.add("join");
+ } else {
+ //TODO: This can be adapted based on device plugged in state and
+ //device battery state
+ int groupOwnerIntent = config.groupOwnerIntent;
+ if (groupOwnerIntent < 0 || groupOwnerIntent > 15) {
+ groupOwnerIntent = DEFAULT_GROUP_OWNER_INTENT;
+ }
+ args.add("go_intent=" + groupOwnerIntent);
}
- args.add("go_intent=" + groupOwnerIntent);
String command = "P2P_CONNECT ";
for (String s : args) command += s + " ";
diff --git a/wifi/java/android/net/wifi/WifiStateMachine.java b/wifi/java/android/net/wifi/WifiStateMachine.java
index a85083d..b099202 100644
--- a/wifi/java/android/net/wifi/WifiStateMachine.java
+++ b/wifi/java/android/net/wifi/WifiStateMachine.java
@@ -184,6 +184,9 @@
private LinkProperties mLinkProperties;
+ /* Tracks sequence number on a periodic scan message */
+ private int mPeriodicScanToken = 0;
+
// Wakelock held during wifi start/stop and driver load/unload
private PowerManager.WakeLock mWakeLock;
@@ -331,6 +334,9 @@
static final int CMD_SET_SUSPEND_OPTIMIZATIONS = BASE + 86;
/* Clear suspend mode optimizations in the driver */
static final int CMD_CLEAR_SUSPEND_OPTIMIZATIONS = BASE + 87;
+ /* When there are no saved networks, we do a periodic scan to notify user of
+ * an open network */
+ static final int CMD_NO_NETWORKS_PERIODIC_SCAN = BASE + 88;
/* arg1 values to CMD_STOP_PACKET_FILTERING and CMD_START_PACKET_FILTERING */
static final int MULTICAST_V6 = 1;
@@ -385,10 +391,11 @@
private final int mDefaultFrameworkScanIntervalMs;
/**
- * Default supplicant scan interval in milliseconds.
- * {@link Settings.Secure#WIFI_SUPPLICANT_SCAN_INTERVAL_MS} can override this.
+ * Supplicant scan interval in milliseconds.
+ * Comes from {@link Settings.Secure#WIFI_SUPPLICANT_SCAN_INTERVAL_MS} or
+ * from the default config if the setting is not set
*/
- private final int mDefaultSupplicantScanIntervalMs;
+ private long mSupplicantScanIntervalMs;
/**
* Minimum time interval between enabling all networks.
@@ -568,9 +575,6 @@
mDefaultFrameworkScanIntervalMs = mContext.getResources().getInteger(
com.android.internal.R.integer.config_wifi_framework_scan_interval);
- mDefaultSupplicantScanIntervalMs = mContext.getResources().getInteger(
- com.android.internal.R.integer.config_wifi_supplicant_scan_interval);
-
mDriverStopDelayMs = mContext.getResources().getInteger(
com.android.internal.R.integer.config_wifi_driver_stop_delay);
@@ -1813,8 +1817,7 @@
replyToMessage(message, message.what, FAILURE);
break;
case CMD_GET_CONFIGURED_NETWORKS:
- replyToMessage(message, message.what,
- mWifiConfigStore.getConfiguredNetworks());
+ replyToMessage(message, message.what, (List<WifiConfiguration>) null);
break;
case CMD_ENABLE_RSSI_POLL:
mEnableRssiPolling = (message.arg1 == 1);
@@ -1870,6 +1873,7 @@
case WifiWatchdogStateMachine.POOR_LINK_DETECTED:
case WifiWatchdogStateMachine.GOOD_LINK_DETECTED:
case CMD_CLEAR_SUSPEND_OPTIMIZATIONS:
+ case CMD_NO_NETWORKS_PERIODIC_SCAN:
break;
case CMD_SET_SUSPEND_OPTIMIZATIONS:
mSuspendWakeLock.release();
@@ -2269,11 +2273,15 @@
mIsScanMode = false;
/* Wifi is available as long as we have a connection to supplicant */
mNetworkInfo.setIsAvailable(true);
- /* Set scan interval */
- long supplicantScanIntervalMs = Settings.Secure.getLong(mContext.getContentResolver(),
+
+ int defaultInterval = mContext.getResources().getInteger(
+ com.android.internal.R.integer.config_wifi_supplicant_scan_interval);
+
+ mSupplicantScanIntervalMs = Settings.Secure.getLong(mContext.getContentResolver(),
Settings.Secure.WIFI_SUPPLICANT_SCAN_INTERVAL_MS,
- mDefaultSupplicantScanIntervalMs);
- mWifiNative.setScanInterval((int)supplicantScanIntervalMs / 1000);
+ defaultInterval);
+
+ mWifiNative.setScanInterval((int)mSupplicantScanIntervalMs / 1000);
}
@Override
public boolean processMessage(Message message) {
@@ -2353,6 +2361,10 @@
}
}
break;
+ case CMD_GET_CONFIGURED_NETWORKS:
+ replyToMessage(message, message.what,
+ mWifiConfigStore.getConfiguredNetworks());
+ break;
/* Cannot start soft AP while in client mode */
case CMD_START_AP:
loge("Failed to start soft AP with a running supplicant");
@@ -3270,11 +3282,39 @@
} else {
setScanAlarm(true);
}
+
+ /**
+ * If we have no networks saved, the supplicant stops doing the periodic scan.
+ * The scans are useful to notify the user of the presence of an open network.
+ * Note that these are not wake up scans.
+ */
+ if (mWifiConfigStore.getConfiguredNetworks().size() == 0) {
+ sendMessageDelayed(obtainMessage(CMD_NO_NETWORKS_PERIODIC_SCAN,
+ ++mPeriodicScanToken, 0), mSupplicantScanIntervalMs);
+ }
}
@Override
public boolean processMessage(Message message) {
if (DBG) log(getName() + message.toString() + "\n");
+ boolean ret = HANDLED;
switch (message.what) {
+ case CMD_NO_NETWORKS_PERIODIC_SCAN:
+ if (message.arg1 == mPeriodicScanToken &&
+ mWifiConfigStore.getConfiguredNetworks().size() == 0) {
+ sendMessage(CMD_START_SCAN);
+ sendMessageDelayed(obtainMessage(CMD_NO_NETWORKS_PERIODIC_SCAN,
+ ++mPeriodicScanToken, 0), mSupplicantScanIntervalMs);
+ }
+ break;
+ case WifiManager.FORGET_NETWORK:
+ case CMD_REMOVE_NETWORK:
+ // Set up a delayed message here. After the forget/remove is handled
+ // the handled delayed message will determine if there is a need to
+ // scan and continue
+ sendMessageDelayed(obtainMessage(CMD_NO_NETWORKS_PERIODIC_SCAN,
+ ++mPeriodicScanToken, 0), mSupplicantScanIntervalMs);
+ ret = NOT_HANDLED;
+ break;
case CMD_SET_SCAN_MODE:
if (message.arg1 == SCAN_ONLY_MODE) {
mWifiNative.setScanResultHandling(message.arg1);
@@ -3301,25 +3341,28 @@
StateChangeResult stateChangeResult = (StateChangeResult) message.obj;
setNetworkDetailedState(WifiInfo.getDetailedStateOf(stateChangeResult.state));
/* ConnectModeState does the rest of the handling */
- return NOT_HANDLED;
+ ret = NOT_HANDLED;
+ break;
case CMD_START_SCAN:
/* Disable background scan temporarily during a regular scan */
if (mEnableBackgroundScan) {
mWifiNative.enableBackgroundScan(false);
}
/* Handled in parent state */
- return NOT_HANDLED;
+ ret = NOT_HANDLED;
+ break;
case WifiMonitor.SCAN_RESULTS_EVENT:
/* Re-enable background scan when a pending scan result is received */
if (mEnableBackgroundScan && mScanResultIsPending) {
mWifiNative.enableBackgroundScan(true);
}
/* Handled in parent state */
- return NOT_HANDLED;
+ ret = NOT_HANDLED;
+ break;
default:
- return NOT_HANDLED;
+ ret = NOT_HANDLED;
}
- return HANDLED;
+ return ret;
}
@Override
diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pProvDiscEvent.java b/wifi/java/android/net/wifi/p2p/WifiP2pProvDiscEvent.java
index f70abe8..b3f34b4 100644
--- a/wifi/java/android/net/wifi/p2p/WifiP2pProvDiscEvent.java
+++ b/wifi/java/android/net/wifi/p2p/WifiP2pProvDiscEvent.java
@@ -50,19 +50,10 @@
/**
* @param string formats supported include
*
- * P2P-PROV-DISC-PBC-REQ 42:fc:89:e1:e2:27 p2p_dev_addr=42:fc:89:e1:e2:27
- * pri_dev_type=1-0050F204-1 name='p2p-TEST2' config_methods=0x188 dev_capab=0x27
- * group_capab=0x0
- *
+ * P2P-PROV-DISC-PBC-REQ 42:fc:89:e1:e2:27
* P2P-PROV-DISC-PBC-RESP 02:12:47:f2:5a:36
- *
- * P2P-PROV-DISC-ENTER-PIN 42:fc:89:e1:e2:27 p2p_dev_addr=42:fc:89:e1:e2:27
- * pri_dev_type=1-0050F204-1 name='p2p-TEST2' config_methods=0x188 dev_capab=0x27
- * group_capab=0x0
- *
- * P2P-PROV-DISC-SHOW-PIN 42:fc:89:e1:e2:27 44490607 p2p_dev_addr=42:fc:89:e1:e2:27
- * pri_dev_type=1-0050F204-1 name='p2p-TEST2' config_methods=0x188 dev_capab=0x27
- * group_capab=0x0
+ * P2P-PROV-DISC-ENTER-PIN 42:fc:89:e1:e2:27
+ * P2P-PROV-DISC-SHOW-PIN 42:fc:89:e1:e2:27 44490607
*
* Note: The events formats can be looked up in the wpa_supplicant code
* @hide
@@ -80,51 +71,12 @@
else if (tokens[0].endsWith("SHOW-PIN")) event = SHOW_PIN;
else throw new IllegalArgumentException("Malformed event " + string);
+
device = new WifiP2pDevice();
+ device.deviceAddress = tokens[1];
- for (String token : tokens) {
- String[] nameValue = token.split("=");
- if (nameValue.length != 2) {
- //mac address without key is device address
- if (token.matches("(([0-9a-f]{2}:){5}[0-9a-f]{2})")) {
- device.deviceAddress = token;
- } else if (token.matches("[0-9]+")) {
- pin = token;
- } else {
- //ignore;
- }
- continue;
- }
-
- if (nameValue[0].equals("p2p_dev_addr")) {
- device.deviceAddress = nameValue[1];
- continue;
- }
-
- if (nameValue[0].equals("pri_dev_type")) {
- device.primaryDeviceType = nameValue[1];
- continue;
- }
-
- if (nameValue[0].equals("name")) {
- device.deviceName = trimQuotes(nameValue[1]);
- continue;
- }
-
- if (nameValue[0].equals("config_methods")) {
- device.wpsConfigMethodsSupported = parseHex(nameValue[1]);
- continue;
- }
-
- if (nameValue[0].equals("dev_capab")) {
- device.deviceCapability = parseHex(nameValue[1]);
- continue;
- }
-
- if (nameValue[0].equals("group_capab")) {
- device.groupCapability = parseHex(nameValue[1]);
- continue;
- }
+ if (event == SHOW_PIN) {
+ pin = tokens[2];
}
}
@@ -135,27 +87,4 @@
sbuf.append("\n pin: ").append(pin);
return sbuf.toString();
}
-
- private String trimQuotes(String str) {
- str = str.trim();
- if (str.startsWith("'") && str.endsWith("'")) {
- return str.substring(1, str.length()-1);
- }
- return str;
- }
-
- //supported formats: 0x1abc, 0X1abc, 1abc
- private int parseHex(String hexString) {
- int num = 0;
- if (hexString.startsWith("0x") || hexString.startsWith("0X")) {
- hexString = hexString.substring(2);
- }
-
- try {
- num = Integer.parseInt(hexString, 16);
- } catch(NumberFormatException e) {
- Log.e(TAG, "Failed to parse hex string " + hexString);
- }
- return num;
- }
}
diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pService.java b/wifi/java/android/net/wifi/p2p/WifiP2pService.java
index f0adb25..b4a879a 100644
--- a/wifi/java/android/net/wifi/p2p/WifiP2pService.java
+++ b/wifi/java/android/net/wifi/p2p/WifiP2pService.java
@@ -88,7 +88,7 @@
import java.util.List;
/**
- * WifiP2pService inclues a state machine to perform Wi-Fi p2p operations. Applications
+ * WifiP2pService includes a state machine to perform Wi-Fi p2p operations. Applications
* communicate with this service to issue device discovery and connectivity requests
* through the WifiP2pManager interface. The state machine communicates with the wifi
* driver through wpa_supplicant and handles the event responses through WifiMonitor.
@@ -432,9 +432,10 @@
loge("Unexpected group creation, remove " + mGroup);
mWifiNative.p2pGroupRemove(mGroup.getInterface());
break;
+ // A group formation failure is always followed by
+ // a group removed event. Flushing things at group formation
+ // failure causes supplicant issues. Ignore right now.
case WifiMonitor.P2P_GROUP_FORMATION_FAILURE_EVENT:
- loge("Unexpected group failure, flush peers");
- mWifiNative.p2pFlush();
break;
default:
loge("Unhandled message " + message);
@@ -838,8 +839,10 @@
//group negotiation comes through causes issues
break;
case WifiP2pManager.CREATE_GROUP:
- mAutonomousGroup = true;
- if (mWifiNative.p2pGroupAdd()) {
+ mAutonomousGroup = true;
+ // An autonomous GO requires group idle settings to be reset
+ mWifiNative.setP2pGroupIdle(0);
+ if (mWifiNative.p2pGroupAdd()) {
replyToMessage(message, WifiP2pManager.CREATE_GROUP_SUCCEEDED);
} else {
replyToMessage(message, WifiP2pManager.CREATE_GROUP_FAILED,
@@ -860,6 +863,11 @@
if (DBG) logd(getName());
sendMessageDelayed(obtainMessage(GROUP_CREATING_TIMED_OUT,
++mGroupCreatingTimeoutIndex, 0), GROUP_CREATING_WAIT_TIME_MS);
+
+ // Set default group idle settings
+ if (!mAutonomousGroup) {
+ mWifiNative.setP2pGroupIdle(GROUP_IDLE_TIME_S);
+ }
}
@Override
@@ -882,7 +890,7 @@
//Do a supplicant p2p_cancel which only cancels an ongoing
//group negotiation. This will fail for a pending provision
//discovery or for a pending user action, but at the framework
- //level, we always treat cancel as succeded and enter
+ //level, we always treat cancel as succeeded and enter
//an inactive state
mWifiNative.p2pCancelConnect();
handleGroupCreationFailure();
@@ -1034,11 +1042,16 @@
transitionTo(mGroupCreatedState);
break;
case WifiMonitor.P2P_GO_NEGOTIATION_FAILURE_EVENT:
- case WifiMonitor.P2P_GROUP_FORMATION_FAILURE_EVENT:
+ case WifiMonitor.P2P_GROUP_REMOVED_EVENT:
if (DBG) logd(getName() + " go failure");
handleGroupCreationFailure();
transitionTo(mInactiveState);
break;
+ // A group formation failure is always followed by
+ // a group removed event. Flushing things at group formation
+ // failure causes supplicant issues. Ignore right now.
+ case WifiMonitor.P2P_GROUP_FORMATION_FAILURE_EVENT:
+ break;
default:
return NOT_HANDLED;
}
@@ -1061,10 +1074,6 @@
setWifiP2pInfoOnGroupFormation(SERVER_ADDRESS);
sendP2pConnectionChangedBroadcast();
}
-
- if (!mAutonomousGroup) {
- mWifiNative.setP2pGroupIdle(mGroup.getInterface(), GROUP_IDLE_TIME_S);
- }
}
@Override
@@ -1155,6 +1164,7 @@
mGroup = null;
mWifiNative.p2pFlush();
+ mServiceDiscReqId = null;
if (changed) sendP2pPeersChangedBroadcast();
transitionTo(mInactiveState);
break;
@@ -1537,13 +1547,13 @@
mWifiNative.setPersistentReconnect(true);
mThisDevice.deviceName = getPersistedDeviceName();
mWifiNative.setDeviceName(mThisDevice.deviceName);
- //DIRECT-XY-DEVICENAME (XY is randomly generated)
+ // DIRECT-XY-DEVICENAME (XY is randomly generated)
mWifiNative.setP2pSsidPostfix("-" + mThisDevice.deviceName);
mWifiNative.setDeviceType(mThisDevice.primaryDeviceType);
- //The supplicant default is to support everything, but a bug necessitates
- //the framework to specify this explicitly
- mWifiNative.setConfigMethods("keypad display push_button");
- //STA has higher priority over P2P
+ // Supplicant defaults to using virtual display with display
+ // which refers to a remote display. Use physical_display
+ mWifiNative.setConfigMethods("virtual_push_button physical_display keypad");
+ // STA has higher priority over P2P
mWifiNative.setConcurrencyPriority("sta");
mThisDevice.deviceAddress = mWifiNative.p2pGetDeviceAddress();
@@ -1567,11 +1577,12 @@
/* After cancelling group formation, new connections on existing peers can fail
* at supplicant. Flush and restart discovery */
mWifiNative.p2pFlush();
+ mServiceDiscReqId = null;
sendMessage(WifiP2pManager.DISCOVER_PEERS);
}
//State machine initiated requests can have replyTo set to null indicating
- //there are no recepients, we ignore those reply actions
+ //there are no recipients, we ignore those reply actions
private void replyToMessage(Message msg, int what) {
if (msg.replyTo == null) return;
Message dstMsg = obtainMessage(msg);
@@ -1650,7 +1661,7 @@
mServiceDiscReqId = null;
}
- /* TODO: We could track individual service adds seperately and avoid
+ /* TODO: We could track individual service adds separately and avoid
* having to do update all service requests on every new request
*/
private boolean addServiceRequest(Messenger m, WifiP2pServiceRequest req) {