Compare commits

..

55 Commits

Author SHA1 Message Date
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
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
Cameron Gutman c46a0106f2 Version 9.9.5 2021-06-14 23:34:16 -05:00
WALKTHROUGH RAYMAND LEGENDS cbf3db0be0 Added translation using Weblate (Hungarian) 2021-06-13 21:33:00 +02:00
Cameron Gutman 21f3710083 Update moonlight-common-c with performance and audio improvements 2021-06-13 10:18:32 -05:00
Cameron Gutman 8ac5768f4f Change H.265 to HEVC to match other clients 2021-06-12 11:00:30 -05:00
Cameron Gutman 2458b9305c Merge remote-tracking branch 'origin/weblate' 2021-06-12 10:54:07 -05:00
Artem a8909ea2a5 Translated using Weblate (Russian)
Currently translated at 99.4% (187 of 188 strings)

Translation: Moonlight Game Streaming/moonlight-android
Translate-URL: https://hosted.weblate.org/projects/moonlight/moonlight-android/ru/
2021-06-11 22:32:00 +02:00
55 changed files with 862 additions and 263 deletions
+9 -9
View File
@@ -1,16 +1,16 @@
apply plugin: 'com.android.application'
android {
ndkVersion "22.1.7171670"
ndkVersion "23.0.7599858"
compileSdkVersion 30
compileSdkVersion 31
defaultConfig {
minSdkVersion 16
targetSdkVersion 30
targetSdkVersion 31
versionName "9.9.4"
versionCode = 266
versionName "9.10.1"
versionCode = 271
}
flavorDimensions "root"
@@ -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.69'
implementation 'org.bouncycastle:bcpkix-jdk15on:1.69'
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'
}
+1
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"
+108 -27
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;
@@ -377,9 +377,9 @@ public class Game extends Activity implements SurfaceHolder.Callback,
Toast.makeText(this, "Decoder does not support HEVC Main10HDR10", Toast.LENGTH_LONG).show();
}
// Display a message to the user if H.265 was forced on but we still didn't find a decoder
// Display a message to the user if HEVC was forced on but we still didn't find a decoder
if (prefConfig.videoFormat == PreferenceConfiguration.FORCE_H265_ON && !decoderRenderer.isHevcSupported()) {
Toast.makeText(this, "No H.265 decoder found.\nFalling back to H.264.", Toast.LENGTH_LONG).show();
Toast.makeText(this, "No HEVC decoder found.\nFalling back to H.264.", Toast.LENGTH_LONG).show();
}
int gamepadMask = ControllerHandler.getAttachedControllerMask(this);
@@ -571,23 +571,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();
}
@@ -627,6 +653,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();
@@ -780,6 +826,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()) {
@@ -899,10 +948,10 @@ public class Game extends Activity implements SurfaceHolder.Callback,
// Add the video codec to the post-stream toast
if (message != null) {
if (videoFormat == MoonBridge.VIDEO_FORMAT_H265_MAIN10) {
message += " [H.265 HDR]";
message += " [HEVC HDR]";
}
else if (videoFormat == MoonBridge.VIDEO_FORMAT_H265) {
message += " [H.265]";
message += " [HEVC]";
}
else if (videoFormat == MoonBridge.VIDEO_FORMAT_H264) {
message += " [H.264]";
@@ -1040,8 +1089,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 +1160,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 +1235,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,8 +1275,34 @@ 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);
}
@@ -1518,6 +1597,7 @@ public class Game extends Activity implements SurfaceHolder.Callback,
private void stopConnection() {
if (connecting || connected) {
setPipAutoEnter(false);
connecting = connected = false;
controllerHandler.stop();
@@ -1682,6 +1762,7 @@ public class Game extends Activity implements SurfaceHolder.Callback,
spinner = null;
}
setPipAutoEnter(true);
connected = true;
connecting = false;
@@ -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();
}
}
@@ -41,8 +41,9 @@ public class AndroidNativePointerCaptureProvider extends AndroidPointerIconCaptu
// 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 ||
(eventSource == InputDevice.SOURCE_TOUCHPAD && targetView.hasPointerCapture());
}
@Override
@@ -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();
}
@@ -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;
@@ -96,7 +96,7 @@ public class MediaCodecDecoderRenderer extends VideoDecoderRenderer {
}
private MediaCodecInfo findHevcDecoder(PreferenceConfiguration prefs, boolean meteredNetwork, boolean requestedHdr) {
// Don't return anything if H.265 is forced off
// Don't return anything if HEVC is forced off
if (prefs.videoFormat == PreferenceConfiguration.FORCE_H265_OFF) {
return null;
}
@@ -1107,6 +1107,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";
@@ -119,7 +119,7 @@ public class MediaCodecHelper {
// if adaptive playback was enabled so let's avoid it to be safe.
blacklistedAdaptivePlaybackPrefixes.add("omx.intel");
// The MediaTek decoder crashes at 1080p when adaptive playback is enabled
// on some Android TV devices with H.265 only.
// on some Android TV devices with HEVC only.
blacklistedAdaptivePlaybackPrefixes.add("omx.mtk");
constrainedHighProfilePrefixes = new LinkedList<>();
@@ -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;
@@ -122,7 +122,7 @@ public class NvConnection {
}
else if ((context.streamConfig.getWidth() > 4096 || context.streamConfig.getHeight() > 4096) &&
!context.streamConfig.getHevcSupported()) {
context.connListener.displayMessage("Your streaming device must support H.265 to stream at resolutions above 4K.");
context.connListener.displayMessage("Your streaming device must support HEVC to stream at resolutions above 4K.");
return false;
}
else if (context.streamConfig.getHeight() >= 2160 && !h.supports4K(serverInfo)) {
@@ -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);
}
@@ -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 {
@@ -253,6 +253,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 +291,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;
}
}
@@ -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();
@@ -221,6 +253,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 +304,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 +414,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 +425,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();
}
@@ -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));
}
}
@@ -364,6 +364,7 @@ static CONNECTION_LISTENER_CALLBACKS BridgeConnListenerCallbacks = {
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 +378,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 +418,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();
+3 -3
View File
@@ -7,8 +7,8 @@
</string-array>
<string-array name="video_format_names">
<item>Verwende H.265 so fern stabile Unterstützung vorhanden ist</item>
<item>Immer H.265 verwenden (könnte Crashes verursachen)</item>
<item>Nie H.265 verwenden</item>
<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>
+3 -3
View File
@@ -7,8 +7,8 @@
</string-array>
<string-array name="video_format_names">
<item>Usar H.265 solo si es estable</item>
<item>Siempre usar H.265 (puede fallar)</item>
<item>Nunca usar H.265</item>
<item>Usar HEVC solo si es estable</item>
<item>Siempre usar HEVC (puede fallar)</item>
<item>Nunca usar HEVC</item>
</string-array>
</resources>
+2 -2
View File
@@ -120,7 +120,7 @@
<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 H.265</string>
<string name="summary_video_format">H.265 reduce el ancho de banda de vídeo, pero requiere un dispositivo bastante actual.</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>
+3 -3
View File
@@ -17,8 +17,8 @@
<item>Contraindre le décodage matériel</item>
</string-array>
<string-array name="video_format_names">
<item>Utiliser H.265 uniquement s\'il est stable</item>
<item>Utilisez toujours H.265 (mais il peut planter)</item>
<item>N\'utilisez jamais H.265</item>
<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>
+5 -2
View File
@@ -185,8 +185,8 @@
<string name="summary_checkbox_disable_warnings">Désactiver les messages d\'avertissement de connexion à l\'écran pendant la diffusion</string>
<string name="title_disable_frame_drop">Ne jamais laisser tomber les frames</string>
<string name="summary_disable_frame_drop">Peut réduire les micro-saccades sur certains appareils, mais peut augmenter la latence</string>
<string name="title_video_format">Modifier les paramètres H.265</string>
<string name="summary_video_format">H.265 réduit les besoins en bande passante vidéo mais nécessite un périphérique très récent</string>
<string name="title_video_format">Modifier les paramètres HEVC</string>
<string name="summary_video_format">HEVC réduit les besoins en bande passante vidéo mais nécessite un périphérique très récent</string>
<string name="title_enable_hdr">Activer le HDR (expérimental)</string>
<string name="summary_enable_hdr">Diffuser du HDR lorsque le jeu et le processeur graphique du PC le prennent en charge. HDR nécessite un GPU série GTX 1000 ou une version ultérieure.</string>
<string name="title_enable_perf_overlay">Activer la superposition de performance</string>
@@ -217,4 +217,7 @@
\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>
</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>
+2 -2
View File
@@ -150,8 +150,8 @@
<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>
<string name="title_video_format">Modifica impostazioni H.265</string>
<string name="summary_video_format">H.265 riduce i requisiti di larghezza di banda video ma richiede un dispositivo molto recente</string>
<string name="title_video_format">Modifica impostazioni HEVC</string>
<string name="summary_video_format">HEVC riduce i requisiti di larghezza di banda video ma richiede un dispositivo molto recente</string>
<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>
+3 -3
View File
@@ -8,8 +8,8 @@
</string-array>
<string-array name="video_format_names">
<item>安定している場合にH.265を有効化</item>
<item>H.265を強制的に有効化(クラッシュする可能性があります)</item>
<item>H.265を無効化</item>
<item>安定している場合にHEVCを有効化</item>
<item>HEVCを強制的に有効化(クラッシュする可能性があります)</item>
<item>HEVCを無効化</item>
</string-array>
</resources>
+2 -2
View File
@@ -114,8 +114,8 @@
<string name="summary_checkbox_host_audio">音声をコンピュータとこのデバイスの両方で再生します</string>
<string name="category_advanced_settings">高度な設定</string>
<string name="title_video_format">H.265</string>
<string name="summary_video_format">H.265は動画に必要な帯域幅を圧縮します。この機能にはなるべく新しいデバイスが必要です</string>
<string name="title_video_format">HEVC</string>
<string name="summary_video_format">HEVCは動画に必要な帯域幅を圧縮します。この機能にはなるべく新しいデバイスが必要です</string>
<string name="suffix_osc_opacity">%</string>
<string name="dialog_title_osc_opacity">透過率</string>
<string name="title_osc_opacity">透過率</string>
+3 -3
View File
@@ -7,8 +7,8 @@
</string-array>
<string-array name="video_format_names">
<item>안정적인 경우에 H.265 사용</item>
<item>항상 H.265 사용(깨질 가능성 있음)</item>
<item>H.265 사용하지 않기</item>
<item>안정적인 경우에 HEVC 사용</item>
<item>항상 HEVC 사용(깨질 가능성 있음)</item>
<item>HEVC 사용하지 않기</item>
</string-array>
</resources>
+3 -2
View File
@@ -110,8 +110,8 @@
<string name="title_checkbox_host_audio">PC에서 소리 재생</string>
<string name="summary_checkbox_host_audio">이 장치와 컴퓨터에서 소리를 재생합니다.</string>
<string name="category_advanced_settings">고급 설정</string>
<string name="title_video_format">H.265 설정 변경</string>
<string name="summary_video_format">H.265는 낮은 대역폭으로 더 좋은 화질을 볼 수 있게 해주지만 최신 장치가 필요합니다.</string>
<string name="title_video_format">HEVC 설정 변경</string>
<string name="summary_video_format">HEVC는 낮은 대역폭으로 더 좋은 화질을 볼 수 있게 해주지만 최신 장치가 필요합니다.</string>
<string name="suffix_osc_opacity">%</string>
<string name="title_checkbox_enable_pip">PIP모드 활성화</string>
<string name="summary_checkbox_vibrate_fallback">게임 패드가 진동을 지원하지 않는 경우 장치를 진동 시켜 진동을 활성화합니다</string>
@@ -219,4 +219,5 @@
<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>
</resources>
+5 -4
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
@@ -49,7 +47,7 @@
<string name="nettest_title_done">Nettverkstest fullført</string>
<string name="title_seekbar_deadzone">Dødsonejustering for analogstikke</string>
<string name="title_checkbox_xb1_driver">Driver for Xbox 360/One USB-spillkontroller</string>
<string name="title_video_format">Endre H.265-innstillinger</string>
<string name="title_video_format">Endre HEVC-innstillinger</string>
<string name="title_disable_frame_drop">Aldri forkast bilderammer</string>
<string name="title_checkbox_disable_warnings">Skru av advarselsmeldinger</string>
<string name="title_unlock_fps">Lås opp alle mulige bilderammetakter</string>
@@ -169,7 +167,7 @@
<string name="summary_enable_post_stream_toast">Vis en informasjonsmelding om latens etter at strømmen sluttføres</string>
<string name="title_enable_post_stream_toast">Vis latensmelding etter strømming</string>
<string name="title_enable_hdr">Skru på HDR (eksperimentelt)</string>
<string name="summary_video_format">H.265 senker båndbreddekravene, men krever en nyere enhet</string>
<string name="summary_video_format">HEVC senker båndbreddekravene, men krever en nyere enhet</string>
<string name="summary_disable_frame_drop">Kan redusere mikro-hakking på noen enheter, men kan øke latens</string>
<string name="summary_checkbox_disable_warnings">Skru av visning av tilkoblingsadvarsler på skjermen under strømming</string>
<string name="summary_unlock_fps">Strømming i 90 eller 120 BPS kan redusere latens på flaggskipsenheter, men kan forårsake forsinkelser eller ustabilitet på enheter som ikke klarer det.</string>
@@ -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>
+3 -3
View File
@@ -7,8 +7,8 @@
</string-array>
<string-array name="video_format_names">
<item>Gebruik H.265 alleen als het stabiel is.</item>
<item>Gebruik H.265 altijd (mogelijkheid tot crashes)</item>
<item>Gebruik H.265 nooit</item>
<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>
+2 -2
View File
@@ -118,8 +118,8 @@
<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 H.265 instellingen</string>
<string name="summary_video_format">H.265 verlaagt video bandbreedte vereisten maar benodigdt een recent apparaat.</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>
<string name="suffix_osc_opacity">%</string>
</resources>
+3 -3
View File
@@ -13,8 +13,8 @@
</string-array>
<string-array name="video_format_names">
<item>Folosește H.265 doar dacă e stabil</item>
<item>Folosește H.265 mereu (se poate bloca)</item>
<item>Nu folosi H.265</item>
<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>
+2 -2
View File
@@ -184,8 +184,8 @@
<string name="category_advanced_settings">Setări avansate</string>
<string name="title_disable_frame_drop">Nu pierde cadre intenționat</string>
<string name="summary_disable_frame_drop">Poate să reducă micro-stuttering pe anumite device-uri, dar s-ar putea să crească latența</string>
<string name="title_video_format">Modifica setările H.265</string>
<string name="summary_video_format">H.265 funcționează cu o conexiune mai slaba, dar necesită un dispozitiv recent, performant</string>
<string name="title_video_format">Modifica setările HEVC</string>
<string name="summary_video_format">HEVC funcționează cu o conexiune mai slaba, dar necesită un dispozitiv recent, performant</string>
<string name="title_enable_hdr">Activează HDR (Experimental)</string>
<string name="summary_enable_hdr">Folosește HDR daca aplicația si placa video suportă. Necesită o placa video seria GTX 1000 sau mai nouă.</string>
<string name="title_enable_perf_overlay">Activează statisticile de performanță</string>
+3 -3
View File
@@ -13,8 +13,8 @@
</string-array>
<string-array name="video_format_names">
<item>Использовать H.265 только если безопасно</item>
<item>Всегда использовать H.265 если доступно</item>
<item>Никогда не использовать H.265</item>
<item>Использовать HEVC только если безопасно</item>
<item>Всегда использовать HEVC если доступно</item>
<item>Никогда не использовать HEVC</item>
</string-array>
</resources>
+3 -2
View File
@@ -112,8 +112,8 @@
<string name="title_checkbox_host_audio">Проигрывать звук на PC</string>
<string name="summary_checkbox_host_audio">Проигрывать звук на компьютере и текущем устройстве</string>
<string name="category_advanced_settings">Расширенные Настройки</string>
<string name="title_video_format">Изменить настройки H.265</string>
<string name="summary_video_format">H.265 снижает требования к пропускной способности, но требует очень нового устройства</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>
@@ -210,4 +210,5 @@
\nНаконец, ваше устройство или хост-компьютер может не поддерживать потоковую передачу в родном разрешении. Если это не работает на вашем устройстве, к сожалению, вам просто не повезло.</string>
<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>
</resources>
+37
View File
@@ -0,0 +1,37 @@
<?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>
</resources>
+3 -3
View File
@@ -7,8 +7,8 @@
</string-array>
<string-array name="video_format_names">
<item>Використовувати H.265 тільки якщо безпечно</item>
<item>Завжди використовувати H.265 якщо доступно</item>
<item>Ніколи не використовувати H.265</item>
<item>Використовувати HEVC тільки якщо безпечно</item>
<item>Завжди використовувати HEVC якщо доступно</item>
<item>Ніколи не використовувати HEVC</item>
</string-array>
</resources>
+150 -128
View File
@@ -1,198 +1,220 @@
<?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_video_format">Змінити налаштування H.265</string>
<string name="summary_video_format">H.265 знижує вимоги до пропускної здатності, але вимагає дуже нового пристрою</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="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="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>
</resources>
+3 -2
View File
@@ -6,8 +6,8 @@
<string name="title_enable_perf_overlay">Hiện thống kê hiệu năng trong khi stream</string>
<string name="summary_enable_hdr">Stream HDR khi trò chơi và GPU của PC hỗ trợ nó. HDR yêu cầu GPU GTX series 1000 hoặc mới hơn.</string>
<string name="title_enable_hdr">Bật HDR (Thử nghiệm)</string>
<string name="summary_video_format">H.265 làm giảm yêu cầu băng thông video nhưng yêu cầu một thiết bị mới hơn</string>
<string name="title_video_format">Thay đổi cài đặt H.265</string>
<string name="summary_video_format">HEVC làm giảm yêu cầu băng thông video nhưng yêu cầu một thiết bị mới hơn</string>
<string name="title_video_format">Thay đổi cài đặt HEVC</string>
<string name="summary_disable_frame_drop">Có thể làm giảm sự khựng nhỏ trên một số thiết bị, nhưng có thể làm tăng độ trễ</string>
<string name="title_disable_frame_drop">Không bao giờ giảm khung hình</string>
<string name="summary_checkbox_disable_warnings">Tắt các thông báo cảnh báo kết nối trên màn hình trong khi stream</string>
@@ -206,4 +206,5 @@
<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>
</resources>
+3 -3
View File
@@ -8,9 +8,9 @@
</string-array>
<string-array name="video_format_names">
<item>如果稳定才使用H.265</item>
<item>强制使用H.265(不稳定)</item>
<item>不使用H.265</item>
<item>如果稳定才使用HEVC</item>
<item>强制使用HEVC(不稳定)</item>
<item>不使用HEVC</item>
</string-array>
<string-array name="audio_config_names">
+2 -2
View File
@@ -165,8 +165,8 @@
<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"> 更改H.265设置 </string>
<string name="summary_video_format">H.265能降低视频带宽需求,但需要较新的设备才能支持</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>
+3 -3
View File
@@ -8,9 +8,9 @@
</string-array>
<string-array name="video_format_names">
<item>如果穩定才使用H.265</item>
<item>強制使用H.265(不穩定)</item>
<item>不使用H.265</item>
<item>如果穩定才使用HEVC</item>
<item>強制使用HEVC(不穩定)</item>
<item>不使用HEVC</item>
</string-array>
<string-array name="audio_config_names">
+2 -2
View File
@@ -165,8 +165,8 @@
<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"> 更改H.265設置 </string>
<string name="summary_video_format">H.265能降低視頻頻寬需求,但需要較新的設備才能支援</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>
+5 -3
View File
@@ -60,6 +60,7 @@
<item>Українська</item>
<item>Norwegian Bokmål</item>
<item>Tiếng Việt</item>
<item>Magyar</item>
</string-array>
<string-array name="language_values" translatable="false">
<item>default</item>
@@ -78,6 +79,7 @@
<item>uk</item>
<item>nb-NO</item>
<item>vi</item>
<item>hu</item>
</string-array>
<string-array name="decoder_names">
@@ -92,9 +94,9 @@
</string-array>
<string-array name="video_format_names">
<item>Use H.265 only if stable</item>
<item>Always use H.265 (may crash)</item>
<item>Never use H.265</item>
<item>Use HEVC only if stable</item>
<item>Always use HEVC (may crash)</item>
<item>Never use HEVC</item>
</string-array>
<string-array name="video_format_values" translatable="false">
<item>auto</item>
+3 -2
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>
@@ -217,8 +218,8 @@
<string name="summary_checkbox_disable_warnings">Disable on-screen connection warning messages while streaming</string>
<string name="title_disable_frame_drop">Never drop frames</string>
<string name="summary_disable_frame_drop">May reduce micro-stuttering on some devices, but can increase latency</string>
<string name="title_video_format">Change H.265 settings</string>
<string name="summary_video_format">H.265 lowers video bandwidth requirements but requires a newer device</string>
<string name="title_video_format">Change HEVC settings</string>
<string name="summary_video_format">HEVC lowers video bandwidth requirements but requires a newer device</string>
<string name="title_enable_hdr">Enable HDR (Experimental)</string>
<string name="summary_enable_hdr">Stream HDR when the game and PC GPU support it. HDR requires a GTX 1000 series GPU or later.</string>
<string name="title_enable_perf_overlay">Show performance stats while streaming</string>
+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>
+2 -1
View File
@@ -8,11 +8,12 @@ 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\jdk11'
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.0.0'
}
}
@@ -0,0 +1,3 @@
- Optimizations to core streaming code
- Changed "H.265" to "HEVC" to match other Moonlight clients
- Fixed possible crash when audio packet sizes change while streaming
@@ -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
+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.0.2-all.zip