diff --git a/app/src/main/java/com/limelight/AppView.java b/app/src/main/java/com/limelight/AppView.java
index 92c01355..d2a717fc 100644
--- a/app/src/main/java/com/limelight/AppView.java
+++ b/app/src/main/java/com/limelight/AppView.java
@@ -65,7 +65,7 @@ public class AppView extends Activity {
return;
}
- String labelText = "Apps on "+getIntent().getStringExtra(NAME_EXTRA);
+ String labelText = getResources().getString(R.string.title_applist)+" "+getIntent().getStringExtra(NAME_EXTRA);
TextView label = (TextView) findViewById(R.id.appListText);
setTitle(labelText);
label.setText(labelText);
@@ -141,7 +141,7 @@ public class AppView extends Activity {
}
@Override
- public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
+ public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
@@ -153,12 +153,12 @@ public class AppView extends Activity {
int runningAppId = getRunningAppId();
if (runningAppId != -1) {
if (runningAppId == selectedApp.app.getAppId()) {
- menu.add(Menu.NONE, RESUME_ID, 1, "Resume Session");
- menu.add(Menu.NONE, QUIT_ID, 2, "Quit Session");
+ menu.add(Menu.NONE, RESUME_ID, 1, getResources().getString(R.string.applist_menu_resume));
+ menu.add(Menu.NONE, QUIT_ID, 2, getResources().getString(R.string.applist_menu_quit));
}
else {
- menu.add(Menu.NONE, RESUME_ID, 1, "Quit Current Game and Start");
- menu.add(Menu.NONE, CANCEL_ID, 2, "Cancel");
+ menu.add(Menu.NONE, RESUME_ID, 1, getResources().getString(R.string.applist_menu_quit_and_start));
+ menu.add(Menu.NONE, CANCEL_ID, 2, getResources().getString(R.string.applist_menu_cancel));
}
}
}
@@ -190,7 +190,8 @@ public class AppView extends Activity {
}
private void updateAppList() {
- final SpinnerDialog spinner = SpinnerDialog.displayDialog(this, "App List", "Refreshing apps...", true);
+ final SpinnerDialog spinner = SpinnerDialog.displayDialog(this, getResources().getString(R.string.applist_refresh_title),
+ getResources().getString(R.string.applist_refresh_title), true);
new Thread() {
@Override
public void run() {
@@ -220,7 +221,8 @@ public class AppView extends Activity {
spinner.dismiss();
}
- Dialog.displayDialog(AppView.this, "Error", "Failed to get app list", true);
+ Dialog.displayDialog(AppView.this, getResources().getString(R.string.applist_refresh_error_title),
+ getResources().getString(R.string.applist_refresh_error_msg), true);
}
}.start();
}
@@ -235,7 +237,7 @@ public class AppView extends Activity {
}
private void doQuit(final NvApp app) {
- Toast.makeText(AppView.this, "Quitting "+app.getAppName()+"...", Toast.LENGTH_SHORT).show();
+ Toast.makeText(AppView.this, getResources().getString(R.string.applist_quit_app)+" "+app.getAppName()+"...", Toast.LENGTH_SHORT).show();
new Thread(new Runnable() {
@Override
public void run() {
@@ -244,17 +246,16 @@ public class AppView extends Activity {
try {
httpConn = new NvHTTP(ipAddress, uniqueId, null, PlatformBinding.getCryptoProvider(AppView.this));
if (httpConn.quitApp()) {
- message = "Successfully quit "+app.getAppName();
+ message = getResources().getString(R.string.applist_quit_success)+" "+app.getAppName();
}
else {
- message = "Failed to quit "+app.getAppName();
+ message = getResources().getString(R.string.applist_quit_fail)+" "+app.getAppName();
}
updateAppList();
} catch (UnknownHostException e) {
- message = "Failed to resolve host";
+ message = getResources().getString(R.string.error_unknown_host);
} catch (FileNotFoundException e) {
- message = "GFE returned an HTTP 404 error. Make sure your PC is running a supported GPU. Using remote desktop software can also cause this error. "
- + "Try rebooting your machine or reinstalling GFE.";
+ message = getResources().getString(R.string.error_404);
} catch (Exception e) {
message = e.getMessage();
}
@@ -282,4 +283,4 @@ public class AppView extends Activity {
return app.getAppName();
}
}
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/com/limelight/Game.java b/app/src/main/java/com/limelight/Game.java
index a6b96089..abb2bf12 100644
--- a/app/src/main/java/com/limelight/Game.java
+++ b/app/src/main/java/com/limelight/Game.java
@@ -113,12 +113,13 @@ public class Game extends Activity implements SurfaceHolder.Callback,
// Inflate the content
setContentView(R.layout.activity_game);
-
+
// Start the spinner
- spinner = SpinnerDialog.displayDialog(this, "Establishing Connection", "Starting connection", true);
+ spinner = SpinnerDialog.displayDialog(this, getResources().getString(R.string.conn_establishing_title),
+ getResources().getString(R.string.conn_establishing_msg), true);
// Read the stream preferences
- prefConfig = PreferenceConfiguration.readPreferences(this);
+ prefConfig = PreferenceConfiguration.readPreferences(this);
switch (prefConfig.decoder) {
case PreferenceConfiguration.FORCE_SOFTWARE_DECODER:
drFlags |= VideoDecoderRenderer.FLAG_FORCE_SOFTWARE_DECODING;
@@ -143,11 +144,11 @@ public class Game extends Activity implements SurfaceHolder.Callback,
sv.setOnTouchListener(this);
// Warn the user if they're on a metered connection
- checkDataConnection();
-
- // Make sure Wi-Fi is fully powered up
+ checkDataConnection();
+
+ // Make sure Wi-Fi is fully powered up
WifiManager wifiMgr = (WifiManager) getSystemService(Context.WIFI_SERVICE);
- wifiLock = wifiMgr.createWifiLock(WifiManager.WIFI_MODE_FULL_HIGH_PERF, "Limelight");
+ wifiLock = wifiMgr.createWifiLock(WifiManager.WIFI_MODE_FULL_HIGH_PERF, "Limelight");
wifiLock.setReferenceCounted(false);
wifiLock.acquire();
@@ -214,7 +215,7 @@ public class Game extends Activity implements SurfaceHolder.Callback,
{
ConnectivityManager mgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if (mgr.isActiveNetworkMetered()) {
- displayTransientMessage("Warning: Your active network connection is metered!");
+ displayTransientMessage(getResources().getString(R.string.conn_metered));
}
}
@@ -262,13 +263,13 @@ public class Game extends Activity implements SurfaceHolder.Callback,
int averageDecoderLat = decoderRenderer.getAverageDecoderLatency();
String message = null;
if (averageEndToEndLat > 0) {
- message = "Average client-side frame latency: "+averageEndToEndLat+" ms";
+ message = getResources().getString(R.string.conn_client_latency)+" "+averageEndToEndLat+" ms";
if (averageDecoderLat > 0) {
- message += " (hardware decoder latency: "+averageDecoderLat+" ms)";
+ message += " ("+getResources().getString(R.string.conn_client_latency_hw)+" "+averageDecoderLat+" ms)";
}
}
else if (averageDecoderLat > 0) {
- message = "Average hardware decoder latency: "+averageDecoderLat+" ms";
+ message = getResources().getString(R.string.conn_hardware_latency)+" "+averageDecoderLat+" ms";
}
if (message != null) {
@@ -634,7 +635,7 @@ public class Game extends Activity implements SurfaceHolder.Callback,
@Override
public void stageStarting(Stage stage) {
if (spinner != null) {
- spinner.setMessage("Starting "+stage.getName());
+ spinner.setMessage(getResources().getString(R.string.conn_starting)+" "+stage.getName());
}
}
@@ -665,7 +666,8 @@ public class Game extends Activity implements SurfaceHolder.Callback,
if (!displayedFailureDialog) {
displayedFailureDialog = true;
stopConnection();
- Dialog.displayDialog(this, "Connection Error", "Starting "+stage.getName()+" failed", true);
+ Dialog.displayDialog(this, getResources().getString(R.string.conn_error_title),
+ getResources().getString(R.string.conn_error_msg)+" "+stage.getName(), true);
}
}
@@ -676,7 +678,8 @@ public class Game extends Activity implements SurfaceHolder.Callback,
e.printStackTrace();
stopConnection();
- Dialog.displayDialog(this, "Connection Terminated", "The connection was terminated", true);
+ Dialog.displayDialog(this, getResources().getString(R.string.conn_terminated_title),
+ getResources().getString(R.string.conn_terminated_msg), true);
}
}
diff --git a/app/src/main/java/com/limelight/PcView.java b/app/src/main/java/com/limelight/PcView.java
index 0366569d..b0ec91c5 100644
--- a/app/src/main/java/com/limelight/PcView.java
+++ b/app/src/main/java/com/limelight/PcView.java
@@ -37,7 +37,6 @@ import android.view.ContextMenu.ContextMenuInfo;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
-import android.widget.Button;
import android.widget.GridView;
import android.widget.ImageButton;
import android.widget.RelativeLayout;
@@ -114,6 +113,7 @@ public class PcView extends Activity {
ComputerObject computer = (ComputerObject) pcGridAdapter.getItem(pos);
if (computer.details.reachability == ComputerDetails.Reachability.UNKNOWN) {
// Do nothing
+ return;
}
else if (computer.details.reachability == ComputerDetails.Reachability.OFFLINE) {
// Open the context menu if a PC is offline
@@ -239,7 +239,7 @@ public class PcView extends Activity {
}
@Override
- public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
+ public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
stopComputerUpdates(false);
// Call superclass
@@ -255,16 +255,16 @@ public class PcView extends Activity {
// Inflate the context menu
if (computer.details.reachability == ComputerDetails.Reachability.OFFLINE) {
- menu.add(Menu.NONE, WOL_ID, 1, "Send Wake-On-LAN request");
- menu.add(Menu.NONE, DELETE_ID, 2, "Delete PC");
+ menu.add(Menu.NONE, WOL_ID, 1, getResources().getString(R.string.pcview_menu_send_wol));
+ menu.add(Menu.NONE, DELETE_ID, 2, getResources().getString(R.string.pcview_menu_delete_pc));
}
else if (computer.details.pairState != PairState.PAIRED) {
- menu.add(Menu.NONE, PAIR_ID, 1, "Pair with PC");
- menu.add(Menu.NONE, DELETE_ID, 2, "Delete PC");
+ menu.add(Menu.NONE, PAIR_ID, 1, getResources().getString(R.string.pcview_menu_pair_pc));
+ menu.add(Menu.NONE, DELETE_ID, 2, getResources().getString(R.string.pcview_menu_delete_pc));
}
else {
- menu.add(Menu.NONE, APP_LIST_ID, 1, "View Game List");
- menu.add(Menu.NONE, UNPAIR_ID, 2, "Unpair");
+ menu.add(Menu.NONE, APP_LIST_ID, 1, getResources().getString(R.string.pcview_menu_app_list));
+ menu.add(Menu.NONE, UNPAIR_ID, 2, getResources().getString(R.string.pcview_menu_unpair_pc));
}
}
@@ -275,21 +275,19 @@ public class PcView extends Activity {
private void doPair(final ComputerDetails computer) {
if (computer.reachability == ComputerDetails.Reachability.OFFLINE) {
- Toast.makeText(PcView.this, "Computer is offline", Toast.LENGTH_SHORT).show();
+ Toast.makeText(PcView.this, getResources().getString(R.string.pair_pc_offline), Toast.LENGTH_SHORT).show();
return;
}
if (computer.runningGameId != 0) {
- Toast.makeText(PcView.this, "Computer is currently in a game. " +
- "You must close the game before pairing.", Toast.LENGTH_LONG).show();
+ Toast.makeText(PcView.this, getResources().getString(R.string.pair_pc_ingame), Toast.LENGTH_LONG).show();
return;
}
if (managerBinder == null) {
- Toast.makeText(PcView.this, "The ComputerManager service is not running. " +
- "Please wait a few seconds or restart the app.", Toast.LENGTH_LONG).show();
+ Toast.makeText(PcView.this, getResources().getString(R.string.error_manager_not_running), Toast.LENGTH_LONG).show();
return;
}
- Toast.makeText(PcView.this, "Pairing...", Toast.LENGTH_SHORT).show();
+ Toast.makeText(PcView.this, getResources().getString(R.string.pairing), Toast.LENGTH_SHORT).show();
new Thread(new Runnable() {
@Override
public void run() {
@@ -321,17 +319,18 @@ public class PcView extends Activity {
final String pinStr = PairingManager.generatePinString();
// Spin the dialog off in a thread because it blocks
- Dialog.displayDialog(PcView.this, "Pairing", "Please enter the following PIN on the target PC: "+pinStr, false);
+ Dialog.displayDialog(PcView.this, getResources().getString(R.string.pair_pairing_title),
+ getResources().getString(R.string.pair_pairing_msg)+" "+pinStr, false);
PairingManager.PairState pairState = httpConn.pair(pinStr);
if (pairState == PairingManager.PairState.PIN_WRONG) {
- message = "Incorrect PIN";
+ message = getResources().getString(R.string.pair_incorrect_pin);
}
else if (pairState == PairingManager.PairState.FAILED) {
- message = "Pairing failed";
+ message = getResources().getString(R.string.pair_fail);
}
else if (pairState == PairingManager.PairState.PAIRED) {
- message = "Paired successfully";
+ message = getResources().getString(R.string.pair_success);
success = true;
}
else {
@@ -340,10 +339,9 @@ public class PcView extends Activity {
}
}
} catch (UnknownHostException e) {
- message = "Failed to resolve host";
+ message = getResources().getString(R.string.error_unknown_host);
} catch (FileNotFoundException e) {
- message = "GFE returned an HTTP 404 error. Make sure your PC is running a supported GPU. Using remote desktop software can also cause this error. "
- + "Try rebooting your machine or reinstalling GFE.";
+ message = getResources().getString(R.string.error_404);
} catch (Exception e) {
e.printStackTrace();
message = e.getMessage();
@@ -375,26 +373,25 @@ public class PcView extends Activity {
private void doWakeOnLan(final ComputerDetails computer) {
if (computer.reachability != ComputerDetails.Reachability.OFFLINE) {
- Toast.makeText(PcView.this, "Computer is online", Toast.LENGTH_SHORT).show();
+ Toast.makeText(PcView.this, getResources().getString(R.string.wol_pc_online), Toast.LENGTH_SHORT).show();
return;
}
if (computer.macAddress == null) {
- Toast.makeText(PcView.this, "Unable to wake PC because GFE didn't send a MAC address", Toast.LENGTH_SHORT).show();
+ Toast.makeText(PcView.this, getResources().getString(R.string.wol_no_mac), Toast.LENGTH_SHORT).show();
return;
}
- Toast.makeText(PcView.this, "Waking PC...", Toast.LENGTH_SHORT).show();
+ Toast.makeText(PcView.this, getResources().getString(R.string.wol_waking_pc), Toast.LENGTH_SHORT).show();
new Thread(new Runnable() {
@Override
public void run() {
String message;
try {
WakeOnLanSender.sendWolPacket(computer);
- message = "It may take a few seconds for your PC to wake up. " +
- "If it doesn't, make sure it's configured properly for Wake-On-LAN.";
+ message = getResources().getString(R.string.wol_waking_msg);
} catch (IOException e) {
- message = "Failed to send Wake-On-LAN packets";
+ message = getResources().getString(R.string.wol_fail);
}
final String toastMessage = message;
@@ -410,16 +407,15 @@ public class PcView extends Activity {
private void doUnpair(final ComputerDetails computer) {
if (computer.reachability == ComputerDetails.Reachability.OFFLINE) {
- Toast.makeText(PcView.this, "Computer is offline", Toast.LENGTH_SHORT).show();
+ Toast.makeText(PcView.this, getResources().getString(R.string.error_pc_offline), Toast.LENGTH_SHORT).show();
return;
}
if (managerBinder == null) {
- Toast.makeText(PcView.this, "The ComputerManager service is not running. " +
- "Please wait a few seconds or restart the app.", Toast.LENGTH_LONG).show();
+ Toast.makeText(PcView.this, getResources().getString(R.string.error_manager_not_running), Toast.LENGTH_LONG).show();
return;
}
- Toast.makeText(PcView.this, "Unpairing...", Toast.LENGTH_SHORT).show();
+ Toast.makeText(PcView.this, getResources().getString(R.string.unpairing), Toast.LENGTH_SHORT).show();
new Thread(new Runnable() {
@Override
public void run() {
@@ -441,20 +437,19 @@ public class PcView extends Activity {
if (httpConn.getPairState() == PairingManager.PairState.PAIRED) {
httpConn.unpair();
if (httpConn.getPairState() == PairingManager.PairState.NOT_PAIRED) {
- message = "Unpaired successfully";
+ message = getResources().getString(R.string.unpair_success);
}
else {
- message = "Failed to unpair";
+ message = getResources().getString(R.string.unpair_fail);
}
}
else {
- message = "Device was not paired";
+ message = getResources().getString(R.string.unpair_error);
}
} catch (UnknownHostException e) {
- message = "Failed to resolve host";
+ message = getResources().getString(R.string.error_unknown_host);
} catch (FileNotFoundException e) {
- message = "GFE returned an HTTP 404 error. Make sure your PC is running a supported GPU. Using remote desktop software can also cause this error. "
- + "Try rebooting your machine or reinstalling GFE.";
+ message = getResources().getString(R.string.error_404);
} catch (Exception e) {
message = e.getMessage();
}
@@ -472,12 +467,11 @@ public class PcView extends Activity {
private void doAppList(ComputerDetails computer) {
if (computer.reachability == ComputerDetails.Reachability.OFFLINE) {
- Toast.makeText(PcView.this, "Computer is offline", Toast.LENGTH_SHORT).show();
+ Toast.makeText(PcView.this, getResources().getString(R.string.error_pc_offline), Toast.LENGTH_SHORT).show();
return;
}
if (managerBinder == null) {
- Toast.makeText(PcView.this, "The ComputerManager service is not running. " +
- "Please wait a few seconds or restart the app.", Toast.LENGTH_LONG).show();
+ Toast.makeText(PcView.this, getResources().getString(R.string.error_manager_not_running), Toast.LENGTH_LONG).show();
return;
}
@@ -516,8 +510,7 @@ public class PcView extends Activity {
case DELETE_ID:
if (managerBinder == null) {
- Toast.makeText(PcView.this, "The ComputerManager service is not running. " +
- "Please wait a few seconds or restart the app.", Toast.LENGTH_LONG).show();
+ Toast.makeText(PcView.this, getResources().getString(R.string.error_manager_not_running), Toast.LENGTH_LONG).show();
return true;
}
managerBinder.removeComputer(computer.details.name);
diff --git a/app/src/main/java/com/limelight/preferences/AddComputerManually.java b/app/src/main/java/com/limelight/preferences/AddComputerManually.java
index 6c4f49fc..1f38d983 100644
--- a/app/src/main/java/com/limelight/preferences/AddComputerManually.java
+++ b/app/src/main/java/com/limelight/preferences/AddComputerManually.java
@@ -48,20 +48,21 @@ public class AddComputerManually extends Activity {
String msg;
boolean finish = false;
- SpinnerDialog dialog = SpinnerDialog.displayDialog(this, "Add PC Manually", "Connecting to the specified PC...", false);
+ SpinnerDialog dialog = SpinnerDialog.displayDialog(this, getResources().getString(R.string.title_add_pc),
+ getResources().getString(R.string.msg_add_pc), false);
try {
InetAddress addr = InetAddress.getByName(host);
if (!managerBinder.addComputerBlocking(addr)){
- msg = "Unable to connect to the specified computer. Make sure the required ports are allowed through the firewall.";
+ msg = getResources().getString(R.string.addpc_fail);
}
else {
- msg = "Successfully added computer";
+ msg = getResources().getString(R.string.addpc_success);
finish = true;
}
} catch (UnknownHostException e) {
- msg = "Unable to resolve PC address. Make sure you didn't make a typo in the address.";
+ msg = getResources().getString(R.string.addpc_unknown_host);
}
dialog.dismiss();
@@ -149,7 +150,7 @@ public class AddComputerManually extends Activity {
keyEvent.getAction() == KeyEvent.ACTION_DOWN &&
keyEvent.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
if (hostText.getText().length() == 0) {
- Toast.makeText(AddComputerManually.this, "You must enter an IP address", Toast.LENGTH_LONG).show();
+ Toast.makeText(AddComputerManually.this, getResources().getString(R.string.addpc_enter_ip), Toast.LENGTH_LONG).show();
return true;
}
@@ -162,6 +163,6 @@ public class AddComputerManually extends Activity {
// Bind to the ComputerManager service
bindService(new Intent(AddComputerManually.this,
- ComputerManagerService.class), serviceConnection, Service.BIND_AUTO_CREATE);
+ ComputerManagerService.class), serviceConnection, Service.BIND_AUTO_CREATE);
}
}
diff --git a/app/src/main/res/layout-land/activity_pc_view.xml b/app/src/main/res/layout-land/activity_pc_view.xml
index 06ad7c52..68e830ab 100644
--- a/app/src/main/res/layout-land/activity_pc_view.xml
+++ b/app/src/main/res/layout-land/activity_pc_view.xml
@@ -42,7 +42,7 @@
android:layout_centerVertical="true"
android:textAppearance="?android:attr/textAppearanceLarge"
android:gravity="center"
- android:text="Searching for PCs on the network..."/>
+ android:text="@string/searching_pc"/>
@@ -68,4 +68,4 @@
android:src="@drawable/add_computer"
style="?android:attr/borderlessButtonStyle"/>
-
\ No newline at end of file
+
diff --git a/app/src/main/res/layout-port/activity_pc_view.xml b/app/src/main/res/layout-port/activity_pc_view.xml
index 20a7cb60..5f3bc8b9 100644
--- a/app/src/main/res/layout-port/activity_pc_view.xml
+++ b/app/src/main/res/layout-port/activity_pc_view.xml
@@ -42,7 +42,7 @@
android:layout_centerVertical="true"
android:textAppearance="?android:attr/textAppearanceLarge"
android:gravity="center"
- android:text="Searching for PCs on the network..."/>
+ android:text="@string/searching_pc"/>
@@ -68,4 +68,4 @@
android:src="@drawable/add_computer"
style="?android:attr/borderlessButtonStyle"/>
-
\ No newline at end of file
+
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
index 2b597539..73df0415 100644
--- a/app/src/main/res/values/arrays.xml
+++ b/app/src/main/res/values/arrays.xml
@@ -6,7 +6,7 @@
- 1080p 30 FPS
- 1080p 60 FPS
-
+
- 720p30
- 720p60
- 1080p30
@@ -14,13 +14,13 @@
- - Force Software Decoding
- Auto-select Decoder
+ - Force Software Decoding
- Force Hardware Decoding
-
- - software
+
- auto
+ - software
- hardware
-
\ No newline at end of file
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 8c0cfe6b..0373a51a 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1,12 +1,87 @@
+
+ View Game List
+ Pair with PC
+ Unpair
+ Send Wake-On-LAN request
+ Delete PC
+
+
+ Pairing...
+ Computer is offline
+ Computer is currently in a game. You must close the game before pairing.
+ Pairing
+ Please enter the following PIN on the target PC:
+ Incorrect PIN
+ Pairing failed
+ Paired successfully
+
+
+ Computer is online
+ Unable to wake PC because GFE didn\'t send a MAC address
+ Waking PC...
+ It may take a few seconds for your PC to wake up.
+ If it doesn\'t, make sure it'\s configured properly for Wake-On-LAN.
+
+ Failed to send Wake-On-LAN packets
+
+
+ Unpairing...
+ Unpaired successfully
+ Failed to unpair
+ Device was not paired
+
+
+ Computer is offline
+ The ComputerManager service is not running. Please wait a few seconds or restart the app.
+ Failed to resolve host
+ GFE returned an HTTP 404 error. Make sure your PC is running a supported GPU.
+ Using remote desktop software can also cause this error. Try rebooting your machine or reinstalling GFE.
+
+
+
+ Establishing Connection
+ Starting connection
+ Warning: Your active network connection is metered!
+ Average client-side frame latency:
+ hardware decoder latency:
+ Average hardware decoder latency:
+ Starting
+ Connection Error
+ Fail starting
+ Connection Terminated
+ The connection was terminated
+
+
+ Unable to connect to the specified computer. Make sure the required ports are allowed through the firewall.
+ Successfully added computer
+ Unable to resolve PC address. Make sure you didn\'t make a typo in the address.
+ You must enter an IP address
+
IP address of GeForce PC
+ Searching for PCs on the network...
+
+
+ Apps on
+ Resume Session
+ Quit Session
+ Quit Current Game and Start
+ Cancel
+ App List
+ Refreshing apps...
+ Error
+ Failed to get app list
+ Quitting
+ Successfully quit
+ Failed to quit
Add PC Manually
Add PC
+ Connecting to the specified PC...
Basic Settings