Compare commits

..

133 Commits

Author SHA1 Message Date
Cameron Gutman 077cb2103d Version 10.1 2022-05-18 22:44:46 -05:00
Cameron Gutman cdeda011a4 Temporarily disable in-app links until they are translated 2022-05-18 22:40:47 -05:00
Cameron Gutman 894c146988 Fix JAVA_HOME path on VS2022 CI image 2022-05-18 00:57:05 -05:00
Cameron Gutman 61cc9e151f Use newer AppVeyor machine image 2022-05-18 00:38:47 -05:00
Cameron Gutman cfe4c9ff21 Target Android 12L 2022-05-17 17:16:28 -05:00
Cameron Gutman d4bd29b320 Properly deal with battery saver mode in capped FPS mode 2022-05-17 00:14:55 -05:00
Cameron Gutman 7f2f2056c3 Add in-app privacy policy link to comply with Google Play policies
Also added Setup Guide and Troubleshooting Guide links too.
2022-05-15 15:56:19 -05:00
Cameron Gutman 4dd3b2cfb7 Tweak capped FPS option text 2022-05-14 23:33:43 -05:00
Cameron Gutman 2e62ad0f00 Merge remote-tracking branch 'origin/weblate' 2022-05-14 23:31:51 -05:00
Cameron Gutman 41ef292b82 Fix frame rate cap not taking effect with the unlock FPS option enabled 2022-05-14 21:19:51 -05:00
Cameron Gutman aa60671c88 Return the selected refresh rate now that the capped FPS mode is not default 2022-05-14 20:53:42 -05:00
Cameron Gutman f1ccba39e8 Don't raise refresh rate above stream FPS except in min latency mode 2022-05-14 20:53:07 -05:00
Cameron Gutman 226e580a30 Prevent microstutter in balanced mode when streaming at 60 FPS on a 120 Hz display 2022-05-14 20:08:41 -05:00
Cameron Gutman 6f8e719200 Update AGP 2022-05-14 18:25:48 -05:00
Cameron Gutman c127af1e05 Rewrite polling logic to avoid needing to poll using a separate socket first 2022-05-14 18:14:37 -05:00
Wen-haur Chiu 648904cc69 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (211 of 211 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/zh_Hant/
2022-05-11 19:13:59 +02:00
Cameron Gutman dc85ddb3f9 Reintroduce option of using old frame pacing algorithm using capped FPS 2022-05-08 15:20:08 -05:00
Cameron Gutman 23a7d8555f Avoid activity restarts in StreamSettings and AddComputerManually
We would ideally save and restore state, but this is fine for these specific
transient user activities.

Fixes #1052
Fixes #1055
2022-05-08 14:55:47 -05:00
Cameron Gutman bc9e250d34 Merge remote-tracking branch 'origin/weblate' 2022-05-08 14:40:07 -05:00
Cameron Gutman 2203186527 Remove extra ViewGroup between OSC and StreamView
This allows touch events to be properly split
2022-05-08 14:39:32 -05:00
DankXylese 53d3d9ecb8 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (210 of 210 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/uk/
2022-04-28 21:13:07 +02:00
Cameron Gutman de549f67a1 Update README 2022-04-05 19:51:44 -05:00
Jorys Paulin 755c41481a Translated using Weblate (French)
Currently translated at 100.0% (210 of 210 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/fr/
2022-04-04 10:12:11 +02:00
Dominik Chrástecký aebc2126bc Added translation using Weblate (Czech) 2022-04-03 19:50:26 +02:00
Wen-haur Chiu f43547fb31 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (210 of 210 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/zh_Hant/
2022-03-25 18:11:43 +01:00
CorteX 398e4df7cf Translated using Weblate (Chinese (Simplified))
Currently translated at 98.0% (206 of 210 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/zh_Hans/
2022-03-23 06:58:35 +01:00
reloxx13 ff68efc3f5 Translated using Weblate (German)
Currently translated at 100.0% (210 of 210 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/de/
2022-03-21 09:59:13 +01:00
Caio Gabriel 8ba2f51bda Translated using Weblate (Portuguese)
Currently translated at 9.0% (19 of 210 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/pt/
2022-03-19 22:58:22 +01:00
Caio Gabriel 87b79b278b Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (210 of 210 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/pt_BR/
2022-03-19 22:58:21 +01:00
Caio Gabriel 121e3ea9be Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (210 of 210 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/pt_BR/
2022-03-18 16:45:57 +01:00
Caio Gabriel ec6ed79ee1 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (210 of 210 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/pt_BR/
2022-03-18 03:47:44 +01:00
Caio Gabriel ca125826a7 Translated using Weblate (Portuguese)
Currently translated at 8.5% (18 of 210 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/pt/
2022-03-17 22:58:19 +01:00
Cameron Gutman dd0aecf108 Update BouncyCastle 2022-03-15 22:16:41 -05:00
Wen-haur Chiu ef5cb2f0cd Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (210 of 210 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/zh_Hant/
2022-03-09 15:58:49 +01:00
Cameron Gutman e5a7bb40e9 Version 10.0 2022-03-08 19:29:48 -06:00
Cameron Gutman bfdda48fee Merge remote-tracking branch 'origin/weblate' 2022-03-05 17:22:58 -06:00
Cameron Gutman ebea1bb5c1 Update AGP 2022-03-05 17:21:41 -06:00
bruh 14bc1552fc Translated using Weblate (Vietnamese)
Currently translated at 100.0% (210 of 210 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/vi/
2022-03-03 11:56:18 +01:00
Emanuele Conti a5b80d3944 Translated using Weblate (Italian)
Currently translated at 100.0% (210 of 210 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/it/
2022-03-03 11:56:18 +01:00
Emanuele Conti 75d0eedc2b Translated using Weblate (Italian)
Currently translated at 90.9% (191 of 210 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/it/
2022-02-23 16:58:16 +01:00
Benjamín Bustos 29ac7028fa Translated using Weblate (Spanish)
Currently translated at 56.1% (118 of 210 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/es/
2022-02-23 16:58:15 +01:00
Cameron Gutman 8a63b61495 Avoid touchscreens when looking for pointer capture capable devices 2022-02-18 17:07:23 -06:00
Cameron Gutman eb9e6443e2 Display frame pacing mode in crash logs 2022-02-18 17:00:21 -06:00
Cameron Gutman 362c466a16 Reintroduce never drop frames option 2022-02-18 16:04:49 -06:00
Cameron Gutman 5dac42646b Merge remote-tracking branch 'origin/weblate' 2022-02-17 23:48:52 -06:00
Cameron Gutman c25faf6426 Replace frame pacing hack with Choreographer-based rendering
This mimics the frame pacing logic now present in the iOS client.
2022-02-17 23:48:02 -06:00
Wen-haur Chiu 81df1245b4 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (205 of 205 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/zh_Hant/
2022-02-16 14:57:48 +01:00
Emanuele Conti 2bf4d92185 Translated using Weblate (Italian)
Currently translated at 72.6% (149 of 205 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/it/
2022-02-16 14:57:48 +01:00
Wen-haur Chiu ae6073fe80 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (205 of 205 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/zh_Hant/
2022-02-14 12:55:53 +01:00
Wen-haur Chiu d0463da2a1 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (205 of 205 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/zh_Hant/
2022-02-13 05:52:36 +01:00
Cameron Gutman c0f8001627 Ignore relative mouse inputs from non-mouse tools
Apparently this can happen for the SPen on Android 12
2022-02-12 19:50:59 -06:00
Cameron Gutman f39bf61b04 Try to wake the host PC when connecting via the ShortcutTrampoline
Fixes #1024
2022-02-12 18:35:12 -06:00
Cameron Gutman 9c8237dab0 Add Greek language option 2022-02-12 17:52:31 -06:00
Cameron Gutman b88251fa79 Fix translation-related Lint warnings/errors 2022-02-12 17:44:09 -06:00
Cameron Gutman 208855917e Move existing translated arrays.xml strings to strings.xml 2022-02-12 17:39:00 -06:00
Cameron Gutman 34bdf450e9 Merge remote-tracking branch 'origin/weblate' 2022-02-12 17:21:49 -06:00
Cameron Gutman 998fa1f4e9 Move translatable array strings into strings.xml for Weblate support 2022-02-12 17:20:56 -06:00
人工知能 5c80f7d58c Update arrays.xml (#1042)
fix translations
2022-02-12 14:37:54 -06:00
Cameron Gutman 7552181e24 Plumb setHdrMode callback into MediaCodecDecoderRenderer 2022-02-12 14:31:25 -06:00
Cameron Gutman 4b2e26050e Only enable pointer capture if a compatible input device is connected 2022-02-12 14:21:19 -06:00
Cameron Gutman 530b48de71 Move recapture on focus gain logic to InputCaptureProvider 2022-02-12 13:58:55 -06:00
Emanuele Conti f4721901f8 Translated using Weblate (Italian)
Currently translated at 76.1% (144 of 189 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/it/
2022-02-08 18:54:38 +01:00
Cameron Gutman 8b692269c1 Remove per-app HDR support check
It doesn't seem to make a difference anymore whether it's supported or not.
GFE seems happy to enter HDR mode anyway.
2022-02-07 20:23:11 -06:00
Cameron Gutman 079eca7b4d Update AGP and Gradle 2022-02-06 22:18:24 -06:00
Wh1t3st4r fee40cdbe2 Translated using Weblate (Portuguese)
Currently translated at 7.9% (15 of 189 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/pt/
2022-02-01 17:52:56 +01:00
Wh1t3st4r 66920bb4cb Added translation using Weblate (Portuguese) 2022-01-31 17:10:49 +01:00
Wh1t3st4r fdbf810aa2 Added translation using Weblate (Portuguese (Brazil)) 2022-01-31 16:08:38 +01:00
GeraltOfTrivia 08bfc1de4a Translated using Weblate (Greek)
Currently translated at 98.9% (187 of 189 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/el/
2022-01-25 18:56:12 +01:00
GeraltOfTrivia 76149328fe Added translation using Weblate (Greek) 2022-01-24 17:51:06 +01:00
Wout Rombouts 285f33f3f1 Translated using Weblate (Dutch)
Currently translated at 100.0% (189 of 189 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/nl/
2022-01-19 12:55:54 +01:00
Wen-haur Chiu b17c1b7588 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (189 of 189 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/zh_Hant/
2022-01-13 16:54:04 +01:00
Wen-haur Chiu 5b25c90db8 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (189 of 189 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/zh_Hant/
2021-12-28 10:52:10 +01:00
Wen-haur Chiu 931a0a5168 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (189 of 189 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/zh_Hant/
2021-12-27 10:16:59 +01:00
Cameron Gutman f6a46438bd Merge remote-tracking branch 'origin/weblate' 2021-12-15 20:56:10 -06:00
Cameron Gutman 4a60ec1755 Fix excessive high-res scroll speed on newer GFE versions 2021-12-14 22:02:12 -06:00
Cameron Gutman ec222413dd Update NDK and AGP 2021-12-14 21:48:44 -06:00
Wen-haur Chiu 5a28239813 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (189 of 189 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/zh_Hant/
2021-12-13 09:53:46 +01:00
Cameron Gutman da45cba2ff Send fractional scroll events properly 2021-12-08 22:11:44 -06:00
Cameron Gutman 54bc34496a Merge remote-tracking branch 'origin/weblate' 2021-10-06 21:18:00 -05:00
Zero O 294910ac84 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (189 of 189 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/zh_Hant/
2021-09-14 03:39:29 +02:00
Mert 71d2c6a5d5 Translated using Weblate (Turkish)
Currently translated at 21.1% (40 of 189 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/tr/
2021-08-24 21:34:36 +02:00
Cameron Gutman 79bf17fe24 Add fastlane metadata for v9.10.1 2021-08-21 15:25:45 -05:00
Cameron Gutman 31f66031bc Version 9.10.1 2021-08-21 15:22:05 -05:00
Cameron Gutman d3f2284791 Update NDK to r23 2021-08-18 00:33:57 -05:00
Cameron Gutman ec647608c4 Allow state loss when committing SettingsFragment 2021-08-18 00:24:30 -05:00
Cameron Gutman 597582ddd8 Add workaround for NPE in getNetworkInterfaces() 2021-08-18 00:04:34 -05:00
Cameron Gutman c6d9889182 Fix lint results path for Gradle 7.0 2021-08-10 02:12:03 -05:00
Cameron Gutman 7c58234174 Use JDK 11 for Gradle 7.0 2021-08-10 02:02:24 -05:00
Cameron Gutman ae9282b0af Plumb UTF-8 text support through to NvConnection 2021-08-10 00:14:13 -05:00
Cameron Gutman 310ba646fc Update Gradle 2021-08-09 23:24:44 -05:00
LiuAnnan d479908939 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (189 of 189 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/zh_Hans/
2021-07-30 13:33:24 +02:00
Nikita Epifanov 5cd5d68d22 Translated using Weblate (Russian)
Currently translated at 100.0% (189 of 189 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/ru/
2021-07-23 10:32:56 +02:00
Cameron Gutman 3e0bf25acb Update moonlight-common-c 2021-07-17 14:16:40 -05:00
Cameron Gutman f3d277c94a Update Maven dependencies 2021-07-17 14:01:59 -05:00
Cameron Gutman 04545ecbb0 Avoid tons of redundant calls to InputEvent.getSource() 2021-07-17 14:01:12 -05:00
Cameron Gutman 5350651d6f Fix crash when using USB driver on Android 12 2021-07-17 13:59:11 -05:00
Cameron Gutman f2e2e28419 Fix NPE if we receive a SOURCE_CLASS_POSITION event with no associated device 2021-07-17 13:15:57 -05:00
Cameron Gutman b9031785ac Fix crash if maxShortcutCountPerActivity is zero 2021-07-17 13:08:25 -05:00
Cameron Gutman 91a72474a1 Version 9.10 r2 2021-07-16 21:01:16 -05:00
Cameron Gutman b6e7c425c6 Fix input from SOURCE_TRACKPAD devices 2021-07-16 20:44:01 -05:00
Cameron Gutman 834ace4566 Add SoC details and performance class to exception data 2021-07-16 20:00:03 -05:00
Cameron Gutman 54af70005d Fix spurious gamepad removal when entering PiP with PS4 controller on Android 12
The relative mouse axes AXIS_RELATIVE_X/Y are added/removed when gaining/losing input focus
2021-07-16 19:51:14 -05:00
Cameron Gutman f2bf168925 Fix possible rumble crash if only the lower motor byte is non-zero 2021-07-16 19:25:10 -05:00
Cameron Gutman 27ffbd8dec Version 9.10 2021-07-16 19:23:37 -05:00
Cameron Gutman eaa82592fe Merge remote-tracking branch 'origin/weblate' 2021-07-15 19:59:07 -05:00
Cameron Gutman 73784585a8 Fix new Android 12 rumble code based on real hardware testing
Independent rumble motor controller tested working on:
- DualShock 4 (USB and BT)
- DualShock 3 (USB)
- Xbox Series X (USB)
2021-07-15 19:51:08 -05:00
Cameron Gutman 262d562dd9 Implement enhanced rumble support for Android 12 devices
This allows independent control of large and small motors which
was not possible with the old single Vibrator API.

Currently untested on real hardware.
2021-07-14 20:18:35 -05:00
Cameron Gutman ab4f904dc9 Target Android 12 2021-07-14 20:04:46 -05:00
Cameron Gutman fc4fdd5ee2 Implement seamless PiP entry on Android 12 2021-07-14 20:00:53 -05:00
Cameron Gutman 41c5b62b1a Update AGP to 4.2.2 2021-07-14 19:58:12 -05:00
Cameron Gutman 239cb0435c Add new backup rules for Android 12 2021-07-14 19:58:01 -05:00
bruh c6ccc7a6e2 Translated using Weblate (Vietnamese)
Currently translated at 100.0% (189 of 189 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/vi/
2021-07-05 18:33:43 +02:00
Cameron Gutman 6cedb9019c Pass RTSP session URL to moonlight-common-c for dynamic ports 2021-07-02 17:41:07 -05:00
Furkan 8bc64f0438 Translated using Weblate (Turkish)
Currently translated at 19.0% (36 of 189 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/tr/
2021-07-02 18:33:32 +02:00
WALKTHROUGH RAYMAND LEGENDS 89e6e39e58 Translated using Weblate (Hungarian)
Currently translated at 100.0% (189 of 189 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/hu/
2021-07-02 18:33:31 +02:00
Furkan 645761f677 Added translation using Weblate (Turkish) 2021-07-01 17:53:08 +02:00
DankXylese 0fc60f7855 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (189 of 189 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/uk/
2021-06-30 13:33:24 +02:00
LUTEN VR ce38460d87 Translated using Weblate (Korean)
Currently translated at 100.0% (189 of 189 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/ko/
2021-06-28 03:36:01 +02:00
Jorys Paulin de8e759d3a Translated using Weblate (French)
Currently translated at 100.0% (189 of 189 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/fr/
2021-06-28 03:36:00 +02:00
Cameron Gutman 06f6134538 Version 9.9.6 2021-06-25 00:53:28 -05:00
Cameron Gutman ac352b3a23 Merge remote-tracking branch 'origin/weblate' 2021-06-25 00:26:06 -05:00
Cameron Gutman 9b8e65e552 Add cutout resolution options on Android 9 2021-06-25 00:24:26 -05:00
Cameron Gutman 35999a05f0 Minor code cleanup 2021-06-24 23:50:15 -05:00
Cameron Gutman 86ee30e9b4 Don't process drags for the non-primary finger 2021-06-24 23:19:06 -05:00
Allan Nordhøy a81c4a1e23 Translated using Weblate (Norwegian Bokmål)
Currently translated at 88.8% (168 of 189 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/nb_NO/
2021-06-24 07:32:33 +02:00
Cameron Gutman 394ce458a0 Add additional native resolution options on Android 10+ with display insets included
Fixes #956
Fixes #986
2021-06-22 23:56:45 -05:00
Cameron Gutman f187e57899 Fix FPS display on stats overlay 2021-06-22 23:43:10 -05:00
Cameron Gutman a15335872d Update moonlight-common-c to fix audio problems on old GFE and Sunshine versions 2021-06-22 22:12:32 -05:00
Cameron Gutman beb77b4dab Add Hungarian language option 2021-06-22 21:58:45 -05:00
Cameron Gutman aa80d8cd0a Change H.265 to HEVC 2021-06-22 21:53:15 -05:00
Cameron Gutman 77d197f14e Merge remote-tracking branch 'origin/weblate' 2021-06-22 21:50:57 -05:00
WALKTHROUGH RAYMAND LEGENDS f98fbb778c Translated using Weblate (Hungarian)
Currently translated at 100.0% (188 of 188 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/hu/
2021-06-15 14:32:25 +02:00
WALKTHROUGH RAYMAND LEGENDS cbf3db0be0 Added translation using Weblate (Hungarian) 2021-06-13 21:33:00 +02:00
75 changed files with 2540 additions and 1028 deletions
+1 -1
View File
@@ -3,7 +3,7 @@
[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/232a8tadrrn8jv0k/branch/master?svg=true)](https://ci.appveyor.com/project/cgutman/moonlight-android/branch/master)
[![Translation Status](https://hosted.weblate.org/widgets/moonlight/-/moonlight-android/svg-badge.svg)](https://hosted.weblate.org/projects/moonlight/moonlight-android/)
[Moonlight for Android](https://moonlight-stream.org) is an open source implementation of NVIDIA's GameStream, as used by the NVIDIA Shield.
[Moonlight for Android](https://moonlight-stream.org) is an open source client for NVIDIA GameStream, as used by the NVIDIA Shield.
Moonlight for Android will allow you to stream your full collection of games from your Windows PC to your Android device,
whether in your own home or over the internet.
+11 -11
View File
@@ -1,16 +1,16 @@
apply plugin: 'com.android.application'
android {
ndkVersion "22.1.7171670"
ndkVersion "23.1.7779620"
compileSdkVersion 30
compileSdkVersion 32
defaultConfig {
minSdkVersion 16
targetSdkVersion 30
targetSdkVersion 32
versionName "9.9.5"
versionCode = 267
versionName "10.1"
versionCode = 273
}
flavorDimensions "root"
@@ -43,9 +43,9 @@ android {
}
}
lintOptions {
lint {
disable 'MissingTranslation'
lintConfig file("lint.xml")
lintConfig file('lint.xml')
}
bundle {
@@ -118,10 +118,10 @@ android {
}
dependencies {
implementation 'org.bouncycastle:bcprov-jdk15on:1.66'
implementation 'org.bouncycastle:bcpkix-jdk15on:1.66'
implementation 'org.bouncycastle:bcprov-jdk15on:1.70'
implementation 'org.bouncycastle:bcpkix-jdk15on:1.70'
implementation 'org.jcodec:jcodec:0.2.3'
implementation 'com.squareup.okhttp3:okhttp:3.12.12'
implementation 'com.squareup.okhttp3:okhttp:3.12.13'
implementation 'com.squareup.okio:okio:1.17.5'
implementation 'org.jmdns:jmdns:3.5.5'
implementation 'org.jmdns:jmdns:3.5.7'
}
+3
View File
@@ -35,6 +35,7 @@
<application
android:allowBackup="true"
android:fullBackupContent="@xml/backup_rules"
android:dataExtractionRules="@xml/backup_rules_s"
android:networkSecurityConfig="@xml/network_security_config"
android:isGame="true"
android:banner="@drawable/atv_banner"
@@ -98,6 +99,7 @@
<activity
android:name=".preferences.StreamSettings"
android:resizeableActivity="true"
android:configChanges="mcc|mnc|touchscreen|keyboard|keyboardHidden|navigation|screenLayout|fontScale|uiMode|orientation|screenSize|smallestScreenSize|layoutDirection"
android:label="Streaming Settings">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
@@ -107,6 +109,7 @@
android:name=".preferences.AddComputerManually"
android:resizeableActivity="true"
android:windowSoftInputMode="stateVisible"
android:configChanges="mcc|mnc|touchscreen|keyboard|keyboardHidden|navigation|screenLayout|fontScale|uiMode|orientation|screenSize|smallestScreenSize|layoutDirection"
android:label="Add Computer Manually">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
+163 -105
View File
@@ -78,7 +78,6 @@ import android.widget.TextView;
import android.widget.Toast;
import java.io.ByteArrayInputStream;
import java.lang.reflect.Field;
import java.security.cert.CertificateException;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
@@ -118,6 +117,7 @@ public class Game extends Activity implements SurfaceHolder.Callback,
private boolean displayedFailureDialog = false;
private boolean connecting = false;
private boolean connected = false;
private boolean autoEnterPip = false;
private boolean surfaceCreated = false;
private boolean attemptedConnection = false;
@@ -214,9 +214,9 @@ public class Game extends Activity implements SurfaceHolder.Callback,
prefConfig = PreferenceConfiguration.readPreferences(this);
tombstonePrefs = Game.this.getSharedPreferences("DecoderTombstone", 0);
if (prefConfig.stretchVideo) {
if (prefConfig.stretchVideo || shouldIgnoreInsetsForResolution(prefConfig.width, prefConfig.height)) {
// Allow the activity to layout under notches if the fill-screen option
// was turned on by the user
// was turned on by the user or it's a full-screen native resolution
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
getWindow().getAttributes().layoutInDisplayCutoutMode =
WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
@@ -275,7 +275,7 @@ public class Game extends Activity implements SurfaceHolder.Callback,
String uniqueId = Game.this.getIntent().getStringExtra(EXTRA_UNIQUEID);
String uuid = Game.this.getIntent().getStringExtra(EXTRA_PC_UUID);
String pcName = Game.this.getIntent().getStringExtra(EXTRA_PC_NAME);
boolean willStreamHdr = Game.this.getIntent().getBooleanExtra(EXTRA_APP_HDR, false);
boolean appSupportsHdr = Game.this.getIntent().getBooleanExtra(EXTRA_APP_HDR, false);
byte[] derCertData = Game.this.getIntent().getByteArrayExtra(EXTRA_SERVER_CERT);
X509Certificate serverCert = null;
@@ -301,7 +301,7 @@ public class Game extends Activity implements SurfaceHolder.Callback,
shortcutHelper.reportComputerShortcutUsed(computer);
if (appName != null) {
// This may be null if launched from the "Resume Session" PC context menu item
shortcutHelper.reportGameLaunched(computer, new NvApp(appName, appId, willStreamHdr));
shortcutHelper.reportGameLaunched(computer, new NvApp(appName, appId, appSupportsHdr));
}
// Initialize the MediaCodec helper before creating the decoder
@@ -309,42 +309,33 @@ public class Game extends Activity implements SurfaceHolder.Callback,
MediaCodecHelper.initialize(this, glPrefs.glRenderer);
// Check if the user has enabled HDR
boolean willStreamHdr = false;
if (prefConfig.enableHdr) {
// Check if the app supports it
if (!willStreamHdr) {
Toast.makeText(this, "This game does not support HDR10", Toast.LENGTH_SHORT).show();
}
// It does, so start our HDR checklist
else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
// We already know the app supports HDR if willStreamHdr is set.
// Start our HDR checklist
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
Display display = getWindowManager().getDefaultDisplay();
Display.HdrCapabilities hdrCaps = display.getHdrCapabilities();
// We must now ensure our display is compatible with HDR10
boolean foundHdr10 = false;
if (hdrCaps != null) {
// getHdrCapabilities() returns null on Lenovo Lenovo Mirage Solo (vega), Android 8.0
for (int hdrType : hdrCaps.getSupportedHdrTypes()) {
if (hdrType == Display.HdrCapabilities.HDR_TYPE_HDR10) {
foundHdr10 = true;
willStreamHdr = true;
break;
}
}
}
if (!foundHdr10) {
if (!willStreamHdr) {
// Nope, no HDR for us :(
willStreamHdr = false;
Toast.makeText(this, "Display does not support HDR10", Toast.LENGTH_LONG).show();
}
}
else {
Toast.makeText(this, "HDR requires Android 7.0 or later", Toast.LENGTH_LONG).show();
willStreamHdr = false;
}
}
else {
willStreamHdr = false;
}
// Check if the user has enabled performance stats overlay
if (prefConfig.enablePerfOverlay) {
@@ -398,52 +389,22 @@ public class Game extends Activity implements SurfaceHolder.Callback,
float displayRefreshRate = prepareDisplayForRendering();
LimeLog.info("Display refresh rate: "+displayRefreshRate);
// HACK: Despite many efforts to ensure low latency consistent frame
// delivery, the best non-lossy mechanism is to buffer 1 extra frame
// in the output pipeline. Android does some buffering on its end
// in SurfaceFlinger and it's difficult (impossible?) to inspect
// the precise state of the buffer queue to the screen after we
// release a frame for rendering.
//
// Since buffering a frame adds latency and we are primarily a
// latency-optimized client, rather than one designed for picture-perfect
// accuracy, we will synthetically induce a negative pressure on the display
// output pipeline by driving the decoder input pipeline under the speed
// that the display can refresh. This ensures a constant negative pressure
// to keep latency down but does induce a periodic frame loss. However, this
// periodic frame loss is *way* less than what we'd already get in Marshmallow's
// display pipeline where frames are dropped outside of our control if they land
// on the same V-sync.
//
// Hopefully, we can get rid of this once someone comes up with a better way
// to track the state of the pipeline and time frames.
// If the user requested frame pacing using a capped FPS, we will need to change our
// desired FPS setting here in accordance with the active display refresh rate.
int roundedRefreshRate = Math.round(displayRefreshRate);
int chosenFrameRate = prefConfig.fps;
if (!prefConfig.disableFrameDrop || prefConfig.unlockFps) {
if (Build.DEVICE.equals("coral") || Build.DEVICE.equals("flame")) {
// HACK: Pixel 4 (XL) ignores the preferred display mode and lowers refresh rate,
// causing frame pacing issues. See https://issuetracker.google.com/issues/143401475
// To work around this, use frame drop mode if we want to stream at >= 60 FPS.
if (prefConfig.fps >= 60) {
LimeLog.info("Using Pixel 4 rendering hack");
decoderRenderer.enableLegacyFrameDropRendering();
}
}
else if (prefConfig.fps >= roundedRefreshRate) {
if (prefConfig.unlockFps) {
if (prefConfig.framePacing == PreferenceConfiguration.FRAME_PACING_CAP_FPS) {
if (prefConfig.fps >= roundedRefreshRate) {
if (prefConfig.fps > roundedRefreshRate + 3) {
// Use frame drops when rendering above the screen frame rate
decoderRenderer.enableLegacyFrameDropRendering();
prefConfig.framePacing = PreferenceConfiguration.FRAME_PACING_BALANCED;
LimeLog.info("Using drop mode for FPS > Hz");
} else if (roundedRefreshRate <= 49) {
// Let's avoid clearly bogus refresh rates and fall back to legacy rendering
decoderRenderer.enableLegacyFrameDropRendering();
prefConfig.framePacing = PreferenceConfiguration.FRAME_PACING_BALANCED;
LimeLog.info("Bogus refresh rate: " + roundedRefreshRate);
}
// HACK: Avoid crashing on some MTK devices
else if (decoderRenderer.isBlacklistedForFrameRate(roundedRefreshRate - 1)) {
// Use the old rendering strategy on these broken devices
decoderRenderer.enableLegacyFrameDropRendering();
} else {
else {
chosenFrameRate = roundedRefreshRate - 1;
LimeLog.info("Adjusting FPS target for screen to " + chosenFrameRate);
}
@@ -459,7 +420,7 @@ public class Game extends Activity implements SurfaceHolder.Callback,
.setResolution(prefConfig.width, prefConfig.height)
.setLaunchRefreshRate(prefConfig.fps)
.setRefreshRate(chosenFrameRate)
.setApp(new NvApp(appName != null ? appName : "app", appId, willStreamHdr))
.setApp(new NvApp(appName != null ? appName : "app", appId, appSupportsHdr))
.setBitrate(prefConfig.bitrate)
.setEnableSops(prefConfig.enableSops)
.enableLocalAudioPlayback(prefConfig.playHostAudio)
@@ -571,23 +532,49 @@ public class Game extends Activity implements SurfaceHolder.Callback,
}
}
@TargetApi(Build.VERSION_CODES.O)
private PictureInPictureParams getPictureInPictureParams(boolean autoEnter) {
PictureInPictureParams.Builder builder =
new PictureInPictureParams.Builder()
.setAspectRatio(new Rational(prefConfig.width, prefConfig.height))
.setSourceRectHint(new Rect(
streamView.getLeft(), streamView.getTop(),
streamView.getRight(), streamView.getBottom()));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
builder.setAutoEnterEnabled(autoEnter);
builder.setSeamlessResizeEnabled(true);
}
return builder.build();
}
private void setPipAutoEnter(boolean autoEnter) {
if (!prefConfig.enablePip) {
return;
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
setPictureInPictureParams(getPictureInPictureParams(autoEnter));
}
else {
autoEnterPip = autoEnter;
}
}
@Override
public void onUserLeaveHint() {
super.onUserLeaveHint();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
if (prefConfig.enablePip && connected) {
// PiP is only supported on Oreo and later, and we don't need to manually enter PiP on
// Android S and later.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && Build.VERSION.SDK_INT < Build.VERSION_CODES.S) {
if (autoEnterPip) {
try {
// This has thrown all sorts of weird exceptions on Samsung devices
// running Oreo. Just eat them and close gracefully on leave, rather
// than crashing.
enterPictureInPictureMode(
new PictureInPictureParams.Builder()
.setAspectRatio(new Rational(prefConfig.width, prefConfig.height))
.setSourceRectHint(new Rect(
streamView.getLeft(), streamView.getTop(),
streamView.getRight(), streamView.getBottom()))
.build());
enterPictureInPictureMode(getPictureInPictureParams(false));
} catch (Exception e) {
e.printStackTrace();
}
@@ -603,23 +590,14 @@ public class Game extends Activity implements SurfaceHolder.Callback,
// lifted while focus was not on us. Clear the modifier state.
this.modifierFlags = 0;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// Capture is lost when focus is lost, so it must be requested again
// when focus is regained.
if (inputCaptureProvider.isCapturingEnabled() && hasFocus) {
// Recapture the pointer if focus was regained. On Android Q,
// we have to delay a bit before requesting capture because otherwise
// we'll hit the "requestPointerCapture called for a window that has no focus"
// error and it will not actually capture the cursor.
Handler h = new Handler();
h.postDelayed(new Runnable() {
@Override
public void run() {
streamView.requestPointerCapture();
}
}, 500);
}
}
// With Android native pointer capture, capture is lost when focus is lost,
// so it must be requested again when focus is regained.
inputCaptureProvider.onWindowFocusChanged(hasFocus);
}
private boolean isRefreshRateEqualMatch(float refreshRate) {
return refreshRate >= prefConfig.fps &&
refreshRate <= prefConfig.fps + 3;
}
private boolean isRefreshRateGoodMatch(float refreshRate) {
@@ -627,6 +605,26 @@ public class Game extends Activity implements SurfaceHolder.Callback,
Math.round(refreshRate) % prefConfig.fps <= 3;
}
private boolean shouldIgnoreInsetsForResolution(int width, int height) {
// Never ignore insets for non-native resolutions
if (!PreferenceConfiguration.isNativeResolution(width, height)) {
return false;
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
Display display = getWindowManager().getDefaultDisplay();
for (Display.Mode candidate : display.getSupportedModes()) {
// Ignore insets if this is an exact match for the display resolution
if ((width == candidate.getPhysicalWidth() && height == candidate.getPhysicalHeight()) ||
(height == candidate.getPhysicalWidth() && width == candidate.getPhysicalHeight())) {
return true;
}
}
}
return false;
}
private float prepareDisplayForRendering() {
Display display = getWindowManager().getDefaultDisplay();
WindowManager.LayoutParams windowLayoutParams = getWindow().getAttributes();
@@ -637,6 +635,7 @@ public class Game extends Activity implements SurfaceHolder.Callback,
Display.Mode bestMode = display.getMode();
boolean isNativeResolutionStream = PreferenceConfiguration.isNativeResolution(prefConfig.width, prefConfig.height);
boolean refreshRateIsGood = isRefreshRateGoodMatch(bestMode.getRefreshRate());
boolean refreshRateIsEqual = isRefreshRateEqualMatch(bestMode.getRefreshRate());
for (Display.Mode candidate : display.getSupportedModes()) {
boolean refreshRateReduced = candidate.getRefreshRate() < bestMode.getRefreshRate();
boolean resolutionReduced = candidate.getPhysicalWidth() < bestMode.getPhysicalWidth() ||
@@ -668,12 +667,30 @@ public class Game extends Activity implements SurfaceHolder.Callback,
continue;
}
if (refreshRateIsGood) {
// We have a good matching refresh rate, so we're looking for equal or greater
// that is also a good matching refresh rate for our stream frame rate.
if (refreshRateReduced || !isRefreshRateGoodMatch(candidate.getRefreshRate())) {
if (prefConfig.framePacing != PreferenceConfiguration.FRAME_PACING_MIN_LATENCY &&
refreshRateIsEqual && !isRefreshRateEqualMatch(candidate.getRefreshRate())) {
// If we had an equal refresh rate and this one is not, skip it. In min latency
// mode, we want to always prefer the highest frame rate even though it may cause
// microstuttering.
continue;
}
else if (refreshRateIsGood) {
// We've already got a good match, so if this one isn't also good, it's not
// worth considering at all.
if (!isRefreshRateGoodMatch(candidate.getRefreshRate())) {
continue;
}
// We don't want ever reduce our refresh rate unless we found an exact
// match and we're not in min latency mode.
if (refreshRateReduced) {
if (prefConfig.framePacing == PreferenceConfiguration.FRAME_PACING_MIN_LATENCY) {
continue;
}
else if (!isRefreshRateEqualMatch(candidate.getRefreshRate())) {
continue;
}
}
}
else if (!isRefreshRateGoodMatch(candidate.getRefreshRate())) {
// We didn't have a good match and this match isn't good either, so just don't
@@ -690,6 +707,7 @@ public class Game extends Activity implements SurfaceHolder.Callback,
bestMode = candidate;
refreshRateIsGood = isRefreshRateGoodMatch(candidate.getRefreshRate());
refreshRateIsEqual = isRefreshRateEqualMatch(candidate.getRefreshRate());
}
LimeLog.info("Selected display mode: "+bestMode.getPhysicalWidth()+"x"+
bestMode.getPhysicalHeight()+"x"+bestMode.getRefreshRate());
@@ -770,9 +788,9 @@ public class Game extends Activity implements SurfaceHolder.Callback,
return displayRefreshRate;
}
else {
// Use the actual refresh rate of the display, since the preferred refresh rate or mode
// may not actually be applied (ex: Pixel 4 with Smooth Display disabled).
return getWindowManager().getDefaultDisplay().getRefreshRate();
// Use the lower of the current refresh rate and the selected refresh rate.
// The preferred refresh rate may not actually be applied (ex: Battery Saver mode).
return Math.min(getWindowManager().getDefaultDisplay().getRefreshRate(), displayRefreshRate);
}
}
@@ -780,6 +798,9 @@ public class Game extends Activity implements SurfaceHolder.Callback,
private final Runnable hideSystemUi = new Runnable() {
@Override
public void run() {
// TODO: Do we want to use WindowInsetsController here on R+ instead of
// SYSTEM_UI_FLAG_IMMERSIVE_STICKY? They seem to do the same thing as of S...
// In multi-window mode on N+, we need to drop our layout flags or we'll
// be drawing underneath the system UI.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && isInMultiWindowMode()) {
@@ -1040,8 +1061,9 @@ public class Game extends Activity implements SurfaceHolder.Callback,
// Handle a synthetic back button event that some Android OS versions
// create as a result of a right-click. This event WILL repeat if
// the right mouse button is held down, so we ignore those.
if ((event.getSource() == InputDevice.SOURCE_MOUSE ||
event.getSource() == InputDevice.SOURCE_MOUSE_RELATIVE) &&
int eventSource = event.getSource();
if ((eventSource == InputDevice.SOURCE_MOUSE ||
eventSource == InputDevice.SOURCE_MOUSE_RELATIVE) &&
event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
// Send the right mouse button event if mouse back and forward
@@ -1110,8 +1132,9 @@ public class Game extends Activity implements SurfaceHolder.Callback,
// Handle a synthetic back button event that some Android OS versions
// create as a result of a right-click.
if ((event.getSource() == InputDevice.SOURCE_MOUSE ||
event.getSource() == InputDevice.SOURCE_MOUSE_RELATIVE) &&
int eventSource = event.getSource();
if ((eventSource == InputDevice.SOURCE_MOUSE ||
eventSource == InputDevice.SOURCE_MOUSE_RELATIVE) &&
event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
// Send the right mouse button event if mouse back and forward
@@ -1184,18 +1207,20 @@ public class Game extends Activity implements SurfaceHolder.Callback,
return false;
}
if ((event.getSource() & InputDevice.SOURCE_CLASS_JOYSTICK) != 0) {
int eventSource = event.getSource();
if ((eventSource & InputDevice.SOURCE_CLASS_JOYSTICK) != 0) {
if (controllerHandler.handleMotionEvent(event)) {
return true;
}
}
else if ((event.getSource() & InputDevice.SOURCE_CLASS_POINTER) != 0 ||
event.getSource() == InputDevice.SOURCE_MOUSE_RELATIVE)
else if ((eventSource & InputDevice.SOURCE_CLASS_POINTER) != 0 ||
(eventSource & InputDevice.SOURCE_CLASS_POSITION) != 0 ||
eventSource == InputDevice.SOURCE_MOUSE_RELATIVE)
{
// This case is for mice and non-finger touch devices
if (event.getSource() == InputDevice.SOURCE_MOUSE ||
event.getSource() == InputDevice.SOURCE_TOUCHPAD ||
event.getSource() == InputDevice.SOURCE_MOUSE_RELATIVE ||
if (eventSource == InputDevice.SOURCE_MOUSE ||
(eventSource & InputDevice.SOURCE_CLASS_POSITION) != 0 || // SOURCE_TOUCHPAD
eventSource == InputDevice.SOURCE_MOUSE_RELATIVE ||
(event.getPointerCount() >= 1 &&
(event.getToolType(0) == MotionEvent.TOOL_TYPE_MOUSE ||
event.getToolType(0) == MotionEvent.TOOL_TYPE_STYLUS ||
@@ -1222,15 +1247,40 @@ public class Game extends Activity implements SurfaceHolder.Callback,
conn.sendMouseMove(deltaX, deltaY);
}
}
else if ((eventSource & InputDevice.SOURCE_CLASS_POSITION) != 0) {
// If this input device is not associated with the view itself (like a trackpad),
// we'll convert the device-specific coordinates to use to send the cursor position.
// This really isn't ideal but it's probably better than nothing.
//
// Trackpad on newer versions of Android (Oreo and later) should be caught by the
// relative axes case above. If we get here, we're on an older version that doesn't
// support pointer capture.
InputDevice device = event.getDevice();
if (device != null) {
InputDevice.MotionRange xRange = device.getMotionRange(MotionEvent.AXIS_X, eventSource);
InputDevice.MotionRange yRange = device.getMotionRange(MotionEvent.AXIS_Y, eventSource);
// All touchpads coordinate planes should start at (0, 0)
if (xRange != null && yRange != null && xRange.getMin() == 0 && yRange.getMin() == 0) {
int xMax = (int)xRange.getMax();
int yMax = (int)yRange.getMax();
// Touchpads must be smaller than (65535, 65535)
if (xMax <= Short.MAX_VALUE && yMax <= Short.MAX_VALUE) {
conn.sendMousePosition((short)event.getX(), (short)event.getY(),
(short)xMax, (short)yMax);
}
}
}
}
else if (view != null) {
// Otherwise send absolute position
// Otherwise send absolute position based on the view for SOURCE_CLASS_POINTER
updateMousePosition(view, event);
}
if (event.getActionMasked() == MotionEvent.ACTION_SCROLL) {
// Send the vertical scroll packet
byte vScrollClicks = (byte) event.getAxisValue(MotionEvent.AXIS_VSCROLL);
conn.sendMouseScroll(vScrollClicks);
conn.sendMouseHighResScroll((short)(event.getAxisValue(MotionEvent.AXIS_VSCROLL) * 120));
}
if ((changedButtons & MotionEvent.BUTTON_PRIMARY) != 0) {
@@ -1518,6 +1568,7 @@ public class Game extends Activity implements SurfaceHolder.Callback,
private void stopConnection() {
if (connecting || connected) {
setPipAutoEnter(false);
connecting = connected = false;
controllerHandler.stop();
@@ -1682,6 +1733,7 @@ public class Game extends Activity implements SurfaceHolder.Callback,
spinner = null;
}
setPipAutoEnter(true);
connected = true;
connecting = false;
@@ -1735,6 +1787,12 @@ public class Game extends Activity implements SurfaceHolder.Callback,
controllerHandler.handleRumble(controllerNumber, lowFreqMotor, highFreqMotor);
}
@Override
public void setHdrMode(boolean enabled) {
LimeLog.info("Display HDR mode: " + (enabled ? "enabled" : "disabled"));
decoderRenderer.setHdrMode(enabled);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
if (!surfaceCreated) {
@@ -13,11 +13,13 @@ import com.limelight.computers.ComputerManagerService;
import com.limelight.nvstream.http.ComputerDetails;
import com.limelight.nvstream.http.NvApp;
import com.limelight.nvstream.http.PairingManager;
import com.limelight.nvstream.wol.WakeOnLanSender;
import com.limelight.utils.Dialog;
import com.limelight.utils.ServerHelper;
import com.limelight.utils.SpinnerDialog;
import com.limelight.utils.UiHelper;
import java.io.IOException;
import java.util.ArrayList;
import java.util.UUID;
@@ -26,6 +28,7 @@ public class ShortcutTrampoline extends Activity {
private NvApp app;
private ArrayList<Intent> intentStack = new ArrayList<>();
private int wakeHostTries = 10;
private ComputerDetails computer;
private SpinnerDialog blockingLoadSpinner;
@@ -79,6 +82,23 @@ public class ShortcutTrampoline extends Activity {
return;
}
// Try to wake the target PC if it's offline (up to some retry limit)
if (details.state == ComputerDetails.State.OFFLINE && --wakeHostTries >= 0) {
try {
// Make a best effort attempt to wake the target PC
WakeOnLanSender.sendWolPacket(computer);
// If we sent at least one WoL packet, reset the computer state
// to force ComputerManager to poll it again.
managerBinder.invalidateStateForComputer(computer.uuid);
return;
} catch (IOException e) {
// If we got an exception, we couldn't send a single WoL packet,
// so fallthrough into the offline error path.
e.printStackTrace();
}
}
if (details.state != ComputerDetails.State.UNKNOWN) {
runOnUiThread(new Runnable() {
@Override
@@ -1,5 +1,6 @@
package com.limelight.binding.input;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Context;
import android.hardware.input.InputManager;
@@ -7,9 +8,11 @@ import android.hardware.usb.UsbDevice;
import android.hardware.usb.UsbManager;
import android.media.AudioAttributes;
import android.os.Build;
import android.os.CombinedVibration;
import android.os.SystemClock;
import android.os.VibrationEffect;
import android.os.Vibrator;
import android.os.VibratorManager;
import android.util.SparseArray;
import android.view.InputDevice;
import android.view.InputEvent;
@@ -155,11 +158,36 @@ public class ControllerHandler implements InputManager.InputDeviceListener, UsbD
}
}
// This can happen when gaining/losing input focus with some devices.
// Input devices that have a trackpad may gain/lose AXIS_RELATIVE_X/Y.
@Override
public void onInputDeviceChanged(int deviceId) {
// Remove and re-add
onInputDeviceRemoved(deviceId);
onInputDeviceAdded(deviceId);
InputDevice device = InputDevice.getDevice(deviceId);
if (device == null) {
return;
}
// If we don't have a context for this device, we don't need to update anything
InputDeviceContext existingContext = inputDeviceContexts.get(deviceId);
if (existingContext == null) {
return;
}
LimeLog.info("Device changed: "+existingContext.name+" ("+deviceId+")");
// Don't release the controller number, because we will carry it over if it is present.
// We also want to make sure the change is invisible to the host PC to avoid an add/remove
// cycle for the gamepad which may break some games.
existingContext.destroy();
InputDeviceContext newContext = createInputDeviceContextForDevice(device);
// Copy over existing controller number state
newContext.assignedControllerNumber = existingContext.assignedControllerNumber;
newContext.reservedControllerNumber = existingContext.reservedControllerNumber;
newContext.controllerNumber = existingContext.controllerNumber;
inputDeviceContexts.put(deviceId, newContext);
}
public void stop() {
@@ -487,7 +515,10 @@ public class ControllerHandler implements InputManager.InputDeviceListener, UsbD
context.productId = dev.getProductId();
}
if (dev.getVibrator().hasVibrator()) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S && hasDualAmplitudeControlledRumbleVibrators(dev.getVibratorManager())) {
context.vibratorManager = dev.getVibratorManager();
}
else if (dev.getVibrator().hasVibrator()) {
context.vibrator = dev.getVibrator();
}
@@ -1283,7 +1314,58 @@ public class ControllerHandler implements InputManager.InputDeviceListener, UsbD
}
}
private void rumbleVibrator(Vibrator vibrator, short lowFreqMotor, short highFreqMotor) {
@TargetApi(31)
private boolean hasDualAmplitudeControlledRumbleVibrators(VibratorManager vm) {
int[] vibratorIds = vm.getVibratorIds();
// There must be exactly 2 vibrators on this device
if (vibratorIds.length != 2) {
return false;
}
// Both vibrators must have amplitude control
for (int vid : vibratorIds) {
if (!vm.getVibrator(vid).hasAmplitudeControl()) {
return false;
}
}
return true;
}
// This must only be called if hasDualAmplitudeControlledRumbleVibrators() is true!
@TargetApi(31)
private void rumbleDualVibrators(VibratorManager vm, short lowFreqMotor, short highFreqMotor) {
// Normalize motor values to 0-255 amplitudes for VibrationManager
highFreqMotor = (short)((highFreqMotor >> 8) & 0xFF);
lowFreqMotor = (short)((lowFreqMotor >> 8) & 0xFF);
// If they're both zero, we can just call cancel().
if (lowFreqMotor == 0 && highFreqMotor == 0) {
vm.cancel();
return;
}
// There's no documentation that states that vibrators for FF_RUMBLE input devices will
// always be enumerated in this order, but it seems consistent between Xbox Series X (USB),
// PS3 (USB), and PS4 (USB+BT) controllers on Android 12 Beta 3.
int[] vibratorIds = vm.getVibratorIds();
int[] vibratorAmplitudes = new int[] { highFreqMotor, lowFreqMotor };
CombinedVibration.ParallelCombination combo = CombinedVibration.startParallel();
for (int i = 0; i < vibratorIds.length; i++) {
// It's illegal to create a VibrationEffect with an amplitude of 0.
// Simply excluding that vibrator from our ParallelCombination will turn it off.
if (vibratorAmplitudes[i] != 0) {
combo.addVibrator(vibratorIds[i], VibrationEffect.createOneShot(60000, vibratorAmplitudes[i]));
}
}
vm.vibrate(combo.combine());
}
private void rumbleSingleVibrator(Vibrator vibrator, short lowFreqMotor, short highFreqMotor) {
// Since we can only use a single amplitude value, compute the desired amplitude
// by taking 80% of the big motor and 33% of the small motor, then capping to 255.
// NB: This value is now 0-255 as required by VibrationEffect.
@@ -1339,9 +1421,13 @@ public class ControllerHandler implements InputManager.InputDeviceListener, UsbD
if (deviceContext.controllerNumber == controllerNumber) {
foundMatchingDevice = true;
if (deviceContext.vibrator != null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S && deviceContext.vibratorManager != null) {
vibrated = true;
rumbleVibrator(deviceContext.vibrator, lowFreqMotor, highFreqMotor);
rumbleDualVibrators(deviceContext.vibratorManager, lowFreqMotor, highFreqMotor);
}
else if (deviceContext.vibrator != null) {
vibrated = true;
rumbleSingleVibrator(deviceContext.vibrator, lowFreqMotor, highFreqMotor);
}
}
}
@@ -1361,12 +1447,12 @@ public class ControllerHandler implements InputManager.InputDeviceListener, UsbD
// controls that triggered the rumble. Vibrate the device if
// the user has requested that behavior.
if (!foundMatchingDevice && prefConfig.onscreenController && !prefConfig.onlyL3R3 && prefConfig.vibrateOsc) {
rumbleVibrator(deviceVibrator, lowFreqMotor, highFreqMotor);
rumbleSingleVibrator(deviceVibrator, lowFreqMotor, highFreqMotor);
}
else if (foundMatchingDevice && !vibrated && prefConfig.vibrateFallbackToDevice) {
// We found a device to vibrate but it didn't have rumble support. The user
// has requested us to vibrate the device in this case.
rumbleVibrator(deviceVibrator, lowFreqMotor, highFreqMotor);
rumbleSingleVibrator(deviceVibrator, lowFreqMotor, highFreqMotor);
}
}
}
@@ -1803,6 +1889,7 @@ public class ControllerHandler implements InputManager.InputDeviceListener, UsbD
class InputDeviceContext extends GenericControllerContext {
public String name;
public VibratorManager vibratorManager;
public Vibrator vibrator;
public int leftStickXAxis = -1;
@@ -1849,7 +1936,10 @@ public class ControllerHandler implements InputManager.InputDeviceListener, UsbD
public void destroy() {
super.destroy();
if (vibrator != null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S && vibratorManager != null) {
vibratorManager.cancel();
}
else if (vibrator != null) {
vibrator.cancel();
}
}
@@ -2,7 +2,9 @@ package com.limelight.binding.input.capture;
import android.annotation.TargetApi;
import android.app.Activity;
import android.hardware.input.InputManager;
import android.os.Build;
import android.os.Handler;
import android.view.InputDevice;
import android.view.MotionEvent;
import android.view.View;
@@ -12,11 +14,13 @@ import android.view.View;
// pointer icon hiding behavior over our stream view just in case pointer capture
// is unavailable on this system (ex: DeX, ChromeOS)
@TargetApi(Build.VERSION_CODES.O)
public class AndroidNativePointerCaptureProvider extends AndroidPointerIconCaptureProvider {
public class AndroidNativePointerCaptureProvider extends AndroidPointerIconCaptureProvider implements InputManager.InputDeviceListener {
private InputManager inputManager;
private View targetView;
public AndroidNativePointerCaptureProvider(Activity activity, View targetView) {
super(activity, targetView);
this.inputManager = activity.getSystemService(InputManager.class);
this.targetView = targetView;
}
@@ -24,25 +28,85 @@ public class AndroidNativePointerCaptureProvider extends AndroidPointerIconCaptu
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.O;
}
// We only capture the pointer if we have a compatible InputDevice
// present. This is a workaround for an Android 12 regression causing
// incorrect mouse input when using the SPen.
// https://github.com/moonlight-stream/moonlight-android/issues/1030
private boolean hasCaptureCompatibleInputDevice() {
for (int id : InputDevice.getDeviceIds()) {
InputDevice device = InputDevice.getDevice(id);
if (device == null) {
continue;
}
// Skip touchscreens when considering compatible capture devices.
// Samsung devices on Android 12 will report a sec_touchpad device
// with SOURCE_TOUCHSCREEN, SOURCE_KEYBOARD, and SOURCE_MOUSE.
// Upon enabling pointer capture, that device will switch to
// SOURCE_KEYBOARD and SOURCE_TOUCHPAD.
if (device.supportsSource(InputDevice.SOURCE_TOUCHSCREEN)) {
continue;
}
if (device.supportsSource(InputDevice.SOURCE_MOUSE) ||
device.supportsSource(InputDevice.SOURCE_MOUSE_RELATIVE) ||
device.supportsSource(InputDevice.SOURCE_TOUCHPAD)) {
return true;
}
}
return false;
}
@Override
public void enableCapture() {
super.enableCapture();
targetView.requestPointerCapture();
// Listen for device events to enable/disable capture
inputManager.registerInputDeviceListener(this, null);
// Capture now if we have a capture-capable device
if (hasCaptureCompatibleInputDevice()) {
targetView.requestPointerCapture();
}
}
@Override
public void disableCapture() {
super.disableCapture();
inputManager.unregisterInputDeviceListener(this);
targetView.releasePointerCapture();
}
@Override
public void onWindowFocusChanged(boolean focusActive) {
if (!focusActive || !isCapturing) {
return;
}
// Recapture the pointer if focus was regained. On Android Q,
// we have to delay a bit before requesting capture because otherwise
// we'll hit the "requestPointerCapture called for a window that has no focus"
// error and it will not actually capture the cursor.
Handler h = new Handler();
h.postDelayed(new Runnable() {
@Override
public void run() {
if (hasCaptureCompatibleInputDevice()) {
targetView.requestPointerCapture();
}
}
}, 500);
}
@Override
public boolean eventHasRelativeMouseAxes(MotionEvent event) {
// SOURCE_MOUSE_RELATIVE is how SOURCE_MOUSE appears when our view has pointer capture.
// SOURCE_TOUCHPAD will have relative axes populated iff our view has pointer capture.
// See https://developer.android.com/reference/android/view/View#requestPointerCapture()
return event.getSource() == InputDevice.SOURCE_MOUSE_RELATIVE ||
(event.getSource() == InputDevice.SOURCE_TOUCHPAD && targetView.hasPointerCapture());
int eventSource = event.getSource();
return (eventSource == InputDevice.SOURCE_MOUSE_RELATIVE && event.getToolType(0) == MotionEvent.TOOL_TYPE_MOUSE) ||
(eventSource == InputDevice.SOURCE_TOUCHPAD && targetView.hasPointerCapture());
}
@Override
@@ -66,4 +130,31 @@ public class AndroidNativePointerCaptureProvider extends AndroidPointerIconCaptu
}
return y;
}
@Override
public void onInputDeviceAdded(int deviceId) {
// Check if we've added a capture-compatible device
if (!targetView.hasPointerCapture() && hasCaptureCompatibleInputDevice()) {
targetView.requestPointerCapture();
}
}
@Override
public void onInputDeviceRemoved(int deviceId) {
// Check if the capture-compatible device was removed
if (targetView.hasPointerCapture() && !hasCaptureCompatibleInputDevice()) {
targetView.releasePointerCapture();
}
}
@Override
public void onInputDeviceChanged(int deviceId) {
// Emulating a remove+add should be sufficient for our purposes.
//
// Note: This callback must be handled carefully because it can happen as a result of
// calling requestPointerCapture(). This can cause trackpad devices to gain SOURCE_MOUSE_RELATIVE
// and re-enter this callback.
onInputDeviceRemoved(deviceId);
onInputDeviceAdded(deviceId);
}
}
@@ -33,4 +33,6 @@ public abstract class InputCaptureProvider {
public float getRelativeAxisY(MotionEvent event) {
return 0;
}
public void onWindowFocusChanged(boolean focusActive) {}
}
@@ -127,7 +127,12 @@ public class UsbDriverService extends Service implements UsbDriverListener {
// just returning a false result or returning 0 enumerated devices,
// they throw an undocumented SecurityException from this call, crashing
// the whole app. :(
usbManager.requestPermission(device, PendingIntent.getBroadcast(UsbDriverService.this, 0, new Intent(ACTION_USB_PERMISSION), 0));
int intentFlags = 0;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
// This PendingIntent must be mutable to allow the framework to populate EXTRA_DEVICE and EXTRA_PERMISSION_GRANTED.
intentFlags |= PendingIntent.FLAG_MUTABLE;
}
usbManager.requestPermission(device, PendingIntent.getBroadcast(UsbDriverService.this, 0, new Intent(ACTION_USB_PERMISSION), intentFlags));
} catch (SecurityException e) {
Toast.makeText(this, this.getText(R.string.error_usb_prohibited), Toast.LENGTH_LONG).show();
}
@@ -23,13 +23,12 @@ public class AbsoluteTouchContext implements TouchContext {
private boolean confirmedTap;
private Timer longPressTimer;
private Timer tapDownTimer;
private float accumulatedScrollDelta;
private final NvConnection conn;
private final int actionIndex;
private final View targetView;
private static final int SCROLL_SPEED_DIVISOR = 20;
private static final int SCROLL_SPEED_FACTOR = 3;
private static final int LONG_PRESS_TIME_THRESHOLD = 650;
private static final int LONG_PRESS_DISTANCE_THRESHOLD = 30;
@@ -65,7 +64,6 @@ public class AbsoluteTouchContext implements TouchContext {
lastTouchLocationY = lastTouchDownY = eventY;
lastTouchDownTime = SystemClock.uptimeMillis();
cancelled = confirmedTap = confirmedLongPress = false;
accumulatedScrollDelta = 0;
if (actionIndex == 0) {
// Start the timers
@@ -228,11 +226,7 @@ public class AbsoluteTouchContext implements TouchContext {
}
}
else if (actionIndex == 1) {
accumulatedScrollDelta += (eventY - lastTouchLocationY) / (float)SCROLL_SPEED_DIVISOR;
if ((short)accumulatedScrollDelta != 0) {
conn.sendMouseHighResScroll((short)accumulatedScrollDelta);
accumulatedScrollDelta -= (short)accumulatedScrollDelta;
}
conn.sendMouseHighResScroll((short)((eventY - lastTouchLocationY) * SCROLL_SPEED_FACTOR));
}
lastTouchLocationX = eventX;
@@ -36,7 +36,7 @@ public class RelativeTouchContext implements TouchContext {
private static final int TAP_TIME_THRESHOLD = 250;
private static final int DRAG_TIME_THRESHOLD = 650;
private static final int SCROLL_SPEED_DIVISOR = 20;
private static final int SCROLL_SPEED_FACTOR = 5;
public RelativeTouchContext(NvConnection conn, int actionIndex,
int referenceWidth, int referenceHeight, View view)
@@ -160,6 +160,11 @@ public class RelativeTouchContext implements TouchContext {
return;
}
// The drag should only be processed for the primary finger
if (actionIndex != maxPointerCountInGesture - 1) {
return;
}
// Check if someone cancelled us
if (dragTimer == null) {
return;
@@ -243,9 +248,7 @@ public class RelativeTouchContext implements TouchContext {
if (pointerCount == 2) {
if (confirmedScroll) {
deltaY /= SCROLL_SPEED_DIVISOR;
conn.sendMouseHighResScroll((short) deltaY);
conn.sendMouseHighResScroll((short)(deltaY * SCROLL_SPEED_FACTOR));
}
} else {
conn.sendMouseMove((short) deltaX, (short) deltaY);
@@ -9,12 +9,11 @@ import android.util.DisplayMetrics;
import android.view.View;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.RelativeLayout;
import android.widget.Toast;
import com.limelight.LimeLog;
import com.limelight.R;
import com.limelight.binding.input.ControllerHandler;
import com.limelight.nvstream.NvConnection;
import java.util.ArrayList;
import java.util.List;
@@ -40,11 +39,10 @@ public class VirtualController {
private static final boolean _PRINT_DEBUG_INFORMATION = false;
private ControllerHandler controllerHandler;
private Context context = null;
private final ControllerHandler controllerHandler;
private final Context context;
private FrameLayout frame_layout = null;
private RelativeLayout relative_layout = null;
private Timer retransmitTimer;
@@ -60,10 +58,6 @@ public class VirtualController {
this.frame_layout = layout;
this.context = context;
relative_layout = new RelativeLayout(context);
frame_layout.addView(relative_layout);
buttonConfigure = new Button(context);
buttonConfigure.setAlpha(0.25f);
buttonConfigure.setFocusable(false);
@@ -87,7 +81,7 @@ public class VirtualController {
Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
relative_layout.invalidate();
buttonConfigure.invalidate();
for (VirtualControllerElement element : elements) {
element.invalidate();
@@ -99,11 +93,20 @@ public class VirtualController {
public void hide() {
retransmitTimer.cancel();
relative_layout.setVisibility(View.INVISIBLE);
for (VirtualControllerElement element : elements) {
element.setVisibility(View.INVISIBLE);
}
buttonConfigure.setVisibility(View.INVISIBLE);
}
public void show() {
relative_layout.setVisibility(View.VISIBLE);
for (VirtualControllerElement element : elements) {
element.setVisibility(View.VISIBLE);
}
buttonConfigure.setVisibility(View.VISIBLE);
// HACK: GFE sometimes discards gamepad packets when they are received
// very shortly after another. This can be critical if an axis zeroing packet
@@ -120,9 +123,11 @@ public class VirtualController {
public void removeElements() {
for (VirtualControllerElement element : elements) {
relative_layout.removeView(element);
frame_layout.removeView(element);
}
elements.clear();
frame_layout.removeView(buttonConfigure);
}
public void setOpacity(int opacity) {
@@ -134,10 +139,10 @@ public class VirtualController {
public void addElement(VirtualControllerElement element, int x, int y, int width, int height) {
elements.add(element);
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(width, height);
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(width, height);
layoutParams.setMargins(x, y, 0, 0);
relative_layout.addView(element, layoutParams);
frame_layout.addView(element, layoutParams);
}
public List<VirtualControllerElement> getElements() {
@@ -146,23 +151,20 @@ public class VirtualController {
private static final void _DBG(String text) {
if (_PRINT_DEBUG_INFORMATION) {
System.out.println("VirtualController: " + text);
LimeLog.info("VirtualController: " + text);
}
}
public void refreshLayout() {
relative_layout.removeAllViews();
removeElements();
DisplayMetrics screen = context.getResources().getDisplayMetrics();
int buttonSize = (int)(screen.heightPixels*0.06f);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(buttonSize, buttonSize);
params.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE);
params.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(buttonSize, buttonSize);
params.leftMargin = 15;
params.topMargin = 15;
relative_layout.addView(buttonConfigure, params);
frame_layout.addView(buttonConfigure, params);
// Start with the default layout
VirtualControllerConfigurationLoader.createDefaultLayout(this, context);
@@ -12,7 +12,7 @@ import android.graphics.Paint;
import android.util.DisplayMetrics;
import android.view.MotionEvent;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.FrameLayout;
import org.json.JSONException;
import org.json.JSONObject;
@@ -72,7 +72,7 @@ public abstract class VirtualControllerElement extends View {
int newPos_x = (int) getX() + x - pressed_x;
int newPos_y = (int) getY() + y - pressed_y;
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) getLayoutParams();
FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) getLayoutParams();
layoutParams.leftMargin = newPos_x > 0 ? newPos_x : 0;
layoutParams.topMargin = newPos_y > 0 ? newPos_y : 0;
@@ -83,7 +83,7 @@ public abstract class VirtualControllerElement extends View {
}
protected void resizeElement(int pressed_x, int pressed_y, int width, int height) {
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) getLayoutParams();
FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) getLayoutParams();
int newHeight = height + (startSize_y - pressed_y);
int newWidth = width + (startSize_x - pressed_x);
@@ -316,7 +316,7 @@ public abstract class VirtualControllerElement extends View {
public JSONObject getConfiguration() throws JSONException {
JSONObject configuration = new JSONObject();
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) getLayoutParams();
FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) getLayoutParams();
configuration.put("LEFT", layoutParams.leftMargin);
configuration.put("TOP", layoutParams.topMargin);
@@ -327,7 +327,7 @@ public abstract class VirtualControllerElement extends View {
}
public void loadConfiguration(JSONObject configuration) throws JSONException {
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) getLayoutParams();
FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) getLayoutParams();
layoutParams.leftMargin = configuration.getInt("LEFT");
layoutParams.topMargin = configuration.getInt("TOP");
@@ -2,6 +2,7 @@ package com.limelight.binding.video;
import java.nio.ByteBuffer;
import java.util.Locale;
import java.util.concurrent.LinkedBlockingQueue;
import org.jcodec.codecs.h264.H264Utils;
import org.jcodec.codecs.h264.io.model.SeqParameterSet;
@@ -20,11 +21,14 @@ import android.media.MediaFormat;
import android.media.MediaCodec.BufferInfo;
import android.media.MediaCodec.CodecException;
import android.os.Build;
import android.os.Handler;
import android.os.Looper;
import android.os.SystemClock;
import android.util.Range;
import android.view.Choreographer;
import android.view.SurfaceHolder;
public class MediaCodecDecoderRenderer extends VideoDecoderRenderer {
public class MediaCodecDecoderRenderer extends VideoDecoderRenderer implements Choreographer.FrameCallback {
private static final boolean USE_FRAME_RENDER_TIME = false;
private static final boolean FRAME_RENDER_TIME_ONLY = USE_FRAME_RENDER_TIME && false;
@@ -58,7 +62,6 @@ public class MediaCodecDecoderRenderer extends VideoDecoderRenderer {
private int consecutiveCrashCount;
private String glRenderer;
private boolean foreground = true;
private boolean legacyFrameDropRendering = false;
private PerfOverlayListener perfListener;
private MediaFormat inputFormat;
@@ -81,6 +84,10 @@ public class MediaCodecDecoderRenderer extends VideoDecoderRenderer {
private int refreshRate;
private PreferenceConfiguration prefs;
private LinkedBlockingQueue<Integer> outputBufferQueue = new LinkedBlockingQueue<>();
private static final int OUTPUT_BUFFER_QUEUE_LIMIT = 2;
private long lastRenderedFrameTimeNanos;
private int numSpsIn;
private int numPpsIn;
private int numVpsIn;
@@ -198,15 +205,6 @@ public class MediaCodecDecoderRenderer extends VideoDecoderRenderer {
return avcDecoder != null;
}
public boolean isBlacklistedForFrameRate(int frameRate) {
return avcDecoder != null && MediaCodecHelper.decoderBlacklistedForFrameRate(avcDecoder.getName(), frameRate);
}
public void enableLegacyFrameDropRendering() {
LimeLog.info("Legacy frame drop rendering enabled");
legacyFrameDropRendering = true;
}
public boolean isHevcMain10Hdr10Supported() {
if (hevcDecoder == null) {
return false;
@@ -310,10 +308,7 @@ public class MediaCodecDecoderRenderer extends VideoDecoderRenderer {
// Avoid setting KEY_FRAME_RATE on Lollipop and earlier to reduce compatibility risk
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
// We use prefs.fps instead of redrawRate here because the low latency hack in Game.java
// may leave us with an odd redrawRate value like 59 or 49 which might cause the decoder
// to puke. To be safe, we'll use the unmodified value.
videoFormat.setInteger(MediaFormat.KEY_FRAME_RATE, prefs.fps);
videoFormat.setInteger(MediaFormat.KEY_FRAME_RATE, redrawRate);
}
// Adaptive playback can also be enabled by the whitelist on pre-KitKat devices
@@ -418,6 +413,41 @@ public class MediaCodecDecoderRenderer extends VideoDecoderRenderer {
}
}
@Override
public void doFrame(long frameTimeNanos) {
// Do nothing if we're stopping
if (stopping) {
return;
}
// Don't render unless a new frame is due. This prevents microstutter when streaming
// at a frame rate that doesn't match the display (such as 60 FPS on 120 Hz).
long actualFrameTimeDeltaNs = frameTimeNanos - lastRenderedFrameTimeNanos;
long expectedFrameTimeDeltaNs = 800000000 / refreshRate; // within 80% of the next frame
if (actualFrameTimeDeltaNs >= expectedFrameTimeDeltaNs) {
// Render up to one frame when in frame pacing mode.
//
// NB: Since the queue limit is 2, we won't starve the decoder of output buffers
// by holding onto them for too long. This also ensures we will have that 1 extra
// frame of buffer to smooth over network/rendering jitter.
Integer nextOutputBuffer = outputBufferQueue.poll();
if (nextOutputBuffer != null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
videoDecoder.releaseOutputBuffer(nextOutputBuffer, frameTimeNanos);
}
else {
videoDecoder.releaseOutputBuffer(nextOutputBuffer, true);
}
lastRenderedFrameTimeNanos = frameTimeNanos;
activeWindowVideoStats.totalFramesRendered++;
}
}
// Request another callback for next frame
Choreographer.getInstance().postFrameCallback(this);
}
private void startRendererThread()
{
rendererThread = new Thread() {
@@ -434,34 +464,58 @@ public class MediaCodecDecoderRenderer extends VideoDecoderRenderer {
numFramesOut++;
// Get the last output buffer in the queue
while ((outIndex = videoDecoder.dequeueOutputBuffer(info, 0)) >= 0) {
videoDecoder.releaseOutputBuffer(lastIndex, false);
// Render the latest frame now if frame pacing isn't in balanced mode
if (prefs.framePacing != PreferenceConfiguration.FRAME_PACING_BALANCED) {
// Get the last output buffer in the queue
while ((outIndex = videoDecoder.dequeueOutputBuffer(info, 0)) >= 0) {
videoDecoder.releaseOutputBuffer(lastIndex, false);
numFramesOut++;
numFramesOut++;
lastIndex = outIndex;
presentationTimeUs = info.presentationTimeUs;
}
lastIndex = outIndex;
presentationTimeUs = info.presentationTimeUs;
}
// Render the last buffer
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
if (legacyFrameDropRendering) {
// Use a PTS that will cause this frame to be dropped if another comes in within
// the same V-sync period
videoDecoder.releaseOutputBuffer(lastIndex, System.nanoTime());
if (prefs.framePacing == PreferenceConfiguration.FRAME_PACING_MAX_SMOOTHNESS ||
prefs.framePacing == PreferenceConfiguration.FRAME_PACING_CAP_FPS) {
// In max smoothness or cap FPS mode, we want to never drop frames
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
// Use a PTS that will cause this frame to never be dropped
videoDecoder.releaseOutputBuffer(lastIndex, 0);
}
else {
videoDecoder.releaseOutputBuffer(lastIndex, true);
}
}
else {
// Use a PTS that will cause this frame to never be dropped if frame dropping
// is disabled
videoDecoder.releaseOutputBuffer(lastIndex, 0);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
// Use a PTS that will cause this frame to be dropped if another comes in within
// the same V-sync period
videoDecoder.releaseOutputBuffer(lastIndex, System.nanoTime());
}
else {
videoDecoder.releaseOutputBuffer(lastIndex, true);
}
}
activeWindowVideoStats.totalFramesRendered++;
}
else {
videoDecoder.releaseOutputBuffer(lastIndex, true);
}
// For balanced frame pacing case, the Choreographer callback will handle rendering.
// We just put all frames into the output buffer queue and let it handle things.
activeWindowVideoStats.totalFramesRendered++;
// Discard the oldest buffer if we've exceeded our limit.
//
// NB: We have to do this on the producer side because the consumer may not
// run for a while (if there is a huge mismatch between stream FPS and display
// refresh rate).
if (outputBufferQueue.size() == OUTPUT_BUFFER_QUEUE_LIMIT) {
videoDecoder.releaseOutputBuffer(outputBufferQueue.take(), false);
}
// Add this buffer
outputBufferQueue.add(lastIndex);
}
// Add delta time to the totals (excluding probable outliers)
long delta = MediaCodecHelper.getMonotonicMillis() - (presentationTimeUs / 1000);
@@ -536,6 +590,18 @@ public class MediaCodecDecoderRenderer extends VideoDecoderRenderer {
@Override
public void start() {
startRendererThread();
// Start Choreographer callbacks for rendering with frame pacing in balanced mode
// NB: This must be done on a thread with a looper!
if (prefs.framePacing == PreferenceConfiguration.FRAME_PACING_BALANCED) {
Handler h = new Handler(Looper.getMainLooper());
h.post(new Runnable() {
@Override
public void run() {
Choreographer.getInstance().postFrameCallback(MediaCodecDecoderRenderer.this);
}
});
}
}
// !!! May be called even if setup()/start() fails !!!
@@ -547,6 +613,17 @@ public class MediaCodecDecoderRenderer extends VideoDecoderRenderer {
if (rendererThread != null) {
rendererThread.interrupt();
}
// Halt further Choreographer callbacks
if (prefs.framePacing == PreferenceConfiguration.FRAME_PACING_BALANCED) {
Handler h = new Handler(Looper.getMainLooper());
h.post(new Runnable() {
@Override
public void run() {
Choreographer.getInstance().removeFrameCallback(MediaCodecDecoderRenderer.this);
}
});
}
}
@Override
@@ -565,6 +642,11 @@ public class MediaCodecDecoderRenderer extends VideoDecoderRenderer {
videoDecoder.release();
}
@Override
public void setHdrMode(boolean enabled) {
// TODO: Set HDR metadata?
}
private boolean queueInputBuffer(int inputBufferIndex, int offset, int length, long timestampUs, int codecFlags) {
try {
videoDecoder.queueInputBuffer(inputBufferIndex,
@@ -1107,6 +1189,10 @@ public class MediaCodecDecoderRenderer extends VideoDecoderRenderer {
str += "Adaptive playback: "+renderer.adaptivePlayback+"\n";
str += "GL Renderer: "+renderer.glRenderer+"\n";
str += "Build fingerprint: "+Build.FINGERPRINT+"\n";
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
str += "SOC: "+Build.SOC_MANUFACTURER+" - "+Build.SOC_MODEL+"\n";
str += "Performance class: "+Build.VERSION.MEDIA_PERFORMANCE_CLASS+"\n";
}
str += "Foreground: "+renderer.foreground+"\n";
str += "Consecutive crashes: "+renderer.consecutiveCrashCount+"\n";
str += "RFI active: "+renderer.refFrameInvalidationActive+"\n";
@@ -1121,6 +1207,7 @@ public class MediaCodecDecoderRenderer extends VideoDecoderRenderer {
str += "Frame losses: "+renderer.globalVideoStats.framesLost+" in "+renderer.globalVideoStats.frameLossEvents+" loss events\n";
str += "Average end-to-end client latency: "+renderer.getAverageEndToEndLatency()+"ms\n";
str += "Average hardware decoder latency: "+renderer.getAverageDecoderLatency()+"ms\n";
str += "Frame pacing mode: "+renderer.prefs.framePacing+"\n";
if (currentBuffer != null) {
str += "Current buffer: ";
@@ -38,8 +38,6 @@ public class MediaCodecHelper {
private static final List<String> whitelistedHevcDecoders;
private static final List<String> refFrameInvalidationAvcPrefixes;
private static final List<String> refFrameInvalidationHevcPrefixes;
private static final List<String> blacklisted49FpsDecoderPrefixes;
private static final List<String> blacklisted59FpsDecoderPrefixes;
private static final List<String> qualcommDecoderPrefixes;
private static final List<String> kirinDecoderPrefixes;
private static final List<String> exynosDecoderPrefixes;
@@ -194,24 +192,6 @@ public class MediaCodecHelper {
// Qualcomm is currently the only decoders in this group.
}
static {
blacklisted49FpsDecoderPrefixes = new LinkedList<>();
blacklisted59FpsDecoderPrefixes = new LinkedList<>();
// We see a bunch of crashes on MediaTek Android TVs running
// at 49 FPS (PAL 50 Hz - 1). Blacklist this frame rate for
// these devices and hope they fix it in Pie.
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) {
blacklisted49FpsDecoderPrefixes.add("omx.mtk");
// 59 FPS also seems to crash on the Sony Bravia TV ATV3 model.
// Blacklist that frame rate on these devices too.
if (Build.DEVICE.startsWith("BRAVIA_ATV3")) {
blacklisted59FpsDecoderPrefixes.add("omx.mtk");
}
}
}
static {
qualcommDecoderPrefixes = new LinkedList<>();
@@ -486,18 +466,6 @@ public class MediaCodecHelper {
return isDecoderInList(baselineProfileHackPrefixes, decoderName);
}
public static boolean decoderBlacklistedForFrameRate(String decoderName, int fps) {
if (fps == 49) {
return isDecoderInList(blacklisted49FpsDecoderPrefixes, decoderName);
}
else if (fps == 59) {
return isDecoderInList(blacklisted59FpsDecoderPrefixes, decoderName);
}
else {
return false;
}
}
public static boolean decoderSupportsRefFrameInvalidationAvc(String decoderName, int videoHeight) {
// Reference frame invalidation is broken on low-end Snapdragon SoCs at 1080p.
if (videoHeight > 720 && isLowEndSnapdragon) {
@@ -5,8 +5,6 @@ import java.io.OutputStream;
import java.io.StringReader;
import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.HashSet;
import java.util.LinkedList;
@@ -49,8 +47,7 @@ public class ComputerManagerService extends Service {
private static final int APPLIST_POLLING_PERIOD_MS = 30000;
private static final int APPLIST_FAILED_POLLING_RETRY_MS = 2000;
private static final int MDNS_QUERY_PERIOD_MS = 1000;
private static final int FAST_POLL_TIMEOUT = 1000;
private static final int OFFLINE_POLL_TRIES = 5;
private static final int OFFLINE_POLL_TRIES = 3;
private static final int INITIAL_POLL_TRIES = 2;
private static final int EMPTY_LIST_THRESHOLD = 3;
private static final int POLL_DATA_TTL_MS = 30000;
@@ -528,11 +525,6 @@ public class ComputerManagerService extends Service {
}
private ComputerDetails tryPollIp(ComputerDetails details, String address) {
// Fast poll this address first to determine if we can connect at the TCP layer
if (!fastPollIp(address)) {
return null;
}
try {
NvHTTP http = new NvHTTP(address, idManager.getUniqueId(), details.serverCert,
PlatformBinding.getCryptoProvider(ComputerManagerService.this));
@@ -551,104 +543,113 @@ public class ComputerManagerService extends Service {
return null;
}
// Set the new active address
newDetails.activeAddress = address;
return newDetails;
} catch (XmlPullParserException | IOException e) {
} catch (XmlPullParserException e) {
e.printStackTrace();
return null;
} catch (IOException e) {
return null;
}
}
// Just try to establish a TCP connection to speculatively detect a running
// GFE server
private boolean fastPollIp(String address) {
if (address == null) {
// Don't bother if our address is null
return false;
}
private static class ParallelPollTuple {
public String address;
public ComputerDetails existingDetails;
Socket s = new Socket();
try {
s.connect(new InetSocketAddress(address, NvHTTP.HTTPS_PORT), FAST_POLL_TIMEOUT);
s.close();
return true;
} catch (IOException e) {
return false;
public boolean complete;
public ComputerDetails returnedDetails;
public ParallelPollTuple(String address, ComputerDetails existingDetails) {
this.address = address;
this.existingDetails = existingDetails;
}
}
private void startFastPollThread(final String address, final boolean[] info) {
private void startParallelPollThread(ParallelPollTuple tuple, HashSet<String> uniqueAddresses) {
// Don't bother starting a polling thread for an address that doesn't exist
// or if the address has already been polled with an earlier tuple
if (tuple.address == null || !uniqueAddresses.add(tuple.address)) {
tuple.complete = true;
tuple.returnedDetails = null;
return;
}
Thread t = new Thread() {
@Override
public void run() {
boolean pollRes = fastPollIp(address);
ComputerDetails details = tryPollIp(tuple.existingDetails, tuple.address);
synchronized (info) {
info[0] = true; // Done
info[1] = pollRes; // Polling result
synchronized (tuple) {
tuple.complete = true; // Done
tuple.returnedDetails = details; // Polling result
info.notify();
tuple.notify();
}
}
};
t.setName("Fast Poll - "+address);
t.setName("Parallel Poll - "+tuple.address+" - "+tuple.existingDetails.name);
t.start();
}
private String fastPollPc(final String localAddress, final String remoteAddress, final String manualAddress, final String ipv6Address) throws InterruptedException {
final boolean[] remoteInfo = new boolean[2];
final boolean[] localInfo = new boolean[2];
final boolean[] manualInfo = new boolean[2];
final boolean[] ipv6Info = new boolean[2];
private ComputerDetails parallelPollPc(ComputerDetails details) throws InterruptedException {
ParallelPollTuple localInfo = new ParallelPollTuple(details.localAddress, details);
ParallelPollTuple manualInfo = new ParallelPollTuple(details.manualAddress, details);
ParallelPollTuple remoteInfo = new ParallelPollTuple(details.remoteAddress, details);
ParallelPollTuple ipv6Info = new ParallelPollTuple(details.ipv6Address, details);
startFastPollThread(localAddress, localInfo);
startFastPollThread(remoteAddress, remoteInfo);
startFastPollThread(manualAddress, manualInfo);
startFastPollThread(ipv6Address, ipv6Info);
// These must be started in order of precedence for the deduplication algorithm
// to result in the correct behavior.
HashSet<String> uniqueAddresses = new HashSet<>();
startParallelPollThread(localInfo, uniqueAddresses);
startParallelPollThread(manualInfo, uniqueAddresses);
startParallelPollThread(remoteInfo, uniqueAddresses);
startParallelPollThread(ipv6Info, uniqueAddresses);
// Check local first
synchronized (localInfo) {
while (!localInfo[0]) {
while (!localInfo.complete) {
localInfo.wait(500);
}
if (localInfo[1]) {
return localAddress;
if (localInfo.returnedDetails != null) {
localInfo.returnedDetails.activeAddress = localInfo.address;
return localInfo.returnedDetails;
}
}
// Now manual
synchronized (manualInfo) {
while (!manualInfo[0]) {
while (!manualInfo.complete) {
manualInfo.wait(500);
}
if (manualInfo[1]) {
return manualAddress;
if (manualInfo.returnedDetails != null) {
manualInfo.returnedDetails.activeAddress = manualInfo.address;
return manualInfo.returnedDetails;
}
}
// Now remote IPv4
synchronized (remoteInfo) {
while (!remoteInfo[0]) {
while (!remoteInfo.complete) {
remoteInfo.wait(500);
}
if (remoteInfo[1]) {
return remoteAddress;
if (remoteInfo.returnedDetails != null) {
remoteInfo.returnedDetails.activeAddress = remoteInfo.address;
return remoteInfo.returnedDetails;
}
}
// Now global IPv6
synchronized (ipv6Info) {
while (!ipv6Info[0]) {
while (!ipv6Info.complete) {
ipv6Info.wait(500);
}
if (ipv6Info[1]) {
return ipv6Address;
if (ipv6Info.returnedDetails != null) {
ipv6Info.returnedDetails.activeAddress = ipv6Info.address;
return ipv6Info.returnedDetails;
}
}
@@ -656,41 +657,10 @@ public class ComputerManagerService extends Service {
}
private boolean pollComputer(ComputerDetails details) throws InterruptedException {
ComputerDetails polledDetails;
// Do a TCP-level connection to the HTTP server to see if it's listening.
// Do not write this address to details.activeAddress because:
// a) it's only a candidate and may be wrong (multiple PCs behind a single router)
// b) if it's null, it will be unexpectedly nulling the activeAddress of a possibly online PC
LimeLog.info("Starting fast poll for "+details.name+" ("+details.localAddress +", "+details.remoteAddress +", "+details.manualAddress+", "+details.ipv6Address+")");
String candidateAddress = fastPollPc(details.localAddress, details.remoteAddress, details.manualAddress, details.ipv6Address);
LimeLog.info("Fast poll for "+details.name+" returned candidate address: "+candidateAddress);
// If no connection could be established to either IP address, there's nothing we can do
if (candidateAddress == null) {
return false;
}
// Try using the active address from fast-poll
polledDetails = tryPollIp(details, candidateAddress);
if (polledDetails == null) {
// If that failed, try all unique addresses except what we've
// already tried
HashSet<String> uniqueAddresses = new HashSet<>();
uniqueAddresses.add(details.localAddress);
uniqueAddresses.add(details.manualAddress);
uniqueAddresses.add(details.remoteAddress);
uniqueAddresses.add(details.ipv6Address);
for (String addr : uniqueAddresses) {
if (addr == null || addr.equals(candidateAddress)) {
continue;
}
polledDetails = tryPollIp(details, addr);
if (polledDetails != null) {
break;
}
}
}
// Poll all addresses in parallel to speed up the process
LimeLog.info("Starting parallel poll for "+details.name+" ("+details.localAddress +", "+details.remoteAddress +", "+details.manualAddress+", "+details.ipv6Address+")");
ComputerDetails polledDetails = parallelPollPc(details);
LimeLog.info("Parallel poll for "+details.name+" returned address: "+details.activeAddress);
if (polledDetails != null) {
details.update(polledDetails);
@@ -15,6 +15,9 @@ public class ConnectionContext {
// This is the version quad from the appversion tag of /serverinfo
public String serverAppVersion;
public String serverGfeVersion;
// This is the sessionUrl0 tag from /resume and /launch
public String rtspSessionUrl;
public int negotiatedWidth, negotiatedHeight;
public boolean negotiatedHdr;
@@ -275,7 +275,7 @@ public class NvConnection {
synchronized (MoonBridge.class) {
MoonBridge.setupBridge(videoDecoderRenderer, audioRenderer, connectionListener);
int ret = MoonBridge.startConnection(context.serverAddress,
context.serverAppVersion, context.serverGfeVersion,
context.serverAppVersion, context.serverGfeVersion, context.rtspSessionUrl,
context.negotiatedWidth, context.negotiatedHeight,
context.streamConfig.getRefreshRate(), context.streamConfig.getBitrate(),
context.streamConfig.getMaxPacketSize(),
@@ -367,6 +367,12 @@ public class NvConnection {
}
}
public void sendUtf8Text(final String text) {
if (!isMonkey) {
MoonBridge.sendUtf8Text(text);
}
}
public static String findExternalAddressForMdns(String stunHostname, int stunPort) {
return MoonBridge.findExternalAddressIP4(stunHostname, stunPort);
}
@@ -13,4 +13,6 @@ public interface NvConnectionListener {
void displayTransientMessage(String message);
void rumble(short controllerNumber, short lowFreqMotor, short highFreqMotor);
void setHdrMode(boolean enabled);
}
@@ -15,4 +15,6 @@ public abstract class VideoDecoderRenderer {
public abstract void cleanup();
public abstract int getCapabilities();
public abstract void setHdrMode(boolean enabled);
}
@@ -680,7 +680,13 @@ public class NvHTTP {
(context.streamConfig.getAttachedGamepadMask() != 0 ? "&gcmap=" + context.streamConfig.getAttachedGamepadMask() : ""),
false);
String gameSession = getXmlString(xmlStr, "gamesession");
return gameSession != null && !gameSession.equals("0");
if (gameSession != null && !gameSession.equals("0")) {
context.rtspSessionUrl = getXmlString(xmlStr, "sessionUrl0");
return true;
}
else {
return false;
}
}
public boolean resumeApp(ConnectionContext context) throws IOException, XmlPullParserException {
@@ -690,7 +696,13 @@ public class NvHTTP {
"&surroundAudioInfo=" + context.streamConfig.getAudioConfiguration().getSurroundAudioInfo(),
false);
String resume = getXmlString(xmlStr, "resume");
return Integer.parseInt(resume) != 0;
if (Integer.parseInt(resume) != 0) {
context.rtspSessionUrl = getXmlString(xmlStr, "sessionUrl0");
return true;
}
else {
return false;
}
}
public boolean quitApp() throws IOException, XmlPullParserException {
@@ -240,6 +240,12 @@ public class MoonBridge {
}
}
public static void bridgeClSetHdrMode(boolean enabled) {
if (connectionListener != null) {
connectionListener.setHdrMode(enabled);
}
}
public static void setupBridge(VideoDecoderRenderer videoRenderer, AudioRenderer audioRenderer, NvConnectionListener connectionListener) {
MoonBridge.videoRenderer = videoRenderer;
MoonBridge.audioRenderer = audioRenderer;
@@ -253,6 +259,7 @@ public class MoonBridge {
}
public static native int startConnection(String address, String appVersion, String gfeVersion,
String rtspSessionUrl,
int width, int height, int fps,
int bitrate, int packetSize, int streamingRemotely,
int audioConfiguration, boolean supportsHevc,
@@ -290,6 +297,8 @@ public class MoonBridge {
public static native void sendMouseHighResScroll(short scrollAmount);
public static native void sendUtf8Text(String text);
public static native String getStageName(int stage);
public static native String findExternalAddressIP4(String stunHostName, int stunPort);
@@ -88,11 +88,11 @@ public class AddComputerManually extends Activity {
// Couldn't find a matching interface
return true;
} catch (SocketException e) {
} catch (Exception e) {
// Catch all exceptions because some broken Android devices
// will throw an NPE from inside getNetworkInterfaces().
e.printStackTrace();
return false;
} catch (UnknownHostException e) {
return false;
}
}
@@ -30,7 +30,7 @@ public class PreferenceConfiguration {
private static final String VIDEO_FORMAT_PREF_STRING = "video_format";
private static final String ONSCREEN_CONTROLLER_PREF_STRING = "checkbox_show_onscreen_controls";
private static final String ONLY_L3_R3_PREF_STRING = "checkbox_only_show_L3R3";
private static final String DISABLE_FRAME_DROP_PREF_STRING = "checkbox_disable_frame_drop";
private static final String LEGACY_DISABLE_FRAME_DROP_PREF_STRING = "checkbox_disable_frame_drop";
private static final String ENABLE_HDR_PREF_STRING = "checkbox_enable_hdr";
private static final String ENABLE_PIP_PREF_STRING = "checkbox_enable_pip";
private static final String ENABLE_PERF_OVERLAY_STRING = "checkbox_enable_perf_overlay";
@@ -43,6 +43,7 @@ public class PreferenceConfiguration {
private static final String FLIP_FACE_BUTTONS_PREF_STRING = "checkbox_flip_face_buttons";
private static final String TOUCHSCREEN_TRACKPAD_PREF_STRING = "checkbox_touchscreen_trackpad";
private static final String LATENCY_TOAST_PREF_STRING = "checkbox_enable_post_stream_toast";
private static final String FRAME_PACING_PREF_STRING = "frame_pacing";
static final String DEFAULT_RESOLUTION = "1280x720";
static final String DEFAULT_FPS = "60";
@@ -58,7 +59,6 @@ public class PreferenceConfiguration {
private static final String DEFAULT_VIDEO_FORMAT = "auto";
private static final boolean ONSCREEN_CONTROLLER_DEFAULT = false;
private static final boolean ONLY_L3_R3_DEFAULT = false;
private static final boolean DEFAULT_DISABLE_FRAME_DROP = false;
private static final boolean DEFAULT_ENABLE_HDR = false;
private static final boolean DEFAULT_ENABLE_PIP = false;
private static final boolean DEFAULT_ENABLE_PERF_OVERLAY = false;
@@ -72,11 +72,17 @@ public class PreferenceConfiguration {
private static final boolean DEFAULT_TOUCHSCREEN_TRACKPAD = true;
private static final String DEFAULT_AUDIO_CONFIG = "2"; // Stereo
private static final boolean DEFAULT_LATENCY_TOAST = false;
private static final String DEFAULT_FRAME_PACING = "latency";
public static final int FORCE_H265_ON = -1;
public static final int AUTOSELECT_H265 = 0;
public static final int FORCE_H265_OFF = 1;
public static final int FRAME_PACING_MIN_LATENCY = 0;
public static final int FRAME_PACING_BALANCED = 1;
public static final int FRAME_PACING_CAP_FPS = 2;
public static final int FRAME_PACING_MAX_SMOOTHNESS = 3;
public static final String RES_360P = "640x360";
public static final String RES_480P = "854x480";
public static final String RES_720P = "1280x720";
@@ -95,7 +101,6 @@ public class PreferenceConfiguration {
public boolean smallIconMode, multiController, usbDriver, flipFaceButtons;
public boolean onscreenController;
public boolean onlyL3R3;
public boolean disableFrameDrop;
public boolean enableHdr;
public boolean enablePip;
public boolean enablePerfOverlay;
@@ -108,6 +113,7 @@ public class PreferenceConfiguration {
public boolean vibrateFallbackToDevice;
public boolean touchscreenTrackpad;
public MoonBridge.AudioConfiguration audioConfiguration;
public int framePacing;
public static boolean isNativeResolution(int width, int height) {
// It's not a native resolution if it matches an existing resolution option
@@ -264,6 +270,37 @@ public class PreferenceConfiguration {
}
}
private static int getFramePacingValue(Context context) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
// Migrate legacy never drop frames option to the new location
if (prefs.contains(LEGACY_DISABLE_FRAME_DROP_PREF_STRING)) {
boolean legacyNeverDropFrames = prefs.getBoolean(LEGACY_DISABLE_FRAME_DROP_PREF_STRING, false);
prefs.edit()
.remove(LEGACY_DISABLE_FRAME_DROP_PREF_STRING)
.putString(FRAME_PACING_PREF_STRING, legacyNeverDropFrames ? "balanced" : "latency")
.apply();
}
String str = prefs.getString(FRAME_PACING_PREF_STRING, DEFAULT_FRAME_PACING);
if (str.equals("latency")) {
return FRAME_PACING_MIN_LATENCY;
}
else if (str.equals("balanced")) {
return FRAME_PACING_BALANCED;
}
else if (str.equals("cap-fps")) {
return FRAME_PACING_CAP_FPS;
}
else if (str.equals("smoothness")) {
return FRAME_PACING_MAX_SMOOTHNESS;
}
else {
// Should never get here
return FRAME_PACING_MIN_LATENCY;
}
}
public static void resetStreamingSettings(Context context) {
// We consider resolution, FPS, bitrate, HDR, and video format as "streaming settings" here
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
@@ -387,6 +424,7 @@ public class PreferenceConfiguration {
}
config.videoFormat = getVideoFormatValue(context);
config.framePacing = getFramePacingValue(context);
config.deadzonePercentage = prefs.getInt(DEADZONE_PREF_STRING, DEFAULT_DEADZONE);
@@ -404,7 +442,6 @@ public class PreferenceConfiguration {
config.usbDriver = prefs.getBoolean(USB_DRIVER_PREF_SRING, DEFAULT_USB_DRIVER);
config.onscreenController = prefs.getBoolean(ONSCREEN_CONTROLLER_PREF_STRING, ONSCREEN_CONTROLLER_DEFAULT);
config.onlyL3R3 = prefs.getBoolean(ONLY_L3_R3_PREF_STRING, ONLY_L3_R3_DEFAULT);
config.disableFrameDrop = prefs.getBoolean(DISABLE_FRAME_DROP_PREF_STRING, DEFAULT_DISABLE_FRAME_DROP);
config.enableHdr = prefs.getBoolean(ENABLE_HDR_PREF_STRING, DEFAULT_ENABLE_HDR);
config.enablePip = prefs.getBoolean(ENABLE_PIP_PREF_STRING, DEFAULT_ENABLE_PIP);
config.enablePerfOverlay = prefs.getBoolean(ENABLE_PERF_OVERLAY_STRING, DEFAULT_ENABLE_PERF_OVERLAY);
@@ -19,9 +19,11 @@ import android.preference.PreferenceScreen;
import android.util.DisplayMetrics;
import android.util.Range;
import android.view.Display;
import android.view.DisplayCutout;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowInsets;
import com.limelight.LimeLog;
import com.limelight.PcView;
@@ -36,10 +38,13 @@ import java.util.Arrays;
public class StreamSettings extends Activity {
private PreferenceConfiguration previousPrefs;
// HACK for Android 9
static DisplayCutout displayCutoutP;
void reloadSettings() {
getFragmentManager().beginTransaction().replace(
R.id.stream_settings, new SettingsFragment()
).commit();
).commitAllowingStateLoss();
}
@Override
@@ -51,11 +56,28 @@ public class StreamSettings extends Activity {
UiHelper.setLocale(this);
setContentView(R.layout.activity_stream_settings);
reloadSettings();
UiHelper.notifyNewRootView(this);
}
@Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
// We have to use this hack on Android 9 because we don't have Display.getCutout()
// which was added in Android 10.
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.P) {
// Insets can be null when the activity is recreated on screen rotation
// https://stackoverflow.com/questions/61241255/windowinsets-getdisplaycutout-is-null-everywhere-except-within-onattachedtowindo
WindowInsets insets = getWindow().getDecorView().getRootWindowInsets();
if (insets != null) {
displayCutoutP = insets.getDisplayCutout();
}
}
reloadSettings();
}
@Override
public void onBackPressed() {
finish();
@@ -79,10 +101,20 @@ public class StreamSettings extends Activity {
pref.setValue(value);
}
private void addNativeResolutionEntry(int nativeWidth, int nativeHeight) {
private void addNativeResolutionEntry(int nativeWidth, int nativeHeight, boolean insetsRemoved) {
ListPreference pref = (ListPreference) findPreference(PreferenceConfiguration.RESOLUTION_PREF_STRING);
String newName = getResources().getString(R.string.resolution_prefix_native) + " ("+nativeWidth+"x"+nativeHeight+")";
String newName;
if (insetsRemoved) {
newName = getResources().getString(R.string.resolution_prefix_native_fullscreen);
}
else {
newName = getResources().getString(R.string.resolution_prefix_native);
}
newName += " ("+nativeWidth+"x"+nativeHeight+")";
String newValue = nativeWidth+"x"+nativeHeight;
CharSequence[] values = pref.getEntryValues();
@@ -200,6 +232,13 @@ public class StreamSettings extends Activity {
category.removePreference(findPreference("checkbox_enable_pip"));
}
// Fire TV apps are not allowed to use WebViews or browsers, so hide the Help category
/*if (getActivity().getPackageManager().hasSystemFeature("amazon.hardware.fire_tv")) {
PreferenceCategory category =
(PreferenceCategory) findPreference("category_help");
screen.removePreference(category);
}*/
// Remove the vibration options if the device can't vibrate
if (!((Vibrator)getActivity().getSystemService(Context.VIBRATOR_SERVICE)).hasVibrator()) {
PreferenceCategory category =
@@ -221,6 +260,38 @@ public class StreamSettings extends Activity {
int maxSupportedResW = 0;
// Add a native resolution with any insets included for users that don't want content
// behind the notch of their display
boolean hasInsets = false;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
DisplayCutout cutout;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
// Use the much nicer Display.getCutout() API on Android 10+
cutout = display.getCutout();
}
else {
// Android 9 only
cutout = displayCutoutP;
}
if (cutout != null) {
int widthInsets = cutout.getSafeInsetLeft() + cutout.getSafeInsetRight();
int heightInsets = cutout.getSafeInsetBottom() + cutout.getSafeInsetTop();
if (widthInsets != 0 || heightInsets != 0) {
DisplayMetrics metrics = new DisplayMetrics();
display.getRealMetrics(metrics);
int width = Math.max(metrics.widthPixels - widthInsets, metrics.heightPixels - heightInsets);
int height = Math.min(metrics.widthPixels - widthInsets, metrics.heightPixels - heightInsets);
addNativeResolutionEntry(width, height, false);
hasInsets = true;
}
}
}
// Always allow resolutions that are smaller or equal to the active
// display resolution because decoders can report total non-sense to us.
// For example, a p201 device reports:
@@ -240,7 +311,7 @@ public class StreamSettings extends Activity {
// unless they report greater than 4K resolutions.
if (!getActivity().getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEVISION) ||
(width > 3840 || height > 2160)) {
addNativeResolutionEntry(width, height);
addNativeResolutionEntry(width, height, hasInsets);
}
if ((width >= 3840 || height >= 2160) && maxSupportedResW < 3840) {
@@ -350,7 +421,7 @@ public class StreamSettings extends Activity {
getActivity().getWindowManager().getDefaultDisplay().getRealMetrics(metrics);
int width = Math.max(metrics.widthPixels, metrics.heightPixels);
int height = Math.min(metrics.widthPixels, metrics.heightPixels);
addNativeResolutionEntry(width, height);
addNativeResolutionEntry(width, height, false);
}
else {
// On Android 4.1, we have to resort to reflection to invoke hidden APIs
@@ -361,7 +432,7 @@ public class StreamSettings extends Activity {
Method getRawWidthFunc = Display.class.getMethod("getRawWidth");
int width = (Integer) getRawWidthFunc.invoke(display);
int height = (Integer) getRawHeightFunc.invoke(display);
addNativeResolutionEntry(Math.max(width, height), Math.min(width, height));
addNativeResolutionEntry(Math.max(width, height), Math.min(width, height), false);
} catch (Exception e) {
e.printStackTrace();
}
@@ -0,0 +1,45 @@
package com.limelight.preferences;
import android.annotation.TargetApi;
import android.content.Context;
import android.os.Build;
import android.preference.Preference;
import android.util.AttributeSet;
import com.limelight.utils.HelpLauncher;
public class WebLauncherPreference extends Preference {
private String url;
public WebLauncherPreference(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initialize(attrs);
}
public WebLauncherPreference(Context context, AttributeSet attrs) {
super(context, attrs);
initialize(attrs);
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public WebLauncherPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
initialize(attrs);
}
private void initialize(AttributeSet attrs) {
if (attrs == null) {
throw new IllegalStateException("WebLauncherPreference must have attributes!");
}
url = attrs.getAttributeValue(null, "url");
if (url == null) {
throw new IllegalStateException("WebLauncherPreference must have 'url' attribute!");
}
}
@Override
public void onClick() {
HelpLauncher.launchUrl(getContext(), url);
}
}
@@ -8,7 +8,7 @@ import android.net.Uri;
import com.limelight.HelpActivity;
public class HelpLauncher {
private static void launchUrl(Context context, String url) {
public static void launchUrl(Context context, String url) {
// Try to launch the default browser
try {
Intent i = new Intent(Intent.ACTION_VIEW);
@@ -39,7 +39,7 @@ public class ShortcutHelper {
@TargetApi(Build.VERSION_CODES.N_MR1)
private void reapShortcutsForDynamicAdd() {
List<ShortcutInfo> dynamicShortcuts = sm.getDynamicShortcuts();
while (dynamicShortcuts.size() >= sm.getMaxShortcutCountPerActivity()) {
while (!dynamicShortcuts.isEmpty() && dynamicShortcuts.size() >= sm.getMaxShortcutCountPerActivity()) {
ShortcutInfo maxRankShortcut = dynamicShortcuts.get(0);
for (ShortcutInfo scut : dynamicShortcuts) {
if (maxRankShortcut.getRank() < scut.getRank()) {
@@ -118,8 +118,16 @@ public class ShortcutHelper {
// To avoid a random carousel of shortcuts popping in and out based on polling status,
// we only add shortcuts if it's not at the limit or the user made a conscious action
// to interact with this PC.
if (forceAdd || sm.getDynamicShortcuts().size() < sm.getMaxShortcutCountPerActivity()) {
if (forceAdd) {
// This should free an entry for us to add one below
reapShortcutsForDynamicAdd();
}
// We still need to check the maximum shortcut count even after reaping,
// because there's a possibility that it could be zero.
if (sm.getDynamicShortcuts().size() < sm.getMaxShortcutCountPerActivity()) {
// Add a shortcut if there is room
sm.addDynamicShortcuts(Collections.singletonList(sinfo));
}
}
@@ -32,6 +32,7 @@ static jmethodID BridgeClConnectionStartedMethod;
static jmethodID BridgeClConnectionTerminatedMethod;
static jmethodID BridgeClRumbleMethod;
static jmethodID BridgeClConnectionStatusUpdateMethod;
static jmethodID BridgeClSetHdrModeMethod;
static jbyteArray DecodedFrameBuffer;
static jshortArray DecodedAudioBuffer;
@@ -92,6 +93,7 @@ Java_com_limelight_nvstream_jni_MoonBridge_init(JNIEnv *env, jclass clazz) {
BridgeClConnectionTerminatedMethod = (*env)->GetStaticMethodID(env, clazz, "bridgeClConnectionTerminated", "(I)V");
BridgeClRumbleMethod = (*env)->GetStaticMethodID(env, clazz, "bridgeClRumble", "(SSS)V");
BridgeClConnectionStatusUpdateMethod = (*env)->GetStaticMethodID(env, clazz, "bridgeClConnectionStatusUpdate", "(I)V");
BridgeClSetHdrModeMethod = (*env)->GetStaticMethodID(env, clazz, "bridgeClSetHdrMode", "(Z)V");
}
int BridgeDrSetup(int videoFormat, int width, int height, int redrawRate, void* context, int drFlags) {
@@ -326,6 +328,16 @@ void BridgeClConnectionStatusUpdate(int connectionStatus) {
}
}
void BridgeClSetHdrMode(bool enabled) {
JNIEnv* env = GetThreadEnv();
(*env)->CallStaticVoidMethod(env, GlobalBridgeClass, BridgeClSetHdrModeMethod, enabled);
if ((*env)->ExceptionCheck(env)) {
// We will crash here
(*JVM)->DetachCurrentThread(JVM);
}
}
void BridgeClLogMessage(const char* format, ...) {
va_list va;
va_start(va, format);
@@ -359,11 +371,13 @@ static CONNECTION_LISTENER_CALLBACKS BridgeConnListenerCallbacks = {
.logMessage = BridgeClLogMessage,
.rumble = BridgeClRumble,
.connectionStatusUpdate = BridgeClConnectionStatusUpdate,
.setHdrMode = BridgeClSetHdrMode,
};
JNIEXPORT jint JNICALL
Java_com_limelight_nvstream_jni_MoonBridge_startConnection(JNIEnv *env, jclass clazz,
jstring address, jstring appVersion, jstring gfeVersion,
jstring rtspSessionUrl,
jint width, jint height, jint fps,
jint bitrate, jint packetSize, jint streamingRemotely,
jint audioConfiguration, jboolean supportsHevc,
@@ -377,6 +391,7 @@ Java_com_limelight_nvstream_jni_MoonBridge_startConnection(JNIEnv *env, jclass c
.address = (*env)->GetStringUTFChars(env, address, 0),
.serverInfoAppVersion = (*env)->GetStringUTFChars(env, appVersion, 0),
.serverInfoGfeVersion = gfeVersion ? (*env)->GetStringUTFChars(env, gfeVersion, 0) : NULL,
.rtspSessionUrl = rtspSessionUrl ? (*env)->GetStringUTFChars(env, rtspSessionUrl, 0) : NULL,
};
STREAM_CONFIGURATION streamConfig = {
.width = width,
@@ -416,6 +431,9 @@ Java_com_limelight_nvstream_jni_MoonBridge_startConnection(JNIEnv *env, jclass c
if (gfeVersion != NULL) {
(*env)->ReleaseStringUTFChars(env, gfeVersion, serverInfo.serverInfoGfeVersion);
}
if (rtspSessionUrl != NULL) {
(*env)->ReleaseStringUTFChars(env, rtspSessionUrl, serverInfo.rtspSessionUrl);
}
return ret;
}
@@ -4,6 +4,7 @@
#include <android/log.h>
#include <arpa/inet.h>
#include <string.h>
JNIEXPORT void JNICALL
Java_com_limelight_nvstream_jni_MoonBridge_sendMouseMove(JNIEnv *env, jclass clazz, jshort deltaX, jshort deltaY) {
@@ -54,6 +55,13 @@ Java_com_limelight_nvstream_jni_MoonBridge_sendMouseHighResScroll(JNIEnv *env, j
LiSendHighResScrollEvent(scrollAmount);
}
JNIEXPORT void JNICALL
Java_com_limelight_nvstream_jni_MoonBridge_sendUtf8Text(JNIEnv *env, jclass clazz, jstring text) {
const char* utf8Text = (*env)->GetStringUTFChars(env, text, NULL);
LiSendUtf8TextEvent(utf8Text, strlen(utf8Text));
(*env)->ReleaseStringUTFChars(env, text, utf8Text);
}
JNIEXPORT void JNICALL
Java_com_limelight_nvstream_jni_MoonBridge_stopConnection(JNIEnv *env, jclass clazz) {
LiStopConnection();
+2
View File
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
-14
View File
@@ -1,14 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="decoder_names">
<item>Decoder automatisch auswählen</item>
<item>Software Decodierung erzwingen</item>
<item>Hardware Decodierung erzwingen</item>
</string-array>
<string-array name="video_format_names">
<item>Verwende HEVC so fern stabile Unterstützung vorhanden ist</item>
<item>Immer HEVC verwenden (könnte Crashes verursachen)</item>
<item>Nie HEVC verwenden</item>
</string-array>
</resources>
+28 -6
View File
@@ -1,7 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_label" translatable="false">Moonlight</string>
<string name="app_label_root" translatable="false">Moonlight (Root)</string>
<!-- Shortcut strings -->
<string name="scut_deleted_pc">Host gelöscht</string>
<string name="scut_not_paired">Host nicht gekoppelt</string>
@@ -99,7 +97,6 @@
<string name="perf_overlay_renderingfps">Wiedergabe-Bildwiederholungsrate: %1$.2f FPS</string>
<string name="perf_overlay_netdrops">Wegen Netzwerkübertragung ausgelassene Frames: %1$.2f%%</string>
<string name="perf_overlay_dectime">Durchschnittliche Dekodierungszeit: %1$.2f ms</string>
<!-- AppList activity -->
<string name="applist_connect_msg">Verbinde mit Host…</string>
<string name="applist_menu_resume">Sitzung wiederherstellen</string>
@@ -135,7 +132,7 @@
<string name="summary_fps_list">Erhöhen für einen gleichmäßigeren Video-Stream. Verringern um auf langsameren Geräten eine bessere Performance zu erzielen.</string>
<string name="title_seekbar_bitrate">Video Bitrate</string>
<string name="summary_seekbar_bitrate">Erhöhen für einen schärferen Video-Stream. Verringern um auf langsameren Geräten eine bessere Performance zu erzielen.</string>
<string name="suffix_seekbar_bitrate_mbps">Mbps</string>
<string name="suffix_seekbar_bitrate_mbps">Mbit/s</string>
<string name="title_checkbox_stretch_video">Video auf Vollbildschirm strecken</string>
<string name="category_audio_settings">Audio Einstellungen</string>
<string name="title_audio_config_list">Surround Sound Konfiguration </string>
@@ -194,8 +191,8 @@
<string name="title_checkbox_disable_warnings">Warnhinweise deaktivieren</string>
<string name="summary_checkbox_disable_warnings">On-Screen Warnmeldungen während des Streaming deaktivieren</string>
<string name="summary_disable_frame_drop">Kann das Mikro-Ruckeln auf einigen Geräten reduzieren, allerdings erhöht dies gleichzeitig die Latenz</string>
<string name="title_video_format">H265 Einstellungen ändern</string>
<string name="summary_video_format">H265 verringert die Video-Bandbreitenanforderung, funktioniert allerdings nur auf sehr neuen Geräten</string>
<string name="title_video_format">HEVC Einstellungen ändern</string>
<string name="summary_video_format">HEVC verringert die Video-Bandbreitenanforderung, funktioniert allerdings nur auf sehr neuen Geräten</string>
<string name="title_enable_hdr">HDR aktivieren (experimentell)</string>
<string name="summary_enable_hdr">HDR-Streaming sofern dies von der Host-GPU unterstützt wird. HDR erfordert eine GPU der GTX 1000 Serie oder neuer.</string>
<string name="title_enable_perf_overlay">Performance Overlay aktivieren</string>
@@ -220,4 +217,29 @@
<string name="pcview_menu_header_unknown">Aktualisiere</string>
<string name="pcview_menu_header_offline">Offline</string>
<string name="pcview_menu_header_online">Online</string>
<!-- Array strings -->
<string name="videoformat_hevcauto">Verwende HEVC so fern stabile Unterstützung vorhanden ist</string>
<string name="videoformat_hevcalways">Immer HEVC verwenden (könnte Crashes verursachen)</string>
<string name="videoformat_hevcnever">Nie HEVC verwenden</string>
<string name="title_frame_pacing">Video Frame-Pacing</string>
<string name="summary_frame_pacing">Lege fest, wie die Videolatenz und die flüssige Wiedergabe ausgeglichen werden sollen</string>
<string name="resolution_prefix_native_fullscreen">Natives Vollbild</string>
<string name="pacing_latency">Bevorzuge niedrigste Latenz</string>
<string name="pacing_balanced">Ausgeglichen</string>
<string name="pacing_smoothness">Bevorzuge flüssige Bildwiedergabe (kann die Latenzzeit deutlich erhöhen)</string>
<string name="perf_overlay_streamdetails">Video Stream: %1$s %2$.2f FPS</string>
<string name="resolution_360p">360p</string>
<string name="resolution_1080p">1080p</string>
<string name="resolution_1440p">1440p</string>
<string name="resolution_4k">4K</string>
<string name="audioconf_stereo">Stereo</string>
<string name="audioconf_51surround">5.1 Surround Sound</string>
<string name="audioconf_71surround">7.1 Surround Sound</string>
<string name="perf_overlay_netlatency">Durchschnittliche Netzwerklatenz: %1$d ms (Abweichung: %2$d ms)</string>
<string name="fps_30">30 FPS</string>
<string name="resolution_480p">480p</string>
<string name="fps_120">120 FPS</string>
<string name="resolution_720p">720p</string>
<string name="fps_60">60 FPS</string>
<string name="fps_90">90 FPS</string>
</resources>
+208
View File
@@ -0,0 +1,208 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="unable_to_pin_shortcut">Η τρέχουσα εφαρμογή εκκίνησης δεν επιτρέπει τη δημιουργία καρφιτσωμένων συντομεύσεων.</string>
<string name="pcview_menu_delete_pc">Διαγραφή υπολογιστή</string>
<string name="nettest_text_success">Το δίκτυό σας δεν φαίνεται να μπλοκάρει το Moonlight. Αν εξακολουθείτε να έχετε πρόβλημα σύνδεσης, ελέγξτε τις ρυθμίσεις του τείχους προστασίας του υπολογιστή σας.
\n
\nΕάν προσπαθείτε να κάνετε streaming μέσω του Διαδικτύου, εγκαταστήστε το Moonlight Internet Hosting Tool στον υπολογιστή σας και εκτελέστε το συμπεριλαμβανόμενο Internet Streaming Tester για να ελέγξετε τη σύνδεση του υπολογιστή σας στο Διαδίκτυο.</string>
<string name="error_manager_not_running">Η υπηρεσία ComputerManager δεν εκτελείται. Περιμένετε μερικά δευτερόλεπτα ή επανεκκινήστε την εφαρμογή.</string>
<string name="message_decoding_error">Το Moonlight κατέρρευσε λόγω ασυμβατότητας με τον αποκωδικοποιητή βίντεο αυτής της συσκευής. Βεβαιωθείτε ότι το GeForce Experience έχει ενημερωθεί στην τελευταία έκδοση στον υπολογιστή σας. Δοκιμάστε να προσαρμόσετε τις ρυθμίσεις ροής, εάν οι καταρρεύσεις συνεχίζονται.</string>
<string name="help_loading_title">Πρόγραμμα προβολής βοήθειας</string>
<string name="help_loading_msg">Φόρτωση σελίδας βοήθειας…</string>
<string name="pcview_menu_header_online">Σε σύνδεση</string>
<string name="pcview_menu_header_unknown">Ανανέωση</string>
<string name="pcview_menu_app_list">Προβολή όλων των εφαρμογών</string>
<string name="pcview_menu_pair_pc">Σύζευξη με υπολογιστή</string>
<string name="pcview_menu_unpair_pc">Κατάργηση ζεύξης</string>
<string name="pcview_menu_send_wol">Αποστολή αιτήματος Wake-On-LAN</string>
<string name="nettest_title_waiting">Δοκιμή σύνδεσης δικτύου</string>
<string name="nettest_title_done">Ολοκληρώθηκε η δοκιμή δικτύου</string>
<string name="nettest_text_inconclusive">Η δοκιμή δικτύου δεν μπορούσε να πραγματοποιηθεί επειδή κανένας από τους διακομιστές δοκιμής σύνδεσης της Moonlight δεν ήταν προσβάσιμος. Ελέγξτε τη σύνδεσή σας στο Internet ή δοκιμάστε ξανά αργότερα.</string>
<string name="nettest_text_blocked">Η τρέχουσα σύνδεση δικτύου της συσκευής σας εμποδίζει το Moonlight. Η ροή μέσω του Internet ενδέχεται να μην λειτουργεί ενώ είστε συνδεδεμένοι σε αυτό το δίκτυο.</string>
<string name="pairing">Σύζευξη…</string>
<string name="pair_pc_offline">Ο υπολογιστής είναι εκτός σύνδεσης</string>
<string name="pair_pc_ingame">Ο υπολογιστής βρίσκεται αυτή τη στιγμή σε παιχνίδι. Πρέπει να κλείσετε το παιχνίδι πριν κάνετε σύζευξη.</string>
<string name="pair_pairing_title">Σύζευξη</string>
<string name="pair_pairing_msg">Εισαγάγετε τον ακόλουθο κωδικό PIN στον υπολογιστή προορισμού:</string>
<string name="pair_incorrect_pin">Λανθασμένο PIN</string>
<string name="pair_already_in_progress">Η σύζευξη βρίσκεται ήδη σε εξέλιξη</string>
<string name="wol_pc_online">Ο υπολογιστής είναι συνδεδεμένος</string>
<string name="wol_waking_pc">Αφύπνιση υπολογιστή…</string>
<string name="wol_waking_msg">Μπορεί να χρειαστούν μερικά δευτερόλεπτα για να αφυπνισθεί ο υπολογιστής σας. Αν δεν το κάνει, βεβαιωθείτε ότι έχει ρυθμιστεί σωστά για Wake-On-LAN.</string>
<string name="scut_invalid_app_id">Η παρεχόμενη εφαρμογή δεν είναι έγκυρη</string>
<string name="scut_invalid_uuid">Ο παρεχόμενος υπολογιστής δεν είναι έγκυρος</string>
<string name="pcview_menu_details">Προβολή λεπτομερειών</string>
<string name="nettest_text_failure">Η τρέχουσα σύνδεση δικτύου της συσκευής σας φαίνεται να εμποδίζει το Moonlight. Η ροή μέσω του Internet ενδέχεται να μην λειτουργεί ενώ είστε συνδεδεμένοι σε αυτό το δίκτυο.
\n
\nΟι ακόλουθες θύρες δικτύου αποκλείστηκαν:
\n</string>
<string name="perf_overlay_netlatency">Μέσος λανθάνων χρόνος δικτύου: %1$d MS (διακύμανση: %2$d ms)</string>
<string name="applist_menu_hide_app">Απόκρυψη εφαρμογής</string>
<string name="applist_refresh_title">Λίστα εφαρμογών</string>
<string name="applist_refresh_error_title">Σφάλμα</string>
<string name="applist_refresh_error_msg">Απέτυχε η λήψη λίστας εφαρμογών</string>
<string name="applist_quit_fail">Αποτυχία διακοπής</string>
<string name="applist_quit_confirmation">Είστε σίγουροι ότι θέλετε να τερματίσετε την τρέχουσα εφαρμογή; Όλα τα μη αποθηκευμένα δεδομένα θα χαθούν.</string>
<string name="dialog_text_reset_osc">Είστε βέβαιοι ότι θέλετε να διαγράψετε την αποθηκευμένη διάταξη στοιχείων ελέγχου στην οθόνη;</string>
<string name="title_enable_perf_overlay">Εμφάνιση στατιστικών στοιχείων απόδοσης κατά τη ροή</string>
<string name="unpair_error">Η συσκευή δεν είχε συζευξηθεί</string>
<string name="error_pc_offline">Ο υπολογιστής είναι εκτός σύνδεσης</string>
<string name="error_unknown_host">Αποτυχία επίλυσης ονόματος κεντρικού υπολογιστή</string>
<string name="title_decoding_error">Ο αποκωδικοποιητής βίντεο κατέρρευσε</string>
<string name="title_decoding_reset">Επαναφορά ρυθμίσεων βίντεο</string>
<string name="message_decoding_reset">Ο αποκωδικοποιητής βίντεο της συσκευής σας συνεχίζει να κολλάει στις επιλεγμένες ρυθμίσεις ροής. Οι ρυθμίσεις ροής σας επαναφέρθηκαν στις προεπιλογές.</string>
<string name="error_usb_prohibited">Η πρόσβαση μέσω USB απαγορεύεται από το διαχειριστή της συσκευής σας. Ελέγξτε τις ρυθμίσεις Knox ή MDM.</string>
<string name="no_video_received_error">Δεν ελήφθη βίντεο από τον κεντρικό υπολογιστή.</string>
<string name="no_frame_received_error">Η σύνδεσή σας στο δίκτυο δεν αποδίδει καλά. Μειώστε το bitrate ή δοκιμάστε μια ταχύτερη σύνδεση.</string>
<string name="check_ports_msg">Ελέγξτε το τείχος προστασίας και τους κανόνες προώθησης θυρών για τις θύρες:</string>
<string name="conn_establishing_title">Δημιουργία σύνδεσης</string>
<string name="conn_establishing_msg">Έναρξη σύνδεσης</string>
<string name="conn_metered">Προειδοποίηση: Η ενεργή σύνδεσή σας στο δίκτυο έχει όριο δεδομένων!</string>
<string name="conn_client_latency">Μέσος χρόνος αποκωδικοποίησης πλαισίων:</string>
<string name="conn_client_latency_hw">Λανθάνων χρόνος αποκωδικοποιητή υλικού:</string>
<string name="conn_hardware_latency">Μέση καθυστέρηση αποκωδικοποίησης υλικού:</string>
<string name="conn_starting">Εκκίνηση</string>
<string name="conn_terminated_msg">Η σύνδεση τερματίστηκε</string>
<string name="ip_hint">Διεύθυνση IP του υπολογιστή GeForce</string>
<string name="yes">Ναί</string>
<string name="perf_overlay_streamdetails">Ροή βίντεο: %1$s %2$.2f FPS</string>
<string name="perf_overlay_decoder">Αποκωδικοποιητής: %1$s</string>
<string name="perf_overlay_incomingfps">Ρυθμός εισερχόμενων καρέ από το δίκτυο: %1$.2f FPS</string>
<string name="applist_menu_cancel">Ακύρωση</string>
<string name="applist_menu_tv_channel">Προσθήκη στο κανάλι</string>
<string name="applist_refresh_msg">Ανανέωση εφαρμογών…</string>
<string name="addpc_success">Ο υπολογιστής προστέθηκε με επιτυχία</string>
<string name="addpc_unknown_host">Αδυναμία επίλυσης διεύθυνσης υπολογιστή. Βεβαιωθείτε ότι δεν κάνατε τυπογραφικό λάθος στη διεύθυνση.</string>
<string name="title_fps_list">Ρυθμός καρέ βίντεο</string>
<string name="summary_fps_list">Αύξηση για πιο ομαλή ροή βίντεο. Μειώστε για καλύτερες επιδόσεις σε συσκευές χαμηλότερων προδιαγραφών.</string>
<string name="title_seekbar_bitrate">Ρυθμός bit βίντεο</string>
<string name="summary_seekbar_bitrate">Αυξήστε για καλύτερη ποιότητα εικόνας. Μείωση για τη βελτίωση των επιδόσεων σε πιο αργές συνδέσεις.</string>
<string name="suffix_seekbar_bitrate_mbps">Mbps</string>
<string name="title_checkbox_stretch_video">Επέκταση βίντεο σε πλήρη οθόνη</string>
<string name="resolution_prefix_native">Εγγενής</string>
<string name="resolution_prefix_native_fullscreen">Εγγενής πλήρης οθόνη</string>
<string name="category_audio_settings">Ρυθμίσεις ήχου</string>
<string name="title_audio_config_list">Ρύθμιση παραμέτρων ήχου surround</string>
<string name="summary_checkbox_vibrate_fallback">Δονεί τη συσκευή σας για να μιμηθεί το rumble αν το gamepad σας δεν το υποστηρίζει</string>
<string name="suffix_seekbar_deadzone">%</string>
<string name="title_checkbox_xb1_driver">Πρόγραμμα οδήγησης για Xbox 360/One USB gamepad</string>
<string name="summary_checkbox_xb1_driver">Ενεργοποιεί ένα ενσωματωμένο πρόγραμμα οδήγησης USB για συσκευές χωρίς εγγενή υποστήριξη χειριστηρίου Xbox</string>
<string name="title_checkbox_usb_bind_all">Παράκαμψη εγγενούς υποστήριξης του Xbox gamepad</string>
<string name="summary_checkbox_usb_bind_all">Χρησιμοποιήστε το πρόγραμμα οδήγησης USB του Moonlight για όλα τα υποστηριζόμενα gamepad, ακόμα και αν υπάρχει υποστήριξη εγγενούς ελεγκτή Xbox</string>
<string name="title_checkbox_mouse_emulation">Εξομοίωση ποντικιού μέσω gamepad</string>
<string name="title_checkbox_mouse_nav_buttons">Ενεργοποίηση κουμπιών ποντικιού πίσω και εμπρός</string>
<string name="summary_checkbox_mouse_nav_buttons">Η ενεργοποίηση αυτής της επιλογής μπορεί να διακόψει το δεξί κλικ σε ορισμένες συσκευές με σφάλματα</string>
<string name="title_checkbox_flip_face_buttons">Αναστροφή κουμπιών πρόσωψης</string>
<string name="summary_checkbox_flip_face_buttons">Αλλάζει τα κουμπιά πρόσοψης A/B και X/Y για τα gamepad και τα χειριστήρια στην οθόνη</string>
<string name="summary_checkbox_show_onscreen_controls">Εμφάνιση επικάλυψης εικονικού ελεγκτή στην οθόνη αφής</string>
<string name="title_checkbox_vibrate_osc">Ενεργοποίηση δόνησης</string>
<string name="title_only_l3r3">Εμφάνιση μόνο των L3 και R3</string>
<string name="summary_only_l3r3">Απόκρυψη όλων των εικονικών κουμπιών εκτός των L3 και R3</string>
<string name="dialog_title_reset_osc">Επαναφορά διάταξης</string>
<string name="toast_reset_osc_success">Επαναφορά των στοιχείων ελέγχου στην οθόνη στις προεπιλογές</string>
<string name="title_osc_opacity">Αλλαγή της αδιαφάνειας των στοιχείων ελέγχου στην οθόνη</string>
<string name="summary_osc_opacity">Κάντε τα στοιχεία ελέγχου στην οθόνη περισσότερο/λιγότερο διαφανή</string>
<string name="suffix_osc_opacity">%</string>
<string name="category_ui_settings">Ρυθμίσεις διεπαφής χρήστη</string>
<string name="title_checkbox_enable_pip">Ενεργοποίηση της λειτουργίας παρατηρητή εικόνας μέσα σε εικόνα</string>
<string name="summary_checkbox_enable_pip">Επιτρέπει την προβολή της ροής (αλλά όχι τον έλεγχο) κατά την εκτέλεση πολλαπλών εργασιών</string>
<string name="title_language_list">Γλώσσα</string>
<string name="summary_language_list">Γλώσσα που χρησιμοποιείται για το Moonlight</string>
<string name="title_checkbox_small_icon_mode">Χρησιμοποιήστε μικρά κουτιά</string>
<string name="scut_not_paired">Ο υπολογιστής δεν έχει συζευχθεί</string>
<string name="pcview_menu_header_offline">Εκτός σύνδεσης</string>
<string name="pcview_menu_test_network">Δοκιμή σύνδεσης δικτύου</string>
<string name="nettest_text_waiting">Το Moonlight δοκιμάζει τη σύνδεση δικτύου σας για να καθορίσει εάν το NVIDIA GameStream είναι αποκλεισμένο.
\n
\nΑυτό μπορεί να πάρει μερικά δευτερόλεπτα…</string>
<string name="pair_fail">Η σύζευξη απέτυχε</string>
<string name="wol_no_mac">Δεν είναι δυνατή η αφύπνιση του υπολογιστή επειδή το GFE δεν έστειλε διεύθυνση MAC</string>
<string name="wol_fail">Απέτυχε η αποστολή πακέτων Wake-On-LAN</string>
<string name="unpairing">Κατάργηση σύζευξης…</string>
<string name="unpair_success">Καταργήθηκε η σύζευξη με επιτυχία</string>
<string name="unpair_fail">Αποτυχία κατάργησης σύζευξης</string>
<string name="summary_checkbox_small_icon_mode">Το μικρότερο box art στο πλέγμα εφαρμογών επιτρέπει σε περισσότερες εφαρμογές να είναι ορατές στην οθόνη</string>
<string name="category_host_settings">Ρυθμίσεις κεντρικού υπολογιστή</string>
<string name="title_checkbox_host_audio">Αναπαραγωγή ήχου στον υπολογιστή</string>
<string name="summary_checkbox_host_audio">Αναπαραγωγή ήχου από τον υπολογιστή και αυτή τη συσκευή</string>
<string name="title_checkbox_disable_warnings">Απενεργοποίηση προειδοποιητικών μηνυμάτων</string>
<string name="summary_checkbox_disable_warnings">Απενεργοποίηση των προειδοποιητικών μηνυμάτων σύνδεσης στην οθόνη κατά τη ροή</string>
<string name="summary_disable_frame_drop">Μπορεί να μειώσει το micro-stuttering σε ορισμένες συσκευές, αλλά μπορεί να αυξήσει την καθυστέρηση</string>
<string name="title_enable_hdr">Ενεργοποίηση HDR (πειραματικό)</string>
<string name="summary_enable_hdr">Μεταδώστε HDR όταν το παιχνίδι και η GPU του υπολογιστή το υποστηρίζουν. Το HDR απαιτεί GPU της σειράς GTX 1000 ή νεότερη.</string>
<string name="summary_enable_perf_overlay">Εμφάνιση πληροφοριών απόδοσης ροής σε πραγματικό χρόνο κατά τη ροή</string>
<string name="summary_enable_post_stream_toast">Εμφάνιση ενός μηνύματος πληροφοριών καθυστέρησης μετά το τέλος της ροής</string>
<string name="scut_deleted_pc">Ο υπολογιστής διαγράφηκε</string>
<string name="scut_pc_not_found">Ο υπολογιστής δεν βρέθηκε</string>
<string name="early_termination_error">Κάτι πήγε στραβά στον κεντρικό υπολογιστή σας κατά την εκκίνηση της ροής.
\n
\nΒεβαιωθείτε ότι δεν έχετε ανοιχτό περιεχόμενο που προστατεύεται από DRM στον κεντρικό υπολογιστή σας. Μπορείτε επίσης να δοκιμάσετε να κάνετε επανεκκίνηση του κεντρικού υπολογιστή σας.
\n
\nΑν το πρόβλημα παραμένει, δοκιμάστε να επανεγκαταστήσετε τα προγράμματα οδήγησης της κάρτας γραφικών και το GeForce Experience.</string>
<string name="conn_terminated_title">Η σύνδεση τερματίστηκε</string>
<string name="help">Βοήθεια</string>
<string name="perf_overlay_netdrops">Πλαίσια που απορρίπτονται από τη σύνδεση δικτύου σας: %1$.2f%%</string>
<string name="applist_quit_app">Εγκατάλειψη</string>
<string name="msg_add_pc">Σύνδεση στον υπολογιστή…</string>
<string name="error_404">Το GFE επέστρεψε ένα σφάλμα HTTP 404. Βεβαιωθείτε ότι ο υπολογιστής σας χρησιμοποιεί μια υποστηριζόμενη κάρτα γραφικών. Η χρήση λογισμικού απομακρυσμένης επιφάνειας εργασίας μπορεί επίσης να προκαλέσει αυτό το σφάλμα. Δοκιμάστε την επανεκκίνηση του υπολογιστή σας ή την επανεγκατάσταση του GFE.</string>
<string name="video_decoder_init_failed">Απέτυχε η προετοιμασία του αποκωδικοποιητή βίντεο. Η συσκευή σας ενδέχεται να μην υποστηρίζει την επιλεγμένη ανάλυση ή ρυθμό καρέ.</string>
<string name="perf_overlay_dectime">Μέσος χρόνος αποκωδικοποίησης: %1$.2f ms</string>
<string name="title_add_pc">Προσθήκη υπολογιστή χειροκίνητα</string>
<string name="lost_connection">Χάθηκε η σύνδεση με τον υπολογιστή</string>
<string name="title_details">Λεπτομέρειες</string>
<string name="applist_menu_resume">Συνέχιση περιόδου λειτουργίας</string>
<string name="applist_menu_quit">Έξοδος από τη συνεδρία</string>
<string name="addpc_wrong_sitelocal">Αυτή η διεύθυνση δεν φαίνεται σωστή. Πρέπει να χρησιμοποιείτε τη δημόσια διεύθυνση IP του δρομολογητή σας για ροή μέσω του Διαδικτύου.</string>
<string name="conn_error_title">Σφάλμα σύνδεσης</string>
<string name="conn_error_msg">Απέτυχε η εκκίνηση</string>
<string name="searching_pc">Αναζήτηση για υπολογιστές με GameStream σε λειτουργία...
\n
\n Βεβαιωθείτε ότι το GameStream είναι ενεργοποιημένο στις ρυθμίσεις GeForce Experience SHIELD.</string>
<string name="no">Οχι</string>
<string name="delete_pc_msg">Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτόν τον υπολογιστή;</string>
<string name="slow_connection_msg">Αργή σύνδεση με υπολογιστή
\nΜειώστε το bitrate σας</string>
<string name="poor_connection_msg">Κακή σύνδεση με τον υπολογιστή</string>
<string name="applist_connect_msg">Σύνδεση σε υπολογιστή…</string>
<string name="applist_menu_quit_and_start">Τερματισμός τρέχοντος παιχνιδιού και έναρξη</string>
<string name="summary_checkbox_touchscreen_trackpad">Εάν είναι ενεργοποιημένη, η οθόνη αφής λειτουργεί σαν trackpad. Εάν είναι απενεργοποιημένη, η οθόνη αφής ελέγχει απευθείας τον κέρσορα του ποντικιού.</string>
<string name="title_checkbox_multi_controller">Αυτόματη ανίχνευση παρουσίας gamepad</string>
<string name="applist_menu_details">Προβολή λεπτομερειών</string>
<string name="applist_quit_success">Επιτυχής έξοδος</string>
<string name="applist_menu_scut">Δημιουργία συντόμευσης</string>
<string name="applist_details_id">Αναγνωριστικό εφαρμογής:</string>
<string name="addpc_fail">Αδυναμία σύνδεσης με τον καθορισμένο υπολογιστή. Βεβαιωθείτε ότι οι απαιτούμενες θύρες επιτρέπονται μέσω του τείχους προστασίας.</string>
<string name="addpc_enter_ip">Πρέπει να εισαγάγετε μια διεύθυνση IP</string>
<string name="title_resolution_list">Ανάλυση βίντεο</string>
<string name="summary_audio_config_list">Ενεργοποίηση ήχου surround 5.1 ή 7.1 για συστήματα οικιακού κινηματογράφου</string>
<string name="category_input_settings">Ρυθμίσεις εισόδου</string>
<string name="title_checkbox_touchscreen_trackpad">Χρήση της οθόνης αφής ως trackpad</string>
<string name="summary_checkbox_multi_controller">Η απενεργοποίηση αυτής της επιλογής αναγκάζει ένα gamepad να είναι πάντα παρόν</string>
<string name="category_basic_settings">Βασικές ρυθμίσεις</string>
<string name="summary_resolution_list">Αυξήστε για να βελτιώσετε την ευκρίνεια της εικόνας. Μειώστε για καλύτερη απόδοση σε συσκευές χαμηλότερων επιδόσεων και σε πιο αργά δίκτυα.</string>
<string name="title_native_res_dialog">Προειδοποίηση εγγενούς ανάλυσης</string>
<string name="text_native_res_dialog">Οι λειτουργίες εγγενούς ανάλυσης δεν υποστηρίζονται επίσημα από το GeForce Experience, επομένως δεν θα ορίσει το ίδιο την ανάλυση της οθόνης υποδοχής σας. Θα πρέπει να τη ρυθμίσετε χειροκίνητα κατά τη διάρκεια του παιχνιδιού.
\n
\nΕάν επιλέξετε να δημιουργήσετε μια προσαρμοσμένη ανάλυση στον Πίνακα Ελέγχου της NVIDIA για να ταιριάζει με την ανάλυση της συσκευής σας, βεβαιωθείτε ότι έχετε διαβάσει και κατανοήσει την προειδοποίηση της NVIDIA σχετικά με πιθανή βλάβη της οθόνης, αστάθεια του υπολογιστή και άλλα πιθανά προβλήματα.
\n
\nΔεν είμαστε υπεύθυνοι για τυχόν προβλήματα που προκύπτουν από τη δημιουργία προσαρμοσμένης ανάλυσης στον υπολογιστή σας.
\n
\nΤέλος, η συσκευή ή ο κεντρικός υπολογιστής σας ενδέχεται να μην υποστηρίζει ροή σε εγγενή ανάλυση. Εάν δεν λειτουργεί στη συσκευή σας, δυστυχώς δεν είστε τυχεροί.</string>
<string name="title_checkbox_vibrate_fallback">Μιμηθείτε την υποστήριξη rumble με δόνηση</string>
<string name="title_seekbar_deadzone">Ρύθμιση της νεκρής ζώνης του αναλογικού μοχλού</string>
<string name="summary_checkbox_mouse_emulation">Με παρατεταμένο πάτημα του κουμπιού Έναρξη θα αλλάξει το gamepad σε λειτουργία ποντικιού</string>
<string name="category_on_screen_controls_settings">Ρυθμίσεις στοιχείων ελέγχου στην οθόνη</string>
<string name="summary_reset_osc">Επαναφέρει όλα τα στοιχεία ελέγχου στην οθόνη στο προεπιλεγμένο μέγεθος και τη θέση τους</string>
<string name="title_unlock_fps">Ξεκλειδώστε όλους τους πιθανούς ρυθμούς καρέ</string>
<string name="title_checkbox_show_onscreen_controls">Εμφάνιση στοιχείων ελέγχου στην οθόνη</string>
<string name="summary_checkbox_vibrate_osc">Δονεί τη συσκευή σας για να μιμηθεί το rumble για τα χειριστήρια στην οθόνη</string>
<string name="title_reset_osc">Εκκαθάριση αποθηκευμένης διάταξης στοιχείων ελέγχου στην οθόνη</string>
<string name="dialog_title_osc_opacity">Αλλαγή αδιαφάνειας</string>
<string name="title_checkbox_enable_sops">Βελτιστοποίηση ρυθμίσεων παιχνιδιού</string>
<string name="summary_checkbox_enable_sops">Επιτρέψτε στη GFE να τροποποιήσει τις ρυθμίσεις του παιχνιδιού για βέλτιστη ροή</string>
<string name="category_advanced_settings">Προηγμένες ρυθμίσεις</string>
<string name="summary_unlock_fps">Η ροή στα 90 ή 120 FPS μπορεί να μειώσει τον λανθάνοντα χρόνο σε συσκευές υψηλών προδιαγραφών, αλλά μπορεί να προκαλέσει καθυστέρηση ή αστάθεια σε συσκευές που δεν μπορούν να την υποστηρίξουν</string>
<string name="title_video_format">Αλλαγή ρυθμίσεων HEVC</string>
<string name="title_enable_post_stream_toast">Εμφάνιση μηνύματος λανθάνοντος χρόνου μετά τη ροή</string>
<string name="summary_video_format">Το HEVC μειώνει τις απαιτήσεις εύρους ζώνης βίντεο, αλλά απαιτεί μια νεότερη συσκευή</string>
</resources>
-14
View File
@@ -1,14 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="decoder_names">
<item>Automático</item>
<item>Forzar decodificación por software</item>
<item>Forzar decodificación por hardware</item>
</string-array>
<string-array name="video_format_names">
<item>Usar HEVC solo si es estable</item>
<item>Siempre usar HEVC (puede fallar)</item>
<item>Nunca usar HEVC</item>
</string-array>
</resources>
+34 -19
View File
@@ -1,13 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- PC view menu entries -->
<string name="pcview_menu_app_list">Ver lista de juegos</string>
<string name="pcview_menu_pair_pc">Emparejar con PC</string>
<string name="pcview_menu_unpair_pc">Desemparejar</string>
<string name="pcview_menu_send_wol">Enviar petición Wake-On-LAN</string>
<string name="pcview_menu_delete_pc">Eliminar PC</string>
<!-- Pair messages -->
<string name="pairing">Emparejando…</string>
<string name="pair_pc_offline">El ordenador está apagado</string>
@@ -16,7 +14,6 @@
<string name="pair_pairing_msg">Por favor, introduce el siguiente PIN en el PC destino:</string>
<string name="pair_incorrect_pin">PIN incorrecto</string>
<string name="pair_fail">Fallo al emparejar</string>
<!-- WOL messages -->
<string name="wol_pc_online">Ordenador encendido</string>
<string name="wol_no_mac">Imposible iniciar PC porque GFE no ha enviado una dirección MAC</string>
@@ -25,13 +22,11 @@
Si no se inicia asegúrate que está configurado correctamente para Wake-On-LAN.
</string>
<string name="wol_fail">Fallo al enviar paquetes Wake-On-LAN</string>
<!-- Unpair messages -->
<string name="unpairing">Desemparejando…</string>
<string name="unpair_success">Desemparejado con éxito</string>
<string name="unpair_fail">Error al desemparejar</string>
<string name="unpair_error">El dispositivo no estaba emparejado</string>
<!-- Errors -->
<string name="error_pc_offline">El ordenador está apagado</string>
<string name="error_manager_not_running">El servicio "ComputerManager" no está en ejecución. Por favor, espera unos segundos o reinicia la aplicación.</string>
@@ -39,7 +34,6 @@
<string name="error_404">GFE ha devuelto un error HTTP 404. Asegúrate que el PC tiene una GPU soportada.
Usar software de Escritorio Remoto puede causar este error. Intenta reiniciar el equipo o reinstalar GFE.
</string>
<!-- Start application messages -->
<string name="conn_establishing_title">Estableciendo conexión</string>
<string name="conn_establishing_msg">Iniciando conexión</string>
@@ -52,14 +46,12 @@
<string name="conn_error_msg">Fallo al iniciar</string>
<string name="conn_terminated_title">Conexión finalizada</string>
<string name="conn_terminated_msg">La conexión ha finalizando</string>
<!-- General strings -->
<string name="ip_hint">Dirección IP del PC con GeForce</string>
<string name="searching_pc">Buscando por PCs con GeForce Experience ejecutándose…</string>
<string name="yes">Si</string>
<string name="no">No</string>
<string name="lost_connection">Conexión perdida</string>
<!-- AppList activity -->
<string name="applist_menu_resume">Reanudar sesión</string>
<string name="applist_menu_quit">Cerrar sesión</string>
@@ -73,7 +65,6 @@
<string name="applist_quit_success">Cerrado satisfactoriamente</string>
<string name="applist_quit_fail">Error al cerrar</string>
<string name="applist_quit_confirmation">¿Estás seguro que deseas quitar la aplicación en ejecución? Todo dato sin salvar se perderá.</string>
<!-- Add computer manually activity -->
<string name="title_add_pc">Añadir PC manualmente</string>
<string name="msg_add_pc">Conectando al PC…</string>
@@ -81,7 +72,6 @@
<string name="addpc_success">Ordenador añadido satisfactoriamente</string>
<string name="addpc_unknown_host">Imposible resolver la dirección del PC. Asegúrate que no hay ningún error en la dirección.</string>
<string name="addpc_enter_ip">Debes introducir una dirección IP</string>
<!-- Preferences -->
<string name="category_basic_settings">Configuración básica</string>
<string name="title_resolution_list">Seleccionar resolución y FPS</string>
@@ -91,36 +81,61 @@
<string name="title_checkbox_stretch_video">Ajustar vídeo a pantalla completa</string>
<string name="title_checkbox_disable_warnings">Desactivar mensajes de advertencia</string>
<string name="summary_checkbox_disable_warnings">Desactivar mensajes de advertencia en pantalla durante la transmisión</string>
<string name="category_audio_settings">Configuración de audio</string>
<string name="title_checkbox_multi_controller">Soporte para múltiples mandos</string>
<string name="summary_checkbox_multi_controller">Si no está marcado, todos los mandos aparecen como uno solo</string>
<string name="title_seekbar_deadzone">Ajustar zona muerta del stick analógico</string>
<string name="suffix_seekbar_deadzone">%</string>
<string name="title_checkbox_xb1_driver">Driver para mando Xbox 360/One</string>
<string name="summary_checkbox_xb1_driver">Activa el driver USB incluido para dispositivos sin soporte nativo para mandos de Xbox.</string>
<string name="category_on_screen_controls_settings">Configuración de controles en pantalla</string>
<string name="title_checkbox_show_onscreen_controls">Mostrar controles en pantalla</string>
<string name="summary_checkbox_show_onscreen_controls">Muestra controles virtuales superpuestos en la pantalla táctil</string>
<string name="title_only_l3r3">Solo muestra L3 y R3</string>
<string name="summary_only_l3r3">Ocultar todo excepto L3 y R3</string>
<string name="category_ui_settings">Configuración de la interfaz</string>
<string name="title_language_list">Idioma</string>
<string name="summary_language_list">Idioma a usar por Moonlight</string>
<string name="title_checkbox_small_icon_mode">Usar iconos pequeños</string>
<string name="summary_checkbox_small_icon_mode">Usar iconos pequeños en las entradas de cuadrículas para permitir más entradas en la pantalla</string>
<string name="category_host_settings">Configuración de servidor</string>
<string name="title_checkbox_enable_sops">Optimizar configuración del juego</string>
<string name="summary_checkbox_enable_sops">Permitir que GFE modifique la configuración del juego para una transmisión óptima</string>
<string name="title_checkbox_host_audio">Reproducir audio en PC</string>
<string name="summary_checkbox_host_audio">Reproducir audio en el ordenador y en este dispositivo</string>
<string name="category_advanced_settings">Configuración avanzada</string>
<string name="title_video_format">Cambiar configuración HEVC</string>
<string name="summary_video_format">HEVC reduce el ancho de banda de vídeo, pero requiere un dispositivo bastante actual.</string>
</resources>
<!-- Array strings -->
<string name="videoformat_hevcauto">Usar HEVC solo si es estable</string>
<string name="videoformat_hevcalways">Siempre usar HEVC (puede fallar)</string>
<string name="videoformat_hevcnever">Nunca usar HEVC</string>
<string name="nettest_title_done">Prueba de Red Completada</string>
<string name="scut_not_paired">PC no emparejado</string>
<string name="scut_invalid_uuid">PC proporcionado no es válido</string>
<string name="scut_invalid_app_id">App proporcionada no es válida</string>
<string name="help_loading_title">Visor de Ayuda</string>
<string name="pcview_menu_header_online">En Línea</string>
<string name="pcview_menu_header_unknown">Actualizando</string>
<string name="pcview_menu_test_network">Probar Conexión de Red</string>
<string name="pcview_menu_details">Ver Detalles</string>
<string name="nettest_title_waiting">Probando Conexión de Red</string>
<string name="nettest_text_waiting">Moonlight esta probando tu conexión de red para determinar si NVIDIA GameStream esta bloqueado.
\n
\nEsto puede tomar algunos segundos …</string>
<string name="nettest_text_inconclusive">La prueba de red no pudo ejecutarse debido a que no se pudo alcanzar ningún servidor de prueba de conexión de Moonlight. Revisa tu conexión a internet o prueba nuevamente mas tarde.</string>
<string name="nettest_text_failure">La actual conexión de red de tu dispositivo parece estar bloqueando Moonlight. La Transmisión mediante Internet puede no funcionar mientras estes conectado a esta red.
\n
\nSe han bloqueado los siguientes puertos de red:
\n</string>
<string name="title_decoding_error">Falló el Decodificador de Video</string>
<string name="scut_deleted_pc">PC eliminado</string>
<string name="scut_pc_not_found">PC no encontrado</string>
<string name="help_loading_msg">Cargando página de ayuda …</string>
<string name="pcview_menu_header_offline">Fuera de línea</string>
<string name="nettest_text_success">Tu red parece no estar bloqueando Moonlight. Si aun tienes problemas de conexión, comprueba la configuración del firewall de tu PC.
\n
\nSi estas intentado transmitir mediante Internet, instala en tu pc la Moonlight Internet Hosting Tool y ejecuta el Internet Streaming Tester incluido para comprobar la conexión de tu PC a internet.</string>
<string name="nettest_text_blocked">La conexión de red actual de tu dispositivo esta bloqueando Moonlight. La Transmisión mediante Internet puede no funcionar mientras estés conectado a esta red.</string>
<string name="pair_already_in_progress">Emparejamiento ya en progreso</string>
</resources>
-24
View File
@@ -1,24 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="fps_names">
<item>30 IPS</item>
<item>60 IPS</item>
<item>90 IPS</item>
<item>120 IPS</item>
</string-array>
<string-array name="audio_config_names">
<item>Stéréo</item>
<item>Son surround 5.1</item>
<item>Son surround 7.1</item>
</string-array>
<string-array name="decoder_names">
<item>Sélection automatique du décodeur</item>
<item>Contraindre le décodage logiciel</item>
<item>Contraindre le décodage matériel</item>
</string-array>
<string-array name="video_format_names">
<item>Utiliser HEVC uniquement s\'il est stable</item>
<item>Utilisez toujours HEVC (mais il peut planter)</item>
<item>N\'utilisez jamais HEVC</item>
</string-array>
</resources>
+25
View File
@@ -217,4 +217,29 @@
\n
\nSi le problème persiste, essayez de réinstaller les pilotes de votre GPU ainsi que GeForce Experience.</string>
<string name="no_frame_received_error">Votre connexion ne fonctionne pas bien. Baissez votre paramètres de débit ou utilisez une connexion plus rapide.</string>
<string name="resolution_prefix_native_fullscreen">Plein-écran natif</string>
<string name="perf_overlay_netlatency">Latence réseau moyenne : %1$d ms (variance : %2$d ms)</string>
<string name="perf_overlay_streamdetails">Stream vidéo : %1$s %2$.2f FPS</string>
<!-- Array strings -->
<string name="fps_30">30 IPS</string>
<string name="fps_60">60 IPS</string>
<string name="fps_90">90 IPS</string>
<string name="fps_120">120 IPS</string>
<string name="audioconf_stereo">Stéréo</string>
<string name="audioconf_51surround">Son surround 5.1</string>
<string name="audioconf_71surround">Son surround 7.1</string>
<string name="videoformat_hevcauto">Utiliser HEVC uniquement s\'il est stable</string>
<string name="videoformat_hevcalways">Utilisez toujours HEVC (mais il peut planter)</string>
<string name="videoformat_hevcnever">N\'utilisez jamais HEVC</string>
<string name="title_frame_pacing">Frame-pacing vidéo</string>
<string name="summary_frame_pacing">Spécifiez comment équilibrer latence et fluidité de la vidéo</string>
<string name="pacing_latency">Préférer une latence plus faible</string>
<string name="pacing_balanced">Équilibré</string>
<string name="resolution_720p">720p</string>
<string name="pacing_smoothness">Préférer la qualité vidéo (risque d\'augmenter la latence)</string>
<string name="resolution_360p">360p</string>
<string name="resolution_480p">480p</string>
<string name="resolution_1440p">1440p</string>
<string name="resolution_1080p">1080p</string>
<string name="resolution_4k">4K</string>
</resources>
+210
View File
@@ -0,0 +1,210 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="summary_enable_post_stream_toast">Késleltetési információs üzenet megjelenítése az adatfolyam vége után</string>
<string name="title_enable_post_stream_toast">A késleltetési üzenet megjelenítése streaming után</string>
<string name="summary_enable_perf_overlay">Valós idejű adatfolyam-adat megjelenítése streaming közben</string>
<string name="title_enable_perf_overlay">Teljesítmény statisztikák megjelenítése közvetítés közben</string>
<string name="summary_enable_hdr">Streaming HDR, amikor a játék és a PC GPU támogatja. A HDR-hez GTX 1000 sorozatú vagy újabb verzió szükséges.</string>
<string name="title_enable_hdr">HDR engedélyezése (kísérleti)</string>
<string name="summary_video_format">A HEVC csökkenti a video sávszélesség követelményeit, de újabb eszközt igényel</string>
<string name="title_video_format">Módosítsa a HEVC beállításait</string>
<string name="summary_disable_frame_drop">Csökkentheti a mikrodadogást egyes eszközökön, de növelheti a késést</string>
<string name="title_disable_frame_drop">Soha ne ejtse le a kereteket</string>
<string name="summary_checkbox_disable_warnings">Streaming közben tiltsa le a képernyőn megjelenő csatlakozási figyelmeztető üzeneteket</string>
<string name="title_checkbox_disable_warnings">Tiltsa le a figyelmeztető üzeneteket</string>
<string name="summary_unlock_fps">A 90 vagy 120 FPS sebességgel történő streaming csökkentheti a csúcskategóriás eszközök késését, de késést vagy instabilitást okozhat azokon az eszközökön, amelyek ezt nem támogatják</string>
<string name="title_unlock_fps">Oldja fel az összes lehetséges képsebességet</string>
<string name="category_advanced_settings">További beállítások</string>
<string name="summary_checkbox_host_audio">Hang lejátszása a számítógépről és az eszközről</string>
<string name="title_checkbox_host_audio">Hang lejátszása PC-n</string>
<string name="summary_checkbox_enable_sops">Engedje meg, hogy a GFE módosítsa a játék beállításait az optimális streaming érdekében</string>
<string name="title_checkbox_enable_sops">Optimalizálja a játék beállításait</string>
<string name="category_host_settings">Gazdabeállítások</string>
<string name="summary_checkbox_small_icon_mode">Az alkalmazásrács kisebbik rajza lehetővé teszi, hogy több alkalmazás is látható legyen a képernyőn</string>
<string name="title_checkbox_small_icon_mode">Használjon kis dobozos rajzokat</string>
<string name="summary_language_list">A Moonlight-hoz használt nyelv</string>
<string name="title_language_list">Nyelv</string>
<string name="summary_checkbox_enable_pip">Lehetővé teszi az adatfolyam megtekintését (de nem vezérlését) multitasking közben</string>
<string name="title_checkbox_enable_pip">Engedélyezze a Kép a képben megfigyelő módot</string>
<string name="category_ui_settings">Felhasználói felület beállításai</string>
<string name="suffix_osc_opacity">%</string>
<string name="dialog_title_osc_opacity">Opacitás módosítása</string>
<string name="summary_osc_opacity">Tegye többé-kevésbé átláthatóvá a képernyőn megjelenő vezérlőket</string>
<string name="title_osc_opacity">A képernyőn megjelenő vezérlők átlátszatlanságának módosítása</string>
<string name="toast_reset_osc_success">A képernyőn megjelenő vezérlők visszaállnak az alapértelmezettre</string>
<string name="dialog_text_reset_osc">Biztosan törli a képernyőn tárolt vezérlők mentett elrendezését\?</string>
<string name="dialog_title_reset_osc">Reset Layout</string>
<string name="summary_reset_osc">Visszaállítja az összes képernyőn megjelenő vezérlőt az alapértelmezett méretre és helyzetre</string>
<string name="title_reset_osc">A képernyőn lévő mentett vezérlők elrendezésének törlése</string>
<string name="summary_only_l3r3">Az összes virtuális gombot elrejti az L3 és R3 kivételével</string>
<string name="title_only_l3r3">Csak az L3-at és az R3-at mutatják</string>
<string name="summary_checkbox_vibrate_osc">Rezeg a készülék, hogy utánozza a képernyőn megjelenő vezérlők zúgását</string>
<string name="title_checkbox_vibrate_osc">Rezgés engedélyezése</string>
<string name="summary_checkbox_show_onscreen_controls">A virtuális vezérlő fedvényének megjelenítése az érintőképernyőn</string>
<string name="title_checkbox_show_onscreen_controls">A képernyőn megjelenő vezérlők megjelenítése</string>
<string name="category_on_screen_controls_settings">A képernyőn megjelenő vezérlők beállításai</string>
<string name="summary_checkbox_flip_face_buttons">Átkapcsolja az A / B és X / Y arcgombokat a játékvezérlőkhöz és a képernyőn megjelenő vezérlőkhöz</string>
<string name="title_checkbox_flip_face_buttons">Flip face gombok</string>
<string name="summary_checkbox_mouse_nav_buttons">Ennek az opciónak az engedélyezése megszakíthatja a jobb egérgombbal való kattintást néhány hibás eszközön</string>
<string name="title_checkbox_mouse_nav_buttons">Engedélyezze az előre és hátra gombokat</string>
<string name="summary_checkbox_mouse_emulation">A Start gomb hosszan tartó megnyomásával egér üzemmódba kapcsol a játéktábla</string>
<string name="title_checkbox_mouse_emulation">Egér emuláció a játékvezérlőn keresztül</string>
<string name="summary_checkbox_usb_bind_all">Használja a Moonlight USB-illesztőprogramját az összes támogatott játékvezérlőhöz, még akkor is, ha natív Xbox vezérlő támogatás van jelen</string>
<string name="title_checkbox_usb_bind_all">Az natív Xbox játéktámogatás felülbírálása</string>
<string name="summary_checkbox_xb1_driver">Beépített USB-illesztőprogramot engedélyez natív Xbox vezérlő támogatás nélküli eszközökhöz</string>
<string name="title_checkbox_xb1_driver">Xbox 360 / One USB játékvezérlő</string>
<string name="suffix_seekbar_deadzone">%</string>
<string name="title_seekbar_deadzone">Állítsa be az analóg bot holtzónáját</string>
<string name="summary_checkbox_vibrate_fallback">Rezeg a készülék, hogy utánozza a dübörgést, ha a gamepad nem támogatja</string>
<string name="title_checkbox_vibrate_fallback">A dübörgés támogatását rezgéssel utánozzuk</string>
<string name="summary_checkbox_multi_controller">Ennek az opciónak a bejelölése arra kényszeríti a játéktáblát, hogy mindig jelen legyen</string>
<string name="title_checkbox_multi_controller">Automatikus gamepad jelenlét-észlelés</string>
<string name="summary_checkbox_touchscreen_trackpad">Ha engedélyezve van, az érintőképernyő úgy működik, mint egy trackpad. Ha le van tiltva, az érintőképernyő közvetlenül vezérli az egér kurzort.</string>
<string name="title_checkbox_touchscreen_trackpad">Használja az érintőképernyőt trackpadként</string>
<string name="category_input_settings">Bemeneti beállítások</string>
<string name="summary_audio_config_list">Engedélyezze az 5.1 vagy 7.1 térhatású hangot házimozi rendszerekhez</string>
<string name="title_audio_config_list">Térhatású hang konfigurációja</string>
<string name="resolution_prefix_native">Natív</string>
<string name="category_audio_settings">Hangbeállítások</string>
<string name="title_checkbox_stretch_video">Nyújtsa a videót teljes képernyősre</string>
<string name="suffix_seekbar_bitrate_mbps">Mbps</string>
<string name="summary_seekbar_bitrate">Növelje a jobb képminőség érdekében. Csökkenjen a lassabb kapcsolatok teljesítményének javítása érdekében.</string>
<string name="title_seekbar_bitrate">Videó bitráta</string>
<string name="summary_fps_list">Növelje a gördülékenyebb videofolyamot. Csökkenjen a jobb teljesítmény érdekében az alsó kategóriás eszközökön.</string>
<string name="title_fps_list">Videó képkockasebessége</string>
<string name="text_native_res_dialog">A natív felbontási módokat a GeForce Experience hivatalosan nem támogatja, így maga nem állítja be a gazdagép kijelzőjének felbontását. A játék során manuálisan kell beállítania.
\n
\nHa úgy dönt, hogy az NVIDIA vezérlőpultján egyedi felbontást hoz létre, hogy megfeleljen az eszköz felbontásának, kérjük, olvassa el és értette az NVIDIA figyelmeztetéseit a monitor esetleges károsodásával, a számítógép instabilitásával és más lehetséges problémákkal kapcsolatban.
\n
\nNem vagyunk felelősek a PC-n egyedi felbontás létrehozásából eredő problémákért.
\n
\nVégül előfordulhat, hogy az eszköz vagy a fogadó PC nem támogatja a natív felbontású adatfolyamot. Ha a készülékén nem működik, sajnos csak nincs szerencséje.</string>
<string name="title_native_res_dialog">Natív felbontás figyelmeztetés</string>
<string name="summary_resolution_list">Növelje a kép tisztaságának növelése érdekében. Csökkenjen a jobb teljesítmény érdekében az alsó kategóriás eszközökön és a lassabb hálózatokon.</string>
<string name="title_resolution_list">Videó felbontás</string>
<string name="category_basic_settings">Alapbeállítások</string>
<string name="addpc_wrong_sitelocal">Ez a cím nem tűnik megfelelőnek. Az interneten történő streaminghez az PCnyilvános IP-címét kell használnia.</string>
<string name="addpc_enter_ip">Meg kell adnia egy IP-címet</string>
<string name="addpc_unknown_host">Nem sikerült feloldani a PC-címet. Győződjön meg arról, hogy nem hibázott a címben.</string>
<string name="addpc_success">A számítógép sikeresen hozzáadva</string>
<string name="addpc_fail">Nem sikerült csatlakozni a megadott számítógéphez. Győződjön meg arról, hogy a szükséges portok engedélyezve vannak a tűzfalon keresztül.</string>
<string name="msg_add_pc">Csatlakozás a számítógéphez…</string>
<string name="title_add_pc">Számítógép hozzáadása manuálisan</string>
<string name="applist_details_id">Alkalmazásazonosító:</string>
<string name="applist_quit_confirmation">Biztosan kilép a futó alkalmazásból\? Minden nem mentett adat elvész.</string>
<string name="applist_quit_fail">Nem sikerült kilépni</string>
<string name="applist_quit_success">Sikeresen kiléptél</string>
<string name="applist_quit_app">Kilépés</string>
<string name="applist_refresh_error_msg">Nem sikerült betölteni az alkalmazások listáját</string>
<string name="applist_refresh_error_title">Hiba</string>
<string name="applist_refresh_msg">Alkalmazás lista frissítése…</string>
<string name="applist_refresh_title">Alkalmazás lista</string>
<string name="applist_menu_quit">Kilépés a játékból</string>
<string name="applist_menu_resume">Visszalépés a játékba</string>
<string name="applist_menu_hide_app">Alkalmazás elrejtése</string>
<string name="applist_menu_tv_channel">Hozzáadás a csatornához</string>
<string name="applist_menu_scut">Parancsikon létrehozása</string>
<string name="applist_menu_details">Részletek megtekintése</string>
<string name="applist_menu_cancel">Mégse</string>
<string name="applist_menu_quit_and_start">Lépjen ki az aktuális játékból és indítsa el</string>
<string name="applist_connect_msg">Csatlakozás a számítógéphez…</string>
<string name="perf_overlay_dectime">Átlagos dekódolási idő:%1$.2f ms</string>
<string name="perf_overlay_netlatency">Átlagos hálózati késés:%1$d ms (szórás:%2$d ms)</string>
<string name="perf_overlay_netdrops">A hálózati kapcsolat miatt elesett keretek:%1$.2f%%</string>
<string name="perf_overlay_renderingfps">Képkockasebesség megjelenítése:%1$.2f FPS</string>
<string name="perf_overlay_incomingfps">Bejövő képkockasebesség a hálózatról:%1$.2f FPS</string>
<string name="perf_overlay_decoder">Dekóder:%1$s</string>
<string name="perf_overlay_streamdetails">Videófolyam:%1$s %2$.2f FPS</string>
<string name="poor_connection_msg">Gyenge kapcsolat a PC-vel</string>
<string name="slow_connection_msg">Lassú kapcsolat a PC-vel
\nCsökkentse a bitrátát</string>
<string name="delete_pc_msg">Biztosan törli ezt a számítógépet\?</string>
<string name="help">Segítség</string>
<string name="title_details">Részletek</string>
<string name="lost_connection">Megszakadt a kapcsolat a PC-vel</string>
<string name="no">Nem</string>
<string name="yes">Igen</string>
<string name="searching_pc">PC-k keresése futó GameStream segítségével ...
\n
\n Győződjön meg arról, hogy a GameStream engedélyezve van a GeForce Experience SHIELD beállításaiban.</string>
<string name="ip_hint">A GeForce PC IP-címe</string>
<string name="conn_terminated_msg">A kapcsolat megszakadt</string>
<string name="conn_terminated_title">A kapcsolat megszűnt</string>
<string name="conn_error_msg">Nem sikerült elindítani</string>
<string name="conn_client_latency_hw">hardveres dekóder késleltetése:</string>
<string name="conn_client_latency">Átlagos keret dekódolási késés:</string>
<string name="conn_metered">Figyelem: Az aktív hálózati kapcsolatod mérésre került!</string>
<string name="conn_establishing_msg">Kapcsolódás</string>
<string name="conn_establishing_title">Kapcsolat létesítése</string>
<string name="check_ports_msg">Ellenőrizze a tűzfal és a port-továbbítási szabályokat a port(ok)ra vonatkozóan:</string>
<string name="early_termination_error">Valami nem sikerült a fogadó PC-n az adatfolyam indításakor.
\n
\nGyőződjön meg arról, hogy a fogadó PC-n nincs megnyitva DRM-védett tartalom. Megpróbálhatja újraindítani a gazdagépet is.
\n
\nHa a probléma továbbra is fennáll, próbálja meg újratelepíteni a GPU illesztőprogramokat és a GeForce Experience szoftvert.</string>
<string name="no_frame_received_error">A hálózati kapcsolat nem működik megfelelően. Csökkentse a videó bitráta beállítását, vagy próbálkozzon gyorsabb kapcsolattal.</string>
<string name="no_video_received_error">Nem kapott videót a gazdagéptől.</string>
<string name="video_decoder_init_failed">A videó dekóder inicializálása nem sikerült. Előfordulhat, hogy készüléke nem támogatja a kiválasztott felbontást vagy képkockasebességet.</string>
<string name="unable_to_pin_shortcut">A jelenlegi program nem teszi lehetővé rögzített parancsikonok létrehozását.</string>
<string name="error_usb_prohibited">Az USB-hozzáférést az eszköz rendszergazdája tiltja. Ellenőrizze a Knox vagy az MDM beállításait.</string>
<string name="message_decoding_reset">Az eszköz videodekóderje továbbra is összeomlik a kiválasztott adatfolyam-beállításoknál. A streaming beállításait visszaállította az alapértelmezettre.</string>
<string name="title_decoding_reset">Videó Beállítások Alapra</string>
<string name="message_decoding_error">A Moonlight összeomlott, mert inkompatibilis volt az eszköz videó dekóderével. Győződjön meg arról, hogy a GeForce Experience frissítve van a számítógép legújabb verziójára. Próbálja meg módosítani a streaming beállításokat, ha az összeomlások továbbra is fennállnak.</string>
<string name="title_decoding_error">A videó dekóder összeomlott</string>
<string name="error_404">A GFE HTTP 404 hibát adott vissza. Győződjön meg arról, hogy a számítógépen támogatott GPU fut. A távoli asztali szoftver használata szintén ezt a hibát okozhatja. Próbálja újraindítani a gépet, vagy telepítse újra a GFE-t.</string>
<string name="conn_error_title">Csatlakozási hiba</string>
<string name="conn_starting">Indítás</string>
<string name="conn_hardware_latency">Átlagos hardver dekódolási késés:</string>
<string name="error_unknown_host">Nem sikerült feloldani a gazdagépet</string>
<string name="error_manager_not_running">A ComputerManager szolgáltatás nem fut. Várjon néhány másodpercet, vagy indítsa újra az alkalmazást.</string>
<string name="error_pc_offline">A számítógép nem elérhető</string>
<string name="unpair_error">Az eszköz nincs párosítva</string>
<string name="unpair_fail">A párosítás megszüntetése nem sikerült</string>
<string name="unpair_success">Párosítás megszüntetve</string>
<string name="unpairing">Párosítás megszüntetése…</string>
<string name="wol_fail">Nem sikerült elküldeni a Wake-On-LAN csomagokat</string>
<string name="wol_waking_msg">Néhány másodpercbe telhet, mire a számítógép felébred. Ha nem, ellenőrizze, hogy megfelelően van-e konfigurálva a Wake-On-LAN számára.</string>
<string name="wol_waking_pc">PC elindítása…</string>
<string name="wol_no_mac">Nem lehet elindítani a PC-t, mert a GFE nem küldött MAC-címet</string>
<string name="wol_pc_online">A számítógép elérhető</string>
<string name="pair_already_in_progress">A párosítás már folyamatban van</string>
<string name="pairing">Párosítás…</string>
<string name="pair_pairing_title">Párosítás</string>
<string name="pair_fail">Párosítás nem sikerült</string>
<string name="pair_incorrect_pin">Hibás PIN</string>
<string name="pair_pairing_msg">Kérjük, adja meg a következő PIN-kódot a cél PC-n:</string>
<string name="pair_pc_ingame">A számítógép jelenleg játékban van. A párosítás előtt be kell zárni a játékot.</string>
<string name="pair_pc_offline">A számítógép nem elérhető</string>
<string name="nettest_text_blocked">Az eszköz jelenlegi hálózati kapcsolata blokkolja a Moonlight-ot. Előfordulhat, hogy az interneten keresztüli streaming nem működik, ha csatlakozik ehhez a hálózathoz.</string>
<string name="nettest_text_failure">Úgy tűnik, hogy eszközének jelenlegi hálózati kapcsolata blokkolja a Moonlight-ot. Előfordulhat, hogy az interneten keresztüli streaming nem működik, ha csatlakozik ehhez a hálózathoz.
\n
\nA következő hálózati portokat blokkolták:
\n</string>
<string name="nettest_text_inconclusive">A hálózati tesztet nem sikerült elvégezni, mert a Moonlight egyik kapcsolat tesztelő szervere sem volt elérhető. Ellenőrizze az internetkapcsolatot, vagy próbálkozzon újra később.</string>
<string name="nettest_text_success">Úgy tűnik, hogy a hálózata nem blokkolja a Moonlight-ot. Ha továbbra is problémái vannak a csatlakozással, ellenőrizze a számítógép tűzfalának beállításait.
\n
\nHa az interneten keresztül kíván közvetíteni, telepítse a Moonlight Internet Hosting Tool alkalmazást a számítógépére, és futtassa a mellékelt Internet Streaming Tester szoftvert a számítógép internetkapcsolatának ellenőrzéséhez.</string>
<string name="nettest_title_done">Hálózati kapcsolat teszt kész</string>
<string name="nettest_text_waiting">A Moonlight a hálózati kapcsolatot teszteli annak megállapítására, hogy az NVIDIA GameStream blokkolva van-e.
\n
\nEz eltarthat néhány másodpercig …</string>
<string name="pcview_menu_test_network">Hálózati kapcsolat teszt</string>
<string name="nettest_title_waiting">Hálózati kapcsolat ellenőrzése</string>
<string name="pcview_menu_details">Részletek megtekintése</string>
<string name="pcview_menu_delete_pc">PC törlése</string>
<string name="pcview_menu_send_wol">Wake-On-LAN kérés küldése</string>
<string name="pcview_menu_unpair_pc">Lecsatlakoztat</string>
<string name="pcview_menu_pair_pc">PC csatlakoztatása</string>
<string name="pcview_menu_app_list">Összes alkalmazás megtekintése</string>
<string name="pcview_menu_header_unknown">Újratöltés</string>
<string name="pcview_menu_header_offline">Nem elérhető</string>
<string name="pcview_menu_header_online">Elérhető</string>
<string name="help_loading_msg">Segítségek betöltés alatt…</string>
<string name="help_loading_title">Segítség megtekintő</string>
<string name="scut_invalid_app_id">A kiválasztott App nem érvényes</string>
<string name="scut_invalid_uuid">A kiválasztott PC nem érvényes</string>
<string name="scut_pc_not_found">Pc nem található</string>
<string name="scut_not_paired">PC nincs csatlakoztatva</string>
<string name="scut_deleted_pc">PC eltávolítva</string>
<string name="resolution_prefix_native_fullscreen">Natív teljes képernyős</string>
</resources>
-8
View File
@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="decoder_names">
<item>Scegli decoder automaticamente</item>
<item>Forza decoder software</item>
<item>Forza decoder hardware</item>
</string-array>
</resources>
+111 -24
View File
@@ -3,18 +3,15 @@
<!-- Shortcut strings -->
<string name="scut_deleted_pc">PC eliminato</string>
<string name="scut_not_paired">PC non accoppiato</string>
<!-- Help strings -->
<string name="help_loading_title">Visualizza assistenza</string>
<string name="help_loading_msg">Caricamento pagina di assistenza…</string>
<!-- PC view menu entries -->
<string name="pcview_menu_app_list">Lista applicazioni</string>
<string name="pcview_menu_app_list">Vedi Tutte le Applicazioni</string>
<string name="pcview_menu_pair_pc">Accoppia PC</string>
<string name="pcview_menu_unpair_pc">Disaccoppia PC</string>
<string name="pcview_menu_send_wol">Invia richiesta Wake-On-LAN</string>
<string name="pcview_menu_delete_pc">Rimuovi PC</string>
<!-- Pair messages -->
<string name="pairing">Accoppiamento…</string>
<string name="pair_pc_offline">Il PC è offline</string>
@@ -24,7 +21,6 @@
<string name="pair_incorrect_pin">PIN non corretto</string>
<string name="pair_fail">Accoppiamento fallito</string>
<string name="pair_already_in_progress">Accoppiamento già in corso</string>
<!-- WOL messages -->
<string name="wol_pc_online">PC già avviato</string>
<string name="wol_no_mac">Impossibile risvegliare il PC perché GFE non ha inviato nessun indirizzo MAC</string>
@@ -33,13 +29,11 @@
Se non succede niente, assicurati che l\'opzione Wake-On-LAN sia configurata correttamente.
</string>
<string name="wol_fail">Invio pacchetti Wake-On-LAN fallito</string>
<!-- Unpair messages -->
<string name="unpairing">Disaccoppiamento…</string>
<string name="unpair_success">Disaccoppiato con successo</string>
<string name="unpair_fail">Disaccoppiamento fallito</string>
<string name="unpair_error">PC non accoppiato</string>
<!-- Errors -->
<string name="error_pc_offline">PC offline</string>
<string name="error_manager_not_running">Il servizio ComputerManager non è avviato. Attendi qualche secondo o riavvia l\'applicazione.</string>
@@ -52,7 +46,6 @@
<string name="title_decoding_reset">Ripristino impostazioni video</string>
<string name="message_decoding_reset">Il decodificatore video del dispositivo continua a funzionare in modo anomalo con le impostazioni di streaming selezionate. Le impostazioni di streaming sono state ripristinate ai valori predefiniti.</string>
<string name="error_usb_prohibited">L\'accesso USB è vietato dall\'amministratore del dispositivo. Verifica le impostazioni Knox o MDM.</string>
<!-- Start application messages -->
<string name="conn_establishing_title">Connessione in corso</string>
<string name="conn_establishing_msg">Avvio connessione</string>
@@ -60,12 +53,11 @@
<string name="conn_client_latency">Latenza decodifica fotogrammi media:</string>
<string name="conn_client_latency_hw">latenza decodificatore hardware:</string>
<string name="conn_hardware_latency">Latenza decodificatore hardware media:</string>
<string name="conn_starting">Avvio in corso</string>
<string name="conn_starting">Avvio in corso</string>
<string name="conn_error_title">Errore connessione</string>
<string name="conn_error_msg">Avvio fallito</string>
<string name="conn_terminated_title">Connessione interrotta</string>
<string name="conn_terminated_msg">La connessione è stata interrotta</string>
<!-- General strings -->
<string name="ip_hint">Indirizzo IP del PC</string>
<string name="searching_pc">Ricerca di PC con GameStream avviato…\n\n
@@ -74,7 +66,6 @@
<string name="no">No</string>
<string name="lost_connection">Connessione con il PC persa</string>
<string name="help">Assistenza</string>
<!-- AppList activity -->
<string name="applist_connect_msg">Connessione al PC in corso…</string>
<string name="applist_menu_resume">Riprendi sessione</string>
@@ -85,11 +76,10 @@
<string name="applist_refresh_msg">Aggiornamento lista in corso…</string>
<string name="applist_refresh_error_title">Errore</string>
<string name="applist_refresh_error_msg">Ricezione lista applicazioni fallita</string>
<string name="applist_quit_app">Chiusura in corso</string>
<string name="applist_quit_app">Chiusura in corso</string>
<string name="applist_quit_success">Sessione chiusa con successo</string>
<string name="applist_quit_fail">Chiusura sessione fallita</string>
<string name="applist_quit_confirmation">Sei sicuro di voler chiudere l\'applicazione avviata? Tutti i dati non salvati saranno persi.</string>
<!-- Add computer manually activity -->
<string name="title_add_pc">Aggiungi PC manualmente</string>
<string name="msg_add_pc">Connessione al PC in corso…</string>
@@ -98,21 +88,18 @@
<string name="addpc_unknown_host">Impossibile risovere l\'indirizzo del PC. Assicurati di aver scritto correttamente l\'indirizzo.</string>
<string name="addpc_enter_ip">Devi inserire un indirizzo IP</string>
<string name="addpc_wrong_sitelocal">Quell\'indirizzo non sembra corretto. È necessario utilizzare l\'indirizzo IP pubblico del router per lo streaming su Internet.</string>
<!-- Preferences -->
<string name="category_basic_settings">Impostazioni generali</string>
<string name="title_resolution_list">Risoluzione e FPS</string>
<string name="summary_resolution_list">Valori troppo elevati possono causare lag o crash</string>
<string name="summary_resolution_list">Aumentare per migliorare la nitidezza dell\'immagine. Diminuire per aumentare le prestazioni su dispositivi di fascia più bassa e reti più lente.</string>
<string name="title_seekbar_bitrate">Velocità di trasmissione video</string>
<string name="summary_seekbar_bitrate">Abbassa la velocità di trasmissione per ridurre lo stuttering; alzala per migliorare la qualità dell\'immagine</string>
<string name="summary_seekbar_bitrate">Aumentare per migliorare la qualità dell\'immagine. Diminuire per aumentare le prestazioni su reti più lente.</string>
<string name="title_checkbox_stretch_video">Forza video a schermo intero</string>
<string name="title_checkbox_disable_warnings">Disabilita messaggi di warning</string>
<string name="summary_checkbox_disable_warnings">Disabilita i messaggi di warning sullo schermo durante lo streaming</string>
<string name="title_checkbox_enable_pip">Abilita modalità spettatore Picture-in-Picture</string>
<string name="summary_checkbox_enable_pip">Permette di osservare (ma non di controllare) la stream in multitasking</string>
<string name="category_audio_settings">Impostazioni audio</string>
<string name="title_checkbox_multi_controller">Supporto a più controller</string>
<string name="summary_checkbox_multi_controller">Quando disabilitato, tutti i controller appaiono come uno solo</string>
<string name="title_seekbar_deadzone">Regola i punti morti degli stick analogici</string>
@@ -123,7 +110,6 @@
<string name="summary_checkbox_usb_bind_all">Forza i driver USB di Moonlight di assumere il controllo su tutti i controller Xbox supportati</string>
<string name="title_checkbox_mouse_emulation">Emulazione del mouse tramite controller</string>
<string name="summary_checkbox_mouse_emulation">Tenendo premuto il pulsante Start, il controller passerà alla modalità mouse</string>
<string name="category_on_screen_controls_settings">Impostazioni dei controlli a schermo</string>
<string name="title_checkbox_show_onscreen_controls">Mostra controlli a schermo</string>
<string name="summary_checkbox_show_onscreen_controls">Mostra l\'overlay virtuale del controller su schermo</string>
@@ -134,19 +120,16 @@
<string name="dialog_title_reset_osc">Ripristino del layout</string>
<string name="dialog_text_reset_osc">Sei sicuro di voler ripristinare ai valori predefiniti i layout dei controlli a schermo?</string>
<string name="toast_reset_osc_success">I controlli a schermo sono stati ripristinati</string>
<string name="category_ui_settings">Impostazioni dell\'interfaccia</string>
<string name="title_language_list">Lingua</string>
<string name="summary_language_list">Lingua da usare in Moonlight</string>
<string name="title_checkbox_small_icon_mode">Usa icone piccole</string>
<string name="summary_checkbox_small_icon_mode">Usa icone piccole nella griglia per avere più oggetti a schermo</string>
<string name="category_host_settings">Impostazioni del PC host</string>
<string name="title_checkbox_enable_sops">Ottimizza le impostazioni dei giochi</string>
<string name="summary_checkbox_enable_sops">Permetti a GFE di modificare le impostazioni dei giochi per uno streaming ottimale</string>
<string name="title_checkbox_host_audio">Riproduci audio sul PC</string>
<string name="summary_checkbox_host_audio">Riproduce l\'audio sul PC e su questo dispositivo</string>
<string name="category_advanced_settings">Impostazioni avanzate</string>
<string name="title_disable_frame_drop">Non saltare i fotogrammi</string>
<string name="summary_disable_frame_drop">Potrebbe ridurre il micro-stuttering su alcuni dispositivi, ma può aumentare la latenza</string>
@@ -155,5 +138,109 @@
<string name="title_enable_hdr">Abilita HDR (sperimentale)</string>
<string name="summary_enable_hdr">Utilizza l\'HDR quando il gioco e la scheda video del PC lo supportano. L\'HDR richiede una scheda video serie GTX 1000 o sucessive.</string>
<string name="suffix_osc_opacity">%</string>
</resources>
<string name="pcview_menu_header_online">Online</string>
<string name="scut_pc_not_found">PC non trovato</string>
<string name="scut_invalid_uuid">Il PC indicato non è valido</string>
<string name="scut_invalid_app_id">L\'App indicata non è valida</string>
<string name="pcview_menu_header_offline">Offline</string>
<string name="pcview_menu_header_unknown">Aggiornando</string>
<string name="pcview_menu_details">Mostra Dettagli</string>
<string name="pcview_menu_test_network">Controlla la Connessione di Rete</string>
<string name="title_details">Dettagli</string>
<string name="delete_pc_msg">Sei sicuro di voler rimuovere questo PC\?</string>
<string name="slow_connection_msg">Connessione lenta al PC
\nRidurre il bitrate</string>
<string name="poor_connection_msg">Connessione al PC di bassa qualità</string>
<string name="applist_menu_hide_app">Nascondi App</string>
<string name="applist_menu_scut">Crea Collegamento</string>
<string name="applist_menu_tv_channel">Aggiungi al Canale</string>
<string name="applist_menu_details">Mostra Dettagli</string>
<string name="summary_fps_list">Aumentare per uno streaming video più fluido. Diminuire per prestazioni migliori su dispositivi di fascia più bassa.</string>
<string name="applist_details_id">ID Applicazione:</string>
<string name="perf_overlay_decoder">Decoder: %1$s</string>
<string name="perf_overlay_dectime">Tempo medio di decodifica: %1$.2f ms</string>
<string name="perf_overlay_streamdetails">Flusso video: %1$s %2$.2f FPS</string>
<string name="nettest_title_waiting">Prova della Connessione di Rete</string>
<string name="nettest_text_waiting">Moonlight sta testando la tua connessione di rete per controllare se NVIDIA GameStream sia bloccato.
\n
\nPotrebbero volerci alcuni secondi…</string>
<string name="nettest_title_done">Test della Rete Completato</string>
<string name="nettest_text_inconclusive">Il test della rete non è stato effettuato perché nessuno dei server per il test della connessione di Moonlight era raggiungibile. Controlla la tua connessione ad Internet o riprova più tardi.</string>
<string name="nettest_text_success">La tua rete non sembra bloccare Moonlight. Se hai ancora problemi di connessione, controlla le impostazioni del firewall del PC.
\n
\nSe stai cercando di trasmettere via Internet, installa il Moonlight Internet Hosting Tool sul tuo PC ed avvia il Test per la trasmissione via Internet incluso per controllare la connessione ad Internet del tuo PC.</string>
<string name="title_checkbox_vibrate_osc">Abilita vibrazione</string>
<string name="title_audio_config_list">Configurazione suono surround</string>
<string name="title_checkbox_touchscreen_trackpad">Usa lo schermo touch come un trackpad</string>
<string name="summary_audio_config_list">Abilita il sourround 5.1 o 7.1 per sistemi home-theater</string>
<string name="title_fps_list">Frame rate video</string>
<string name="summary_checkbox_touchscreen_trackpad">Se abilitato, lo schermo touch si comporta come un trackpad. Se disabilitato, lo schermo touch controlla direttamente il cursore del mouse.</string>
<string name="title_checkbox_vibrate_fallback">Emula il supporto per la vibrazione</string>
<string name="title_checkbox_mouse_nav_buttons">Abilita i bottoni avanti e indietro del mouse</string>
<string name="title_osc_opacity">Cambia l\'opavità dei controlli a schermo</string>
<string name="title_unlock_fps">Sblocca tutti i frame rate possibili</string>
<string name="pacing_balanced">Bilanciato</string>
<string name="pacing_latency">Preferisci ritardi minori</string>
<string name="suffix_seekbar_bitrate_mbps">Mbps</string>
<string name="resolution_prefix_native">Nativo</string>
<string name="no_video_received_error">Nessun video ricevuto dal PC sorgente.</string>
<string name="resolution_prefix_native_fullscreen">Schermo intero nativo</string>
<string name="category_input_settings">Impostazioni di input</string>
<string name="title_native_res_dialog">Avviso Risoluzione Nativa</string>
<string name="dialog_title_osc_opacity">Cambia opacità</string>
<string name="pacing_smoothness">Preferisci video più fluido (potrebbe aumentare significativamente il ritardo)</string>
<string name="summary_osc_opacity">Rende i controlli a schermo più/meno trasparenti</string>
<string name="summary_checkbox_mouse_nav_buttons">Abilitare questa opzione può far smettere di funzionare il click destro su alcuni dispositivi</string>
<string name="title_checkbox_flip_face_buttons">Inverti i bottoni frontali</string>
<string name="summary_checkbox_flip_face_buttons">Inverte i bottoni A/B e X/Y sui controller e sui controlli a schermo</string>
<string name="summary_checkbox_vibrate_fallback">Fa vibrare il tuo dispositivo per emulare la vibrazione del controller se questo non la supporta</string>
<string name="summary_checkbox_vibrate_osc">Fa vibrare il tuo dispositivo per emulare la vibrazione con i controlli a schermo</string>
<string name="resolution_360p">360p</string>
<string name="resolution_480p">480p</string>
<string name="resolution_720p">720p</string>
<string name="resolution_1080p">1080p</string>
<string name="resolution_1440p">1440p</string>
<string name="resolution_4k">4K</string>
<string name="fps_30">30 FPS</string>
<string name="fps_60">60 FPS</string>
<string name="fps_90">90 FPS</string>
<string name="fps_120">120 FPS</string>
<string name="audioconf_stereo">Stereo</string>
<string name="audioconf_51surround">Surround 5.1</string>
<string name="audioconf_71surround">Surround 7.1</string>
<string name="videoformat_hevcauto">Usa HEVC solo se stabile</string>
<string name="videoformat_hevcalways">Usa sempre HEVC (potrebbe essere instabile)</string>
<string name="videoformat_hevcnever">Non usare mai HEVC</string>
<string name="title_frame_pacing">Bilanciamento frame video</string>
<string name="summary_frame_pacing">Specifica come bilanciare il ritardo video e la fluidità</string>
<string name="summary_enable_perf_overlay">Mostra informazioni real time sulla trasmissione</string>
<string name="nettest_text_failure">Sembra che l\'attuale connessione di rete del tuo dispositivo stia bloccando Moonlight. Trasmettere via Internet potrebbe non funzionare mentre sei connesso a questa rete.
\n
\nQueste porte di rete sono bloccate:
\n</string>
<string name="nettest_text_blocked">L\'attuale connessione di rete del tuo dispositivo sta bloccando Moonlight. Trasmettere via Internet potrebbe non funzionare mentre sei connesso a questa rete.</string>
<string name="unable_to_pin_shortcut">Il tuo launcher non permette la creazione di scorciatoie appuntate.</string>
<string name="video_decoder_init_failed">Il decoder video non è riuscito ad inizializzarsi. Il tuo dispositivo potrebbe non supportare la risoluzione o il frame rate selezionati.</string>
<string name="check_ports_msg">Controlla il tuo firewall e le regole di inoltro delle seguenti porte:</string>
<string name="title_enable_perf_overlay">Mostra le statistiche delle performance durante la trasmissione</string>
<string name="title_enable_post_stream_toast">Mostra un messaggio sulla latenza dopo la trasmissione</string>
<string name="no_frame_received_error">La tua connessione di rete non sta funzionando bene. Riduci il bitrate video o prova ad usare una connessione più veloce.</string>
<string name="early_termination_error">Qualcosa è andato storto sul PC sorgente mentre la trasmissione veniva avviata.
\n
\nAssicurati di non avere nessun contenuto protetto da DRM aperto sul PC sorgente. Puoi anche provare a spengere e riaccendere il PC sorgente.
\n
\nSe il problema persiste, prova a installare di nuovo i driver della scheda video e GeForce Experience.</string>
<string name="summary_unlock_fps">Trasmettere a 90 o 120 FPS potrebbe ridurre il ritardo su dispositivi di fascia alta, ma può provocare ritardi i instabilità sui dispositivi che non lo supportano</string>
<string name="summary_enable_post_stream_toast">Molstra un messaggio con informazioni sulla latenza dopo che la trasmissione è conclusa</string>
<string name="text_native_res_dialog">Le impostazioni di risoluzione nativa non sono ufficialmente supportate da GeForce Experience, quindi non cambierà automaticamente la risoluzione del monitor del computer sorgente. Dovrai cambiarla manualmente all\'interno del gioco.
\n
\nSe scegli di create una risoluzione personalizzata nel Pannello di Controllo NVIDIA per copiare la risoluzione del tuo dispositivo, assicurati di aver letto e capito il messaggio di attenzione di NVIDIA a proposito dei possibili danni al monitor, all\'instabilità del PC e altri potenziali problemi.
\n
\nNon saremo responsabili per qualsiasi problema risultante dalla creazione di una risoluzione personalizzata sul tuo PC.
\n
\nInfine, il tuo dispositivo o PC sorgente potrebbero non supportare la trasmissione alla risoluzione nativa. Se ciò non funzionasse sul tuo dispositivo, sfortunatamente non ci sono altre soluzioni.</string>
<string name="perf_overlay_incomingfps">Frame rate in ingresso dalla rete: %1$.2f FPS</string>
<string name="perf_overlay_renderingfps">Frame rate renderizzato: %1$.2f FPS</string>
<string name="perf_overlay_netdrops">Frame scartati dalla tua connessione di rete: %1$.2f%%</string>
<string name="perf_overlay_netlatency">Latenza media della rete: %1$d ms (varianza: %2$d ms)</string>
</resources>
-15
View File
@@ -1,15 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="decoder_names">
<item>デコーダを自動選択</item>
<item>ソフトウェアデコードを強制</item>
<item>ハードウェアデコードを強制</item>
</string-array>
<string-array name="video_format_names">
<item>安定している場合にHEVCを有効化</item>
<item>HEVCを強制的に有効化(クラッシュする可能性があります)</item>
<item>HEVCを無効化</item>
</string-array>
</resources>
+4
View File
@@ -130,4 +130,8 @@
<string name="title_checkbox_vibrate_osc">振動</string>
<string name="summary_checkbox_vibrate_osc">コントローラの振動を真似します</string>
<!-- Array strings -->
<string name="videoformat_hevcauto">安定している場合にHEVCを有効化</string>
<string name="videoformat_hevcalways">HEVCを強制的に有効化(クラッシュする可能性があります)</string>
<string name="videoformat_hevcnever">HEVCを無効化</string>
</resources>
-14
View File
@@ -1,14 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="decoder_names">
<item>자동으로 선택</item>
<item>강제 소프트웨어 디코딩</item>
<item>강제 하드웨어 디코딩</item>
</string-array>
<string-array name="video_format_names">
<item>안정적인 경우에 HEVC 사용</item>
<item>항상 HEVC 사용(깨질 가능성 있음)</item>
<item>HEVC 사용하지 않기</item>
</string-array>
</resources>
+6
View File
@@ -219,4 +219,10 @@
<string name="title_checkbox_mouse_emulation">게임패드를 마우스처럼 사용하기</string>
<string name="perf_overlay_streamdetails">비디오 스트림 : %1$s %2$.2f FPS</string>
<string name="unable_to_pin_shortcut">현재 런처에서는 바로가기 생성이 불가능합니다.</string>
<string name="resolution_prefix_native_fullscreen">네이티브 (전체화면)</string>
<!-- Array strings -->
<string name="videoformat_hevcauto">안정적인 경우에 HEVC 사용</string>
<string name="videoformat_hevcalways">항상 HEVC 사용(깨질 가능성 있음)</string>
<string name="videoformat_hevcnever">HEVC 사용하지 않기</string>
</resources>
+3 -2
View File
@@ -7,13 +7,11 @@
<string name="title_fps_list">Videobilderammetakt</string>
<string name="applist_quit_confirmation">Er du sikker på at du vil avslutte det kjørende programmet\? All ulagret data vil gå tapt.</string>
<string name="applist_refresh_msg">Gjenoppfrisker programmer …</string>
<string name="perf_overlay_decoder">Dekoder: %1$s</string>
<string name="perf_overlay_incomingfps">Innkommende bilderammetakt fra nettverket: %1$.2f BPS</string>
<string name="perf_overlay_renderingfps">Opptegningsbilderammetakt: %1$.2f BPS</string>
<string name="perf_overlay_netdrops">Bilderammer droppet av din nettverkstilknytning: %1$.2f%%</string>
<string name="perf_overlay_dectime">Gjennomsnittlig dekodingstid: %1$.2f ms</string>
<string name="lost_connection">Mistet tilknytning til PC</string>
<string name="searching_pc">Søker etter PC-er med GameStream kjørende …
\n
@@ -206,4 +204,7 @@
<string name="resolution_prefix_native">Innebygd</string>
<string name="title_native_res_dialog">Advarsel om innebygd oppløsning</string>
<string name="title_checkbox_flip_face_buttons">Veksle diamantknapper</string>
<string name="resolution_prefix_native_fullscreen">Systemspesifikk fullskjerm</string>
<string name="perf_overlay_netlatency">Gjennomsnittlig nettverksforsinkelse: %1$d ms (variasjon: %2$d ms)</string>
<string name="perf_overlay_streamdetails">Videostrøm: %1$s %2$.2f BPS</string>
</resources>
-14
View File
@@ -1,14 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="decoder_names">
<item>Selecteer Decoder Automatisch</item>
<item>Forceer Software Decoderen</item>
<item>Forceer Hardware Decoderen</item>
</string-array>
<string-array name="video_format_names">
<item>Gebruik HEVC alleen als het stabiel is.</item>
<item>Gebruik HEVC altijd (mogelijkheid tot crashes)</item>
<item>Gebruik HEVC nooit</item>
</string-array>
</resources>
+221 -117
View File
@@ -1,125 +1,229 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- PC view menu entries -->
<string name="pcview_menu_app_list">Toon Spel Lijst</string>
<string name="pcview_menu_pair_pc">Koppel met PC</string>
<string name="pcview_menu_unpair_pc">Ontkoppelen</string>
<string name="pcview_menu_send_wol">Stuur Wake-On-LAN aanvraag</string>
<string name="pcview_menu_delete_pc">Verwijder PC</string>
<!-- Pair messages -->
<string name="pairing">Koppelen…</string>
<string name="pair_pc_offline">Computer is onbereikbaar</string>
<string name="pair_pc_ingame">Computer is op dit moment in een spel. Sluit het spel voordat je koppelt.</string>
<string name="pair_pairing_title">Koppelen</string>
<string name="pair_pairing_msg">Voer de volgende PIN in op de doel PC:</string>
<string name="pair_incorrect_pin">Ongeldige PIN</string>
<string name="pair_fail">Koppelen mislukt</string>
<!-- WOL messages -->
<string name="wol_pc_online">Computer is online</string>
<string name="wol_no_mac">Het is niet mogelijk om de PC uit slaapstand te halen, omdat GFE geen MAC adres heeft verstuurd.</string>
<string name="wol_waking_pc">PC uit slaapstand halen…</string>
<string name="wol_waking_msg"> Het kan even duren voordat de PC reageert.
<!-- PC view menu entries -->
<string name="pcview_menu_app_list">Toon Spel Lijst</string>
<string name="pcview_menu_pair_pc">Koppel met PC</string>
<string name="pcview_menu_unpair_pc">Ontkoppelen</string>
<string name="pcview_menu_send_wol">Stuur Wake-On-LAN aanvraag</string>
<string name="pcview_menu_delete_pc">Verwijder PC</string>
<!-- Pair messages -->
<string name="pairing">Koppelen…</string>
<string name="pair_pc_offline">Computer is onbereikbaar</string>
<string name="pair_pc_ingame">Computer is op dit moment in een spel. Sluit het spel voordat je koppelt.</string>
<string name="pair_pairing_title">Koppelen</string>
<string name="pair_pairing_msg">Voer de volgende PIN in op de doel PC:</string>
<string name="pair_incorrect_pin">Ongeldige PIN</string>
<string name="pair_fail">Koppelen mislukt</string>
<!-- WOL messages -->
<string name="wol_pc_online">Computer is online</string>
<string name="wol_no_mac">Het is niet mogelijk om de PC uit slaapstand te halen, omdat GFE geen MAC adres heeft verstuurd</string>
<string name="wol_waking_pc">PC uit slaapstand halen…</string>
<string name="wol_waking_msg"> Het kan even duren voordat de PC reageert.
Als dit niet gebeurt controleer de Wake-On-LAN instellingen.
</string>
<string name="wol_fail">Wake-On-LAN packets versturen mislukt</string>
<!-- Unpair messages -->
<string name="unpairing">Ontkoppelen…</string>
<string name="unpair_success">Ontkoppeling succesvol</string>
<string name="unpair_fail">Ontkoppeling mislukt</string>
<string name="unpair_error">Apparaat niet gekoppeld</string>
<!-- Errors -->
<string name="error_pc_offline">Computer is offline</string>
<string name="error_manager_not_running">De ComputerManager service is niet gestart. Wacht een ogenblik of herstart de app.</string>
<string name="error_unknown_host">Host achterhalen mislukt.</string>
<string name="error_404">GFE geeft een HTTP 404 fout. Kijk na of de PC een ondersteunde GPU heeft.
<string name="wol_fail">Wake-On-LAN packets versturen mislukt</string>
<!-- Unpair messages -->
<string name="unpairing">Ontkoppelen…</string>
<string name="unpair_success">Ontkoppeling succesvol</string>
<string name="unpair_fail">Ontkoppeling mislukt</string>
<string name="unpair_error">Apparaat niet gekoppeld</string>
<!-- Errors -->
<string name="error_pc_offline">Computer is offline</string>
<string name="error_manager_not_running">De ComputerManager service is niet gestart. Wacht een ogenblik of herstart de app.</string>
<string name="error_unknown_host">Host achterhalen mislukt</string>
<string name="error_404">GFE geeft een HTTP 404 fout. Kijk na of de PC een ondersteunde GPU heeft.
Remote desktop software kan soms ook voor deze fout zorgen. Probeer de computer opnieuw op te starten of GFE te herinstalleren.
</string>
<!-- Start application messages -->
<string name="conn_establishing_title">Verbinding maken</string>
<string name="conn_establishing_msg">Verbinding starten</string>
<string name="conn_metered">Waarschuwing: Actieve internet verbinding bevat een datalimiet!</string>
<string name="conn_client_latency">Gemiddelde frame decoding reactietijd:</string>
<string name="conn_client_latency_hw">hardware decoder reactietijd:</string>
<string name="conn_hardware_latency">Gemiddelde hardware decoding reactietijd:</string>
<string name="conn_starting">Starten</string>
<string name="conn_error_title">Verbindingsprobleem</string>
<string name="conn_error_msg">Starten mislukt</string>
<string name="conn_terminated_title">Verbinding beëindigd</string>
<string name="conn_terminated_msg">De verbinding is beëindigd</string>
<!-- General strings -->
<string name="ip_hint">IP adres van GeForce PC</string>
<string name="searching_pc">Zoeken naar PCs met GeForce Experience actief…</string>
<string name="yes">Ja</string>
<string name="no">Nee</string>
<string name="lost_connection">Verbinding met PC verloren</string>
<!-- AppList activity -->
<string name="applist_menu_resume">Hervat Sessie</string>
<string name="applist_menu_quit">Stop Sessie</string>
<string name="applist_menu_quit_and_start">Stop Huidige Spel en Start</string>
<string name="applist_menu_cancel">Annuleer</string>
<string name="applist_refresh_title">App Lijst</string>
<string name="applist_refresh_msg">Apps Verversen…</string>
<string name="applist_refresh_error_title">Fout</string>
<string name="applist_refresh_error_msg">App lijst ophalen mislukt</string>
<string name="applist_quit_app">Stoppen</string>
<string name="applist_quit_success">Succesvol gestopt.</string>
<string name="applist_quit_fail">Stoppen mislukt</string>
<string name="applist_quit_confirmation">Weet je het zeker dat je de app wilt sluiten? Alle niet-opgeslagen gegevens gaan verloren.</string>
<!-- Add computer manually activity -->
<string name="title_add_pc">Voeg handmatig PC toe</string>
<string name="msg_add_pc">Verbinding maken met PC…</string>
<string name="addpc_fail">Verbinden mislukt. Controleer of de benodigde poorten openstaan in de firewall.</string>
<string name="addpc_success">Computer toevoegen succesvol</string>
<string name="addpc_unknown_host">Adres achterhalen is mislukt. Controleer het ingevoerde adres op typfouten.</string>
<string name="addpc_enter_ip">IP-adres invoeren is verplicht.</string>
<!-- Preferences -->
<string name="category_basic_settings">Algemene Instellingen</string>
<string name="title_resolution_list">Selecteer resolutie en FPS doel</string>
<string name="summary_resolution_list">Te hoge instellingen kunnen crashes en haperingen veroorzaken.</string>
<string name="title_seekbar_bitrate">Selecteer doel video bitsnelheid</string>
<string name="summary_seekbar_bitrate">Verlaag bitsnelheid om haperingen te verminderen. Verhoog de bitsnelheid voor een betere videokwaliteit.</string>
<string name="title_checkbox_stretch_video">Rek video uit tot volledig scherm</string>
<string name="title_checkbox_disable_warnings">Verberg waarschuwingsberichten</string>
<string name="summary_checkbox_disable_warnings">Verberg on-screen verbindingswaarschuwingen tijdens het streamen</string>
<string name="category_audio_settings">Geluidsinstellingen</string>
<string name="title_checkbox_multi_controller">Multi-gamepad support</string>
<string name="summary_checkbox_multi_controller">Wanneer uitgevinkt, alle controllers verschijnen als één.</string>
<string name="title_seekbar_deadzone">Pas analoge dodezone aan.</string>
<string name="suffix_seekbar_deadzone">%</string>
<string name="title_checkbox_xb1_driver">Xbox 360/One controller stuurprogramma</string>
<string name="summary_checkbox_xb1_driver">Gebruikt de ingebouwde USB stuurprogramma voor apparaten zonder Xbox controller ondersteuning.</string>
<string name="category_on_screen_controls_settings">On-screen Controller Instellingen</string>
<string name="title_checkbox_show_onscreen_controls">Laat on-screen controls zien</string>
<string name="summary_checkbox_show_onscreen_controls">Geeft een virtuele controller weer op het touchscreen.</string>
<string name="category_ui_settings">UI Installingen</string>
<string name="title_language_list">Taal</string>
<string name="summary_language_list">Taal te gebruiken in Moonlight</string>
<string name="title_checkbox_small_icon_mode">Gebruik kleine iconen</string>
<string name="summary_checkbox_small_icon_mode">Gebruik kleine iconen in kolom onderdelen zodat meer items tegelijk zichtbaar worden.</string>
<string name="category_host_settings">Host Instellingen</string>
<string name="title_checkbox_enable_sops">Optimaliseer spel instellingen</string>
<string name="summary_checkbox_enable_sops">Sta GFE toe om spel instellingen te veranderen voor een optimale stream</string>
<string name="title_checkbox_host_audio">Speel audio af op PC</string>
<string name="summary_checkbox_host_audio">Speel audio af op de computer en op dit apparaat</string>
<string name="category_advanced_settings">Geavanceerde Instellingen</string>
<string name="title_video_format">Verander HEVC instellingen</string>
<string name="summary_video_format">HEVC verlaagt video bandbreedte vereisten maar benodigdt een recent apparaat.</string>
<!-- Start application messages -->
<string name="conn_establishing_title">Verbinding maken</string>
<string name="conn_establishing_msg">Verbinding starten</string>
<string name="conn_metered">Waarschuwing: Actieve internet verbinding bevat een datalimiet!</string>
<string name="conn_client_latency">Gemiddelde frame decoding reactietijd:</string>
<string name="conn_client_latency_hw">hardware decoder reactietijd:</string>
<string name="conn_hardware_latency">Gemiddelde hardware decoding reactietijd:</string>
<string name="conn_starting">Starten</string>
<string name="conn_error_title">Verbindingsprobleem</string>
<string name="conn_error_msg">Starten mislukt</string>
<string name="conn_terminated_title">Verbinding beëindigd</string>
<string name="conn_terminated_msg">De verbinding is beëindigd</string>
<!-- General strings -->
<string name="ip_hint">IP adres van GeForce PC</string>
<string name="searching_pc">Zoeken naar PCs met GeForce Experience actief…
\n
\n Controleer dat GameStream is ingeschakeld in de GeForce Experience SHIELD instellingen.</string>
<string name="yes">Ja</string>
<string name="no">Nee</string>
<string name="lost_connection">Verbinding met PC verloren</string>
<!-- AppList activity -->
<string name="applist_menu_resume">Hervat Sessie</string>
<string name="applist_menu_quit">Stop Sessie</string>
<string name="applist_menu_quit_and_start">Stop Huidige Spel en Start</string>
<string name="applist_menu_cancel">Annuleer</string>
<string name="applist_refresh_title">App Lijst</string>
<string name="applist_refresh_msg">Apps Verversen…</string>
<string name="applist_refresh_error_title">Fout</string>
<string name="applist_refresh_error_msg">App lijst ophalen mislukt</string>
<string name="applist_quit_app">Stoppen</string>
<string name="applist_quit_success">Succesvol gestopt</string>
<string name="applist_quit_fail">Stoppen mislukt</string>
<string name="applist_quit_confirmation">Weet je het zeker dat je de app wilt sluiten? Alle niet-opgeslagen gegevens gaan verloren.</string>
<!-- Add computer manually activity -->
<string name="title_add_pc">Voeg handmatig PC toe</string>
<string name="msg_add_pc">Verbinding maken met PC…</string>
<string name="addpc_fail">Verbinden mislukt. Controleer of de benodigde poorten openstaan in de firewall.</string>
<string name="addpc_success">Computer toevoegen succesvol</string>
<string name="addpc_unknown_host">Adres achterhalen is mislukt. Controleer het ingevoerde adres op typfouten.</string>
<string name="addpc_enter_ip">IP-adres invoeren is verplicht</string>
<!-- Preferences -->
<string name="category_basic_settings">Algemene Instellingen</string>
<string name="title_resolution_list">Selecteer resolutie en FPS doel</string>
<string name="summary_resolution_list">Te hoge instellingen kunnen crashes en haperingen veroorzaken.</string>
<string name="title_seekbar_bitrate">Selecteer doel video bitsnelheid</string>
<string name="summary_seekbar_bitrate">Verlaag bitsnelheid om haperingen te verminderen. Verhoog de bitsnelheid voor een betere videokwaliteit.</string>
<string name="title_checkbox_stretch_video">Rek video uit tot volledig scherm</string>
<string name="title_checkbox_disable_warnings">Verberg waarschuwingsberichten</string>
<string name="summary_checkbox_disable_warnings">Verberg on-screen verbindingswaarschuwingen tijdens het streamen</string>
<string name="category_audio_settings">Geluidsinstellingen</string>
<string name="title_checkbox_multi_controller">Multi-gamepad support</string>
<string name="summary_checkbox_multi_controller">Deze optie uitvinken zorgt ervoor dat er altijd een gamepad beschikbaar is</string>
<string name="title_seekbar_deadzone">Pas analoge dode zone aan</string>
<string name="suffix_seekbar_deadzone">%</string>
<string name="title_checkbox_xb1_driver">Xbox 360/One controller stuurprogramma</string>
<string name="summary_checkbox_xb1_driver">Gebruikt de ingebouwde USB stuurprogramma voor apparaten zonder Xbox controller ondersteuning</string>
<string name="category_on_screen_controls_settings">On-screen Controller Instellingen</string>
<string name="title_checkbox_show_onscreen_controls">Laat on-screen controls zien</string>
<string name="summary_checkbox_show_onscreen_controls">Geeft een virtuele controller weer op het touchscreen</string>
<string name="category_ui_settings">UI Installingen</string>
<string name="title_language_list">Taal</string>
<string name="summary_language_list">Taal te gebruiken in Moonlight</string>
<string name="title_checkbox_small_icon_mode">Gebruik kleine iconen</string>
<string name="summary_checkbox_small_icon_mode">Gebruik kleine iconen in kolom onderdelen zodat meer items tegelijk zichtbaar worden</string>
<string name="category_host_settings">Host Instellingen</string>
<string name="title_checkbox_enable_sops">Optimaliseer spel instellingen</string>
<string name="summary_checkbox_enable_sops">Sta GFE toe om spel instellingen te veranderen voor een optimale stream</string>
<string name="title_checkbox_host_audio">Speel audio af op PC</string>
<string name="summary_checkbox_host_audio">Speel audio af op de computer en op dit apparaat</string>
<string name="category_advanced_settings">Geavanceerde Instellingen</string>
<string name="title_video_format">Verander HEVC instellingen</string>
<string name="summary_video_format">HEVC verlaagt video bandbreedte vereisten maar benodigd een recent apparaat</string>
<string name="suffix_osc_opacity">%</string>
<string name="message_decoding_error">Moonlight is gecrasht door een compatibiliteitsprobleem met de video decoder van dit toestel. Zorg ervoor dat GeForce Experience bijgewerkt is naar de laatste versie op uw PC. Probeer de streamingsinstellingen te wijzigen bij blijvende crashes.</string>
<string name="scut_deleted_pc">PC verwijderd</string>
<string name="scut_not_paired">PC niet gekoppeld</string>
<string name="scut_pc_not_found">PC niet gevonden</string>
<string name="scut_invalid_uuid">Opgegeven PC is niet geldig</string>
<string name="scut_invalid_app_id">Opgegeven App is niet geldig</string>
<string name="help_loading_msg">Hulppagina laden…</string>
<string name="pcview_menu_header_online">Online</string>
<string name="pcview_menu_header_offline">Offline</string>
<string name="pcview_menu_header_unknown">Vernieuwen</string>
<string name="pcview_menu_test_network">Netwerkconnectie testen</string>
<string name="pcview_menu_details">Details Bekijken</string>
<string name="nettest_title_waiting">Netwerkconnectie Testen</string>
<string name="nettest_text_waiting">Moonlight is uw netwerkverbinding aan het testen om te bepalen of NVIDIA GameStream geblokkeerd is.
\n
\nDit kan enkele seconden duren…</string>
<string name="nettest_title_done">Netwerktest Compleet</string>
<string name="nettest_text_success">Uw netwerk lijkt Moonlight niet te blokkeren. Als u nog steeds problemen ondervindt met verbinden, controleer de firewall instellingen van uw PC.
\n
\nAls u probeert te streamen over het internet, installeer de Moonlight Internet Hosting Tool op uw PC en voer de inbegrepen Internet Streaming Tester uit om uw PC\'s internetverbinding te controleren.</string>
<string name="nettest_text_inconclusive">De netwerktest kon niet worden uitgevoerd omdat geen Moonlight netwerktesting servers bereikbaar zijn. Controleer uw internetverbinding of probeer later opnieuw.</string>
<string name="nettest_text_failure">De internetverbinding van dit toestel lijkt Moonlight te blokkeren. Streamen over het internet werkt mogelijks niet wanneer u verbonden bent met dit netwerk.
\n
\nDe volgende netwerkpoorten zijn geblokkeerd:
\n</string>
<string name="nettest_text_blocked">De internetverbinding van dit toestel blokkeert Moonlight. Streamen over het internet werkt mogelijks niet wanneer u verbonden bent met dit netwerk.</string>
<string name="pair_already_in_progress">Koppelen al bezig</string>
<string name="title_decoding_error">Video Decoder Gecrasht</string>
<string name="title_decoding_reset">Video Instellingen Resetten</string>
<string name="message_decoding_reset">De videodecoder van uw toestel blijft crashen met uw geselecteerde streamingsinstellingen. De streamingsinstellingen zijn teruggezet naar de standaardinstellingen.</string>
<string name="error_usb_prohibited">USB-toegang is uitgeschakeld door uw systeemadministrator. Controleer uw Knox of MDM instellingen.</string>
<string name="unable_to_pin_shortcut">Uw huidige laucher laat het pinnen van snelkoppelingen niet toe.</string>
<string name="video_decoder_init_failed">Videodecoder niet gestart. Uw apparaat ondersteund mogelijk de geselecteerde resolutie of frame rate niet.</string>
<string name="no_video_received_error">Geen video ontvangen van de host.</string>
<string name="no_frame_received_error">De kwaliteit van uw netwerkverbinding is niet goed. Verlaag de bitrate of gebruik een snellere verbinding.</string>
<string name="check_ports_msg">Controleer uw firewall en port forwarding regels voor de poort(en):</string>
<string name="slow_connection_msg">Trage verbinding met PC
\nVerlaag uw bitrate</string>
<string name="poor_connection_msg">Slechte verbinding met PC</string>
<string name="applist_connect_msg">Verbinden met PC…</string>
<string name="applist_menu_details">Details Bekijken</string>
<string name="applist_menu_scut">Snelkoppeling Maken</string>
<string name="applist_menu_hide_app">App Verbergen</string>
<string name="applist_details_id">App ID:</string>
<string name="title_fps_list">Video frame rate</string>
<string name="suffix_seekbar_bitrate_mbps">Mbps</string>
<string name="resolution_prefix_native">Oorspronkelijk</string>
<string name="title_audio_config_list">Surround sound configuratie</string>
<string name="category_input_settings">Invoerinstellingen</string>
<string name="title_checkbox_touchscreen_trackpad">Gebruik het touchscreen als een trackpad</string>
<string name="summary_osc_opacity">Maak de on-screen besturingselementen minder of meer transparant</string>
<string name="title_checkbox_mouse_emulation">Muis simulatie via gamepad</string>
<string name="summary_checkbox_mouse_emulation">De startknop lang indrukken zal de muis-modus activeren op uw gamepad</string>
<string name="title_checkbox_mouse_nav_buttons">Vorige en volgende muisknoppen activeren</string>
<string name="summary_checkbox_flip_face_buttons">Schakelt de face-knoppen A/B en X/Y om voor gamepads en voor on-screen besturing</string>
<string name="title_checkbox_vibrate_osc">Trillen inschakelen</string>
<string name="summary_checkbox_vibrate_osc">Trilt uw apparaat om gerommel te simuleren voor de on-screen besturing</string>
<string name="summary_only_l3r3">Alle virtuele knoppen verbergen behalve L3 en R3</string>
<string name="title_reset_osc">Opgeslagen on-screen layout wissen</string>
<string name="dialog_title_reset_osc">Reset Layout</string>
<string name="toast_reset_osc_success">On-screen controle-elementen naar fabrieksinstellingen zetten</string>
<string name="title_osc_opacity">Transparantie van on-screen besturingselementen aanpassen</string>
<string name="title_checkbox_enable_pip">Scherm-in-Scherm toeschouwermodus inschakelen</string>
<string name="title_disable_frame_drop">Frames nooit overslaan</string>
<string name="summary_disable_frame_drop">Kan micro-stotteren op sommige toestellen verminderen, maar kan vertraging verhogen</string>
<string name="title_enable_hdr">HDR Inschakelen (Experimenteel)</string>
<string name="summary_enable_hdr">Stream HDR als het spel en de GPU van de PC dit ondersteund. HDR vereist een GTX 1000-reeks GPU of later.</string>
<string name="title_enable_perf_overlay">Prestatiestatistieken tonen tijdens het streamen</string>
<string name="title_details">Details</string>
<string name="delete_pc_msg">Bent u zeker dat u deze PC wilt verwijderen\?</string>
<string name="resolution_prefix_native_fullscreen">Oorspronkelijk Volledig Scherm</string>
<string name="help">Help</string>
<string name="perf_overlay_streamdetails">Video stream: %1$s %2$.2f FPS</string>
<string name="perf_overlay_incomingfps">Binnenkomende frame rate van het netwerk: %1$.2f FPS</string>
<string name="early_termination_error">Er is iets misgegaan op de host PC bij het starten van de stream.
\n
\nControleer of u geen DRM-beschermde inhoud heeft geopend op uw host PC. U kan ook de host PC proberen opnieuw op te starten.
\n
\nAls het probleem blijft duren, probeer uw GPU drivers en GeForce Experience opnieuw te installeren.</string>
<string name="perf_overlay_netlatency">Gemiddelde netwerkvertraging: %1$d ms (variantie: %2$d ms)</string>
<string name="addpc_wrong_sitelocal">Dat adres lijkt niet te kloppen. U moet het publieke IP-adres van uw router gebruiken om te kunnen streamen over het Internet.</string>
<string name="title_native_res_dialog">Oorspronkelijke Resolutie Waarschuwing</string>
<string name="text_native_res_dialog">Oorspronkelijke resolutiemodes zijn niet officieel ondersteund door GeForce Experience, hierdoor zal de resolutie van uw host display niet automatisch ingesteld worden. U zal het manueel moeten instellen in het spel.
\n
\nAls u kiest om een aangepaste resolutie in het NVIDIA Controle Paneel in te stellen dat overeenkomt met uw de resolutie van uw apparaat, controleer a.u.b. of u NVIDIA\'s waarschuwingen in verband met mogelijke schade aan uw monitor, PC instabiliteit, en andere mogelijke problemen heeft gelezen en deze begrijpt.
\n
\nWij zijn niet verantwoordelijk voor problemen veroorzaakt door het instellen van een aangepaste resolutie op uw PC.
\n
\nTot slot, uw apparaat of host PC ondersteunt mogelijk streamen met oorspronkelijke resoluties niet. Als het niet werkt op uw toestel heeft u spijtig genoeg gewoon pech.</string>
<string name="summary_fps_list">Verhogen voor een vloeiendere video stream. Verlagen voor betere prestaties op minder krachtige apparaten.</string>
<string name="summary_audio_config_list">5.1 of 7.1 surround sound inschakelen voor home-cinema systemen</string>
<string name="summary_checkbox_touchscreen_trackpad">Wanneer ingeschakeld functioneert het touchscreen als een trackpad. Wanneer uitgeschakeld bedient het touchscreen rechtstreeks de muiscursor.</string>
<string name="summary_checkbox_usb_bind_all">Gebruik Moonlight\'s USB driver voor alle ondersteunde gamepads, zelfs als een standaard Xbox controller aanwezig is</string>
<string name="dialog_text_reset_osc">Bent u zeker dat u uw opgeslagen on-screen controle-elementen wilt verwijderen\?</string>
<string name="summary_enable_perf_overlay">Real-time prestatie-informatie tonen tijdens het streamen</string>
<string name="title_checkbox_vibrate_fallback">Simuleer rumble-ondersteuning met trillingen</string>
<string name="summary_checkbox_mouse_nav_buttons">Deze optie inschakelen kan problemen veroorzaken met rechts-klikken op sommige buggy apparaten</string>
<string name="summary_checkbox_vibrate_fallback">Laat uw apparaat trillen om gerommel te simuleren als uw gamepad dit niet ondersteund</string>
<string name="title_only_l3r3">Enkel L3 en R3 tonen</string>
<string name="title_checkbox_usb_bind_all">Standaard Xbox gamepad-ondersteuning overschrijven</string>
<string name="summary_reset_osc">Herstelt alle on-screen besturingselementen naar hun originele grootte en positie</string>
<string name="dialog_title_osc_opacity">Transparantie wijzigen</string>
<string name="title_unlock_fps">Alle mogelijke frame rates ontgrendelen</string>
<string name="summary_unlock_fps">Streamen op 90 of 120 FPS kan vertraging op high-end apparaten verminderen, maar het kan lag of instabiliteit veroorzaken op toestellen die het niet ondersteunen</string>
<string name="summary_checkbox_enable_pip">Laat toe de stream te bekijken (maar niet bedienen) bij het multitasken</string>
<string name="title_checkbox_flip_face_buttons">Face-knoppen omdraaien</string>
<string name="title_enable_post_stream_toast">Vertragingsbericht tonen na het streamen</string>
<string name="summary_enable_post_stream_toast">Toon een informatiebericht van de vertraging na de stream beëindigd is</string>
<string name="help_loading_title">Hulpwijzer</string>
<string name="perf_overlay_decoder">Decoder: %1$s</string>
<string name="perf_overlay_renderingfps">Rendering frame rate: %1$.2f FPS</string>
<string name="perf_overlay_netdrops">Frames overgeslagen door uw netwerkverbinding: %1$.2f%%</string>
<string name="perf_overlay_dectime">Gemiddelde decodeertijd: %1$.2f ms</string>
<string name="applist_menu_tv_channel">Toevoegen aan Kanaal</string>
</resources>
<!-- Array strings -->
<string name="videoformat_hevcauto">Gebruik HEVC alleen als het stabiel is.</string>
<string name="videoformat_hevcalways">Gebruik HEVC altijd (mogelijkheid tot crashes)</string>
<string name="videoformat_hevcnever">Gebruik HEVC nooit</string>
</resources>
+231
View File
@@ -0,0 +1,231 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="title_frame_pacing">Ritmo de quadros</string>
<string name="pacing_balanced">Balanceado</string>
<string name="pacing_latency">Preferir baixa latência</string>
<string name="summary_enable_hdr">Transmita HDR quando o jogo e a GPU do PC suportarem. O HDR requer uma GPU da série GTX 1000 ou posterior.</string>
<string name="summary_enable_post_stream_toast">Exibe uma mensagem com informações de latência após o término da transmissão</string>
<string name="summary_unlock_fps">Transmitir a 90 ou 120 FPS pode reduzir a latência em dispositivos de última geração, mas pode causar atraso ou instabilidade em dispositivos que não suportam</string>
<string name="summary_checkbox_vibrate_osc">Vibra seu dispositivo para emular rumble nos controles de tela</string>
<string name="pcview_menu_header_offline">Indisponível</string>
<string name="pcview_menu_header_unknown">Atualizando</string>
<string name="pacing_smoothness">Preferir vídeo mais suave (pode aumentar significativamente a latência)</string>
<string name="summary_frame_pacing">Especifique o equilíbrio entre latência e suavidade do vídeo</string>
<string name="title_checkbox_disable_warnings">Desabilitar mensagens de alerta</string>
<string name="title_checkbox_enable_pip">Habilitar modo Picture-in-Picture</string>
<string name="summary_checkbox_small_icon_mode">Diminui o tamanho dos ícones permitindo que mais aplicativos sejam visíveis na tela</string>
<string name="dialog_text_reset_osc">Tem certeza de que deseja excluir o layout salvo dos controles de tela\?</string>
<string name="summary_checkbox_touchscreen_trackpad">Se habilitado, a tela sensível ao toque funciona como um trackpad. Se desativado, a tela controla diretamente o cursor do mouse.</string>
<string name="summary_checkbox_xb1_driver">Habilita um driver USB integrado para dispositivos sem suporte nativo aos controles Xbox</string>
<string name="title_checkbox_mouse_nav_buttons">Habilitar os botões de voltar e avançar do mouse</string>
<string name="addpc_fail">Não foi possível conectar ao computador especificado. Certifique-se de que as portas necessárias sejam permitidas pelo firewall.</string>
<string name="conn_error_msg">Falha ao iniciar</string>
<string name="ip_hint">Endereço de IP do PC GeForce</string>
<string name="searching_pc">Procurando por PCs rodando o GameStream...
\n
\nCertifique-se de que o GameStream esteja ativado nas configurações do SHIELD do GeForce Experience.</string>
<string name="nettest_text_success">Sua rede não parece estar bloqueando o Moonlight. Se você ainda tiver problemas para se conectar, verifique as configurações de firewall do seu PC.
\n
\nSe você estiver tentando transmitir pela Internet, instale o Moonlight Internet Hosting Tool em seu PC e execute o Internet Streaming Tester para verificar a conexão com a Internet do seu PC.</string>
<string name="check_ports_msg">Verifique o firewall e permita a(s) seguinte(s) para porta(s):</string>
<string name="wol_no_mac">Não foi possível acordar o PC porque o GFE não enviou um endereço MAC</string>
<string name="wol_waking_msg">Pode levar alguns segundos para o seu PC acordar. Se isso não acontecer, verifique se ele está configurado corretamente para Wake-On-LAN.</string>
<string name="error_404">GFE retornou um erro HTTP 404. Verifique se o seu PC está executando uma GPU compatível. O uso do software de área de trabalho remota também pode causar esse erro. Tente reiniciar sua máquina ou reinstalar o GFE.</string>
<string name="message_decoding_error">Moonlight crashou devido a uma incompatibilidade com o decodificador de vídeo deste dispositivo. Certifique-se de que o GeForce Experience esteja atualizado para a versão mais recente em seu PC. Tente ajustar as configurações de transmissão se as falhas continuarem.</string>
<string name="message_decoding_reset">O decodificador de vídeo do seu dispositivo continua crashando nas configurações de transmissão selecionadas. Suas configurações de transmissão foram redefinidas para o padrão.</string>
<string name="error_usb_prohibited">O acesso USB é proibido pelo administrador do seu dispositivo. Verifique suas configurações de Knox ou MDM.</string>
<string name="unable_to_pin_shortcut">Seu launcher atual não permite a criação de atalhos fixados.</string>
<string name="video_decoder_init_failed">Falha ao iniciar o decodificador de vídeo. Seu dispositivo pode não suportar a resolução ou taxa de quadros selecionada.</string>
<string name="no_video_received_error">Nenhum vídeo recebido do host.</string>
<string name="no_frame_received_error">Sua conexão de rede não está funcionando bem. Reduza a configuração da taxa de bits do vídeo ou tente uma conexão mais rápida.</string>
<string name="early_termination_error">Algo deu errado no seu PC ao iniciar a transmissão.
\n
\nCertifique-se de não ter nenhum conteúdo protegido por DRM aberto em seu PC. Você também pode tentar reiniciar ele.
\n
\nSe o problema persistir, tente reinstalar os drivers da GPU e o GeForce Experience.</string>
<string name="conn_establishing_msg">Iniciando a conexão</string>
<string name="conn_establishing_title">Estabelecendo Conexão</string>
<string name="resolution_360p">360p</string>
<string name="resolution_480p">480p</string>
<string name="resolution_720p">720p</string>
<string name="resolution_1080p">1080p</string>
<string name="resolution_1440p">1440p</string>
<string name="resolution_4k">4K</string>
<string name="fps_30">30 FPS</string>
<string name="fps_60">60 FPS</string>
<string name="videoformat_hevcalways">Sempre usar HEVC (talvez crashe)</string>
<string name="videoformat_hevcauto">Usar HEVC apenas se for estável</string>
<string name="fps_120">120 FPS</string>
<string name="audioconf_stereo">Stereo</string>
<string name="audioconf_51surround">5.1 Surround</string>
<string name="audioconf_71surround">7.1 Surround</string>
<string name="fps_90">90 FPS</string>
<string name="videoformat_hevcnever">Nunca usar HEVC</string>
<string name="scut_deleted_pc">PC deletado</string>
<string name="scut_not_paired">PC não pareado</string>
<string name="help_loading_title">Ver Ajuda</string>
<string name="help_loading_msg">Carregando página de ajuda…</string>
<string name="scut_pc_not_found">PC não encontrado</string>
<string name="scut_invalid_uuid">O PC informado não é válido</string>
<string name="scut_invalid_app_id">O aplicativo informado não é válido</string>
<string name="pcview_menu_header_online">Disponível</string>
<string name="pcview_menu_app_list">Ver Todos os Jogos</string>
<string name="pcview_menu_unpair_pc">Desparear</string>
<string name="pcview_menu_delete_pc">Deletar PC</string>
<string name="pcview_menu_test_network">Testar Conexão com a Internet</string>
<string name="pcview_menu_details">Ver Detalhes</string>
<string name="nettest_title_waiting">Testando a Conexão com a Internet</string>
<string name="nettest_title_done">Teste de Internet Completo</string>
<string name="pcview_menu_pair_pc">Parear com o PC</string>
<string name="pcview_menu_send_wol">Enviar Wake-On-LAN</string>
<string name="nettest_text_waiting">O Moonlight está testando a sua internet para determinar se o NVIDIA GameStream está bloqueado.
\n
\nIsso pode levar alguns segundos…</string>
<string name="nettest_text_inconclusive">O teste de rede não pôde ser executado porque nenhum dos servidores de teste de conexão do Moonlight estava acessível. Verifique sua conexão com a Internet ou tente novamente mais tarde.</string>
<string name="nettest_text_failure">A conexão de rede atual do seu dispositivo parece estar bloqueando o Moonlight. A transmissão pela Internet pode não funcionar enquanto estiver conectado a esta rede.
\n
\nAs seguintes portas de rede estão bloqueadas:
\n</string>
<string name="nettest_text_blocked">A conexão de rede atual do seu dispositivo está bloqueando o Moonlight. A transmissão pela Internet pode não funcionar enquanto estiver conectado a esta rede.</string>
<string name="pairing">Pareando…</string>
<string name="pair_pc_offline">Esse computador está indisponível</string>
<string name="pair_pc_ingame">Esse computador está atualmente em um jogo. Você deve fechar o jogo antes de parear.</string>
<string name="pair_pairing_title">Pareando</string>
<string name="pair_pairing_msg">Insira o seguinte PIN no PC de destino:</string>
<string name="pair_incorrect_pin">PIN incorreto</string>
<string name="pair_fail">Falha no pareamento</string>
<string name="pair_already_in_progress">Pareamento já em andamento</string>
<string name="wol_pc_online">Esse computador está disponível</string>
<string name="wol_waking_pc">Acordando o PC…</string>
<string name="wol_fail">Falha ao enviar pacotes Wake-On-LAN</string>
<string name="unpairing">Despareando…</string>
<string name="unpair_success">Despareado com sucesso</string>
<string name="unpair_fail">Falha ao desparear</string>
<string name="unpair_error">Dispositivo não pareado</string>
<string name="error_pc_offline">Esse computador está indisponível</string>
<string name="error_manager_not_running">O serviço ComputerManager não está em execução. Aguarde alguns segundos ou reinicie o aplicativo.</string>
<string name="error_unknown_host">Falha ao encontrar o host</string>
<string name="conn_terminated_msg">A conexão foi encerrada</string>
<string name="yes">Sim</string>
<string name="no">Não</string>
<string name="lost_connection">Conexão perdida com o PC</string>
<string name="title_details">Detalhes</string>
<string name="help">Ajuda</string>
<string name="delete_pc_msg">Tem certeza de que deseja excluir este PC\?</string>
<string name="slow_connection_msg">Conexão lenta com o PC
\nReduza sua taxa de bits</string>
<string name="poor_connection_msg">Conexão ruim com o PC</string>
<string name="conn_terminated_title">Conexão Encerrada</string>
<string name="title_decoding_error">Decodificador de Vídeo Crashou</string>
<string name="title_decoding_reset">Resetar Configurações de Vídeo</string>
<string name="conn_metered">Aviso: Sua conexão de rede atual é limitada!</string>
<string name="conn_client_latency">Latência média de decodificação de quadros:</string>
<string name="conn_client_latency_hw">latência do decodificador de hardware:</string>
<string name="conn_hardware_latency">Latência média de decodificação de hardware:</string>
<string name="conn_starting">Iniciando</string>
<string name="conn_error_title">Erro de Conexão</string>
<string name="perf_overlay_decoder">Decodificador: %1$s</string>
<string name="perf_overlay_incomingfps">Taxa de quadros recebidos pela rede:: %1$.2f FPS</string>
<string name="perf_overlay_renderingfps">Taxa de quadros renderizando: %1$.2f FPS</string>
<string name="perf_overlay_streamdetails">Transmissão: %1$s %2$.2f FPS</string>
<string name="perf_overlay_netlatency">Latência média da rede: %1$d ms (variação: %2$d ms)</string>
<string name="perf_overlay_dectime">Tempo médio de decodificação: %1$.2f ms</string>
<string name="applist_connect_msg">Conectando ao PC…</string>
<string name="applist_menu_resume">Retornar ao Jogo</string>
<string name="applist_menu_quit">Sair do Jogo</string>
<string name="applist_menu_quit_and_start">Sair do Jogo Atual e Iniciar</string>
<string name="applist_menu_cancel">Cancelar</string>
<string name="applist_menu_details">Ver Detalhes</string>
<string name="applist_menu_scut">Criar Atalho</string>
<string name="applist_menu_tv_channel">Adicionar ao Canal</string>
<string name="applist_menu_hide_app">Esconder Jogo</string>
<string name="applist_refresh_title">Lista de Aplicativos</string>
<string name="perf_overlay_netdrops">Quadros dropados pela rede: %1$.2f%%</string>
<string name="applist_quit_app">Saindo</string>
<string name="applist_quit_success">Saiu com sucesso</string>
<string name="applist_quit_fail">Falha ao sair</string>
<string name="applist_refresh_msg">Recarregando aplicativos…</string>
<string name="applist_refresh_error_title">Erro</string>
<string name="applist_refresh_error_msg">Falha ao obter a lista de aplicativos</string>
<string name="applist_quit_confirmation">Tem certeza de que deseja sair do aplicativo em execução\? Todos os dados não salvos serão perdidos.</string>
<string name="applist_details_id">ID do App:</string>
<string name="title_add_pc">Adicionar PC Manualmente</string>
<string name="msg_add_pc">Conectando ao PC…</string>
<string name="addpc_success">Computador adicionado com sucesso</string>
<string name="addpc_unknown_host">Não foi possível encontrar o PC. Certifique-se de que não cometeu um erro de digitação no endereço.</string>
<string name="addpc_enter_ip">Você deve inserir um endereço de IP</string>
<string name="category_input_settings">Configurações de Controles</string>
<string name="category_basic_settings">Configurações Básicas</string>
<string name="title_resolution_list">Resolução</string>
<string name="summary_resolution_list">Aumente para melhorar a clareza da imagem. Diminua para melhor desempenho em dispositivos de baixo custo e redes mais lentas.</string>
<string name="title_native_res_dialog">Alerta de Resolução Nativa</string>
<string name="text_native_res_dialog">Os modos de resolução nativa não são oficialmente suportados pelo GeForce Experience, portanto, ele não definirá a resolução da tela do host. Você precisará configurá-lo manualmente durante o jogo.
\n
\nSe você optar por criar uma resolução personalizada no Painel de controle da NVIDIA para corresponder à resolução do seu dispositivo, certifique-se de ter lido e entendido o aviso da NVIDIA sobre possíveis danos ao monitor, instabilidade do PC e outros problemas potenciais.
\n
\nNão nos responsabilizamos por quaisquer problemas resultantes da criação de uma resolução personalizada em seu PC.
\n
\nPor fim, seu dispositivo ou PC host pode não suportar transmissões na resolução nativa. Se não funcionar no seu dispositivo, você está sem sorte, infelizmente.</string>
<string name="title_fps_list">Taxa de quadros por segundo</string>
<string name="summary_fps_list">Aumente para uma transmissão de vídeo mais suave. Diminua para melhor desempenho em dispositivos de baixo custo.</string>
<string name="title_seekbar_bitrate">Taxa de bits</string>
<string name="summary_seekbar_bitrate">Aumente para uma melhor qualidade de imagem. Diminua para melhorar o desempenho em conexões mais lentas.</string>
<string name="title_checkbox_stretch_video">Esticar vídeo para tela cheia</string>
<string name="resolution_prefix_native">Nativa</string>
<string name="resolution_prefix_native_fullscreen">Nativa Tela Cheia</string>
<string name="category_audio_settings">Configurações de Áudio</string>
<string name="title_audio_config_list">Configurações de som Surround</string>
<string name="summary_audio_config_list">Habilita o som Surround 5.1 ou 7.1 para sistemas de home theater</string>
<string name="addpc_wrong_sitelocal">Esse endereço não parece certo. Você deve usar o endereço de IP público do seu roteador para transmitir pela Internet.</string>
<string name="suffix_seekbar_bitrate_mbps">Mbps</string>
<string name="title_checkbox_show_onscreen_controls">Mostrar controles na tela</string>
<string name="summary_checkbox_show_onscreen_controls">Habilita o controle virtual na tela de toque</string>
<string name="title_checkbox_vibrate_osc">Habilitar vibração</string>
<string name="title_only_l3r3">Mostrar somente L3 e R3</string>
<string name="summary_only_l3r3">Esconde todos os botões virtuais exceto o L3 e R3</string>
<string name="title_checkbox_touchscreen_trackpad">Usar a tela como um trackpad</string>
<string name="title_checkbox_multi_controller">Detecção automática de gamepad</string>
<string name="summary_checkbox_multi_controller">Desmarque esta opção para forçar o gamepad a estar sempre presente</string>
<string name="title_checkbox_vibrate_fallback">Emular suporte rumble com vibração</string>
<string name="summary_checkbox_vibrate_fallback">Vibra seu dispositivo para emular rumble se seu gamepad não suportar</string>
<string name="title_seekbar_deadzone">Ajustar zona morta do analógico</string>
<string name="suffix_seekbar_deadzone">%</string>
<string name="title_checkbox_xb1_driver">Driver de gamepad USB Xbox 360/One</string>
<string name="title_checkbox_usb_bind_all">Substituir o suporte nativo ao gamepad do Xbox</string>
<string name="summary_checkbox_usb_bind_all">Use o driver USB do Moonlight para todos os gamepads suportados, mesmo se houver suporte nativo ao controle Xbox</string>
<string name="title_checkbox_mouse_emulation">Emulação de mouse via gamepad</string>
<string name="summary_checkbox_mouse_emulation">Segure o botão Start para mudar o gamepad para o modo de mouse</string>
<string name="summary_checkbox_mouse_nav_buttons">Ativar esta opção pode bugar o clique com o botão direito em alguns dispositivos com bugs</string>
<string name="summary_checkbox_flip_face_buttons">Inverte os botões A/B e X/Y dos gamepads e controles de tela</string>
<string name="category_on_screen_controls_settings">Configurações de Controles de Tela</string>
<string name="title_checkbox_flip_face_buttons">Inverter botões</string>
<string name="title_unlock_fps">Liberar todas as taxas de quadros possíveis</string>
<string name="category_advanced_settings">Configurações Avançadas</string>
<string name="title_checkbox_host_audio">Reproduzir áudio no PC</string>
<string name="summary_checkbox_host_audio">Reproduz o áudio do computador e deste dispositivo</string>
<string name="title_checkbox_enable_sops">Otimizar configurações de jogo</string>
<string name="summary_checkbox_enable_sops">Permitir que o GFE modifique as configurações do jogo para otimizar a transmissão</string>
<string name="title_language_list">Idioma</string>
<string name="summary_language_list">Idioma para ser usado no Moonlight</string>
<string name="summary_checkbox_enable_pip">Permite que a transmissão seja visualizada (mas não controlada) enquanto usa outros apps</string>
<string name="category_ui_settings">Configurações de Interface</string>
<string name="suffix_osc_opacity">%</string>
<string name="category_host_settings">Configurações de Host</string>
<string name="dialog_title_osc_opacity">Mudar opacidade</string>
<string name="title_checkbox_small_icon_mode">Mostrar ícones menores</string>
<string name="summary_reset_osc">Redefine todos os controles na tela para seu tamanho e posição padrão</string>
<string name="dialog_title_reset_osc">Resetar Layout</string>
<string name="toast_reset_osc_success">Controles de tela redefinidos para o padrão</string>
<string name="title_osc_opacity">Mudar a opacidade dos controles de tela</string>
<string name="summary_osc_opacity">Deixe os controles de tela mais/menos transparentes</string>
<string name="title_reset_osc">Limpar o layout salvo dos controles de tela</string>
<string name="title_video_format">Mudar configurações do HEVC</string>
<string name="summary_video_format">HEVC reduz os requisitos de largura de banda de vídeo, mas requer um dispositivo mais atual</string>
<string name="summary_checkbox_disable_warnings">Desativa as mensagens de aviso de conexão na tela durante a transmissão</string>
<string name="title_disable_frame_drop">Nunca dropar quadros</string>
<string name="summary_disable_frame_drop">Talvez reduza o micro-stuttering em alguns dispositivos, mas pode aumentar a latência</string>
<string name="title_enable_hdr">Habilitar HDR (Experimental)</string>
<string name="title_enable_post_stream_toast">Mostrar aviso de latência após terminar a transmissão</string>
<string name="summary_enable_perf_overlay">Exibe informações de performance em tempo real durante a transmissão</string>
<string name="title_enable_perf_overlay">Mostrar status de performance durante a transmissão</string>
</resources>
+20
View File
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="pcview_menu_header_unknown">Recarregando</string>
<string name="pcview_menu_unpair_pc">Dessincronize</string>
<string name="scut_deleted_pc">PC deletado</string>
<string name="scut_not_paired">PC despairado</string>
<string name="scut_pc_not_found">PC não encontrado</string>
<string name="scut_invalid_uuid">O PC provido não é válido</string>
<string name="scut_invalid_app_id">O aplicativo provido não é válido</string>
<string name="help_loading_title">Vizualizador da Ajuda</string>
<string name="help_loading_msg">Carregando a página de ajuda…</string>
<string name="pcview_menu_header_online">Online</string>
<string name="pcview_menu_header_offline">Offline</string>
<string name="pcview_menu_app_list">Veja todos aplicativos</string>
<string name="pcview_menu_pair_pc">Sincronize com o PC</string>
<string name="pcview_menu_details">Ver Detalhes</string>
<string name="pair_pairing_title">Pareando</string>
<string name="pair_fail">Falha no pareamento</string>
<string name="nettest_title_waiting">Testar Conexão com a Internet</string>
</resources>
-20
View File
@@ -1,20 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="audio_config_names">
<item>Stereo</item>
<item>Sunet Surround 5.1</item>
<item>Sunet Surround 7.1</item>
</string-array>
<string-array name="decoder_names">
<item>Auto-selectează decodorul</item>
<item>Forțează decodarea Software</item>
<item>Forțează decodarea Hardware</item>
</string-array>
<string-array name="video_format_names">
<item>Folosește HEVC doar dacă e stabil</item>
<item>Folosește HEVC mereu (se poate bloca)</item>
<item>Nu folosi HEVC</item>
</string-array>
</resources>
+8
View File
@@ -191,4 +191,12 @@
<string name="title_enable_perf_overlay">Activează statisticile de performanță</string>
<string name="summary_enable_perf_overlay">Afișează în timp real statisticile de performanță ale conexiunii.</string>
<!-- Array strings -->
<string name="audioconf_stereo">Stereo</string>
<string name="audioconf_51surround">Sunet Surround 5.1</string>
<string name="audioconf_71surround">Sunet Surround 7.1</string>
<string name="videoformat_hevcauto">Folosește HEVC doar dacă e stabil</string>
<string name="videoformat_hevcalways">Folosește HEVC mereu (se poate bloca)</string>
<string name="videoformat_hevcnever">Nu folosi HEVC</string>
</resources>
-20
View File
@@ -1,20 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="audio_config_names">
<item>Стерео</item>
<item>5.1 Объёмный звук</item>
<item>7.1 Объёмный звук</item>
</string-array>
<string-array name="decoder_names">
<item>Автоматический выбор декодера</item>
<item>Принудительное программное декодирование</item>
<item>Принудительное аппаратное декодирование</item>
</string-array>
<string-array name="video_format_names">
<item>Использовать HEVC только если безопасно</item>
<item>Всегда использовать HEVC если доступно</item>
<item>Никогда не использовать HEVC</item>
</string-array>
</resources>
+11
View File
@@ -211,4 +211,15 @@
<string name="title_native_res_dialog">Предупреждение о родном разрешении</string>
<string name="video_decoder_init_failed">Видеодекодер не инициализирован. Ваше устройство может не поддерживать выбранное разрешение или частоту кадров.</string>
<string name="perf_overlay_streamdetails">Видеострим: %1$s %2$.2f FPS</string>
<string name="resolution_prefix_native_fullscreen">Родной полноэкранный режим</string>
<string name="perf_overlay_netlatency">Средняя задержка сети: %1$d мс (дисперсия: %2$d мс)</string>
<!-- Array strings -->
<string name="audioconf_stereo">Стерео</string>
<string name="audioconf_51surround">5.1 Объёмный звук</string>
<string name="audioconf_71surround">7.1 Объёмный звук</string>
<string name="videoformat_hevcauto">Использовать HEVC только если безопасно</string>
<string name="videoformat_hevcalways">Всегда использовать HEVC если доступно</string>
<string name="videoformat_hevcnever">Никогда не использовать HEVC</string>
</resources>
+41
View File
@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="summary_reset_osc">Bütün ekran kontrollerini varsayılan boyutu ve pozisyonuna sıfırlar</string>
<string name="title_checkbox_touchscreen_trackpad">Dokunmatik ekranı trackpad olarak kullan</string>
<string name="category_input_settings">Girdi Ayarları</string>
<string name="summary_language_list">Moonlight için kullanılacak olan dil</string>
<string name="ip_hint">GeForce PC\'nin IP adresi</string>
<string name="title_details">Detaylar</string>
<string name="dialog_title_osc_opacity">Opaklığı değiştir</string>
<string name="conn_error_title">Bağlantı Hatası</string>
<string name="conn_starting">Başlatılıyor</string>
<string name="conn_error_msg">Başlatma başarısız</string>
<string name="summary_audio_config_list">Ev-sinema sistemleri için 5.1 yada 7.1 surround sesi etkinleştir</string>
<string name="title_checkbox_host_audio">Sesleri bilgisayarda çal</string>
<string name="suffix_seekbar_bitrate_mbps">Mbps</string>
<string name="error_pc_offline">Bilgisayar çevrimdışı</string>
<string name="unpair_success">Eşleştirme başarıyla kaldırıldı</string>
<string name="unpairing">Eşleştirme kaldırılıyor…</string>
<string name="pair_fail">Eşleştirme başarısız</string>
<string name="pair_incorrect_pin">Yanlış PIN</string>
<string name="pair_pairing_title">Eşleştiriliyor</string>
<string name="pair_pc_offline">Bilgisayar çevrimdışı</string>
<string name="pairing">Eşleştiriliyor…</string>
<string name="nettest_title_waiting">Ağ Bağlantısı Test Ediliyor</string>
<string name="pcview_menu_details">Detayları Görüntüle</string>
<string name="pcview_menu_test_network">Ağ Bağlantısını Test Et</string>
<string name="pcview_menu_delete_pc">PC\'yi sil</string>
<string name="pcview_menu_unpair_pc">Eşleştirmeyi kaldır</string>
<string name="pcview_menu_pair_pc">PC ile eşle</string>
<string name="pcview_menu_app_list">Bütün Uygulamaları Göster</string>
<string name="pcview_menu_header_unknown">Yenileniyor</string>
<string name="pcview_menu_header_offline">Çevrimdışı</string>
<string name="pcview_menu_header_online">Çevrimiçi</string>
<string name="scut_pc_not_found">PC bulunamadı</string>
<string name="scut_not_paired">PC eşleştirilmedi</string>
<string name="scut_deleted_pc">PC silindi</string>
<string name="help_loading_msg">Yardım sayfası yükleniyor…</string>
<string name="help_loading_title">Yardım</string>
<string name="scut_invalid_app_id">Tanımlanmış uygulama geçerli değil</string>
<string name="scut_invalid_uuid">Tanımlanmış bilgisayar geçerli değil</string>
</resources>
-14
View File
@@ -1,14 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="decoder_names">
<item>Автоматичний вибір декодера</item>
<item>Примусове програмне декодування</item>
<item>Примусове апаратне декодування</item>
</string-array>
<string-array name="video_format_names">
<item>Використовувати HEVC тільки якщо безпечно</item>
<item>Завжди використовувати HEVC якщо доступно</item>
<item>Ніколи не використовувати HEVC</item>
</string-array>
</resources>
+171 -127
View File
@@ -1,198 +1,242 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- PC view menu entries -->
<string name="pcview_menu_app_list">Подивитися список ігор</string>
<string name="pcview_menu_pair_pc">Створити пару з ПК</string>
<string name="pcview_menu_app_list">Подивитися перелік додатків</string>
<string name="pcview_menu_pair_pc">Створити пару з пристроєм</string>
<string name="pcview_menu_unpair_pc">Розірвати пару</string>
<string name="pcview_menu_send_wol">Надіслати Wake-On-LAN запит</string>
<string name="pcview_menu_delete_pc">Видалити ПК</string>
<string name="pcview_menu_send_wol">Надіслати запит Wake-On-LAN</string>
<string name="pcview_menu_delete_pc">Видалити пристрій</string>
<!-- Pair messages -->
<string name="pairing">Створення пари…</string>
<string name="pair_pc_offline">Комп\'ютер вимкнений або знаходиться не в мережі</string>
<string name="pair_pc_ingame">Комп\'ютер в даний момент знаходиться в грі. Ви повинні закрити гру перед створенням пари.</string>
<string name="pair_pc_offline">Пристрій вимкнений або знаходиться поза мережею</string>
<string name="pair_pc_ingame">Пристрій на даний момент знаходиться у грі. Ви повинні закрити гру перед створенням пари.</string>
<string name="pair_pairing_title">Створення пари</string>
<string name="pair_pairing_msg">Будь ласка, введіть цей PIN на ПК:</string>
<string name="pair_incorrect_pin">Неправильний PIN</string>
<string name="pair_pairing_msg">Будь ласка, введіть цей код на пристрої:</string>
<string name="pair_incorrect_pin">Неправильний код</string>
<string name="pair_fail">Створення пари не вдалося</string>
<!-- WOL messages -->
<string name="wol_pc_online">Комп\'ютер в мережі</string>
<string name="wol_no_mac">Неможливо розбудити ПК бо GFE не відправили MAC адреса</string>
<string name="wol_waking_pc">Пробудження ПК</string>
<string name="wol_waking_msg">Пробудження ПК може зайняти кілька секунд.
Якщо цього не відбувається, упевніться що Wake-On-LAN налаштований правильно.
</string>
<string name="wol_pc_online">Пристрій у мережі</string>
<string name="wol_no_mac">Неможливо розбудити пристрій бо GFE не відправило MAC адреса</string>
<string name="wol_waking_pc">Пробудження пристрою</string>
<string name="wol_waking_msg">Пробудження пристрою може зайняти кілька секунд. Якщо цього не відбувається, упевніться що Wake-On-LAN налаштований правильно.</string>
<string name="wol_fail">Помилка при відправці Wake-On-LAN пакетів</string>
<!-- Unpair messages -->
<string name="unpairing">Розрив пари…</string>
<string name="unpair_success">Розрив пари закінчився успішно</string>
<string name="unpair_fail">Розрив пари не вдався</string>
<string name="unpair_error">Пристрій не було спарено</string>
<!-- Errors -->
<string name="error_pc_offline">Комп\'ютер вимкнений або знаходиться не в мережі</string>
<string name="error_manager_not_running">Сервіс ComputerManager не запущено. Будь ласка, зачекайте кілька секунд або запустіть програму.</string>
<string name="error_unknown_host">Неможливо знайти хост</string>
<string name="error_404">GFE повернув помилку HTTP 404. Переконайтеся що Ваш ПК використовує підтримуваний GPU.
Використання програм для віддаленого доступу також може викликати цю помилку. Спробуйте перезавантажити комп\'ютер або перевстановити GFE.
</string>
<string name="error_pc_offline">Пристрій вимкнено чи знаходиться поза мережею</string>
<string name="error_manager_not_running">Сервіс ComputerManager не запущено. Будь ласка, зачекайте кілька секунд або перезапустіть додаток.</string>
<string name="error_unknown_host">Неможливо знайти хоста</string>
<string name="error_404">GFE повернув помилку HTTP 404. Переконайтеся що ваш пристрій використовує підтримуваний GPU. Використання програм для віддаленого доступу також може викликати цю помилку. Спробуйте перезавантажити пристрій або перевстановити GFE.</string>
<!-- Start application messages -->
<string name="conn_establishing_title">Створення з\'єднання</string>
<string name="conn_establishing_msg">Підключення</string>
<string name="conn_metered">Увага: Відбувається вимір Вашого мережевого з\'єднання!</string>
<string name="conn_client_latency">Середня затримка декодування кадру:</string>
<string name="conn_client_latency_hw">затримка апаратного декодування:</string>
<string name="conn_hardware_latency">Середня затримка апаратного декодування:</string>
<string name="conn_metered">Увага: Ваше мережеве з\'єднання вимірюється оператором!</string>
<string name="conn_client_latency">Середня затримка розцифрування кадру:</string>
<string name="conn_client_latency_hw">затримка апаратного розцифрування:</string>
<string name="conn_hardware_latency">Середня затримка апаратного розцифрування:</string>
<string name="conn_starting">Запуск</string>
<string name="conn_error_title">Помилка з\'єднання</string>
<string name="conn_error_msg">Запуск не вдався</string>
<string name="conn_terminated_title">З\'єднання припинено</string>
<string name="conn_terminated_msg">Підключення було перервано</string>
<string name="conn_terminated_msg">З\'єднання перервано</string>
<!-- General strings -->
<string name="ip_hint">IP-адреса комп\'ютера з GeForce</string>
<string name="searching_pc">Пошук комп\'ютерів із запущеним GameStream…\n\n
Переконайтеся що GameStream увімкнений в налаштуваннях GeForce Experience в розділі SHIELD.</string>
<string name="ip_hint">IP-адреса пристрою з GeForce</string>
<string name="searching_pc">Пошук пристроїв із запущеним GameStream…
\n
\n Переконайтеся що GameStream увімкнений в налаштуваннях GeForce Experience в розділі SHIELD.</string>
<string name="yes">Так</string>
<string name="no">Ні</string>
<string name="lost_connection">З\'єднання втрачено з ПК</string>
<string name="lost_connection">З\'єднання з пристроєм втрачено</string>
<!-- AppList activity -->
<string name="applist_menu_resume">Відновити сесію</string>
<string name="applist_menu_quit">Вийти з сесії</string>
<string name="applist_menu_quit_and_start">Вийти з поточної гри і запустити</string>
<string name="applist_menu_cancel">Скасування</string>
<string name="applist_menu_cancel">Скасувати</string>
<string name="applist_menu_tv_channel">Додати на канал</string>
<string name="applist_refresh_title">Список додатків</string>
<string name="applist_refresh_title">Перелік додатків</string>
<string name="applist_refresh_msg">Оновлення додатків…</string>
<string name="applist_refresh_error_title">Помилка</string>
<string name="applist_refresh_error_msg">Помилка при отриманні списку додатків</string>
<string name="applist_quit_app">Вихід з</string>
<string name="applist_quit_success">Вихід відбувся успішно з</string>
<string name="applist_refresh_error_msg">Помилка отримання переліку додатків</string>
<string name="applist_quit_app">Виходимо з</string>
<string name="applist_quit_success">Успішний вихід з</string>
<string name="applist_quit_fail">Помилка при виході</string>
<string name="applist_quit_confirmation">Ви впевнені, що хочете вийти з запущеного додатку? Усі незбережені дані будуть втрачені.</string>
<!-- Add computer manually activity -->
<string name="title_add_pc">Додавання ПК вручну</string>
<string name="msg_add_pc">З\'єднання з ПК</string>
<string name="addpc_fail">Неможливо підключитися до вибраного комп\'ютера. Переконайтеся, що необхідні порти дозволені в налаштуваннях брандмауера.</string>
<string name="addpc_success">Комп\'ютер доданий успішно</string>
<string name="addpc_unknown_host">Неможливо знайти ПК за вказаною адресою. Переконайтеся, що Ви не зробили помилок під час його написання.</string>
<string name="title_add_pc">Додати пристрій вручну</string>
<string name="msg_add_pc">З\'єднання з пристроєм</string>
<string name="addpc_fail">Неможливо під\'єднатися до вибраного пристрою. Переконайтеся, що необхідні порти дозволені в налаштуваннях брандмауера.</string>
<string name="addpc_success">Пристрій додано успішно</string>
<string name="addpc_unknown_host">Неможливо знайти пристрій за вказаною адресою. Переконайтеся, що ви не зробили помилок під час його написання.</string>
<string name="addpc_enter_ip">Ви повинні ввести IP адресу</string>
<!-- Preferences -->
<string name="category_basic_settings">Загальні Налаштування</string>
<string name="title_resolution_list">Виберіть розширення і частоту кадрів</string>
<string name="summary_resolution_list">Вибір занадто високого значеня для свого пристрою може викликати гальма або вильоти</string>
<string name="title_seekbar_bitrate">Виберіть бітрейт відео</string>
<string name="summary_seekbar_bitrate">Низький бітрейт зменшить зависання. Збільшення бітрейта поліпшить якість зображення.</string>
<string name="title_checkbox_stretch_video">Розтягувати відео на весь екран</string>
<string name="title_checkbox_disable_warnings">Відключити повідомлення з попередженнями</string>
<string name="summary_checkbox_disable_warnings">Вимкнути екранні попередження про з\'єднання під час трансляції</string>
<string name="category_audio_settings">Аудіо Налаштування</string>
<string name="title_audio_config_list">Конфігурація об\'ємного звуку</string>
<string name="category_basic_settings">Загальні налаштування</string>
<string name="title_resolution_list">Роздільна здатність</string>
<string name="summary_resolution_list">Вибір надто високого значення для свого пристрою може викликати сповільнення на нешвидких мережах, або вильоти на менш потужних пристроях.</string>
<string name="title_seekbar_bitrate">Швидкість потоку відео</string>
<string name="summary_seekbar_bitrate">Збільшіть для якіснішої картинки. Зменшіть задля кращої продуктивності на повільних мережах.</string>
<string name="title_checkbox_stretch_video">Розтягнути відео на весь екран</string>
<string name="title_checkbox_disable_warnings">Вимкнути попередження</string>
<string name="summary_checkbox_disable_warnings">Вимкнути мережні попередження під час трансляції</string>
<string name="category_audio_settings">Налаштування авдіо</string>
<string name="title_audio_config_list">Конфігурація об\'ємного звуку</string>
<string name="summary_audio_config_list">Увімкнути 5.1 або 7.1 об\'ємний звук для систем домашнього кінотеатру</string>
<string name="title_checkbox_multi_controller">Підтримка декількох контролерів</string>
<string name="summary_checkbox_multi_controller">Коли вимкнено, всі контролери визначаються як один</string>
<string name="title_seekbar_deadzone">Регулювати мертву зону аналогового стіку</string>
<string name="summary_checkbox_multi_controller">Коли вимкнено, усі контролери працюють як один</string>
<string name="title_seekbar_deadzone">Змінити мертву зону аналогового соску</string>
<string name="suffix_seekbar_deadzone">%</string>
<string name="title_checkbox_xb1_driver">Драйвер контролерів Xbox 360/One</string>
<string name="summary_checkbox_xb1_driver">Увімкнути вбудований USB драйвер для пристроїв без власної підтримки контролерів Xbox</string>
<string name="title_checkbox_xb1_driver">Драйвер для контролерів Xbox 360/One</string>
<string name="summary_checkbox_xb1_driver">Вмикає вбудований USB драйвер для пристроїв без власної підтримки контролерів Xbox</string>
<string name="category_ui_settings">Налаштування інтерфейсу</string>
<string name="title_language_list">Мова</string>
<string name="summary_language_list">Мова, яка буде використовуватися в Moonlight</string>
<string name="title_checkbox_small_icon_mode">Використовувати маленькі іконки</string>
<string name="summary_checkbox_small_icon_mode">Використовувати маленькі іконки в сітці для відображення більшої кількості елементів на екрані</string>
<string name="category_host_settings">Налаштування Хоста</string>
<string name="summary_checkbox_small_icon_mode">Використовувати маленькі іконки в сітці додатків, для відображення більшої кількості елементів на екрані</string>
<string name="category_host_settings">Налаштування хоста</string>
<string name="title_checkbox_enable_sops">Оптимізувати ігрові налаштування</string>
<string name="summary_checkbox_enable_sops">Дозволити GFE змінювати налаштування ігор для оптимальної трансляції</string>
<string name="title_checkbox_host_audio">Програвати звук на ПК</string>
<string name="summary_checkbox_host_audio">Програвати звук на комп\'ютері і поточному пристрої</string>
<string name="category_advanced_settings">Розширені Налаштування</string>
<string name="title_checkbox_host_audio">Програвати звук на пристрої хоста</string>
<string name="summary_checkbox_host_audio">Програвати звук на пристроях хоста та клієнта</string>
<string name="category_advanced_settings">Розширені налаштування</string>
<string name="title_video_format">Змінити налаштування HEVC</string>
<string name="summary_video_format">HEVC знижує вимоги до пропускної здатності, але вимагає дуже нового пристрою</string>
<string name="category_on_screen_controls_settings">Налаштування дисплею з кнопками</string>
<string name="title_checkbox_show_onscreen_controls">Показувати екранні кнопки</string>
<string name="summary_checkbox_show_onscreen_controls">Відображати оверлей віртуального контролера на сенсорному екрані</string>
<string name="title_only_l3r3">Показувати тільки L3 і R3</string>
<string name="summary_only_l3r3">Приховувати всі екранні кнопки крім L3 і R3</string>
<string name="scut_deleted_pc">ПК видалений</string>
<string name="scut_not_paired">ПК не сполучений</string>
<string name="help_loading_title">Перегляд Допомоги</string>
<string name="summary_video_format">HEVC знижує вимоги мережі, даючи можливість транслювати на повільних мережах але, вимагає нового пристрою з підтримкою цієї системи</string>
<string name="category_on_screen_controls_settings">Налаштування екранних ґудзиків</string>
<string name="title_checkbox_show_onscreen_controls">Показувати екранні ґудзики</string>
<string name="summary_checkbox_show_onscreen_controls">Відображати віртуальні ґудзики контролера на екрані</string>
<string name="title_only_l3r3">Показувати тільки L3 та R3</string>
<string name="summary_only_l3r3">Приховувати всі віртуальні ґудзики окрім L3 та R3</string>
<string name="scut_deleted_pc">Пристрій видалено</string>
<string name="scut_not_paired">Пристрій не сполучений</string>
<string name="help_loading_title">Перегляд допомоги</string>
<string name="help_loading_msg">Завантаження сторінки допомоги…</string>
<string name="pair_already_in_progress">Сполучення вже в процесі</string>
<string name="help">Допомога</string>
<string name="applist_connect_msg">Підключення до ПК</string>
<string name="title_decoding_error">Збій відео декодера</string>
<string name="message_decoding_error">Стався збій Moonlight через проблеми з відео декодером даного пристрою. Спробуйте змінити налаштування трансляції якщо збої будуть продовжуватися.</string>
<string name="title_decoding_reset">Відео Налаштування Скинуті</string>
<string name="message_decoding_reset">Відео декодер Вашого пристрою давав збої з вибраними налаштуваннями. Налаштування трансляції були скинуті до значень за замовчуванням.</string>
<string name="applist_connect_msg">Підключення до пристрою</string>
<string name="title_decoding_error">Збій відео розцифрувача</string>
<string name="message_decoding_error">Стався збій Moonlight через несумітність з відео розцифрувачем даного пристрою. Спробуйте змінити налаштування трансляції якщо збої продовжуватимуться.</string>
<string name="title_decoding_reset">Налаштування відео скинуті</string>
<string name="message_decoding_reset">Відео розцифрувач вашого пристрою продовжує давати збої з поточними налаштуваннями трансляції. Налаштування трансляції були скинуті до значень за замовчуванням.</string>
<string name="error_usb_prohibited">USB доступ заборонений адміністратором пристрою. Перевірте налаштування Knox або MDM.</string>
<string name="addpc_wrong_sitelocal">Адреса вказана невірно. Ви повинні ввести публічну IP-адресу Вашого роутера для передачі через інтернет.</string>
<string name="title_checkbox_enable_pip">Увімкнути перегляд у режимі \"Картинка в картинці\"</string>
<string name="addpc_wrong_sitelocal">Вказана адреса неправильна. Ви повинні ввести публічну IP-адресу вашого мережника (роутера) для передачі через інтернет.</string>
<string name="title_checkbox_enable_pip">Увімкнути режим перегляду \"Картинка в картинці\"</string>
<string name="summary_checkbox_enable_pip">Дозволяє переглядати трансляцію (але не керувати нею) під час роботи в інших додатках</string>
<string name="title_checkbox_usb_bind_all">Відхилити підтримку контролерів Android</string>
<string name="summary_checkbox_usb_bind_all">Змушує USB драйвер Moonlight взяти на себе роботу з усіма підтримуваними Xbox геймпадами</string>
<string name="title_checkbox_mouse_emulation">Емуляція миші на геймпаді</string>
<string name="summary_checkbox_mouse_emulation">Довге натиснення кнопки Start перемкне геймпад в режим миші</string>
<string name="title_reset_osc">Скинути схему розташування екранних кнопок</string>
<string name="title_checkbox_usb_bind_all">Вимкнути рідну підтримку Xbox контролерів від Андроїда</string>
<string name="summary_checkbox_usb_bind_all">Використовувати USB драйвер Moonlight для усіх підтриманих контролерів, навіть якщо існує рідна підтримка</string>
<string name="title_checkbox_mouse_emulation">Емуляція миші через контролер</string>
<string name="summary_checkbox_mouse_emulation">Довге натиснення ґудзика Start, перемкне контролер в режим миші</string>
<string name="title_reset_osc">Скинути власне розташування ґудзиків на екрані</string>
<string name="summary_reset_osc">Повертає всі екранні елементи керування до їх розташуванням за замовчуванням</string>
<string name="dialog_title_reset_osc">Скинути Схему</string>
<string name="dialog_text_reset_osc">Ви впевнені що хочете видалити збережену схему розташування кнопок?</string>
<string name="dialog_title_reset_osc">Скинути розташування</string>
<string name="dialog_text_reset_osc">Ви впевнені що хочете видалити збережене розташування ґудзиків\?</string>
<string name="toast_reset_osc_success">Екранні елементи керування повернуті до положень за замовчуванням</string>
<string name="title_disable_frame_drop">Ніколи не пропускати кадри</string>
<string name="summary_disable_frame_drop">Може зменшити мікрозависання на деяких пристроях, але також збільшити затримку</string>
<string name="summary_disable_frame_drop">Може зменшити мікрозависання на деяких пристроях але, також збільшити затримку</string>
<string name="title_enable_hdr">Увімкнути HDR (Експериментально)</string>
<string name="summary_enable_hdr">Транслювати в HDR якщо гра і GPU комп\'ютера підтримують це. HDR вимагає відеокарти GTX 1000 серії або більш нової.</string>
<string name="summary_enable_hdr">Транслювати в HDR якщо гра та відео карта на пристрої хоста підтримують це. HDR вимагає відеокарти серії GTX 1000 або новіше.</string>
<string name="title_checkbox_vibrate_osc">Увімкнути вібрацію</string>
<string name="title_fps_list">Частота кадрів</string>
<string name="applist_menu_details">Деталі</string>
<string name="applist_menu_scut">Створити ярлик</string>
<string name="category_input_settings">Налаштування введення</string>
<string name="title_checkbox_touchscreen_trackpad">Використовувати сенсорний екран як трекпад</string>
<string name="summary_checkbox_touchscreen_trackpad">Якщо увімкнено, сенсорний екран працює як трекпад. Якщо його вимкнено, сенсорний екран безпосередньо керує курсором миші.</string>
<string name="delete_pc_msg">Ви впевнені що хочете видалити цей ПК?</string>
<string name="title_checkbox_touchscreen_trackpad">Використовувати сенсорний екран як пальцевід</string>
<string name="summary_checkbox_touchscreen_trackpad">Якщо увімкнено, сенсорний екран працює як ноутбуковий пальцевід. Якщо вимкнено, безпосередньо керує вказівником миші.</string>
<string name="delete_pc_msg">Ви впевнені що хочете видалити цей пристрій\?</string>
<string name="pcview_menu_details">Деталі</string>
<string name="poor_connection_msg">Слабке з\'єднання з ПК</string>
<string name="poor_connection_msg">Слабке з\'єднання з пристроєм</string>
<string name="title_details">Деталі</string>
<string name="title_enable_perf_overlay">Увімкнути відображення статистики</string>
<string name="title_unlock_fps">Розблокувати всі можливі частоти оновлення</string>
<string name="title_unlock_fps">Розблокувати всі можливі частоти кадрів</string>
<string name="applist_details_id">ID додатку:</string>
<string name="title_checkbox_vibrate_fallback">Емуляція вібровіддачі</string>
<string name="summary_checkbox_vibrate_osc">Вібрація пристрою для емуляції вібровіддачі при екранному управлінні</string>
<string name="summary_checkbox_vibrate_fallback">Вібрувати пристрій для емуляції вібровіддачі для геймпадов без підтримки вібрації</string>
<string name="summary_checkbox_mouse_nav_buttons">Включення цієї опції може привести до неправильної роботи правої кнопки миші на деяких пристроях</string>
<string name="title_checkbox_flip_face_buttons">Відкідні кнопки</string>
<string name="summary_checkbox_flip_face_buttons">Перемикає лицьові кнопки A/B і X/Y для геймпадів та екранних елементів керування</string>
<string name="scut_pc_not_found">ПК не знайдено</string>
<string name="unable_to_pin_shortcut">Поточний лаунчер не дозволяє створювати закріплені ярлики</string>
<string name="title_checkbox_mouse_nav_buttons">Увімкнути кнопки вперед і назад для миші</string>
<string name="slow_connection_msg">Повільне підключення до ПК\nЗменшити бітрейт</string>
<string name="summary_unlock_fps">Трансляція зі швидкістю 90 або 120 кадрів в секунду може зменшити затримку на пристроях високого класу, але може викликати затримки або збій на пристроях без підтримки цього функціоналу</string>
<string name="summary_enable_perf_overlay">Відображення накладення на екрані з інформацією про продуктивність під час трансляції в режимі реального часу</string>
<string name="perf_overlay_decoder">Декодер: %1$s</string>
<string name="summary_checkbox_vibrate_fallback">Вібрує пристрій для емуляції вібровіддачі, якщо під\'єднаний контролер не підтримує її</string>
<string name="summary_checkbox_mouse_nav_buttons">Включення цієї опції може привести до неправильної роботи правої клавіші миші на деяких пристроях</string>
<string name="title_checkbox_flip_face_buttons">Перевернути ґудзики</string>
<string name="summary_checkbox_flip_face_buttons">Перемикає ґудзики A/B та X/Y для контролерів та екранних елементів керування</string>
<string name="scut_pc_not_found">Пристрій не знайдено</string>
<string name="unable_to_pin_shortcut">Поточний запускач не дозволяє створювати закріплені ярлики.</string>
<string name="title_checkbox_mouse_nav_buttons">Увімкнути ґудзики «вперед» та «назад» для миші</string>
<string name="slow_connection_msg">Повільне підключення
\nЗменшіть швидкість потоку</string>
<string name="summary_unlock_fps">Трансляція зі швидкістю 90 або 120 кадрів на секунду може зменшити затримку на швидких пристроях але, може викликати затримки або збої на слабших</string>
<string name="summary_enable_perf_overlay">Відображає статистику продуктивності під час трансляції, в режимі реального часу</string>
<string name="perf_overlay_decoder">Розцифрувач: %1$s</string>
<string name="perf_overlay_incomingfps">Вхідна частота кадрів з мережі: %1$.2f FPS</string>
<string name="perf_overlay_renderingfps">Частота кадрів під час рендерінгу: %1$.2f FPS</string>
<string name="perf_overlay_netdrops">Відкинутих кадрів вашою мережею: %1$.2f%%</string>
<string name="perf_overlay_dectime">Середній час декодування: %1$.2f ms</string>
<string name="summary_fps_list">Збільшення для більш плавного відео потоку. Зменшіть для кращої продуктивності на більш слабких пристроях.</string>
<string name="scut_invalid_uuid">Зазначений ПК недійсний</string>
<string name="scut_invalid_app_id">Зазначений додаток недійсне</string>
<string name="title_osc_opacity">Змінити непрозорість екранних елементів керування</string>
<string name="perf_overlay_renderingfps">Частота кадрів при відтворенні: %1$.2f FPS</string>
<string name="perf_overlay_netdrops">Кадри втрачені вашою мережею: %1$.2f%%</string>
<string name="perf_overlay_dectime">Середній час розцифрування: %1$.2f мс</string>
<string name="summary_fps_list">Збільшіть для плавнішого відео потоку. Зменшіть для кращої продуктивності на повільних пристроях.</string>
<string name="scut_invalid_uuid">Зазначений пристрій недійсний</string>
<string name="scut_invalid_app_id">Зазначений додаток недійсний</string>
<string name="title_osc_opacity">Змінити прозорість екранних елементів керування</string>
<string name="summary_osc_opacity">Зробити екранні елементи керування більш/менш прозорими</string>
<string name="dialog_title_osc_opacity">Зміна непрозорості</string>
<string name="dialog_title_osc_opacity">Зміна прозорості</string>
<string name="suffix_osc_opacity">%</string>
<string name="title_enable_post_stream_toast">Показувати затримку після трансляції</string>
<string name="summary_enable_post_stream_toast">Вивести інформаційне повідомлення про затримку після закінчення потоку</string>
</resources>
<string name="title_enable_post_stream_toast">Статистика затримки після трансляції</string>
<string name="summary_enable_post_stream_toast">Показувати статистику затримки після закінчення трансляції</string>
<string name="early_termination_error">Щось пішло не так на пристрої хоста при початку трансляції.
\n
\nВпевніться що у вас не відкриті додатки з DRM змістом на пристрої хоста. Ви також можете спробувати перезапустити його.
\n
\nЯкщо проблема не виправиться, спробуйте перевстановити драйвера для вашої відео карти та, GeForce Experience якщо встановлено.</string>
<string name="nettest_text_success">Схоже що ваша мережа не блокує Moonlight. Якщо у вас й надалі проблеми з підключенням, перевірте налаштування брандмауера.
\n
\nЯкщо ви намагаєтеся транслювати через Інтернет, встановіть на своєму пристрої Moonlight Internet Hosting Tool, та запустіть випробування мережі щоб перевірити ваше з\'єднання до Інтернету.</string>
<string name="resolution_prefix_native_fullscreen">Рідний повноекранний</string>
<string name="resolution_prefix_native">Рідна</string>
<string name="suffix_seekbar_bitrate_mbps">Мб/с</string>
<string name="text_native_res_dialog">Режими рідної роздільної здатності не підтримуються офіційно через GeForce Experience, і тому не змінять роздільну здатність хоста на ту що в клієнта автоматично. Вам потрібно буде виставити її самостійно у грі.
\n
\nЯкщо ви вирішили створити власну роздільну здатність у панелі керування NVIDIA переконайтеся, що ви прочитали та зрозуміли попередження NVIDIA щодо можливих пошкоджень монітора, нестабільності пристрою та інших потенційних проблем.
\n
\nМи не несемо відповідальності за будь-які проблеми, спричинені створенням власних роздільних здатностей на ваших пристроях.
\n
\nЗрештою, пристрої клієнта чи хоста можуть не підтримувати трансляції рідною роздільною здатністю. Якщо це не працює на вашому пристрої, вам на жаль просто не пощастило.</string>
<string name="title_native_res_dialog">Застереження про рідну роздільну здатність</string>
<string name="applist_menu_hide_app">Сховати додаток</string>
<string name="perf_overlay_netlatency">Середня затримка мережі: %1$d мс (розбіжність %2$d мс)</string>
<string name="perf_overlay_streamdetails">Відео трансл: %1$s %2$.2f FPS</string>
<string name="check_ports_msg">Перевірте правила брандмауера та переадресації для наступних портів:</string>
<string name="no_frame_received_error">Здається, ваше мережеве з\'єднання човпає. Спробуйте зменшити швидкість потоку (бітрейт) чи переключіть пристрій на швидшу мережу.</string>
<string name="no_video_received_error">Не отримано відео від хоста.</string>
<string name="video_decoder_init_failed">Не вдалося запустити відео розцифрувач. Ваш пристрій може не підтримувати розмір екрану чи частоту кадрів.</string>
<string name="nettest_text_blocked">Поточне мережеве з’єднання вашого пристрою блокує Moonlight. Трансляції через Інтернет можуть не працювати на цієї мережі.</string>
<string name="nettest_text_failure">Поточне мережеве з’єднання вашого пристрою блокує Moonlight. Трансляції через Інтернет можуть не працювати на цієї мережі.
\n
\nНаступні мережеві порти були заблоковані:
\n</string>
<string name="nettest_text_inconclusive">Не вдалося перевірити мережу, тому що усі мережо-перевірочні сервери Moonlight недосяжні. Перевірте ваше з\'єднання з інтернетом та спробуйте знову.</string>
<string name="nettest_title_done">Перевірка мережі завершена</string>
<string name="nettest_text_waiting">Moonlight перевіряє мережеве з\'єднання щоб визначити чи заблокований NVIDIA GameStream.
\n
\nЦе займе кілька секунд…</string>
<string name="nettest_title_waiting">Перевіряємо з\'єднання</string>
<string name="pcview_menu_test_network">Перевірити мережеве з\'єднання</string>
<string name="pcview_menu_header_unknown">Оновлення</string>
<string name="pcview_menu_header_offline">Поза мережею</string>
<string name="pcview_menu_header_online">В мережі</string>
<!-- Array strings -->
<string name="videoformat_hevcauto">Використовувати HEVC тільки якщо безпечно</string>
<string name="videoformat_hevcalways">Завжди використовувати HEVC якщо доступно</string>
<string name="videoformat_hevcnever">Ніколи не використовувати HEVC</string>
<string name="title_frame_pacing">Швидкість кадрів відео</string>
<string name="summary_frame_pacing">Укажіть баланс відео затримки та плавності</string>
<string name="pacing_latency">Перевага найменшій затримці</string>
<string name="pacing_smoothness">Перевага плавному відео (може значно збільшити затримку)</string>
<string name="pacing_balanced">Збалансовано</string>
<string name="resolution_360p">360p</string>
<string name="resolution_480p">480p</string>
<string name="resolution_720p">720p</string>
<string name="resolution_1080p">1080p</string>
<string name="resolution_1440p">1440p</string>
<string name="resolution_4k">4K</string>
<string name="fps_30">30 кадрів/сек</string>
<string name="fps_60">60 кадрів/сек</string>
<string name="fps_90">90 кадрів/сек</string>
<string name="fps_120">120 кадрів/сек</string>
<string name="audioconf_stereo">Стерео</string>
<string name="audioconf_51surround">5.1 Об\'ємний Звук</string>
<string name="audioconf_71surround">7.1 Об\'ємний Звук</string>
</resources>
+22
View File
@@ -206,4 +206,26 @@
<string name="scut_deleted_pc">PC đã bị xoá</string>
<string name="perf_overlay_netlatency">Độ trễ mạng trung bình: %1$d ms (sai số: %2$d ms)</string>
<string name="perf_overlay_streamdetails">Tốc độ khung hình: %1$s %2$.2f FPS</string>
<string name="resolution_prefix_native_fullscreen">Toàn màn hình theo hệ thống</string>
<string name="title_frame_pacing">Nhịp độ khung hình video</string>
<string name="summary_frame_pacing">Chỉ ra cách cân bằng giữa độ trễ video và độ mượt mà</string>
<string name="pacing_latency">Ưu tiên độ trễ thấp nhất</string>
<string name="pacing_balanced">Cân bằng</string>
<string name="pacing_smoothness">Ưu tiên video mượt nhất (có thể tăng độ trễ đáng kể)</string>
<string name="resolution_480p">480p</string>
<string name="fps_120">120 FPS</string>
<string name="resolution_360p">360p</string>
<string name="resolution_720p">720p</string>
<string name="resolution_1080p">1080p</string>
<string name="resolution_1440p">1440p</string>
<string name="resolution_4k">4K</string>
<string name="fps_30">30 FPS</string>
<string name="fps_60">60 FPS</string>
<string name="fps_90">90 FPS</string>
<string name="audioconf_stereo">Stereo</string>
<string name="audioconf_51surround">Âm thanh vòm 5.1</string>
<string name="audioconf_71surround">Âm thanh vòm 7.1</string>
<string name="videoformat_hevcauto">Chỉ sử dụng HEVC nếu ổn định</string>
<string name="videoformat_hevcalways">Luôn sử dụng HEVC (có thể gây crash)</string>
<string name="videoformat_hevcnever">Không bao giờ sử dụng HEVC</string>
</resources>
-21
View File
@@ -1,21 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="decoder_names">
<item>自动选择解码器</item>
<item>强制软解</item>
<item>强制硬解</item>
</string-array>
<string-array name="video_format_names">
<item>如果稳定才使用HEVC</item>
<item>强制使用HEVC(不稳定)</item>
<item>不使用HEVC</item>
</string-array>
<string-array name="audio_config_names">
<item>立体声</item>
<item>5.1环绕声</item>
<item>7.1环绕声</item>
</string-array>
</resources>
@@ -217,4 +217,23 @@
<string name="nettest_text_blocked">您设备当前的网络连接拦截了Moonlight。连接到该网络时可能无法通过互联网串流。</string>
<string name="perf_overlay_netlatency">平均网络延迟: %1$d ms (抖动: %2$d ms)</string>
<string name="perf_overlay_streamdetails">视频流: %1$s %2$.2f FPS</string>
<string name="resolution_prefix_native_fullscreen">本地全屏</string>
<!-- Array strings -->
<string name="audioconf_stereo">立体声</string>
<string name="audioconf_51surround">5.1环绕声</string>
<string name="audioconf_71surround">7.1环绕声</string>
<string name="videoformat_hevcauto">如果稳定才使用HEVC</string>
<string name="videoformat_hevcalways">强制使用HEVC(不稳定)</string>
<string name="videoformat_hevcnever">不使用HEVC</string>
<string name="title_frame_pacing">视频帧速调节</string>
<string name="resolution_360p">360p</string>
<string name="resolution_480p">480p</string>
<string name="resolution_1440p">1440p</string>
<string name="resolution_4k">4K</string>
<string name="fps_30">30 FPS</string>
<string name="fps_60">60 FPS</string>
<string name="fps_90">90 FPS</string>
<string name="fps_120">120 FPS</string>
<string name="resolution_1080p">1080p</string>
<string name="resolution_720p">720p</string>
</resources>
-21
View File
@@ -1,21 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="decoder_names">
<item>自動選擇解碼器</item>
<item>強制軟解</item>
<item>強制硬解</item>
</string-array>
<string-array name="video_format_names">
<item>如果穩定才使用HEVC</item>
<item>強制使用HEVC(不穩定)</item>
<item>不使用HEVC</item>
</string-array>
<string-array name="audio_config_names">
<item>身歷聲</item>
<item>5.1環繞聲</item>
<item>7.1環繞聲</item>
</string-array>
</resources>
+176 -151
View File
@@ -5,216 +5,241 @@
<string name="scut_not_paired"> 電腦未配對 </string>
<string name="scut_pc_not_found"> 電腦未找到 </string>
<string name="scut_invalid_uuid"> 提供的電腦無效 </string>
<string name="scut_invalid_app_id"> 提供的App無效 </string>
<string name="scut_invalid_app_id">提供的應用程式無效</string>
<!-- Help strings -->
<string name="help_loading_title"> 查看幫助 </string>
<string name="help_loading_msg"> 正在載入明頁面…… </string>
<string name="help_loading_title">說明檢視器</string>
<string name="help_loading_msg">正在載入明頁面……</string>
<!-- PC view menu entries -->
<string name="pcview_menu_app_list"> 流覽遊戲列表 </string>
<string name="pcview_menu_app_list">檢視遊戲清單</string>
<string name="pcview_menu_pair_pc"> 和電腦配對 </string>
<string name="pcview_menu_unpair_pc"> 取消配對 </string>
<string name="pcview_menu_send_wol">送 Wake-On-LAN 請求 </string>
<string name="pcview_menu_send_wol">送 Wake-On-LAN 請求</string>
<string name="pcview_menu_delete_pc"> 刪除電腦 </string>
<string name="pcview_menu_details"> 查看詳情 </string>
<string name="pcview_menu_details">檢視詳細資料</string>
<!-- Pair messages -->
<string name="pairing"> 配對中…… </string>
<string name="pair_pc_offline"> 電腦離線中 </string>
<string name="pair_pc_ingame">電腦正在遊戲中,在配對之前你必須先退出遊戲。</string>
<string name="pair_pairing_title"> 配對中 </string>
<string name="pair_pairing_msg"> 請在目標電腦上輸入以下PIN碼: </string>
<string name="pair_incorrect_pin"> PIN碼錯誤 </string>
<string name="pair_pairing_msg">請在目標電腦上輸入以下 PIN 碼:</string>
<string name="pair_incorrect_pin">PIN 碼錯誤</string>
<string name="pair_fail"> 配對失敗 </string>
<string name="pair_already_in_progress"> 配對中,請稍候 </string>
<!-- WOL messages -->
<string name="wol_pc_online"> 電腦線上中 </string>
<string name="wol_no_mac"> 無法喚醒電腦因為GFE沒有返回MAC地址 </string>
<string name="wol_no_mac">無法喚醒電腦因為 GFE 沒有傳送 MAC 位址</string>
<string name="wol_waking_pc"> 喚醒電腦中…… </string>
<string name="wol_waking_msg">喚醒電腦需要一些時間。如果電腦沒有喚醒,請確保Wake-On-LAN設置無誤。</string>
<string name="wol_fail"> 無法發送Wake-On-LAN資料包 </string>
<string name="wol_waking_msg">喚醒電腦需要一些時間。如果電腦沒有喚醒,請確保 Wake-On-LAN 設定無誤。</string>
<string name="wol_fail">無法傳送 Wake-On-LAN 資料包</string>
<!-- Unpair messages -->
<string name="unpairing"> 取消配對中…… </string>
<string name="unpair_success"> 成功取消配對 </string>
<string name="unpair_fail"> 無法配對 </string>
<string name="unpair_error"> 設備沒有配對過 </string>
<string name="unpair_error">裝置沒有配對過</string>
<!-- Errors -->
<string name="error_pc_offline"> 電腦離線中 </string>
<string name="error_manager_not_running">ComputerManager服務未行。請稍等幾秒或重啟App</string>
<string name="error_manager_not_running">ComputerManager 服務未行。請稍等幾秒或重啟應用程式</string>
<string name="error_unknown_host"> 無法解析主機位址 </string>
<string name="error_404">GFE返回了HTTP 404 錯誤。確保你的電腦顯卡支援串流。使用遠端桌面軟體同樣會引起此錯誤,請嘗試重啟電腦或重GFE。</string>
<string name="title_decoding_error"> 視頻解碼器崩潰 </string>
<string name="message_decoding_error"> 由於與該設備的視解碼器不相容,Moonlight已崩潰。確保你電腦上的GFE已更新至最新版本,如果崩潰繼續,請嘗試調整串流設置。 </string>
<string name="title_decoding_reset"> 重置視頻設置 </string>
<string name="message_decoding_reset"> 由於設備的視解碼器在你選擇的串流設上持續崩潰,已重你的串流設置。 </string>
<string name="error_usb_prohibited"> 設備管理員已禁止USB訪問。請檢查您的Knox或MDM設置。 </string>
<string name="unable_to_pin_shortcut"> 您當前的桌面啟動器不允許創建長按子功能表。 </string>
<string name="error_404">GFE 返回了 HTTP 404 錯誤。確保你的電腦顯卡支援串流。使用遠端桌面軟體同樣會引起此錯誤,請嘗試重啟電腦或重新安裝 GFE。</string>
<string name="title_decoding_error">視訊解碼器崩潰</string>
<string name="message_decoding_error">由於與該裝置的視解碼器不相容,Moonlight 已崩潰。確保你電腦上的 GFE 已更新至最新版本,如果崩潰繼續,請嘗試調整串流設定。</string>
<string name="title_decoding_reset">重設視訊設定</string>
<string name="message_decoding_reset">由於裝置的視解碼器在你選擇的串流設上持續崩潰,已重你的串流設定。</string>
<string name="error_usb_prohibited">裝置管理員已禁止 USB 訪問。請檢查您的 Knox 或 MDM 設定。</string>
<string name="unable_to_pin_shortcut">您目前的啟動器不允許創建釘選的捷徑。</string>
<!-- Start application messages -->
<string name="conn_establishing_title"> 建立連接中 </string>
<string name="conn_establishing_msg"> 啟動連接中 </string>
<string name="conn_metered"> 警告:你正在使用動網路連接! </string>
<string name="conn_client_latency"> 平均每解碼延</string>
<string name="conn_client_latency_hw"> 硬體解碼器延</string>
<string name="conn_hardware_latency"> 硬體解碼器平均延</string>
<string name="conn_establishing_title">建立連線中</string>
<string name="conn_establishing_msg">啟動連線中</string>
<string name="conn_metered">警告:你正在使用動網路連線!</string>
<string name="conn_client_latency">平均每個影格解碼延</string>
<string name="conn_client_latency_hw">硬體解碼器延</string>
<string name="conn_hardware_latency">硬體解碼器平均延</string>
<string name="conn_starting">啟動中</string>
<string name="conn_error_title"> 連接錯誤 </string>
<string name="conn_error_title">連線錯誤</string>
<string name="conn_error_msg"> 啟動失敗 </string>
<string name="conn_terminated_title"> 連接終結 </string>
<string name="conn_terminated_msg"> 連接已被終結 </string>
<string name="conn_terminated_title">連線中止</string>
<string name="conn_terminated_msg">連線已被中止</string>
<!-- General strings -->
<string name="ip_hint"> 串流電腦的IP地址 </string>
<string name="searching_pc">正在搜尋運行GAMESTREAM的電腦……
<string name="ip_hint">串流電腦的 IP 位址</string>
<string name="searching_pc">正在搜尋執行 GAMESTREAM 的電腦……
\n
\n請確保GFE SHIELD設置裡的GAMESTREAM已開啟</string>
\n請確保 GFE SHIELD 設定裡的 GAMESTREAM 已啟用</string>
<string name="yes"> 確定 </string>
<string name="no"> 取消 </string>
<string name="lost_connection"> 與電腦失去連</string>
<string name="title_details"> 詳情 </string>
<string name="help"> 幫助 </string>
<string name="lost_connection">與電腦失去連</string>
<string name="title_details">詳細資料</string>
<string name="help">說明</string>
<string name="delete_pc_msg"> 你確定要刪除這台電腦? </string>
<string name="slow_connection_msg"> 與電腦連過慢 \n 請降低碼率 </string>
<string name="poor_connection_msg"> 與電腦連接不良 </string>
<string name="perf_overlay_decoder">解碼器: %1$s</string>
<string name="perf_overlay_incomingfps">網路接收幀數: %1$.2f FPS</string>
<string name="perf_overlay_renderingfps">渲染幀數: %1$.2f FPS</string>
<string name="perf_overlay_netdrops">網路丟失幀: %1$.2f%%</string>
<string name="perf_overlay_dectime">平均解碼時間: %1$.2f ms</string>
<string name="slow_connection_msg">與電腦連過慢
\n 請降低位元速率</string>
<string name="poor_connection_msg">與電腦連線不良</string>
<string name="perf_overlay_decoder">解碼器:%1$s</string>
<string name="perf_overlay_incomingfps">網路接收影格數:%1$.2f FPS</string>
<string name="perf_overlay_renderingfps">渲染影格數:%1$.2f FPS</string>
<string name="perf_overlay_netdrops">網路丟失影格:%1$.2f%%</string>
<string name="perf_overlay_dectime">平均解碼時間:%1$.2f ms</string>
<!-- AppList activity -->
<string name="applist_connect_msg"> 正在連電腦…… </string>
<string name="applist_menu_resume"> 恢復串流 </string>
<string name="applist_menu_quit"> 退出串流 </string>
<string name="applist_menu_quit_and_start"> 退出當前遊戲並開始這個遊戲 </string>
<string name="applist_connect_msg">正在連電腦……</string>
<string name="applist_menu_resume">恢復工作階段</string>
<string name="applist_menu_quit">結束工作階段</string>
<string name="applist_menu_quit_and_start">結束目前遊戲並開始這個遊戲</string>
<string name="applist_menu_cancel"> 取消 </string>
<string name="applist_menu_details"> 查看詳情 </string>
<string name="applist_menu_scut"> 創建快捷方式 </string>
<string name="applist_menu_tv_channel"> 添加到頻道 </string>
<string name="applist_refresh_title"> 遊戲列表 </string>
<string name="applist_refresh_msg"> 刷新中…… </string>
<string name="applist_menu_details">檢視詳細資料</string>
<string name="applist_menu_scut">創建捷徑</string>
<string name="applist_menu_tv_channel">新增至頻道</string>
<string name="applist_refresh_title">遊戲清單</string>
<string name="applist_refresh_msg">重新整理中……</string>
<string name="applist_refresh_error_title"> 錯誤 </string>
<string name="applist_refresh_error_msg"> 獲取列表失敗 </string>
<string name="applist_quit_app"> 退出中 </string>
<string name="applist_quit_success"> 成功退出串流 </string>
<string name="applist_quit_fail"> 退出串流失敗 </string>
<string name="applist_quit_confirmation">您確定要退出當前遊戲?所有未存的資料將丟失。</string>
<string name="applist_refresh_error_msg">獲取遊戲清單失敗</string>
<string name="applist_quit_app">結束中</string>
<string name="applist_quit_success">結束成功</string>
<string name="applist_quit_fail">結束失敗</string>
<string name="applist_quit_confirmation">您確定要結束執行中的遊戲?所有未存的資料將丟失。</string>
<string name="applist_details_id">App ID</string>
<!-- Add computer manually activity -->
<string name="title_add_pc"> 手動添加電腦 </string>
<string name="msg_add_pc"> 正在連電腦…… </string>
<string name="addpc_fail">無法連至指定電腦。請確保所需埠沒有被防火牆阻止。</string>
<string name="addpc_success"> 成功添加電腦 </string>
<string name="addpc_unknown_host">無法解析電腦的IP位址,請確保IP位址輸入無誤。</string>
<string name="addpc_enter_ip">請輸入一個IP位址</string>
<string name="addpc_wrong_sitelocal"> 該位址似乎不正確。 您必須使用路由器的公共IP位址通過Internet進行串流。 </string>
<string name="title_add_pc">手動新增電腦</string>
<string name="msg_add_pc">正在連電腦……</string>
<string name="addpc_fail">無法連至指定電腦。請確保所需埠沒有被防火牆阻止。</string>
<string name="addpc_success">成功新增電腦</string>
<string name="addpc_unknown_host">無法解析電腦的 IP 位址,請確保 IP 位址輸入無誤。</string>
<string name="addpc_enter_ip">請輸入一個 IP 位址</string>
<string name="addpc_wrong_sitelocal">該位址似乎不正確。 您必須使用路由器的公共 IP 位址透過乙太網路進行串流。</string>
<!-- Preferences -->
<string name="category_basic_settings"> 基本設</string>
<string name="title_resolution_list"> 視頻解析度 </string>
<string name="summary_resolution_list">高解析度提升圖像清晰度。低解析度提升在低端設備和較慢網路中的串流體驗。</string>
<string name="title_fps_list"> 視頻幀數 </string>
<string name="summary_fps_list">高幀數提升視頻流流暢度。低幀數提升在低端設備中的串流體驗。</string>
<string name="title_seekbar_bitrate"> 視頻碼率 </string>
<string name="summary_seekbar_bitrate">高碼率提升圖像品質。低碼率提升在較慢網路中的串流體驗。</string>
<string name="title_unlock_fps"> 解鎖所有可用幀數 </string>
<string name="summary_unlock_fps">以90或120幀串流可能會減少在高端設備上的網路延,但會在不支援的設備上造成卡頓或崩潰</string>
<string name="title_checkbox_stretch_video"> 將畫面拉伸至全屏 </string>
<string name="title_checkbox_disable_warnings">用錯誤提示 </string>
<string name="summary_checkbox_disable_warnings"> 串流中禁用連接錯誤提示 </string>
<string name="title_checkbox_enable_pip">啟用畫中畫觀察模式</string>
<string name="summary_checkbox_enable_pip">允許多工時觀看串流畫面但不操作</string>
<string name="category_audio_settings"> 音訊設</string>
<string name="title_audio_config_list"> 環繞聲設置 </string>
<string name="summary_audio_config_list"> 為家庭院系統啟用5.1或7.1環繞聲 </string>
<string name="category_input_settings"> 輸入設</string>
<string name="title_checkbox_touchscreen_trackpad"> 將觸控作為觸控板使用 </string>
<string name="summary_checkbox_touchscreen_trackpad">如果啟用,則將觸控作為觸控板使用。 如果禁止,則觸控直接控制滑鼠游標。</string>
<string name="title_checkbox_multi_controller"> 自動測手</string>
<string name="summary_checkbox_multi_controller"> 禁用此項所有手將視為一個手</string>
<string name="title_checkbox_vibrate_fallback"> 用設備震動類比遊戲震動效果 </string>
<string name="summary_checkbox_vibrate_fallback"> 如果你的手不支援震動,則震動設備以類比遊戲震動效果 </string>
<string name="title_seekbar_deadzone"> 調整搖杆死區 </string>
<string name="category_basic_settings">基本設</string>
<string name="title_resolution_list">視訊解析度</string>
<string name="summary_resolution_list">高解析度提升圖像清晰度。低解析度提升在低效能裝置和較慢網路中的串流體驗。</string>
<string name="title_fps_list">視訊影格速率</string>
<string name="summary_fps_list">提高影格速率以獲得更順暢的視訊串流,降低可在低效能裝置上獲得更好的串流體驗。</string>
<string name="title_seekbar_bitrate">視訊位元速率</string>
<string name="summary_seekbar_bitrate">提高位元速率以提升圖像品質,降低可在較慢網路中獲得更好的串流體驗。</string>
<string name="title_unlock_fps">解鎖所有可用影格速率</string>
<string name="summary_unlock_fps"> 90 或 120 畫面更新率串流可能會減少在高效能裝置上的網路延,但會在不支援的裝置上造成卡頓或崩潰</string>
<string name="title_checkbox_stretch_video">將畫面延展至全螢幕</string>
<string name="title_checkbox_disable_warnings">用錯誤訊息</string>
<string name="summary_checkbox_disable_warnings">停用串流中連線錯誤訊息</string>
<string name="title_checkbox_enable_pip">啟用子母畫面觀察模式</string>
<string name="summary_checkbox_enable_pip">允許多工時檢視串流畫面 (但不操作)</string>
<string name="category_audio_settings">音訊設</string>
<string name="title_audio_config_list">環場音效組態</string>
<string name="summary_audio_config_list">為家庭電影院系統啟用 5.1 或 7.1 環場音效</string>
<string name="category_input_settings">輸入設</string>
<string name="title_checkbox_touchscreen_trackpad">將觸控式螢幕作為觸控板使用</string>
<string name="summary_checkbox_touchscreen_trackpad">如果啟用,則將觸控式螢幕作為觸控板使用。 如果停用,則觸控式螢幕直接控制滑鼠游標。</string>
<string name="title_checkbox_multi_controller">自動測手</string>
<string name="summary_checkbox_multi_controller">取消此項所有手將視為一個手</string>
<string name="title_checkbox_vibrate_fallback">用震動仿真遊戲低頻音</string>
<string name="summary_checkbox_vibrate_fallback">如果你的手不支援震動,則震動裝置以仿真遊戲低頻音</string>
<string name="title_seekbar_deadzone">調整類比搖杆死區</string>
<string name="suffix_seekbar_deadzone">%</string>
<string name="title_checkbox_xb1_driver">Xbox 360/One 手柄驅動 </string>
<string name="summary_checkbox_xb1_driver"> 為缺少原生Xbox手柄支援的設備啟用內USB驅動 </string>
<string name="title_checkbox_usb_bind_all"> 覆蓋安卓手柄支援 </string>
<string name="summary_checkbox_usb_bind_all"> 強制MoonlightUSB驅動接管所有受支持的Xbox手柄 </string>
<string name="title_checkbox_mouse_emulation"> 通過手柄類比滑鼠 </string>
<string name="summary_checkbox_mouse_emulation"> 長按開始鍵將手切換為滑鼠模式 </string>
<string name="title_checkbox_xb1_driver">Xbox 360/One USB 手把驅動程式</string>
<string name="summary_checkbox_xb1_driver">為缺少原生 Xbox 控制器支援的裝置啟用內USB 驅動程式</string>
<string name="title_checkbox_usb_bind_all">覆寫原生 Xbox 手把支援</string>
<string name="summary_checkbox_usb_bind_all">強制 MoonlightUSB 驅動程式接管所有受支援的原生 Xbox 控制器</string>
<string name="title_checkbox_mouse_emulation">透過手把仿真滑鼠</string>
<string name="summary_checkbox_mouse_emulation">長按開始鍵將手切換為滑鼠模式</string>
<string name="title_checkbox_mouse_nav_buttons"> 啟用前進後退滑鼠鍵 </string>
<string name="summary_checkbox_mouse_nav_buttons"> 在一些支援不佳的設備上啟用此項可能會使其右鍵失效 </string>
<string name="summary_checkbox_mouse_nav_buttons">在一些支援不佳的裝置上啟用此項可能會使其右鍵失效</string>
<string name="title_checkbox_flip_face_buttons">反轉技能鍵</string>
<string name="summary_checkbox_flip_face_buttons">為手和虛擬手柄調轉A/B和X/Y技能鍵</string>
<string name="category_on_screen_controls_settings"> 螢幕控制按鈕設</string>
<string name="title_checkbox_show_onscreen_controls"> 顯示幕控制按鈕 </string>
<string name="summary_checkbox_show_onscreen_controls"> 在觸控式螢幕上顯示一層虛擬手柄 </string>
<string name="summary_checkbox_flip_face_buttons">為手和虛擬控制器交換 A/B 和 X/Y 技能</string>
<string name="category_on_screen_controls_settings">螢幕控制按鈕設</string>
<string name="title_checkbox_show_onscreen_controls">顯示幕控制按鈕</string>
<string name="summary_checkbox_show_onscreen_controls">在觸控式螢幕上顯示一層虛擬控制器</string>
<string name="title_checkbox_vibrate_osc"> 啟用震動 </string>
<string name="summary_checkbox_vibrate_osc"> 使用螢幕控制按鈕時震動設備以類比遊戲震動效果 </string>
<string name="title_only_l3r3"> 只顯示L3R3 </string>
<string name="summary_only_l3r3"> 隱藏除L3R3外的所有虛擬按鈕 </string>
<string name="title_reset_osc"> 重置已保存的螢幕控制按鈕佈局 </string>
<string name="summary_reset_osc"> 重置所有螢幕控制按鈕為預設大小和位置 </string>
<string name="dialog_title_reset_osc"> 重新開機按鈕佈局 </string>
<string name="dialog_text_reset_osc"> 你確定要刪除所保存的螢幕按鈕佈局嗎? </string>
<string name="toast_reset_osc_success"> 螢幕按鈕佈局已經重</string>
<string name="category_ui_settings"> 介面設</string>
<string name="summary_checkbox_vibrate_osc">使用螢幕控制按鈕時震動裝置以仿真遊戲低頻音</string>
<string name="title_only_l3r3">只顯示 L3R3</string>
<string name="summary_only_l3r3">隱藏除 L3R3 外的所有虛擬按鈕</string>
<string name="title_reset_osc">重設已儲存的螢幕控制按鈕佈局</string>
<string name="summary_reset_osc">重設所有螢幕控制按鈕為預設大小和位置</string>
<string name="dialog_title_reset_osc">重設按鈕佈局</string>
<string name="dialog_text_reset_osc">你確定要刪除已儲存的螢幕按鈕佈局嗎?</string>
<string name="toast_reset_osc_success">螢幕按鈕佈局已經重</string>
<string name="category_ui_settings">介面設</string>
<string name="title_language_list"> 語言 </string>
<string name="summary_language_list"> 選擇Moonlight顯示的語言 </string>
<string name="summary_language_list">選擇 Moonlight 顯示的語言</string>
<string name="title_checkbox_small_icon_mode"> 使用小圖示 </string>
<string name="summary_checkbox_small_icon_mode"> 使用小圖示以在螢幕上顯示更多專案 </string>
<string name="category_host_settings"> 主機設</string>
<string name="title_checkbox_enable_sops">化遊戲設</string>
<string name="summary_checkbox_enable_sops"> 允許GFE為最佳串流效果自動更改遊戲設</string>
<string name="title_checkbox_host_audio"> 在電腦上播放聲音 </string>
<string name="summary_checkbox_host_audio"> 在電腦和本設備同時輸出聲音 </string>
<string name="category_advanced_settings"> 高級設置 </string>
<string name="title_disable_frame_drop"> 永不掉幀 </string>
<string name="summary_disable_frame_drop"> 可能會減少在一些設備上的卡頓,但會增加延</string>
<string name="title_video_format"> 更改HEVC設置 </string>
<string name="summary_video_format">HEVC能降低視頻寬需求,但需要較新的設備才能支援</string>
<string name="title_enable_hdr"> 啟用 HDR 實驗 </string>
<string name="summary_enable_hdr"> 當遊戲和顯卡支援時以HDR模式串流。 HDR需要GTX 1000系列或更高規格顯卡。 </string>
<string name="title_enable_perf_overlay"> 啟用性能資訊 </string>
<string name="summary_enable_perf_overlay"> 在串流中顯示即時能資訊 </string>
<string name="title_enable_post_stream_toast">串流完畢顯示延資訊</string>
<string name="summary_enable_post_stream_toast">串流結束後顯示延資訊</string>
<string name="title_osc_opacity">更改屏幕按鈕透明度</string>
<string name="dialog_title_osc_opacity">透明度</string>
<string name="summary_checkbox_small_icon_mode">使用小圖示以在螢幕上顯示更多應用程式</string>
<string name="category_host_settings">主機設</string>
<string name="title_checkbox_enable_sops">最佳化遊戲設</string>
<string name="summary_checkbox_enable_sops">允許 GFE 為最佳串流效果自動更改遊戲設</string>
<string name="title_checkbox_host_audio">在電腦上播放音訊</string>
<string name="summary_checkbox_host_audio">在電腦和本裝置同時輸出音訊</string>
<string name="category_advanced_settings">進階設定</string>
<string name="title_disable_frame_drop">永不丟失影格</string>
<string name="summary_disable_frame_drop">可能會減少在一些裝置上的卡頓,但會增加延</string>
<string name="title_video_format">變更 HEVC 設定</string>
<string name="summary_video_format">HEVC 能降低視頻寬需求,但需要較新的裝置才能支援</string>
<string name="title_enable_hdr">啟用 HDR (實驗性)</string>
<string name="summary_enable_hdr">當遊戲和顯卡支援時以 HDR 模式串流。 HDR 需要 GTX 1000 系列或更高規格顯卡。</string>
<string name="title_enable_perf_overlay">顯示效能資訊</string>
<string name="summary_enable_perf_overlay">在串流中顯示即時能資訊</string>
<string name="title_enable_post_stream_toast">串流完畢顯示延資訊</string>
<string name="summary_enable_post_stream_toast">串流結束後顯示延資訊</string>
<string name="title_osc_opacity">變更螢幕按鈕透明度</string>
<string name="dialog_title_osc_opacity">變更不透明度</string>
<string name="suffix_osc_opacity">%</string>
<string name="summary_osc_opacity">幕按钮變得更透明/更不透明</string>
<string name="summary_osc_opacity">幕按钮變得更透明/更不透明</string>
<string name="suffix_seekbar_bitrate_mbps">Mbps</string>
<string name="resolution_prefix_native"></string>
<string name="text_native_res_dialog">解析度模式不受GFE的官方支,因此不會自動設主機的顯示解析度。您需要在遊戲中手動進行設
<string name="resolution_prefix_native"></string>
<string name="text_native_res_dialog">解析度模式不受 GFE 的官方支,因此不會自動設主機的顯示解析度。您需要在遊戲中手動進行設
\n
\n如果您選擇在NVIDIA控制台中創建自訂解析度以匹配設備解析度,請確保您已閱讀並理解NVIDIA關於可能導致顯示器損和電腦不穩定以及其他潛在問題的警告。
\n如果您選擇在 NVIDIA 控制面板中建立自訂解析度以匹配裝置解析度,請確保您已閱讀並理解 NVIDIA 關於可能導致監視器損和電腦不穩定以及其他潛在問題的警告。
\n
\n對於您在您的電腦上建自訂解析度而導致的任何問題,我們概不負責。
\n對於您在您的電腦上建自訂解析度而導致的任何問題,我們概不負責。
\n
\n最後,您的設備或主機電腦可能不支援以本解析度串流。如果此模式在您的設備上無法正常行,只能說您運氣欠佳了。</string>
<string name="title_native_res_dialog">解析度警告</string>
\n最後,您的裝置或主機電腦可能不支援以本解析度串流。如果此模式在您的裝置上無法正常行,只能說您運氣欠佳了。</string>
<string name="title_native_res_dialog">解析度警告</string>
<string name="applist_menu_hide_app">隱藏遊戲</string>
<string name="check_ports_msg">請檢查您的防火牆和埠轉發規則中的埠:</string>
<string name="early_termination_error">開始串流時您的主機電腦出了點問題。
\n
\n請確保沒有在主機電腦上開啟任何受DRM保護的內容。您也可以嘗試重新開機主機電腦。
\n請確保沒有在主機電腦上開啟任何受 DRM 保護的內容。您也可以嘗試重新開機主機電腦。
\n
\n如果問題仍然存在,請嘗試重新安裝GPU驅動GFE。</string>
<string name="no_frame_received_error">您的網路連品質不佳。降低視頻碼率設或更換更快的連</string>
<string name="no_video_received_error">沒有接收到來自主機的視</string>
<string name="video_decoder_init_failed">解碼器初始化失敗。您的設備可能不支援選定的解析度或幀數</string>
<string name="nettest_text_blocked">設備當前的網路連攔截了Moonlight。連到該網路時可能無法通過互聯網串流。</string>
<string name="nettest_text_failure">設備當前的網路連似乎攔截了Moonlight。連到該網路時可能無法通過互聯網串流。
\n如果問題仍然存在,請嘗試重新安裝 GPU 驅動程式和 GFE。</string>
<string name="no_frame_received_error">您的網路連品質不佳。降低視訊位元速率設或更換更快的連</string>
<string name="no_video_received_error">沒有接收到來自主機的視</string>
<string name="video_decoder_init_failed">解碼器初始化失敗。您的裝置可能不支援選定的解析度或影格速率</string>
<string name="nettest_text_blocked">裝置目前的網路連攔截了 Moonlight。連到該網路時可能無法透過網際網路串流。</string>
<string name="nettest_text_failure">裝置目前的網路連似乎攔截了 Moonlight。連到該網路時可能無法透過網際網路串流。
\n
\n以下網路埠被攔截:
\n</string>
<string name="nettest_text_inconclusive">由於沒有Moonlight連接測試伺服器可供訪問,因此無法執行網路測試。請檢查您的Internet連接或稍後再試。</string>
<string name="nettest_text_success">您的網路似乎沒有攔截Moonlight。如果仍然無法連,請檢查您電腦的防火牆設
<string name="nettest_text_inconclusive">由於沒有 Moonlight 連線測試伺服器可供訪問,因此無法執行網路測試。請檢查您的 Internet 連線或稍後再試。</string>
<string name="nettest_text_success">您的網路似乎沒有攔截 Moonlight。如果仍然無法連,請檢查您電腦的防火牆設
\n
\n如果您是嘗試通過互聯網串流,請在您的電腦上安裝Moonlight Internet Hosting Tool,然後行裡面的Internet Streaming Tester來檢查電腦的互聯網連接</string>
\n如果您是嘗試透過網際網路串流,請在您的電腦上安裝 Moonlight Internet Hosting Tool,然後行裡面的 Internet Streaming Tester 來檢查電腦的網際網路連線</string>
<string name="nettest_title_done">網路檢測完畢</string>
<string name="nettest_text_waiting">Moonlight正在檢測您的網路連以確認NVIDIA遊戲串流服務是否被攔截。
<string name="nettest_text_waiting">Moonlight 正在檢測您的網路連以確認 NVIDIA 遊戲串流服務是否被攔截。
\n
\n可能需要等待一些時間…</string>
<string name="nettest_title_waiting">正在測試網路連</string>
<string name="pcview_menu_test_network">測試網路連</string>
<string name="pcview_menu_header_unknown">刷新</string>
<string name="nettest_title_waiting">正在測試網路連</string>
<string name="pcview_menu_test_network">測試網路連</string>
<string name="pcview_menu_header_unknown">重新整理</string>
<string name="pcview_menu_header_offline">離線</string>
<string name="pcview_menu_header_online">線上</string>
<string name="perf_overlay_netlatency">平均網路延遲: %1$d ms (抖動: %2$d ms)</string>
<string name="perf_overlay_streamdetails">流: %1$s %2$.2f FPS</string>
<string name="perf_overlay_netlatency">平均網路延時:%1$d ms (抖動:%2$d ms)</string>
<string name="perf_overlay_streamdetails">訊串流:%1$s %2$.2f FPS</string>
<string name="resolution_prefix_native_fullscreen">本機全螢幕</string>
<!-- Array strings -->
<string name="audioconf_stereo">立體聲</string>
<string name="audioconf_51surround">5.1 環場音效</string>
<string name="audioconf_71surround">7.1 環場音效</string>
<string name="videoformat_hevcauto">僅在穩定時使用 HEVC</string>
<string name="videoformat_hevcalways">強制使用 HEVC (可能會崩潰)</string>
<string name="videoformat_hevcnever">不使用 HEVC</string>
<string name="resolution_4k">4K</string>
<string name="fps_30">30 FPS</string>
<string name="fps_60">60 FPS</string>
<string name="fps_90">90 FPS</string>
<string name="fps_120">120 FPS</string>
<string name="resolution_360p">360P</string>
<string name="resolution_720p">720P</string>
<string name="resolution_480p">480P</string>
<string name="resolution_1080p">1080P</string>
<string name="resolution_1440p">1440P</string>
<string name="title_frame_pacing">視訊影格調步</string>
<string name="summary_frame_pacing">指定如何平衡視訊延遲和平滑度</string>
<string name="pacing_balanced">平衡</string>
<string name="pacing_smoothness">偏好平滑視訊 (可能顯著提高延遲)</string>
<string name="pacing_latency">偏好低延遲</string>
<string name="pacing_balanced_alt">FPS 上限平衡 (在某些裝置上可能有更好的表現)</string>
</resources>
+33 -27
View File
@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="resolution_names">
<item>360p</item>
<item>480p</item>
<item>720p</item>
<item>1080p</item>
<item>1440p</item>
<item>4K</item>
<item>@string/resolution_360p</item>
<item>@string/resolution_480p</item>
<item>@string/resolution_720p</item>
<item>@string/resolution_1080p</item>
<item>@string/resolution_1440p</item>
<item>@string/resolution_4k</item>
</string-array>
<!-- Keep this in sync with PreferenceConfiguration.isNativeResolution()! -->
@@ -20,10 +20,10 @@
</string-array>
<string-array name="fps_names">
<item>30 FPS</item>
<item>60 FPS</item>
<item>90 FPS</item>
<item>120 FPS</item>
<item>@string/fps_30</item>
<item>@string/fps_60</item>
<item>@string/fps_90</item>
<item>@string/fps_120</item>
</string-array>
<string-array name="fps_values" translatable="false">
<item>30</item>
@@ -33,9 +33,9 @@
</string-array>
<string-array name="audio_config_names">
<item>Stereo</item>
<item>5.1 Surround Sound</item>
<item>7.1 Surround Sound</item>
<item>@string/audioconf_stereo</item>
<item>@string/audioconf_51surround</item>
<item>@string/audioconf_71surround</item>
</string-array>
<string-array name="audio_config_values" translatable="false">
<item>2</item>
@@ -60,6 +60,8 @@
<item>Українська</item>
<item>Norwegian Bokmål</item>
<item>Tiếng Việt</item>
<item>Magyar</item>
<item>Ελληνικά</item>
</string-array>
<string-array name="language_values" translatable="false">
<item>default</item>
@@ -78,27 +80,31 @@
<item>uk</item>
<item>nb-NO</item>
<item>vi</item>
</string-array>
<string-array name="decoder_names">
<item>Auto-select Decoder</item>
<item>Force Software Decoding</item>
<item>Force Hardware Decoding</item>
</string-array>
<string-array name="decoder_values" translatable="false">
<item>auto</item>
<item>software</item>
<item>hardware</item>
<item>hu</item>
<item>el</item>
</string-array>
<string-array name="video_format_names">
<item>Use HEVC only if stable</item>
<item>Always use HEVC (may crash)</item>
<item>Never use HEVC</item>
<item>@string/videoformat_hevcauto</item>
<item>@string/videoformat_hevcalways</item>
<item>@string/videoformat_hevcnever</item>
</string-array>
<string-array name="video_format_values" translatable="false">
<item>auto</item>
<item>forceh265</item>
<item>neverh265</item>
</string-array>
<string-array name="video_frame_pacing_names">
<item>@string/pacing_latency</item>
<item>@string/pacing_balanced</item>
<item>@string/pacing_balanced_alt</item>
<item>@string/pacing_smoothness</item>
</string-array>
<string-array name="video_frame_pacing_values" translatable="false">
<item>latency</item>
<item>balanced</item>
<item>cap-fps</item>
<item>smoothness</item>
</string-array>
</resources>
+36
View File
@@ -154,6 +154,7 @@
<string name="suffix_seekbar_bitrate_mbps">Mbps</string>
<string name="title_checkbox_stretch_video">Stretch video to full-screen</string>
<string name="resolution_prefix_native">Native</string>
<string name="resolution_prefix_native_fullscreen">Native Full-Screen</string>
<string name="category_audio_settings">Audio Settings</string>
<string name="title_audio_config_list">Surround sound configuration</string>
@@ -226,4 +227,39 @@
<string name="title_enable_post_stream_toast">Show latency message after streaming</string>
<string name="summary_enable_post_stream_toast">Display a latency information message after the stream ends</string>
<string name="category_help">Help</string>
<string name="title_setup_guide">Setup guide</string>
<string name="summary_setup_guide">View instructions on how to set up your gaming PC for streaming</string>
<string name="title_troubleshooting">Troubleshooting guide</string>
<string name="summary_troubleshooting">View tips for diagnosing and fixing common streaming issues</string>
<string name="title_privacy_policy">Privacy policy</string>
<string name="summary_privacy_policy">View Moonlight\'s privacy policy</string>
<!-- Array strings -->
<string name="resolution_360p">360p</string>
<string name="resolution_480p">480p</string>
<string name="resolution_720p">720p</string>
<string name="resolution_1080p">1080p</string>
<string name="resolution_1440p">1440p</string>
<string name="resolution_4k">4K</string>
<string name="fps_30">30 FPS</string>
<string name="fps_60">60 FPS</string>
<string name="fps_90">90 FPS</string>
<string name="fps_120">120 FPS</string>
<string name="audioconf_stereo">Stereo</string>
<string name="audioconf_51surround">5.1 Surround Sound</string>
<string name="audioconf_71surround">7.1 Surround Sound</string>
<string name="videoformat_hevcauto">Use HEVC only if stable</string>
<string name="videoformat_hevcalways">Always use HEVC (may crash)</string>
<string name="videoformat_hevcnever">Never use HEVC</string>
<string name="title_frame_pacing">Video frame pacing</string>
<string name="summary_frame_pacing">Specify how to balance video latency and smoothness</string>
<string name="pacing_latency">Prefer lowest latency</string>
<string name="pacing_balanced">Balanced</string>
<string name="pacing_balanced_alt">Balanced with FPS limit</string>
<string name="pacing_smoothness">Prefer smoothest video (may significantly increase latency)</string>
</resources>
+10
View File
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<data-extraction-rules>
<!-- Don't sync preferences because it often contains device-specific data -->
<cloud-backup disableIfNoEncryptionCapabilities="true">
<exclude domain="sharedpref" path="."/>
</cloud-backup>
<device-transfer>
<exclude domain="sharedpref" path="."/>
</device-transfer>
</data-extraction-rules>
+22 -5
View File
@@ -29,6 +29,13 @@
android:summary="@string/summary_seekbar_bitrate"
android:text="@string/suffix_seekbar_bitrate_mbps"
android:title="@string/title_seekbar_bitrate" />
<ListPreference
android:key="frame_pacing"
android:title="@string/title_frame_pacing"
android:entries="@array/video_frame_pacing_names"
android:entryValues="@array/video_frame_pacing_values"
android:summary="@string/summary_frame_pacing"
android:defaultValue="latency" />
<CheckBoxPreference
android:key="checkbox_stretch_video"
android:title="@string/title_checkbox_stretch_video"
@@ -183,11 +190,6 @@
android:entryValues="@array/video_format_values"
android:summary="@string/summary_video_format"
android:defaultValue="auto" />
<CheckBoxPreference
android:key="checkbox_disable_frame_drop"
android:title="@string/title_disable_frame_drop"
android:summary="@string/summary_disable_frame_drop"
android:defaultValue="false" />
<CheckBoxPreference
android:key="checkbox_enable_hdr"
android:title="@string/title_enable_hdr"
@@ -204,4 +206,19 @@
android:summary="@string/summary_enable_post_stream_toast"
android:defaultValue="false"/>
</PreferenceCategory>
<!--PreferenceCategory android:title="@string/category_help"
android:key="category_help">
<com.limelight.preferences.WebLauncherPreference
android:title="@string/title_setup_guide"
android:summary="@string/summary_setup_guide"
url="https://github.com/moonlight-stream/moonlight-docs/wiki/Setup-Guide"/>
<com.limelight.preferences.WebLauncherPreference
android:title="@string/title_troubleshooting"
android:summary="@string/summary_troubleshooting"
url="https://github.com/moonlight-stream/moonlight-docs/wiki/Troubleshooting"/>
<com.limelight.preferences.WebLauncherPreference
android:title="@string/title_privacy_policy"
android:summary="@string/summary_privacy_policy"
url="https://moonlight-stream.org/privacy.html"/>
</PreferenceCategory-->
</PreferenceScreen>
+3 -2
View File
@@ -2,17 +2,18 @@ version: 0.0.0.{build}
clone_depth: 1
image: Visual Studio 2019
image: Visual Studio 2022
before_build:
- 'git submodule update --init --recursive'
- 'mklink /D C:\android-sdk "C:\Program Files (x86)\Android\android-sdk"'
- 'set ANDROID_HOME=C:\android-sdk'
- 'set JAVA_HOME=C:\Program Files\Java\jdk17'
build_script:
- gradlew.bat build connectedCheck
after_build:
- 'appveyor PushArtifact app\build\reports\lint-results.html'
- 'appveyor PushArtifact app\build\reports\lint-results-nonRootDebug.html'
deploy: off
+1 -1
View File
@@ -5,7 +5,7 @@ buildscript {
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:4.2.1'
classpath 'com.android.tools.build:gradle:7.2.0'
}
}
@@ -0,0 +1,4 @@
- Added separate notched and full-screen native resolution options
- Fixed audio problems with old versions of GeForce Experience and Sunshine/OpenStream
- Fixed unexpected left click in some cases when performing a right click
- Added Hungarian translation from the Weblate community
@@ -0,0 +1,4 @@
- Improved controller rumble support with independent rumble motor control using the new Android 12 APIs
- Fixed touchpad input on DualShock controllers (if supported by the Android device itself)
- Fixed certain controllers disconnecting from the host when Moonlight enters the background
- Updated community-contributed translations from Weblate
@@ -0,0 +1,2 @@
- Fixed crash on Android 12 when using USB driver
- Fixed several other rare user-reported crashes
@@ -0,0 +1,6 @@
- Introduced new frame pacing options to balance latency and smoothness
- The old "Never drop frames" option is now called "Prefer smoothest video"
- All streams can now be launched in HDR-capable mode (some games require an HDR compatible display on your host PC)
- Moonlight will automatically attempt to wake your host PC if it is offline when you attempt to stream via a shortcut
- Improved handling of S-Pen on Android 12
- Updated community contributed translations from Weblate
@@ -0,0 +1,6 @@
- Improved frame pacing when streaming 60 FPS on 120 Hz devices
- Reduced power usage when streaming below maximum display refresh rate
- Reintroduced previous frame pacing behavior as "Balanced with FPS limit" option
- Rewrote PC address detection logic to better handle some network configurations
- Fixed simultaneous mouse and on-screen controller input
- Updated community contributed translations from Weblate
+1 -1
View File
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-all.zip