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