diff options
134 files changed, 1980 insertions, 2116 deletions
diff --git a/api/current.txt b/api/current.txt index ef2c4da..e9e2d04 100644 --- a/api/current.txt +++ b/api/current.txt @@ -3985,48 +3985,6 @@ package android.app { field public java.lang.String serviceDetails; } - public final class AssistAction { - method public static void updateAssistData(android.os.Bundle, android.os.Bundle); - field public static final java.lang.String ASSIST_ACTION_KEY = "android:assist_action"; - field public static final java.lang.String KEY_ACTION_OBJECT = "object"; - field public static final java.lang.String KEY_ACTION_STATUS = "actionStatus"; - field public static final java.lang.String KEY_DESCRIPTION = "description"; - field public static final java.lang.String KEY_ID = "@id"; - field public static final java.lang.String KEY_NAME = "name"; - field public static final java.lang.String KEY_TYPE = "@type"; - field public static final java.lang.String KEY_URL = "url"; - field public static final java.lang.String STATUS_TYPE_ACTIVE = "ActiveActionStatus"; - field public static final java.lang.String STATUS_TYPE_COMPLETED = "CompletedActionStatus"; - field public static final java.lang.String TYPE_ADD_ACTION = "AddAction"; - field public static final java.lang.String TYPE_BOOKMARK_ACTION = "BookmarkAction"; - field public static final java.lang.String TYPE_LIKE_ACTION = "LikeAction"; - field public static final java.lang.String TYPE_LISTEN_ACTION = "ListenAction"; - field public static final java.lang.String TYPE_VIEW_ACTION = "ViewAction"; - field public static final java.lang.String TYPE_WANT_ACTION = "WantAction"; - field public static final java.lang.String TYPE_WATCH_ACTION = "WatchAction"; - } - - public static final class AssistAction.ActionBuilder { - ctor public AssistAction.ActionBuilder(); - method public android.os.Bundle build(); - method public android.app.AssistAction.ActionBuilder set(java.lang.String, java.lang.String); - method public android.app.AssistAction.ActionBuilder set(java.lang.String, android.os.Bundle); - method public android.app.AssistAction.ActionBuilder setObject(android.os.Bundle); - method public android.app.AssistAction.ActionBuilder setType(java.lang.String); - } - - public static final class AssistAction.ThingBuilder { - ctor public AssistAction.ThingBuilder(); - method public android.os.Bundle build(); - method public android.app.AssistAction.ThingBuilder set(java.lang.String, java.lang.String); - method public android.app.AssistAction.ThingBuilder set(java.lang.String, android.os.Bundle); - method public android.app.AssistAction.ThingBuilder setDescription(java.lang.String); - method public android.app.AssistAction.ThingBuilder setId(java.lang.String); - method public android.app.AssistAction.ThingBuilder setName(java.lang.String); - method public android.app.AssistAction.ThingBuilder setType(java.lang.String); - method public android.app.AssistAction.ThingBuilder setUrl(android.net.Uri); - } - public class AssistContent implements android.os.Parcelable { ctor public AssistContent(); method public int describeContents(); @@ -6161,7 +6119,7 @@ package android.app.usage { } public final class UsageStatsManager { - method public boolean isAppIdle(java.lang.String); + method public boolean isAppInactive(java.lang.String); method public java.util.Map<java.lang.String, android.app.usage.UsageStats> queryAndAggregateUsageStats(long, long); method public java.util.List<android.app.usage.ConfigurationStats> queryConfigurations(int, long, long); method public android.app.usage.UsageEvents queryEvents(long, long); @@ -7763,7 +7721,6 @@ package android.content { field public static final java.lang.String ALARM_SERVICE = "alarm"; field public static final java.lang.String APPWIDGET_SERVICE = "appwidget"; field public static final java.lang.String APP_OPS_SERVICE = "appops"; - field public static final java.lang.String AUDIO_DEVICES_SERVICE = "audio_devices_manager"; field public static final java.lang.String AUDIO_SERVICE = "audio"; field public static final java.lang.String BATTERY_SERVICE = "batterymanager"; field public static final int BIND_ABOVE_CLIENT = 8; // 0x8 @@ -8294,7 +8251,6 @@ package android.content { field public static final java.lang.String EXTRA_CHANGED_PACKAGE_LIST = "android.intent.extra.changed_package_list"; field public static final java.lang.String EXTRA_CHANGED_UID_LIST = "android.intent.extra.changed_uid_list"; field public static final java.lang.String EXTRA_CHOOSER_REFINEMENT_INTENT_SENDER = "android.intent.extra.CHOOSER_REFINEMENT_INTENT_SENDER"; - field public static final java.lang.String EXTRA_CHOOSER_TARGETS = "android.intent.extra.CHOOSER_TARGETS"; field public static final java.lang.String EXTRA_CHOSEN_COMPONENT = "android.intent.extra.CHOSEN_COMPONENT"; field public static final java.lang.String EXTRA_CHOSEN_COMPONENT_INTENT_SENDER = "android.intent.extra.CHOSEN_COMPONENT_INTENT_SENDER"; field public static final java.lang.String EXTRA_DATA_REMOVED = "android.intent.extra.DATA_REMOVED"; @@ -14728,12 +14684,12 @@ package android.media { method public android.media.AudioAttributes.Builder setUsage(int); } - public class AudioDeviceInfo { - method public java.lang.String getAddress(); + public final class AudioDeviceInfo { method public int[] getChannelCounts(); method public int[] getChannelMasks(); method public int[] getFormats(); - method public java.lang.String getName(); + method public int getId(); + method public java.lang.CharSequence getName(); method public int[] getSampleRates(); method public int getType(); method public boolean isSink(); @@ -14760,15 +14716,6 @@ package android.media { field public static final int TYPE_WIRED_HEADSET = 3; // 0x3 } - public class AudioDevicesManager { - method public void addOnAudioDeviceConnectionListener(android.media.OnAudioDeviceConnectionListener, android.os.Handler); - method public android.media.AudioDeviceInfo[] listDevices(int); - method public void removeOnAudioDeviceConnectionListener(android.media.OnAudioDeviceConnectionListener); - field public static final int LIST_DEVICES_ALL = 3; // 0x3 - field public static final int LIST_DEVICES_INPUTS = 1; // 0x1 - field public static final int LIST_DEVICES_OUTPUTS = 2; // 0x2 - } - public class AudioFormat { method public int getChannelCount(); method public int getChannelIndexMask(); @@ -14839,11 +14786,13 @@ package android.media { public class AudioManager { method public int abandonAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener); + method public void addOnAudioDeviceConnectionListener(android.media.OnAudioDeviceConnectionListener, android.os.Handler); method public void adjustStreamVolume(int, int, int); method public void adjustSuggestedStreamVolume(int, int, int); method public void adjustVolume(int, int); method public void dispatchMediaKeyEvent(android.view.KeyEvent); method public int generateAudioSessionId(); + method public android.media.AudioDeviceInfo[] getDevices(int); method public int getMode(); method public java.lang.String getParameters(java.lang.String); method public java.lang.String getProperty(java.lang.String); @@ -14868,6 +14817,7 @@ package android.media { method public deprecated void registerMediaButtonEventReceiver(android.app.PendingIntent); method public deprecated void registerRemoteControlClient(android.media.RemoteControlClient); method public deprecated boolean registerRemoteController(android.media.RemoteController); + method public void removeOnAudioDeviceConnectionListener(android.media.OnAudioDeviceConnectionListener); method public int requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, int, int); method public deprecated void setBluetoothA2dpOn(boolean); method public void setBluetoothScoOn(boolean); @@ -14936,6 +14886,9 @@ package android.media { field public static final int FX_KEYPRESS_SPACEBAR = 6; // 0x6 field public static final int FX_KEYPRESS_STANDARD = 5; // 0x5 field public static final int FX_KEY_CLICK = 0; // 0x0 + field public static final int GET_DEVICES_ALL = 3; // 0x3 + field public static final int GET_DEVICES_INPUTS = 1; // 0x1 + field public static final int GET_DEVICES_OUTPUTS = 2; // 0x2 field public static final int MODE_CURRENT = -1; // 0xffffffff field public static final int MODE_INVALID = -2; // 0xfffffffe field public static final int MODE_IN_CALL = 2; // 0x2 @@ -14984,7 +14937,7 @@ package android.media { public class AudioRecord { ctor public AudioRecord(int, int, int, int, int) throws java.lang.IllegalArgumentException; - method public void addOnAudioRecordRoutingListener(android.media.OnAudioRecordRoutingListener, android.os.Handler); + method public void addOnRoutingChangedListener(android.media.AudioRecord.OnRoutingChangedListener, android.os.Handler); method public int getAudioFormat(); method public int getAudioSessionId(); method public int getAudioSource(); @@ -14995,7 +14948,7 @@ package android.media { method public int getNativeFrameCount() throws java.lang.IllegalStateException; method public int getNotificationMarkerPosition(); method public int getPositionNotificationPeriod(); - method public android.media.AudioDeviceInfo getPreferredInputDevice(); + method public android.media.AudioDeviceInfo getPreferredDevice(); method public int getRecordingState(); method public android.media.AudioDeviceInfo getRoutedDevice(); method public int getSampleRate(); @@ -15008,10 +14961,10 @@ package android.media { method public int read(java.nio.ByteBuffer, int); method public int read(java.nio.ByteBuffer, int, int); method public void release(); - method public void removeOnAudioRecordRoutingListener(android.media.OnAudioRecordRoutingListener); + method public void removeOnRoutingChangedListener(android.media.AudioRecord.OnRoutingChangedListener); method public int setNotificationMarkerPosition(int); method public int setPositionNotificationPeriod(int); - method public boolean setPreferredInputDevice(android.media.AudioDeviceInfo); + method public boolean setPreferredDevice(android.media.AudioDeviceInfo); method public void setRecordPositionUpdateListener(android.media.AudioRecord.OnRecordPositionUpdateListener); method public void setRecordPositionUpdateListener(android.media.AudioRecord.OnRecordPositionUpdateListener, android.os.Handler); method public void startRecording() throws java.lang.IllegalStateException; @@ -15033,8 +14986,8 @@ package android.media { ctor public AudioRecord.Builder(); method public android.media.AudioRecord build() throws java.lang.UnsupportedOperationException; method public android.media.AudioRecord.Builder setAudioFormat(android.media.AudioFormat) throws java.lang.IllegalArgumentException; + method public android.media.AudioRecord.Builder setAudioSource(int) throws java.lang.IllegalArgumentException; method public android.media.AudioRecord.Builder setBufferSizeInBytes(int) throws java.lang.IllegalArgumentException; - method public android.media.AudioRecord.Builder setCapturePreset(int) throws java.lang.IllegalArgumentException; } public static abstract interface AudioRecord.OnRecordPositionUpdateListener { @@ -15042,6 +14995,10 @@ package android.media { method public abstract void onPeriodicNotification(android.media.AudioRecord); } + public static abstract interface AudioRecord.OnRoutingChangedListener { + method public abstract void onRoutingChanged(android.media.AudioRecord); + } + public final class AudioTimestamp { ctor public AudioTimestamp(); field public long framePosition; @@ -15052,7 +15009,7 @@ package android.media { ctor public AudioTrack(int, int, int, int, int, int) throws java.lang.IllegalArgumentException; ctor public AudioTrack(int, int, int, int, int, int, int) throws java.lang.IllegalArgumentException; ctor public AudioTrack(android.media.AudioAttributes, android.media.AudioFormat, int, int, int) throws java.lang.IllegalArgumentException; - method public void addOnAudioTrackRoutingListener(android.media.OnAudioTrackRoutingListener, android.os.Handler); + method public void addOnRoutingChangedListener(android.media.AudioTrack.OnRoutingChangedListener, android.os.Handler); method public int attachAuxEffect(int); method public void flush(); method public int getAudioFormat(); @@ -15071,7 +15028,7 @@ package android.media { method public android.media.PlaybackParams getPlaybackParams(); method public int getPlaybackRate(); method public int getPositionNotificationPeriod(); - method public android.media.AudioDeviceInfo getPreferredOutputDevice(); + method public android.media.AudioDeviceInfo getPreferredDevice(); method public android.media.AudioDeviceInfo getRoutedDevice(); method public int getSampleRate(); method public int getState(); @@ -15081,7 +15038,7 @@ package android.media { method public void play() throws java.lang.IllegalStateException; method public void release(); method public int reloadStaticData(); - method public void removeOnAudioTrackRoutingListener(android.media.OnAudioTrackRoutingListener); + method public void removeOnRoutingChangedListener(android.media.AudioTrack.OnRoutingChangedListener); method public int setAuxEffectSendLevel(float); method public int setLoopPoints(int, int, int); method public int setNotificationMarkerPosition(int); @@ -15091,7 +15048,7 @@ package android.media { method public void setPlaybackPositionUpdateListener(android.media.AudioTrack.OnPlaybackPositionUpdateListener, android.os.Handler); method public int setPlaybackRate(int); method public int setPositionNotificationPeriod(int); - method public boolean setPreferredOutputDevice(android.media.AudioDeviceInfo); + method public boolean setPreferredDevice(android.media.AudioDeviceInfo); method protected deprecated void setState(int); method public deprecated int setStereoVolume(float, float); method public int setVolume(float); @@ -15134,6 +15091,10 @@ package android.media { method public abstract void onPeriodicNotification(android.media.AudioTrack); } + public static abstract interface AudioTrack.OnRoutingChangedListener { + method public abstract void onRoutingChanged(android.media.AudioTrack); + } + public class CamcorderProfile { method public static android.media.CamcorderProfile get(int); method public static android.media.CamcorderProfile get(int, int); @@ -16501,14 +16462,6 @@ package android.media { method public abstract void onAudioDeviceConnection(); } - public abstract interface OnAudioRecordRoutingListener { - method public abstract void onAudioRecordRouting(android.media.AudioRecord); - } - - public abstract interface OnAudioTrackRoutingListener { - method public abstract void onAudioTrackRouting(android.media.AudioTrack); - } - public final class PlaybackParams { ctor public PlaybackParams(); method public android.media.PlaybackParams allowDefaults(); @@ -28730,10 +28683,8 @@ package android.service.chooser { public final class ChooserTarget implements android.os.Parcelable { ctor public ChooserTarget(java.lang.CharSequence, android.graphics.Bitmap, float, android.app.PendingIntent); ctor public ChooserTarget(java.lang.CharSequence, android.graphics.Bitmap, float, android.content.IntentSender); - ctor public ChooserTarget(java.lang.CharSequence, android.graphics.Bitmap, float, android.content.Intent); method public int describeContents(); method public android.graphics.Bitmap getIcon(); - method public android.content.Intent getIntent(); method public android.content.IntentSender getIntentSender(); method public float getScore(); method public java.lang.CharSequence getTitle(); diff --git a/api/system-current.txt b/api/system-current.txt index 4508b20..5ff1b99 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -4077,48 +4077,6 @@ package android.app { field public java.lang.String serviceDetails; } - public final class AssistAction { - method public static void updateAssistData(android.os.Bundle, android.os.Bundle); - field public static final java.lang.String ASSIST_ACTION_KEY = "android:assist_action"; - field public static final java.lang.String KEY_ACTION_OBJECT = "object"; - field public static final java.lang.String KEY_ACTION_STATUS = "actionStatus"; - field public static final java.lang.String KEY_DESCRIPTION = "description"; - field public static final java.lang.String KEY_ID = "@id"; - field public static final java.lang.String KEY_NAME = "name"; - field public static final java.lang.String KEY_TYPE = "@type"; - field public static final java.lang.String KEY_URL = "url"; - field public static final java.lang.String STATUS_TYPE_ACTIVE = "ActiveActionStatus"; - field public static final java.lang.String STATUS_TYPE_COMPLETED = "CompletedActionStatus"; - field public static final java.lang.String TYPE_ADD_ACTION = "AddAction"; - field public static final java.lang.String TYPE_BOOKMARK_ACTION = "BookmarkAction"; - field public static final java.lang.String TYPE_LIKE_ACTION = "LikeAction"; - field public static final java.lang.String TYPE_LISTEN_ACTION = "ListenAction"; - field public static final java.lang.String TYPE_VIEW_ACTION = "ViewAction"; - field public static final java.lang.String TYPE_WANT_ACTION = "WantAction"; - field public static final java.lang.String TYPE_WATCH_ACTION = "WatchAction"; - } - - public static final class AssistAction.ActionBuilder { - ctor public AssistAction.ActionBuilder(); - method public android.os.Bundle build(); - method public android.app.AssistAction.ActionBuilder set(java.lang.String, java.lang.String); - method public android.app.AssistAction.ActionBuilder set(java.lang.String, android.os.Bundle); - method public android.app.AssistAction.ActionBuilder setObject(android.os.Bundle); - method public android.app.AssistAction.ActionBuilder setType(java.lang.String); - } - - public static final class AssistAction.ThingBuilder { - ctor public AssistAction.ThingBuilder(); - method public android.os.Bundle build(); - method public android.app.AssistAction.ThingBuilder set(java.lang.String, java.lang.String); - method public android.app.AssistAction.ThingBuilder set(java.lang.String, android.os.Bundle); - method public android.app.AssistAction.ThingBuilder setDescription(java.lang.String); - method public android.app.AssistAction.ThingBuilder setId(java.lang.String); - method public android.app.AssistAction.ThingBuilder setName(java.lang.String); - method public android.app.AssistAction.ThingBuilder setType(java.lang.String); - method public android.app.AssistAction.ThingBuilder setUrl(android.net.Uri); - } - public class AssistContent implements android.os.Parcelable { ctor public AssistContent(); method public int describeContents(); @@ -6350,7 +6308,7 @@ package android.app.usage { } public final class UsageStatsManager { - method public boolean isAppIdle(java.lang.String); + method public boolean isAppInactive(java.lang.String); method public java.util.Map<java.lang.String, android.app.usage.UsageStats> queryAndAggregateUsageStats(long, long); method public java.util.List<android.app.usage.ConfigurationStats> queryConfigurations(int, long, long); method public android.app.usage.UsageEvents queryEvents(long, long); @@ -7978,7 +7936,6 @@ package android.content { field public static final java.lang.String ALARM_SERVICE = "alarm"; field public static final java.lang.String APPWIDGET_SERVICE = "appwidget"; field public static final java.lang.String APP_OPS_SERVICE = "appops"; - field public static final java.lang.String AUDIO_DEVICES_SERVICE = "audio_devices_manager"; field public static final java.lang.String AUDIO_SERVICE = "audio"; field public static final java.lang.String BACKUP_SERVICE = "backup"; field public static final java.lang.String BATTERY_SERVICE = "batterymanager"; @@ -8520,7 +8477,6 @@ package android.content { field public static final java.lang.String EXTRA_CHANGED_PACKAGE_LIST = "android.intent.extra.changed_package_list"; field public static final java.lang.String EXTRA_CHANGED_UID_LIST = "android.intent.extra.changed_uid_list"; field public static final java.lang.String EXTRA_CHOOSER_REFINEMENT_INTENT_SENDER = "android.intent.extra.CHOOSER_REFINEMENT_INTENT_SENDER"; - field public static final java.lang.String EXTRA_CHOOSER_TARGETS = "android.intent.extra.CHOOSER_TARGETS"; field public static final java.lang.String EXTRA_CHOSEN_COMPONENT = "android.intent.extra.CHOSEN_COMPONENT"; field public static final java.lang.String EXTRA_CHOSEN_COMPONENT_INTENT_SENDER = "android.intent.extra.CHOSEN_COMPONENT_INTENT_SENDER"; field public static final java.lang.String EXTRA_DATA_REMOVED = "android.intent.extra.DATA_REMOVED"; @@ -15926,12 +15882,12 @@ package android.media { method public android.media.AudioAttributes.Builder setUsage(int); } - public class AudioDeviceInfo { - method public java.lang.String getAddress(); + public final class AudioDeviceInfo { method public int[] getChannelCounts(); method public int[] getChannelMasks(); method public int[] getFormats(); - method public java.lang.String getName(); + method public int getId(); + method public java.lang.CharSequence getName(); method public int[] getSampleRates(); method public int getType(); method public boolean isSink(); @@ -15958,15 +15914,6 @@ package android.media { field public static final int TYPE_WIRED_HEADSET = 3; // 0x3 } - public class AudioDevicesManager { - method public void addOnAudioDeviceConnectionListener(android.media.OnAudioDeviceConnectionListener, android.os.Handler); - method public android.media.AudioDeviceInfo[] listDevices(int); - method public void removeOnAudioDeviceConnectionListener(android.media.OnAudioDeviceConnectionListener); - field public static final int LIST_DEVICES_ALL = 3; // 0x3 - field public static final int LIST_DEVICES_INPUTS = 1; // 0x1 - field public static final int LIST_DEVICES_OUTPUTS = 2; // 0x2 - } - public final class AudioFocusInfo implements android.os.Parcelable { method public int describeContents(); method public android.media.AudioAttributes getAttributes(); @@ -16050,11 +15997,13 @@ package android.media { public class AudioManager { method public int abandonAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener); method public int abandonAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, android.media.AudioAttributes); + method public void addOnAudioDeviceConnectionListener(android.media.OnAudioDeviceConnectionListener, android.os.Handler); method public void adjustStreamVolume(int, int, int); method public void adjustSuggestedStreamVolume(int, int, int); method public void adjustVolume(int, int); method public void dispatchMediaKeyEvent(android.view.KeyEvent); method public int generateAudioSessionId(); + method public android.media.AudioDeviceInfo[] getDevices(int); method public int getMode(); method public java.lang.String getParameters(java.lang.String); method public java.lang.String getProperty(java.lang.String); @@ -16081,6 +16030,7 @@ package android.media { method public deprecated void registerMediaButtonEventReceiver(android.app.PendingIntent); method public deprecated void registerRemoteControlClient(android.media.RemoteControlClient); method public deprecated boolean registerRemoteController(android.media.RemoteController); + method public void removeOnAudioDeviceConnectionListener(android.media.OnAudioDeviceConnectionListener); method public int requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, int, int); method public int requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, android.media.AudioAttributes, int, int) throws java.lang.IllegalArgumentException; method public int requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, android.media.AudioAttributes, int, int, android.media.audiopolicy.AudioPolicy) throws java.lang.IllegalArgumentException; @@ -16155,6 +16105,9 @@ package android.media { field public static final int FX_KEYPRESS_SPACEBAR = 6; // 0x6 field public static final int FX_KEYPRESS_STANDARD = 5; // 0x5 field public static final int FX_KEY_CLICK = 0; // 0x0 + field public static final int GET_DEVICES_ALL = 3; // 0x3 + field public static final int GET_DEVICES_INPUTS = 1; // 0x1 + field public static final int GET_DEVICES_OUTPUTS = 2; // 0x2 field public static final int MODE_CURRENT = -1; // 0xffffffff field public static final int MODE_INVALID = -2; // 0xfffffffe field public static final int MODE_IN_CALL = 2; // 0x2 @@ -16204,7 +16157,7 @@ package android.media { public class AudioRecord { ctor public AudioRecord(int, int, int, int, int) throws java.lang.IllegalArgumentException; ctor public AudioRecord(android.media.AudioAttributes, android.media.AudioFormat, int, int) throws java.lang.IllegalArgumentException; - method public void addOnAudioRecordRoutingListener(android.media.OnAudioRecordRoutingListener, android.os.Handler); + method public void addOnRoutingChangedListener(android.media.AudioRecord.OnRoutingChangedListener, android.os.Handler); method public int getAudioFormat(); method public int getAudioSessionId(); method public int getAudioSource(); @@ -16215,7 +16168,7 @@ package android.media { method public int getNativeFrameCount() throws java.lang.IllegalStateException; method public int getNotificationMarkerPosition(); method public int getPositionNotificationPeriod(); - method public android.media.AudioDeviceInfo getPreferredInputDevice(); + method public android.media.AudioDeviceInfo getPreferredDevice(); method public int getRecordingState(); method public android.media.AudioDeviceInfo getRoutedDevice(); method public int getSampleRate(); @@ -16228,10 +16181,10 @@ package android.media { method public int read(java.nio.ByteBuffer, int); method public int read(java.nio.ByteBuffer, int, int); method public void release(); - method public void removeOnAudioRecordRoutingListener(android.media.OnAudioRecordRoutingListener); + method public void removeOnRoutingChangedListener(android.media.AudioRecord.OnRoutingChangedListener); method public int setNotificationMarkerPosition(int); method public int setPositionNotificationPeriod(int); - method public boolean setPreferredInputDevice(android.media.AudioDeviceInfo); + method public boolean setPreferredDevice(android.media.AudioDeviceInfo); method public void setRecordPositionUpdateListener(android.media.AudioRecord.OnRecordPositionUpdateListener); method public void setRecordPositionUpdateListener(android.media.AudioRecord.OnRecordPositionUpdateListener, android.os.Handler); method public void startRecording() throws java.lang.IllegalStateException; @@ -16254,8 +16207,8 @@ package android.media { method public android.media.AudioRecord build() throws java.lang.UnsupportedOperationException; method public android.media.AudioRecord.Builder setAudioAttributes(android.media.AudioAttributes) throws java.lang.IllegalArgumentException; method public android.media.AudioRecord.Builder setAudioFormat(android.media.AudioFormat) throws java.lang.IllegalArgumentException; + method public android.media.AudioRecord.Builder setAudioSource(int) throws java.lang.IllegalArgumentException; method public android.media.AudioRecord.Builder setBufferSizeInBytes(int) throws java.lang.IllegalArgumentException; - method public android.media.AudioRecord.Builder setCapturePreset(int) throws java.lang.IllegalArgumentException; method public android.media.AudioRecord.Builder setSessionId(int) throws java.lang.IllegalArgumentException; } @@ -16264,6 +16217,10 @@ package android.media { method public abstract void onPeriodicNotification(android.media.AudioRecord); } + public static abstract interface AudioRecord.OnRoutingChangedListener { + method public abstract void onRoutingChanged(android.media.AudioRecord); + } + public final class AudioTimestamp { ctor public AudioTimestamp(); field public long framePosition; @@ -16274,7 +16231,7 @@ package android.media { ctor public AudioTrack(int, int, int, int, int, int) throws java.lang.IllegalArgumentException; ctor public AudioTrack(int, int, int, int, int, int, int) throws java.lang.IllegalArgumentException; ctor public AudioTrack(android.media.AudioAttributes, android.media.AudioFormat, int, int, int) throws java.lang.IllegalArgumentException; - method public void addOnAudioTrackRoutingListener(android.media.OnAudioTrackRoutingListener, android.os.Handler); + method public void addOnRoutingChangedListener(android.media.AudioTrack.OnRoutingChangedListener, android.os.Handler); method public int attachAuxEffect(int); method public void flush(); method public int getAudioFormat(); @@ -16293,7 +16250,7 @@ package android.media { method public android.media.PlaybackParams getPlaybackParams(); method public int getPlaybackRate(); method public int getPositionNotificationPeriod(); - method public android.media.AudioDeviceInfo getPreferredOutputDevice(); + method public android.media.AudioDeviceInfo getPreferredDevice(); method public android.media.AudioDeviceInfo getRoutedDevice(); method public int getSampleRate(); method public int getState(); @@ -16303,7 +16260,7 @@ package android.media { method public void play() throws java.lang.IllegalStateException; method public void release(); method public int reloadStaticData(); - method public void removeOnAudioTrackRoutingListener(android.media.OnAudioTrackRoutingListener); + method public void removeOnRoutingChangedListener(android.media.AudioTrack.OnRoutingChangedListener); method public int setAuxEffectSendLevel(float); method public int setLoopPoints(int, int, int); method public int setNotificationMarkerPosition(int); @@ -16313,7 +16270,7 @@ package android.media { method public void setPlaybackPositionUpdateListener(android.media.AudioTrack.OnPlaybackPositionUpdateListener, android.os.Handler); method public int setPlaybackRate(int); method public int setPositionNotificationPeriod(int); - method public boolean setPreferredOutputDevice(android.media.AudioDeviceInfo); + method public boolean setPreferredDevice(android.media.AudioDeviceInfo); method protected deprecated void setState(int); method public deprecated int setStereoVolume(float, float); method public int setVolume(float); @@ -16356,6 +16313,10 @@ package android.media { method public abstract void onPeriodicNotification(android.media.AudioTrack); } + public static abstract interface AudioTrack.OnRoutingChangedListener { + method public abstract void onRoutingChanged(android.media.AudioTrack); + } + public class CamcorderProfile { method public static android.media.CamcorderProfile get(int); method public static android.media.CamcorderProfile get(int, int); @@ -17726,14 +17687,6 @@ package android.media { method public abstract void onAudioDeviceConnection(); } - public abstract interface OnAudioRecordRoutingListener { - method public abstract void onAudioRecordRouting(android.media.AudioRecord); - } - - public abstract interface OnAudioTrackRoutingListener { - method public abstract void onAudioTrackRouting(android.media.AudioTrack); - } - public final class PlaybackParams { ctor public PlaybackParams(); method public android.media.PlaybackParams allowDefaults(); @@ -30744,10 +30697,8 @@ package android.service.chooser { public final class ChooserTarget implements android.os.Parcelable { ctor public ChooserTarget(java.lang.CharSequence, android.graphics.Bitmap, float, android.app.PendingIntent); ctor public ChooserTarget(java.lang.CharSequence, android.graphics.Bitmap, float, android.content.IntentSender); - ctor public ChooserTarget(java.lang.CharSequence, android.graphics.Bitmap, float, android.content.Intent); method public int describeContents(); method public android.graphics.Bitmap getIcon(); - method public android.content.Intent getIntent(); method public android.content.IntentSender getIntentSender(); method public float getScore(); method public java.lang.CharSequence getTitle(); diff --git a/cmds/am/src/com/android/commands/am/Am.java b/cmds/am/src/com/android/commands/am/Am.java index 219d35b..808e124 100644 --- a/cmds/am/src/com/android/commands/am/Am.java +++ b/cmds/am/src/com/android/commands/am/Am.java @@ -142,8 +142,8 @@ public class Am extends BaseCommand { " am task resizeable <TASK_ID> [true|false]\n" + " am task resize <TASK_ID> <LEFT,TOP,RIGHT,BOTTOM>\n" + " am get-config\n" + - " am set-idle [--user <USER_ID>] <PACKAGE> true|false\n" + - " am get-idle [--user <USER_ID>] <PACKAGE>\n" + + " am set-inactive [--user <USER_ID>] <PACKAGE> true|false\n" + + " am get-inactive [--user <USER_ID>] <PACKAGE>\n" + "\n" + "am start: start an Activity. Options are:\n" + " -D: enable debugging\n" + @@ -284,9 +284,9 @@ public class Am extends BaseCommand { "am get-config: retrieve the configuration and any recent configurations\n" + " of the device\n" + "\n" + - "am set-idle: sets the idle state of an app\n" + + "am set-inactive: sets the inactive state of an app\n" + "\n" + - "am get-idle: returns the idle state of an app\n" + + "am get-inactive: returns the inactive state of an app\n" + "\n" + "\n" + "<INTENT> specifications include these flags and arguments:\n" + @@ -395,10 +395,10 @@ public class Am extends BaseCommand { runTask(); } else if (op.equals("get-config")) { runGetConfig(); - } else if (op.equals("set-idle")) { - runSetIdle(); - } else if (op.equals("get-idle")) { - runGetIdle(); + } else if (op.equals("set-inactive")) { + runSetInactive(); + } else if (op.equals("get-inactive")) { + runGetInactive(); } else { showError("Error: unknown command '" + op + "'"); } @@ -2030,7 +2030,7 @@ public class Am extends BaseCommand { } } - private void runSetIdle() throws Exception { + private void runSetInactive() throws Exception { int userId = UserHandle.USER_OWNER; String opt; @@ -2047,10 +2047,10 @@ public class Am extends BaseCommand { IUsageStatsManager usm = IUsageStatsManager.Stub.asInterface(ServiceManager.getService( Context.USAGE_STATS_SERVICE)); - usm.setAppIdle(packageName, Boolean.parseBoolean(value), userId); + usm.setAppInactive(packageName, Boolean.parseBoolean(value), userId); } - private void runGetIdle() throws Exception { + private void runGetInactive() throws Exception { int userId = UserHandle.USER_OWNER; String opt; @@ -2066,7 +2066,7 @@ public class Am extends BaseCommand { IUsageStatsManager usm = IUsageStatsManager.Stub.asInterface(ServiceManager.getService( Context.USAGE_STATS_SERVICE)); - boolean isIdle = usm.isAppIdle(packageName, userId); + boolean isIdle = usm.isAppInactive(packageName, userId); System.out.println("Idle=" + isIdle); } diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java index 9968dbb..49f5099 100644 --- a/core/java/android/app/Activity.java +++ b/core/java/android/app/Activity.java @@ -3841,10 +3841,7 @@ public class Activity extends ContextThemeWrapper mStartedActivity = true; } - final View decor = mWindow != null ? mWindow.peekDecorView() : null; - if (decor != null) { - decor.cancelPendingInputEvents(); - } + cancelInputsAndStartExitTransition(options); // TODO Consider clearing/flushing other event sources and events for child windows. } else { if (options != null) { @@ -3855,6 +3852,18 @@ public class Activity extends ContextThemeWrapper mParent.startActivityFromChild(this, intent, requestCode); } } + } + + /** + * Cancels pending inputs and if an Activity Transition is to be run, starts the transition. + * + * @param options The ActivityOptions bundle used to start an Activity. + */ + private void cancelInputsAndStartExitTransition(Bundle options) { + final View decor = mWindow != null ? mWindow.peekDecorView() : null; + if (decor != null) { + decor.cancelPendingInputEvents(); + } if (options != null && !isTopOfTask()) { mActivityTransitionState.startExitOutTransition(this, options); } @@ -3872,9 +3881,6 @@ public class Activity extends ContextThemeWrapper */ public void startActivityForResultAsUser(Intent intent, int requestCode, @Nullable Bundle options, UserHandle user) { - if (options != null) { - mActivityTransitionState.startExitOutTransition(this, options); - } if (mParent != null) { throw new RuntimeException("Can't be called from a child"); } @@ -3896,10 +3902,7 @@ public class Activity extends ContextThemeWrapper mStartedActivity = true; } - final View decor = mWindow != null ? mWindow.peekDecorView() : null; - if (decor != null) { - decor.cancelPendingInputEvents(); - } + cancelInputsAndStartExitTransition(options); } /** @@ -3925,6 +3928,7 @@ public class Activity extends ContextThemeWrapper mToken, mEmbeddedID, -1, ar.getResultCode(), ar.getResultData()); } + cancelInputsAndStartExitTransition(options); } /** @@ -3948,6 +3952,7 @@ public class Activity extends ContextThemeWrapper mToken, mEmbeddedID, -1, ar.getResultCode(), ar.getResultData()); } + cancelInputsAndStartExitTransition(options); } /** @@ -4380,6 +4385,7 @@ public class Activity extends ContextThemeWrapper mToken, child.mEmbeddedID, requestCode, ar.getResultCode(), ar.getResultData()); } + cancelInputsAndStartExitTransition(options); } /** @@ -4431,9 +4437,6 @@ public class Activity extends ContextThemeWrapper @Override public void startActivityForResult( String who, Intent intent, int requestCode, @Nullable Bundle options) { - if (options != null) { - mActivityTransitionState.startExitOutTransition(this, options); - } Instrumentation.ActivityResult ar = mInstrumentation.execStartActivity( this, mMainThread.getApplicationThread(), mToken, who, @@ -4443,6 +4446,7 @@ public class Activity extends ContextThemeWrapper mToken, who, requestCode, ar.getResultCode(), ar.getResultData()); } + cancelInputsAndStartExitTransition(options); } /** diff --git a/core/java/android/app/ActivityTransitionCoordinator.java b/core/java/android/app/ActivityTransitionCoordinator.java index 968c956..fa81412 100644 --- a/core/java/android/app/ActivityTransitionCoordinator.java +++ b/core/java/android/app/ActivityTransitionCoordinator.java @@ -31,6 +31,7 @@ import android.view.View; import android.view.ViewGroup; import android.view.ViewGroupOverlay; import android.view.ViewParent; +import android.view.ViewRootImpl; import android.view.ViewTreeObserver; import android.view.Window; import android.widget.ImageView; @@ -187,11 +188,6 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver { */ public static final int MSG_SHARED_ELEMENT_DESTINATION = 107; - /** - * Send the shared element positions. - */ - public static final int MSG_SEND_SHARED_ELEMENT_DESTINATION = 108; - private Window mWindow; final protected ArrayList<String> mAllSharedElementNames; final protected ArrayList<View> mSharedElements = new ArrayList<View>(); @@ -207,6 +203,8 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver { new ArrayList<GhostViewListeners>(); private ArrayMap<View, Float> mOriginalAlphas = new ArrayMap<View, Float>(); private ArrayList<Matrix> mSharedElementParentMatrices; + private boolean mSharedElementTransitionComplete; + private boolean mViewsTransitionComplete; public ActivityTransitionCoordinator(Window window, ArrayList<String> allSharedElementNames, @@ -219,6 +217,11 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver { } protected void viewsReady(ArrayMap<String, View> sharedElements) { + final View decor = getDecor(); + final ViewRootImpl viewRoot = decor == null ? null : decor.getViewRootImpl(); + if (viewRoot != null) { + viewRoot.setPausedForTransition(true); + } sharedElements.retainAll(mAllSharedElementNames); if (mListener != null) { mListener.onMapSharedElements(mAllSharedElementNames, sharedElements); @@ -878,6 +881,32 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver { } } + protected boolean isViewsTransitionComplete() { + return mViewsTransitionComplete; + } + + protected void viewsTransitionComplete() { + mViewsTransitionComplete = true; + startInputWhenTransitionsComplete(); + } + + protected void sharedElementTransitionComplete() { + mSharedElementTransitionComplete = true; + startInputWhenTransitionsComplete(); + } + private void startInputWhenTransitionsComplete() { + if (mViewsTransitionComplete && mSharedElementTransitionComplete) { + final View decor = getDecor(); + if (decor != null) { + final ViewRootImpl viewRoot = decor.getViewRootImpl(); + viewRoot.setPausedForTransition(false); + } + onTransitionsComplete(); + } + } + + protected void onTransitionsComplete() {} + protected class ContinueTransitionListener extends Transition.TransitionListenerAdapter { @Override public void onTransitionStart(Transition transition) { diff --git a/core/java/android/app/AssistAction.java b/core/java/android/app/AssistAction.java deleted file mode 100644 index eb33542..0000000 --- a/core/java/android/app/AssistAction.java +++ /dev/null @@ -1,277 +0,0 @@ -/* - * Copyright (C) 2015 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.app; - -import android.annotation.NonNull; -import android.annotation.Nullable; -import android.net.Uri; -import android.os.Bundle; -import android.text.TextUtils; - -import com.android.internal.util.Preconditions; - -/** - * Helper class for building a {@link Bundle} representing an action being performed by the user, - * to be included in the Bundle generated by {@link Activity#onProvideAssistData}. - * - * @see Activity#onProvideAssistData - */ -public final class AssistAction { - - /** - * Key name for the Bundle containing the schema.org representation of - * an action performed, and should be stored in the Bundle generated by - * {@link Activity#onProvideAssistData}. - */ - public static final String ASSIST_ACTION_KEY = "android:assist_action"; - - /** Bundle key to specify the schema.org ID of the content. */ - public static final String KEY_ID = "@id"; - - /** Bundle key to specify the schema.org type of the content. */ - public static final String KEY_TYPE = "@type"; - - /** Bundle key to specify the name of the content. */ - public static final String KEY_NAME = "name"; - - /** Bundle key to specify the description of the content. */ - public static final String KEY_DESCRIPTION = "description"; - - /** Bundle key to specify the URL of the content. */ - public static final String KEY_URL = "url"; - - /** Bundle key to specify the object of an action. */ - public static final String KEY_ACTION_OBJECT = "object"; - - /** Bundle key to specify the action's status. */ - public static final String KEY_ACTION_STATUS = "actionStatus"; - - /** The act of editing by adding an object to a collection. */ - public static final String TYPE_ADD_ACTION = "AddAction"; - - /** The act of bookmarking an object. */ - public static final String TYPE_BOOKMARK_ACTION = "BookmarkAction"; - - /** The act of liking an object. */ - public static final String TYPE_LIKE_ACTION = "LikeAction"; - - /** The act of consuming audio content. */ - public static final String TYPE_LISTEN_ACTION = "ListenAction"; - - /** The act of consuming static visual content. */ - public static final String TYPE_VIEW_ACTION = "ViewAction"; - - /** The act of expressing a desire about the object. */ - public static final String TYPE_WANT_ACTION = "WantAction"; - - /** The act of watching an object. */ - public static final String TYPE_WATCH_ACTION = "WatchAction"; - - /** The status of an active action. */ - public static final String STATUS_TYPE_ACTIVE = "ActiveActionStatus"; - - /** The status of a completed action. */ - public static final String STATUS_TYPE_COMPLETED = "CompletedActionStatus"; - - private AssistAction() { - } - - /** - * Update the Bundle passed into {@link Activity#onProvideAssistData} with the action Bundle, - * built with {@link ActionBuilder}. - * - * @param assistDataBundle The Bundle provided to {@link Activity#onProvideAssistData}. - * @param actionBundle The Bundle representing an schema.org action. - */ - public static void updateAssistData(Bundle assistDataBundle, Bundle actionBundle) { - Preconditions.checkNotNull(assistDataBundle); - Preconditions.checkNotNull(actionBundle); - - Preconditions.checkNotNull(actionBundle.getString(KEY_TYPE), - "The '@type' property is required in the provided actionBundle"); - assistDataBundle.putParcelable(ASSIST_ACTION_KEY, actionBundle); - } - - /** - * Builds a {@link Bundle} representing a schema.org entity. - */ - public static final class ThingBuilder { - private final Bundle mBundle; - - public ThingBuilder() { - mBundle = new Bundle(); - } - - /** - * Sets the name of the content. - * - * @param name The name of the content. - */ - public ThingBuilder setName(@Nullable String name) { - set(KEY_NAME, name); - return this; - } - - /** - * Sets the app URI of the content. - * - * @param uri The app URI of the content. - */ - public ThingBuilder setUrl(@Nullable Uri uri) { - if (uri != null) { - set(KEY_URL, uri.toString()); - } - return this; - } - - /** - * Sets the ID of the content. - * - * @param id Set the ID of the content. - */ - public ThingBuilder setId(@Nullable String id) { - set(KEY_ID, id); - return this; - } - - /** - * Sets the schema.org type of the content. - * - * @param type The schema.org type. - */ - public ThingBuilder setType(@Nullable String type) { - set(KEY_TYPE, type); - return this; - } - - /** - * Sets the optional description of the content. - * - * @param description The description of the content. - */ - public ThingBuilder setDescription(@Nullable String description) { - set(KEY_DESCRIPTION, description); - return this; - } - - /** - * Sets a property of the content. - * - * @param key The schema.org property. Must not be null. - * @param value The value of the schema.org property. - * If null, the value will be ignored. - */ - public ThingBuilder set(@NonNull String key, @Nullable String value) { - if (value != null) { - mBundle.putString(key, value); - } - return this; - } - - /** - * Sets a property of the content. - * - * @param key The schema.org property. Must not be null. - * @param value The value of the schema.org property represented as a bundle. - * If null, the value will be ignored. - */ - public ThingBuilder set(@NonNull String key, @Nullable Bundle value) { - if (value != null) { - mBundle.putParcelable(key, value); - } - return this; - } - - /** - * Build the {@link Bundle} object representing the schema.org entity. - */ - public Bundle build() { - return mBundle; - } - } - - /** - * Builds a {@link Bundle} representing a schema.org action. - */ - public static final class ActionBuilder { - private final Bundle mBundle; - - public ActionBuilder() { - mBundle = new Bundle(); - } - - /** - * Sets the schema.org type of the action. - * - * @param type The schema.org type. - */ - public ActionBuilder setType(@Nullable String type) { - set(KEY_TYPE, type); - return this; - } - - /** - * Sets the schema.org object of the action. - * - * @param object The schema.org object of the action. - */ - public ActionBuilder setObject(@Nullable Bundle object) { - set(KEY_ACTION_OBJECT, object); - return this; - } - - /** - * Sets a property of the action. - * - * @param key The schema.org property. Must not be null. - * @param value The value of the schema.org property. - * If null, the value will be ignored. - */ - public ActionBuilder set(@NonNull String key, @Nullable String value) { - if (value != null) { - mBundle.putString(key, value); - } - return this; - } - - /** - * Sets a property of the action. - * - * @param key The schema.org property. Must not be null. - * @param value The value of the schema.org property represented as a bundle. - * If null, the value will be ignored. - */ - public ActionBuilder set(@NonNull String key, @Nullable Bundle value) { - if (value != null) { - mBundle.putParcelable(key, value); - } - return this; - } - - /** - * Build the {@link Bundle} object representing the schema.org action. - */ - public Bundle build() { - if (TextUtils.isEmpty(mBundle.getString(KEY_TYPE, null))) { - // Defaults to the base action type http://schema.org/Action. - setType("Action"); - } - - return mBundle; - } - } -} diff --git a/core/java/android/app/EnterTransitionCoordinator.java b/core/java/android/app/EnterTransitionCoordinator.java index e84a8da..4db4be0 100644 --- a/core/java/android/app/EnterTransitionCoordinator.java +++ b/core/java/android/app/EnterTransitionCoordinator.java @@ -55,8 +55,6 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator { private boolean mWasOpaque; private boolean mAreViewsReady; private boolean mIsViewsTransitionStarted; - private boolean mIsViewsTransitionComplete; - private boolean mIsSharedElementTransitionComplete; private Transition mEnterViewsTransition; public EnterTransitionCoordinator(Activity activity, ResultReceiver resultReceiver, @@ -456,7 +454,7 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator { } } if (viewsTransition == null) { - viewTransitionComplete(); + viewsTransitionComplete(); } else { viewsTransition.forceVisibility(View.INVISIBLE, true); final ArrayList<View> transitioningViews = mTransitioningViews; @@ -474,7 +472,7 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator { public void onTransitionEnd(Transition transition) { mEnterViewsTransition = null; transition.removeListener(this); - viewTransitionComplete(); + viewsTransitionComplete(); super.onTransitionEnd(transition); } }); @@ -497,18 +495,9 @@ class EnterTransitionCoordinator extends ActivityTransitionCoordinator { return transition; } - private void viewTransitionComplete() { - mIsViewsTransitionComplete = true; - if (mIsSharedElementTransitionComplete) { - moveSharedElementsFromOverlay(); - } - } - - private void sharedElementTransitionComplete() { - mIsSharedElementTransitionComplete = true; - if (mIsViewsTransitionComplete) { - moveSharedElementsFromOverlay(); - } + @Override + protected void onTransitionsComplete() { + moveSharedElementsFromOverlay(); } private void sharedElementTransitionStarted() { diff --git a/core/java/android/app/ExitTransitionCoordinator.java b/core/java/android/app/ExitTransitionCoordinator.java index 0f286fb..9ddebb0 100644 --- a/core/java/android/app/ExitTransitionCoordinator.java +++ b/core/java/android/app/ExitTransitionCoordinator.java @@ -46,8 +46,6 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator { private static final String TAG = "ExitTransitionCoordinator"; private static final long MAX_WAIT_MS = 1000; - private boolean mExitComplete; - private Bundle mSharedElementBundle; private boolean mExitNotified; @@ -165,7 +163,7 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator { @Override public void onTransitionEnd(Transition transition) { transition.removeListener(this); - if (mExitComplete) { + if (isViewsTransitionComplete()) { delayCancel(); } } @@ -310,14 +308,14 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator { viewsTransition = configureTransition(getViewsTransition(), true); } if (viewsTransition == null) { - exitTransitionComplete(); + viewsTransitionComplete(); } else { final ArrayList<View> transitioningViews = mTransitioningViews; viewsTransition.addListener(new ContinueTransitionListener() { @Override public void onTransitionEnd(Transition transition) { transition.removeListener(this); - exitTransitionComplete(); + viewsTransitionComplete(); if (mIsHidden && transitioningViews != null) { showViews(transitioningViews, true); } @@ -373,19 +371,15 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator { } } - private void exitTransitionComplete() { - mExitComplete = true; - notifyComplete(); - } - protected boolean isReadyToNotify() { return mSharedElementBundle != null && mResultReceiver != null && mIsBackgroundReady; } - private void sharedElementTransitionComplete() { + @Override + protected void sharedElementTransitionComplete() { mSharedElementBundle = mExitSharedElementBundle == null ? captureSharedElementState() : captureExitSharedElementsState(); - notifyComplete(); + super.sharedElementTransitionComplete(); } private Bundle captureExitSharedElementsState() { @@ -405,6 +399,11 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator { return bundle; } + @Override + protected void onTransitionsComplete() { + notifyComplete(); + } + protected void notifyComplete() { if (isReadyToNotify()) { if (!mSharedElementNotified) { @@ -433,7 +432,7 @@ class ExitTransitionCoordinator extends ActivityTransitionCoordinator { } private void notifyExitComplete() { - if (!mExitNotified && mExitComplete) { + if (!mExitNotified && isViewsTransitionComplete()) { mExitNotified = true; mResultReceiver.send(MSG_EXIT_TRANSITION_COMPLETE, null); mResultReceiver = null; // done talking diff --git a/core/java/android/app/SystemServiceRegistry.java b/core/java/android/app/SystemServiceRegistry.java index 391131a..0d00908 100644 --- a/core/java/android/app/SystemServiceRegistry.java +++ b/core/java/android/app/SystemServiceRegistry.java @@ -55,7 +55,6 @@ import android.location.CountryDetector; import android.location.ICountryDetector; import android.location.ILocationManager; import android.location.LocationManager; -import android.media.AudioDevicesManager; import android.media.AudioManager; import android.media.MediaRouter; import android.media.midi.IMidiManager; @@ -701,13 +700,6 @@ final class SystemServiceRegistry { public RadioManager createService(ContextImpl ctx) { return new RadioManager(ctx); }}); - - registerService(Context.AUDIO_DEVICES_SERVICE, AudioDevicesManager.class, - new CachedServiceFetcher<AudioDevicesManager>() { - @Override - public AudioDevicesManager createService(ContextImpl ctx) { - return new AudioDevicesManager(ctx); - }}); } /** @@ -726,7 +718,7 @@ final class SystemServiceRegistry { } /** - * Gets the name of the system-level service that is represented by the specified class. + * Gets the name of the system-level service that is represented by the specified class. */ public static String getSystemServiceName(Class<?> serviceClass) { return SYSTEM_SERVICE_NAMES.get(serviceClass); diff --git a/core/java/android/app/usage/IUsageStatsManager.aidl b/core/java/android/app/usage/IUsageStatsManager.aidl index 23659e3..254408a 100644 --- a/core/java/android/app/usage/IUsageStatsManager.aidl +++ b/core/java/android/app/usage/IUsageStatsManager.aidl @@ -30,6 +30,6 @@ interface IUsageStatsManager { ParceledListSlice queryConfigurationStats(int bucketType, long beginTime, long endTime, String callingPackage); UsageEvents queryEvents(long beginTime, long endTime, String callingPackage); - void setAppIdle(String packageName, boolean idle, int userId); - boolean isAppIdle(String packageName, int userId); + void setAppInactive(String packageName, boolean inactive, int userId); + boolean isAppInactive(String packageName, int userId); } diff --git a/core/java/android/app/usage/UsageStatsManager.java b/core/java/android/app/usage/UsageStatsManager.java index 8a01d66..c74bbdd 100644 --- a/core/java/android/app/usage/UsageStatsManager.java +++ b/core/java/android/app/usage/UsageStatsManager.java @@ -220,15 +220,15 @@ public final class UsageStatsManager { } /** - * Returns whether the specified app is currently considered idle. This will be true if the + * Returns whether the specified app is currently considered inactive. This will be true if the * app hasn't been used directly or indirectly for a period of time defined by the system. This * could be of the order of several hours or days. * @param packageName The package name of the app to query - * @return whether the app is currently considered idle + * @return whether the app is currently considered inactive */ - public boolean isAppIdle(String packageName) { + public boolean isAppInactive(String packageName) { try { - return mService.isAppIdle(packageName, UserHandle.myUserId()); + return mService.isAppInactive(packageName, UserHandle.myUserId()); } catch (RemoteException e) { // fall through and return default } diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java index 8687c6b..6a98950 100644 --- a/core/java/android/content/Context.java +++ b/core/java/android/content/Context.java @@ -3133,16 +3133,6 @@ public abstract class Context { public static final String RADIO_SERVICE = "radio"; /** - * Use with {@link #getSystemService} to retrieve a - * {@link android.media.AudioDevicesManager} for handling device enumeration & notification. - * - * @see #getSystemService - * @see android.media.AudioDevicesManager - */ - public static final String AUDIO_DEVICES_SERVICE = "audio_devices_manager"; - - - /** * Determine whether the given permission is allowed for a particular * process and user ID running in the system. * diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java index 6f543a8..7d76760 100644 --- a/core/java/android/content/Intent.java +++ b/core/java/android/content/Intent.java @@ -3365,14 +3365,6 @@ public class Intent implements Parcelable, Cloneable { public static final String EXTRA_INITIAL_INTENTS = "android.intent.extra.INITIAL_INTENTS"; /** - * A Parcelable[] of {@link android.service.chooser.ChooserTarget ChooserTarget} objects - * as set with {@link #putExtra(String, Parcelable[])} representing additional app-specific - * targets to place at the front of the list of choices. Shown to the user with - * {@link #ACTION_CHOOSER}. - */ - public static final String EXTRA_CHOOSER_TARGETS = "android.intent.extra.CHOOSER_TARGETS"; - - /** * A Bundle forming a mapping of potential target package names to different extras Bundles * to add to the default intent extras in {@link #EXTRA_INTENT} when used with * {@link #ACTION_CHOOSER}. Each key should be a package name. The package need not diff --git a/core/java/android/service/chooser/ChooserTarget.java b/core/java/android/service/chooser/ChooserTarget.java index f0ca276..4c94ee7 100644 --- a/core/java/android/service/chooser/ChooserTarget.java +++ b/core/java/android/service/chooser/ChooserTarget.java @@ -58,12 +58,6 @@ public final class ChooserTarget implements Parcelable { private IntentSender mIntentSender; /** - * A raw intent provided in lieu of an IntentSender. Will be filled in and sent - * by {@link #sendIntent(Context, Intent)}. - */ - private Intent mIntent; - - /** * The score given to this item. It can be normalized. */ private float mScore; @@ -146,43 +140,6 @@ public final class ChooserTarget implements Parcelable { mIntentSender = intentSender; } - /** - * Construct a deep link target for presentation by a chooser UI. - * - * <p>A target is composed of a title and an icon for presentation to the user. - * The UI presenting this target may truncate the title if it is too long to be presented - * in the available space, as well as crop, resize or overlay the supplied icon.</p> - * - * <p>The creator of a target may supply a ranking score. This score is assumed to be relative - * to the other targets supplied by the same - * {@link ChooserTargetService#onGetChooserTargets(ComponentName, IntentFilter) query}. - * Scores should be in the range from 0.0f (unlikely match) to 1.0f (very relevant match). - * Scores for a set of targets do not need to sum to 1.</p> - * - * <p>Before being sent, the Intent supplied will be - * {@link Intent#fillIn(Intent, int) filled in} by the Intent originally supplied - * to the chooser.</p> - * - * <p>Take care not to place custom {@link android.os.Parcelable} types into - * the Intent as extras, as the system will not be able to unparcel it to merge - * additional extras.</p> - * - * @param title title of this target that will be shown to a user - * @param icon icon to represent this target - * @param score ranking score for this target between 0.0f and 1.0f, inclusive - * @param intent Intent to fill in and send if the user chooses this target - */ - public ChooserTarget(CharSequence title, Bitmap icon, float score, Intent intent) { - mTitle = title; - mIcon = icon; - if (score > 1.f || score < 0.f) { - throw new IllegalArgumentException("Score " + score + " out of range; " - + "must be between 0.0f and 1.0f"); - } - mScore = score; - mIntent = intent; - } - ChooserTarget(Parcel in) { mTitle = in.readCharSequence(); if (in.readInt() != 0) { @@ -192,9 +149,6 @@ public final class ChooserTarget implements Parcelable { } mScore = in.readFloat(); mIntentSender = IntentSender.readIntentSenderOrNullFromParcel(in); - if (in.readInt() != 0) { - mIntent = Intent.CREATOR.createFromParcel(in); - } } /** @@ -241,18 +195,6 @@ public final class ChooserTarget implements Parcelable { } /** - * Returns the Intent supplied by the ChooserTarget's creator. - * This may be null if the creator specified an IntentSender or PendingIntent instead. - * - * <p>To fill in and send the intent, see {@link #sendIntent(Context, Intent)}.</p> - * - * @return the Intent supplied by the ChooserTarget's creator - */ - public Intent getIntent() { - return mIntent; - } - - /** * Fill in the IntentSender supplied by the ChooserTarget's creator and send it. * * @param context the sending Context; generally the Activity presenting the chooser UI @@ -272,91 +214,8 @@ public final class ChooserTarget implements Parcelable { Log.e(TAG, "sendIntent " + this + " failed", e); return false; } - } else if (mIntent != null) { - try { - final Intent toSend = new Intent(mIntent); - toSend.fillIn(fillInIntent, 0); - context.startActivity(toSend); - return true; - } catch (Exception e) { - Log.e(TAG, "sendIntent " + this + " failed", e); - return false; - } } else { - Log.e(TAG, "sendIntent " + this + " failed - no IntentSender or Intent to send"); - return false; - } - } - - /** - * Same as {@link #sendIntent(Context, Intent)}, but offers a userId field to use - * for launching the {@link #getIntent() intent} using - * {@link Activity#startActivityAsCaller(Intent, Bundle, int)} if the - * {@link #getIntentSender() IntentSender} is not present. If the IntentSender is present, - * it will be invoked as usual with its own calling identity. - * - * @hide internal use only. - */ - public boolean sendIntentAsCaller(Activity context, Intent fillInIntent, int userId) { - if (fillInIntent != null) { - fillInIntent.migrateExtraStreamToClipData(); - fillInIntent.prepareToLeaveProcess(); - } - if (mIntentSender != null) { - try { - mIntentSender.sendIntent(context, 0, fillInIntent, null, null); - return true; - } catch (IntentSender.SendIntentException e) { - Log.e(TAG, "sendIntent " + this + " failed", e); - return false; - } - } else if (mIntent != null) { - try { - final Intent toSend = new Intent(mIntent); - toSend.fillIn(fillInIntent, 0); - context.startActivityAsCaller(toSend, null, userId); - return true; - } catch (Exception e) { - Log.e(TAG, "sendIntent " + this + " failed", e); - return false; - } - } else { - Log.e(TAG, "sendIntent " + this + " failed - no IntentSender or Intent to send"); - return false; - } - } - - /** - * The UserHandle is only used if we're launching a raw intent. The IntentSender will be - * launched with its associated identity. - * - * @hide Internal use only - */ - public boolean sendIntentAsUser(Activity context, Intent fillInIntent, UserHandle user) { - if (fillInIntent != null) { - fillInIntent.migrateExtraStreamToClipData(); - fillInIntent.prepareToLeaveProcess(); - } - if (mIntentSender != null) { - try { - mIntentSender.sendIntent(context, 0, fillInIntent, null, null); - return true; - } catch (IntentSender.SendIntentException e) { - Log.e(TAG, "sendIntent " + this + " failed", e); - return false; - } - } else if (mIntent != null) { - try { - final Intent toSend = new Intent(mIntent); - toSend.fillIn(fillInIntent, 0); - context.startActivityAsUser(toSend, user); - return true; - } catch (Exception e) { - Log.e(TAG, "sendIntent " + this + " failed", e); - return false; - } - } else { - Log.e(TAG, "sendIntent " + this + " failed - no IntentSender or Intent to send"); + Log.e(TAG, "sendIntent " + this + " failed - no IntentSender to send"); return false; } } @@ -364,7 +223,7 @@ public final class ChooserTarget implements Parcelable { @Override public String toString() { return "ChooserTarget{" - + (mIntentSender != null ? mIntentSender.getCreatorPackage() : mIntent) + + (mIntentSender != null ? mIntentSender.getCreatorPackage() : null) + ", " + "'" + mTitle + "', " + mScore + "}"; @@ -386,10 +245,6 @@ public final class ChooserTarget implements Parcelable { } dest.writeFloat(mScore); IntentSender.writeIntentSenderOrNullToParcel(mIntentSender, dest); - dest.writeInt(mIntent != null ? 1 : 0); - if (mIntent != null) { - mIntent.writeToParcel(dest, 0); - } } public static final Creator<ChooserTarget> CREATOR diff --git a/core/java/android/view/AccessibilityInteractionController.java b/core/java/android/view/AccessibilityInteractionController.java index 68ad782..3781d40 100644 --- a/core/java/android/view/AccessibilityInteractionController.java +++ b/core/java/android/view/AccessibilityInteractionController.java @@ -586,7 +586,7 @@ final class AccessibilityInteractionController { } } - private void perfromAccessibilityActionUiThread(Message message) { + private void performAccessibilityActionUiThread(Message message) { final int flags = message.arg1; final int accessibilityViewId = message.arg2; @@ -602,7 +602,8 @@ final class AccessibilityInteractionController { boolean succeeded = false; try { - if (mViewRootImpl.mView == null || mViewRootImpl.mAttachInfo == null) { + if (mViewRootImpl.mView == null || mViewRootImpl.mAttachInfo == null || + mViewRootImpl.mStopped || mViewRootImpl.mPausedForTransition) { return; } mViewRootImpl.mAttachInfo.mAccessibilityFetchFlags = flags; @@ -1146,7 +1147,7 @@ final class AccessibilityInteractionController { findAccessibilityNodeInfoByAccessibilityIdUiThread(message); } break; case MSG_PERFORM_ACCESSIBILITY_ACTION: { - perfromAccessibilityActionUiThread(message); + performAccessibilityActionUiThread(message); } break; case MSG_FIND_ACCESSIBILITY_NODE_INFOS_BY_VIEW_ID: { findAccessibilityNodeInfosByViewIdUiThread(message); diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index ea1dadb..57c6cbf 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -174,6 +174,9 @@ public final class ViewRootImpl implements ViewParent, // so the window should no longer be active. boolean mStopped = false; + // Set to true to stop input during an Activity Transition. + boolean mPausedForTransition = false; + boolean mLastInCompatMode = false; SurfaceHolder.Callback2 mSurfaceHolderCallback; @@ -982,15 +985,25 @@ public final class ViewRootImpl implements ViewParent, return null; } - void setStopped(boolean stopped) { + void setWindowStopped(boolean stopped) { if (mStopped != stopped) { mStopped = stopped; - if (!stopped) { + if (!mStopped) { scheduleTraversals(); } } } + /** + * Block the input events during an Activity Transition. The KEYCODE_BACK event is allowed + * through to allow quick reversal of the Activity Transition. + * + * @param paused true to pause, false to resume. + */ + public void setPausedForTransition(boolean paused) { + mPausedForTransition = paused; + } + @Override public ViewParent getParent() { return null; @@ -3637,8 +3650,9 @@ public final class ViewRootImpl implements ViewParent, if (mView == null || !mAdded) { Slog.w(TAG, "Dropping event due to root view being removed: " + q.mEvent); return true; - } else if ((!mAttachInfo.mHasWindowFocus || mStopped) - && !q.mEvent.isFromSource(InputDevice.SOURCE_CLASS_POINTER)) { + } else if ((!mAttachInfo.mHasWindowFocus + && !q.mEvent.isFromSource(InputDevice.SOURCE_CLASS_POINTER)) || mStopped + || (mPausedForTransition && !isBack(q.mEvent))) { // This is a focus event and the window doesn't currently have input focus or // has stopped. This could be an event that came back from the previous stage // but the window has lost focus or stopped in the meantime. @@ -3661,6 +3675,14 @@ public final class ViewRootImpl implements ViewParent, mNext.dump(prefix, writer); } } + + private boolean isBack(InputEvent event) { + if (event instanceof KeyEvent) { + return ((KeyEvent) event).getKeyCode() == KeyEvent.KEYCODE_BACK; + } else { + return false; + } + } } /** @@ -6228,7 +6250,7 @@ public final class ViewRootImpl implements ViewParent, @Override public boolean requestSendAccessibilityEvent(View child, AccessibilityEvent event) { - if (mView == null) { + if (mView == null || mStopped || mPausedForTransition) { return false; } // Intercept accessibility focus events fired by virtual nodes to keep diff --git a/core/java/android/view/WindowManagerGlobal.java b/core/java/android/view/WindowManagerGlobal.java index 57558ff..e7a7ba8 100644 --- a/core/java/android/view/WindowManagerGlobal.java +++ b/core/java/android/view/WindowManagerGlobal.java @@ -21,7 +21,6 @@ import android.app.ActivityManager; import android.content.ComponentCallbacks2; import android.content.Context; import android.content.res.Configuration; -import android.os.Build; import android.os.IBinder; import android.os.RemoteException; import android.os.ServiceManager; @@ -552,7 +551,7 @@ public final class WindowManagerGlobal { for (int i = 0; i < count; i++) { if (token == null || mParams.get(i).token == token) { ViewRootImpl root = mRoots.get(i); - root.setStopped(stopped); + root.setWindowStopped(stopped); } } } diff --git a/core/java/com/android/internal/app/ChooserActivity.java b/core/java/com/android/internal/app/ChooserActivity.java index 62ca1f0..83fa967 100644 --- a/core/java/com/android/internal/app/ChooserActivity.java +++ b/core/java/com/android/internal/app/ChooserActivity.java @@ -24,9 +24,11 @@ import android.content.IntentSender; import android.content.IntentSender.SendIntentException; import android.content.ServiceConnection; 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.database.DataSetObserver; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.Bundle; @@ -37,6 +39,7 @@ import android.os.Parcelable; import android.os.RemoteException; import android.os.ResultReceiver; import android.os.UserHandle; +import android.os.UserManager; import android.service.chooser.ChooserTarget; import android.service.chooser.ChooserTargetService; import android.service.chooser.IChooserTargetResult; @@ -44,8 +47,16 @@ import android.service.chooser.IChooserTargetService; import android.text.TextUtils; import android.util.Log; import android.util.Slog; +import android.view.LayoutInflater; import android.view.View; +import android.view.View.OnClickListener; import android.view.ViewGroup; +import android.view.ViewGroup.LayoutParams; +import android.widget.AbsListView; +import android.widget.BaseAdapter; +import android.widget.LinearLayout; +import android.widget.ListView; +import com.android.internal.R; import java.util.ArrayList; import java.util.List; @@ -63,7 +74,7 @@ public class ChooserActivity extends ResolverActivity { private IntentSender mRefinementIntentSender; private RefinementResultReceiver mRefinementResultReceiver; - private ChooserTarget[] mCallerChooserTargets; + private ChooserListAdapter mChooserListAdapter; private final List<ChooserTargetServiceConnection> mServiceConnections = new ArrayList<>(); @@ -84,8 +95,7 @@ public class ChooserActivity extends ResolverActivity { + " Have you considered returning results faster?"); break; } - final ChooserListAdapter cla = (ChooserListAdapter) getAdapter(); - cla.addServiceResults(sri.originalTarget, sri.resultTargets); + mChooserListAdapter.addServiceResults(sri.originalTarget, sri.resultTargets); unbindService(sri.connection); mServiceConnections.remove(sri.connection); break; @@ -166,20 +176,6 @@ public class ChooserActivity extends ResolverActivity { } } - pa = intent.getParcelableArrayExtra(Intent.EXTRA_CHOOSER_TARGETS); - if (pa != null) { - final ChooserTarget[] targets = new ChooserTarget[pa.length]; - for (int i = 0; i < pa.length; i++) { - if (!(pa[i] instanceof ChooserTarget)) { - Log.w(TAG, "Chooser target #" + i + " is not a ChooserTarget: " + pa[i]); - finish(); - super.onCreate(null); - return; - } - targets[i] = (ChooserTarget) pa[i]; - } - mCallerChooserTargets = targets; - } mChosenComponentSender = intent.getParcelableExtra( Intent.EXTRA_CHOSEN_COMPONENT_INTENT_SENDER); mRefinementIntentSender = intent.getParcelableExtra( @@ -233,8 +229,19 @@ public class ChooserActivity extends ResolverActivity { } @Override + void onPrepareAdapterView(AbsListView adapterView, ResolveListAdapter adapter, + boolean alwaysUseOption) { + final ListView listView = adapterView instanceof ListView ? (ListView) adapterView : null; + mChooserListAdapter = (ChooserListAdapter) adapter; + adapterView.setAdapter(new ChooserRowAdapter(mChooserListAdapter)); + if (listView != null) { + listView.setItemsCanFocus(true); + } + } + + @Override int getLayoutResource() { - return com.android.internal.R.layout.chooser_grid; + return R.layout.chooser_grid; } @Override @@ -413,10 +420,11 @@ public class ChooserActivity extends ResolverActivity { } @Override - ResolveListAdapter createAdapter(Context context, Intent[] initialIntents, - List<ResolveInfo> rList, int launchedFromUid, boolean filterLastUsed) { - final ChooserListAdapter adapter = new ChooserListAdapter(context, initialIntents, rList, - launchedFromUid, filterLastUsed, mCallerChooserTargets); + ResolveListAdapter createAdapter(Context context, List<Intent> payloadIntents, + Intent[] initialIntents, List<ResolveInfo> rList, int launchedFromUid, + boolean filterLastUsed) { + final ChooserListAdapter adapter = new ChooserListAdapter(context, payloadIntents, + initialIntents, rList, launchedFromUid, filterLastUsed); if (DEBUG) Log.d(TAG, "Adapter created; querying services"); queryTargetServices(adapter); return adapter; @@ -426,17 +434,23 @@ public class ChooserActivity extends ResolverActivity { private final DisplayResolveInfo mSourceInfo; private final ResolveInfo mBackupResolveInfo; private final ChooserTarget mChooserTarget; + private Drawable mBadgeIcon = null; private final Drawable mDisplayIcon; private final Intent mFillInIntent; private final int mFillInFlags; - public ChooserTargetInfo(ChooserTarget target) { - this(null, target); - } - public ChooserTargetInfo(DisplayResolveInfo sourceInfo, ChooserTarget chooserTarget) { mSourceInfo = sourceInfo; mChooserTarget = chooserTarget; + if (sourceInfo != null) { + final ResolveInfo ri = sourceInfo.getResolveInfo(); + if (ri != null) { + final ActivityInfo ai = ri.activityInfo; + if (ai != null && ai.applicationInfo != null) { + mBadgeIcon = getPackageManager().getApplicationIcon(ai.applicationInfo); + } + } + } mDisplayIcon = new BitmapDrawable(getResources(), chooserTarget.getIcon()); if (sourceInfo != null) { @@ -453,6 +467,7 @@ public class ChooserActivity extends ResolverActivity { mSourceInfo = other.mSourceInfo; mBackupResolveInfo = other.mBackupResolveInfo; mChooserTarget = other.mChooserTarget; + mBadgeIcon = other.mBadgeIcon; mDisplayIcon = other.mDisplayIcon; mFillInIntent = fillInIntent; mFillInFlags = flags; @@ -460,10 +475,7 @@ public class ChooserActivity extends ResolverActivity { @Override public Intent getResolvedIntent() { - final Intent targetIntent = mChooserTarget.getIntent(); - if (targetIntent != null) { - return targetIntent; - } else if (mSourceInfo != null) { + if (mSourceInfo != null) { return mSourceInfo.getResolvedIntent(); } return getTargetIntent(); @@ -507,7 +519,8 @@ public class ChooserActivity extends ResolverActivity { if (intent == null) { return false; } - return mChooserTarget.sendIntentAsCaller(activity, intent, userId); + // ChooserTargets will launch with their IntentSender's identity + return mChooserTarget.sendIntent(activity, intent); } @Override @@ -516,7 +529,8 @@ public class ChooserActivity extends ResolverActivity { if (intent == null) { return false; } - return mChooserTarget.sendIntentAsUser(activity, intent, user); + // ChooserTargets will launch with their IntentSender's identity + return mChooserTarget.sendIntent(activity, intent); } @Override @@ -540,6 +554,11 @@ public class ChooserActivity extends ResolverActivity { } @Override + public Drawable getBadgeIcon() { + return mBadgeIcon; + } + + @Override public TargetInfo cloneFilledIn(Intent fillInIntent, int flags) { return new ChooserTargetInfo(this, fillInIntent, flags); } @@ -556,16 +575,49 @@ public class ChooserActivity extends ResolverActivity { } public class ChooserListAdapter extends ResolveListAdapter { - private final List<ChooserTargetInfo> mServiceTargets = new ArrayList<>(); - private final List<ChooserTargetInfo> mCallerTargets = new ArrayList<>(); - - public ChooserListAdapter(Context context, Intent[] initialIntents, List<ResolveInfo> rList, - int launchedFromUid, boolean filterLastUsed, ChooserTarget[] callerChooserTargets) { - super(context, initialIntents, rList, launchedFromUid, filterLastUsed); + public static final int TARGET_BAD = -1; + public static final int TARGET_CALLER = 0; + public static final int TARGET_SERVICE = 1; + public static final int TARGET_STANDARD = 2; - if (callerChooserTargets != null) { - for (ChooserTarget target : callerChooserTargets) { - mCallerTargets.add(new ChooserTargetInfo(target)); + private final List<ChooserTargetInfo> mServiceTargets = new ArrayList<>(); + private final List<TargetInfo> mCallerTargets = new ArrayList<>(); + + public ChooserListAdapter(Context context, List<Intent> payloadIntents, + Intent[] initialIntents, List<ResolveInfo> rList, int launchedFromUid, + boolean filterLastUsed) { + // Don't send the initial intents through the shared ResolverActivity path, + // we want to separate them into a different section. + super(context, payloadIntents, null, rList, launchedFromUid, filterLastUsed); + + if (initialIntents != null) { + final PackageManager pm = getPackageManager(); + for (int i = 0; i < initialIntents.length; i++) { + final Intent ii = initialIntents[i]; + if (ii == null) { + continue; + } + final ActivityInfo ai = ii.resolveActivityInfo(pm, 0); + if (ai == null) { + Log.w(TAG, "No activity found for " + ii); + continue; + } + ResolveInfo ri = new ResolveInfo(); + ri.activityInfo = ai; + UserManager userManager = + (UserManager) getSystemService(Context.USER_SERVICE); + if (userManager.isManagedProfile()) { + ri.noResourceId = true; + } + if (ii instanceof LabeledIntent) { + LabeledIntent li = (LabeledIntent)ii; + ri.resolvePackageName = li.getSourcePackage(); + ri.labelRes = li.getLabelResource(); + ri.nonLocalizedLabel = li.getNonLocalizedLabel(); + ri.icon = li.getIconResource(); + } + mCallerTargets.add(new DisplayResolveInfo(ii, ri, + ri.loadLabel(pm), null, ii)); } } } @@ -578,7 +630,7 @@ public class ChooserActivity extends ResolverActivity { } @Override - public View createView(ViewGroup parent) { + public View onCreateView(ViewGroup parent) { return mInflater.inflate( com.android.internal.R.layout.resolve_grid_item, parent, false); } @@ -600,6 +652,41 @@ public class ChooserActivity extends ResolverActivity { return super.getCount() + mServiceTargets.size() + mCallerTargets.size(); } + public int getCallerTargetsCount() { + return mCallerTargets.size(); + } + + public int getServiceTargetsCount() { + return mServiceTargets.size(); + } + + public int getStandardTargetCount() { + return super.getCount(); + } + + public int getPositionTargetType(int position) { + int offset = 0; + + final int callerTargetCount = mCallerTargets.size(); + if (position < callerTargetCount) { + return TARGET_CALLER; + } + offset += callerTargetCount; + + final int serviceTargetCount = mServiceTargets.size(); + if (position - offset < serviceTargetCount) { + return TARGET_SERVICE; + } + offset += serviceTargetCount; + + final int standardTargetCount = super.getCount(); + if (position - offset < standardTargetCount) { + return TARGET_STANDARD; + } + + return TARGET_BAD; + } + @Override public TargetInfo getItem(int position) { int offset = 0; @@ -643,6 +730,133 @@ public class ChooserActivity extends ResolverActivity { } } + class ChooserRowAdapter extends BaseAdapter { + private ChooserListAdapter mChooserListAdapter; + private final LayoutInflater mLayoutInflater; + private final int mColumnCount = 4; + + public ChooserRowAdapter(ChooserListAdapter wrappedAdapter) { + mChooserListAdapter = wrappedAdapter; + mLayoutInflater = LayoutInflater.from(ChooserActivity.this); + + wrappedAdapter.registerDataSetObserver(new DataSetObserver() { + @Override + public void onChanged() { + super.onChanged(); + notifyDataSetChanged(); + } + + @Override + public void onInvalidated() { + super.onInvalidated(); + notifyDataSetInvalidated(); + } + }); + } + + @Override + public int getCount() { + return (int) ( + Math.ceil((float) mChooserListAdapter.getCallerTargetsCount() / mColumnCount) + + Math.ceil((float) mChooserListAdapter.getServiceTargetsCount() / mColumnCount) + + Math.ceil((float) mChooserListAdapter.getStandardTargetCount() / mColumnCount) + ); + } + + @Override + public Object getItem(int position) { + // We have nothing useful to return here. + return position; + } + + @Override + public long getItemId(int position) { + return position; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + final View[] holder; + if (convertView == null) { + holder = createViewHolder(parent); + } else { + holder = (View[]) convertView.getTag(); + } + bindViewHolder(position, holder); + + // We keep the actual list item view as the last item in the holder array + return holder[mColumnCount]; + } + + View[] createViewHolder(ViewGroup parent) { + final View[] holder = new View[mColumnCount + 1]; + + final ViewGroup row = (ViewGroup) mLayoutInflater.inflate(R.layout.chooser_row, + parent, false); + for (int i = 0; i < mColumnCount; i++) { + holder[i] = mChooserListAdapter.createView(row); + row.addView(holder[i]); + } + row.setTag(holder); + holder[mColumnCount] = row; + return holder; + } + + void bindViewHolder(int rowPosition, View[] holder) { + final int start = getFirstRowPosition(rowPosition); + final int startType = mChooserListAdapter.getPositionTargetType(start); + + int end = start + mColumnCount - 1; + while (mChooserListAdapter.getPositionTargetType(end) != startType && end >= start) { + end--; + } + + final ViewGroup row = (ViewGroup) holder[mColumnCount]; + + if (startType == ChooserListAdapter.TARGET_SERVICE) { + row.setBackgroundColor(getColor(R.color.chooser_service_row_background_color)); + } else { + row.setBackground(null); + } + + for (int i = 0; i < mColumnCount; i++) { + final View v = holder[i]; + if (start + i <= end) { + v.setVisibility(View.VISIBLE); + final int itemIndex = start + i; + mChooserListAdapter.bindView(itemIndex, v); + v.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + startSelected(itemIndex, false, true); + } + }); + } else { + v.setVisibility(View.GONE); + } + } + } + + int getFirstRowPosition(int row) { + final int callerCount = mChooserListAdapter.getCallerTargetsCount(); + final int callerRows = (int) Math.ceil((float) callerCount / mColumnCount); + + if (row < callerRows) { + return row * mColumnCount; + } + + final int serviceCount = mChooserListAdapter.getServiceTargetsCount(); + final int serviceRows = (int) Math.ceil((float) serviceCount / mColumnCount); + + if (row < callerRows + serviceRows) { + return callerCount + (row - callerRows) * mColumnCount; + } + + return callerCount + serviceCount + + (row - callerRows - serviceRows) * mColumnCount; + } + } + class ChooserTargetServiceConnection implements ServiceConnection { private final DisplayResolveInfo mOriginalTarget; diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java index 2048664..26cdf6b 100644 --- a/core/java/com/android/internal/app/ResolverActivity.java +++ b/core/java/com/android/internal/app/ResolverActivity.java @@ -25,7 +25,6 @@ import android.provider.Settings; import android.text.TextUtils; import android.util.Slog; import android.widget.AbsListView; -import android.widget.GridView; import com.android.internal.R; import com.android.internal.content.PackageMonitor; @@ -83,7 +82,7 @@ import static android.view.WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN; * 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 Activity implements AdapterView.OnItemClickListener { +public class ResolverActivity extends Activity { private static final String TAG = "ResolverActivity"; private static final boolean DEBUG = false; @@ -93,8 +92,6 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic private boolean mSafeForwardingMode; private boolean mAlwaysUseOption; private AbsListView mAdapterView; - private ListView mListView; - private GridView mGridView; private Button mAlwaysButton; private Button mOnceButton; private View mProfileView; @@ -217,6 +214,13 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic } catch (RemoteException e) { mLaunchedFromUid = -1; } + + if (mLaunchedFromUid < 0 || UserHandle.isIsolated(mLaunchedFromUid)) { + // Gulp! + finish(); + return; + } + mPm = getPackageManager(); mUsm = (UsageStatsManager) getSystemService(Context.USAGE_STATS_SERVICE); @@ -229,67 +233,11 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic final ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE); mIconDpi = am.getLauncherLargeIconDensity(); + // Add our initial intent as the first item, regardless of what else has already been added. mIntents.add(0, new Intent(intent)); - mAdapter = createAdapter(this, initialIntents, rList, mLaunchedFromUid, alwaysUseOption); - - final int layoutId; - final boolean useHeader; - if (mAdapter.hasFilteredItem()) { - layoutId = R.layout.resolver_list_with_default; - alwaysUseOption = false; - useHeader = true; - } else { - useHeader = false; - layoutId = getLayoutResource(); - } - mAlwaysUseOption = alwaysUseOption; - - if (mLaunchedFromUid < 0 || UserHandle.isIsolated(mLaunchedFromUid)) { - // Gulp! - finish(); - return; - } - - int count = mAdapter.mDisplayList.size(); - if (count > 1 || (count == 1 && mAdapter.getOtherProfile() != null)) { - setContentView(layoutId); - mAdapterView = (AbsListView) findViewById(R.id.resolver_list); - mAdapterView.setAdapter(mAdapter); - mAdapterView.setOnItemClickListener(this); - mAdapterView.setOnItemLongClickListener(new ItemLongClickListener()); - - // Initialize the different types of collection views we may have. Depending - // on which ones are initialized later we'll configure different properties. - if (mAdapterView instanceof ListView) { - mListView = (ListView) mAdapterView; - } - if (mAdapterView instanceof GridView) { - mGridView = (GridView) mAdapterView; - } - - if (alwaysUseOption) { - mAdapterView.setChoiceMode(AbsListView.CHOICE_MODE_SINGLE); - } - if (useHeader && mListView != null) { - mListView.addHeaderView(LayoutInflater.from(this).inflate( - R.layout.resolver_different_item_header, mListView, false)); - } - } else if (count == 1) { - safelyStartActivity(mAdapter.targetInfoForPosition(0, false)); - mPackageMonitor.unregister(); - mRegistered = false; - finish(); - return; - } else { - setContentView(R.layout.resolver_list); - - final TextView empty = (TextView) findViewById(R.id.empty); - empty.setVisibility(View.VISIBLE); + configureContentView(mIntents, initialIntents, rList, alwaysUseOption); - mAdapterView = (AbsListView) findViewById(R.id.resolver_list); - mAdapterView.setVisibility(View.GONE); - } // Prevent the Resolver window from becoming the top fullscreen window and thus from taking // control of the system bars. getWindow().clearFlags(FLAG_LAYOUT_IN_SCREEN|FLAG_LAYOUT_INSET_DECOR); @@ -548,29 +496,6 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic } } - @Override - public void onItemClick(AdapterView<?> parent, View view, int position, long id) { - if (mListView != null) { - position -= mListView.getHeaderViewsCount(); - } - if (position < 0) { - // Header views don't count. - return; - } - final int checkedPos = mAdapterView.getCheckedItemPosition(); - final boolean hasValidSelection = checkedPos != ListView.INVALID_POSITION; - if (mAlwaysUseOption && (!hasValidSelection || mLastSelected != checkedPos)) { - setAlwaysButtonEnabled(hasValidSelection, checkedPos, true); - mOnceButton.setEnabled(hasValidSelection); - if (hasValidSelection) { - mAdapterView.smoothScrollToPosition(checkedPos); - } - mLastSelected = checkedPos; - } else { - startSelected(position, false, true); - } - } - private boolean hasManagedProfile() { UserManager userManager = (UserManager) getSystemService(Context.USER_SERVICE); if (userManager == null) { @@ -831,14 +756,68 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic startActivity(in); } - ResolveListAdapter createAdapter(Context context, Intent[] initialIntents, - List<ResolveInfo> rList, int launchedFromUid, boolean filterLastUsed) { - return new ResolveListAdapter(context, initialIntents, rList, launchedFromUid, - filterLastUsed); + ResolveListAdapter createAdapter(Context context, List<Intent> payloadIntents, + Intent[] initialIntents, List<ResolveInfo> rList, int launchedFromUid, + boolean filterLastUsed) { + return new ResolveListAdapter(context, payloadIntents, initialIntents, rList, + launchedFromUid, filterLastUsed); } - ResolveListAdapter getAdapter() { - return mAdapter; + void configureContentView(List<Intent> payloadIntents, Intent[] initialIntents, + List<ResolveInfo> rList, boolean alwaysUseOption) { + mAdapter = createAdapter(this, payloadIntents, initialIntents, rList, + mLaunchedFromUid, alwaysUseOption); + + final int layoutId; + if (mAdapter.hasFilteredItem()) { + layoutId = R.layout.resolver_list_with_default; + alwaysUseOption = false; + } else { + layoutId = getLayoutResource(); + } + mAlwaysUseOption = alwaysUseOption; + + int count = mAdapter.mDisplayList.size(); + if (count > 1 || (count == 1 && mAdapter.getOtherProfile() != null)) { + setContentView(layoutId); + mAdapterView = (AbsListView) findViewById(R.id.resolver_list); + onPrepareAdapterView(mAdapterView, mAdapter, alwaysUseOption); + } else if (count == 1) { + safelyStartActivity(mAdapter.targetInfoForPosition(0, false)); + mPackageMonitor.unregister(); + mRegistered = false; + finish(); + return; + } else { + setContentView(R.layout.resolver_list); + + final TextView empty = (TextView) findViewById(R.id.empty); + empty.setVisibility(View.VISIBLE); + + mAdapterView = (AbsListView) findViewById(R.id.resolver_list); + mAdapterView.setVisibility(View.GONE); + } + } + + void onPrepareAdapterView(AbsListView adapterView, ResolveListAdapter adapter, + boolean alwaysUseOption) { + final boolean useHeader = adapter.hasFilteredItem(); + final ListView listView = adapterView instanceof ListView ? (ListView) adapterView : null; + + adapterView.setAdapter(mAdapter); + + final ItemClickListener listener = new ItemClickListener(); + adapterView.setOnItemClickListener(listener); + adapterView.setOnItemLongClickListener(listener); + + if (alwaysUseOption) { + listView.setChoiceMode(AbsListView.CHOICE_MODE_SINGLE); + } + + if (useHeader && listView != null) { + listView.addHeaderView(LayoutInflater.from(this).inflate( + R.layout.resolver_different_item_header, listView, false)); + } } final class DisplayResolveInfo implements TargetInfo { @@ -888,6 +867,10 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic return mDisplayIcon; } + public Drawable getBadgeIcon() { + return null; + } + @Override public TargetInfo cloneFilledIn(Intent fillInIntent, int flags) { return new DisplayResolveInfo(this, fillInIntent, flags); @@ -1024,6 +1007,11 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic public Drawable getDisplayIcon(); /** + * @return The (small) icon to badge the target with + */ + public Drawable getBadgeIcon(); + + /** * Clone this target with the given fill-in information. */ public TargetInfo cloneFilledIn(Intent fillInIntent, int flags); @@ -1035,6 +1023,7 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic } class ResolveListAdapter extends BaseAdapter { + private final List<Intent> mIntents; private final Intent[] mInitialIntents; private final List<ResolveInfo> mBaseResolveList; private ResolveInfo mLastChosen; @@ -1050,8 +1039,10 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic private int mLastChosenPosition = -1; private boolean mFilterLastUsed; - public ResolveListAdapter(Context context, Intent[] initialIntents, - List<ResolveInfo> rList, int launchedFromUid, boolean filterLastUsed) { + public ResolveListAdapter(Context context, List<Intent> payloadIntents, + Intent[] initialIntents, List<ResolveInfo> rList, int launchedFromUid, + boolean filterLastUsed) { + mIntents = payloadIntents; mInitialIntents = initialIntents; mBaseResolveList = rList; mLaunchedFromUid = launchedFromUid; @@ -1430,15 +1421,19 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic View view = convertView; if (view == null) { view = createView(parent); - - final ViewHolder holder = new ViewHolder(view); - view.setTag(holder); } - bindView(view, getItem(position)); + onBindView(view, getItem(position)); return view; } - public View createView(ViewGroup parent) { + public final View createView(ViewGroup parent) { + final View view = onCreateView(parent); + final ViewHolder holder = new ViewHolder(view); + view.setTag(holder); + return view; + } + + public View onCreateView(ViewGroup parent) { return mInflater.inflate( com.android.internal.R.layout.resolve_list_item, parent, false); } @@ -1447,7 +1442,11 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic return !TextUtils.isEmpty(info.getExtendedInfo()); } - private final void bindView(View view, TargetInfo info) { + public final void bindView(int position, View view) { + onBindView(view, getItem(position)); + } + + private void onBindView(View view, TargetInfo info) { final ViewHolder holder = (ViewHolder) view.getTag(); holder.text.setText(info.getDisplayLabel()); if (showsExtendedInfo(info)) { @@ -1461,6 +1460,15 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic new LoadAdapterIconTask((DisplayResolveInfo) info).execute(); } holder.icon.setImageDrawable(info.getDisplayIcon()); + if (holder.badge != null) { + final Drawable badge = info.getBadgeIcon(); + if (badge != null) { + holder.badge.setImageDrawable(badge); + holder.badge.setVisibility(View.VISIBLE); + } else { + holder.badge.setVisibility(View.GONE); + } + } } } @@ -1514,20 +1522,47 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic public TextView text; public TextView text2; public ImageView icon; + public ImageView badge; public ViewHolder(View view) { text = (TextView) view.findViewById(com.android.internal.R.id.text1); text2 = (TextView) view.findViewById(com.android.internal.R.id.text2); icon = (ImageView) view.findViewById(R.id.icon); + badge = (ImageView) view.findViewById(R.id.target_badge); } } - class ItemLongClickListener implements AdapterView.OnItemLongClickListener { + class ItemClickListener implements AdapterView.OnItemClickListener, + AdapterView.OnItemLongClickListener { + @Override + public void onItemClick(AdapterView<?> parent, View view, int position, long id) { + final ListView listView = parent instanceof ListView ? (ListView) parent : null; + if (listView != null) { + position -= listView.getHeaderViewsCount(); + } + if (position < 0) { + // Header views don't count. + return; + } + final int checkedPos = mAdapterView.getCheckedItemPosition(); + final boolean hasValidSelection = checkedPos != ListView.INVALID_POSITION; + if (mAlwaysUseOption && (!hasValidSelection || mLastSelected != checkedPos)) { + setAlwaysButtonEnabled(hasValidSelection, checkedPos, true); + mOnceButton.setEnabled(hasValidSelection); + if (hasValidSelection) { + mAdapterView.smoothScrollToPosition(checkedPos); + } + mLastSelected = checkedPos; + } else { + startSelected(position, false, true); + } + } @Override public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { - if (mListView != null) { - position -= mListView.getHeaderViewsCount(); + final ListView listView = parent instanceof ListView ? (ListView) parent : null; + if (listView != null) { + position -= listView.getHeaderViewsCount(); } if (position < 0) { // Header views don't count. diff --git a/core/java/com/android/internal/widget/FloatingToolbar.java b/core/java/com/android/internal/widget/FloatingToolbar.java index 3f7696f..f98fbfc 100644 --- a/core/java/com/android/internal/widget/FloatingToolbar.java +++ b/core/java/com/android/internal/widget/FloatingToolbar.java @@ -1247,9 +1247,13 @@ public final class FloatingToolbar { } private static int getAdjustedToolbarWidth(Context context, int width) { - if (width <= 0 || width > getScreenWidth(context)) { - width = context.getResources() - .getDimensionPixelSize(R.dimen.floating_toolbar_default_width); + int maximumWidth = getScreenWidth(context) - 2 * context.getResources() + .getDimensionPixelSize(R.dimen.floating_toolbar_horizontal_margin); + + if (width <= 0 || width > maximumWidth) { + int defaultWidth = context.getResources() + .getDimensionPixelSize(R.dimen.floating_toolbar_preferred_width); + width = Math.min(defaultWidth, maximumWidth); } return width; } diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index 7b53578..e5bba6e 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -2103,7 +2103,8 @@ <!-- @SystemApi Allows an application to collect component usage statistics - <p>Not for use by third-party applications. --> + <p>Declaring the permission implies intention to use the API and the user of the + device can grant permission through the Settings application. --> <permission android:name="android.permission.PACKAGE_USAGE_STATS" android:protectionLevel="signature|development|appop" /> <uses-permission android:name="android.permission.PACKAGE_USAGE_STATS" /> diff --git a/core/res/res/layout/chooser_grid.xml b/core/res/res/layout/chooser_grid.xml index 0fa82eb..dcdfb6c 100644 --- a/core/res/res/layout/chooser_grid.xml +++ b/core/res/res/layout/chooser_grid.xml @@ -21,7 +21,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:maxWidth="@dimen/resolver_max_width" - android:maxCollapsedHeight="256dp" + android:maxCollapsedHeight="288dp" android:maxCollapsedHeightSmall="56dp" android:id="@id/contentPanel"> @@ -30,24 +30,25 @@ android:layout_height="wrap_content" android:layout_alwaysShow="true" android:elevation="8dp" - android:paddingStart="?attr/dialogPreferredPadding" + android:paddingStart="16dp" android:background="@color/white" > <ImageView android:id="@+id/title_icon" android:layout_width="24dp" android:layout_height="24dp" android:layout_gravity="start|center_vertical" android:layout_marginEnd="16dp" + android:visibility="gone" android:scaleType="fitCenter" /> <TextView android:id="@+id/title" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" - android:minHeight="56dp" android:textAppearance="?attr/textAppearanceMedium" + android:textSize="14sp" android:gravity="start|center_vertical" android:paddingEnd="?attr/dialogPreferredPadding" - android:paddingTop="8dp" - android:paddingBottom="8dp" /> + android:paddingTop="12dp" + android:paddingBottom="12dp" /> <LinearLayout android:id="@+id/profile_button" android:layout_width="wrap_content" android:layout_height="48dp" @@ -82,23 +83,24 @@ </LinearLayout> </LinearLayout> - <GridView + <ListView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/resolver_list" android:clipToPadding="false" - android:paddingStart="@dimen/chooser_grid_padding" - android:paddingEnd="@dimen/chooser_grid_padding" android:scrollbarStyle="outsideOverlay" android:background="@color/white" android:elevation="8dp" - android:numColumns="4" + android:listSelector="@color/transparent" + android:divider="@null" + android:scrollIndicators="top" android:nestedScrollingEnabled="true" /> <TextView android:id="@+id/empty" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alwaysShow="true" + android:background="@color/white" android:text="@string/noApplications" android:padding="32dp" android:gravity="center" diff --git a/core/res/res/layout/chooser_row.xml b/core/res/res/layout/chooser_row.xml new file mode 100644 index 0000000..9baa32c --- /dev/null +++ b/core/res/res/layout/chooser_row.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2015, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:orientation="horizontal" + android:layout_width="match_parent" android:layout_height="wrap_content" + android:minHeight="80dp" + android:gravity="start|top" + android:paddingTop="8dp" + android:paddingBottom="8dp" + android:paddingStart="@dimen/chooser_grid_padding" + android:paddingEnd="@dimen/chooser_grid_padding" + android:weightSum="4"> + +</LinearLayout> + diff --git a/core/res/res/layout/resolve_grid_item.xml b/core/res/res/layout/resolve_grid_item.xml index 664b02f..1c496f6 100644 --- a/core/res/res/layout/resolve_grid_item.xml +++ b/core/res/res/layout/resolve_grid_item.xml @@ -18,18 +18,31 @@ --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" - android:layout_width="match_parent" android:layout_height="wrap_content" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" android:minWidth="80dp" android:gravity="center" android:paddingTop="8dp" android:paddingBottom="8dp" - android:background="?attr/activatedBackgroundIndicator"> + android:background="?attr/selectableItemBackgroundBorderless"> - <!-- Activity icon when presenting dialog --> - <ImageView android:id="@+id/icon" - android:layout_width="48dp" - android:layout_height="48dp" - android:scaleType="fitCenter" /> + <FrameLayout android:layout_width="wrap_content" + android:layout_height="wrap_content"> + <ImageView android:id="@+id/icon" + android:layout_width="48dp" + android:layout_height="48dp" + android:layout_marginLeft="3dp" + android:layout_marginRight="3dp" + android:layout_marginBottom="3dp" + android:scaleType="fitCenter" /> + <ImageView android:id="@+id/target_badge" + android:layout_width="16dp" + android:layout_height="16dp" + android:layout_gravity="end|bottom" + android:visibility="gone" + android:scaleType="fitCenter" /> + </FrameLayout> <!-- Activity name --> <TextView android:id="@android:id/text1" @@ -40,21 +53,23 @@ android:layout_marginRight="4dp" android:textAppearance="?attr/textAppearanceSmall" android:textColor="?attr/textColorPrimary" + android:textSize="12sp" android:fontFamily="sans-serif-condensed" - android:gravity="center" + android:gravity="top|center_horizontal" android:minLines="2" android:maxLines="2" android:ellipsize="marquee" /> <!-- Extended activity info to distinguish between duplicate activity names --> <TextView android:id="@android:id/text2" android:textAppearance="?android:attr/textAppearanceSmall" + android:textSize="12sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="4dp" android:layout_marginRight="4dp" android:minLines="2" android:maxLines="2" - android:gravity="center" + android:gravity="top|center_horizontal" android:ellipsize="marquee" /> </LinearLayout> diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml index 922db05..204e43e 100644 --- a/core/res/res/values-af/strings.xml +++ b/core/res/res/values-af/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Af"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Verkieslik Wi-Fi"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Verkieslik sellulêr"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Vra ontsluitpatroon voordat jy ontspeld"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Vra wagwoord voordat jy ontspeld"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Deur jou administrateur geïnstalleer"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Opgedateer deur jou administrateur"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Deur jou administrateur uitgevee"</string> <string name="battery_saver_description" msgid="1960431123816253034">"Om batterylewe te help verbeter, verminder batterybespaarder jou toestel se werkverrigting en beperk vibrasie, liggingdienste en die meeste agtergronddata. E-pos, boodskappe en ander programme wat op sinkronisering staatmaak, sal dalk nie opdateer tensy jy hulle oopmaak nie.\n\nBatterybespaarder skakel outomaties af wanneer jou toestel besig is om te laai."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Vou in"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Moenie steur nie"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Staantyd"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Weekaande"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Naweke"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"Gedemp deur <xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"Daar is \'n interne probleem met jou toestel en dit sal dalk onstabiel wees totdat jy \'n fabriekterugstelling doen."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"Daar is \'n interne probleem met jou toestel. Kontak jou vervaardiger vir besonderhede."</string> diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml index ad6605a..f993bba 100644 --- a/core/res/res/values-am/strings.xml +++ b/core/res/res/values-am/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"ጠፍቷል"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Wi-Fi ተመርጧል"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"የተንቀሳቃሽ ስልክ ተመርጧል"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"ከመንቀል በፊት የማስከፈቻ ስርዓተ-ጥለት ጠይቅ"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"ከመንቀል በፊት የይለፍ ቃል ጠይቅ"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"በእርስዎ አስተዳዳሪ ተጭኗል"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"በአስተዳዳሪዎ ተዘምኗል"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"በእርስዎ አስተዳዳሪ ተሰርዟል"</string> <string name="battery_saver_description" msgid="1960431123816253034">"የባትሪ ዕድሜን ለማሻሻል ማገዝ እንዲቻል፣ ኢሜይል፣ መልዕክት አላላክ እና ሌሎች በማመሳሰል ላይ የሚመረኮዙ መተግበሪያዎች እርስዎ ካልከፈቱዋቸው በቀር አይዘምኑም።\n\nየባትሪ ኃይል ቆጣቢ የእርስዎ መሣሪያ ኃይል በሚሞላበት ጊዜ በራስ-ሰር ይጠፋል።"</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"ሰብስብ"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"አትረብሽ"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"የማይገኝበት ጊዜ"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"የሳምንቱ ቀኖች ምሽቶች"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"የሳምንት መጨረሻ ቀኖች"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"ድምጽ በ<xliff:g id="THIRD_PARTY">%1$s</xliff:g> ተዘግቷል"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"መሣሪያዎ ላይ የውስጣዊ ችግር አለ፣ የፋብሪካ ውሂብ ዳግም እስኪያስጀምሩት ድረስ ላይረጋጋ ይችላል።"</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"መሣሪያዎ ላይ የውስጣዊ ችግር አለ። ዝርዝሮችን ለማግኘት አምራችዎን ያነጋግሩ።"</string> diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml index 3591a37..1218957 100644 --- a/core/res/res/values-ar/strings.xml +++ b/core/res/res/values-ar/strings.xml @@ -133,6 +133,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"إيقاف"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"شبكة Wi-Fi مُفضّلة"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"شبكة الجوّال مُفضّلة"</string> @@ -1535,8 +1536,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"تصغير"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"الرجاء عدم الإزعاج"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"التعطل"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"ليالي الأسبوع"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"نهايات الأسبوع"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"تم كتم الصوت بواسطة <xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"حدثت مشكلة داخلية في جهازك، وقد لا يستقر وضعه حتى إجراء إعادة الضبط بحسب بيانات المصنع."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"حدثت مشكلة داخلية في جهازك. يمكنك الاتصال بالمصنِّع للحصول على تفاصيل."</string> diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml index d173305..402f67f 100644 --- a/core/res/res/values-bg/strings.xml +++ b/core/res/res/values-bg/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Изключено"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Предпочита се Wi-Fi"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Предпочита се клетъчна мрежа"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Запитване за фигура за отключване преди освобождаване"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Запитване за парола преди освобождаване"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Инсталирано от администратора ви"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Актуализирано от администратора ви"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Изтрито от администратора ви"</string> <string name="battery_saver_description" msgid="1960431123816253034">"С цел удължаване на живота на батерията режимът за запазването й намалява ефективността на устройството ви и ограничава вибрирането, услугите за местоположение и повечето данни на заден план. Приложенията за електронна поща, съобщения и др., които разчитат на синхронизиране, може да не се актуализират, освен ако не ги отворите.\n\nРежимът за запазване на батерията се изключва автоматично, когато устройството ви се зарежда."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Свиване"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Не безпокойте"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Почивка"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Делничните вечери"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Събота и неделя"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"Заглушено от <xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"Възникна вътрешен проблем с устройството ви. То може да е нестабилно, докато не възстановите фабричните настройки."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"Възникна вътрешен проблем с устройството ви. За подробности се свържете с производителя."</string> diff --git a/core/res/res/values-bn-rBD/strings.xml b/core/res/res/values-bn-rBD/strings.xml index cec614b..ab988ed 100644 --- a/core/res/res/values-bn-rBD/strings.xml +++ b/core/res/res/values-bn-rBD/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"বন্ধ আছে"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"পছন্দের Wi-Fi"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"পছন্দের মোবাইল নেটওয়ার্ক"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"আনপিন করার আগে আনলক প্যাটার্ন চান"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"আনপিন করার আগে পাসওয়ার্ড চান"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"আপনার প্রশাসক দ্বারা ইনস্টল করা হয়েছে"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"আপনার প্রশাসক দ্বারা আপডেট করা হয়েছে"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"আপনার প্রশাসক দ্বারা মুছে ফেলা হয়েছে"</string> <string name="battery_saver_description" msgid="1960431123816253034">"ব্যাটরির লাইফ উন্নত করতে সহায়তা করতে, ব্যাটারি সাশ্রয়কারী আপনার ডিভাইসের কার্যসম্পাদনা হ্রাস করে এবং কম্পন, অবস্থান পরিষেবাসমূহ এবং অধিকাংশ ব্যাকগ্রাউন্ড ডেটা সীমিত করে৷ ইমেল, বার্তাপ্রেরণ এবং অন্যান্য অ্যাপ্লিকেশানগুলিকে যেগুলি সিঙ্কের উপর নির্ভর করে সেগুলিকে আপনি না খোলা পর্যন্ত নাও আপডেট হতে পারে৷\n\nআপনার ডিভাইসটিকে যখন চার্জ করা হয় তখন ব্যাটারি সাশ্রয়কারী স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যায়৷"</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"সঙ্কুচিত করুন"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"বিরক্ত করবেন না"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"ডাউনটাইম"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"প্রতি সোম-শুক্র রাত"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"সপ্তাহান্ত"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> দ্বারা নিঃশব্দ করা হয়েছে"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"আপনার ডিভাইসে একটি অভ্যন্তরীন সমস্যা হয়েছে, এবং আপনি যতক্ষণ না পর্যন্ত এটিকে ফ্যাক্টরি ডেটা রিসেট করছেন ততক্ষণ এটি ঠিকভাবে কাজ নাও করতে পারে৷"</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"আপনার ডিভাইসে একটি অভ্যন্তরীন সমস্যা হয়েছে৷ বিস্তারিত জানার জন্য প্রস্তুতকারকের সাথে যোগাযোগ করুন৷"</string> diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml index 8a726f7..ae21dec 100644 --- a/core/res/res/values-ca/strings.xml +++ b/core/res/res/values-ca/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Desactivades"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Preferència per la Wi-Fi"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Preferència per les dades mòbils"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Sol·licita el patró de desbloqueig per anul·lar la fixació"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Demana la contrasenya abans d\'anul·lar la fixació"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"L\'administrador ho ha instal·lat"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"L\'administrador l\'ha actualitzat"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"L\'administrador ho ha suprimit"</string> <string name="battery_saver_description" msgid="1960431123816253034">"Per allargar la durada de la bateria, l\'estalvi de bateria redueix el rendiment del dispositiu i limita l\'ús de la vibració, dels serveis d\'ubicació i de la majoria de les dades en segon pla. És possible que el correu electrònic, la missatgeria i altres aplicacions que depenen de la sincronització no s\'actualitzin fins que els obris.\n\nL\'estalvi de bateria es desactiva de manera automàtica quan el dispositiu es posa a carregar."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Replega"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"No molesteu"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Temps d\'inactivitat"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Nits entre setmana"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Caps de setmana"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"Silenciat per <xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"S\'ha produït un error intern al dispositiu i és possible que funcioni de manera inestable fins que restableixis les dades de fàbrica."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"S\'ha produït un error intern al dispositiu. Contacta amb el fabricant del dispositiu per obtenir més informació."</string> diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml index b02bbe3..3578830 100644 --- a/core/res/res/values-cs/strings.xml +++ b/core/res/res/values-cs/strings.xml @@ -131,6 +131,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Vypnuto"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Preferována síť W-Fi"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Preferována mobilní síť"</string> @@ -1476,8 +1477,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Před uvolněním požádat o bezpečnostní gesto"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Před uvolněním požádat o heslo"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Nainstalováno administrátorem"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Aktualizováno administrátorem"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Smazáno administrátorem"</string> <string name="battery_saver_description" msgid="1960431123816253034">"Spořič baterie za účelem prodloužení výdrže baterie snižuje výkon zařízení a omezuje vibrace, služby určování polohy a většinu dat na pozadí. E-mail, aplikace pro zasílání zpráv a další aplikace, které používají synchronizaci, se nemusejí aktualizovat, dokud je neotevřete.\n\nPři nabíjení zařízení se spořič baterie automaticky vypne."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1510,8 +1510,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Sbalit"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Nerušit"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Období klidu"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Noci pracovních dnů"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Víkendy"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"Ignorováno stranou <xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"V zařízení došlo k internímu problému. Dokud neprovedete obnovení továrních dat, může být nestabilní."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"V zařízení došlo k internímu problému. Další informace vám sdělí výrobce."</string> diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml index 43e2c95..a546772 100644 --- a/core/res/res/values-da/strings.xml +++ b/core/res/res/values-da/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Fra"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"WiFi-netværk er foretrukket"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Mobilnetværk er foretrukket"</string> @@ -1083,7 +1084,7 @@ <string name="ext_media_move_specific_title" msgid="1471100343872375842">"Flytter <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_move_title" msgid="1022809140035962662">"Flytter data"</string> <string name="ext_media_move_success_title" msgid="8575300932957954671">"Flytningen er gennemført"</string> - <string name="ext_media_move_success_message" msgid="4199002148206265426">"Data flyttes til <xliff:g id="NAME">%s</xliff:g>"</string> + <string name="ext_media_move_success_message" msgid="4199002148206265426">"Data flyttet til <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_move_failure_title" msgid="7613189040358789908">"Dine data kunne ikke flyttes"</string> <string name="ext_media_move_failure_message" msgid="1978096440816403360">"Dine data er stadig på den oprindelige placering"</string> <string name="activity_list_empty" msgid="1675388330786841066">"Der blev ikke fundet nogen matchende aktiviteter."</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Bed om oplåsningsmønster ved deaktivering"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Bed om adgangskode inden frigørelse"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Installeret af din administrator"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Opdateret af administrator"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Slettet af din administrator"</string> <string name="battery_saver_description" msgid="1960431123816253034">"Batterisparefunktionen hjælper med at forlænge batteriets levetid ved at reducere enhedens ydeevne og begrænse vibration, placeringstjenester og det meste baggrundsdata. E-mail, beskedfunktioner og andre apps, der benytter synkronisering, opdateres muligvis ikke, medmindre du åbner dem.\n\nBatterisparefunktionen slukker automatisk, når enheden oplader."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Skjul"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Vil ikke forstyrres"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Nedetid"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Hverdagsaftener"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Weekender"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"Lyden blev afbrudt af <xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"Der er et internt problem med enheden, og den vil muligvis være ustabil, indtil du gendanner fabriksdataene."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"Der er et internt problem med enheden. Kontakt producenten for at få yderligere oplysninger."</string> diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml index 975bc0a..a4dd9a4 100644 --- a/core/res/res/values-de/strings.xml +++ b/core/res/res/values-de/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Aus"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"WLAN bevorzugt"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Mobilfunk bevorzugt"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Vor dem Beenden nach Entsperrungsmuster fragen"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Vor dem Beenden nach Passwort fragen"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Von Ihrem Administrator installiert"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Von Ihrem Administrator aktualisiert"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Von Ihrem Administrator gelöscht"</string> <string name="battery_saver_description" msgid="1960431123816253034">"Der Energiesparmodus schont den Akku, indem er die Leistung des Geräts reduziert und die Vibrationsfunktion sowie die meisten Hintergrunddatenaktivitäten einschränkt. E-Mail, SMS/MMS und andere Apps, die auf Ihrem Gerät synchronisiert werden, werden möglicherweise erst nach dem Öffnen aktualisiert.\n\nDer Energiesparmodus wird automatisch deaktiviert, wenn Ihr Gerät aufgeladen wird."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Minimieren"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Nicht stören"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Ruhezeit"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Wochentags abends"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Wochenende"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"Stummgeschaltet durch <xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"Es liegt ein internes Problem mit Ihrem Gerät vor. Möglicherweise verhält es sich instabil, bis Sie es auf die Werkseinstellungen zurücksetzen."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"Es liegt ein internes Problem mit Ihrem Gerät vor. Bitte wenden Sie sich diesbezüglich an den Hersteller."</string> diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml index 4d79581..c15f379 100644 --- a/core/res/res/values-el/strings.xml +++ b/core/res/res/values-el/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Ανενεργό"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Προτίμηση Wi-Fi"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Προτίμηση δικτύου κινητής τηλεφωνίας"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Να γίνεται ερώτηση για το μοτίβο ξεκλειδώματος, πριν από το ξεκαρφίτσωμα"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Να γίνεται ερώτηση για τον κωδικό πρόσβασης, πριν από το ξεκαρφίτσωμα"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Εγκαταστάθηκε από το διαχειριστή σας"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Ενημερώθηκε από το διαχειριστή σας"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Διαγράφηκε από το διαχειριστή σας"</string> <string name="battery_saver_description" msgid="1960431123816253034">"Προκειμένου να βελτιώσει τη διάρκεια ζωής της μπαταρίας σας, η Εξοικονόμηση μπαταρίας μειώνει την απόδοση της συσκευής σας και περιορίζει λειτουργίες όπως η δόνηση, οι υπηρεσίες τοποθεσίας και τα περισσότερα δεδομένα παρασκηνίου. Το ηλεκτρονικό ταχυδρομείο, η ανταλλαγή μηνυμάτων και άλλες εφαρμογές που βασίζονται στο συγχρονισμό ενδέχεται να μην ενημερώνονται έως ότου τις ανοίξετε.\n\nΗ Εξοικονόμηση μπαταρίας απενεργοποιείται αυτόματα όταν η συσκευή σας φορτίζει."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Σύμπτυξη"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Μην ενοχλείτε"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Διακοπή λειτουργίας"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Καθημερινές"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Σαββατοκύριακα"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"Σίγαση από <xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"Υπάρχει ένα εσωτερικό πρόβλημα με τη συσκευή σας και ενδέχεται να είναι ασταθής μέχρι την επαναφορά των εργοστασιακών ρυθμίσεων."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"Υπάρχει ένα εσωτερικό πρόβλημα με τη συσκευή σας. Επικοινωνήστε με τον κατασκευαστή σας για λεπτομέρειες."</string> diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml index 8bd4b57..3b50363 100644 --- a/core/res/res/values-en-rAU/strings.xml +++ b/core/res/res/values-en-rAU/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Off"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Wi-Fi preferred"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Mobile preferred"</string> @@ -1483,8 +1484,9 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Collapse"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Do not disturb"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Downtime"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Weeknights"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Weekends"</string> + <string name="zen_mode_default_weeknights_name" msgid="3081318299464998143">"Weeknight"</string> + <string name="zen_mode_default_weekends_name" msgid="2786495801019345244">"Weekend"</string> + <string name="zen_mode_default_events_name" msgid="8158334939013085363">"Event"</string> <string name="muted_by" msgid="6147073845094180001">"Muted by <xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"There\'s an internal problem with your device, and it may be unstable until you factory data reset."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"There\'s an internal problem with your device. Contact your manufacturer for details."</string> diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml index 8bd4b57..3b50363 100644 --- a/core/res/res/values-en-rGB/strings.xml +++ b/core/res/res/values-en-rGB/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Off"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Wi-Fi preferred"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Mobile preferred"</string> @@ -1483,8 +1484,9 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Collapse"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Do not disturb"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Downtime"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Weeknights"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Weekends"</string> + <string name="zen_mode_default_weeknights_name" msgid="3081318299464998143">"Weeknight"</string> + <string name="zen_mode_default_weekends_name" msgid="2786495801019345244">"Weekend"</string> + <string name="zen_mode_default_events_name" msgid="8158334939013085363">"Event"</string> <string name="muted_by" msgid="6147073845094180001">"Muted by <xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"There\'s an internal problem with your device, and it may be unstable until you factory data reset."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"There\'s an internal problem with your device. Contact your manufacturer for details."</string> diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml index 8bd4b57..3b50363 100644 --- a/core/res/res/values-en-rIN/strings.xml +++ b/core/res/res/values-en-rIN/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Off"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Wi-Fi preferred"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Mobile preferred"</string> @@ -1483,8 +1484,9 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Collapse"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Do not disturb"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Downtime"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Weeknights"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Weekends"</string> + <string name="zen_mode_default_weeknights_name" msgid="3081318299464998143">"Weeknight"</string> + <string name="zen_mode_default_weekends_name" msgid="2786495801019345244">"Weekend"</string> + <string name="zen_mode_default_events_name" msgid="8158334939013085363">"Event"</string> <string name="muted_by" msgid="6147073845094180001">"Muted by <xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"There\'s an internal problem with your device, and it may be unstable until you factory data reset."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"There\'s an internal problem with your device. Contact your manufacturer for details."</string> diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml index f5cf89b..c1ea0df 100644 --- a/core/res/res/values-es-rUS/strings.xml +++ b/core/res/res/values-es-rUS/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Desactivada"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Red Wi-Fi preferida"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Red móvil preferida"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Solicitar patrón de desbloqueo para quitar fijación"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Solicitar contraseña para quitar fijación"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Lo instaló el administrador."</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Actualizado por el administrador"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Lo eliminó el administrador."</string> <string name="battery_saver_description" msgid="1960431123816253034">"Para ayudar a mejorar la duración de la batería, el ahorro de batería reduce el rendimiento del dispositivo y limita la vibración, los servicios de ubicación y la mayoría de los datos en segundo plano. Es posible que el correo electrónico, la mensajería y otras aplicaciones que se basan en la sincronización no puedan actualizarse, a menos que los abras.\n\nEl ahorro de batería se desactiva de forma automática cuando el dispositivo se está cargando."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Contraer"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"No molestar"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Tiempo de inactividad"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Noches entre semana"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Fines de semana"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"Silenciados por <xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"Existe un problema interno con el dispositivo, de modo que el dispositivo puede estar inestable hasta que restablezcas la configuración de fábrica."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"Existe un problema interno con el dispositivo. Comunícate con el fabricante para obtener más información."</string> diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml index be2e58a..4127655 100644 --- a/core/res/res/values-es/strings.xml +++ b/core/res/res/values-es/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Desactivado"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Preferir Wi-Fi"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Preferir datos móviles"</string> @@ -1132,7 +1133,7 @@ <string name="submit" msgid="1602335572089911941">"Enviar"</string> <string name="car_mode_disable_notification_title" msgid="3164768212003864316">"Se ha habilitado el modo coche"</string> <string name="car_mode_disable_notification_message" msgid="8035230537563503262">"Toca para salir del modo coche."</string> - <string name="tethered_notification_title" msgid="3146694234398202601">"Anclaje a red/Zona Wi-Fi activo"</string> + <string name="tethered_notification_title" msgid="3146694234398202601">"Compartir Internet/Zona Wi-Fi activado"</string> <string name="tethered_notification_message" msgid="6857031760103062982">"Toca para configurar"</string> <string name="back_button_label" msgid="2300470004503343439">"Atrás"</string> <string name="next_button_label" msgid="1080555104677992408">"Siguiente"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Solicitar patrón de desbloqueo para desactivar"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Solicitar contraseña para desactivar"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Instalado por tu administrador"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Actualizado por tu administrador"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Eliminado por tu administrador"</string> <string name="battery_saver_description" msgid="1960431123816253034">"Para ayudar a mejorar la duración de la batería, la función de ahorro de energía reduce el rendimiento del dispositivo y limita la vibración, los servicios de ubicación y la mayor parte de la transmisión de datos en segundo plano. Es posible que las aplicaciones que se sincronizan, como las de correo y mensajes, no se actualicen a menos que las abras.\n\nLa función de ahorro de energía se desactiva automáticamente cuando el dispositivo se está cargando."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Contraer"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"No molestar"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Tiempo de inactividad"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Noches entre semana"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Fines de semana"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"Silenciado por <xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"Se ha producido un problema interno en el dispositivo y es posible que este no sea estable hasta que restablezcas los datos de fábrica."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"Se ha producido un problema interno en el dispositivo. Ponte en contacto con el fabricante para obtener más información."</string> diff --git a/core/res/res/values-et-rEE/strings.xml b/core/res/res/values-et-rEE/strings.xml index 735b56d..6b82b57 100644 --- a/core/res/res/values-et-rEE/strings.xml +++ b/core/res/res/values-et-rEE/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Väljas"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"WiFi eelistusega"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Mobiilside eelistusega"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Enne vabastamist küsi avamismustrit"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Enne vabastamist küsi parooli"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Installis teie administraator"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Värskendas administraator"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Kustutas teie administraator"</string> <string name="battery_saver_description" msgid="1960431123816253034">"Aku kestuse parandamiseks vähendab akusäästja teie seadme toimivust ning piirab vibratsiooni, asukohateenuseid ja suuremat osa taustaandmetest. E-posti, sõnumsidet ja muid sünkroonimisele tuginevaid rakendusi võidakse värskendada ainult siis, kui te need avate.\n\nAkusäästja lülitatakse seadme laadimise ajal automaatselt välja."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Ahendamine"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Mitte segada"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Puhkeaeg"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Argiõhtud"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Nädalavahetused"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> vaigistas"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"Seadmes ilmnes sisemine probleem ja seade võib olla ebastabiilne seni, kuni lähtestate seadme tehase andmetele."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"Seadmes ilmnes sisemine probleem. Üksikasjaliku teabe saamiseks võtke ühendust tootjaga."</string> diff --git a/core/res/res/values-eu-rES/strings.xml b/core/res/res/values-eu-rES/strings.xml index 25e8308..7bbe988 100644 --- a/core/res/res/values-eu-rES/strings.xml +++ b/core/res/res/values-eu-rES/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Desaktibatuta"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Wi-Fi sarea hobesten da"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Sare mugikorra hobesten da"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Eskatu desblokeatzeko eredua aingura kendu aurretik"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Eskatu pasahitza aingura kendu aurretik"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Administratzaileak instalatu du"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Administratzaileak eguneratu du"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Administratzaileak ezabatu du"</string> <string name="battery_saver_description" msgid="1960431123816253034">"Bateriak gehiago iraun dezan, bateria-aurrezleak gailuaren funtzionamendua, dardara, kokapen-zerbitzuak eta atzeko planoko datuen erabilera gehiena mugatzen ditu. Posta elektronikoa, mezuak eta sinkronizatzen diren gainerako zerbitzuak ez dira eguneratuko ireki ezean.\n\nGailua kargatzen ezarri orduko desaktibatzen da bateria-aurrezlea."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Tolestu"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Ez molestatu"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Jarduerarik gabeko denbora"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Lanegunetako gauak"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Asteburuak"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"Audioa desaktibatu da (<xliff:g id="THIRD_PARTY">%1$s</xliff:g>)"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"Barneko arazo bat dago zure gailuan eta agian ezegonkor egongo da jatorrizko datuak berrezartzen dituzun arte."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"Barneko arazo bat dago zure gailuan. Xehetasunak jakiteko, jarri fabrikatzailearekin harremanetan."</string> diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml index 93caee260..0204692 100644 --- a/core/res/res/values-fa/strings.xml +++ b/core/res/res/values-fa/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"خاموش"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Wi-Fi ترجیحی"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"شبکه سلولی ترجیحی"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"درخواست الگوی باز کردن قفل قبل از برداشتن پین"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"درخواست گذرواژه قبل از برداشتن پین"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"توسط سرپرستتان نصب شد"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"توسط سرپرست شما بهروزرسانی شد"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"توسط سرپرستتان حذف شد"</string> <string name="battery_saver_description" msgid="1960431123816253034">"برای کمک به بهبود ماندگاری باتری، ابزار صرفهجویی در مصرف باتری عملکرد دستگاهتان را کاهش میدهد و لرزش، سرویسهای مبتنی بر مکان، و دسترسی به اکثر دادهها در پسزمینه را محدود میکند. ایمیل، پیامرسانی و برنامههای دیگری که به همگامسازی متکی هستند، تا زمانی که آنها را باز نکنید نمیتوانند بهروز شوند.\n\nابزار صرفهجویی در مصرف باتری به صورت خودکار در هنگام شارژ شدن دستگاه خاموش میشود."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"کوچک کردن"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"مزاحم نشوید"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"فرویش"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"شبهای آخر هفته"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"آخر هفتهها"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> آن را بیصدا کرد"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"دستگاهتان یک مشکل داخلی دارد، و ممکن است تا زمانی که بازنشانی به داده کارخانه انجام نگیرد، بیثبات بماند."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"دستگاهتان یک مشکل داخلی دارد. برای جزئیات آن با سازندهتان تماس بگیرید."</string> diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml index 79aa234..a7c4f3f 100644 --- a/core/res/res/values-fi/strings.xml +++ b/core/res/res/values-fi/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Ei käytössä"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Wi-Fi ensisijainen"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Matkapuhelinverkko ensisijainen"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Pyydä lukituksenpoistokuvio ennen irrotusta"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Pyydä salasana ennen irrotusta"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Järjestelmänvalvoja on asentanut paketin."</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Järjestelmänvalvojasi on päivittänyt paketin."</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Järjestelmänvalvoja on poistanut paketin."</string> <string name="battery_saver_description" msgid="1960431123816253034">"Jos haluat parantaa akun kestoa, virransäästö vähentää laitteesi suorituskykyä ja rajoittaa värinää, sijaintipalveluita ja useimpia taustatietoja. Sähköposti, viestit ja muut synkronointiin perustuvat sovellukset eivät välttämättä päivity, ellet avaa niitä.\n\nVirransäästö poistuu käytöstä automaattisesti, kun laitteesi latautuu."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Kutista"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Älä häiritse"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Vapaalla"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Arki-illat"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Viikonloput"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"Mykistänyt <xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"Laitteellasi on sisäinen ongelma, joka aiheuttaa epävakautta. Voit korjata tilanteen palauttamalla tehdasasetukset."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"Laitteesi yhdistäminen ei onnistu sisäisen virheen takia. Saat lisätietoja valmistajalta."</string> diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml index f76a253..c89d989 100644 --- a/core/res/res/values-fr-rCA/strings.xml +++ b/core/res/res/values-fr-rCA/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Désactivé"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Réseau Wi-Fi de préférence"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Réseau cellulaire de préférence"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Demander le schéma de déverrouillage avant d\'annuler l\'épinglage"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Demander le mot de passe avant d\'annuler l\'épinglage"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Installé par votre administrateur"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Mis à jour par votre administrateur"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Supprimé par votre administrateur"</string> <string name="battery_saver_description" msgid="1960431123816253034">"Pour améliorer l\'autonomie de la pile, la fonction d\'économie d\'énergie réduit les performances de votre appareil et limite la vibration, les services de localisation ainsi que la plupart des données en arrière-plan. Les applications Courriel, Messages et d\'autres qui reposent sur la synchronisation ne peuvent pas se mettre à jour, sauf si vous les ouvrez. \n\n L\'économiseur d\'énergie se désactive automatiquement lorsque votre appareil est en charge."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Réduire"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Ne pas déranger"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Temps d\'arrêt"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Les soirs de semaine"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Les fins de semaine"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"Mis en sourdine par <xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"Un problème interne est survenu avec votre appareil. Il se peut qu\'il soit instable jusqu\'à ce que vous le réinitialisiez à sa configuration d\'usine."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"Un problème interne est survenu avec votre appareil. Communiquez avec le fabricant pour obtenir plus de détails."</string> diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml index e777106..9cc881b 100644 --- a/core/res/res/values-fr/strings.xml +++ b/core/res/res/values-fr/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Désactivé"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Wi-Fi de préférence"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Mobile de préférence"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Demander le schéma de déverrouillage avant d\'annuler l\'épinglage"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Demander le mot de passe avant d\'annuler l\'épinglage"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Installé par votre administrateur"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Mis à jour par votre administrateur"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Supprimé par votre administrateur"</string> <string name="battery_saver_description" msgid="1960431123816253034">"Pour améliorer l\'autonomie de la batterie, l\'économiseur de batterie réduit les performances de votre appareil, et il désactive le vibreur, les services de localisation et la plupart des données en arrière-plan. La messagerie électronique, les SMS/MMS et les autres applications basées sur la synchronisation ne sont mises à jour que si vous les ouvrez.\n\nL\'économiseur de batterie s\'éteint automatiquement lorsque votre appareil est en charge."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Réduire"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Ne pas déranger"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Temps d\'arrêt"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Soirs de semaine"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Week-ends"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"Son coupé par : <xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"Un problème interne lié à votre appareil est survenu. Ce dernier risque d\'être instable jusqu\'à ce que vous rétablissiez la configuration d\'usine."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"Un problème interne lié à votre appareil est survenu. Veuillez contacter le fabricant pour en savoir plus."</string> diff --git a/core/res/res/values-gl-rES/strings.xml b/core/res/res/values-gl-rES/strings.xml index c6e2247..9fa0aae 100644 --- a/core/res/res/values-gl-rES/strings.xml +++ b/core/res/res/values-gl-rES/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Desactivado"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Wifi preferida"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Móbil preferido"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Solicitar un padrón de desbloqueo antes de soltar a pantalla"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Solicitar un contrasinal antes de soltar a pantalla"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Instalado polo administrador"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Actualizado polo administrador"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Eliminado polo administrador"</string> <string name="battery_saver_description" msgid="1960431123816253034">"Para axudar a mellorar a duración da batería, a función aforro de batería reduce o rendemento do teu dispositivo e limita a vibración, os servizos de localización e a maioría dos datos en segundo plano. É posible que o correo electrónico, as mensaxes e outras aplicacións que dependen da sincronización non se actualicen a menos que os abras. \n\nA función aforro de batería desactívase automaticamente cando pos a cargar o teu dispositivo."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Contraer"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Non molestar"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Tempo de inactividade"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Noites pola semana"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Fins de semana"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"Silenciado por <xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"Produciuse un erro interno no teu dispositivo e quizais funcione de maneira inestable ata o restablecemento dos datos de fábrica."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"Produciuse un erro interno co teu dispositivo. Contacta co teu fabricante para obter máis información."</string> diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml index 9c4df9a..8fe28a7 100644 --- a/core/res/res/values-hi/strings.xml +++ b/core/res/res/values-hi/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"बंद"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"वाई-फ़ाई को प्राथमिकता"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"सेल्युलर को प्राथमिकता"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"अनपिन करने से पहले अनलॉक पैटर्न के लिए पूछें"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"अनपिन करने से पहले पासवर्ड के लिए पूछें"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"आपके नियंत्रक द्वारा इंस्टॉल किया गया"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"आपके नियंत्रक द्वारा अपडेट किया गया"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"आपके नियंत्रक द्वारा हटाया गया"</string> <string name="battery_saver_description" msgid="1960431123816253034">"बैटरी जीवन काल को बेहतर बनाने में सहायता के लिए, बैटरी सेवर आपके डिवाइस के प्रदर्शन को कम कर देता है और कंपन, स्थान सेवाओं और अधिकांश पृष्ठभूमि डेटा को सीमित कर देता है. हो सकता है कि ईमेल, संदेश सेवा तथा समन्वयन पर आधारित अन्य ऐप्स तब तक ना खुलें जब तक कि आप उन्हें नहीं खोलते.\n\nजब आपका डिवाइस चार्ज हो रहा होता है तो बैटरी सेवर अपने आप बंद हो जाता है."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"संक्षिप्त करें"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"परेशान ना करें"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"बंद रहने का समय"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"कार्यदिवसों की रात"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"सप्ताहांत"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> द्वारा म्यूट किया गया"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"आपके डिवाइस के साथ कोई आंतरिक त्रुटि हुई और यह तब तक अस्थिर रह सकता है, जब तक आप फ़ैक्टरी डेटा रीसेट नहीं करते हैं."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"आपके डिवाइस के साथ कोई आंतरिक त्रुटि हुई. विवरणों के लिए अपने निर्माता से संपर्क करें."</string> diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml index 16503b8..a9d5e2b 100644 --- a/core/res/res/values-hr/strings.xml +++ b/core/res/res/values-hr/strings.xml @@ -130,6 +130,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Isključeno"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Prednost ima Wi-Fi mreža"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Prednost ima mobilna mreža"</string> @@ -1467,8 +1468,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Traži uzorak za otključavanje radi otkvačivanja"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Traži zaporku radi otkvačivanja"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Instalirao administrator"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Ažurira vaš administrator"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Izbrisao administrator"</string> <string name="battery_saver_description" msgid="1960431123816253034">"Da bi se produljilo trajanje baterije, ušteda baterije smanjuje rad uređaja i ograničava vibraciju, usluge lokacije i većinu pozadinskih podataka. Aplikacije za e-poštu, slanje poruka i druge aplikacije koje se oslanjaju na sinkronizaciju možda se neće ažurirati ako ih ne otvorite.\n\nUšteda baterije isključuje se automatski dok se uređaj puni."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1497,8 +1497,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Sažmi"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Ne ometaj"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Prekid rada"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Noći radnih dana"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Vikend"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"Zvuk je isklj. treća strana <xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"Na vašem uređaju postoji interni problem i možda neće biti stabilan dok ga ne vratite na tvorničko stanje."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"Na vašem uređaju postoji interni problem. Obratite se proizvođaču za više pojedinosti."</string> diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml index f2f5538..f8d384b 100644 --- a/core/res/res/values-hu/strings.xml +++ b/core/res/res/values-hu/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Ki"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Wi-Fi előnyben részesítve"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Mobiladat-kapcsolat előnyben részesítve"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Feloldási minta kérése a rögzítés feloldásához"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Jelszó kérése a rögzítés feloldásához"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"A rendszergazda telepítette"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Frissítette a rendszergazda"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"A rendszergazda törölte"</string> <string name="battery_saver_description" msgid="1960431123816253034">"Az akkumulátoridő növelése érdekében az energiatakarékos mód csökkenti az eszköz teljesítményét, és korlátozza a rezgést, a helyszolgáltatásokat, valamint a legtöbb háttéradatot is. Előfordulhat, hogy azok az e-mail-, üzenetküldő és egyéb alkalmazások, amelyek szinkronizálására számít, csak akkor frissítenek, ha megnyitja azokat.\n\nAz energiatakarékos mód automatikusan kikapcsol, ha eszköze töltőn van."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Összecsukás"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Ne zavarjanak"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Inaktivitás"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Hétköznap esténként"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Hétvégente"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"A(z) <xliff:g id="THIRD_PARTY">%1$s</xliff:g> elnémította"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"Belső probléma van az eszközzel, és instabil lehet, amíg vissza nem állítja a gyári adatokat."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"Belső probléma van az eszközzel. A részletekért vegye fel a kapcsolatot a gyártóval."</string> diff --git a/core/res/res/values-hy-rAM/strings.xml b/core/res/res/values-hy-rAM/strings.xml index 6d21523..0830950 100644 --- a/core/res/res/values-hy-rAM/strings.xml +++ b/core/res/res/values-hy-rAM/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Անջատված է"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Wi-Fi, նախընտրելի"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Բջջային, նախընտրելի"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Ապաամրացնելուց առաջ հարցնել ապակողպող նախշը"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Ապաամրացնելուց առաջ հարցնել գաղտնաբառը"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Ադմինիստրատորը տեղադրել է այն"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Ադմինիստրատորը թարմացրել է այն"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Ադմինիստրատորը ջնջել է այն"</string> <string name="battery_saver_description" msgid="1960431123816253034">"Մարտկոցի աշխատանքի ժամկետը երկարացնելու նպատակով, մարտկոցի էներգիայի խնայման գործառույթը սահմանափակում է սարքի աշխատանքը, թրթռոցը, տեղադրության ծառայությունները և հետնաշերտում աշխատող շատ գործընթացներ: Էլփոստը, հաղորդագրությունների փոխանակումը և տվյալների համաժամեցումից կախված այլ հավելվածները կարող են չթարմացվել, եթե դուք դրանք չգործարկեք:\n\nԵրբ ձեր սարքը լիցքավորվում է, մարտկոցի էներգիայի խնայման գործառույթն ինքնաշխատորեն անջատվում է:"</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Թաքցնել"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Չանհանգստացնել"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Անգործունության ժամանակը"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Երկուշաբթիից ուրբաթ"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Հանգստյան օրեր"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"Համրեցվել է <xliff:g id="THIRD_PARTY">%1$s</xliff:g>-ի կողմից"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"Սարքում ներքին խնդիր է առաջացել և այն կարող է կրկնվել, մինչև չվերականգնեք գործարանային կարգավորումները:"</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"Սարքում ներքին խնդիր է առաջացել: Մանրամասների համար կապվեք արտադրողի հետ:"</string> diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml index f0945ca..69ce711 100644 --- a/core/res/res/values-in/strings.xml +++ b/core/res/res/values-in/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Nonaktif"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Wi-Fi dipilih"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Seluler dipilih"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Meminta pola pembukaan kunci sebelum melepas sematan"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Meminta sandi sebelum melepas sematan"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Dipasang oleh administrator"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Diperbarui oleh administrator"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Dihapus oleh administrator"</string> <string name="battery_saver_description" msgid="1960431123816253034">"Untuk membantu meningkatkan masa pakai baterai, penghemat baterai mengurangi kinerja perangkat dan membatasi getaran, layanan lokasi, dan kebanyakan data latar belakang. Email, perpesanan, dan aplikasi lain yang mengandalkan sinkronisasi mungkin tidak diperbarui kecuali jika dibuka.\n\nPenghemat baterai otomatis nonaktif jika perangkat diisi dayanya."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Ciutkan"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Jangan ganggu"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Waktu non-operasional"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Malam hari kerja"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Akhir pekan"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"Dinonaktifkan oleh <xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"Ada masalah dengan perangkat. Hal ini mungkin membuat perangkat jadi tidak stabil dan perlu dikembalikan ke setelan pabrik."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"Ada masalah dengan perangkat. Hubungi produsen perangkat untuk informasi selengkapnya."</string> diff --git a/core/res/res/values-is-rIS/strings.xml b/core/res/res/values-is-rIS/strings.xml index e999e0f..18fd5da 100644 --- a/core/res/res/values-is-rIS/strings.xml +++ b/core/res/res/values-is-rIS/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Slökkt"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Wi-Fi í forgangi"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Farsímakerfi í forgangi"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Biðja um opnunarmynstur til að losa"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Biðja um aðgangsorð til að losa"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Uppsett af kerfisstjóra"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Uppfært af kerfisstjóranum"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Eytt af kerfisstjóra"</string> <string name="battery_saver_description" msgid="1960431123816253034">"Til að auka endingu rafhlöðunnar mun orkusparnaður draga úr afköstum tækisins og takmarka titring, staðsetningarþjónustu og megnið af bakgrunnsgögnum. Ekki er víst að tölvupóstur, skilaboð og önnur forrit sem reiða sig á samstillingu uppfærist nema þú opnir þau.\n\nSjálfkrafa er slökkt á orkusparnaði þegar tækið er í hleðslu."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Minnka"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Ónáðið ekki"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Hvíldartími"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Virk kvöld"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Helgar"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> tók hljóðið af"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"Innra vandamál kom upp í tækinu og það kann að vera óstöðugt þangað til þú núllstillir það."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"Innra vandamál kom upp í tækinu. Hafðu samband við framleiðanda til að fá nánari upplýsingar."</string> diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml index 6b29541..3def7ae 100644 --- a/core/res/res/values-it/strings.xml +++ b/core/res/res/values-it/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Non attiva"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Rete preferita: Wi-Fi"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Rete preferita: cellulare"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Richiedi sequenza di sblocco prima di sbloccare"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Richiedi password prima di sbloccare"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Installato dall\'amministratore"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Aggiornato dall\'amministratore"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Eliminato dall\'amministratore"</string> <string name="battery_saver_description" msgid="1960431123816253034">"Per aumentare la durata della batteria, la funzione di risparmio energetico riduce le prestazioni del dispositivo e limita vibrazione, servizi di localizzazione e la maggior parte dei dati in background. App di email, messaggi e altre app che si basano sulla sincronizzazione potrebbero essere aggiornate soltanto all\'apertura.\n\nLa funzione di risparmio energetico viene disattivata automaticamente quando il dispositivo è in carica."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Comprimi"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Non disturbare"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Tempo di inattività"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Sere giorni feriali"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Fine settimana"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"Audio disattivato da <xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"Si è verificato un problema interno con il dispositivo, che potrebbe essere instabile fino al ripristino dei dati di fabbrica."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"Si è verificato un problema interno con il dispositivo. Per informazioni dettagliate, contatta il produttore."</string> diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml index 3e6b5d3..de0f975 100644 --- a/core/res/res/values-iw/strings.xml +++ b/core/res/res/values-iw/strings.xml @@ -131,6 +131,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"כבוי"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Wi-Fi מועדף"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"סלולרי מועדף"</string> @@ -1476,8 +1477,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"בקש קו ביטול נעילה לפני ביטול הצמדה"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"בקש סיסמה לפני ביטול הצמדה"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"הותקנה על ידי מנהל המערכת שלך"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"עודכן על ידי מנהל המערכת שלך"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"נמחקה על ידי מנהל המערכת שלך"</string> <string name="battery_saver_description" msgid="1960431123816253034">"כדי לעזור בשיפור חיי הסוללה, תכונת החיסכון בסוללה מצמצמת את פעולות המכשיר ומגבילה רטט, שירותי מיקום ואת רוב נתוני הרקע. אימייל, העברת הודעות ואפליקציות אחרות המסתמכות על סנכרון עשויות שלא להתעדכן, אלא אם תפתח אותן.\n\nתכונת החיסכון בסוללה מושבתת אוטומטית כשהמכשיר בטעינה."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1510,8 +1510,9 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"כווץ"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"נא לא להפריע"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"זמן השבתה"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"לילות בימי חול"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"סופי שבוע"</string> + <string name="zen_mode_default_weeknights_name" msgid="3081318299464998143">"ערב ביום חול"</string> + <string name="zen_mode_default_weekends_name" msgid="2786495801019345244">"סוף השבוע"</string> + <string name="zen_mode_default_events_name" msgid="8158334939013085363">"אירוע"</string> <string name="muted_by" msgid="6147073845094180001">"הושתק על ידי <xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"קיימת בעיה פנימית במכשיר שלך, וייתכן שהתפקוד שלו לא יהיה יציב עד שתבצע איפוס לנתוני היצרן."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"קיימת בעיה פנימית במכשיר שלך. לקבלת פרטים, צור קשר עם היצרן."</string> diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml index 09d1380..f952fb6 100644 --- a/core/res/res/values-ja/strings.xml +++ b/core/res/res/values-ja/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"OFF"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Wi-Fi優先"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"モバイル優先"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"画面固定を解除する前にロック解除パターンの入力を求める"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"オフライン再生を解除する前にパスワードの入力を求める"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"管理者によってインストールされました"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"管理者によって更新されています"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"管理者によって削除されました"</string> <string name="battery_saver_description" msgid="1960431123816253034">"バッテリーを長持ちさせるため、バッテリーセーバーは端末のパフォーマンスを抑え、バイブレーション、位置情報サービス、大半のバックグラウンドデータを制限します。メール、SMSや、同期を使用するその他のアプリは、起動しても更新されないことがあります。\n\nバッテリーセーバーは端末の充電中は自動的にOFFになります。"</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"折りたたむ"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"通知を非表示"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"ダウンタイム"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"平日の夜間"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"週末"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g>によりミュートになっています"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"端末で内部的な問題が発生しました。データが初期化されるまで不安定になる可能性があります。"</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"端末で内部的な問題が発生しました。詳しくはメーカーにお問い合わせください。"</string> diff --git a/core/res/res/values-ka-rGE/strings.xml b/core/res/res/values-ka-rGE/strings.xml index 5813e50..b88ff5b 100644 --- a/core/res/res/values-ka-rGE/strings.xml +++ b/core/res/res/values-ka-rGE/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"გამორთული"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"სასურველია Wi-Fi"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"სასურველია ფიჭური ინტერნეტი"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"ფიქსაციის მოხსნამდე განბლოკვის ნიმუშის მოთხოვნა"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"ფიქსაციის მოხსნამდე პაროლის მოთხოვნა"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"თქვენი ადმინისტრატორის მიერ დაყენებული"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"განახლებულია თქვენი ადმინისტრატორის მიერ"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"თქვენი ადმინისტრატორის მიერ წაშლილი"</string> <string name="battery_saver_description" msgid="1960431123816253034">"ელემენტის მოქმედების ვადის გაუმჯობესებისათვის, ელემენტის დამზოგი ამცირებს თქვენი მოწყობილობის შესრულებას და ზღუდავს ვიბრაციას, ადგილმდებარეობის მომსახურებებს და ძირითად ფონურ მონაცემებს. ელ-ფოსტა, შეტყობინებები და სხვა სინქრონიზაციაზე დაყრდნობილი აპლიკაციების განახლება არ მოხდება მათ გახსნეამდე. \n\n ელემენტის დამზოგველი ავტომატურად გამოირთვება, როდესაც თქვენს მოწყობილობას დამტენთან შეაერთებთ."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"აკეცვა"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"არ შემაწუხოთ"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"ავარიული პაუზა"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"კვირის ღამეებისას"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"შაბათ-კვირას"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"დადუმებულია <xliff:g id="THIRD_PARTY">%1$s</xliff:g>-ის მიერ"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"ფიქსირდება თქვენი მ ოწყობილობის შიდა პრობლემა და შეიძლება არასტაბილური იყოს, სანამ ქარხნულ მონაცემების არ განაახლებთ."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"ფიქსირდება თქვენი მოწყობილობის შიდა პრობლემა. დეტალებისათვის, მიმართეთ თქვენს მწარმოებელს."</string> diff --git a/core/res/res/values-kk-rKZ/strings.xml b/core/res/res/values-kk-rKZ/strings.xml index 24ec8b1..34a44c2 100644 --- a/core/res/res/values-kk-rKZ/strings.xml +++ b/core/res/res/values-kk-rKZ/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Өшірулі"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Қалаулы Wi-Fi"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Қалаулы ұялы байланыс"</string> @@ -1080,9 +1081,9 @@ <string name="ext_media_browse_action" msgid="8322172381028546087">"Зерттеу"</string> <string name="ext_media_missing_title" msgid="620980315821543904">"<xliff:g id="NAME">%s</xliff:g> жоқ"</string> <string name="ext_media_missing_message" msgid="5761133583368750174">"Бұл құрылғыны қайта салыңыз"</string> - <string name="ext_media_move_specific_title" msgid="1471100343872375842">"<xliff:g id="NAME">%s</xliff:g> жылжытылуда"</string> + <string name="ext_media_move_specific_title" msgid="1471100343872375842">"<xliff:g id="NAME">%s</xliff:g> тасымалдануда"</string> <string name="ext_media_move_title" msgid="1022809140035962662">"Деректер тасымалдануда"</string> - <string name="ext_media_move_success_title" msgid="8575300932957954671">"Тасымалдау аяқталды"</string> + <string name="ext_media_move_success_title" msgid="8575300932957954671">"Тасымалданып болды"</string> <string name="ext_media_move_success_message" msgid="4199002148206265426">"Деректер <xliff:g id="NAME">%s</xliff:g> ішіне тасымалданды"</string> <string name="ext_media_move_failure_title" msgid="7613189040358789908">"Деректерді тасымалдау мүмкін емес"</string> <string name="ext_media_move_failure_message" msgid="1978096440816403360">"Деректер бастапқы орнында қалды"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Босату алдында бекітпесін ашу өрнегін сұрау"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Босату алдында құпия сөзді сұрау"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Әкімші орнатқан"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Әкімші жаңартты"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Әкімші жойған"</string> <string name="battery_saver_description" msgid="1960431123816253034">"Батареяның қызмет көрсету мерзімін жақсарту үшін батарея үнемдегіш құрылғының өнімділігін төмендетеді және дірілді, орынды анықтау қызметтерін және фондық деректердің көпшілігін шектейді. Электрондық пошта, хабар алмасу және синхрондауға негізделген басқа қолданбалар ашқанша жаңартылмауы мүмкін.\n\nБатарея үнемдегіш құрылғы зарядталып жатқанда автоматты түрде өшеді."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Тасалау"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Мазаламауыңызды сұраймын"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Бос тұру уақыты"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Жұмыс күндерінің түндері"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Демалыс күндері"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> үнін өшірген"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"There\'s an internal problem with your device, and it may be unstable until you factory data reset."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"There\'s an internal problem with your device. Contact your manufacturer for details."</string> diff --git a/core/res/res/values-km-rKH/strings.xml b/core/res/res/values-km-rKH/strings.xml index dbe5104..c0ea059 100644 --- a/core/res/res/values-km-rKH/strings.xml +++ b/core/res/res/values-km-rKH/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"បិទ"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"គួរប្រើ Wi-Fi"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"គួរប្រើប្រព័ន្ធទូរស័ព្ទ"</string> @@ -1460,8 +1461,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"សួររកលំនាំដោះសោមុនពេលផ្ដាច់"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"សួររកពាក្យសម្ងាត់មុនពេលផ្ដាច់"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"បានដំឡើងដោយអ្នកគ្រប់គ្រងរបស់អ្នក"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"បានធ្វើបច្ចុប្បន្នភាពដោយអ្នកគ្រប់គ្រងរបស់អ្នក"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"បានលុបដោយអ្នកគ្រប់គ្រងរបស់អ្នក"</string> <string name="battery_saver_description" msgid="1960431123816253034">"ដើម្បីជួយឲ្យថាមពលថ្មប្រសើរឡើង កម្មវិធីសន្សំសំចៃថាមពលថ្មកាត់បន្ថយប្រតិបត្តិការឧបករណ៍របស់អ្នក និងកម្រិតភាពញ័រ សេវាកម្មទីតាំង និងទិន្នន័យផ្ទៃខាងក្រោយស្ទើរតែទាំងអស់។ ការផ្ញើសារអ៊ីម៉ែល និងកម្មវិធីផ្សេងទៀតដែលពឹងផ្អែកលើការធ្វើសមកាលកម្មអាចនឹងមិនធ្វើបច្ចុប្បន្នភាពទេ លុះត្រាតែអ្នកបើកពួកវា។\n\nកម្មវិធីសន្សំសំចៃបិទដោយស្វ័យប្រវត្តិ នៅពេលដែលឧបករណ៍របស់អ្នកកំពុងសាកថ្ម។"</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1486,8 +1486,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"បង្រួម"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"កុំរំខាន"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"ពេលមិនដំណើរការ"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"យប់ថ្ងៃធ្វើការ"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"ចុងសប្តាហ៍"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"បានបិទសំឡេងដោយ <xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"មានបញ្ហាខាងក្នុងឧបករណ៍របស់អ្នក ហើយវាអ្នកមិនមានស្ថេរភាព រហូតទាល់តែអ្នកកំណត់ដូចដើមវិញទាំងស្រុង។"</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"មានបញ្ហាខាងក្នុងឧបករណ៍របស់អ្នក ទំនាក់ទំនងក្រុមហ៊ុនផលិតឧបករណ៍របស់អ្នកសម្រាប់ព័ត៌មានបន្ថែម។"</string> diff --git a/core/res/res/values-kn-rIN/strings.xml b/core/res/res/values-kn-rIN/strings.xml index 9631a65..41fe302 100644 --- a/core/res/res/values-kn-rIN/strings.xml +++ b/core/res/res/values-kn-rIN/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"ಆಫ್"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"ವೈ-ಫೈಗೆ ಆದ್ಯತೆ ನೀಡಲಾಗಿದೆ"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"ಸೆಲ್ಯುಲಾರ್ಗೆ ಆದ್ಯತೆ ನೀಡಲಾಗಿದೆ"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"ಅನ್ಪಿನ್ ಮಾಡುವುದಕ್ಕೂ ಮೊದಲು ಅನ್ಲಾಕ್ ನಮೂನೆಯನ್ನು ಕೇಳಿ"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"ಅನ್ಪಿನ್ ಮಾಡುವುದಕ್ಕೂ ಮೊದಲು ಪಾಸ್ವರ್ಡ್ ಕೇಳಿ"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"ನಿಮ್ಮ ನಿರ್ವಾಹಕರಿಂದ ಸ್ಥಾಪಿಸಲಾಗಿದೆ"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"ನಿಮ್ಮ ನಿರ್ವಾಹಕರಿಂದ ನವೀಕರಿಸಲಾಗಿದೆ"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"ನಿಮ್ಮ ನಿರ್ವಾಹಕರಿಂದ ಅಳಿಸಲಾಗಿದೆ"</string> <string name="battery_saver_description" msgid="1960431123816253034">"ನಿಮ್ಮ ಬ್ಯಾಟರಿಯ ಬಾಳಿಕೆಯನ್ನು ಸುಧಾರಿಸಲು ಸಹಾಯ ಮಾಡಲು, ಬ್ಯಾಟರಿ ಉಳಿಕೆಯು ನಿಮ್ಮ ಸಾಧನದ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ ಮತ್ತು ವೈಬ್ರೇಷನ್, ಸ್ಥಳ ಸೇವೆಗಳು ಹಾಗೂ ಹೆಚ್ಚಿನ ಹಿನ್ನೆಲೆ ಡೇಟಾವನ್ನು ಮಿತಿಗೊಳಿಸುತ್ತದೆ. ಸಿಂಕ್ ಮಾಡುವುದನ್ನು ಅವಲಂಬಿಸಿರುವ ಇಮೇಲ್, ಸಂದೇಶ ಕಳುಹಿಸುವಿಕೆ, ಮತ್ತು ಇತರ ಅಪ್ಲಿಕೇಶನ್ಗಳು ನೀವು ತೆರೆಯದ ಹೊರತು ನವೀಕರಣಗೊಳ್ಳುವುದಿಲ್ಲ.\n\nನಿಮ್ಮ ಸಾಧನವು ಚಾರ್ಜ್ ಆಗುತ್ತಿರುವ ಸಮಯದಲ್ಲಿ ಬ್ಯಾಟರಿ ಉಳಿಕೆಯು ಆಫ್ ಆಗುತ್ತದೆ."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"ಸಂಕುಚಿಸು"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"ಅಡಚಣೆ ಮಾಡಬೇಡಿ"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"ಸ್ಥಗಿತಕಾಲ"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"ವಾರದ ರಾತ್ರಿಗಳು"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"ವಾರಾಂತ್ಯಗಳು"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> ಅವರಿಂದ ಮ್ಯೂಟ್ ಮಾಡಲಾಗಿದೆ"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಆಂತರಿಕ ಸಮಸ್ಯೆಯಿದೆ ಹಾಗೂ ನೀವು ಫ್ಯಾಕ್ಟರಿ ಡೇಟಾವನ್ನು ಮರುಹೊಂದಿಸುವರೆಗೂ ಅದು ಅಸ್ಥಿರವಾಗಬಹುದು."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಆಂತರಿಕ ಸಮಸ್ಯೆಯಿದೆ. ವಿವರಗಳಿಗಾಗಿ ನಿಮ್ಮ ತಯಾರಕರನ್ನು ಸಂಪರ್ಕಿಸಿ."</string> diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml index d6f9ed6..7b5aec8 100644 --- a/core/res/res/values-ko/strings.xml +++ b/core/res/res/values-ko/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"꺼짐"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Wi-Fi를 기본으로 설정"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"데이터 네트워크를 기본으로 설정"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"고정 해제 이전에 잠금해제 패턴 요청"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"고정 해제 이전에 비밀번호 요청"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"관리자가 설치함"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"관리자에 의해 업데이트됨"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"관리자가 삭제함"</string> <string name="battery_saver_description" msgid="1960431123816253034">"배터리 수명 개선을 위해, 배터리 세이버는 기기의 성능을 줄이고 진동, 위치 서비스 및 대부분의 백그라운드 데이터를 제한합니다. 이메일, 메시지 및 동기화에 의존하는 기타 앱은 앱을 열 때까지 업데이트되지 않을 수 있습니다.\n\n배터리 세이버는 기기를 충전 중일 때는 자동으로 사용 중지됩니다."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"접기"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"알림 일시중지"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"다운타임"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"평일 밤"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"주말"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g>에서 알림음 음소거"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"사용 중인 기기 내부에 문제가 발생했습니다. 초기화할 때까지 불안정할 수 있습니다."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"사용 중인 기기 내부에 문제가 발생했습니다. 자세한 내용은 제조업체에 문의하세요."</string> diff --git a/core/res/res/values-ky-rKG/strings.xml b/core/res/res/values-ky-rKG/strings.xml index 5e5948e..3776ef2 100644 --- a/core/res/res/values-ky-rKG/strings.xml +++ b/core/res/res/values-ky-rKG/strings.xml @@ -197,6 +197,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Өчүк"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Wi-Fi тандалган"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Уюлдук тармак тандалган"</string> @@ -1430,22 +1431,14 @@ <string name="ext_media_init_action" msgid="8317198948634872507">"Орнотуу"</string> <string name="ext_media_unmount_action" msgid="1121883233103278199">"Чыгаруу"</string> <string name="ext_media_browse_action" msgid="8322172381028546087">"Изилдөө"</string> - <!-- no translation found for ext_media_missing_title (620980315821543904) --> - <skip /> - <!-- no translation found for ext_media_missing_message (5761133583368750174) --> - <skip /> - <!-- no translation found for ext_media_move_specific_title (1471100343872375842) --> - <skip /> - <!-- no translation found for ext_media_move_title (1022809140035962662) --> - <skip /> - <!-- no translation found for ext_media_move_success_title (8575300932957954671) --> - <skip /> - <!-- no translation found for ext_media_move_success_message (4199002148206265426) --> - <skip /> - <!-- no translation found for ext_media_move_failure_title (7613189040358789908) --> - <skip /> - <!-- no translation found for ext_media_move_failure_message (1978096440816403360) --> - <skip /> + <string name="ext_media_missing_title" msgid="620980315821543904">"<xliff:g id="NAME">%s</xliff:g> табылбай жатат"</string> + <string name="ext_media_missing_message" msgid="5761133583368750174">"Түзмөктү кайра сайыңыз"</string> + <string name="ext_media_move_specific_title" msgid="1471100343872375842">"<xliff:g id="NAME">%s</xliff:g> сактагычына ооштурулууда"</string> + <string name="ext_media_move_title" msgid="1022809140035962662">"Дайындар ооштурулууда…"</string> + <string name="ext_media_move_success_title" msgid="8575300932957954671">"Ооштуруу аяктады"</string> + <string name="ext_media_move_success_message" msgid="4199002148206265426">"Дайындар <xliff:g id="NAME">%s</xliff:g> сактагычына ооштурулду"</string> + <string name="ext_media_move_failure_title" msgid="7613189040358789908">"Дайындар ооштурулбай калды"</string> + <string name="ext_media_move_failure_message" msgid="1978096440816403360">"Дайындар баштапкы ордунда калды"</string> <string name="activity_list_empty" msgid="1675388330786841066">"Туура келген аракеттер табылбады."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"Медиа чыгарылышын багыттоо"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"Колдонмого медиа мазмунду башка тышкы түзмөктөргө багыттоо уруксатын берет."</string> @@ -1883,8 +1876,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Бошотуудан мурун кулпуну ачкан үлгү суралсын"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Бошотуудан мурун сырсөз суралсын"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Администраторуңуз тарабынан орнотулган"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Администраторуңуз жаңырткан"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Администраторуңуз тарабынан жок кылынган"</string> <string name="battery_saver_description" msgid="1960431123816253034">"Батареянын өмүрүн узартуу үчүн, батареяны үнөмдөгүч түзмөгүңүздүн ишинин майнаптуулугун азайтып, дирилдөө, жайгашкан жерди аныктоо кызматтары жана фондук дайындардын көпчүлүгүн чектеп коёт. Электрондук почта, билдирүү жазышуу жана башка шайкештештирүүгө байланыштуу колдонмолор ачылмайынча жаңыртылбай калышы мүмкүн.\n\nБатарея үнөмдөгүч түзмөгүңүз кубатталып жатканда автоматтык түрдө өчүп калат."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1909,8 +1901,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Жыйнап коюу"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Тынчымды алба"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Аракетсиз убакыт"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Иш түндөрү"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Дем алыш күндөрү"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> тарабынан үнсүздөлдү"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"Түзмөгүңүздө ички көйгөй бар жана ал баштапкы абалга кайтарылмайынча туруктуу иштебей коюшу мүмкүн."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"Түзмөгүңүздө ички көйгөй бар. Анын чоо-жайын билүү үчүн өндүрүүчүңүзгө кайрылыңыз."</string> diff --git a/core/res/res/values-land/dimens.xml b/core/res/res/values-land/dimens.xml index 640ca1e..4f0c0fb 100644 --- a/core/res/res/values-land/dimens.xml +++ b/core/res/res/values-land/dimens.xml @@ -67,4 +67,7 @@ <!-- width of ImmersiveModeConfirmation (-1 for match_parent) --> <dimen name="immersive_mode_cling_width">380dp</dimen> + <!-- Floating toolbar dimensions --> + <dimen name="floating_toolbar_preferred_width">544dp</dimen> + </resources> diff --git a/core/res/res/values-lo-rLA/strings.xml b/core/res/res/values-lo-rLA/strings.xml index e8104fc..3a59800 100644 --- a/core/res/res/values-lo-rLA/strings.xml +++ b/core/res/res/values-lo-rLA/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"ປິດ"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"ເລືອກໃຊ້ Wi-Fi ກ່ອນ"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"ເລືອກໃຊ້ເຊລລູລາກ່ອນ"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"ຖາມຫາຮູບແບບປົດລັອກກ່ອນຍົກເລີກການປັກໝຸດ"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"ຖາມຫາລະຫັດຜ່ານກ່ອນຍົກເລີກການປັກໝຸດ"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"ຜູ້ຄວບຄຸມຂອງທ່ານຕິດຕັ້ງໃສ່ແລ້ວ"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"ອັບເດດໂດຍຜູ້ຄວບຄຸມຂອງທ່ານແລ້ວ"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"ຖືກຜູ້ຄວບຄຸມຂອງທ່ານລຶບໄປແລ້ວ"</string> <string name="battery_saver_description" msgid="1960431123816253034">"ເພື່ອຊ່ວຍເພີ່ມອາຍຸແບັດເຕີຣີ, ຕົວປະຢັດໄຟແບັດເຕີຣີຫຼຸດປະສິດທິພາບການເຮັດວຽກຂອງອຸປະກອນຂອງທ່ານລົງ ແລະຈຳກັດການສັ່ນ, ການບໍລິການຫາທີ່ຕັ້ງ, ແລະຂໍ້ມູນພື້ນຫຼັງເກືອບທັງໝົດ. ອີເມວ, ການສົ່ງຂໍ້ຄວາມ, ແລະແອັບອື່ນໆທີ່ອາໄສການຊິງຄ໌ອາດຈະບໍ່ອັບເດດ ນອກຈາກວ່າທ່ານເປີດມັນ.\n\nຕົວປະຢັດໄຟແບັດເຕີຣີຈະປິດອັດຕະໂນມັດ ເມື່ອອຸປະກອນຂອງທ່ານກຳລັງສາກຢູ່."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"ຫຍໍ້"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"ຫ້າມລົບກວນ"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"ເວລາປິດເຮັດວຽກ"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"ຄືນວັນຈັນຫາສຸກ"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"ທ້າຍອາທິດ"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"ຖືກປິດສຽງໂດຍ <xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"ມີບັນຫາພາຍໃນກັບອຸປະກອນຂອງທ່ານ, ແລະມັນອາດຈະບໍ່ສະຖຽນຈົນກວ່າທ່ານຕັ້ງເປັນຂໍ້ມູນໂຮງງານຄືນແລ້ວ."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"ມີບັນຫາພາຍໃນກັບອຸປະກອນຂອງທ່ານ. ຕິດຕໍ່ຜູ້ຜະລິດຂອງທ່ານສຳລັບລາຍລະອຽດຕ່າງໆ."</string> diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml index 3ebe665..8bb6d1c 100644 --- a/core/res/res/values-lt/strings.xml +++ b/core/res/res/values-lt/strings.xml @@ -131,6 +131,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Išjungta"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Pageidautinas „Wi-Fi“ ryšys"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Pageidautinas mobilusis ryšys"</string> @@ -1476,8 +1477,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Prašyti atrakinimo piešinio prieš atsegant"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Prašyti slaptažodžio prieš atsegant"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Įdiegė administratorius"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Atnaujino administratorius"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Ištrynė administratorius"</string> <string name="battery_saver_description" msgid="1960431123816253034">"Kad tausotų akumuliatoriaus energiją akumuliatoriaus tausojimo priemonė sumažina įrenginio veikimą ir apriboja vibravimą, vietovės paslaugas bei daugumą foninių duomenų. El. pašto, susirašinėjimo žinutėmis ir kitos programos, kurios veikia sinchronizavimo pagrindu, gali būti neatnaujintos, nebent jas atidarysite.\n\nAkumuliatoriaus tausojimo priemonė automatiškai išjungiama, kai įrenginys įkraunamas."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1510,8 +1510,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Sutraukti"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Netrukdyti"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Prastova"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Savaitgalių naktimis"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Savaitgaliais"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"Nutildė <xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"Iškilo vidinė su jūsų įrenginiu susijusi problema, todėl įrenginys gali veikti nestabiliai, kol neatkursite gamyklinių duomenų."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"Iškilo vidinė su jūsų įrenginiu susijusi problema. Jei reikia išsamios informacijos, susisiekite su gamintoju."</string> diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml index 788082a..cf758c0 100644 --- a/core/res/res/values-lv/strings.xml +++ b/core/res/res/values-lv/strings.xml @@ -130,6 +130,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Izslēgts"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Vēlams Wi-Fi tīkls"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Vēlams mobilais tīkls"</string> @@ -1467,8 +1468,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Pirms atspraušanas pieprasīt grafisko atslēgu"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Pirms atspraušanas pieprasīt paroli"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Instalēja jūsu administrators"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Atjaunināja administrators"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Izdzēsa jūsu administrators"</string> <string name="battery_saver_description" msgid="1960431123816253034">"Lai paildzinātu akumulatora darbību, akumulatora jaudas taupīšanas režīmā tiek samazināta ierīces veiktspēja un tiek ierobežota vibrācija, atrašanās vietu pakalpojumi un lielākā daļa fona datu. E-pasta, ziņojumapmaiņas un cita veida lietotnes, kuru darbības pamatā ir datu sinhronizācija, var netikt atjauninātas, ja tās neatverat.\n\nTiklīdz tiek sākta ierīces uzlāde, akumulatora jaudas taupīšanas režīms automātiski tiek izslēgts."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1497,8 +1497,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Sakļaut"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Netraucēt"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Dīkstāve"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Darbadienu naktīs"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Brīvdienās"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"Skaņu izslēdza <xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"Jūsu ierīcē ir radusies iekšēja problēma, un ierīce var darboties nestabili. Lai to labotu, veiciet rūpnīcas datu atiestatīšanu."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"Jūsu ierīcē ir radusies iekšēja problēma. Lai iegūtu plašāku informāciju, lūdzu, sazinieties ar ražotāju."</string> diff --git a/core/res/res/values-mk-rMK/strings.xml b/core/res/res/values-mk-rMK/strings.xml index ee8e4cb..3937ee1 100644 --- a/core/res/res/values-mk-rMK/strings.xml +++ b/core/res/res/values-mk-rMK/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Исклучено"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Се претпочита Wi-Fi"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Се претпочита мобилна"</string> @@ -1460,8 +1461,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Прашај за шема за отклучување пред откачување"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Прашај за лозинка пред откачување"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Инсталирано од администраторот"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Ажурирано од администраторот"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Избришано од администраторот"</string> <string name="battery_saver_description" msgid="1960431123816253034">"За да ви помогне да ја подобрите трајноста на батеријата, штедачот на батеријата ја намалува изведбата на уредот и го ограничува вибрирањето, услугите за локација и повеќето податоци од заднина. Е-поштата, испраќањето пораки и другите апликации кои се потпираат на синхронизација можеби нема да се ажурираат доколку не ги отворите.\n\nШтедачот на батеријата автоматски се исклучува кога уредот се полни."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1486,8 +1486,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Собери"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Не вознемирувај"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Пауза"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Ноќите во неделата"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Викенди"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"Звукот го исклучи <xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"Настана внатрешен проблем со уредот и може да биде нестабилен сè додека не ресетирате на фабричките податоци."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"Настана внатрешен проблем со уредот. Контактирајте го производителот за детали."</string> diff --git a/core/res/res/values-ml-rIN/strings.xml b/core/res/res/values-ml-rIN/strings.xml index a1d5bcb..93a3a0f 100644 --- a/core/res/res/values-ml-rIN/strings.xml +++ b/core/res/res/values-ml-rIN/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"ഓഫ്"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Wi-Fi തിരഞ്ഞെടുത്തിരിക്കുന്നു"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"സെല്ലുലാർ തിരഞ്ഞെടുത്തിരിക്കുന്നു"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"അൺപിൻ ചെയ്യുന്നതിനുമുമ്പ് അൺലോക്ക് പാറ്റേൺ ആവശ്യപ്പെടുക"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"അൺപിൻ ചെയ്യുന്നതിനുമുമ്പ് പാസ്വേഡ് ആവശ്യപ്പെടുക"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"നിങ്ങളുടെ അഡ്മിനിസ്ട്രേറ്റർ ഇൻസ്റ്റാളുചെയ്തു"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"നിങ്ങളുടെ അഡ്മിനിസ്ട്രേറ്റർ അപ്ഡേറ്റുചെയ്തു"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"നിങ്ങളുടെ അഡ്മിനിസ്ട്രേറ്റർ ഇല്ലാതാക്കി"</string> <string name="battery_saver_description" msgid="1960431123816253034">"ബാറ്ററി ആയുസ്സ് മെച്ചപ്പെടുത്താൻ സഹായിക്കുന്നതിന്, ബാറ്ററി സേവർ നിങ്ങളുടെ ഉപകരണത്തിന്റെ പ്രകടനത്തെ കുറയ്ക്കുകയും വൈബ്രേഷനെയും മിക്ക പശ്ചാത്തല വിവരത്തെയും പരിമിതപ്പെടുത്തുകയും ചെയ്യുന്നു. ഇമെയിൽ, സന്ദേശമയയ്ക്കൽ, സമന്വയിപ്പിക്കലിനെ ആശ്രയിച്ചുള്ള മറ്റ് അപ്ലിക്കേഷനുകൾ എന്നിവ നിങ്ങൾ തുറക്കുന്നതുവരെ അപ്ഡേറ്റുചെയ്യാനിടയില്ല.\n\nനിങ്ങളുടെ ഉപകരണം ചാർജ്ജുചെയ്യുമ്പോൾ ബാറ്ററി സേവർ സ്വയം ഓഫാകും."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"ചുരുക്കുക"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"ശല്യപ്പെടുത്തരുത്"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"പ്രവർത്തനരഹിതമായ സമയം"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"ശനിയാഴ്ചയും ഞായറാഴ്ചയും അല്ലാത്ത ദിവസങ്ങളിലെ രാത്രികൾ"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"വാരാന്ത്യങ്ങൾ"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g>, മ്യൂട്ടുചെയ്തു"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"നിങ്ങളുടെ ഉപകരണത്തിൽ ഒരു ആന്തരിക പ്രശ്നമുണ്ട്, ഫാക്ടറി വിവര പുനഃസജ്ജീകരണം ചെയ്യുന്നതുവരെ ഇതു അസ്ഥിരമായിരിക്കാനിടയുണ്ട്."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"നിങ്ങളുടെ ഉപകരണത്തിൽ ഒരു ആന്തരിക പ്രശ്നമുണ്ട്. വിശദാംശങ്ങൾക്കായി നിർമ്മാതാവിനെ ബന്ധപ്പെടുക."</string> diff --git a/core/res/res/values-mn-rMN/strings.xml b/core/res/res/values-mn-rMN/strings.xml index 20d289b..47ddb37 100644 --- a/core/res/res/values-mn-rMN/strings.xml +++ b/core/res/res/values-mn-rMN/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Идэвхгүй"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Wi-Fi илүү эрхэмлэдэг"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Үүрэн сүлжээг илүү эрхэмлэдэг"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Тогтоосныг суллахаас өмнө түгжээ тайлах хээ асуух"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Тогтоосныг суллахаас өмнө нууц үг асуух"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Таны админ суулгасан байна"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Танай админ шинэчилсэн"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Таны админ устгасан байна"</string> <string name="battery_saver_description" msgid="1960431123816253034">"Батарей хадгалах функц нь таны төхөөрөмжийн цэнэгийг хадгалахын тулд гүйцэтгэлийг багасгаж, чичрэлтийг бууруулж, байршлын үйлчилгээнүүд болон бусад өгөгдлийн хэмжээг багасгадаг юм. И-мэйл, мессеж болон бусад синхрон хийдэг апликейшнүүд дараа дахин нээгдэх хүртлээ автоматаар шинэчлэлт хийхгүй.\n\nМөн батарей хадгалах функц нь таныг төхөөрөмжөө цэнэглэх үед автоматаар унтрах юм."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1482,8 +1482,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Хумих"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Бүү саад бол"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Сул зогсолт"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Ажлын өдрүүдэд орой"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Амралтын өдрүүд"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g>-с хаасан"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"Таны төхөөрөмжид дотоод алдаа байна.Та төхөөрөмжөө үйлдвэрээс гарсан төлөвт шилжүүлэх хүртэл таны төхөөрөмж чинь тогтворгүй байж болох юм."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"Таны төхөөрөмжид дотоод алдаа байна. Дэлгэрэнгүй мэдээлэл авахыг хүсвэл үйлдвэрлэгчтэйгээ холбоо барина уу."</string> diff --git a/core/res/res/values-mr-rIN/strings.xml b/core/res/res/values-mr-rIN/strings.xml index bf8a4e8..507d38c 100644 --- a/core/res/res/values-mr-rIN/strings.xml +++ b/core/res/res/values-mr-rIN/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"बंद"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"वाय-फाय प्राधान्यकृत"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"सेल्युलर प्राधान्यकृत"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"अनपिन करण्यापूर्वी अनलॉक नमुन्यासाठी विचारा"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"अनपिन करण्यापूर्वी संकेतशब्दासाठी विचारा"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"आपल्या प्रशासकाद्वारे स्थापित केले आहे"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"आपल्या प्रशासकाद्वारे अद्यतनित केले"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"आपल्या प्रशासकाद्वारे हटविले आहे"</string> <string name="battery_saver_description" msgid="1960431123816253034">"बॅटरीचे आयुष्य सुधारित करण्यात मदत करण्यासाठी, बॅटरी बचतकर्ता आपल्या डिव्हाइसचे कार्यप्रदर्शन कमी करतो आणि कंपन, स्थान सेवा आणि बराच पार्श्वभूमी डेटा मर्यादित करतो. संकालनावर अवलंबून असणारे ईमेल, संदेशन आणि इतर अॅप्स आपण उघडल्याशिवाय अद्यतनित होऊ शकत नाहीत.\n\nआपले डिव्हाइस चार्ज होत असते तेव्हा बॅटरी बचतकर्ता स्वयंचलितपणे बंद होतो."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"संक्षिप्त करा"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"व्यत्यय आणू नका"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"कार्य न करण्याचा कालावधी"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"आठवड्याच्या रात्री"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"सप्ताह अखेर"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> द्वारे नि:शब्द केले"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"आपल्या डिव्हाइसमध्ये अंतर्गत समस्या आहे आणि आपला फॅक्टरी डेटा रीसेट होईपर्यंत ती अस्थिर असू शकते."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"आपल्या डिव्हाइसमध्ये अंतर्गत समस्या आहे. तपशीलांसाठी आपल्या निर्मात्याशी संपर्क साधा."</string> diff --git a/core/res/res/values-ms-rMY/strings.xml b/core/res/res/values-ms-rMY/strings.xml index 65109a8..1900a85 100644 --- a/core/res/res/values-ms-rMY/strings.xml +++ b/core/res/res/values-ms-rMY/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Mati"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Wi-Fi diutamakan"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Selular diutamakan"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Minta corak buka kunci sebelum menyahsemat"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Minta kata laluan sebelum menyahsemat"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Dipasang oleh pentadbir anda"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Dikemas kini oleh pentadbir anda"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Dipadamkan oleh pentadbir anda"</string> <string name="battery_saver_description" msgid="1960431123816253034">"Untuk membantu memperbaik hayat bateri, penjimat bateri mengurangkan prestasi peranti anda dan menghadkan getaran, perkhidmatan lokasi dan kebanyakan data latar belakang. E-mel, pemesejan dan apl lain yang bergantung kepada penyegerakan mungkin tidak mengemas kini, melainkan anda membuka apl itu.\n\nPenjimat bateri dimatikan secara automatik semasa peranti anda sedang dicas."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Runtuhkan"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Jangan ganggu"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Waktu gendala"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Malam hari bekerja"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Hujung minggu"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"Diredam oleh <xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"Terdapat masalah dalaman dengan peranti anda. Peranti mungkin tidak stabil sehingga anda membuat tetapan semula data kilang."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"Terdapat masalah dalaman dengan peranti anda. Hubungi pengilang untuk mengetahui butirannya."</string> diff --git a/core/res/res/values-my-rMM/strings.xml b/core/res/res/values-my-rMM/strings.xml index e63f651..4ec9749 100644 --- a/core/res/res/values-my-rMM/strings.xml +++ b/core/res/res/values-my-rMM/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"ပိတ်ထားရသည်"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"ဝိုင်ဖိုင်အား ပိုနှစ်သက်သော"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"ဆယ်လူလာအား ပိုနှစ်သက်သော"</string> @@ -1483,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"ခေါက်ရန်"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"မနှောက်ယှက်ပါနှင့်"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"ကျချိန်"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"ရုံးရက်ညများ"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"စနေတနင်္ဂနွေများ"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> အသံပိတ်သည်"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"သင့်ကိရိယာအတွင်းပိုင်းတွင် ပြဿနာရှိနေပြီး၊ မူလစက်ရုံထုတ်အခြေအနေအဖြစ် ပြန်လည်ရယူနိုင်သည်အထိ အခြေအနေမတည်ငြိမ်နိုင်ပါ။"</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"သင့်ကိရိယာအတွင်းပိုင်းတွင် ပြဿနာရှိနေ၏။ အသေးစိတ်သိရန်အတွက် ပစ္စည်းထုတ်လုပ်သူအား ဆက်သွယ်ပါ။"</string> diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml index 1f0198d..623df7b 100644 --- a/core/res/res/values-nb/strings.xml +++ b/core/res/res/values-nb/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Av"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Wi-Fi er foretrukket"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Mobil er foretrukket"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Krev bruk av opplåsningsmønster for å løsne apper"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Krev passord for å løsne apper"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Installert av administratoren"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Oppdatert av administratoren"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Slettet av administratoren"</string> <string name="battery_saver_description" msgid="1960431123816253034">"For å bidra til å forbedre batterilevetiden reduserer batterispareren ytelsen til enheten din og begrenser vibrering, posisjonstjenester og mesteparten av bakgrunnsdataene. E-post, sending av meldinger og andre apper som er avhengig av synkronisering oppdateres kanskje ikke med mindre du åpner dem.\n\nBatterisparing slås av automatisk når enheten lader."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Skjul"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"«Ikke forstyrr»"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Nedetid"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Kvelder på ukedager"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Helgedager"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> har kuttet lyden"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"Det har oppstått et internt problem på enheten din, og den kan være ustabil til du tilbakestiller den til fabrikkdata."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"Det har oppstått et internt problem på enheten din. Ta kontakt med produsenten for mer informasjon."</string> diff --git a/core/res/res/values-ne-rNP/strings.xml b/core/res/res/values-ne-rNP/strings.xml index 899d1cb..8a72ae2 100644 --- a/core/res/res/values-ne-rNP/strings.xml +++ b/core/res/res/values-ne-rNP/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"निष्क्रिय"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Wi-Fi मनपराइयो"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"सेलुलर मनपराइयो"</string> @@ -274,10 +275,8 @@ <string name="permdesc_receiveWapPush" msgid="748232190220583385">"WAP सन्देशहरू प्राप्त गर्न र प्रशोधन गर्न अनुप्रयोगलाई अनुमति दिन्छ। यो अनुमतिमा मोनिटर गर्ने वा तपाईँलाई पठाइएका सन्देशहरू तपाईँलाई नदेखाई मेट्ने क्षमता समावेश हुन्छ।"</string> <string name="permlab_getTasks" msgid="6466095396623933906">"चलिरहेका अनुप्रयोगहरू पुनःबहाली गर्नुहोस्"</string> <string name="permdesc_getTasks" msgid="7454215995847658102">"वर्तमानमा र भरखरै चलिरहेका कार्यहरू बारेको सूचना पुनःबहाली गर्न अनुप्रयोगलाई अनुमित दिन्छ। यसले उपकरणमा प्रयोग भएका अनुप्रयोगहरूको बारेमा सूचना पत्ता लगाउन अनुप्रयोगलाई अनुमति दिन सक्छ।"</string> - <!-- no translation found for permlab_manageProfileAndDeviceOwners (5979288447973722097) --> - <skip /> - <!-- no translation found for permdesc_manageProfileAndDeviceOwners (106894851498657169) --> - <skip /> + <string name="permlab_manageProfileAndDeviceOwners" msgid="5979288447973722097">"प्रोफाइल र यन्त्र मालिकहरू व्यवस्थापन गर्नुहोस्"</string> + <string name="permdesc_manageProfileAndDeviceOwners" msgid="106894851498657169">"अनुप्रयोगहरूलाई प्रोफाइल र यन्त्र मालिकहरू सेट गर्न अनुमति दिनुहोस्।"</string> <string name="permlab_reorderTasks" msgid="2018575526934422779">"चलिरहेका अनुप्रयोगहरूलाई पुनःक्रम गराउनुहोस्"</string> <string name="permdesc_reorderTasks" msgid="7734217754877439351">"कामहरूलाई अग्रभाग र पृष्ठभूमिमा सार्न अनुप्रयोगलाई अनुमति दिन्छ। अनुप्रयोगले यो तपाईँको इनपुट बिना नै गर्न सक्छ।"</string> <string name="permlab_enableCarMode" msgid="5684504058192921098">"कार मोड सक्षम गर्नुहोस्"</string> @@ -1087,13 +1086,13 @@ <string name="ext_media_unmount_action" msgid="1121883233103278199">"निकाल्नुहोस्"</string> <string name="ext_media_browse_action" msgid="8322172381028546087">"अन्वेषण गर्नुहोस्"</string> <string name="ext_media_missing_title" msgid="620980315821543904">"<xliff:g id="NAME">%s</xliff:g> हराइरहेको"</string> - <string name="ext_media_missing_message" msgid="5761133583368750174">"यो यन्त्र पुनःहाल्नुहोस्"</string> + <string name="ext_media_missing_message" msgid="5761133583368750174">"यो यन्त्र पुनःसम्मिलित गर्नुहोस्"</string> <string name="ext_media_move_specific_title" msgid="1471100343872375842">"<xliff:g id="NAME">%s</xliff:g> सार्दै"</string> <string name="ext_media_move_title" msgid="1022809140035962662">"डेटा सार्दै..."</string> - <string name="ext_media_move_success_title" msgid="8575300932957954671">"सबै सार्नुहोस्"</string> + <string name="ext_media_move_success_title" msgid="8575300932957954671">"सार्ने कार्य सकियो"</string> <string name="ext_media_move_success_message" msgid="4199002148206265426">"डेटा <xliff:g id="NAME">%s</xliff:g> मा सारियो"</string> <string name="ext_media_move_failure_title" msgid="7613189040358789908">"डेटा सार्न सकिएन"</string> - <string name="ext_media_move_failure_message" msgid="1978096440816403360">"डेटा मूल स्थानबाट छुट्यो"</string> + <string name="ext_media_move_failure_message" msgid="1978096440816403360">"डेटा मूल स्थानबाट छाडियो"</string> <string name="activity_list_empty" msgid="1675388330786841066">"कुनै मिल्ने गतिविधि पाइएन।"</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"मिडिया परिणाम दिशानिर्देश गर्नुहोस्"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"मिडिया परिणामलाई अन्य बाहिरी उपकरणहरूसँग लैजानको लागि अनुप्रयोगलाई अनुमति दिन्छ।"</string> @@ -1466,8 +1465,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"पिन निकाल्नुअघि खोल्ने रूपरेखा सोध्नुहोस्"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"पिन निकाल्नुअघि पासवर्ड सोध्नुहोस्"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"तपाईँको प्रशासकद्वारा स्थापना गरिएको"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"तपाईँको प्रशासकद्वारा अद्यावधिक गरिएको"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"तपाईँको प्रशासकद्वारा हटाइएको"</string> <string name="battery_saver_description" msgid="1960431123816253034">"ब्याट्रीको आयु सुधार्न, ब्याट्री रक्षकले तपाईँको यन्त्रको कार्यसम्पादन घटाउँछ र भाइब्रेसन, स्थान सेवा र बहुसंख्यक पृष्ठभूमि डेटा सीमित गर्दछ। इमेल, सन्देश, र अन्य अनुप्रयोगहरू जुन सिङ्कमा भर पर्छन् अद्यावधिक नहुन सक्छन् जबसम्म तपाईँ तिनीहरूलाई खोल्नुहुन्न\n\n ब्याट्री रक्षक स्वत: निस्कृय हुन्छ जब तपाईँको यन्त्र चार्ज हुँदै हुन्छ।"</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1492,8 +1490,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"संक्षिप्त पार्नुहोस्"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"अवरोध नपुर्याउँनुहोस्"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"डाउनटाइम"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"सप्ताह रातहरू"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"सप्ताहन्त"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> द्वारा मौन गरिएको"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"तपाईंको यन्त्रसँग आन्तरिक समस्या छ, र तपाईंले फ्याक्ट्री डाटा रिसेट नगर्दासम्म यो अस्थिर रहन्छ।"</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"तपाईंको यन्त्रसँग आन्तरिक समस्या छ। विवरणहरूको लागि आफ्नो निर्मातासँग सम्पर्क गर्नुहोस्।"</string> diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml index c6de087..ad2a492 100644 --- a/core/res/res/values-nl/strings.xml +++ b/core/res/res/values-nl/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Uit"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Voorkeur voor wifi"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Voorkeur voor mobiel"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Vragen om ontgrendelingspatroon voordat items worden losgemaakt"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Vragen om wachtwoord voordat items worden losgemaakt"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Geïnstalleerd door uw beheerder"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Geüpdatet door uw beheerder"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Verwijderd door uw beheerder"</string> <string name="battery_saver_description" msgid="1960431123816253034">"Accubesparing beperkt de prestaties van uw apparaat, de trilstand, locatieservices en de meeste achtergrondgegevens om de gebruiksduur van de accu te verlengen.\n\nAccubesparing wordt automatisch uitgeschakeld terwijl uw apparaat wordt opgeladen."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Samenvouwen"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Niet storen"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Downtime"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Doordeweekse avonden"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Weekends"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"Gedempt door <xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"Er is een intern probleem met uw apparaat. Het apparaat kan instabiel zijn totdat u het apparaat terugzet naar de fabrieksinstellingen."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"Er is een intern probleem met uw apparaat. Neem contact op met de fabrikant voor meer informatie."</string> diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml index e71d9fe..8aa5eaa 100644 --- a/core/res/res/values-pl/strings.xml +++ b/core/res/res/values-pl/strings.xml @@ -131,6 +131,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Wył."</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Preferuj Wi-Fi"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Preferuj sieć komórkową"</string> @@ -1476,8 +1477,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Aby odpiąć, poproś o wzór odblokowania"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Aby odpiąć, poproś o hasło"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Zainstalowany przez administratora"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Zaktualizowane przez administratora"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Usunięty przez administratora"</string> <string name="battery_saver_description" msgid="1960431123816253034">"Aby wydłużyć czas pracy baterii, Oszczędzanie baterii ogranicza aktywność urządzenia, w tym wibracje, usługi lokalizacyjne i przetwarzanie większości danych w tle. Poczta, czat i inne synchronizowane aplikacje mogą nie aktualizować swojej zawartości, dopóki ich nie otworzysz.\n\nOszczędzanie baterii wyłącza się automatycznie podczas ładowania urządzenia."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1510,8 +1510,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Zwiń"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Nie przeszkadzać"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Powiadomienia wyłączone"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Noce poza weekendem"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Weekendy"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"Ściszone przez: <xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"W Twoim urządzeniu wystąpił problem wewnętrzny. Może być ono niestabilne, dopóki nie przywrócisz danych fabrycznych."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"W Twoim urządzeniu wystąpił problem wewnętrzny. Skontaktuj się z jego producentem, by otrzymać szczegółowe informacje."</string> diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml index 5c624ce..a7f9eb9 100644 --- a/core/res/res/values-pt-rPT/strings.xml +++ b/core/res/res/values-pt-rPT/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Desativado"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Rede Wi-Fi preferida"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Rede móvel preferida"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Pedir sequência de desbloqueio antes de soltar"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Pedir palavra-passe antes de soltar"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Instalado pelo administrador"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Atualizado pelo administrador"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Eliminado pelo administrador"</string> <string name="battery_saver_description" msgid="1960431123816253034">"Para ajudar a melhorar a autonomia da bateria, a poupança de bateria reduz o desempenho do seu dispositivo e limita a vibração, os serviços de localização e a maioria dos dados em segundo plano. O email, as mensagens e outras aplicações que dependem da sincronização não podem ser atualizados exceto se os abrir.\n\nA poupança de bateria desliga-se automaticamente quando o dispositivo está a carregar."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Reduzir"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Não incomodar"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Período de inatividade"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Noites de dias úteis"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Fins de semana"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"Som desativado por <xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"Existe um problema interno no seu dispositivo e pode ficar instável até efetuar uma reposição de dados de fábrica."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"Existe um problema interno no seu dispositivo. Contacte o fabricante para obter mais informações."</string> diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml index 810d66e..a64b183 100644 --- a/core/res/res/values-pt/strings.xml +++ b/core/res/res/values-pt/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Desativado"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Wi-Fi preferido"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Celular preferido"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Pedir padrão de desbloqueio antes de liberar"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Pedir senha antes de liberar"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Instalado pelo seu administrador"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Atualizado pelo administrador"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Excluído pelo seu administrador"</string> <string name="battery_saver_description" msgid="1960431123816253034">"Para ajudar a melhorar a duração da bateria, o economizador de bateria reduz o desempenho e os limites de vibração do dispositivo, os serviços de localização e a maioria dos dados de segundo plano. E-mail, mensagens e outros aplicativos que dependem de sincronização não podem ser atualizados, a não ser que você os abra.\n\nO economizador de bateria é desligado automaticamente quando o dispositivo está sendo carregado."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Recolher"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Não perturbe"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Tempo de inatividade"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Noites em dias úteis"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Finais de semana"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"Som desativado por <xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"Há um problema interno com seu dispositivo. Ele pode ficar instável até que você faça a redefinição para configuração original."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"Há um problema interno com seu dispositivo. Entre em contato com o fabricante para saber mais detalhes."</string> diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml index b4497db..e77e85f 100644 --- a/core/res/res/values-ro/strings.xml +++ b/core/res/res/values-ro/strings.xml @@ -130,6 +130,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Dezactivată"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Se preferă conexiunea Wi-Fi"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Se preferă conexiunea mobilă"</string> @@ -1467,8 +1468,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Solicită modelul pentru deblocare înainte de a anula fixarea"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Solicită parola înainte de a anula fixarea"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Instalat de administrator"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Actualizat de un administrator"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Șters de administrator"</string> <string name="battery_saver_description" msgid="1960431123816253034">"Pentru a îmbunătăți autonomia bateriei, funcția de economisire a energiei reduce performanțele dispozitivului și limitează vibrațiile, serviciile de localizare și majoritatea datelor de fundal. Este posibil ca e-mailurile, mesageria și alte aplicații care depind de sincronizare să nu se actualizeze dacă nu le deschideți.\n\nFuncția de economisire a energiei se dezactivează automat când dispozitivul se încarcă."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1497,8 +1497,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Restrângeți"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Nu deranja"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Inactivitate"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Serile zilelor lucrătoare"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Weekenduri"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"Dezactivate de <xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"A apărut o problemă internă pe dispozitiv, iar acesta poate fi instabil până la revenirea la setările din fabrică."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"A apărut o problemă internă pe dispozitiv. Pentru detalii, contactați producătorul."</string> diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml index c8e093a..9270d76 100644 --- a/core/res/res/values-ru/strings.xml +++ b/core/res/res/values-ru/strings.xml @@ -131,6 +131,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Отключено"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Приоритет Wi-Fi"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Приоритет моб. сети"</string> @@ -1476,8 +1477,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Запрашивать графический ключ для отключения блокировки"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Запрашивать пароль для отключения блокировки"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Установлено администратором"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Обновлено администратором"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Удалено администратором"</string> <string name="battery_saver_description" msgid="1960431123816253034">"Чтобы продлить время работы устройства от батареи, в режиме энергосбережения снижается производительность, а также ограничивается использование вибрации, геолокации и фоновой передачи данных. Данные, требующие синхронизации, могут обновляться только когда вы откроете приложение.\n\nРежим энергосбережения автоматически отключается во время зарядки устройства."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1510,8 +1510,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Свернуть"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Не беспокоить"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Режим оповещения"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Будние вечера"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Выходные дни"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"Звук отключен приложением \"<xliff:g id="THIRD_PARTY">%1$s</xliff:g>\""</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"Произошла внутренняя ошибка, и устройство может работать нестабильно, пока вы не выполните сброс настроек."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"Произошла внутренняя ошибка. Обратитесь к производителю устройства за подробными сведениями."</string> diff --git a/core/res/res/values-si-rLK/strings.xml b/core/res/res/values-si-rLK/strings.xml index 831cadb..0939f33 100644 --- a/core/res/res/values-si-rLK/strings.xml +++ b/core/res/res/values-si-rLK/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"ක්රියාවිරහිතයි"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Wi-Fi වඩා කැමතියි"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"සෙලියුලර් වඩා කැමතියි"</string> @@ -1485,8 +1486,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"හකුළන්න"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"බාධා නොකරන්න"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"බිඳවැටුම් කාලය"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"සතියේ රාත්රි වල"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"සති අන්ත"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> විසින් නිශ්ශබ්ද කරන ලදි"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"ඔබේ උපාංගය සමගින් ගැටලුවක් ඇති අතර, ඔබේ කර්මාන්තශාලා දත්ත යළි සකසන තෙක් එය අස්ථායි විය හැකිය."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"ඔබේ උපාංගය සමගින් අභ්යන්තර ගැටලුවක් ඇත. විස්තර සඳහා ඔබේ නිෂ්පාදක අමතන්න."</string> diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml index fa79dda..41d8409 100644 --- a/core/res/res/values-sk/strings.xml +++ b/core/res/res/values-sk/strings.xml @@ -131,6 +131,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Vypnuté"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Uprednostniť Wi-Fi"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Uprednostniť mobilné pripojenie"</string> @@ -1476,8 +1477,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Pred uvoľnením požiadať o bezpečnostný vzor"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Pred uvoľnením požiadať o heslo"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Inštalovaný správcom"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Aktualizované správcom"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Odstránený správcom"</string> <string name="battery_saver_description" msgid="1960431123816253034">"Šetrič batérie znižuje výkonnosť vášho zariadenia a obmedzuje vibrovanie, služby určovania polohy a väčšinu údajov na pozadí, aby tak pomohol predĺžiť výdrž batérie. E-mailová aplikácia, aplikácia na odosielanie správ SMS a MMS a ďalšie aplikácie, ktoré sú založené na synchronizácii, sa pravdepodobne aktualizujú až po ich otvorení.\n\nŠetrič batérie sa automaticky vypne, keď zariadenie začnete nabíjať."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1510,8 +1510,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Zbaliť"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Nerušiť"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Doba pokoja"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Noci cez týždeň"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Víkendy"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"Stlmené aplikáciou <xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"Vo vašom zariadení došlo k internému problému. Môže byť nestabilné, kým neobnovíte jeho továrenské nastavenia."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"Vo vašom zariadení došlo k internému problému. Ak chcete získať podrobné informácie, obráťte sa na jeho výrobcu."</string> diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml index a79a0ec..234bd6a 100644 --- a/core/res/res/values-sl/strings.xml +++ b/core/res/res/values-sl/strings.xml @@ -131,6 +131,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Izklopljeno"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Prednostno – Wi-Fi"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Prednostno – mobilno omrežje"</string> @@ -1476,8 +1477,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Pred odpenjanjem vprašaj za vzorec za odklepanje"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Pred odpenjanjem vprašaj za geslo"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Namestil skrbnik"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Posodobil skrbnik"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Izbrisal skrbnik"</string> <string name="battery_saver_description" msgid="1960431123816253034">"Varčevanje z energijo akumulatorja podaljša čas njegovega delovanja tako, da zmanjša zmogljivost delovanja naprave in omeji vibriranje, lokacijske storitve ter prenos večine podatkov v ozadju. Aplikacije za e-pošto, sporočanje in drugo, ki uporabljajo sinhroniziranje, se morda ne posodabljajo, razen če jih odprete.\n\nVarčevanje z energijo akumulatorja se samodejno izklopi med polnjenjem akumulatorja naprave."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1510,8 +1510,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Strni"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Ne moti"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Čas nedelovanja"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Noči med tednom"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Vikendi"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"Izklop zvoka: <xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"Vaša naprava ima notranjo napako in bo morda nestabilna, dokler je ne ponastavite na tovarniške nastavitve."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"Vaša naprava ima notranjo napako. Če želite več informacij, se obrnite na proizvajalca."</string> diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml index 738dccc..b5c17f9 100644 --- a/core/res/res/values-sr/strings.xml +++ b/core/res/res/values-sr/strings.xml @@ -130,6 +130,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Искључено"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Предност има Wi-Fi"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Предност има мобилна мрежа"</string> @@ -1467,8 +1468,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Тражи шаблон за откључавање пре откачињања"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Тражи лозинку пре откачињања"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Инсталирао је ваш администратор"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Ажурирао је администратор"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Избрисао је ваш адмиистратор"</string> <string name="battery_saver_description" msgid="1960431123816253034">"Да би продужила време трајања батерије, уштеда батерије смањује перформансе уређаја и ограничава вибрацију, услуге локације и већину позадинских података. Имејл, размена порука и друге апликације које се ослањају на синхронизацију можда неће да се ажурирају ако их не отворите.\n\nУштеда батерије се аутоматски искључује када се уређај пуни."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1497,8 +1497,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Скупи"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Не узнемиравај"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Одмор"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Радним данима увече"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Викендима"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"Звук је искључио/ла <xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"Дошло је до интерног проблема у вези са уређајем и можда ће бити нестабилан док не обавите ресетовање на фабричка подешавања."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"Дошло је до интерног проблема у вези са уређајем. Потражите детаље од произвођача."</string> diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml index dfaa97a..57a833b 100644 --- a/core/res/res/values-sv/strings.xml +++ b/core/res/res/values-sv/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Av"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Wi-Fi i första hand"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Mobil i första hand"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Be om upplåsningsmönster innan skärmen slutar fästas"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Be om lösenord innan skärmen slutar fästas"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Paketet har installerats av administratören"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Uppdaterat av administratören"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Paketet har raderats av administratören"</string> <string name="battery_saver_description" msgid="1960431123816253034">"I batterisparläget reduceras enhetens prestanda så att batteriet ska räcka längre och vibration, platstjänster samt den mesta användningen av bakgrundsdata begränsas. Det kan hända att appar för e-post, sms och annat som kräver synkronisering inte uppdateras förrän du öppnar dem.\n\nBatterisparläget inaktiveras automatiskt när enheten laddas."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Komprimera"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Stör ej"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Avbrottstid"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Veckodagskvällar"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Helger"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> har stängt av ljudet"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"Ett internt problem har uppstått i enheten, och det kan hända att problemet kvarstår tills du återställer standardinställningarna."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"Ett internt problem har uppstått i enheten. Kontakta tillverkaren om du vill veta mer."</string> diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml index 13f6e9c..28d9429 100644 --- a/core/res/res/values-sw/strings.xml +++ b/core/res/res/values-sw/strings.xml @@ -129,6 +129,9 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <!-- String.format failed for translation --> + <!-- no translation found for wfcDataSpnFormat (1118052028767666883) --> + <skip /> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Imezimwa"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Wi-Fi inapedelewa"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Mitandao ya simu za mkononi inapendelewa"</string> @@ -1079,7 +1082,7 @@ <string name="ext_media_unmount_action" msgid="1121883233103278199">"Ondoa"</string> <string name="ext_media_browse_action" msgid="8322172381028546087">"Chunguza"</string> <string name="ext_media_missing_title" msgid="620980315821543904">"<xliff:g id="NAME">%s</xliff:g> haipo"</string> - <string name="ext_media_missing_message" msgid="5761133583368750174">"Weka tena kifaa hiki"</string> + <string name="ext_media_missing_message" msgid="5761133583368750174">"Weka kifaa hiki tena"</string> <string name="ext_media_move_specific_title" msgid="1471100343872375842">"Inahamisha <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_move_title" msgid="1022809140035962662">"Inahamisha data"</string> <string name="ext_media_move_success_title" msgid="8575300932957954671">"Imekamilisha kuhamisha"</string> @@ -1458,8 +1461,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Omba mchoro wa kufungua kabla hujabandua"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Omba nenosiri kabla hujabandua"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Kilisakinishwa na msimamizi wako"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Kimesasiswa na msimamizi wako"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Kilifutwa na msimamizi wako"</string> <string name="battery_saver_description" msgid="1960431123816253034">"Kusaidia kuboresha muda wa matumizi ya betri, inayookoa betri hupunguza utendaji wa kifaa chako na kupunguza mtetemo, huduma za utambuzi wa mahali, na data nyingi ya chini chini. Barua pepe, ujumbe na programu nyingine zinazotege,ea usawazishaji huenda zisisasishwe usipozifungua.\n\nInayookoa betri hujizima kiotomatiki kifaa chako kinapokuwa kinachaji."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1486,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Kunja"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Usinisumbue"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Wakati wa hali tuli"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Usiku wa siku za wiki"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Wikiendi"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"Sauti imezimwa na <xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"Kuna hitilafu ya ndani ya kifaa chako, na huenda kisiwe thabiti mpaka urejeshe mipangilio ya kiwandani."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"Kuna hitilafu ya ndani ya kifaa chako. Wasiliana na mtengenezaji wa kifaa chako kwa maelezo."</string> diff --git a/core/res/res/values-ta-rIN/strings.xml b/core/res/res/values-ta-rIN/strings.xml index b8f8e7a..88a8b91 100644 --- a/core/res/res/values-ta-rIN/strings.xml +++ b/core/res/res/values-ta-rIN/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"முடக்கப்பட்டுள்ளது"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"வைஃபைக்கு முன்னுரிமை"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"செல்லுலாருக்கு முன்னுரிமை"</string> @@ -1085,7 +1086,7 @@ <string name="ext_media_move_success_title" msgid="8575300932957954671">"நகர்த்தப்பட்டது"</string> <string name="ext_media_move_success_message" msgid="4199002148206265426">"<xliff:g id="NAME">%s</xliff:g>க்குத் தரவு நகர்த்தப்பட்டது"</string> <string name="ext_media_move_failure_title" msgid="7613189040358789908">"தரவை நகர்த்த முடியவில்லை"</string> - <string name="ext_media_move_failure_message" msgid="1978096440816403360">"அசல் இடத்திலிருந்து தரவு நகர்த்தப்பட்டது"</string> + <string name="ext_media_move_failure_message" msgid="1978096440816403360">"அசல் இடத்திலிருந்து தரவு நகர்த்தப்படவில்லை"</string> <string name="activity_list_empty" msgid="1675388330786841066">"பொருந்தும் செயல்பாடுகள் கண்டறியப்படவில்லை."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"மீடியா அவுட்புட்டை வழிசெலுத்துதல்"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"மீடியாவைப் பிற வெளிப்புறச் சாதனங்களுக்கு வெளியீடாக வழிகாட்ட பயன்பாட்டை அனுமதிக்கிறது."</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"அகற்றும் முன் திறத்தல் வடிவத்தைக் கேள்"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"அகற்றும் முன் கடவுச்சொல்லைக் கேள்"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"நிர்வாகி நிறுவினார்"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"உங்கள் நிர்வாகி புதுப்பித்துள்ளார்"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"நிர்வாகி நீக்கிவிட்டார்"</string> <string name="battery_saver_description" msgid="1960431123816253034">"பேட்டரி ஆயுளை மேம்படுத்த, பேட்டரி சேமிப்பான் உங்கள் சாதனத்தின் செயல்திறனைக் குறைத்து, அதிர்வு, இடச் சேவைகள் மற்றும் பெரும்பாலான பின்புலத் தரவு போன்றவற்றைக் கட்டுப்படுத்துகிறது. ஒத்திசைவைச் சார்ந்துள்ள மின்னஞ்சல், செய்தியிடல் மற்றும் பிற பயன்பாடுகளானது அவற்றைத் திறக்கும்வரையில் புதுப்பிக்கப்படாமல் போகக்கூடும்.\n\nஉங்கள் ஃபோன் சார்ஜ் செய்யப்படும்போது, பேட்டரி சேமிப்பான் தானாகவே முடங்கும்."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"சுருக்கு"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"தொந்தரவு செய்ய வேண்டாம்"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"செயலற்ற நேரம்"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"வார நாட்களின் இரவுகள்"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"வார இறுதி நாட்கள்"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> ஒலியடக்கினார்"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"சாதனத்தில் அகச் சிக்கல் இருக்கிறது, அதனை ஆரம்பநிலைக்கு மீட்டமைக்கும் வரை நிலையற்று இயங்கலாம்."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"சாதனத்தில் அகச் சிக்கல் இருக்கிறது. விவரங்களுக்கு சாதன தயாரிப்பாளரைத் தொடர்புகொள்ளவும்."</string> diff --git a/core/res/res/values-te-rIN/strings.xml b/core/res/res/values-te-rIN/strings.xml index af113ee..685d75f 100644 --- a/core/res/res/values-te-rIN/strings.xml +++ b/core/res/res/values-te-rIN/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"ఆఫ్లో ఉంది"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Wi-Fiకి ప్రాధాన్యత"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"సెల్యులార్కి ప్రాధాన్యత"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"అన్పిన్ చేయడానికి ముందు అన్లాక్ నమూనా కోసం అడుగు"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"అన్పిన్ చేయడానికి ముందు పాస్వర్డ్ కోసం అడుగు"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"మీ నిర్వాహకులు ఇన్స్టాల్ చేసారు"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"మీ నిర్వాహకుడు నవీకరించారు"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"మీ నిర్వాహకులు తొలగించారు"</string> <string name="battery_saver_description" msgid="1960431123816253034">"బ్యాటరీ జీవితకాలాన్ని మెరుగుపరచడంలో సహాయపడటానికి, బ్యాటరీ సేవర్ మీ పరికరం పనితీరును తగ్గిస్తుంది మరియు వైబ్రేషన్ను, స్థాన సేవలను మరియు ఎక్కువ నేపథ్య డేటాను పరిమితం చేస్తుంది. ఇమెయిల్, మెసేజింగ్ మరియు సమకాలీకరణపై ఆధారపడే ఇతర అనువర్తనాలు మీరు వాటిని తెరిస్తే మినహా నవీకరించబడవు.\n\nమీ పరికరం ఛార్జ్ అవుతున్నప్పుడు బ్యాటరీ సేవర్ స్వయంచాలకంగా ఆఫ్ అవుతుంది."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"కుదించండి"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"అంతరాయం కలిగించవద్దు"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"ముఖ్యమైన పనిలో ఉన్నప్పుడు"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"వారపురాత్రులు"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"వారాంతాలు"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> ద్వారా మ్యూట్ చేయబడింది"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"మీ పరికరంతో అంతర్గత సమస్య ఏర్పడింది మరియు మీరు ఫ్యాక్టరీ డేటా రీసెట్ చేసే వరకు అస్థిరంగా ఉంటుంది."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"మీ పరికరంతో అంతర్గత సమస్య ఏర్పడింది. వివరాల కోసం మీ తయారీదారుని సంప్రదించండి."</string> diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml index e8cf5c2..a658c19 100644 --- a/core/res/res/values-th/strings.xml +++ b/core/res/res/values-th/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"ปิด"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"ต้องการใช้ Wi-Fi"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"ต้องการใช้เครือข่ายมือถือ"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"ขอรูปแบบการปลดล็อกก่อนเลิกตรึง"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"ขอรหัสผ่านก่อนเลิกตรึง"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"ติดตั้งโดยผู้ดูแลระบบของคุณ"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"อัปเดตโดยผู้ดูแลระบบ"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"ลบโดยผู้ดูแลระบบของคุณ"</string> <string name="battery_saver_description" msgid="1960431123816253034">"เพื่อช่วยปรับปรุงอายุการใช้งานแบตเตอรี่ โหมดประหยัดแบตเตอรี่จะลดการทำงานของอุปกรณ์และจำกัดการสั่น บริการตำแหน่ง และข้อมูลแบ็กกราวด์ส่วนใหญ่ สำหรับอีเมล การรับส่งข้อความ และแอปอื่นๆ ที่ใช้การซิงค์จะไม่อัปเดตหากคุณไม่เปิดขึ้นมา\n\nโหมดประหยัดแบตเตอรี่จะปิดโดยอัตโนมัติขณะชาร์จอุปกรณ์"</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"ยุบ"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"ห้ามรบกวน"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"ช่วงเวลาเครื่องไม่ทำงาน"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"คืนวันจันทร์-ศุกร์"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"วันหยุดสุดสัปดาห์"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"ปิดเสียงโดย <xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"อุปกรณ์ของคุณเกิดปัญหาภายในเครื่อง อุปกรณ์อาจทำงานไม่เสถียรจนกว่าคุณจะรีเซ็ตข้อมูลเป็นค่าเริ่มต้น"</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"อุปกรณ์ของคุณเกิดปัญหาภายในเครื่อง โปรดติดต่อผู้ผลิตเพื่อขอรายละเอียดเพิ่มเติม"</string> diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml index 87761bb..343344a 100644 --- a/core/res/res/values-tl/strings.xml +++ b/core/res/res/values-tl/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Naka-off"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Mas gusto ang Wi-Fi"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Mas gusto ang cellular"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Humingi ng pattern sa pag-unlock bago mag-unpin"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Humingi ng password bago mag-unpin"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Na-install ng iyong administrator"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Na-update ng iyong administrator"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Na-delete ng iyong administrator"</string> <string name="battery_saver_description" msgid="1960431123816253034">"Upang matulungang pagbutihin ang tagal ng baterya, binabawasan ng pangtipid ng baterya ang pagganap ng iyong device at nililimitahan ang pag-vibrate, mga serbisyo ng lokasyon at karamihan sa data ng background. Maaaring hindi mag-update ang email, pagmemensahe at iba pang mga app na umaasa sa pagsi-sync maliban kung buksan mo ang mga iyon.\n\nAwtomatikong nag-o-off ang pangtipid ng baterya kapag nagcha-charge ang iyong device."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"I-collapse"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Huwag istorbohin"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Walang serbisyo"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Mga Weeknight"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Sabado at Linggo"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"Na-mute ng <xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"May internal na problema sa iyong device, at maaaring hindi ito maging stable hanggang sa i-reset mo ang factory data."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"May internal na problema sa iyong device. Makipag-ugnayan sa iyong manufacturer upang malaman ang mga detalye."</string> diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml index b5fc485..574e45e 100644 --- a/core/res/res/values-tr/strings.xml +++ b/core/res/res/values-tr/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Kapalı"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Kablosuz bağlantı tercih edildi"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Hücresel ağ tercih edildi"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Sabitlemeyi kaldırmadan önce kilit açma desenini sor"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Sabitlemeyi kaldırmadan önce şifre sor"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Yöneticiniz tarafından yüklendi"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Yöneticiniz tarafından güncellendi"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Yöneticiniz tarafından silindi"</string> <string name="battery_saver_description" msgid="1960431123816253034">"Pil tasarrufu özelliği, pil ömrünü iyileştirmeye yardımcı olmak için cihazın performansını düşürür, titreşimi, konum hizmetlerini ve arka plan verilerinin çoğunu sınırlar. Senkronizasyona dayalı olarak çalışan e-posta, mesajlaşma uygulamaları ve diğer uygulamalar, bunları açmadığınız sürece güncellenmeyebilir.\n\nCihazınız şarj olurken pil tasarrufu otomatik olarak kapatılır."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Daralt"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Rahatsız etmeyin"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Bildirim istenmeyen zaman"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Hafta içi her gece"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Hafta sonu"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> tarafından kapatıldı"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"Cihazınızla ilgili dahili bir sorun oluştu ve fabrika verilerine sıfırlama işlemi gerçekleştirilene kadar kararsız çalışabilir."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"Cihazınızla ilgili dahili bir sorun oluştu. Ayrıntılı bilgi için üreticinizle iletişim kurun."</string> diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml index f792619..02114ec 100644 --- a/core/res/res/values-uk/strings.xml +++ b/core/res/res/values-uk/strings.xml @@ -131,6 +131,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Вимкнено"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Wi-Fi за умовчанням"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Мобільна мережа за умовчанням"</string> @@ -1476,8 +1477,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Запитувати ключ розблокування перед відкріпленням"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Запитувати пароль перед відкріпленням"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Установив адміністратор"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Оновлено адміністратором"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Видалив адміністратор"</string> <string name="battery_saver_description" msgid="1960431123816253034">"Щоб подовжити час роботи акумулятора, функція заощадження заряду акумулятора знижує продуктивність пристрою, а також обмежує вібрацію, функції служб локації та передавання більшості фонових даних. Електронна пошта, чати й інші додатки, які синхронізуються, можуть не оновлюватися, доки ви їх не відкриєте.\n\nФункція заощадження заряду акумулятора автоматично вимикається під час заряджання пристрою."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1510,8 +1510,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Згорнути"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Не турбувати"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Простій"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Увечері в робочі дні"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"У вихідні"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> вимикає звук"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"Через внутрішню помилку ваш пристрій може працювати нестабільно. Відновіть заводські налаштування."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"На пристрої сталася внутрішня помилка. Зв’яжіться з виробником пристрою, щоб дізнатися більше."</string> diff --git a/core/res/res/values-ur-rPK/strings.xml b/core/res/res/values-ur-rPK/strings.xml index 9a2ab9a..f8acd34 100644 --- a/core/res/res/values-ur-rPK/strings.xml +++ b/core/res/res/values-ur-rPK/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"آف"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Wi-Fi ترجیحی"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"سیلولر ترجیحی"</string> @@ -416,7 +417,7 @@ <string name="permdesc_bluetooth" product="tablet" msgid="3480722181852438628">"ایپ کو ٹیبلیٹ پر بلوٹوتھ کی ترتیب دیکھنے اور جوڑا بنائے ہوئے آلات کے ساتھ کنکشنز بنانے اور قبول کرنے کی اجازت دیتا ہے۔"</string> <string name="permdesc_bluetooth" product="tv" msgid="3974124940101104206">"ایپ کو TV پر بلوٹوتھ کی کنفیگریشن دیکھنے اور جوڑا بنائے ہوئے آلات کے ساتھ کنکشنز بنانے اور قبول کرنے کی اجازت دیتا ہے۔"</string> <string name="permdesc_bluetooth" product="default" msgid="3207106324452312739">"ایپ کو فون پر بلوٹوتھ کی ترتیب دیکھنے اور جوڑا بنائے ہوئے آلات کے ساتھ کنکشنز بنانے اور قبول کرنے کی اجازت دیتا ہے۔"</string> - <string name="permlab_nfc" msgid="4423351274757876953">"Near Field کمیونیکیشن کو کنٹرول کریں"</string> + <string name="permlab_nfc" msgid="4423351274757876953">"Near Field کمیونیکیشن کنٹرول کریں"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"ایپ کو Near Field Communication (NFC) ٹیگز، کارڈز اور ریڈرز کے ساتھ مواصلت کرنے کی اجازت دیٹا ہے۔"</string> <string name="permlab_disableKeyguard" msgid="3598496301486439258">"اپنے اسکرین لاک کو غیر فعال کریں"</string> <string name="permdesc_disableKeyguard" msgid="6034203065077122992">"ایپ کو کلیدی لاک اور کسی بھی متعلقہ پاس ورڈ سیکیورٹی کو غیر فعال کرنے کی اجازت دیتا ہے۔ مثلاً، کوئی آنے والی فون کال موصول ہونے کے وقت فون کلیدی لاک کو غیر فعال کرتا ہے، پھر کال پوری ہوجانے پر کلیدی لاک کو دوبارہ فعال کردیتا ہے۔"</string> @@ -692,7 +693,7 @@ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="595323214052881264">"SIM کارڈ غیر مقفل ہو رہا ہے…"</string> <string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6481623830344107222">"آپ نے اپنا غیر مقفل کرنے کا پیٹرن <xliff:g id="NUMBER_0">%d</xliff:g> بار غلط طریقے سے ڈرا کیا ہے۔ \n\n <xliff:g id="NUMBER_1">%d</xliff:g> سیکنڈ میں دوبارہ کوشش کریں۔"</string> <string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="2725973286239344555">"آپ نے اپنا پاس ورڈ <xliff:g id="NUMBER_0">%d</xliff:g> بار غلط طریقے سے ٹائپ کیا ہے۔ \n\n <xliff:g id="NUMBER_1">%d</xliff:g> سیکنڈ میں دوبارہ کوشش کریں۔"</string> - <string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="6216672706545696955">"آپ نے اپنا PIN <xliff:g id="NUMBER_0">%d</xliff:g> بار غلط طریقے سے ٹائپ کیا ہے۔ \n\n <xliff:g id="NUMBER_1">%d</xliff:g> سیکنڈ میں دوبارہ کوشش کریں۔"</string> + <string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="6216672706545696955">"آپ نے <xliff:g id="NUMBER_0">%d</xliff:g> بار اپنا PIN غلط طریقے سے ٹائپ کیا ہے۔ \n\n <xliff:g id="NUMBER_1">%d</xliff:g> سیکنڈ میں دوبارہ کوشش کریں۔"</string> <string name="lockscreen_failed_attempts_almost_glogin" product="tablet" msgid="9191611984625460820">"آپ نے اپنے غیر مقفل کرنے کے پیٹرن کو <xliff:g id="NUMBER_0">%d</xliff:g> بار غلط طریقے سے ڈرا کیا ہے۔ <xliff:g id="NUMBER_1">%d</xliff:g> مزید ناکام کوششوں کے بعد، آپ سے اپنے Google سائن ان کا استعمال کرکے اپنے ٹیبلٹ کو غیر مقفل کرنے کیلئے کہا جائے گا۔ \n\n <xliff:g id="NUMBER_2">%d</xliff:g> سیکنڈز بعد دوبارہ کوشش کریں۔"</string> <string name="lockscreen_failed_attempts_almost_glogin" product="tv" msgid="5316664559603394684">"آپ نے اپنا غیر مقفل کرنے کا پیٹرن <xliff:g id="NUMBER_0">%d</xliff:g> بار غلط طریقے سے ڈرا کیا ہے۔ <xliff:g id="NUMBER_1">%d</xliff:g> مزید ناکام کوششوں کے بعد، آپ سے اپنا Google سائن ان استعمال کرکے اپنا TV غیر مقفل کرنے کو کہا جائے گا۔\n\n <xliff:g id="NUMBER_2">%d</xliff:g> سیکنڈ میں دوبارہ کوشش کریں۔"</string> <string name="lockscreen_failed_attempts_almost_glogin" product="default" msgid="2590227559763762751">"آپ نے اپنے غیر مقفل کرنے کے پیٹرن کو <xliff:g id="NUMBER_0">%d</xliff:g> بار غلط طریقے سے ڈرا کیا ہے۔ <xliff:g id="NUMBER_1">%d</xliff:g> مزید ناکام کوششوں کے بعد، آپ سے اپنے Google سائن ان کا استعمال کرکے اپنے فون کو غیر مقفل کرنے کیلئے کہا جائے گا۔ \n\n <xliff:g id="NUMBER_2">%d</xliff:g> سیکنڈز بعد دوبارہ کوشش کریں۔"</string> @@ -1309,7 +1310,7 @@ <string name="kg_login_invalid_input" msgid="5754664119319872197">"غلط صارف نام یا پاس ورڈ۔"</string> <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"اپنا صارف نام یا پاس ورڈ بھول گئے؟\n"<b>"google.com/accounts/recovery"</b>" ملاحظہ کریں۔"</string> <string name="kg_login_checking_password" msgid="1052685197710252395">"اکاؤنٹ چیک کیا جا رہا ہے…"</string> - <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"آپ نے اپنا PIN <xliff:g id="NUMBER_0">%d</xliff:g> بار غلط طریقے سے ٹائپ کیا ہے۔ \n\n <xliff:g id="NUMBER_1">%d</xliff:g> سیکنڈ میں دوبارہ کوشش کریں۔"</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"آپ نے <xliff:g id="NUMBER_0">%d</xliff:g> بار اپنا PIN غلط طریقے سے ٹائپ کیا ہے۔ \n\n <xliff:g id="NUMBER_1">%d</xliff:g> سیکنڈ میں دوبارہ کوشش کریں۔"</string> <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"آپ نے اپنا پاس ورڈ <xliff:g id="NUMBER_0">%d</xliff:g> بار غلط طریقے سے ٹائپ کیا ہے۔ \n\n <xliff:g id="NUMBER_1">%d</xliff:g> سیکنڈ میں دوبارہ کوشش کریں۔"</string> <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"آپ نے اپنا غیر مقفل کرنے کا پیٹرن <xliff:g id="NUMBER_0">%d</xliff:g> بار غلط طریقے سے ڈرا کیا ہے۔ \n\n <xliff:g id="NUMBER_1">%d</xliff:g> سیکنڈ میں دوبارہ کوشش کریں۔"</string> <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"آپ نے ٹیبلیٹ کو غیر مقفل کرنے کیلئے <xliff:g id="NUMBER_0">%d</xliff:g> بار غلط طریقے سے کوشش کی ہے۔ <xliff:g id="NUMBER_1">%d</xliff:g> مزید ناکام کوششوں کے بعد، ٹیبلیٹ فیکٹری ڈیفالٹ پر دوبارہ ترتیب دے دیا جائے گا اور صارف کا سبھی ڈیٹا ضائع ہو جائے گا۔"</string> @@ -1458,10 +1459,9 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"پن ہٹانے سے پہلے غیر مقفل کرنے کا پیٹرن طلب کریں"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"پن ہٹانے سے پہلے پاس ورڈ طلب کریں"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"آپ کے منتظم کی جانب سے انسٹال کر دیا گیا"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"آپ کے منتظم نے اپ ڈيٹ کر دیا"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"آپ کے منتظم کی جانب سے حذف کر دیا گیا"</string> - <string name="battery_saver_description" msgid="1960431123816253034">"بیٹری کی میعاد بہتر کرنے میں مدد کرنے کیلئے، بیٹری کی بچت آپ کے آلہ کی کارکردگی کم کر دیتی ہے اور وائبریشن، مقام کی سروسز اور پس منظر کا بیشتر ڈیٹا محدود کر دیتی ہے۔ ای میل، پیغام رسانی اور مطابقت پذیری پر مبنی دیگر ایپس ممکن ہے اس وقت تک اپ ڈیٹ نہ ہوں جب تک آپ انہیں نہ کھولیں۔\n\nآپ کا آلہ چارج ہوتے وقت بیٹری کی بچت خود بخود آف ہو جاتی ہے۔"</string> + <string name="battery_saver_description" msgid="1960431123816253034">"بیٹری کی میعاد بہتر کرنے میں مدد کرنے کیلئے، بیٹری سیور آپ کے آلہ کی کارکردگی کم کر دیتی ہے اور وائبریشن، مقام کی سروسز اور پس منظر کا بیشتر ڈیٹا محدود کر دیتی ہے۔ ای میل، پیغام رسانی اور مطابقت پذیری پر منحصر دیگر ایپس ممکن ہے اس وقت تک اپ ڈیٹ نہ ہوں جب تک آپ انہیں نہ کھولیں۔\n\nآپ کا آلہ چارج ہوتے وقت بیٹری سیور خود بخود آف ہو جاتی ہے۔"</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> <item quantity="other">%1$d منٹ کیلئے (<xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g> تک)</item> <item quantity="one">ایک منٹ کیلئے (تک <xliff:g id="FORMATTEDTIME_0">%2$s</xliff:g>)</item> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"سکیڑیں"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"ڈسٹرب نہ کریں"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"ڈاؤن ٹائم"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"ہفتہ کی راتوں کو"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"ویک اینڈز کو"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> کے ذریعے خاموش کردہ"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"آپ کے آلہ میں ایک داخلی مسئلہ ہے اور جب تک آپ فیکٹری ڈیٹا کو دوبارہ ترتیب نہیں دے دیتے ہیں، ہوسکتا ہے کہ یہ غیر مستحکم رہے۔"</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"آپ کے آلہ میں ایک داخلی مسئلہ ہے۔ تفصیلات کیلئے اپنے مینوفیکچرر سے رابطہ کریں۔"</string> diff --git a/core/res/res/values-uz-rUZ/strings.xml b/core/res/res/values-uz-rUZ/strings.xml index c368d51..6731d33 100644 --- a/core/res/res/values-uz-rUZ/strings.xml +++ b/core/res/res/values-uz-rUZ/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"O‘chirilgan"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Wi-Fi afzal ko‘rilsin"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Mobil tarmoq afzal ko‘rilsin"</string> @@ -240,21 +241,21 @@ <string name="permgroupdesc_phone" msgid="2016641188146068700">"qurilma telefon xizmatidan foydalanish"</string> <string name="permgrouplab_sensors" msgid="7416703484233940260">"Sensorlar"</string> <string name="permgroupdesc_sensors" msgid="2987451839455524494">"taqiladigan qurilmalar va sensorlarni ko‘rish"</string> - <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Oynadagi kontentni ajratib olish"</string> - <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Joriy oynadagi kontent ma’lumotlarini o‘rganib chiqish."</string> + <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Oynadagi kontentni o‘qiydi"</string> + <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Joriy oynadagi kontent mazmunini aniqlaydi."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Tegib o‘rganish xizmatini yoqish"</string> <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"tegilgan elementlar ovoz chiqarib o‘qiladi va ekrandagi elementlarni barmoq harakatlari yordamida o‘rganish mumkin."</string> <string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Kengaytirilgan veb qulayligini yoqish"</string> <string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Ilova dasturning qulayroq bo‘lishi uchun skriptlar o‘rnatilgan bo‘lishi mumkin."</string> - <string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Terayotgan matningizni kuzatish"</string> - <string name="capability_desc_canRequestFilterKeyEvents" msgid="7463135292204152818">"Kredit karta raqamlari va parollar kabi shaxsiy ma’lumotlarni o‘z ichiga oladi."</string> + <string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Kiritilayotgan matnni kuzatadi"</string> + <string name="capability_desc_canRequestFilterKeyEvents" msgid="7463135292204152818">"Bunga kredit karta raqamlari va parollar kabi shaxsiy ma’lumotlar kiradi."</string> <string name="permlab_statusBar" msgid="7417192629601890791">"holat panelini o‘zgartirish yoki o‘chirish"</string> <string name="permdesc_statusBar" msgid="8434669549504290975">"Ilova holat panelini o‘chirib qo‘yishi hamda tizim ikonkalarini qo‘shishi yoki olib tashlashi mumkin."</string> <string name="permlab_statusBarService" msgid="7247281911387931485">"holat paneli"</string> <string name="permdesc_statusBarService" msgid="716113660795976060">"Ilova holat qatorining o‘rnini egallashi mumkin."</string> <string name="permlab_expandStatusBar" msgid="1148198785937489264">"holat panelini yoyish/yig‘ish"</string> <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Ilova holat panelini yoyishi va yig‘ishi mumkin."</string> - <string name="permlab_install_shortcut" msgid="4279070216371564234">"yorliqlar o‘rnatish"</string> + <string name="permlab_install_shortcut" msgid="4279070216371564234">"yorliqlarni yaratish"</string> <string name="permdesc_install_shortcut" msgid="8341295916286736996">"Dasturga foydalanuvchini aralashtirmasdan, Uy ekraniga yorliqlar qo‘shish imkonini beradi."</string> <string name="permlab_uninstall_shortcut" msgid="4729634524044003699">"yorliqlarni o‘chirish"</string> <string name="permdesc_uninstall_shortcut" msgid="6745743474265057975">"Dasturga foydalanuvchini aralashtirmasdan, uy ekranidagi yorliqlarni o‘chirishga ruxsat beradi."</string> @@ -282,7 +283,7 @@ <string name="permdesc_enableCarMode" msgid="4853187425751419467">"Ilova avtomobil rejimini yoqishi mumkin."</string> <string name="permlab_killBackgroundProcesses" msgid="3914026687420177202">"boshqa ilovalarni yopish"</string> <string name="permdesc_killBackgroundProcesses" msgid="4593353235959733119">"Ilovaga boshqa ilovalarning orqa fonda amalga oshirilayotgan jarayonlarini to‘xtatish uchun ruxsat beradi. Bu boshqa ilovalarning to‘xtatilishiga sabab bo‘lishi mumkin."</string> - <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"boshqa ilovalar ustiga chizish"</string> + <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"interfeys elementlarini boshqa oynalar ustidan ko‘rsatish"</string> <string name="permdesc_systemAlertWindow" msgid="8584678381972820118">"Ilovaga foydalanuvchi interfeysining qismlariga yoki boshqa ilovalarning tepasiga chizish uchun ruxsat beradi. Ular har qanday ilova interfeysidan foydalanganingizda ishingizga xalaqit qilishi mumkin yoki boshqa ilovalarda siz ko‘ryapman deb o‘ylayotgan narsalarni o‘zgartirishlari mumkin."</string> <string name="permlab_persistentActivity" msgid="8841113627955563938">"ilovani doim ishlab turadigan qilish"</string> <string name="permdesc_persistentActivity" product="tablet" msgid="8525189272329086137">"Ilovaga o‘zining komponentlarini xotirada doimiy saqlashga ruxsat beradi. Bu mavjud xotirani cheklashi va planshetni sekin ishlashiga sabab bo‘lishi mumkin."</string> @@ -368,7 +369,7 @@ <string name="permdesc_transmitIr" product="tablet" msgid="5358308854306529170">"Dasturga planshetdagi infraqizil antenadan foydalanish ruxsatini beradi."</string> <string name="permdesc_transmitIr" product="tv" msgid="3926790828514867101">"Ilovaga televizorning infraqizil uzatkichidan foydalanish huquqini beradi."</string> <string name="permdesc_transmitIr" product="default" msgid="7957763745020300725">"Dasturga telefondagi infraqizil antenadan foydalanish ruxsatini beradi."</string> - <string name="permlab_setWallpaper" msgid="6627192333373465143">"orqa fonga rasm o‘rnatish"</string> + <string name="permlab_setWallpaper" msgid="6627192333373465143">"fonga rasm o‘rnatish"</string> <string name="permdesc_setWallpaper" msgid="7373447920977624745">"Ilova tizim uchun orqa fon rasmlarini o‘rnatishi mumkin."</string> <string name="permlab_setWallpaperHints" msgid="3278608165977736538">"fon rasmi o‘lchamini moslash"</string> <string name="permdesc_setWallpaperHints" msgid="8235784384223730091">"Ilova tizimning orqa fon rasmlari uchun o‘lchamlarini ko‘rsatishi mumkin."</string> @@ -396,13 +397,13 @@ <string name="permdesc_changeTetherState" msgid="1524441344412319780">"Ilova modem rejimida tarmoqqa ulanish holatini o‘zgartirishi mumkin."</string> <string name="permlab_accessWifiState" msgid="5202012949247040011">"Wi-Fi ulanishlarini ko‘rish"</string> <string name="permdesc_accessWifiState" msgid="5002798077387803726">"Ilovaga ulangan Wi-Fi qurilmalari nomi va yoqilgan Wi-Fi kabi Wi-Fi tarmoqlari haqidagi ma’lumotni ko‘rish imkonini beradi."</string> - <string name="permlab_changeWifiState" msgid="6550641188749128035">"Wi-Fi’ga ulash va uni uzish"</string> + <string name="permlab_changeWifiState" msgid="6550641188749128035">"Wi-Fi tarmog‘iga ulanish va uzish"</string> <string name="permdesc_changeWifiState" msgid="7137950297386127533">"Ilovaga Wi-Fi ulanish nuqtalariga ulanish va ulardan uzilishga hamda Wi-Fi tarmoqlari uchun qurilmalar sozlamasiga o‘zgartirishlar kiritishga ruxsat beradi."</string> <string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"Wi-Fi Multicast qabul qilishga ruxsat berish"</string> <string name="permdesc_changeWifiMulticastState" product="tablet" msgid="7969774021256336548">"Ilovaga Wi-Fi tarmoq orqali guruh manzillardan foydalanib, faqat planshetingizga emas, balki barcha qurilmalarga yuborilgan paketlarni qabul qilishga ruxsat beradi. U oddiy rejimdagidan ko‘ra ko‘proq quvvat sarflaydi."</string> <string name="permdesc_changeWifiMulticastState" product="tv" msgid="9031975661145014160">"Ilovaga faqat televizoringizga emas, balki biror Wi-Fi tarmog‘iga ulangan barcha qurilmalarga ommaviy uzatish manzillari orqali yuborilgan paketlarni qabul qilish huquqini beradi."</string> <string name="permdesc_changeWifiMulticastState" product="default" msgid="6851949706025349926">"Ilovaga Wi-Fi tarmoq orqali guruh manzillardan foydalanib, faqat telefoningizga emas, balki barcha qurilmalarga yuborilgan paketlarni qabul qilishga ruxsat beradi. U oddiy rejimdagidan ko‘ra ko‘proq quvvat sarflaydi."</string> - <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"Bluetooth sozlamalariga ruxsat"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"Bluetooth sozlamalariga kirish"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"Ilova Bluetooth funksiyali mahalliy planshet sozlamalarini sozlashi hamda masofadan turib qurilmalarni aniqlash va ular bilan juftlashishni amalga oshirishi mumkin."</string> <string name="permdesc_bluetoothAdmin" product="tv" msgid="3373125682645601429">"Ilovaga mahalliy Bluetooth TV qurilmasini sozlash hamda masofadagi qurilmalarni aniqlash va ularga ulanish huquqini beradi."</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"Ilova Bluetooth funksiyali mahalliy telefon sozlamalarini sozlashi hamda masofadan turib qurilmalarni aniqlash va ular bilan juftlashishni amalga oshirishi mumkin."</string> @@ -416,7 +417,7 @@ <string name="permdesc_bluetooth" product="tablet" msgid="3480722181852438628">"Ilovaga planshetdagi Bluetooth‘ning sozlamasini ko‘rishga va bog‘langan qurilmalarga ulanish va ulardan ulanish so‘rovlarini qabul qulishga imkon beradi."</string> <string name="permdesc_bluetooth" product="tv" msgid="3974124940101104206">"Ilovaga televizordagi Bluetooth sozlamalarini ko‘rish hamda juftlashgan qurilmalar bilan aloqa o‘rnatish va ulanishlarni qabul qilish huquqini beradi."</string> <string name="permdesc_bluetooth" product="default" msgid="3207106324452312739">"Ilovaga telefondagi Bluetooth‘ning sozlamasini ko‘rishga va bog‘langan qurilmalarga ulanish va ulardan ulanish so‘rovlarini qabul qulishga imkon beradi."</string> - <string name="permlab_nfc" msgid="4423351274757876953">"yaqindagi aloqa radiuslarini boshqarish"</string> + <string name="permlab_nfc" msgid="4423351274757876953">"NFC modulini boshqarish"</string> <string name="permdesc_nfc" msgid="7120611819401789907">"Ilova qisqa masofali aloqa (NFC) texnologiyasi yordamida NFC yorliqlari, kartalar va o‘qish moslamalari bilan ma’lumot almashishi mumkin."</string> <string name="permlab_disableKeyguard" msgid="3598496301486439258">"ekran qulfini o‘chirib qo‘yish"</string> <string name="permdesc_disableKeyguard" msgid="6034203065077122992">"Ilovaga ekran qulfini va har qanday parol yordamidagi xavfsizlik himoyalarini o‘chirishga ruxsat beradi. Masalan, kirish qo‘ng‘irog‘ida telefon ekran qulfini o‘chiradi va qo‘ng‘iroq tugashi bilan qulfni yoqadi."</string> @@ -445,7 +446,7 @@ <string name="permdesc_writeSyncSettings" msgid="8956262591306369868">"Ilovaga hisobning sinxronlash sozlamalarini o‘zgartirish uchun ruxsat beradi. Masalan, bundan \"Odamlar\" ilovasini hisob bilan sinxronlanlash uchun foydalanish mumkin."</string> <string name="permlab_readSyncStats" msgid="7396577451360202448">"sinxronlash statistikasini o‘qish"</string> <string name="permdesc_readSyncStats" msgid="1510143761757606156">"Ilovaga hisobning sinxronlash statistikasini, shu jumladan, sinxronlangan hodisalar tarixi va qancha ma’lumot sinxronlanganligi haqidagi ma’lumotni o‘qishga ruxsat beradi."</string> - <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"obunalarga yozish"</string> + <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"obuna ma’lumotlarini o‘zgartirish"</string> <string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Ilova hozirgi vaqtda sinxronlanayotgan elementlarni o‘zgartirishi mumkin. Zararli dasturlar uning yordamida sinxronlangan elementlarni o‘zgartirishi mumkin"</string> <string name="permlab_readDictionary" msgid="4107101525746035718">"lug‘atga qo‘shgan atamalaringizni o‘qish"</string> <string name="permdesc_readDictionary" msgid="659614600338904243">"Ilovaga foydalanuvchi lug‘atga zaxiralagan barcha so‘zlar, nomlar va so‘z birikmalarini o‘qish uchun ruxsat beradi."</string> @@ -536,36 +537,36 @@ <string name="policydesc_disableKeyguardFeatures" msgid="3980868516629887575">"Ekran qulfining ba’zi funksiyalaridan foydalanishni cheklaydi."</string> <string-array name="phoneTypes"> <item msgid="8901098336658710359">"Uy"</item> - <item msgid="869923650527136615">"Mobayl"</item> + <item msgid="869923650527136615">"Mobil"</item> <item msgid="7897544654242874543">"Ish"</item> <item msgid="1103601433382158155">"Faks (ish)"</item> <item msgid="1735177144948329370">"Faks (uy)"</item> <item msgid="603878674477207394">"Peyjer"</item> <item msgid="1650824275177931637">"Boshqa"</item> - <item msgid="9192514806975898961">"Boshqa"</item> + <item msgid="9192514806975898961">"Maxsus"</item> </string-array> <string-array name="emailAddressTypes"> <item msgid="8073994352956129127">"Uy"</item> <item msgid="7084237356602625604">"Ish"</item> <item msgid="1112044410659011023">"Boshqa"</item> - <item msgid="2374913952870110618">"Boshqa"</item> + <item msgid="2374913952870110618">"Maxsus"</item> </string-array> <string-array name="postalAddressTypes"> <item msgid="6880257626740047286">"Uy"</item> <item msgid="5629153956045109251">"Ish"</item> <item msgid="4966604264500343469">"Boshqa"</item> - <item msgid="4932682847595299369">"Boshqa"</item> + <item msgid="4932682847595299369">"Maxsus"</item> </string-array> <string-array name="imAddressTypes"> <item msgid="1738585194601476694">"Uy"</item> <item msgid="1359644565647383708">"Ish"</item> <item msgid="7868549401053615677">"Boshqa"</item> - <item msgid="3145118944639869809">"Boshqa"</item> + <item msgid="3145118944639869809">"Maxsus"</item> </string-array> <string-array name="organizationTypes"> <item msgid="7546335612189115615">"Ish"</item> <item msgid="4378074129049520373">"Boshqa"</item> - <item msgid="3455047468583965104">"Boshqa"</item> + <item msgid="3455047468583965104">"Maxsus"</item> </string-array> <string-array name="imProtocols"> <item msgid="8595261363518459565">"AIM"</item> @@ -577,9 +578,9 @@ <item msgid="2506857312718630823">"ICQ"</item> <item msgid="1648797903785279353">"Jabber"</item> </string-array> - <string name="phoneTypeCustom" msgid="1644738059053355820">"Boshqa"</string> + <string name="phoneTypeCustom" msgid="1644738059053355820">"Maxsus"</string> <string name="phoneTypeHome" msgid="2570923463033985887">"Uy"</string> - <string name="phoneTypeMobile" msgid="6501463557754751037">"Mobayl"</string> + <string name="phoneTypeMobile" msgid="6501463557754751037">"Mobil"</string> <string name="phoneTypeWork" msgid="8863939667059911633">"Ish"</string> <string name="phoneTypeFaxWork" msgid="3517792160008890912">"Faks (ish)"</string> <string name="phoneTypeFaxHome" msgid="2067265972322971467">"Faks (uy)"</string> @@ -598,24 +599,24 @@ <string name="phoneTypeWorkPager" msgid="649938731231157056">"Peyjer (ish)"</string> <string name="phoneTypeAssistant" msgid="5596772636128562884">"Yordamchi"</string> <string name="phoneTypeMms" msgid="7254492275502768992">"MMS"</string> - <string name="eventTypeCustom" msgid="7837586198458073404">"Boshqa"</string> + <string name="eventTypeCustom" msgid="7837586198458073404">"Maxsus"</string> <string name="eventTypeBirthday" msgid="2813379844211390740">"Tug‘ilgan kun"</string> <string name="eventTypeAnniversary" msgid="3876779744518284000">"Yubiley"</string> <string name="eventTypeOther" msgid="7388178939010143077">"Boshqa"</string> - <string name="emailTypeCustom" msgid="8525960257804213846">"Boshqa"</string> + <string name="emailTypeCustom" msgid="8525960257804213846">"Maxsus"</string> <string name="emailTypeHome" msgid="449227236140433919">"Uy"</string> <string name="emailTypeWork" msgid="3548058059601149973">"Ish"</string> <string name="emailTypeOther" msgid="2923008695272639549">"Boshqa"</string> - <string name="emailTypeMobile" msgid="119919005321166205">"Mobayl"</string> - <string name="postalTypeCustom" msgid="8903206903060479902">"Boshqa"</string> + <string name="emailTypeMobile" msgid="119919005321166205">"Mobil"</string> + <string name="postalTypeCustom" msgid="8903206903060479902">"Maxsus"</string> <string name="postalTypeHome" msgid="8165756977184483097">"Uy"</string> <string name="postalTypeWork" msgid="5268172772387694495">"Ish"</string> <string name="postalTypeOther" msgid="2726111966623584341">"Boshqa"</string> - <string name="imTypeCustom" msgid="2074028755527826046">"Boshqa"</string> + <string name="imTypeCustom" msgid="2074028755527826046">"Maxsus"</string> <string name="imTypeHome" msgid="6241181032954263892">"Uy"</string> <string name="imTypeWork" msgid="1371489290242433090">"Ish"</string> <string name="imTypeOther" msgid="5377007495735915478">"Boshqa"</string> - <string name="imProtocolCustom" msgid="6919453836618749992">"Boshqa"</string> + <string name="imProtocolCustom" msgid="6919453836618749992">"Maxsus"</string> <string name="imProtocolAim" msgid="7050360612368383417">"AIM"</string> <string name="imProtocolMsn" msgid="144556545420769442">"Windows Live"</string> <string name="imProtocolYahoo" msgid="8271439408469021273">"Yahoo"</string> @@ -627,23 +628,23 @@ <string name="imProtocolNetMeeting" msgid="8287625655986827971">"NetMeeting"</string> <string name="orgTypeWork" msgid="29268870505363872">"Ish"</string> <string name="orgTypeOther" msgid="3951781131570124082">"Boshqa"</string> - <string name="orgTypeCustom" msgid="225523415372088322">"Boshqa"</string> - <string name="relationTypeCustom" msgid="3542403679827297300">"Boshqa"</string> + <string name="orgTypeCustom" msgid="225523415372088322">"Maxsus"</string> + <string name="relationTypeCustom" msgid="3542403679827297300">"Maxsus"</string> <string name="relationTypeAssistant" msgid="6274334825195379076">"Yordamchi"</string> <string name="relationTypeBrother" msgid="8757913506784067713">"Aka/uka"</string> - <string name="relationTypeChild" msgid="1890746277276881626">"Bola"</string> - <string name="relationTypeDomesticPartner" msgid="6904807112121122133">"Ichki hamkor"</string> + <string name="relationTypeChild" msgid="1890746277276881626">"Farzand"</string> + <string name="relationTypeDomesticPartner" msgid="6904807112121122133">"Fuqarolik nikohida"</string> <string name="relationTypeFather" msgid="5228034687082050725">"Ota"</string> <string name="relationTypeFriend" msgid="7313106762483391262">"Do‘st"</string> <string name="relationTypeManager" msgid="6365677861610137895">"Menejer"</string> <string name="relationTypeMother" msgid="4578571352962758304">"Ona"</string> <string name="relationTypeParent" msgid="4755635567562925226">"Ota-ona"</string> <string name="relationTypePartner" msgid="7266490285120262781">"Hamkor"</string> - <string name="relationTypeReferredBy" msgid="101573059844135524">"Qarindoshligi:"</string> - <string name="relationTypeRelative" msgid="1799819930085610271">"Aloqasi bor"</string> - <string name="relationTypeSister" msgid="1735983554479076481">"Singlisi"</string> - <string name="relationTypeSpouse" msgid="394136939428698117">"Eri"</string> - <string name="sipAddressTypeCustom" msgid="2473580593111590945">"Boshqa"</string> + <string name="relationTypeReferredBy" msgid="101573059844135524">"Tavsiya qilingan"</string> + <string name="relationTypeRelative" msgid="1799819930085610271">"Qarindosh"</string> + <string name="relationTypeSister" msgid="1735983554479076481">"Opa/singil"</string> + <string name="relationTypeSpouse" msgid="394136939428698117">"Turmush o‘rtog‘i"</string> + <string name="sipAddressTypeCustom" msgid="2473580593111590945">"Maxsus"</string> <string name="sipAddressTypeHome" msgid="6093598181069359295">"Uy"</string> <string name="sipAddressTypeWork" msgid="6920725730797099047">"Ish"</string> <string name="sipAddressTypeOther" msgid="4408436162950119849">"Boshqa"</string> @@ -663,7 +664,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="46154051614126049">"Qulfdan chiqarish yoki favqulodda qo‘ng‘iroqni amalga oshirish uchun \"Menyu\"ni bosing."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="686260028797158364">"Qulfni ochish uchun \"Menyu\"ga bosing."</string> <string name="lockscreen_pattern_instructions" msgid="7478703254964810302">"Qulfni ochish uchun namuna ustiga chizing"</string> - <string name="lockscreen_emergency_call" msgid="5298642613417801888">"Tez yordam"</string> + <string name="lockscreen_emergency_call" msgid="5298642613417801888">"Favqulodda qo‘ng‘iroq"</string> <string name="lockscreen_return_to_call" msgid="5244259785500040021">"Qo‘ng‘iroqni qaytarish"</string> <string name="lockscreen_pattern_correct" msgid="9039008650362261237">"To‘g‘ri!"</string> <string name="lockscreen_pattern_wrong" msgid="4317955014948108794">"Qaytadan urining"</string> @@ -690,11 +691,11 @@ <string name="lockscreen_sim_puk_locked_instructions" msgid="8127916255245181063">"Foydalanuvchi qo‘llanmasiga qarang yoki Abonentlarni qo‘llab-quvvatlash markaziga murojaat qiling."</string> <string name="lockscreen_sim_locked_message" msgid="8066660129206001039">"SIM karta qulflangan."</string> <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="595323214052881264">"SIM karta qulfdan chiqarilmoqda…"</string> - <string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6481623830344107222">"Siz chizmali parolni <xliff:g id="NUMBER_0">%d</xliff:g> marta noto‘g‘ri kiritdingiz. \n\n <xliff:g id="NUMBER_1">%d</xliff:g> soniyadan so‘ng qayta urining."</string> + <string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6481623830344107222">"Siz chizmali kalitni <xliff:g id="NUMBER_0">%d</xliff:g> marta noto‘g‘ri kiritdingiz. \n\n<xliff:g id="NUMBER_1">%d</xliff:g> soniyadan so‘ng qayta urining."</string> <string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="2725973286239344555">"Siz parolni <xliff:g id="NUMBER_0">%d</xliff:g> marta noto‘g‘ri kiritdingiz. \n\n <xliff:g id="NUMBER_1">%d</xliff:g> soniyadan so‘ng qayta urining."</string> <string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="6216672706545696955">"Siz PIN-kodni <xliff:g id="NUMBER_0">%d</xliff:g> marta noto‘g‘ri kiritdingiz. \n\n <xliff:g id="NUMBER_1">%d</xliff:g> soniyadan so‘ng qayta urining."</string> - <string name="lockscreen_failed_attempts_almost_glogin" product="tablet" msgid="9191611984625460820">"Siz chizmali parolni <xliff:g id="NUMBER_0">%d</xliff:g> marta noto‘g‘ri kiritdingiz. Telefon qulfini ochish uchun yana <xliff:g id="NUMBER_1">%d</xliff:g> marta noto‘g‘ri urinish qilsangiz, sizdan Google hisobingizga kirish talab qilinadi. \n\n <xliff:g id="NUMBER_2">%d</xliff:g> soniyadan so‘ng qayta urining."</string> - <string name="lockscreen_failed_attempts_almost_glogin" product="tv" msgid="5316664559603394684">"Siz chizmali parolni <xliff:g id="NUMBER_0">%d</xliff:g> marta noto‘g‘ri kiritdingiz. Agar uni yana <xliff:g id="NUMBER_1">%d</xliff:g> marta noto‘g‘ri kiritsangiz, televizoringizni qulfdan chiqarish uchun Google hisobingizga kirish talab qilinadi.\n\n <xliff:g id="NUMBER_2">%d</xliff:g> soniyadan so‘ng qaytadan urining."</string> + <string name="lockscreen_failed_attempts_almost_glogin" product="tablet" msgid="9191611984625460820">"Siz chizmali kalitni <xliff:g id="NUMBER_0">%d</xliff:g> marta noto‘g‘ri kiritdingiz. Telefon qulfini ochish uchun yana <xliff:g id="NUMBER_1">%d</xliff:g> marta noto‘g‘ri urinish qilsangiz, sizdan Google hisobingizga kirish talab qilinadi. \n\n <xliff:g id="NUMBER_2">%d</xliff:g> soniyadan so‘ng qayta urining."</string> + <string name="lockscreen_failed_attempts_almost_glogin" product="tv" msgid="5316664559603394684">"Siz chizmali kalitni <xliff:g id="NUMBER_0">%d</xliff:g> marta noto‘g‘ri kiritdingiz. Agar uni yana <xliff:g id="NUMBER_1">%d</xliff:g> marta noto‘g‘ri kiritsangiz, televizoringizni qulfdan chiqarish uchun Google hisobingizga kirish talab qilinadi.\n\n <xliff:g id="NUMBER_2">%d</xliff:g> soniyadan so‘ng qaytadan urining."</string> <string name="lockscreen_failed_attempts_almost_glogin" product="default" msgid="2590227559763762751">"Siz chizmali kalitni <xliff:g id="NUMBER_0">%d</xliff:g> marta noto‘g‘ri kiritdingiz. Telefon qulfini ochish uchun yana <xliff:g id="NUMBER_1">%d</xliff:g> marta noto‘g‘ri urinish qilsangiz, sizdan Google hisobingizga kirish talab qilinadi.\n\n <xliff:g id="NUMBER_2">%d</xliff:g> soniyadan so‘ng qayta urining."</string> <string name="lockscreen_failed_attempts_almost_at_wipe" product="tablet" msgid="6128106399745755604">"Planshet qulfini <xliff:g id="NUMBER_0">%d</xliff:g> marta ochishga urinib ko‘rdingiz. <xliff:g id="NUMBER_1">%d</xliff:g> marta muvaffaqiyatsiz urinishlardan so‘ng, planshet ishlab chiqarilgan holatiga tiklanadi va barcha foydalanuvchi ma’lumotlari yo‘qoladi."</string> <string name="lockscreen_failed_attempts_almost_at_wipe" product="tv" msgid="950408382418270260">"Siz televizorni qulfdan chiqarish parolini <xliff:g id="NUMBER_0">%d</xliff:g> marta noto‘g‘ri kiritdingiz. Agar uni yana <xliff:g id="NUMBER_1">%d</xliff:g> marta noto‘g‘ri kiritsangiz, televizoringizda zavod sozlamalari qayta tiklanadi hamda undagi barcha ma’lumotlaringiz o‘chib ketadi."</string> @@ -702,7 +703,7 @@ <string name="lockscreen_failed_attempts_now_wiping" product="tablet" msgid="280873516493934365">"Planshet qulfini <xliff:g id="NUMBER">%d</xliff:g> marta ochishga urinib ko‘rdingiz. Planshet hozir ishlab chiqarilgan holatiga tiklanadi."</string> <string name="lockscreen_failed_attempts_now_wiping" product="tv" msgid="3195755534096192191">"Siz televizorni qulfdan chiqarish parolini <xliff:g id="NUMBER">%d</xliff:g> marta noto‘g‘ri kiritdingiz. Endi, televizoringizda zavod sozlamalari qayta tiklanadi."</string> <string name="lockscreen_failed_attempts_now_wiping" product="default" msgid="3025504721764922246">"Telefon qulfini <xliff:g id="NUMBER">%d</xliff:g> marta ochishga urinib ko‘rdingiz. Telefon hozir ishlab chiqarilgan holatiga tiklanadi."</string> - <string name="lockscreen_too_many_failed_attempts_countdown" msgid="6251480343394389665">"<xliff:g id="NUMBER">%d</xliff:g> soniyadan keyin qayta urinib ko‘ring."</string> + <string name="lockscreen_too_many_failed_attempts_countdown" msgid="6251480343394389665">"<xliff:g id="NUMBER">%d</xliff:g> soniyadan so‘ng qayta urinib ko‘ring."</string> <string name="lockscreen_forgot_pattern_button_text" msgid="2626999449610695930">"Chizma namunasi yodingizdan chiqdimi?"</string> <string name="lockscreen_glogin_forgot_pattern" msgid="2588521501166032747">"Qulfni ochish hisobi"</string> <string name="lockscreen_glogin_too_many_attempts" msgid="2751368605287288808">"Chizmali parolni ochishga juda ko‘p urinildi"</string> @@ -944,22 +945,22 @@ <string name="volume_ringtone" msgid="6885421406845734650">"Qo‘ng‘iroq tovushi"</string> <string name="volume_music" msgid="5421651157138628171">"Media tovushi"</string> <string name="volume_music_hint_playing_through_bluetooth" msgid="9165984379394601533">"Bluetooth orqali ijro etilmoqda"</string> - <string name="volume_music_hint_silent_ringtone_selected" msgid="8310739960973156272">"Jiringlash ohangi ovozsiz"</string> + <string name="volume_music_hint_silent_ringtone_selected" msgid="8310739960973156272">"Ovozsiz rejim tanlandi"</string> <string name="volume_call" msgid="3941680041282788711">"Kiruvchi qo‘ng‘iroq balandligi"</string> <string name="volume_bluetooth_call" msgid="2002891926351151534">"Kiruvchi bluetooth tovushi"</string> - <string name="volume_alarm" msgid="1985191616042689100">"Uyg‘otgich tovushi"</string> + <string name="volume_alarm" msgid="1985191616042689100">"Signal balandligi"</string> <string name="volume_notification" msgid="2422265656744276715">"Eslatma tovushi"</string> <string name="volume_unknown" msgid="1400219669770445902">"Tovush"</string> <string name="volume_icon_description_bluetooth" msgid="6538894177255964340">"Bluetooth tovushi"</string> - <string name="volume_icon_description_ringer" msgid="3326003847006162496">"Rington tovushi"</string> + <string name="volume_icon_description_ringer" msgid="3326003847006162496">"Rington balandligi"</string> <string name="volume_icon_description_incall" msgid="8890073218154543397">"Qo‘ng‘iroq tovushi balandligi"</string> <string name="volume_icon_description_media" msgid="4217311719665194215">"Media tovushi balandligi"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"Eslatma tovushi"</string> - <string name="ringtone_default" msgid="3789758980357696936">"Standart musiqa"</string> - <string name="ringtone_default_with_actual" msgid="8129563480895990372">"Standart musiqa (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> - <string name="ringtone_silent" msgid="7937634392408977062">"Yo‘q"</string> - <string name="ringtone_picker_title" msgid="3515143939175119094">"Musiqalar"</string> - <string name="ringtone_unknown" msgid="5477919988701784788">"Noma’lum musiqa"</string> + <string name="ringtone_default" msgid="3789758980357696936">"Standart rington"</string> + <string name="ringtone_default_with_actual" msgid="8129563480895990372">"Standart rington (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> + <string name="ringtone_silent" msgid="7937634392408977062">"Ovozsiz"</string> + <string name="ringtone_picker_title" msgid="3515143939175119094">"Ringtonlar"</string> + <string name="ringtone_unknown" msgid="5477919988701784788">"Noma’lum rington"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="other">Wi-Fi tarmoqlari mavjud emas</item> <item quantity="one">Wi-Fi tarmog‘i mavjud emas</item> @@ -1052,7 +1053,7 @@ <string name="extmedia_format_message" product="nosdcard" msgid="3934016853425761078">"USB xotiradagi barcha fayllar o‘chirib tashlanadi. Ushbu amalni ortga qaytarib bo‘lmaydi!"</string> <string name="extmedia_format_message" product="default" msgid="14131895027543830">"Kartadagi barcha ma`lumotlar o‘chirib tashlanadi."</string> <string name="extmedia_format_button_format" msgid="4131064560127478695">"Format"</string> - <string name="adb_active_notification_title" msgid="6729044778949189918">"USB nosozlikni tuzatish ulandi"</string> + <string name="adb_active_notification_title" msgid="6729044778949189918">"USB orqali nosozlikni tuzatish"</string> <string name="adb_active_notification_message" msgid="1016654627626476142">"USB orqali sozlashni o‘chirib qo‘yish uchun bosing."</string> <string name="select_input_method" msgid="8547250819326693584">"Klaviaturani o‘zgartirish"</string> <string name="configure_input_methods" msgid="4769971288371946846">"Klaviaturani tanlash"</string> @@ -1078,14 +1079,14 @@ <string name="ext_media_init_action" msgid="8317198948634872507">"Sozlash"</string> <string name="ext_media_unmount_action" msgid="1121883233103278199">"Chiqarish"</string> <string name="ext_media_browse_action" msgid="8322172381028546087">"O‘rganish"</string> - <string name="ext_media_missing_title" msgid="620980315821543904">"<xliff:g id="NAME">%s</xliff:g> qurilmasi o‘rnatilmagan"</string> - <string name="ext_media_missing_message" msgid="5761133583368750174">"Ushbu qurilmani qayta kiriting"</string> - <string name="ext_media_move_specific_title" msgid="1471100343872375842">"<xliff:g id="NAME">%s</xliff:g> ilovasi ko‘chirilmoqda"</string> + <string name="ext_media_missing_title" msgid="620980315821543904">"<xliff:g id="NAME">%s</xliff:g> topilmadi"</string> + <string name="ext_media_missing_message" msgid="5761133583368750174">"Qurilmani qaytadan joylang"</string> + <string name="ext_media_move_specific_title" msgid="1471100343872375842">"<xliff:g id="NAME">%s</xliff:g> ko‘chirib o‘tkazilmoqda"</string> <string name="ext_media_move_title" msgid="1022809140035962662">"Ma’lumotlar ko‘chirilmoqda"</string> - <string name="ext_media_move_success_title" msgid="8575300932957954671">"Ko‘chirish tugadi"</string> - <string name="ext_media_move_success_message" msgid="4199002148206265426">"Ma’lumotlar <xliff:g id="NAME">%s</xliff:g> xotirasiga ko‘chirildi"</string> + <string name="ext_media_move_success_title" msgid="8575300932957954671">"Ko‘chirib o‘tkazish tugadi"</string> + <string name="ext_media_move_success_message" msgid="4199002148206265426">"Ma’lumotlar <xliff:g id="NAME">%s</xliff:g> xotirasiga ko‘chirib o‘tkazildi"</string> <string name="ext_media_move_failure_title" msgid="7613189040358789908">"Ma’lumotlar ko‘chirilmadi"</string> - <string name="ext_media_move_failure_message" msgid="1978096440816403360">"Ma’lumotlar asl joyida qoldi"</string> + <string name="ext_media_move_failure_message" msgid="1978096440816403360">"Ma’lumotlar o‘z joyida qoldi"</string> <string name="activity_list_empty" msgid="1675388330786841066">"Hech qanday mos faoliyat topilmadi."</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"Media chiqishni yo‘naltirish"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"Ilovaga media chiqish ovozini boshqa tashqi qurilmalarga yo‘naltirish uchun ruxsat beradi."</string> @@ -1113,8 +1114,8 @@ <string name="forward_intent_to_work" msgid="621480743856004612">"Siz ushbu ilovadan ishchi profilingizda foydalanmoqdasiz"</string> <string name="input_method_binding_label" msgid="1283557179944992649">"Kiritish uslubi"</string> <string name="sync_binding_label" msgid="3687969138375092423">"Sinx"</string> - <string name="accessibility_binding_label" msgid="4148120742096474641">"Qulaylik"</string> - <string name="wallpaper_binding_label" msgid="1240087844304687662">"Orqa fon"</string> + <string name="accessibility_binding_label" msgid="4148120742096474641">"Maxsus imkoniyatlar"</string> + <string name="wallpaper_binding_label" msgid="1240087844304687662">"Orqa fon rasmi"</string> <string name="chooser_wallpaper" msgid="7873476199295190279">"Fon rasmini o‘zgartirish"</string> <string name="notification_listener_binding_label" msgid="2014162835481906429">"Bildirishnoma tinglovchisi"</string> <string name="condition_provider_service_binding_label" msgid="1321343352906524564">"Shartlarni taqdim etuvchi"</string> @@ -1122,9 +1123,9 @@ <string name="vpn_title_long" msgid="6400714798049252294">"VPN <xliff:g id="APP">%s</xliff:g> tomonidan faollashtirilgan"</string> <string name="vpn_text" msgid="3011306607126450322">"Tarmoqni boshqarish uchun bosing."</string> <string name="vpn_text_long" msgid="6407351006249174473">"<xliff:g id="SESSION">%s</xliff:g>ga ulandi. Tarmoqni boshqarish uchun bosing."</string> - <string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Har doim faol VPN ulanmoqda…"</string> - <string name="vpn_lockdown_connected" msgid="8202679674819213931">"Har doim faol VPN ulangan"</string> - <string name="vpn_lockdown_error" msgid="6009249814034708175">"Har doim faol VPN’dagi xato"</string> + <string name="vpn_lockdown_connecting" msgid="6443438964440960745">"Doimiy VPN ulanmoqda…"</string> + <string name="vpn_lockdown_connected" msgid="8202679674819213931">"Doimiy VPN ulandi"</string> + <string name="vpn_lockdown_error" msgid="6009249814034708175">"Xato"</string> <string name="vpn_lockdown_config" msgid="6415899150671537970">"Sozlash uchun bosing"</string> <string name="upload_file" msgid="2897957172366730416">"Faylni tanlash"</string> <string name="no_file_chosen" msgid="6363648562170759465">"Hech qanday fayl tanlanmadi"</string> @@ -1214,8 +1215,8 @@ <string name="action_bar_home_description_format" msgid="7965984360903693903">"%1$s, %2$s"</string> <string name="action_bar_home_subtitle_description_format" msgid="6985546530471780727">"%1$s, %2$s, %3$s"</string> <string name="storage_internal" msgid="4891916833657929263">"Ichki xotira"</string> - <string name="storage_sd_card" msgid="3282948861378286745">"SD xotira kartasi"</string> - <string name="storage_sd_card_label" msgid="6347111320774379257">"<xliff:g id="MANUFACTURER">%s</xliff:g> SD kartasi"</string> + <string name="storage_sd_card" msgid="3282948861378286745">"SD-karta"</string> + <string name="storage_sd_card_label" msgid="6347111320774379257">"<xliff:g id="MANUFACTURER">%s</xliff:g> SD-kartasi"</string> <string name="storage_usb_drive" msgid="6261899683292244209">"USB xotira"</string> <string name="storage_usb_drive_label" msgid="4501418548927759953">"<xliff:g id="MANUFACTURER">%s</xliff:g> USB xotira qurilmasi"</string> <string name="storage_usb" msgid="3017954059538517278">"USB xotira"</string> @@ -1266,7 +1267,7 @@ <string name="default_media_route_name_hdmi" msgid="2450970399023478055">"HDMI"</string> <string name="default_audio_route_category_name" msgid="3722811174003886946">"Tizim"</string> <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"Bluetooth audio"</string> - <string name="wireless_display_route_description" msgid="9070346425023979651">"Simsiz ekran"</string> + <string name="wireless_display_route_description" msgid="9070346425023979651">"Simsiz monitor"</string> <string name="media_route_button_content_description" msgid="591703006349356016">"Translatsiya qilish"</string> <string name="media_route_chooser_title" msgid="1751618554539087622">"Qurilmaga ulanish"</string> <string name="media_route_chooser_title_for_remote_display" msgid="3395541745872017583">"Ekrandagi tasvirni qurilmaga uzatish"</string> @@ -1284,10 +1285,10 @@ <string name="display_manager_overlay_display_title" msgid="652124517672257172">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>x<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string> <string name="display_manager_overlay_display_secure_suffix" msgid="6022119702628572080">", xavfsiz"</string> <string name="kg_forgot_pattern_button_text" msgid="8852021467868220608">"Chizmali parol unutilgan"</string> - <string name="kg_wrong_pattern" msgid="1850806070801358830">"Xato chizma paroli"</string> - <string name="kg_wrong_password" msgid="2333281762128113157">"Xato parol"</string> - <string name="kg_wrong_pin" msgid="1131306510833563801">"Xato PIN kod"</string> - <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"<xliff:g id="NUMBER">%1$d</xliff:g> soniyadan so‘ng qaytadan urinib ko‘ring."</string> + <string name="kg_wrong_pattern" msgid="1850806070801358830">"Chizmali kalit noto‘g‘ri"</string> + <string name="kg_wrong_password" msgid="2333281762128113157">"Parol noto‘g‘ri"</string> + <string name="kg_wrong_pin" msgid="1131306510833563801">"PIN-kod noto‘g‘ri"</string> + <string name="kg_too_many_failed_attempts_countdown" msgid="6358110221603297548">"<xliff:g id="NUMBER">%1$d</xliff:g> soniyadan so‘ng qayta urinib ko‘ring."</string> <string name="kg_pattern_instructions" msgid="398978611683075868">"Chizmali parolni chizing"</string> <string name="kg_sim_pin_instructions" msgid="2319508550934557331">"SIM karta PIN kodini kiriting"</string> <string name="kg_pin_instructions" msgid="2377242233495111557">"PIN kodni tering"</string> @@ -1309,18 +1310,18 @@ <string name="kg_login_invalid_input" msgid="5754664119319872197">"Foydalanuvchi nomi yoki parol xato."</string> <string name="kg_login_account_recovery_hint" msgid="5690709132841752974">"Foydalanuvchi nomingiz yoki parolingizni unutdingizmi?\n "<b>"google.com/accounts/recovery"</b>"ga tashrif buyuring."</string> <string name="kg_login_checking_password" msgid="1052685197710252395">"Hisob tekshirilmoqda…"</string> - <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"PIN kodingizni <xliff:g id="NUMBER_0">%d</xliff:g> marta xato kiritdingiz. \n\n <xliff:g id="NUMBER_1">%d</xliff:g> soniyadan so‘ng qaytadan urinib ko‘ring."</string> - <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Parolingizni <xliff:g id="NUMBER_0">%d</xliff:g> marta noto‘g‘ri kiritdingiz. \n\n <xliff:g id="NUMBER_1">%d</xliff:g> soniyadan so‘ng qaytadan urinib ko‘ring."</string> - <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Chizmali parolingizni <xliff:g id="NUMBER_0">%d</xliff:g> marta xato chizdingiz. \n\n <xliff:g id="NUMBER_1">%d</xliff:g> soniyadan so‘ng qaytadan urinib ko‘ring."</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="8276745642049502550">"Siz PIN-kodni <xliff:g id="NUMBER_0">%d</xliff:g> marta noto‘g‘ri kiritdingiz. \n\n<xliff:g id="NUMBER_1">%d</xliff:g> soniyadan so‘ng qayta urinib ko‘ring."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="7813713389422226531">"Siz parolni <xliff:g id="NUMBER_0">%d</xliff:g> marta noto‘g‘ri kiritdingiz. \n\n<xliff:g id="NUMBER_1">%d</xliff:g> soniyadan so‘ng qayta urinib ko‘ring."</string> + <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="74089475965050805">"Siz chizmali kalitni <xliff:g id="NUMBER_0">%d</xliff:g> marta noto‘g‘ri kiritdingiz. \n\n<xliff:g id="NUMBER_1">%d</xliff:g> soniyadan so‘ng qayta urinib ko‘ring."</string> <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="1575557200627128949">"Siz planshet qulfini ochish uchun <xliff:g id="NUMBER_0">%d</xliff:g> marta muvaffaqiyatsiz urindingiz. <xliff:g id="NUMBER_1">%d</xliff:g> marta muvaffaqiyatsiz urinishlardan so‘ng planshetning zavod sozlamalari tiklanadi va barcha foydalanuvchi ma’lumotlari o‘chiriladi."</string> <string name="kg_failed_attempts_almost_at_wipe" product="tv" msgid="5621231220154419413">"Siz televizorni qulfdan chiqarish parolini <xliff:g id="NUMBER_0">%d</xliff:g> marta noto‘g‘ri kiritdingiz. Agar uni yana <xliff:g id="NUMBER_1">%d</xliff:g> marta noto‘g‘ri kiritsangiz, televizoringizda zavod sozlamalari qayta tiklanadi hamda undagi barcha ma’lumotlaringiz o‘chib ketadi."</string> <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="4051015943038199910">"Siz telefon qulfini ochish uchun <xliff:g id="NUMBER_0">%d</xliff:g> marta muvaffaqiyatsiz urindingiz. <xliff:g id="NUMBER_1">%d</xliff:g> marta muvaffaqiyatsiz urinishlardan so‘ng telefonning zavod sozlamalari tiklanadi va barcha foydalanuvchi ma’lumotlari o‘chiriladi."</string> <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2072996269148483637">"Planshet qulfini ochish uchun <xliff:g id="NUMBER">%d</xliff:g> marta muvaffaqiyatsiz urinib ko‘rdingiz. Planshetning hozir zavod sozlamari tiklanadi."</string> <string name="kg_failed_attempts_now_wiping" product="tv" msgid="4987878286750741463">"Siz televizorni qulfdan chiqarish parolini <xliff:g id="NUMBER">%d</xliff:g> marta noto‘g‘ri kiritdingiz. Endi, televizoringizda zavod sozlamalari qayta tiklanadi."</string> <string name="kg_failed_attempts_now_wiping" product="default" msgid="4817627474419471518">"Telefon qulfini ochish uchun <xliff:g id="NUMBER">%d</xliff:g> marta muvaffaqiyatsiz urinib ko‘rdingiz. Telefonning hozir zavod sozlamari tiklanadi."</string> - <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Chizmali parolni <xliff:g id="NUMBER_0">%d</xliff:g> marta noto‘g‘ri chizdingiz. <xliff:g id="NUMBER_1">%d</xliff:g> marta muvaffaqiyatsiz urinishdan so‘ng, sizdan e-pochtangizdan foydalanib, planshet qulfini ochishingiz so‘raladi.\n\n <xliff:g id="NUMBER_2">%d</xliff:g> soniyadan so‘ng yana urinib ko‘ring."</string> - <string name="kg_failed_attempts_almost_at_login" product="tv" msgid="4224651132862313471">"Siz chizmali parolni <xliff:g id="NUMBER_0">%d</xliff:g> marta noto‘g‘ri kiritdingiz. Agar uni yana <xliff:g id="NUMBER_1">%d</xliff:g> marta noto‘g‘ri kiritsangiz, televizoringizni qulfdan chiqarish uchun sizda e-pochta hisobingizga kirish talab qilinadi.\n\n <xliff:g id="NUMBER_2">%d</xliff:g> soniyadan so‘ng qaytadan urining."</string> - <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Chizmali parolni <xliff:g id="NUMBER_0">%d</xliff:g> marta noto‘g‘ri chizdingiz. <xliff:g id="NUMBER_1">%d</xliff:g> marta muvaffaqiyatsiz urinishdan so‘ng, sizdan e-pochtangizdan foydalanib, telefon qulfini ochishingiz so‘raladi.\n\n <xliff:g id="NUMBER_2">%d</xliff:g> soniyadan so‘ng yana urinib ko‘ring."</string> + <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="3253575572118914370">"Siz chizmali kalitni <xliff:g id="NUMBER_0">%d</xliff:g> marta noto‘g‘ri kiritdingiz. <xliff:g id="NUMBER_1">%d</xliff:g> marta muvaffaqiyatsiz urinishdan so‘ng, sizdan e-pochtangizdan foydalanib, planshet qulfini ochishingiz so‘raladi.\n\n <xliff:g id="NUMBER_2">%d</xliff:g> soniyadan so‘ng yana urinib ko‘ring."</string> + <string name="kg_failed_attempts_almost_at_login" product="tv" msgid="4224651132862313471">"Siz chizmali kalitni <xliff:g id="NUMBER_0">%d</xliff:g> marta noto‘g‘ri kiritdingiz. Agar uni yana <xliff:g id="NUMBER_1">%d</xliff:g> marta noto‘g‘ri kiritsangiz, televizoringizni qulfdan chiqarish uchun sizda e-pochta hisobingizga kirish talab qilinadi.\n\n <xliff:g id="NUMBER_2">%d</xliff:g> soniyadan so‘ng qaytadan urining."</string> + <string name="kg_failed_attempts_almost_at_login" product="default" msgid="1437638152015574839">"Siz chizmali kalitni <xliff:g id="NUMBER_0">%d</xliff:g> marta noto‘g‘ri chizdingiz. <xliff:g id="NUMBER_1">%d</xliff:g> marta muvaffaqiyatsiz urinishdan so‘ng, sizdan e-pochtangizdan foydalanib, telefon qulfini ochishingiz so‘raladi.\n\n <xliff:g id="NUMBER_2">%d</xliff:g> soniyadan so‘ng yana urinib ko‘ring."</string> <string name="kg_text_message_separator" product="default" msgid="4160700433287233771">" — "</string> <string name="kg_reordering_delete_drop_target_text" msgid="7899202978204438708">"O‘chirish"</string> <string name="safe_media_volume_warning" product="default" msgid="2276318909314492312">"Ovoz balandligi tavsiya etilgan darajadan ham yuqori ko‘tarilsinmi?\n\nUzoq vaqt davomida baland ovozda tinglash eshitish qobiliyatingizga salbiy ta’sir ko‘rsatishi mumkin."</string> @@ -1430,7 +1431,7 @@ <string name="restr_pin_enter_new_pin" msgid="5959606691619959184">"Yangi PIN kod"</string> <string name="restr_pin_confirm_pin" msgid="8501523829633146239">"Yangi PIN kodni tasdiqlash"</string> <string name="restr_pin_create_pin" msgid="8017600000263450337">"Cheklovlarni o‘zgartirish uchun PIN kod yaratish"</string> - <string name="restr_pin_error_doesnt_match" msgid="2224214190906994548">"PIN kodlar bir xil emas. Qaytadan urinib ko‘ring."</string> + <string name="restr_pin_error_doesnt_match" msgid="2224214190906994548">"PIN kodlar bir xil emas. Qayta urinib ko‘ring."</string> <string name="restr_pin_error_too_short" msgid="8173982756265777792">"PIN kod juda qisqa. Kamida 4 raqamli bo‘lishi kerak."</string> <plurals name="restr_pin_countdown" formatted="false" msgid="9061246974881224688"> <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> soniyadan so‘ng qayta urinib ko‘ring</item> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Bo‘shatishdan oldin chizmali parol so‘ralsin"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Bo‘shatishdan oldin parol so‘ralsin"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Administratoringiz tomonidan o‘rnatilgan"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Administratoringiz tomonidan yangilandi"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Administratoringiz tomonidan o‘chirilgan"</string> <string name="battery_saver_description" msgid="1960431123816253034">"Batareya quvvatini uzoqroq vaqtga yetkazish uchun quvvat tejash funksiyasi qurilmangiz unumdorligini kamaytiradi hamda uning tebranishi va orqa fonda internetdan foydalanishini cheklaydi. Sinxronlanishni talab qiladigan e-pochta, xabar almashinuv va boshqa ilovalar esa qachonki ularni ishga tushirganingizda yangilanadi.\n\nQurilma quvvat olayotganda quvvat tejash funksiyasi avtomatik tarzda o‘chadi."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Yig‘ish"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Bezovta qilinmasin"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Nofaol vaqt"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Ish kunlari kechasi"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Dam olish kunlari"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"“<xliff:g id="THIRD_PARTY">%1$s</xliff:g>” tomonidan ovozsiz qilingan"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"Qurilmangiz bilan bog‘liq ichki muammo mavjud. U zavod sozlamalari tiklanmaguncha barqaror ishlamasligi mumkin."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"Qurilmangiz bilan bog‘liq ichki muammo mavjud. Tafsilotlar uchun qurilmangiz ishlab chiqaruvchisiga murojaat qiling."</string> diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml index 3aae936..7450aee 100644 --- a/core/res/res/values-vi/strings.xml +++ b/core/res/res/values-vi/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Tắt"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Ưu tiên Wi-Fi"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Ưu tiên mạng di động"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"Hỏi hình mở khóa trước khi bỏ ghim"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"Hỏi mật khẩu trước khi bỏ ghim"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"Được cài đặt bởi quản trị viên của bạn"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"Được cập nhật bởi quản trị viên của bạn"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"Đã bị xóa bởi quản trị viên của bạn"</string> <string name="battery_saver_description" msgid="1960431123816253034">"Để giúp tăng tuổi thọ pin, trình tiết kiệm pin sẽ giảm hiệu suất thiết bị của bạn và hạn chế rung, dịch vụ vị trí và hầu hết dữ liệu nền. Email, nhắn tin và các ứng dụng khác dựa trên đồng bộ hóa có thể không cập nhật nếu bạn không mở chúng.\n\nTrình tiết kiệm pin tự động tắt khi thiết bị của bạn đang sạc."</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Thu gọn"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Không làm phiền"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Thời gian ngừng hoạt động"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Đêm trong tuần"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Ngày cuối tuần"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"Do <xliff:g id="THIRD_PARTY">%1$s</xliff:g> tắt tiếng"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"Đã xảy ra sự cố nội bộ với thiết bị của bạn và thiết bị có thể sẽ không ổn định cho tới khi bạn thiết lập lại dữ liệu ban đầu."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"Đã xảy ra sự cố nội bộ với thiết bị. Hãy liên hệ với nhà sản xuất của bạn để biết chi tiết."</string> diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml index 14c58f6..41f7648 100644 --- a/core/res/res/values-zh-rCN/strings.xml +++ b/core/res/res/values-zh-rCN/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"关闭"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"首选 WLAN"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"首选移动网络"</string> @@ -1078,22 +1079,14 @@ <string name="ext_media_init_action" msgid="8317198948634872507">"设置"</string> <string name="ext_media_unmount_action" msgid="1121883233103278199">"弹出"</string> <string name="ext_media_browse_action" msgid="8322172381028546087">"浏览"</string> - <!-- no translation found for ext_media_missing_title (620980315821543904) --> - <skip /> - <!-- no translation found for ext_media_missing_message (5761133583368750174) --> - <skip /> - <!-- no translation found for ext_media_move_specific_title (1471100343872375842) --> - <skip /> - <!-- no translation found for ext_media_move_title (1022809140035962662) --> - <skip /> - <!-- no translation found for ext_media_move_success_title (8575300932957954671) --> - <skip /> - <!-- no translation found for ext_media_move_success_message (4199002148206265426) --> - <skip /> - <!-- no translation found for ext_media_move_failure_title (7613189040358789908) --> - <skip /> - <!-- no translation found for ext_media_move_failure_message (1978096440816403360) --> - <skip /> + <string name="ext_media_missing_title" msgid="620980315821543904">"缺少<xliff:g id="NAME">%s</xliff:g>"</string> + <string name="ext_media_missing_message" msgid="5761133583368750174">"重新插入此设备"</string> + <string name="ext_media_move_specific_title" msgid="1471100343872375842">"正在移动<xliff:g id="NAME">%s</xliff:g>"</string> + <string name="ext_media_move_title" msgid="1022809140035962662">"正在移动数据"</string> + <string name="ext_media_move_success_title" msgid="8575300932957954671">"数据移动完成"</string> + <string name="ext_media_move_success_message" msgid="4199002148206265426">"数据已移到<xliff:g id="NAME">%s</xliff:g>"</string> + <string name="ext_media_move_failure_title" msgid="7613189040358789908">"无法移动数据"</string> + <string name="ext_media_move_failure_message" msgid="1978096440816403360">"数据仍保存在原来的位置"</string> <string name="activity_list_empty" msgid="1675388330786841066">"未找到匹配的活动。"</string> <string name="permlab_route_media_output" msgid="1642024455750414694">"更改媒体输出线路"</string> <string name="permdesc_route_media_output" msgid="4932818749547244346">"允许该应用将媒体输出线路更改到其他外部设备。"</string> @@ -1466,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"取消时要求绘制解锁图案"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"取消时要求输入密码"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"已由管理员安装"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"由您单位的管理员更新"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"已被管理员删除"</string> <string name="battery_saver_description" msgid="1960431123816253034">"为了延长电池的续航时间,节电助手会降低设备的性能,并限制振动、位置信息服务和大部分后台流量。对于电子邮件、聊天工具等依赖于同步功能的应用,可能要打开这类应用时才能收到新信息。\n\n节电助手会在设备充电时自动关闭。"</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1492,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"收起"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"勿扰"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"休息时间"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"工作日夜间"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"周末"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"已被<xliff:g id="THIRD_PARTY">%1$s</xliff:g>设为静音"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"您的设备内部出现了问题。如果不将设备恢复出厂设置,设备运行可能会不稳定。"</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"您的设备内部出现了问题。请联系您的设备制造商了解详情。"</string> diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml index 1635e27..bf7d8ca 100644 --- a/core/res/res/values-zh-rHK/strings.xml +++ b/core/res/res/values-zh-rHK/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"關閉"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"首選 Wi-Fi"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"首選流動數據"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"取消固定時必須畫出解鎖圖案"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"取消固定時必須輸入密碼"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"已由管理員安裝"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"已由您的管理員更新"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"已由管理員刪除"</string> <string name="battery_saver_description" msgid="1960431123816253034">"節約電池用量模式有助於延長電池壽命,但這會降低裝置效能,並限制震動、定位服務及大部分背景數據傳輸。除非您啟用,否則電郵、短訊及其他需要使用同步功能的應用程式均不會更新。\n\n當裝置充電時,節約電池用量模式會自動關閉。"</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"收合"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"請勿干擾"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"休息時間"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"星期一至星期五晚"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"週末"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"靜音設定者:<xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"您裝置的系統發生問題,回復原廠設定後即可解決該問題。"</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"您裝置的系統發生問題,請聯絡您的製造商瞭解詳情。"</string> diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml index 61d319b..9177482 100644 --- a/core/res/res/values-zh-rTW/strings.xml +++ b/core/res/res/values-zh-rTW/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"關閉"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Wi-Fi 優先"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"行動通訊優先"</string> @@ -1458,8 +1459,7 @@ <string name="lock_to_app_unlock_pattern" msgid="4182192144797225137">"取消固定時必須畫出解鎖圖形"</string> <string name="lock_to_app_unlock_password" msgid="6380979775916974414">"取消固定時必須輸入密碼"</string> <string name="package_installed_device_owner" msgid="8420696545959087545">"已由管理員安裝"</string> - <!-- no translation found for package_updated_device_owner (8856631322440187071) --> - <skip /> + <string name="package_updated_device_owner" msgid="8856631322440187071">"由您的管理員更新"</string> <string name="package_deleted_device_owner" msgid="7650577387493101353">"已遭管理員刪除"</string> <string name="battery_saver_description" msgid="1960431123816253034">"節約耗電量模式會透過降低裝置效能、震動限制、定位服務限制和大多數背景資料運作限制等方式,延長電池續航力。此外,如果未開啟電子郵件、簡訊和其他需要使用同步功能的應用程式,系統將不會自動更新這些應用程式。\n\n當您為裝置充電時,節約耗電量模式會自動關閉。"</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="4367877408072000848"> @@ -1484,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"收合"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"零打擾"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"停機"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"週一至週五夜間"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"週末"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"由 <xliff:g id="THIRD_PARTY">%1$s</xliff:g> 設為靜音"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"您的裝置發生內部問題,必須將裝置恢復原廠設定才能解除不穩定狀態。"</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"您的裝置發生內部問題,詳情請洽裝置製造商。"</string> diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml index d3f8482..822d842 100644 --- a/core/res/res/values-zu/strings.xml +++ b/core/res/res/values-zu/strings.xml @@ -129,6 +129,7 @@ <string-array name="wfcOperatorErrorNotificationMessages"> </string-array> <string name="wfcSpnFormat" msgid="8211621332478306568">"%s"</string> + <string name="wfcDataSpnFormat" msgid="1118052028767666883">"%s"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"Valiwe"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1994113411286935263">"Kuncanyelwa i-Wi-Fi"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="5920549484600758786">"Kuncanyelwa iselula"</string> @@ -1483,8 +1484,12 @@ <string name="toolbar_collapse_description" msgid="2821479483960330739">"Goqa"</string> <string name="zen_mode_feature_name" msgid="5254089399895895004">"Ungaphazamisi"</string> <string name="zen_mode_downtime_feature_name" msgid="2626974636779860146">"Isikhathi sokuphumula"</string> - <string name="zen_mode_default_weeknights_name" msgid="2069189413656431610">"Ubusuku beviki"</string> - <string name="zen_mode_default_weekends_name" msgid="2377398437072017011">"Izimpelasonto"</string> + <!-- no translation found for zen_mode_default_weeknights_name (3081318299464998143) --> + <skip /> + <!-- no translation found for zen_mode_default_weekends_name (2786495801019345244) --> + <skip /> + <!-- no translation found for zen_mode_default_events_name (8158334939013085363) --> + <skip /> <string name="muted_by" msgid="6147073845094180001">"Ithuliswe ngu-<xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string> <string name="system_error_wipe_data" msgid="6608165524785354962">"Kukhona inkinga yangaphakathi ngedivayisi yakho, futhi ingase ibe engazinzile kuze kube yilapho usetha kabusha yonke idatha."</string> <string name="system_error_manufacturer" msgid="8086872414744210668">"Kukhona inkinga yangaphakathi ngedivayisi yakho. Xhumana nomkhiqizi wakho ukuze uthole imininingwane."</string> diff --git a/core/res/res/values/colors.xml b/core/res/res/values/colors.xml index b9825c5..7f8c460 100644 --- a/core/res/res/values/colors.xml +++ b/core/res/res/values/colors.xml @@ -174,4 +174,6 @@ <color name="Pink_800">#ffad1457</color> <color name="Red_700">#ffc53929</color> <color name="Red_800">#ffb93221</color> + + <color name="chooser_service_row_background_color">#fff5f5f5</color> </resources> diff --git a/core/res/res/values/dimens.xml b/core/res/res/values/dimens.xml index bbba712..84747f1 100644 --- a/core/res/res/values/dimens.xml +++ b/core/res/res/values/dimens.xml @@ -391,7 +391,7 @@ <dimen name="floating_toolbar_overflow_side_padding">18dp</dimen> <dimen name="floating_toolbar_text_size">14sp</dimen> <dimen name="floating_toolbar_menu_button_minimum_width">48dp</dimen> - <dimen name="floating_toolbar_default_width">264dp</dimen> + <dimen name="floating_toolbar_preferred_width">328dp</dimen> <dimen name="floating_toolbar_minimum_overflow_height">144dp</dimen> <dimen name="floating_toolbar_horizontal_margin">16dp</dimen> <dimen name="floating_toolbar_vertical_margin">8dp</dimen> diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml index a3a6105..5b564e1 100644 --- a/core/res/res/values/strings.xml +++ b/core/res/res/values/strings.xml @@ -533,7 +533,7 @@ <!-- 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_contacts">Contacts</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_contacts">access and modify your contacts</string> + <string name="permgroupdesc_contacts">access your contacts</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">Location</string> @@ -548,12 +548,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_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">access and modify your calendar</string> + <string name="permgroupdesc_calendar">access your calendar</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_sms">SMS</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_sms">access and modify SMS</string> + <string name="permgroupdesc_sms">view and manage SMS messages</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">User Dictionary</string> @@ -568,22 +568,22 @@ <!-- Title of a category of application permissioncds, 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">use device microphone</string> + <string name="permgroupdesc_microphone">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">use device camera</string> + <string name="permgroupdesc_camera">take pictures and record video</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_phone">Phone</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_phone">use device telephony</string> + <string name="permgroupdesc_phone">make and manage phone calls</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_sensors">Sensors</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_sensors">access sensors and wearables</string> + <string name="permgroupdesc_sensors">access data from sensors and wearable devices</string> <!-- Title for the capability of an accessibility service to retrieve window content. --> <string name="capability_title_canRetrieveWindowContent">Retrieve window content</string> diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 801a98a..e54a0b2 100755 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -2241,7 +2241,7 @@ <java-symbol type="dimen" name="floating_toolbar_overflow_side_padding" /> <java-symbol type="dimen" name="floating_toolbar_text_size" /> <java-symbol type="dimen" name="floating_toolbar_menu_button_minimum_width" /> - <java-symbol type="dimen" name="floating_toolbar_default_width" /> + <java-symbol type="dimen" name="floating_toolbar_preferred_width" /> <java-symbol type="dimen" name="floating_toolbar_minimum_overflow_height" /> <java-symbol type="dimen" name="floating_toolbar_horizontal_margin" /> <java-symbol type="dimen" name="floating_toolbar_vertical_margin" /> @@ -2257,4 +2257,8 @@ <java-symbol type="id" name="day_picker_view_pager" /> <java-symbol type="layout" name="day_picker_content_material" /> <java-symbol type="drawable" name="scroll_indicator_material" /> + + <java-symbol type="layout" name="chooser_row" /> + <java-symbol type="color" name="chooser_service_row_background_color" /> + <java-symbol type="id" name="target_badge" /> </resources> diff --git a/graphics/java/android/graphics/Bitmap.java b/graphics/java/android/graphics/Bitmap.java index bd52848..2d8b0b2 100644 --- a/graphics/java/android/graphics/Bitmap.java +++ b/graphics/java/android/graphics/Bitmap.java @@ -1160,6 +1160,7 @@ public final class Bitmap implements Parcelable { * @return number of bytes between rows of the native bitmap pixels. */ public final int getRowBytes() { + if (mRecycled) return 0; return nativeRowBytes(mFinalizer.mNativeBitmap); } @@ -1557,6 +1558,10 @@ public final class Bitmap implements Parcelable { * If other is null, return false. */ public boolean sameAs(Bitmap other) { + checkRecycled("Can't call sameAs on a recycled bitmap!"); + if (other.isRecycled()) { + throw new IllegalArgumentException("Can't compare to a recycled bitmap!"); + } return this == other || (other != null && nativeSameAs(mFinalizer.mNativeBitmap, other.mFinalizer.mNativeBitmap)); } @@ -1576,6 +1581,7 @@ public final class Bitmap implements Parcelable { // TODO: Consider having this start an async upload? // With inPurgeable no-op'd there's currently no use for this // method, but it could have interesting future uses. + checkRecycled("Can't prepareToDraw on a recycled bitmap!"); } /** @@ -1584,6 +1590,7 @@ public final class Bitmap implements Parcelable { * @hide * */ public final long refSkPixelRef() { + checkRecycled("Can't refSkPixelRef on a recycled bitmap!"); return nativeRefPixelRef(mNativePtr); } diff --git a/keystore/java/android/security/EcIesParameterSpec.java b/keystore/java/android/security/EcIesParameterSpec.java index a3e5aec..af93519 100644 --- a/keystore/java/android/security/EcIesParameterSpec.java +++ b/keystore/java/android/security/EcIesParameterSpec.java @@ -1,6 +1,8 @@ package android.security; import android.annotation.IntDef; +import android.annotation.NonNull; +import android.annotation.Nullable; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -50,7 +52,11 @@ import javax.crypto.Mac; public class EcIesParameterSpec implements AlgorithmParameterSpec { @Retention(RetentionPolicy.SOURCE) - @IntDef(value = {PointFormat.UNCOMPRESSED, PointFormat.COMPRESSED}) + @IntDef({ + PointFormat.UNSPECIFIED, + PointFormat.UNCOMPRESSED, + PointFormat.COMPRESSED, + }) public @interface PointFormatEnum {} /** @@ -127,6 +133,7 @@ public class EcIesParameterSpec implements AlgorithmParameterSpec { * Returns KEM KDF algorithm (e.g., {@code HKDFwithSHA256} or {@code KDF1withSHA1}) or * {@code null} if not specified. */ + @Nullable public String getKemKdfAlgorithm() { return mKemKdfAlgorithm; } @@ -138,6 +145,7 @@ public class EcIesParameterSpec implements AlgorithmParameterSpec { * @see Cipher#getInstance(String) * @see #getDemCipherKeySize() */ + @Nullable public String getDemCipherTransformation() { return mDemCipherTransformation; } @@ -158,6 +166,7 @@ public class EcIesParameterSpec implements AlgorithmParameterSpec { * @see Mac#getInstance(String) * @see #getDemMacKeySize() */ + @Nullable public String getDemMacAlgorithm() { return mDemMacAlgorithm; } @@ -194,7 +203,8 @@ public class EcIesParameterSpec implements AlgorithmParameterSpec { * Sets KEM KDF algorithm. For example, {@code HKDFwithSHA256}, {@code KDF2withSHA256}, or * {@code KDF1withSHA1}. */ - public Builder setKemKdfAlgorithm(String algorithm) { + @NonNull + public Builder setKemKdfAlgorithm(@Nullable String algorithm) { mKemKdfAlgorithm = algorithm; return this; } @@ -205,7 +215,8 @@ public class EcIesParameterSpec implements AlgorithmParameterSpec { * * @see Cipher#getInstance(String) */ - public Builder setDemCipherTransformation(String transformation) { + @NonNull + public Builder setDemCipherTransformation(@Nullable String transformation) { mDemCipherTransformation = transformation; return this; } @@ -217,6 +228,7 @@ public class EcIesParameterSpec implements AlgorithmParameterSpec { * * @see #setDemCipherTransformation(String) */ + @NonNull public Builder setDemCipherKeySize(int sizeBits) { mDemCipherKeySize = sizeBits; return this; @@ -227,7 +239,8 @@ public class EcIesParameterSpec implements AlgorithmParameterSpec { * * @see Mac#getInstance(String) */ - public Builder setDemMacAlgorithm(String algorithm) { + @NonNull + public Builder setDemMacAlgorithm(@Nullable String algorithm) { mDemMacAlgorithm = algorithm; return this; } @@ -239,6 +252,7 @@ public class EcIesParameterSpec implements AlgorithmParameterSpec { * * @see #setDemCipherKeySize(int) */ + @NonNull public Builder setDemMacKeySize(int sizeBits) { mDemMacKeySize = sizeBits; return this; @@ -247,6 +261,7 @@ public class EcIesParameterSpec implements AlgorithmParameterSpec { /** * Returns a new {@link EcIesParameterSpec} based on the current state of this builder. */ + @NonNull public EcIesParameterSpec build() { int demMacKeySize = (mDemMacKeySize != -1) ? mDemMacKeySize : mDemCipherKeySize; return new EcIesParameterSpec( diff --git a/keystore/java/android/security/KeyChain.java b/keystore/java/android/security/KeyChain.java index 8e27dc3..d3dbebf 100644 --- a/keystore/java/android/security/KeyChain.java +++ b/keystore/java/android/security/KeyChain.java @@ -15,6 +15,8 @@ */ package android.security; +import android.annotation.NonNull; +import android.annotation.Nullable; import android.app.Activity; import android.app.PendingIntent; import android.content.ComponentName; @@ -217,6 +219,7 @@ public final class KeyChain { * successfully installed, otherwise {@link * Activity#RESULT_CANCELED} will be returned. */ + @NonNull public static Intent createInstallIntent() { Intent intent = new Intent(ACTION_INSTALL); intent.setClassName(CERT_INSTALLER_PACKAGE, @@ -261,9 +264,10 @@ public final class KeyChain { * @param alias The alias to preselect if available, or null if * unavailable. */ - public static void choosePrivateKeyAlias(Activity activity, KeyChainAliasCallback response, + public static void choosePrivateKeyAlias(@NonNull Activity activity, + @NonNull KeyChainAliasCallback response, @KeyStoreKeyProperties.AlgorithmEnum String[] keyTypes, Principal[] issuers, - String host, int port, String alias) { + @Nullable String host, int port, @Nullable String alias) { choosePrivateKeyAlias(activity, response, keyTypes, issuers, host, port, null, alias); } @@ -306,9 +310,10 @@ public final class KeyChain { * @param alias The alias to preselect if available, or null if * unavailable. */ - public static void choosePrivateKeyAlias(Activity activity, KeyChainAliasCallback response, + public static void choosePrivateKeyAlias(@NonNull Activity activity, + @NonNull KeyChainAliasCallback response, @KeyStoreKeyProperties.AlgorithmEnum String[] keyTypes, Principal[] issuers, - String host, int port, String url, String alias) { + @Nullable String host, int port, @Nullable String url, @Nullable String alias) { /* * TODO currently keyTypes, issuers are unused. They are meant * to follow the semantics and purpose of X509KeyManager @@ -361,7 +366,8 @@ public final class KeyChain { * returned via {@link KeyChainAliasCallback#alias}. * @throws KeyChainException if the alias was valid but there was some problem accessing it. */ - public static PrivateKey getPrivateKey(Context context, String alias) + @Nullable + public static PrivateKey getPrivateKey(@NonNull Context context, @NonNull String alias) throws KeyChainException, InterruptedException { if (alias == null) { throw new NullPointerException("alias == null"); @@ -396,8 +402,9 @@ public final class KeyChain { * returned via {@link KeyChainAliasCallback#alias}. * @throws KeyChainException if the alias was valid but there was some problem accessing it. */ - public static X509Certificate[] getCertificateChain(Context context, String alias) - throws KeyChainException, InterruptedException { + @Nullable + public static X509Certificate[] getCertificateChain(@NonNull Context context, + @NonNull String alias) throws KeyChainException, InterruptedException { if (alias == null) { throw new NullPointerException("alias == null"); } @@ -432,7 +439,7 @@ public final class KeyChain { * "RSA"). */ public static boolean isKeyAlgorithmSupported( - @KeyStoreKeyProperties.AlgorithmEnum String algorithm) { + @NonNull @KeyStoreKeyProperties.AlgorithmEnum String algorithm) { final String algUpper = algorithm.toUpperCase(Locale.US); return KeyStoreKeyProperties.Algorithm.EC.equals(algUpper) || KeyStoreKeyProperties.Algorithm.RSA.equals(algUpper); @@ -446,7 +453,7 @@ public final class KeyChain { * that makes it non-exportable. */ public static boolean isBoundKeyAlgorithm( - @KeyStoreKeyProperties.AlgorithmEnum String algorithm) { + @NonNull @KeyStoreKeyProperties.AlgorithmEnum String algorithm) { if (!isKeyAlgorithmSupported(algorithm)) { return false; } @@ -455,7 +462,8 @@ public final class KeyChain { } /** @hide */ - public static X509Certificate toCertificate(byte[] bytes) { + @NonNull + public static X509Certificate toCertificate(@NonNull byte[] bytes) { if (bytes == null) { throw new IllegalArgumentException("bytes == null"); } @@ -496,14 +504,14 @@ public final class KeyChain { * * Caller should call unbindService on the result when finished. */ - public static KeyChainConnection bind(Context context) throws InterruptedException { + public static KeyChainConnection bind(@NonNull Context context) throws InterruptedException { return bindAsUser(context, Process.myUserHandle()); } /** * @hide */ - public static KeyChainConnection bindAsUser(Context context, UserHandle user) + public static KeyChainConnection bindAsUser(@NonNull Context context, UserHandle user) throws InterruptedException { if (context == null) { throw new NullPointerException("context == null"); @@ -537,7 +545,7 @@ public final class KeyChain { return new KeyChainConnection(context, keyChainServiceConnection, q.take()); } - private static void ensureNotOnMainThread(Context context) { + private static void ensureNotOnMainThread(@NonNull Context context) { Looper looper = Looper.myLooper(); if (looper != null && looper == context.getMainLooper()) { throw new IllegalStateException( diff --git a/keystore/java/android/security/KeyChainAliasCallback.java b/keystore/java/android/security/KeyChainAliasCallback.java index 2500863..8e41377 100644 --- a/keystore/java/android/security/KeyChainAliasCallback.java +++ b/keystore/java/android/security/KeyChainAliasCallback.java @@ -15,6 +15,8 @@ */ package android.security; +import android.annotation.Nullable; + /** * The KeyChainAliasCallback is the callback for {@link * KeyChain#choosePrivateKeyAlias}. @@ -25,5 +27,5 @@ public interface KeyChainAliasCallback { * Called with the alias of the certificate chosen by the user, or * null if no value was chosen. */ - public void alias(String alias); + public void alias(@Nullable String alias); } diff --git a/keystore/java/android/security/KeyGeneratorSpec.java b/keystore/java/android/security/KeyGeneratorSpec.java index 97e3a67..404f939 100644 --- a/keystore/java/android/security/KeyGeneratorSpec.java +++ b/keystore/java/android/security/KeyGeneratorSpec.java @@ -16,6 +16,9 @@ package android.security; +import android.annotation.IntRange; +import android.annotation.NonNull; +import android.annotation.Nullable; import android.app.KeyguardManager; import android.content.Context; import android.text.TextUtils; @@ -163,6 +166,7 @@ public class KeyGeneratorSpec implements AlgorithmParameterSpec { * * @return instant or {@code null} if not restricted. */ + @Nullable public Date getKeyValidityStart() { return mKeyValidityStart; } @@ -172,6 +176,7 @@ public class KeyGeneratorSpec implements AlgorithmParameterSpec { * * @return instant or {@code null} if not restricted. */ + @Nullable public Date getKeyValidityForConsumptionEnd() { return mKeyValidityForConsumptionEnd; } @@ -181,6 +186,7 @@ public class KeyGeneratorSpec implements AlgorithmParameterSpec { * * @return instant or {@code null} if not restricted. */ + @Nullable public Date getKeyValidityForOriginationEnd() { return mKeyValidityForOriginationEnd; } @@ -195,6 +201,7 @@ public class KeyGeneratorSpec implements AlgorithmParameterSpec { /** * Gets the set of padding schemes with which the key can be used when encrypting/decrypting. */ + @NonNull public @KeyStoreKeyProperties.EncryptionPaddingEnum String[] getEncryptionPaddings() { return ArrayUtils.cloneIfNotEmpty(mEncryptionPaddings); } @@ -202,6 +209,7 @@ public class KeyGeneratorSpec implements AlgorithmParameterSpec { /** * Gets the set of block modes with which the key can be used. */ + @NonNull public @KeyStoreKeyProperties.BlockModeEnum String[] getBlockModes() { return ArrayUtils.cloneIfNotEmpty(mBlockModes); } @@ -269,7 +277,7 @@ public class KeyGeneratorSpec implements AlgorithmParameterSpec { * {@code context} passed in may be used to pop up some UI to ask the user to unlock or * initialize the Android KeyStore facility. */ - public Builder(Context context) { + public Builder(@NonNull Context context) { if (context == null) { throw new NullPointerException("context == null"); } @@ -282,7 +290,8 @@ public class KeyGeneratorSpec implements AlgorithmParameterSpec { * * <p>The alias must be provided. There is no default. */ - public Builder setAlias(String alias) { + @NonNull + public Builder setAlias(@NonNull String alias) { if (alias == null) { throw new NullPointerException("alias == null"); } @@ -296,6 +305,7 @@ public class KeyGeneratorSpec implements AlgorithmParameterSpec { * <p>By default, the key size will be determines based on the key algorithm. For example, * for {@code HmacSHA256}, the key size will default to {@code 256}. */ + @NonNull public Builder setKeySize(int keySize) { mKeySize = keySize; return this; @@ -313,6 +323,7 @@ public class KeyGeneratorSpec implements AlgorithmParameterSpec { * * @see KeyguardManager#isDeviceSecure() */ + @NonNull public Builder setEncryptionRequired() { mFlags |= KeyStore.FLAG_ENCRYPTED; return this; @@ -325,6 +336,7 @@ public class KeyGeneratorSpec implements AlgorithmParameterSpec { * * @see #setKeyValidityEnd(Date) */ + @NonNull public Builder setKeyValidityStart(Date startDate) { mKeyValidityStart = startDate; return this; @@ -339,6 +351,7 @@ public class KeyGeneratorSpec implements AlgorithmParameterSpec { * @see #setKeyValidityForConsumptionEnd(Date) * @see #setKeyValidityForOriginationEnd(Date) */ + @NonNull public Builder setKeyValidityEnd(Date endDate) { setKeyValidityForOriginationEnd(endDate); setKeyValidityForConsumptionEnd(endDate); @@ -352,6 +365,7 @@ public class KeyGeneratorSpec implements AlgorithmParameterSpec { * * @see #setKeyValidityForConsumptionEnd(Date) */ + @NonNull public Builder setKeyValidityForOriginationEnd(Date endDate) { mKeyValidityForOriginationEnd = endDate; return this; @@ -365,6 +379,7 @@ public class KeyGeneratorSpec implements AlgorithmParameterSpec { * * @see #setKeyValidityForOriginationEnd(Date) */ + @NonNull public Builder setKeyValidityForConsumptionEnd(Date endDate) { mKeyValidityForConsumptionEnd = endDate; return this; @@ -375,6 +390,7 @@ public class KeyGeneratorSpec implements AlgorithmParameterSpec { * * <p>This must be specified for all keys. There is no default. */ + @NonNull public Builder setPurposes(@KeyStoreKeyProperties.PurposeEnum int purposes) { mPurposes = purposes; return this; @@ -387,6 +403,7 @@ public class KeyGeneratorSpec implements AlgorithmParameterSpec { * * <p>This must be specified for keys which are used for encryption/decryption. */ + @NonNull public Builder setEncryptionPaddings( @KeyStoreKeyProperties.EncryptionPaddingEnum String... paddings) { mEncryptionPaddings = ArrayUtils.cloneIfNotEmpty(paddings); @@ -399,6 +416,7 @@ public class KeyGeneratorSpec implements AlgorithmParameterSpec { * * <p>This must be specified for encryption/decryption keys. */ + @NonNull public Builder setBlockModes(@KeyStoreKeyProperties.BlockModeEnum String... blockModes) { mBlockModes = ArrayUtils.cloneIfNotEmpty(blockModes); return this; @@ -436,6 +454,7 @@ public class KeyGeneratorSpec implements AlgorithmParameterSpec { * ciphertext.</li> * </ul> */ + @NonNull public Builder setRandomizedEncryptionRequired(boolean required) { mRandomizedEncryptionRequired = required; return this; @@ -456,6 +475,7 @@ public class KeyGeneratorSpec implements AlgorithmParameterSpec { * * @see #setUserAuthenticationValidityDurationSeconds(int) */ + @NonNull public Builder setUserAuthenticationRequired(boolean required) { mUserAuthenticationRequired = required; return this; @@ -472,7 +492,9 @@ public class KeyGeneratorSpec implements AlgorithmParameterSpec { * * @see #setUserAuthenticationRequired(boolean) */ - public Builder setUserAuthenticationValidityDurationSeconds(int seconds) { + @NonNull + public Builder setUserAuthenticationValidityDurationSeconds( + @IntRange(from = -1) int seconds) { mUserAuthenticationValidityDurationSeconds = seconds; return this; } @@ -482,6 +504,7 @@ public class KeyGeneratorSpec implements AlgorithmParameterSpec { * * @throws IllegalArgumentException if a required field is missing or violates a constraint. */ + @NonNull public KeyGeneratorSpec build() { return new KeyGeneratorSpec(mContext, mKeystoreAlias, diff --git a/keystore/java/android/security/KeyPairGeneratorSpec.java b/keystore/java/android/security/KeyPairGeneratorSpec.java index 7fd5cb5..2086ccb 100644 --- a/keystore/java/android/security/KeyPairGeneratorSpec.java +++ b/keystore/java/android/security/KeyPairGeneratorSpec.java @@ -17,6 +17,9 @@ package android.security; import android.app.KeyguardManager; +import android.annotation.IntRange; +import android.annotation.NonNull; +import android.annotation.Nullable; import android.content.Context; import android.text.TextUtils; @@ -286,6 +289,7 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { /** * Returns the key type (e.g., "EC", "RSA") specified by this parameter. */ + @Nullable public @KeyStoreKeyProperties.AlgorithmEnum String getKeyType() { return mKeyType; } @@ -303,6 +307,7 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * Returns the {@link AlgorithmParameterSpec} that will be used for creation * of the key pair. */ + @NonNull public AlgorithmParameterSpec getAlgorithmParameterSpec() { return mSpec; } @@ -311,6 +316,7 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * Gets the subject distinguished name to be used on the X.509 certificate * that will be put in the {@link java.security.KeyStore}. */ + @NonNull public X500Principal getSubjectDN() { return mSubjectDN; } @@ -319,6 +325,7 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * Gets the serial number to be used on the X.509 certificate that will be * put in the {@link java.security.KeyStore}. */ + @NonNull public BigInteger getSerialNumber() { return mSerialNumber; } @@ -327,6 +334,7 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * Gets the start date to be used on the X.509 certificate that will be put * in the {@link java.security.KeyStore}. */ + @NonNull public Date getStartDate() { return mStartDate; } @@ -335,6 +343,7 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * Gets the end date to be used on the X.509 certificate that will be put in * the {@link java.security.KeyStore}. */ + @NonNull public Date getEndDate() { return mEndDate; } @@ -359,6 +368,7 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * * @return instant or {@code null} if not restricted. */ + @Nullable public Date getKeyValidityStart() { return mKeyValidityStart; } @@ -369,6 +379,7 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * * @return instant or {@code null} if not restricted. */ + @Nullable public Date getKeyValidityForConsumptionEnd() { return mKeyValidityForConsumptionEnd; } @@ -378,6 +389,7 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * * @return instant or {@code null} if not restricted. */ + @Nullable public Date getKeyValidityForOriginationEnd() { return mKeyValidityForOriginationEnd; } @@ -392,6 +404,7 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { /** * Gets the set of digest algorithms with which the key can be used. */ + @NonNull public @KeyStoreKeyProperties.DigestEnum String[] getDigests() { return ArrayUtils.cloneIfNotEmpty(mDigests); } @@ -399,6 +412,7 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { /** * Gets the set of padding schemes with which the key can be used when encrypting/decrypting. */ + @NonNull public @KeyStoreKeyProperties.EncryptionPaddingEnum String[] getEncryptionPaddings() { return ArrayUtils.cloneIfNotEmpty(mEncryptionPaddings); } @@ -406,6 +420,7 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { /** * Gets the set of padding schemes with which the key can be used when signing/verifying. */ + @NonNull public @KeyStoreKeyProperties.SignaturePaddingEnum String[] getSignaturePaddings() { return ArrayUtils.cloneIfNotEmpty(mSignaturePaddings); } @@ -413,6 +428,7 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { /** * Gets the set of block modes with which the key can be used. */ + @NonNull public @KeyStoreKeyProperties.BlockModeEnum String[] getBlockModes() { return ArrayUtils.cloneIfNotEmpty(mBlockModes); } @@ -528,7 +544,7 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * some UI to ask the user to unlock or initialize the Android KeyStore * facility. */ - public Builder(Context context) { + public Builder(@NonNull Context context) { if (context == null) { throw new NullPointerException("context == null"); } @@ -540,7 +556,8 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * {@link java.security.KeyStore} instance using the * {@code AndroidKeyStore} provider. */ - public Builder setAlias(String alias) { + @NonNull + public Builder setAlias(@NonNull String alias) { if (alias == null) { throw new NullPointerException("alias == null"); } @@ -551,7 +568,8 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { /** * Sets the key type (e.g., EC, RSA) of the keypair to be created. */ - public Builder setKeyType(@KeyStoreKeyProperties.AlgorithmEnum String keyType) + @NonNull + public Builder setKeyType(@NonNull @KeyStoreKeyProperties.AlgorithmEnum String keyType) throws NoSuchAlgorithmException { if (keyType == null) { throw new NullPointerException("keyType == null"); @@ -569,6 +587,7 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * key type of RSA this will set the modulus size and for a key type of * EC it will select a curve with a matching field size. */ + @NonNull public Builder setKeySize(int keySize) { if (keySize < 0) { throw new IllegalArgumentException("keySize < 0"); @@ -581,7 +600,7 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * Sets the algorithm-specific key generation parameters. For example, for RSA keys * this may be an instance of {@link java.security.spec.RSAKeyGenParameterSpec}. */ - public Builder setAlgorithmParameterSpec(AlgorithmParameterSpec spec) { + public Builder setAlgorithmParameterSpec(@NonNull AlgorithmParameterSpec spec) { if (spec == null) { throw new NullPointerException("spec == null"); } @@ -597,7 +616,8 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * {@link android.os.Build.VERSION_CODES#LOLLIPOP_MR1 LOLLIPOP_MR1} and older platforms. On * newer platforms the subject defaults to {@code CN=fake} if not specified. */ - public Builder setSubject(X500Principal subject) { + @NonNull + public Builder setSubject(@NonNull X500Principal subject) { if (subject == null) { throw new NullPointerException("subject == null"); } @@ -613,7 +633,8 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * {@link android.os.Build.VERSION_CODES#LOLLIPOP_MR1 LOLLIPOP_MR1} and older platforms. On * newer platforms the serial number defaults to {@code 1} if not specified. */ - public Builder setSerialNumber(BigInteger serialNumber) { + @NonNull + public Builder setSerialNumber(@NonNull BigInteger serialNumber) { if (serialNumber == null) { throw new NullPointerException("serialNumber == null"); } @@ -629,7 +650,8 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * {@link android.os.Build.VERSION_CODES#LOLLIPOP_MR1 LOLLIPOP_MR1} and older platforms. On * newer platforms the date defaults to {@code Jan 1 1970} if not specified. */ - public Builder setStartDate(Date startDate) { + @NonNull + public Builder setStartDate(@NonNull Date startDate) { if (startDate == null) { throw new NullPointerException("startDate == null"); } @@ -645,7 +667,8 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * {@link android.os.Build.VERSION_CODES#LOLLIPOP_MR1 LOLLIPOP_MR1} and older platforms. On * newer platforms the date defaults to {@code Jan 1 2048} if not specified. */ - public Builder setEndDate(Date endDate) { + @NonNull + public Builder setEndDate(@NonNull Date endDate) { if (endDate == null) { throw new NullPointerException("endDate == null"); } @@ -665,6 +688,7 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * * @see KeyguardManager#isDeviceSecure() */ + @NonNull public Builder setEncryptionRequired() { mFlags |= KeyStore.FLAG_ENCRYPTED; return this; @@ -679,6 +703,7 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * * @see #setKeyValidityEnd(Date) */ + @NonNull public Builder setKeyValidityStart(Date startDate) { mKeyValidityStart = startDate; return this; @@ -695,6 +720,7 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * @see #setKeyValidityForConsumptionEnd(Date) * @see #setKeyValidityForOriginationEnd(Date) */ + @NonNull public Builder setKeyValidityEnd(Date endDate) { setKeyValidityForOriginationEnd(endDate); setKeyValidityForConsumptionEnd(endDate); @@ -710,6 +736,7 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * * @see #setKeyValidityForConsumptionEnd(Date) */ + @NonNull public Builder setKeyValidityForOriginationEnd(Date endDate) { mKeyValidityForOriginationEnd = endDate; return this; @@ -725,6 +752,7 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * * @see #setKeyValidityForOriginationEnd(Date) */ + @NonNull public Builder setKeyValidityForConsumptionEnd(Date endDate) { mKeyValidityForConsumptionEnd = endDate; return this; @@ -743,6 +771,7 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * * <p><b>NOTE: This has currently no effect. */ + @NonNull public Builder setPurposes(@KeyStoreKeyProperties.PurposeEnum int purposes) { mPurposes = purposes; return this; @@ -756,6 +785,7 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * * <p><b>NOTE: This has currently no effect. */ + @NonNull public Builder setDigests(@KeyStoreKeyProperties.DigestEnum String... digests) { mDigests = ArrayUtils.cloneIfNotEmpty(digests); return this; @@ -770,6 +800,7 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * * <p><b>NOTE: This has currently no effect. */ + @NonNull public Builder setEncryptionPaddings( @KeyStoreKeyProperties.EncryptionPaddingEnum String... paddings) { mEncryptionPaddings = ArrayUtils.cloneIfNotEmpty(paddings); @@ -785,6 +816,7 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * * <p><b>NOTE: This has currently no effect. */ + @NonNull public Builder setSignaturePaddings( @KeyStoreKeyProperties.SignaturePaddingEnum String... paddings) { mSignaturePaddings = ArrayUtils.cloneIfNotEmpty(paddings); @@ -799,6 +831,7 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * * <p><b>NOTE: This has currently no effect. */ + @NonNull public Builder setBlockModes(@KeyStoreKeyProperties.BlockModeEnum String... blockModes) { mBlockModes = ArrayUtils.cloneIfNotEmpty(blockModes); return this; @@ -826,6 +859,7 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * * <p><b>NOTE: This has currently no effect. */ + @NonNull public Builder setRandomizedEncryptionRequired(boolean required) { mRandomizedEncryptionRequired = required; return this; @@ -851,6 +885,7 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * * @see #setUserAuthenticationValidityDurationSeconds(int) */ + @NonNull public Builder setUserAuthenticationRequired(boolean required) { mUserAuthenticationRequired = required; return this; @@ -872,7 +907,9 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * * @see #setUserAuthenticationRequired(boolean) */ - public Builder setUserAuthenticationValidityDurationSeconds(int seconds) { + @NonNull + public Builder setUserAuthenticationValidityDurationSeconds( + @IntRange(from = -1) int seconds) { mUserAuthenticationValidityDurationSeconds = seconds; return this; } @@ -883,6 +920,7 @@ public final class KeyPairGeneratorSpec implements AlgorithmParameterSpec { * @throws IllegalArgumentException if a required field is missing * @return built instance of {@code KeyPairGeneratorSpec} */ + @NonNull public KeyPairGeneratorSpec build() { return new KeyPairGeneratorSpec(mContext, mKeystoreAlias, diff --git a/keystore/java/android/security/KeyStoreKeyProperties.java b/keystore/java/android/security/KeyStoreKeyProperties.java index 1cf6a7a..d1b0e5b 100644 --- a/keystore/java/android/security/KeyStoreKeyProperties.java +++ b/keystore/java/android/security/KeyStoreKeyProperties.java @@ -17,6 +17,8 @@ package android.security; import android.annotation.IntDef; +import android.annotation.NonNull; +import android.annotation.Nullable; import android.annotation.StringDef; import android.security.keymaster.KeymasterDefs; @@ -111,6 +113,7 @@ public abstract class KeyStoreKeyProperties { /** * @hide */ + @NonNull public static int[] allToKeymaster(@PurposeEnum int purposes) { int[] result = getSetFlags(purposes); for (int i = 0; i < result.length; i++) { @@ -122,7 +125,7 @@ public abstract class KeyStoreKeyProperties { /** * @hide */ - public static @PurposeEnum int allFromKeymaster(Collection<Integer> purposes) { + public static @PurposeEnum int allFromKeymaster(@NonNull Collection<Integer> purposes) { @PurposeEnum int result = 0; for (int keymasterPurpose : purposes) { result |= fromKeymaster(keymasterPurpose); @@ -182,7 +185,7 @@ public abstract class KeyStoreKeyProperties { /** * @hide */ - static int toKeymasterSecretKeyAlgorithm(@AlgorithmEnum String algorithm) { + static int toKeymasterSecretKeyAlgorithm(@NonNull @AlgorithmEnum String algorithm) { if (AES.equalsIgnoreCase(algorithm)) { return KeymasterDefs.KM_ALGORITHM_AES; } else if (algorithm.toUpperCase(Locale.US).startsWith("HMAC")) { @@ -196,6 +199,7 @@ public abstract class KeyStoreKeyProperties { /** * @hide */ + @NonNull static @AlgorithmEnum String fromKeymasterSecretKeyAlgorithm( int keymasterAlgorithm, int keymasterDigest) { switch (keymasterAlgorithm) { @@ -232,7 +236,7 @@ public abstract class KeyStoreKeyProperties { * * @return keymaster digest or {@code -1} if the algorithm does not involve a digest. */ - static int toKeymasterDigest(@AlgorithmEnum String algorithm) { + static int toKeymasterDigest(@NonNull @AlgorithmEnum String algorithm) { String algorithmUpper = algorithm.toUpperCase(Locale.US); if (algorithmUpper.startsWith("HMAC")) { String digestUpper = algorithmUpper.substring("HMAC".length()); @@ -287,7 +291,7 @@ public abstract class KeyStoreKeyProperties { /** * @hide */ - static int toKeymaster(@BlockModeEnum String blockMode) { + static int toKeymaster(@NonNull @BlockModeEnum String blockMode) { if (ECB.equalsIgnoreCase(blockMode)) { return KeymasterDefs.KM_MODE_ECB; } else if (CBC.equalsIgnoreCase(blockMode)) { @@ -304,6 +308,7 @@ public abstract class KeyStoreKeyProperties { /** * @hide */ + @NonNull static @BlockModeEnum String fromKeymaster(int blockMode) { switch (blockMode) { case KeymasterDefs.KM_MODE_ECB: @@ -322,7 +327,8 @@ public abstract class KeyStoreKeyProperties { /** * @hide */ - static @BlockModeEnum String[] allFromKeymaster(Collection<Integer> blockModes) { + @NonNull + static @BlockModeEnum String[] allFromKeymaster(@NonNull Collection<Integer> blockModes) { if ((blockModes == null) || (blockModes.isEmpty())) { return EmptyArray.STRING; } @@ -338,7 +344,7 @@ public abstract class KeyStoreKeyProperties { /** * @hide */ - static int[] allToKeymaster(@BlockModeEnum String[] blockModes) { + static int[] allToKeymaster(@Nullable @BlockModeEnum String[] blockModes) { if ((blockModes == null) || (blockModes.length == 0)) { return EmptyArray.INT; } @@ -388,7 +394,7 @@ public abstract class KeyStoreKeyProperties { /** * @hide */ - static int toKeymaster(@EncryptionPaddingEnum String padding) { + static int toKeymaster(@NonNull @EncryptionPaddingEnum String padding) { if (NONE.equalsIgnoreCase(padding)) { return KeymasterDefs.KM_PAD_NONE; } else if (PKCS7.equalsIgnoreCase(padding)) { @@ -406,6 +412,7 @@ public abstract class KeyStoreKeyProperties { /** * @hide */ + @NonNull static @EncryptionPaddingEnum String fromKeymaster(int padding) { switch (padding) { case KeymasterDefs.KM_PAD_NONE: @@ -425,7 +432,8 @@ public abstract class KeyStoreKeyProperties { /** * @hide */ - static int[] allToKeymaster(@EncryptionPaddingEnum String[] paddings) { + @NonNull + static int[] allToKeymaster(@Nullable @EncryptionPaddingEnum String[] paddings) { if ((paddings == null) || (paddings.length == 0)) { return EmptyArray.INT; } @@ -463,7 +471,7 @@ public abstract class KeyStoreKeyProperties { /** * @hide */ - static int toKeymaster(@SignaturePaddingEnum String padding) { + static int toKeymaster(@NonNull @SignaturePaddingEnum String padding) { switch (padding.toUpperCase(Locale.US)) { case RSA_PKCS1: return KeymasterDefs.KM_PAD_RSA_PKCS1_1_5_SIGN; @@ -478,6 +486,7 @@ public abstract class KeyStoreKeyProperties { /** * @hide */ + @NonNull static @SignaturePaddingEnum String fromKeymaster(int padding) { switch (padding) { case KeymasterDefs.KM_PAD_RSA_PKCS1_1_5_SIGN: @@ -492,7 +501,8 @@ public abstract class KeyStoreKeyProperties { /** * @hide */ - static int[] allToKeymaster(@SignaturePaddingEnum String[] paddings) { + @NonNull + static int[] allToKeymaster(@Nullable @SignaturePaddingEnum String[] paddings) { if ((paddings == null) || (paddings.length == 0)) { return EmptyArray.INT; } @@ -561,7 +571,7 @@ public abstract class KeyStoreKeyProperties { /** * @hide */ - static int toKeymaster(@DigestEnum String digest) { + static int toKeymaster(@NonNull @DigestEnum String digest) { switch (digest.toUpperCase(Locale.US)) { case SHA1: return KeymasterDefs.KM_DIGEST_SHA1; @@ -585,6 +595,7 @@ public abstract class KeyStoreKeyProperties { /** * @hide */ + @NonNull static @DigestEnum String fromKeymaster(int digest) { switch (digest) { case KeymasterDefs.KM_DIGEST_NONE: @@ -609,7 +620,8 @@ public abstract class KeyStoreKeyProperties { /** * @hide */ - static @DigestEnum String[] allFromKeymaster(Collection<Integer> digests) { + @NonNull + static @DigestEnum String[] allFromKeymaster(@NonNull Collection<Integer> digests) { if (digests.isEmpty()) { return EmptyArray.STRING; } @@ -625,7 +637,8 @@ public abstract class KeyStoreKeyProperties { /** * @hide */ - static int[] allToKeymaster(@DigestEnum String[] digests) { + @NonNull + static int[] allToKeymaster(@Nullable @DigestEnum String[] digests) { if ((digests == null) || (digests.length == 0)) { return EmptyArray.INT; } diff --git a/keystore/java/android/security/KeyStoreKeySpec.java b/keystore/java/android/security/KeyStoreKeySpec.java index 0a9acbb..81a19bb 100644 --- a/keystore/java/android/security/KeyStoreKeySpec.java +++ b/keystore/java/android/security/KeyStoreKeySpec.java @@ -16,6 +16,9 @@ package android.security; +import android.annotation.NonNull; +import android.annotation.Nullable; + import java.security.PrivateKey; import java.security.spec.KeySpec; import java.util.Date; @@ -150,6 +153,7 @@ public class KeyStoreKeySpec implements KeySpec { * * @return instant or {@code null} if not restricted. */ + @Nullable public Date getKeyValidityStart() { return mKeyValidityStart; } @@ -159,6 +163,7 @@ public class KeyStoreKeySpec implements KeySpec { * * @return instant or {@code null} if not restricted. */ + @Nullable public Date getKeyValidityForConsumptionEnd() { return mKeyValidityForConsumptionEnd; } @@ -168,6 +173,7 @@ public class KeyStoreKeySpec implements KeySpec { * * @return instant or {@code null} if not restricted. */ + @Nullable public Date getKeyValidityForOriginationEnd() { return mKeyValidityForOriginationEnd; } @@ -182,6 +188,7 @@ public class KeyStoreKeySpec implements KeySpec { /** * Gets the set of block modes with which the key can be used. */ + @NonNull public @KeyStoreKeyProperties.BlockModeEnum String[] getBlockModes() { return ArrayUtils.cloneIfNotEmpty(mBlockModes); } @@ -189,6 +196,7 @@ public class KeyStoreKeySpec implements KeySpec { /** * Gets the set of padding modes with which the key can be used when encrypting/decrypting. */ + @NonNull public @KeyStoreKeyProperties.EncryptionPaddingEnum String[] getEncryptionPaddings() { return ArrayUtils.cloneIfNotEmpty(mEncryptionPaddings); } @@ -196,6 +204,7 @@ public class KeyStoreKeySpec implements KeySpec { /** * Gets the set of padding modes with which the key can be used when signing/verifying. */ + @NonNull public @KeyStoreKeyProperties.SignaturePaddingEnum String[] getSignaturePaddings() { return ArrayUtils.cloneIfNotEmpty(mSignaturePaddings); } @@ -203,6 +212,7 @@ public class KeyStoreKeySpec implements KeySpec { /** * Gets the set of digest algorithms with which the key can be used. */ + @NonNull public @KeyStoreKeyProperties.DigestEnum String[] getDigests() { return ArrayUtils.cloneIfNotEmpty(mDigests); } diff --git a/keystore/java/android/security/KeyStoreParameter.java b/keystore/java/android/security/KeyStoreParameter.java index 7332332..4a736c3 100644 --- a/keystore/java/android/security/KeyStoreParameter.java +++ b/keystore/java/android/security/KeyStoreParameter.java @@ -16,6 +16,9 @@ package android.security; +import android.annotation.IntRange; +import android.annotation.NonNull; +import android.annotation.Nullable; import android.app.KeyguardManager; import android.content.Context; @@ -182,6 +185,7 @@ public final class KeyStoreParameter implements ProtectionParameter { * * @return instant or {@code null} if not restricted. */ + @Nullable public Date getKeyValidityStart() { return mKeyValidityStart; } @@ -191,6 +195,7 @@ public final class KeyStoreParameter implements ProtectionParameter { * * @return instant or {@code null} if not restricted. */ + @Nullable public Date getKeyValidityForConsumptionEnd() { return mKeyValidityForConsumptionEnd; } @@ -200,6 +205,7 @@ public final class KeyStoreParameter implements ProtectionParameter { * * @return instant or {@code null} if not restricted. */ + @Nullable public Date getKeyValidityForOriginationEnd() { return mKeyValidityForOriginationEnd; } @@ -214,6 +220,7 @@ public final class KeyStoreParameter implements ProtectionParameter { /** * Gets the set of padding schemes with which the key can be used when encrypting/decrypting. */ + @NonNull public @KeyStoreKeyProperties.EncryptionPaddingEnum String[] getEncryptionPaddings() { return ArrayUtils.cloneIfNotEmpty(mEncryptionPaddings); } @@ -222,6 +229,7 @@ public final class KeyStoreParameter implements ProtectionParameter { * Gets the set of padding schemes with which the key can be used when signing or verifying * signatures. */ + @NonNull public @KeyStoreKeyProperties.SignaturePaddingEnum String[] getSignaturePaddings() { return ArrayUtils.cloneIfNotEmpty(mSignaturePaddings); } @@ -233,6 +241,7 @@ public final class KeyStoreParameter implements ProtectionParameter { * * @see #isDigestsSpecified() */ + @NonNull public @KeyStoreKeyProperties.DigestEnum String[] getDigests() { if (mDigests == null) { throw new IllegalStateException("Digests not specified"); @@ -246,6 +255,7 @@ public final class KeyStoreParameter implements ProtectionParameter { * * @see #getDigests() */ + @NonNull public boolean isDigestsSpecified() { return mDigests != null; } @@ -253,6 +263,7 @@ public final class KeyStoreParameter implements ProtectionParameter { /** * Gets the set of block modes with which the key can be used. */ + @NonNull public @KeyStoreKeyProperties.BlockModeEnum String[] getBlockModes() { return ArrayUtils.cloneIfNotEmpty(mBlockModes); } @@ -330,7 +341,7 @@ public final class KeyStoreParameter implements ProtectionParameter { * some UI to ask the user to unlock or initialize the Android KeyStore * facility. */ - public Builder(Context context) { + public Builder(@NonNull Context context) { if (context == null) { throw new NullPointerException("context == null"); } @@ -350,6 +361,7 @@ public final class KeyStoreParameter implements ProtectionParameter { * * @see KeyguardManager#isDeviceSecure() */ + @NonNull public Builder setEncryptionRequired(boolean required) { if (required) { mFlags |= KeyStore.FLAG_ENCRYPTED; @@ -368,6 +380,7 @@ public final class KeyStoreParameter implements ProtectionParameter { * * @see #setKeyValidityEnd(Date) */ + @NonNull public Builder setKeyValidityStart(Date startDate) { mKeyValidityStart = startDate; return this; @@ -384,6 +397,7 @@ public final class KeyStoreParameter implements ProtectionParameter { * @see #setKeyValidityForConsumptionEnd(Date) * @see #setKeyValidityForOriginationEnd(Date) */ + @NonNull public Builder setKeyValidityEnd(Date endDate) { setKeyValidityForOriginationEnd(endDate); setKeyValidityForConsumptionEnd(endDate); @@ -399,6 +413,7 @@ public final class KeyStoreParameter implements ProtectionParameter { * * @see #setKeyValidityForConsumptionEnd(Date) */ + @NonNull public Builder setKeyValidityForOriginationEnd(Date endDate) { mKeyValidityForOriginationEnd = endDate; return this; @@ -414,6 +429,7 @@ public final class KeyStoreParameter implements ProtectionParameter { * * @see #setKeyValidityForOriginationEnd(Date) */ + @NonNull public Builder setKeyValidityForConsumptionEnd(Date endDate) { mKeyValidityForConsumptionEnd = endDate; return this; @@ -426,6 +442,7 @@ public final class KeyStoreParameter implements ProtectionParameter { * * <p><b>NOTE: This has currently no effect on asymmetric key pairs. */ + @NonNull public Builder setPurposes(@KeyStoreKeyProperties.PurposeEnum int purposes) { mPurposes = purposes; return this; @@ -440,6 +457,7 @@ public final class KeyStoreParameter implements ProtectionParameter { * * <p><b>NOTE: This has currently no effect on asymmetric key pairs. */ + @NonNull public Builder setEncryptionPaddings( @KeyStoreKeyProperties.EncryptionPaddingEnum String... paddings) { mEncryptionPaddings = ArrayUtils.cloneIfNotEmpty(paddings); @@ -455,6 +473,7 @@ public final class KeyStoreParameter implements ProtectionParameter { * * <p><b>NOTE: This has currently no effect on asymmetric key pairs. */ + @NonNull public Builder setSignaturePaddings( @KeyStoreKeyProperties.SignaturePaddingEnum String... paddings) { mSignaturePaddings = ArrayUtils.cloneIfNotEmpty(paddings); @@ -471,6 +490,7 @@ public final class KeyStoreParameter implements ProtectionParameter { * * <p><b>NOTE: This has currently no effect on asymmetric key pairs. */ + @NonNull public Builder setDigests(@KeyStoreKeyProperties.DigestEnum String... digests) { mDigests = ArrayUtils.cloneIfNotEmpty(digests); return this; @@ -484,6 +504,7 @@ public final class KeyStoreParameter implements ProtectionParameter { * * <p><b>NOTE: This has currently no effect on asymmetric key pairs. */ + @NonNull public Builder setBlockModes(@KeyStoreKeyProperties.BlockModeEnum String... blockModes) { mBlockModes = ArrayUtils.cloneIfNotEmpty(blockModes); return this; @@ -525,6 +546,7 @@ public final class KeyStoreParameter implements ProtectionParameter { * * <p><b>NOTE: This has currently no effect on asymmetric key pairs. */ + @NonNull public Builder setRandomizedEncryptionRequired(boolean required) { mRandomizedEncryptionRequired = required; return this; @@ -547,6 +569,7 @@ public final class KeyStoreParameter implements ProtectionParameter { * * @see #setUserAuthenticationValidityDurationSeconds(int) */ + @NonNull public Builder setUserAuthenticationRequired(boolean required) { mUserAuthenticationRequired = required; return this; @@ -565,7 +588,9 @@ public final class KeyStoreParameter implements ProtectionParameter { * * @see #setUserAuthenticationRequired(boolean) */ - public Builder setUserAuthenticationValidityDurationSeconds(int seconds) { + @NonNull + public Builder setUserAuthenticationValidityDurationSeconds( + @IntRange(from = -1) int seconds) { mUserAuthenticationValidityDurationSeconds = seconds; return this; } @@ -576,6 +601,7 @@ public final class KeyStoreParameter implements ProtectionParameter { * @throws IllegalArgumentException if a required field is missing * @return built instance of {@code KeyStoreParameter} */ + @NonNull public KeyStoreParameter build() { return new KeyStoreParameter( mContext, diff --git a/keystore/tests/src/android/security/KeyStoreTest.java b/keystore/tests/src/android/security/KeyStoreTest.java index f261079..d138c24 100644 --- a/keystore/tests/src/android/security/KeyStoreTest.java +++ b/keystore/tests/src/android/security/KeyStoreTest.java @@ -817,6 +817,9 @@ public class KeyStoreTest extends ActivityUnitTestCase<Activity> { KeymasterArguments out = new KeymasterArguments(); args = new KeymasterArguments(); + args.addInt(KeymasterDefs.KM_TAG_ALGORITHM, KeymasterDefs.KM_ALGORITHM_AES); + args.addInt(KeymasterDefs.KM_TAG_BLOCK_MODE, KeymasterDefs.KM_MODE_GCM); + args.addInt(KeymasterDefs.KM_TAG_PADDING, KeymasterDefs.KM_PAD_NONE); OperationResult result = mKeyStore.begin(name, KeymasterDefs.KM_PURPOSE_ENCRYPT, true, args, null, out); IBinder token = result.token; @@ -881,14 +884,18 @@ public class KeyStoreTest extends ActivityUnitTestCase<Activity> { hexToBytes("591ccb10d410ed26dc5ba74a31362870"), hexToBytes("b6ed21b99ca6f4f9f153e7b1beafed1d"), hexToBytes("23304b7a39f9f3ff067d8d8f9e24ecc7")}; + KeymasterArguments beginArgs = new KeymasterArguments(); + beginArgs.addInt(KeymasterDefs.KM_TAG_ALGORITHM, KeymasterDefs.KM_ALGORITHM_AES); + beginArgs.addInt(KeymasterDefs.KM_TAG_BLOCK_MODE, KeymasterDefs.KM_MODE_ECB); + beginArgs.addInt(KeymasterDefs.KM_TAG_PADDING, KeymasterDefs.KM_PAD_NONE); for (int i = 0; i < testVectors.length; i++) { byte[] cipherText = doOperation(name, KeymasterDefs.KM_PURPOSE_ENCRYPT, testVectors[i], - new KeymasterArguments()); + beginArgs); MoreAsserts.assertEquals(cipherVectors[i], cipherText); } for (int i = 0; i < testVectors.length; i++) { byte[] plainText = doOperation(name, KeymasterDefs.KM_PURPOSE_DECRYPT, - cipherVectors[i], new KeymasterArguments()); + cipherVectors[i], beginArgs); MoreAsserts.assertEquals(testVectors[i], plainText); } } @@ -912,6 +919,9 @@ public class KeyStoreTest extends ActivityUnitTestCase<Activity> { KeymasterArguments out = new KeymasterArguments(); args = new KeymasterArguments(); + args.addInt(KeymasterDefs.KM_TAG_ALGORITHM, KeymasterDefs.KM_ALGORITHM_AES); + args.addInt(KeymasterDefs.KM_TAG_BLOCK_MODE, KeymasterDefs.KM_MODE_CTR); + args.addInt(KeymasterDefs.KM_TAG_PADDING, KeymasterDefs.KM_PAD_NONE); OperationResult result = mKeyStore.begin(name, KeymasterDefs.KM_PURPOSE_ENCRYPT, true, args, null, out); assertEquals("Begin should succeed", KeyStore.NO_ERROR, result.resultCode); diff --git a/media/java/android/media/AudioDeviceInfo.java b/media/java/android/media/AudioDeviceInfo.java index d58b1d1..566f8dc 100644 --- a/media/java/android/media/AudioDeviceInfo.java +++ b/media/java/android/media/AudioDeviceInfo.java @@ -21,7 +21,7 @@ import android.util.SparseIntArray; /** * Class to provide information about the audio devices. */ -public class AudioDeviceInfo { +public final class AudioDeviceInfo { /** * A device type associated with an unknown or uninitialized device. @@ -112,7 +112,6 @@ public class AudioDeviceInfo { } /** - * @hide * @return The internal device ID. */ public int getId() { @@ -122,15 +121,15 @@ public class AudioDeviceInfo { /** * @return The human-readable name of the audio device. */ - public String getName() { + public CharSequence getName() { return mPort.name(); } /** + * @hide * @return The "address" string of the device. This generally contains device-specific * parameters. */ - // TODO Is there a compelling reason to expose this? public String getAddress() { return mPort.address(); } @@ -157,15 +156,18 @@ public class AudioDeviceInfo { } /** - * @return An array of channel masks supported by the audio device (defined in - * AudioFormat.java). + * @return An array of channel masks ({@link AudioFormat#CHANNEL_IN_STEREO}, + * {@link AudioFormat#CHANNEL_OUT_7POINT1) for which this audio device can be configured. + * + * @see AudioFormat */ public int[] getChannelMasks() { return mPort.channelMasks(); } /** - * @return An array of channel counts supported by the audio device. + * @return An array of channel counts (1, 2, 4....) for which this audio device + * can be configured. */ public int[] getChannelCounts() { int[] masks = getChannelMasks(); @@ -179,8 +181,10 @@ public class AudioDeviceInfo { } /** - * @return An array of audio format IDs supported by the audio device (defined in - * AudioFormat.java) + * @return An array of audio format IDs (@link AudioFormat#ENCODING_PCM_16BIT, + * {@link AudioFormat#ENCODING_PCM_FLOAT}...) supported by the audio device. + * + * @see AudioFormat */ public int[] getFormats() { return mPort.formats(); diff --git a/media/java/android/media/AudioDevicesManager.java b/media/java/android/media/AudioDevicesManager.java deleted file mode 100644 index 8b83c17..0000000 --- a/media/java/android/media/AudioDevicesManager.java +++ /dev/null @@ -1,275 +0,0 @@ -/* - * Copyright (C) 2015 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.media; - -import android.content.Context; -import android.os.Handler; -import android.os.Looper; -import android.os.Message; -import android.util.ArrayMap; -import android.util.Pair; -import android.util.Slog; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.concurrent.CopyOnWriteArrayList; -import java.util.HashMap; -import java.util.Iterator; - -/** - * AudioDevicesManager implements the Android Media Audio device enumeration and notification - * functionality. This functionality is in two comlementary parts. - * <ol> - * <li>{@link AudioDevicesManager#listDevices(int)} gets the list of current audio devices - * </li> - * <li>{@link AudioDevicesManager#addOnAudioDeviceConnectionListener(OnAudioDeviceConnectionListener, android.os.Handler)} - * provides a mechanism for applications to be informed of audio device connect/disconnect events. - * </li> - * </ol> - */ -public class AudioDevicesManager { - - private static String TAG = "AudioDevicesManager"; - - private static boolean DEBUG = false; - - private AudioManager mAudioManager = null; - - private OnAmPortUpdateListener mPortListener = null; - - /** - * The message sent to apps when the contents of the device list changes if they provide - * a {#link Handler} object to addOnAudioDeviceConnectionListener(). - */ - private final static int MSG_DEVICES_LIST_CHANGE = 0; - - private ArrayMap<OnAudioDeviceConnectionListener, NativeEventHandlerDelegate> - mDeviceConnectionListeners = - new ArrayMap<OnAudioDeviceConnectionListener, NativeEventHandlerDelegate>(); - - /** - * @hide - * The AudioDevicesManager class is used to enumerate the physical audio devices connected - * to the system. See also {@link AudioDeviceInfo}. - */ - public AudioDevicesManager(Context context) { - mAudioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE); - mPortListener = new OnAmPortUpdateListener(); - mAudioManager.registerAudioPortUpdateListener(mPortListener); - } - - /** - * Specifies to the {@link AudioDevicesManager#listDevices(int)} method to include - * source (i.e. input) audio devices. - */ - public static final int LIST_DEVICES_INPUTS = 0x0001; - - /** - * Specifies to the {@link AudioDevicesManager#listDevices(int)} method to include - * sink (i.e. output) audio devices. - */ - public static final int LIST_DEVICES_OUTPUTS = 0x0002; - - /** - * Specifies to the {@link AudioDevicesManager#listDevices(int)} method to include both - * source and sink devices. - */ - public static final int LIST_DEVICES_ALL = LIST_DEVICES_OUTPUTS | LIST_DEVICES_INPUTS; - - /** - * Determines if a given AudioDevicePort meets the specified filter criteria. - * @param port The port to test. - * @param flags A set of bitflags specifying the criteria to test. - * @see {@link LIST_DEVICES_OUTPUTS} and {@link LIST_DEVICES_INPUTS} - **/ - private static boolean checkFlags(AudioDevicePort port, int flags) { - return port.role() == AudioPort.ROLE_SINK && (flags & LIST_DEVICES_OUTPUTS) != 0 || - port.role() == AudioPort.ROLE_SOURCE && (flags & LIST_DEVICES_INPUTS) != 0; - } - - /** - * Generates a list of AudioDeviceInfo objects corresponding to the audio devices currently - * connected to the system and meeting the criteria specified in the <code>flags</code> - * parameter. - * @param flags A set of bitflags specifying the criteria to test. - * @see {@link LIST_DEVICES_OUTPUTS}, {@link LIST_DEVICES_INPUTS} and {@link LIST_DEVICES_ALL}. - * @return A (possibly zero-length) array of AudioDeviceInfo objects. - */ - public AudioDeviceInfo[] listDevices(int flags) { - return listDevicesStatic(flags); - } - - /** - * Generates a list of AudioDeviceInfo objects corresponding to the audio devices currently - * connected to the system and meeting the criteria specified in the <code>flags</code> - * parameter. - * @param flags A set of bitflags specifying the criteria to test. - * @see {@link LIST_DEVICES_OUTPUTS}, {@link LIST_DEVICES_INPUTS} and {@link LIST_DEVICES_ALL}. - * @return A (possibly zero-length) array of AudioDeviceInfo objects. - * @hide - */ - public static AudioDeviceInfo[] listDevicesStatic(int flags) { - ArrayList<AudioDevicePort> ports = new ArrayList<AudioDevicePort>(); - int status = AudioManager.listAudioDevicePorts(ports); - if (status != AudioManager.SUCCESS) { - // fail and bail! - return new AudioDeviceInfo[0]; - } - - // figure out how many AudioDeviceInfo we need space for - int numRecs = 0; - for (AudioDevicePort port : ports) { - if (checkFlags(port, flags)) { - numRecs++; - } - } - - // Now load them up - AudioDeviceInfo[] deviceList = new AudioDeviceInfo[numRecs]; - int slot = 0; - for (AudioDevicePort port : ports) { - if (checkFlags(port, flags)) { - deviceList[slot++] = new AudioDeviceInfo(port); - } - } - - return deviceList; - } - - /** - * Adds an {@link OnAudioDeviceConnectionListener} to receive notifications of changes - * to the set of connected audio devices. - */ - public void addOnAudioDeviceConnectionListener(OnAudioDeviceConnectionListener listener, - android.os.Handler handler) { - if (listener != null && !mDeviceConnectionListeners.containsKey(listener)) { - synchronized (mDeviceConnectionListeners) { - mDeviceConnectionListeners.put( - listener, new NativeEventHandlerDelegate(listener, handler)); - } - } - } - - /** - * Removes an {@link OnAudioDeviceConnectionListener} which has been previously registered - * to receive notifications of changes to the set of connected audio devices. - */ - public void removeOnAudioDeviceConnectionListener(OnAudioDeviceConnectionListener listener) { - synchronized (mDeviceConnectionListeners) { - if (mDeviceConnectionListeners.containsKey(listener)) { - mDeviceConnectionListeners.remove(listener); - } - } - } - - /** - * Sends device list change notification to all listeners. - */ - private void broadcastDeviceListChange() { - Collection<NativeEventHandlerDelegate> values; - synchronized (mDeviceConnectionListeners) { - values = mDeviceConnectionListeners.values(); - } - for(NativeEventHandlerDelegate delegate : values) { - Handler handler = delegate.getHandler(); - if (handler != null) { - handler.sendEmptyMessage(MSG_DEVICES_LIST_CHANGE); - } - } - } - - /** - * Handles Port list update notifications from the AudioManager - */ - private class OnAmPortUpdateListener implements AudioManager.OnAudioPortUpdateListener { - static final String TAG = "OnAmPortUpdateListener"; - public void onAudioPortListUpdate(AudioPort[] portList) { - broadcastDeviceListChange(); - } - - /** - * Callback method called upon audio patch list update. - * @param patchList the updated list of audio patches - */ - public void onAudioPatchListUpdate(AudioPatch[] patchList) { - if (DEBUG) { - Slog.d(TAG, "onAudioPatchListUpdate() " + patchList.length + " patches."); - } - } - - /** - * Callback method called when the mediaserver dies - */ - public void onServiceDied() { - if (DEBUG) { - Slog.i(TAG, "onServiceDied()"); - } - - broadcastDeviceListChange(); - } - } - - //--------------------------------------------------------- - // Inner classes - //-------------------- - /** - * Helper class to handle the forwarding of native events to the appropriate listener - * (potentially) handled in a different thread. - */ - private class NativeEventHandlerDelegate { - private final Handler mHandler; - - NativeEventHandlerDelegate(final OnAudioDeviceConnectionListener listener, - Handler handler) { - // find the looper for our new event handler - Looper looper; - if (handler != null) { - looper = handler.getLooper(); - } else { - // no given handler, use the looper the addListener call was called in - looper = Looper.getMainLooper(); - } - - // construct the event handler with this looper - if (looper != null) { - // implement the event handler delegate - mHandler = new Handler(looper) { - @Override - public void handleMessage(Message msg) { - switch(msg.what) { - case MSG_DEVICES_LIST_CHANGE: - // call the OnAudioDeviceConnectionListener - if (listener != null) { - listener.onAudioDeviceConnection(); - } - break; - default: - Slog.e(TAG, "Unknown native event type: " + msg.what); - break; - } - } - }; - } else { - mHandler = null; - } - } - - Handler getHandler() { - return mHandler; - } - } -} diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java index 56f0400..cba83f9 100644 --- a/media/java/android/media/AudioManager.java +++ b/media/java/android/media/AudioManager.java @@ -42,10 +42,13 @@ import android.os.SystemProperties; import android.os.SystemClock; import android.os.ServiceManager; import android.provider.Settings; +import android.util.ArrayMap; import android.util.Log; +import android.util.Pair; import android.view.KeyEvent; import java.util.ArrayList; +import java.util.Collection; import java.util.HashMap; import java.util.Iterator; @@ -628,6 +631,9 @@ public class AudioManager { mUseFixedVolume = getContext().getResources().getBoolean( com.android.internal.R.bool.config_useFixedVolume); sAudioPortEventHandler.init(); + + mPortListener = new OnAmPortUpdateListener(); + registerAudioPortUpdateListener(mPortListener); } private Context getContext() { @@ -3697,4 +3703,210 @@ public class AudioManager { portCfg.format(), gainCfg); } + + private OnAmPortUpdateListener mPortListener = null; + + /** + * The message sent to apps when the contents of the device list changes if they provide + * a {#link Handler} object to addOnAudioDeviceConnectionListener(). + */ + private final static int MSG_DEVICES_LIST_CHANGE = 0; + + private ArrayMap<OnAudioDeviceConnectionListener, NativeEventHandlerDelegate> + mDeviceConnectionListeners = + new ArrayMap<OnAudioDeviceConnectionListener, NativeEventHandlerDelegate>(); + + /** + * Specifies to the {@link AudioManager#getDevices(int)} method to include + * source (i.e. input) audio devices. + */ + public static final int GET_DEVICES_INPUTS = 0x0001; + + /** + * Specifies to the {@link AudioManager#getDevices(int)} method to include + * sink (i.e. output) audio devices. + */ + public static final int GET_DEVICES_OUTPUTS = 0x0002; + + /** + * Specifies to the {@link AudioManager#getDevices(int)} method to include both + * source and sink devices. + */ + public static final int GET_DEVICES_ALL = GET_DEVICES_OUTPUTS | GET_DEVICES_INPUTS; + + /** + * Determines if a given AudioDevicePort meets the specified filter criteria. + * @param port The port to test. + * @param flags A set of bitflags specifying the criteria to test. + * @see {@link GET_DEVICES_OUTPUTS} and {@link GET_DEVICES_INPUTS} + **/ + private static boolean checkFlags(AudioDevicePort port, int flags) { + return port.role() == AudioPort.ROLE_SINK && (flags & GET_DEVICES_OUTPUTS) != 0 || + port.role() == AudioPort.ROLE_SOURCE && (flags & GET_DEVICES_INPUTS) != 0; + } + + /** + * Generates a list of AudioDeviceInfo objects corresponding to the audio devices currently + * connected to the system and meeting the criteria specified in the <code>flags</code> + * parameter. + * @param flags A set of bitflags specifying the criteria to test. + * @see {@link GET_DEVICES_OUTPUTS}, {@link GET_DEVICES_INPUTS} and {@lGET_DEVICES_CES_ALL}. + * @return A (possibly zero-length) array of AudioDeviceInfo objects. + */ + public AudioDeviceInfo[] getDevices(int flags) { + return getDevicesStatic(flags); + } + + /** + * Generates a list of AudioDeviceInfo objects corresponding to the audio devices currently + * connected to the system and meeting the criteria specified in the <code>flags</code> + * parameter. + * @param flags A set of bitflags specifying the criteria to test. + * @see {@link GET_DEVICES_OUTPUTS}, {@link GET_DEVICES_INPUTS} and {@link GET_DEVICES_ALL}. + * @return A (possibly zero-length) array of AudioDeviceInfo objects. + * @hide + */ + public static AudioDeviceInfo[] getDevicesStatic(int flags) { + ArrayList<AudioDevicePort> ports = new ArrayList<AudioDevicePort>(); + int status = AudioManager.listAudioDevicePorts(ports); + if (status != AudioManager.SUCCESS) { + // fail and bail! + return new AudioDeviceInfo[0]; + } + + // figure out how many AudioDeviceInfo we need space for + int numRecs = 0; + for (AudioDevicePort port : ports) { + if (checkFlags(port, flags)) { + numRecs++; + } + } + + // Now load them up + AudioDeviceInfo[] deviceList = new AudioDeviceInfo[numRecs]; + int slot = 0; + for (AudioDevicePort port : ports) { + if (checkFlags(port, flags)) { + deviceList[slot++] = new AudioDeviceInfo(port); + } + } + + return deviceList; + } + + /** + * Adds an {@link OnAudioDeviceConnectionListener} to receive notifications of changes + * to the set of connected audio devices. + */ + public void addOnAudioDeviceConnectionListener(OnAudioDeviceConnectionListener listener, + android.os.Handler handler) { + if (listener != null && !mDeviceConnectionListeners.containsKey(listener)) { + synchronized (mDeviceConnectionListeners) { + mDeviceConnectionListeners.put( + listener, new NativeEventHandlerDelegate(listener, handler)); + } + } + } + + /** + * Removes an {@link OnAudioDeviceConnectionListener} which has been previously registered + * to receive notifications of changes to the set of connected audio devices. + */ + public void removeOnAudioDeviceConnectionListener(OnAudioDeviceConnectionListener listener) { + synchronized (mDeviceConnectionListeners) { + if (mDeviceConnectionListeners.containsKey(listener)) { + mDeviceConnectionListeners.remove(listener); + } + } + } + + /** + * Sends device list change notification to all listeners. + */ + private void broadcastDeviceListChange() { + Collection<NativeEventHandlerDelegate> values; + synchronized (mDeviceConnectionListeners) { + values = mDeviceConnectionListeners.values(); + } + for (NativeEventHandlerDelegate delegate : values) { + Handler handler = delegate.getHandler(); + if (handler != null) { + handler.sendEmptyMessage(MSG_DEVICES_LIST_CHANGE); + } + } + } + + /** + * Handles Port list update notifications from the AudioManager + */ + private class OnAmPortUpdateListener implements AudioManager.OnAudioPortUpdateListener { + static final String TAG = "OnAmPortUpdateListener"; + public void onAudioPortListUpdate(AudioPort[] portList) { + broadcastDeviceListChange(); + } + + /** + * Callback method called upon audio patch list update. + * @param patchList the updated list of audio patches + */ + public void onAudioPatchListUpdate(AudioPatch[] patchList) {} + + /** + * Callback method called when the mediaserver dies + */ + public void onServiceDied() { + broadcastDeviceListChange(); + } + } + + //--------------------------------------------------------- + // Inner classes + //-------------------- + /** + * Helper class to handle the forwarding of native events to the appropriate listener + * (potentially) handled in a different thread. + */ + private class NativeEventHandlerDelegate { + private final Handler mHandler; + + NativeEventHandlerDelegate(final OnAudioDeviceConnectionListener listener, + Handler handler) { + // find the looper for our new event handler + Looper looper; + if (handler != null) { + looper = handler.getLooper(); + } else { + // no given handler, use the looper the addListener call was called in + looper = Looper.getMainLooper(); + } + + // construct the event handler with this looper + if (looper != null) { + // implement the event handler delegate + mHandler = new Handler(looper) { + @Override + public void handleMessage(Message msg) { + switch(msg.what) { + case MSG_DEVICES_LIST_CHANGE: + // call the OnAudioDeviceConnectionListener + if (listener != null) { + listener.onAudioDeviceConnection(); + } + break; + default: + Log.e(TAG, "Unknown native event type: " + msg.what); + break; + } + } + }; + } else { + mHandler = null; + } + } + + Handler getHandler() { + return mHandler; + } + } + } diff --git a/media/java/android/media/AudioRecord.java b/media/java/android/media/AudioRecord.java index 11671d8..216d9b9 100644 --- a/media/java/android/media/AudioRecord.java +++ b/media/java/android/media/AudioRecord.java @@ -246,8 +246,8 @@ public class AudioRecord * Though some invalid parameters will result in an {@link IllegalArgumentException} exception, * other errors do not. Thus you should call {@link #getState()} immediately after construction * to confirm that the object is usable. - * @param audioSource the recording source (also referred to as capture preset). - * See {@link MediaRecorder.AudioSource} for the capture preset definitions. + * @param audioSource the recording source. + * See {@link MediaRecorder.AudioSource} for the recording source definitions. * @param sampleRateInHz the sample rate expressed in Hertz. 44100Hz is currently the only * rate that is guaranteed to work on all devices, but other rates such as 22050, * 16000, and 11025 may work on some devices. @@ -285,8 +285,8 @@ public class AudioRecord * @hide * Class constructor with {@link AudioAttributes} and {@link AudioFormat}. * @param attributes a non-null {@link AudioAttributes} instance. Use - * {@link AudioAttributes.Builder#setCapturePreset(int)} for configuring the capture - * preset for this instance. + * {@link AudioAttributes.Builder#setAudioSource(int)} for configuring the audio + * source for this instance. * @param format a non-null {@link AudioFormat} instance describing the format of the data * that will be recorded through this AudioRecord. See {@link AudioFormat.Builder} for * configuring the audio format parameters such as encoding, channel mask and sample rate. @@ -394,14 +394,14 @@ public class AudioRecord /** * Builder class for {@link AudioRecord} objects. * Use this class to configure and create an <code>AudioRecord</code> instance. By setting the - * recording preset (a.k.a. recording source) and audio format parameters, you indicate which of - * those vary from the default behavior on the device. + * recording source and audio format parameters, you indicate which of + * those vary from the default behavior on the device. * <p> Here is an example where <code>Builder</code> is used to specify all {@link AudioFormat} * parameters, to be used by a new <code>AudioRecord</code> instance: * * <pre class="prettyprint"> * AudioRecord recorder = new AudioRecord.Builder() - * .setCapturePreset(MediaRecorder.AudioSource.VOICE_COMMUNICATION) + * .setAudioSource(MediaRecorder.AudioSource.VOICE_COMMUNICATION) * .setAudioFormat(new AudioFormat.Builder() * .setEncoding(AudioFormat.ENCODING_PCM_16BIT) * .setSampleRate(32000) @@ -411,7 +411,7 @@ public class AudioRecord * .build(); * </pre> * <p> - * If the capture preset is not set with {@link #setCapturePreset(int)}, + * If the audio source is not set with {@link #setAudioSource(int)}, * {@link MediaRecorder.AudioSource#DEFAULT} is used. * <br>If the audio format is not specified or is incomplete, its sample rate will be the * default output sample rate of the device (see @@ -433,18 +433,18 @@ public class AudioRecord } /** - * @param preset the capture preset (also referred to as the recording source). - * See {@link MediaRecorder.AudioSource} for the supported capture preset definitions. + * @param source the audio source. + * See {@link MediaRecorder.AudioSource} for the supported audio source definitions. * @return the same Builder instance. * @throws IllegalArgumentException */ - public Builder setCapturePreset(int preset) throws IllegalArgumentException { - if ( (preset < MediaRecorder.AudioSource.DEFAULT) || - (preset > MediaRecorder.getAudioSourceMax()) ) { - throw new IllegalArgumentException("Invalid audio source " + preset); + public Builder setAudioSource(int source) throws IllegalArgumentException { + if ( (source < MediaRecorder.AudioSource.DEFAULT) || + (source > MediaRecorder.getAudioSourceMax()) ) { + throw new IllegalArgumentException("Invalid audio source " + source); } mAttributes = new AudioAttributes.Builder() - .setInternalCapturePreset(preset) + .setInternalCapturePreset(source) .build(); return this; } @@ -1202,6 +1202,14 @@ public class AudioRecord //-------------------------------------------------------------------------- // (Re)Routing Info //-------------------- + public interface OnRoutingChangedListener { + /** + * Called when the routing of an AudioRecord changes from either and explicit or + * policy rerouting. + */ + public void onRoutingChanged(AudioRecord audioRecord); + } + /** * Returns an {@link AudioDeviceInfo} identifying the current routing of this AudioRecord. */ @@ -1211,7 +1219,7 @@ public class AudioRecord return null; } AudioDeviceInfo[] devices = - AudioDevicesManager.listDevicesStatic(AudioDevicesManager.LIST_DEVICES_INPUTS); + AudioManager.getDevicesStatic(AudioManager.GET_DEVICES_INPUTS); for (int i = 0; i < devices.length; i++) { if (devices[i].getId() == deviceId) { return devices[i]; @@ -1222,17 +1230,17 @@ public class AudioRecord /** * The message sent to apps when the routing of this AudioRecord changes if they provide - * a {#link Handler} object to addOnAudioRecordRoutingListener(). + * a {#link Handler} object to addOnRoutingChangeListener(). */ - private ArrayMap<OnAudioRecordRoutingListener, NativeRoutingEventHandlerDelegate> + private ArrayMap<OnRoutingChangedListener, NativeRoutingEventHandlerDelegate> mRoutingChangeListeners = - new ArrayMap<OnAudioRecordRoutingListener, NativeRoutingEventHandlerDelegate>(); + new ArrayMap<OnRoutingChangedListener, NativeRoutingEventHandlerDelegate>(); /** - * Adds an {@link OnAudioRecordRoutingListener} to receive notifications of routing changes + * Adds an {@link OnRoutingChangedListener} to receive notifications of routing changes * on this AudioRecord. */ - public void addOnAudioRecordRoutingListener(OnAudioRecordRoutingListener listener, + public void addOnRoutingChangedListener(OnRoutingChangedListener listener, android.os.Handler handler) { if (listener != null && !mRoutingChangeListeners.containsKey(listener)) { synchronized (mRoutingChangeListeners) { @@ -1246,10 +1254,10 @@ public class AudioRecord } /** - * Removes an {@link OnAudioRecordRoutingListener} which has been previously added + * Removes an {@link OnRoutingChangedListener} which has been previously added * to receive notifications of changes to the set of connected audio devices. */ - public void removeOnAudioRecordRoutingListener(OnAudioRecordRoutingListener listener) { + public void removeOnRoutingChangedListener(OnRoutingChangedListener listener) { synchronized (mRoutingChangeListeners) { if (mRoutingChangeListeners.containsKey(listener)) { mRoutingChangeListeners.remove(listener); @@ -1268,7 +1276,7 @@ public class AudioRecord private final Handler mHandler; NativeRoutingEventHandlerDelegate(final AudioRecord record, - final OnAudioRecordRoutingListener listener, + final OnRoutingChangedListener listener, Handler handler) { // find the looper for our new event handler Looper looper; @@ -1291,7 +1299,7 @@ public class AudioRecord switch(msg.what) { case AudioSystem.NATIVE_EVENT_ROUTING_CHANGE: if (listener != null) { - listener.onAudioRecordRouting(record); + listener.onRoutingChanged(record); } break; default: @@ -1354,7 +1362,7 @@ public class AudioRecord * @return true if successful, false if the specified {@link AudioDeviceInfo} is non-null and * does not correspond to a valid audio input device. */ - public boolean setPreferredInputDevice(AudioDeviceInfo deviceInfo) { + public boolean setPreferredDevice(AudioDeviceInfo deviceInfo) { // Do some validation.... if (deviceInfo != null && !deviceInfo.isSource()) { return false; @@ -1371,10 +1379,10 @@ public class AudioRecord } /** - * Returns the selected input specified by {@link #setPreferredInputDevice}. Note that this + * Returns the selected input specified by {@link #setPreferredDevice}. Note that this * is not guarenteed to correspond to the actual device being used for recording. */ - public AudioDeviceInfo getPreferredInputDevice() { + public AudioDeviceInfo getPreferredDevice() { synchronized (this) { return mPreferredDevice; } diff --git a/media/java/android/media/AudioTrack.java b/media/java/android/media/AudioTrack.java index dc37700..eda14a7 100644 --- a/media/java/android/media/AudioTrack.java +++ b/media/java/android/media/AudioTrack.java @@ -2046,7 +2046,7 @@ public class AudioTrack * @return true if succesful, false if the specified {@link AudioDeviceInfo} is non-null and * does not correspond to a valid audio output device. */ - public boolean setPreferredOutputDevice(AudioDeviceInfo deviceInfo) { + public boolean setPreferredDevice(AudioDeviceInfo deviceInfo) { // Do some validation.... if (deviceInfo != null && !deviceInfo.isSink()) { return false; @@ -2062,10 +2062,10 @@ public class AudioTrack } /** - * Returns the selected output specified by {@link #setPreferredOutputDevice}. Note that this + * Returns the selected output specified by {@link #setPreferredDevice}. Note that this * is not guaranteed to correspond to the actual device being used for playback. */ - public AudioDeviceInfo getPreferredOutputDevice() { + public AudioDeviceInfo getPreferredDevice() { synchronized (this) { return mPreferredDevice; } @@ -2074,6 +2074,14 @@ public class AudioTrack //-------------------------------------------------------------------------- // (Re)Routing Info //-------------------- + public interface OnRoutingChangedListener { + /** + * Called when the routing of an AudioTrack changes from either and explicit or + * policy rerouting. + */ + public void onRoutingChanged(AudioTrack audioTrack); + } + /** * Returns an {@link AudioDeviceInfo} identifying the current routing of this AudioTrack. */ @@ -2083,7 +2091,7 @@ public class AudioTrack return null; } AudioDeviceInfo[] devices = - AudioDevicesManager.listDevicesStatic(AudioDevicesManager.LIST_DEVICES_OUTPUTS); + AudioManager.getDevicesStatic(AudioManager.GET_DEVICES_OUTPUTS); for (int i = 0; i < devices.length; i++) { if (devices[i].getId() == deviceId) { return devices[i]; @@ -2094,17 +2102,17 @@ public class AudioTrack /** * The message sent to apps when the routing of this AudioTrack changes if they provide - * a {#link Handler} object to addOnAudioTrackRoutingListener(). + * a {#link Handler} object to addOnRoutingChangedListener(). */ - private ArrayMap<OnAudioTrackRoutingListener, NativeRoutingEventHandlerDelegate> + private ArrayMap<OnRoutingChangedListener, NativeRoutingEventHandlerDelegate> mRoutingChangeListeners = - new ArrayMap<OnAudioTrackRoutingListener, NativeRoutingEventHandlerDelegate>(); + new ArrayMap<OnRoutingChangedListener, NativeRoutingEventHandlerDelegate>(); /** - * Adds an {@link OnAudioTrackRoutingListener} to receive notifications of routing changes + * Adds an {@link OnRoutingChangedListener} to receive notifications of routing changes * on this AudioTrack. */ - public void addOnAudioTrackRoutingListener(OnAudioTrackRoutingListener listener, + public void addOnRoutingChangedListener(OnRoutingChangedListener listener, android.os.Handler handler) { if (listener != null && !mRoutingChangeListeners.containsKey(listener)) { synchronized (mRoutingChangeListeners) { @@ -2118,10 +2126,10 @@ public class AudioTrack } /** - * Removes an {@link OnAudioTrackRoutingListener} which has been previously added + * Removes an {@link OnRoutingChangedListener} which has been previously added * to receive notifications of changes to the set of connected audio devices. */ - public void removeOnAudioTrackRoutingListener(OnAudioTrackRoutingListener listener) { + public void removeOnRoutingChangedListener(OnRoutingChangedListener listener) { synchronized (mRoutingChangeListeners) { if (mRoutingChangeListeners.containsKey(listener)) { mRoutingChangeListeners.remove(listener); @@ -2236,7 +2244,7 @@ public class AudioTrack private final Handler mHandler; NativeRoutingEventHandlerDelegate(final AudioTrack track, - final OnAudioTrackRoutingListener listener, + final OnRoutingChangedListener listener, Handler handler) { // find the looper for our new event handler Looper looper; @@ -2259,7 +2267,7 @@ public class AudioTrack switch(msg.what) { case AudioSystem.NATIVE_EVENT_ROUTING_CHANGE: if (listener != null) { - listener.onAudioTrackRouting(track); + listener.onRoutingChanged(track); } break; default: diff --git a/media/java/android/media/MediaRecorder.java b/media/java/android/media/MediaRecorder.java index 206c171..f27e635 100644 --- a/media/java/android/media/MediaRecorder.java +++ b/media/java/android/media/MediaRecorder.java @@ -185,9 +185,9 @@ public class MediaRecorder /** * Defines the audio source. * An audio source defines both a default physical source of audio signal, and a recording - * configuration; it's also known as a capture preset. These constants are for instance used + * configuration. These constants are for instance used * in {@link MediaRecorder#setAudioSource(int)} or - * {@link AudioRecord.Builder#setCapturePreset(int)}. + * {@link AudioRecord.Builder#setAudioSource(int)}. */ public final class AudioSource { diff --git a/media/java/android/media/OnAudioDeviceConnectionListener.java b/media/java/android/media/OnAudioDeviceConnectionListener.java index 71c135a..57e9e17 100644 --- a/media/java/android/media/OnAudioDeviceConnectionListener.java +++ b/media/java/android/media/OnAudioDeviceConnectionListener.java @@ -18,13 +18,13 @@ package android.media; /** * OnAudioDeviceConnectionListener defines the interface for notification listeners in the - * {@link AudioDevicesManager} + * {@link AudioManager} */ public interface OnAudioDeviceConnectionListener { /** - * Called by the {@link AudioDevicesManager} to indicate that an audio device has been + * Called by the {@link AudioManager} to indicate that an audio device has been * connected or disconnected. A listener will probably call the - * {@link AudioDevicesManager#listDevices} method to retrieve the current list of audio + * {@link AudioManager#getDevices} method to retrieve the current list of audio * devices. */ public void onAudioDeviceConnection(); diff --git a/media/java/android/media/OnAudioRecordRoutingListener.java b/media/java/android/media/OnAudioRecordRoutingListener.java deleted file mode 100644 index 8ff41c5..0000000 --- a/media/java/android/media/OnAudioRecordRoutingListener.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (C) 2015 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.media; - -/** - * OnAudioDeviceConnectionListener defines the interface for notification listeners in the - * {@link AudioDevicesManager} - */ -public interface OnAudioRecordRoutingListener { - /** - * Called when the routing of an AudioRecord changes from either and explicit or - * policy rerouting. - */ - public void onAudioRecordRouting(AudioRecord audioRecord); -} diff --git a/media/java/android/media/OnAudioTrackRoutingListener.java b/media/java/android/media/OnAudioTrackRoutingListener.java deleted file mode 100644 index 18c72ef..0000000 --- a/media/java/android/media/OnAudioTrackRoutingListener.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (C) 2015 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.media; - -/** - * OnAudioDeviceConnectionListener defines the interface for notification listeners in the - * {@link AudioDevicesManager} - */ -public interface OnAudioTrackRoutingListener { - /** - * Called when the routing of an AudioTrack changes from either and explicit or - * policy rerouting. - */ - public void onAudioTrackRouting(AudioTrack audioTrack); -} diff --git a/packages/DocumentsUI/AndroidManifest.xml b/packages/DocumentsUI/AndroidManifest.xml index bf50017..382b2d0 100644 --- a/packages/DocumentsUI/AndroidManifest.xml +++ b/packages/DocumentsUI/AndroidManifest.xml @@ -47,17 +47,6 @@ </intent-filter> </activity> - <activity - android:name=".StandaloneActivity" - android:theme="@style/StandaloneTheme" - android:icon="@drawable/ic_doc_text" - android:enabled="false"> - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - <category android:name="android.intent.category.LAUNCHER" /> - </intent-filter> - </activity> - <provider android:name=".RecentsProvider" android:authorities="com.android.documentsui.recents" diff --git a/packages/DocumentsUI/res/values/styles.xml b/packages/DocumentsUI/res/values/styles.xml index 97509f7..6d741aa 100644 --- a/packages/DocumentsUI/res/values/styles.xml +++ b/packages/DocumentsUI/res/values/styles.xml @@ -36,20 +36,4 @@ <item name="android:windowSoftInputMode">stateUnspecified|adjustUnspecified</item> </style> - <style name="StandaloneTheme" parent="@android:style/Theme.Material.DayNight.DarkActionBar"> - <item name="android:actionBarWidgetTheme">@null</item> - - <item name="android:colorPrimaryDark">@*android:color/material_blue_grey_900</item> - <item name="android:colorPrimary">@*android:color/material_blue_grey_800</item> - <item name="android:colorAccent">@*android:color/material_deep_teal_500</item> - - <item name="android:listDivider">@*android:drawable/list_divider_material</item> - - <item name="android:windowActionBar">false</item> - <item name="android:windowActionModeOverlay">true</item> - <item name="android:windowNoTitle">true</item> - - <item name="android:windowSoftInputMode">stateUnspecified|adjustUnspecified</item> - </style> - </resources> diff --git a/packages/DocumentsUI/src/com/android/documentsui/CopyService.java b/packages/DocumentsUI/src/com/android/documentsui/CopyService.java index 202402f..6e050c6 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/CopyService.java +++ b/packages/DocumentsUI/src/com/android/documentsui/CopyService.java @@ -156,7 +156,7 @@ public class CopyService extends IntentService { if (mFailedFiles.size() > 0) { final Context context = getApplicationContext(); - final Intent navigateIntent = new Intent(context, StandaloneActivity.class); + final Intent navigateIntent = new Intent(context, DocumentsActivity.class); navigateIntent.putExtra(EXTRA_STACK, (Parcelable) stack); navigateIntent.putExtra(EXTRA_FAILURE, FAILURE_COPY); navigateIntent.putParcelableArrayListExtra(EXTRA_SRC_LIST, mFailedFiles); @@ -200,7 +200,7 @@ public class CopyService extends IntentService { mIsCancelled = false; final Context context = getApplicationContext(); - final Intent navigateIntent = new Intent(context, StandaloneActivity.class); + final Intent navigateIntent = new Intent(context, DocumentsActivity.class); navigateIntent.putExtra(EXTRA_STACK, (Parcelable) stack); mProgressBuilder = new Notification.Builder(this) diff --git a/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java b/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java index e58c637..cded717 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java +++ b/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java @@ -27,6 +27,7 @@ import static com.android.documentsui.DirectoryFragment.ANIM_DOWN; import static com.android.documentsui.DirectoryFragment.ANIM_NONE; import static com.android.documentsui.DirectoryFragment.ANIM_UP; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -66,6 +67,7 @@ import android.widget.Toolbar; import com.android.documentsui.RecentsProvider.RecentColumns; import com.android.documentsui.RecentsProvider.ResumeColumns; import com.android.documentsui.model.DocumentInfo; +import com.android.documentsui.model.DocumentStack; import com.android.documentsui.model.DurableUtils; import com.android.documentsui.model.RootInfo; @@ -189,6 +191,16 @@ public class DocumentsActivity extends BaseActivity { } else { new RestoreStackTask().execute(); } + + // Show a failure dialog if there was a failed operation. + final Intent intent = getIntent(); + final DocumentStack dstStack = intent.getParcelableExtra(CopyService.EXTRA_STACK); + final int failure = intent.getIntExtra(CopyService.EXTRA_FAILURE, 0); + if (failure != 0) { + final ArrayList<DocumentInfo> failedSrcList = + intent.getParcelableArrayListExtra(CopyService.EXTRA_SRC_LIST); + FailureDialogFragment.show(getFragmentManager(), failure, failedSrcList, dstStack); + } } else { onCurrentDirectoryChanged(ANIM_NONE); } diff --git a/packages/DocumentsUI/src/com/android/documentsui/StandaloneActivity.java b/packages/DocumentsUI/src/com/android/documentsui/StandaloneActivity.java deleted file mode 100644 index 1f62973..0000000 --- a/packages/DocumentsUI/src/com/android/documentsui/StandaloneActivity.java +++ /dev/null @@ -1,322 +0,0 @@ -/* - * Copyright (C) 2015 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.documentsui; - -import static com.android.documentsui.DirectoryFragment.ANIM_DOWN; -import static com.android.documentsui.DirectoryFragment.ANIM_NONE; -import static com.android.documentsui.DirectoryFragment.ANIM_UP; -import android.app.Activity; -import android.app.FragmentManager; -import android.content.ActivityNotFoundException; -import android.content.ClipData; -import android.content.ContentResolver; -import android.content.ContentValues; -import android.content.Context; -import android.content.Intent; -import android.graphics.Point; -import android.net.Uri; -import android.os.Bundle; -import android.provider.DocumentsContract; -import android.provider.DocumentsContract.Root; -import android.util.Log; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.view.WindowManager; -import android.widget.BaseAdapter; -import android.widget.Spinner; -import android.widget.Toast; -import android.widget.Toolbar; - -import com.android.documentsui.FailureDialogFragment; -import com.android.documentsui.RecentsProvider.ResumeColumns; -import com.android.documentsui.model.DocumentInfo; -import com.android.documentsui.model.DocumentStack; -import com.android.documentsui.model.DurableUtils; -import com.android.documentsui.model.RootInfo; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -/** - * Activity providing a directly launchable file management activity. - */ -public class StandaloneActivity extends BaseActivity { - public static final String TAG = "StandaloneFileManagement"; - - private Toolbar mToolbar; - private Spinner mToolbarStack; - private Toolbar mRootsToolbar; - private DirectoryContainerView mDirectoryContainer; - private State mState; - private ItemSelectedListener mStackListener; - private BaseAdapter mStackAdapter; - - public StandaloneActivity() { - super(TAG); - } - - @Override - public void onCreate(Bundle icicle) { - super.onCreate(icicle); - - setResult(Activity.RESULT_CANCELED); - setContentView(R.layout.activity); - - final Context context = this; - - mDirectoryContainer = (DirectoryContainerView) findViewById(R.id.container_directory); - - mState = (icicle != null) - ? icicle.<State>getParcelable(EXTRA_STATE) - : buildDefaultState(); - - mToolbar = (Toolbar) findViewById(R.id.toolbar); - mToolbar.setTitleTextAppearance(context, - android.R.style.TextAppearance_DeviceDefault_Widget_ActionBar_Title); - - mStackAdapter = new StackAdapter(); - mStackListener = new ItemSelectedListener(); - mToolbarStack = (Spinner) findViewById(R.id.stack); - mToolbarStack.setOnItemSelectedListener(mStackListener); - - mRootsToolbar = (Toolbar) findViewById(R.id.roots_toolbar); - if (mRootsToolbar != null) { - mRootsToolbar.setTitleTextAppearance(context, - android.R.style.TextAppearance_DeviceDefault_Widget_ActionBar_Title); - } - - setActionBar(mToolbar); - - RootsFragment.show(getFragmentManager(), null); - if (!mState.restored) { - new RestoreStackTask().execute(); - - // Show a failure dialog if there was a failed operation. - final Intent intent = getIntent(); - final DocumentStack dstStack = intent.getParcelableExtra(CopyService.EXTRA_STACK); - final int failure = intent.getIntExtra(CopyService.EXTRA_FAILURE, 0); - if (failure != 0) { - final ArrayList<DocumentInfo> failedSrcList = - intent.getParcelableArrayListExtra(CopyService.EXTRA_SRC_LIST); - FailureDialogFragment.show(getFragmentManager(), failure, failedSrcList, dstStack); - } - } else { - onCurrentDirectoryChanged(ANIM_NONE); - } - } - - private State buildDefaultState() { - State state = new State(); - - final Intent intent = getIntent(); - state.action = State.ACTION_BROWSE_ALL; - state.acceptMimes = new String[] { "*/*" }; - state.allowMultiple = true; - state.acceptMimes = new String[] { intent.getType() }; - state.localOnly = intent.getBooleanExtra(Intent.EXTRA_LOCAL_ONLY, false); - state.forceAdvanced = intent.getBooleanExtra(DocumentsContract.EXTRA_SHOW_ADVANCED, false); - state.showAdvanced = state.forceAdvanced - | LocalPreferences.getDisplayAdvancedDevices(this); - state.showSize = true; - final DocumentStack stack = intent.getParcelableExtra(CopyService.EXTRA_STACK); - if (stack != null) - state.stack = stack; - - return state; - } - - @Override - protected void onPostCreate(Bundle savedInstanceState) { - super.onPostCreate(savedInstanceState); - updateActionBar(); - } - - @Override - public void updateActionBar() { - final RootInfo root = getCurrentRoot(); - mToolbar.setNavigationIcon( - root != null ? root.loadToolbarIcon(mToolbar.getContext()) : null); - mToolbar.setNavigationContentDescription(R.string.drawer_open); - mToolbar.setNavigationOnClickListener(null); - - if (mSearchManager.isExpanded()) { - mToolbar.setTitle(null); - mToolbarStack.setVisibility(View.GONE); - mToolbarStack.setAdapter(null); - } else { - if (mState.stack.size() <= 1) { - mToolbar.setTitle(root.title); - mToolbarStack.setVisibility(View.GONE); - mToolbarStack.setAdapter(null); - } else { - mToolbar.setTitle(null); - mToolbarStack.setVisibility(View.VISIBLE); - mToolbarStack.setAdapter(mStackAdapter); - - mStackListener.mIgnoreNextNavigation = true; - mToolbarStack.setSelection(mStackAdapter.getCount() - 1); - } - } - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - boolean showMenu = super.onCreateOptionsMenu(menu); - - expandMenus(menu); - return showMenu; - } - - @Override - public boolean onPrepareOptionsMenu(Menu menu) { - boolean shown = super.onPrepareOptionsMenu(menu); - - final RootInfo root = getCurrentRoot(); - final DocumentInfo cwd = getCurrentDirectory(); - - final MenuItem createDir = menu.findItem(R.id.menu_create_dir); - final MenuItem advanced = menu.findItem(R.id.menu_advanced); - final MenuItem fileSize = menu.findItem(R.id.menu_file_size); - final MenuItem settings = menu.findItem(R.id.menu_settings); - - createDir.setVisible(cwd != null - && cwd.isCreateSupported() - && !mSearchManager.isSearching() - && !root.isDownloads()); - - fileSize.setVisible(cwd != null); - advanced.setVisible(cwd != null); - - settings.setVisible((root.flags & Root.FLAG_HAS_SETTINGS) != 0); - - return shown; - } - - @Override - public void onBackPressed() { - if (!mState.stackTouched) { - super.onBackPressed(); - return; - } - - final int size = mState.stack.size(); - if (size > 1) { - mState.stack.pop(); - onCurrentDirectoryChanged(ANIM_UP); - } else { - super.onBackPressed(); - } - } - - @Override - public State getDisplayState() { - return mState; - } - - @Override - void onDirectoryChanged(int anim) { - final FragmentManager fm = getFragmentManager(); - final RootInfo root = getCurrentRoot(); - final DocumentInfo cwd = getCurrentDirectory(); - - mDirectoryContainer.setDrawDisappearingFirst(anim == ANIM_DOWN); - - if (cwd == null) { - DirectoryFragment.showRecentsOpen(fm, anim); - - // Start recents in grid when requesting visual things - final boolean visualMimes = MimePredicate.mimeMatches( - MimePredicate.VISUAL_MIMES, mState.acceptMimes); - mState.userMode = visualMimes ? State.MODE_GRID : State.MODE_LIST; - mState.derivedMode = mState.userMode; - } else { - if (mState.currentSearch != null) { - // Ongoing search - DirectoryFragment.showSearch(fm, root, mState.currentSearch, anim); - } else { - // Normal boring directory - DirectoryFragment.showNormal(fm, root, cwd, anim); - } - } - } - - @Override - public void onDocumentPicked(DocumentInfo doc) { - if (doc.isDirectory()) { - mState.stack.push(doc); - mState.stackTouched = true; - onCurrentDirectoryChanged(ANIM_DOWN); - } else { - // Fall back to viewing - final Intent view = new Intent(Intent.ACTION_VIEW); - view.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); - view.setData(doc.derivedUri); - - try { - startActivity(view); - } catch (ActivityNotFoundException ex2) { - Toast.makeText(this, R.string.toast_no_application, Toast.LENGTH_SHORT).show(); - } - } - } - - public void onDocumentsPicked(List<DocumentInfo> docs) { - // TODO - } - - @Override - void saveStackBlocking() { - final ContentResolver resolver = getContentResolver(); - final ContentValues values = new ContentValues(); - - final byte[] rawStack = DurableUtils.writeToArrayOrNull( - getDisplayState().stack); - - // Remember location for next app launch - final String packageName = getCallingPackageMaybeExtra(); - values.clear(); - values.put(ResumeColumns.STACK, rawStack); - values.put(ResumeColumns.EXTERNAL, 0); - resolver.insert(RecentsProvider.buildResume(packageName), values); - } - - @Override - void onTaskFinished(Uri... uris) { - Log.d(TAG, "onFinished() " + Arrays.toString(uris)); - - final Intent intent = new Intent(); - if (uris.length == 1) { - intent.setData(uris[0]); - } else if (uris.length > 1) { - final ClipData clipData = new ClipData( - null, mState.acceptMimes, new ClipData.Item(uris[0])); - for (int i = 1; i < uris.length; i++) { - clipData.addItem(new ClipData.Item(uris[i])); - } - intent.setClipData(clipData); - } - - intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION - | Intent.FLAG_GRANT_WRITE_URI_PERMISSION - | Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION); - - setResult(Activity.RESULT_OK, intent); - finish(); - } -} diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java index 09e6912..28fa8fb 100644 --- a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java +++ b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java @@ -26,6 +26,7 @@ import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.os.Handler; +import android.os.Looper; import android.os.Message; import android.widget.Toast; @@ -63,10 +64,12 @@ public class WifiTracker { private final boolean mIncludeScans; private final boolean mIncludePasspoints; + private final MainHandler mMainHandler; + private final WorkHandler mWorkHandler; + private boolean mSavedNetworksExist; private boolean mRegistered; private ArrayList<AccessPoint> mAccessPoints = new ArrayList<>(); - private ArrayList<AccessPoint> mCachedAccessPoints = new ArrayList<>(); private NetworkInfo mLastNetworkInfo; private WifiInfo mLastInfo; @@ -74,23 +77,38 @@ public class WifiTracker { @VisibleForTesting Scanner mScanner; - public WifiTracker(Context context, WifiListener wifiListener, boolean includeSaved, - boolean includeScans) { - this(context, wifiListener, includeSaved, includeScans, false); + public WifiTracker(Context context, WifiListener wifiListener, + boolean includeSaved, boolean includeScans) { + this(context, wifiListener, null, includeSaved, includeScans); } - public WifiTracker(Context context, WifiListener wifiListener, boolean includeSaved, - boolean includeScans, boolean includePasspoints) { - this(context, wifiListener, includeSaved, includeScans, includePasspoints, + + public WifiTracker(Context context, WifiListener wifiListener, Looper workerLooper, + boolean includeSaved, boolean includeScans) { + this(context, wifiListener, workerLooper, includeSaved, includeScans, false); + } + + public WifiTracker(Context context, WifiListener wifiListener, + boolean includeSaved, boolean includeScans, boolean includePasspoints) { + this(context, wifiListener, null, includeSaved, includeScans, includePasspoints); + } + + public WifiTracker(Context context, WifiListener wifiListener, Looper workerLooper, + boolean includeSaved, boolean includeScans, boolean includePasspoints) { + this(context, wifiListener, workerLooper, includeSaved, includeScans, includePasspoints, (WifiManager) context.getSystemService(Context.WIFI_SERVICE)); } @VisibleForTesting - WifiTracker(Context context, WifiListener wifiListener, boolean includeSaved, - boolean includeScans, boolean includePasspoints, WifiManager wifiManager) { + WifiTracker(Context context, WifiListener wifiListener, Looper workerLooper, + boolean includeSaved, boolean includeScans, boolean includePasspoints, + WifiManager wifiManager) { if (!includeSaved && !includeScans) { throw new IllegalArgumentException("Must include either saved or scans"); } mContext = context; + mMainHandler = new MainHandler(); + mWorkHandler = new WorkHandler( + workerLooper != null ? workerLooper : Looper.myLooper()); mWifiManager = wifiManager; mIncludeSaved = includeSaved; mIncludeScans = includeScans; @@ -147,7 +165,7 @@ public class WifiTracker { if (mWifiManager.isWifiEnabled()) { mScanner.resume(); } - updateAccessPoints(); + mWorkHandler.sendEmptyMessage(WorkHandler.MSG_UPDATE_ACCESS_POINTS); } /** @@ -213,16 +231,14 @@ public class WifiTracker { private void updateAccessPoints() { // Swap the current access points into a cached list. - ArrayList<AccessPoint> tmpSwp = mAccessPoints; - mAccessPoints = mCachedAccessPoints; - mCachedAccessPoints = tmpSwp; + ArrayList<AccessPoint> cachedAccessPoints = new ArrayList<>(mAccessPoints); + ArrayList<AccessPoint> accessPoints = new ArrayList<>(); + // Clear out the configs so we don't think something is saved when it isn't. - for (AccessPoint accessPoint : mCachedAccessPoints) { + for (AccessPoint accessPoint : cachedAccessPoints) { accessPoint.clearConfig(); } - mAccessPoints.clear(); - /** Lookup table to more quickly update AccessPoints by only considering objects with the * correct SSID. Maps SSID -> List of AccessPoints with the given SSID. */ Multimap<String, AccessPoint> apMap = new Multimap<String, AccessPoint>(); @@ -238,7 +254,7 @@ public class WifiTracker { if (config.selfAdded && config.numAssociation == 0) { continue; } - AccessPoint accessPoint = getCachedOrCreate(config); + AccessPoint accessPoint = getCachedOrCreate(config, cachedAccessPoints); if (mLastInfo != null && mLastNetworkInfo != null) { if (config.isPasspoint() == false) { accessPoint.update(mLastInfo, mLastNetworkInfo); @@ -246,7 +262,7 @@ public class WifiTracker { } if (mIncludeSaved) { if (!config.isPasspoint() || mIncludePasspoints) - mAccessPoints.add(accessPoint); + accessPoints.add(accessPoint); if (config.isPasspoint() == false) { apMap.put(accessPoint.getSsid(), accessPoint); @@ -254,7 +270,7 @@ public class WifiTracker { } else { // If we aren't using saved networks, drop them into the cache so that // we have access to their saved info. - mCachedAccessPoints.add(accessPoint); + cachedAccessPoints.add(accessPoint); } } } @@ -276,7 +292,7 @@ public class WifiTracker { } } if (!found && mIncludeScans) { - AccessPoint accessPoint = getCachedOrCreate(result); + AccessPoint accessPoint = getCachedOrCreate(result, cachedAccessPoints); if (mLastInfo != null && mLastNetworkInfo != null) { accessPoint.update(mLastInfo, mLastNetworkInfo); } @@ -296,24 +312,23 @@ public class WifiTracker { accessPoint.update(connectionConfig); } - mAccessPoints.add(accessPoint); + accessPoints.add(accessPoint); apMap.put(accessPoint.getSsid(), accessPoint); } } } // Pre-sort accessPoints to speed preference insertion - Collections.sort(mAccessPoints); - if (mListener != null) { - mListener.onAccessPointsChanged(); - } + Collections.sort(accessPoints); + mAccessPoints = accessPoints; + mMainHandler.sendEmptyMessage(MainHandler.MSG_ACCESS_POINT_CHANGED); } - private AccessPoint getCachedOrCreate(ScanResult result) { - final int N = mCachedAccessPoints.size(); + private AccessPoint getCachedOrCreate(ScanResult result, ArrayList<AccessPoint> cache) { + final int N = cache.size(); for (int i = 0; i < N; i++) { - if (mCachedAccessPoints.get(i).matches(result)) { - AccessPoint ret = mCachedAccessPoints.remove(i); + if (cache.get(i).matches(result)) { + AccessPoint ret = cache.remove(i); ret.update(result); return ret; } @@ -321,11 +336,11 @@ public class WifiTracker { return new AccessPoint(mContext, result); } - private AccessPoint getCachedOrCreate(WifiConfiguration config) { - final int N = mCachedAccessPoints.size(); + private AccessPoint getCachedOrCreate(WifiConfiguration config, ArrayList<AccessPoint> cache) { + final int N = cache.size(); for (int i = 0; i < N; i++) { - if (mCachedAccessPoints.get(i).matches(config)) { - AccessPoint ret = mCachedAccessPoints.remove(i); + if (cache.get(i).matches(config)) { + AccessPoint ret = cache.remove(i); ret.loadConfig(config); return ret; } @@ -360,9 +375,7 @@ public class WifiTracker { } if (reorder) { Collections.sort(mAccessPoints); - if (mListener != null) { - mListener.onAccessPointsChanged(); - } + mMainHandler.sendEmptyMessage(MainHandler.MSG_ACCESS_POINT_CHANGED); } } @@ -380,15 +393,13 @@ public class WifiTracker { mScanner.pause(); } } - if (mListener != null) { - mListener.onWifiStateChanged(state); - } + mMainHandler.obtainMessage(MainHandler.MSG_WIFI_STATE_CHANGED, state, 0).sendToTarget(); } public static List<AccessPoint> getCurrentAccessPoints(Context context, boolean includeSaved, boolean includeScans, boolean includePasspoints) { WifiTracker tracker = new WifiTracker(context, - null, includeSaved, includeScans, includePasspoints); + null, null, includeSaved, includeScans, includePasspoints); tracker.forceUpdate(); return tracker.getAccessPoints(); } @@ -404,22 +415,68 @@ public class WifiTracker { } else if (WifiManager.SCAN_RESULTS_AVAILABLE_ACTION.equals(action) || WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION.equals(action) || WifiManager.LINK_CONFIGURATION_CHANGED_ACTION.equals(action)) { - updateAccessPoints(); + mWorkHandler.sendEmptyMessage(WorkHandler.MSG_UPDATE_ACCESS_POINTS); } else if (WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(action)) { NetworkInfo info = (NetworkInfo) intent.getParcelableExtra( WifiManager.EXTRA_NETWORK_INFO); mConnected.set(info.isConnected()); - if (mListener != null) { - mListener.onConnectedChanged(); - } - updateAccessPoints(); - updateNetworkInfo(info); + + mMainHandler.sendEmptyMessage(MainHandler.MSG_CONNECTED_CHANGED); + + mWorkHandler.sendEmptyMessage(WorkHandler.MSG_UPDATE_ACCESS_POINTS); + mWorkHandler.obtainMessage(WorkHandler.MSG_UPDATE_NETWORK_INFO, info) + .sendToTarget(); } else if (WifiManager.RSSI_CHANGED_ACTION.equals(action)) { - updateNetworkInfo(null); + mWorkHandler.sendEmptyMessage(WorkHandler.MSG_UPDATE_NETWORK_INFO); } } }; + private final class MainHandler extends Handler { + private static final int MSG_CONNECTED_CHANGED = 0; + private static final int MSG_WIFI_STATE_CHANGED = 1; + private static final int MSG_ACCESS_POINT_CHANGED = 2; + + @Override + public void handleMessage(Message msg) { + if (mListener == null) { + return; + } + switch (msg.what) { + case MSG_CONNECTED_CHANGED: + mListener.onConnectedChanged(); + break; + case MSG_WIFI_STATE_CHANGED: + mListener.onWifiStateChanged(msg.arg1); + break; + case MSG_ACCESS_POINT_CHANGED: + mListener.onAccessPointsChanged(); + break; + } + } + } + + private final class WorkHandler extends Handler { + private static final int MSG_UPDATE_ACCESS_POINTS = 0; + private static final int MSG_UPDATE_NETWORK_INFO = 1; + + public WorkHandler(Looper looper) { + super(looper); + } + + @Override + public void handleMessage(Message msg) { + switch (msg.what) { + case MSG_UPDATE_ACCESS_POINTS: + updateAccessPoints(); + break; + case MSG_UPDATE_NETWORK_INFO: + updateNetworkInfo((NetworkInfo) msg.obj); + break; + } + } + } + @VisibleForTesting class Scanner extends Handler { private static final int MSG_SCAN = 0; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java index f77ac4b..9ef9211 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java @@ -729,7 +729,8 @@ public class NotificationPanelView extends PanelView implements } private boolean handleQsTouch(MotionEvent event) { - if (event.getActionMasked() == MotionEvent.ACTION_DOWN && getExpandedFraction() == 1f + final int action = event.getActionMasked(); + if (action == MotionEvent.ACTION_DOWN && getExpandedFraction() == 1f && mStatusBar.getBarState() != StatusBarState.KEYGUARD && !mQsExpanded && mQsExpansionEnabled) { @@ -750,16 +751,21 @@ public class NotificationPanelView extends PanelView implements return true; } } - if (event.getActionMasked() == MotionEvent.ACTION_CANCEL - || event.getActionMasked() == MotionEvent.ACTION_UP) { + if (action == MotionEvent.ACTION_CANCEL || action == MotionEvent.ACTION_UP) { mConflictingQsExpansionGesture = false; } - if (event.getActionMasked() == MotionEvent.ACTION_DOWN && isFullyCollapsed() + if (action == MotionEvent.ACTION_DOWN && isFullyCollapsed() && mQsExpansionEnabled) { mTwoFingerQsExpandPossible = true; } - if (mTwoFingerQsExpandPossible && event.getActionMasked() == MotionEvent.ACTION_POINTER_DOWN - && event.getPointerCount() == 2 + final int pointerCount = event.getPointerCount(); + final boolean twoFingerDrag = action == MotionEvent.ACTION_POINTER_DOWN + && pointerCount == 2; + final boolean stylusClickDrag = action == MotionEvent.ACTION_DOWN + && pointerCount == 1 && event.getToolType(0) == MotionEvent.TOOL_TYPE_STYLUS + && (event.isButtonPressed(MotionEvent.BUTTON_SECONDARY) + || event.isButtonPressed(MotionEvent.BUTTON_TERTIARY)); + if (mTwoFingerQsExpandPossible && (twoFingerDrag || stylusClickDrag) && event.getY(event.getActionIndex()) < mStatusBarMinHeight) { MetricsLogger.count(mContext, COUNTER_PANEL_OPEN_QS, 1); mQsExpandImmediate = 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 471196c..da65a01 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -756,7 +756,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, // noop } }); - mNetworkController = new NetworkControllerImpl(mContext); + mNetworkController = new NetworkControllerImpl(mContext, mHandlerThread.getLooper()); mHotspotController = new HotspotControllerImpl(mContext); mBluetoothController = new BluetoothControllerImpl(mContext, mHandlerThread.getLooper()); mSecurityController = new SecurityControllerImpl(mContext); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/AccessPointControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/AccessPointControllerImpl.java index 18983ff..5893cb2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/AccessPointControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/AccessPointControllerImpl.java @@ -20,6 +20,7 @@ import android.app.ActivityManager; import android.content.Context; import android.content.Intent; import android.net.wifi.WifiManager.ActionListener; +import android.os.Looper; import android.os.UserHandle; import android.os.UserManager; import android.provider.Settings; @@ -58,10 +59,10 @@ public class AccessPointControllerImpl private int mCurrentUser; - public AccessPointControllerImpl(Context context) { + public AccessPointControllerImpl(Context context, Looper bgLooper) { mContext = context; mUserManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE); - mWifiTracker = new WifiTracker(context, this, false, true); + mWifiTracker = new WifiTracker(context, this, bgLooper, false, true); mCurrentUser = ActivityManager.getCurrentUser(); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java index df133e4..92e0365 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java @@ -28,6 +28,7 @@ import android.net.NetworkCapabilities; import android.net.wifi.WifiManager; import android.os.AsyncTask; import android.os.Bundle; +import android.os.Looper; import android.provider.Settings; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; @@ -115,12 +116,13 @@ public class NetworkControllerImpl extends BroadcastReceiver /** * Construct this controller object and register for updates. */ - public NetworkControllerImpl(Context context) { + public NetworkControllerImpl(Context context, Looper bgLooper) { this(context, (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE), (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE), (WifiManager) context.getSystemService(Context.WIFI_SERVICE), SubscriptionManager.from(context), Config.readConfig(context), - new AccessPointControllerImpl(context), new MobileDataControllerImpl(context)); + new AccessPointControllerImpl(context, bgLooper), + new MobileDataControllerImpl(context)); registerListeners(); } diff --git a/rs/java/android/renderscript/ScriptIntrinsicBLAS.java b/rs/java/android/renderscript/ScriptIntrinsicBLAS.java index 5e28d3f..f7e81b0 100644 --- a/rs/java/android/renderscript/ScriptIntrinsicBLAS.java +++ b/rs/java/android/renderscript/ScriptIntrinsicBLAS.java @@ -1039,14 +1039,8 @@ public final class ScriptIntrinsicBLAS extends ScriptIntrinsic { if (cM != cN) { throw new RSRuntimeException("Matrix C is not symmetric"); } - if (TransA != NO_TRANSPOSE) { - if (aN != cM) { - throw new RSRuntimeException("Called BLAS with invalid dimensions"); - } - } else { - if (aM != cM) { - throw new RSRuntimeException("Called BLAS with invalid dimensions"); - } + if (aM != cM) { + throw new RSRuntimeException("Called BLAS with invalid dimensions"); } } else if (A != null && B != null) { // A and B only diff --git a/services/core/java/com/android/server/connectivity/Vpn.java b/services/core/java/com/android/server/connectivity/Vpn.java index ac55292..aeecdf3 100644 --- a/services/core/java/com/android/server/connectivity/Vpn.java +++ b/services/core/java/com/android/server/connectivity/Vpn.java @@ -217,14 +217,21 @@ public class Vpn { * @return true if the operation is succeeded. */ public synchronized boolean prepare(String oldPackage, String newPackage) { - if (oldPackage != null && getAppUid(oldPackage, mUserHandle) != mOwnerUID) { - // The package doesn't match. We return false (to obtain user consent) unless the user - // has already consented to that VPN package. - if (!oldPackage.equals(VpnConfig.LEGACY_VPN) && isVpnUserPreConsented(oldPackage)) { - prepareInternal(oldPackage); - return true; + if (oldPackage != null) { + if (getAppUid(oldPackage, mUserHandle) != mOwnerUID) { + // The package doesn't match. We return false (to obtain user consent) unless the + // user has already consented to that VPN package. + if (!oldPackage.equals(VpnConfig.LEGACY_VPN) && isVpnUserPreConsented(oldPackage)) { + prepareInternal(oldPackage); + return true; + } + return false; + } else if (!oldPackage.equals(VpnConfig.LEGACY_VPN) + && !isVpnUserPreConsented(oldPackage)) { + // Currently prepared VPN is revoked, so unprepare it and return false. + prepareInternal(VpnConfig.LEGACY_VPN); + return false; } - return false; } // Return true if we do not need to revoke. @@ -481,6 +488,10 @@ public class Vpn { if (Binder.getCallingUid() != mOwnerUID) { return null; } + // Check to ensure consent hasn't been revoked since we were prepared. + if (!isVpnUserPreConsented(mPackage)) { + return null; + } // Check if the service is properly declared. Intent intent = new Intent(VpnConfig.SERVICE_INTERFACE); intent.setClassName(mPackage, config.user); diff --git a/services/usage/java/com/android/server/usage/UsageStatsService.java b/services/usage/java/com/android/server/usage/UsageStatsService.java index 117cbe4..48b127a 100644 --- a/services/usage/java/com/android/server/usage/UsageStatsService.java +++ b/services/usage/java/com/android/server/usage/UsageStatsService.java @@ -718,10 +718,10 @@ public class UsageStatsService extends SystemService implements } @Override - public boolean isAppIdle(String packageName, int userId) { + public boolean isAppInactive(String packageName, int userId) { try { userId = ActivityManagerNative.getDefault().handleIncomingUser(Binder.getCallingPid(), - Binder.getCallingUid(), userId, false, true, "isAppIdle", null); + Binder.getCallingUid(), userId, false, true, "isAppInactive", null); } catch (RemoteException re) { return false; } @@ -734,7 +734,7 @@ public class UsageStatsService extends SystemService implements } @Override - public void setAppIdle(String packageName, boolean idle, int userId) { + public void setAppInactive(String packageName, boolean idle, int userId) { final int callingUid = Binder.getCallingUid(); try { userId = ActivityManagerNative.getDefault().handleIncomingUser( |