Added a Wi-Fi (non-metered) only setting
This commit is contained in:
parent
adad1d88d6
commit
8a1f3b7c41
6 changed files with 44 additions and 4 deletions
|
@ -48,7 +48,7 @@ class YuzuApplication : Application() {
|
||||||
documentsTree = DocumentsTree()
|
documentsTree = DocumentsTree()
|
||||||
DirectoryInitialization.start(applicationContext)
|
DirectoryInitialization.start(applicationContext)
|
||||||
GpuDriverHelper.initializeDriverParameters(applicationContext)
|
GpuDriverHelper.initializeDriverParameters(applicationContext)
|
||||||
NetworkHelper.setRoutes(applicationContext)
|
NetworkHelper.getRoute(applicationContext)
|
||||||
MultiplayerHelper.initRoom(applicationContext)
|
MultiplayerHelper.initRoom(applicationContext)
|
||||||
NativeLibrary.logDeviceInfo()
|
NativeLibrary.logDeviceInfo()
|
||||||
|
|
||||||
|
|
|
@ -132,6 +132,8 @@ class Settings {
|
||||||
const val PREF_BUTTON_TOGGLE_13 = "buttonToggle13"
|
const val PREF_BUTTON_TOGGLE_13 = "buttonToggle13"
|
||||||
const val PREF_BUTTON_TOGGLE_14 = "buttonToggle14"
|
const val PREF_BUTTON_TOGGLE_14 = "buttonToggle14"
|
||||||
|
|
||||||
|
const val PREF_FORCE_WIFI = "Network_ForceWifi"
|
||||||
|
|
||||||
const val PREF_ROOM_ADDRESS = "MultiplayerRoom_ServerAddress"
|
const val PREF_ROOM_ADDRESS = "MultiplayerRoom_ServerAddress"
|
||||||
const val PREF_ROOM_PORT = "MultiplayerRoom_ServerPort"
|
const val PREF_ROOM_PORT = "MultiplayerRoom_ServerPort"
|
||||||
const val PREF_ROOM_NICKNAME = "MultiplayerRoom_Nickname"
|
const val PREF_ROOM_NICKNAME = "MultiplayerRoom_Nickname"
|
||||||
|
|
|
@ -450,6 +450,31 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
|
||||||
settingsActivity.setToolbarTitle(settingsActivity.getString(R.string.preferences_network))
|
settingsActivity.setToolbarTitle(settingsActivity.getString(R.string.preferences_network))
|
||||||
|
|
||||||
sl.apply {
|
sl.apply {
|
||||||
|
val forceWifi: AbstractBooleanSetting = object : AbstractBooleanSetting {
|
||||||
|
override var boolean: Boolean
|
||||||
|
get() = preferences.getBoolean(Settings.PREF_FORCE_WIFI, false)
|
||||||
|
set(value) {
|
||||||
|
preferences.edit()
|
||||||
|
.putBoolean(Settings.PREF_FORCE_WIFI, value)
|
||||||
|
.apply()
|
||||||
|
}
|
||||||
|
override val key: String? = null
|
||||||
|
override val section: String? = null
|
||||||
|
override val isRuntimeEditable: Boolean = false
|
||||||
|
override val valueAsString: String
|
||||||
|
get() = preferences.getBoolean(Settings.PREF_FORCE_WIFI, false).toString()
|
||||||
|
override val defaultValue: Any = false
|
||||||
|
}
|
||||||
|
|
||||||
|
add(
|
||||||
|
SwitchSetting(
|
||||||
|
forceWifi,
|
||||||
|
R.string.set_force_wifi,
|
||||||
|
R.string.force_wifi_desc,
|
||||||
|
"",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
)
|
||||||
add(
|
add(
|
||||||
TextSetting(
|
TextSetting(
|
||||||
StringSetting.NETWORK_ROUTE,
|
StringSetting.NETWORK_ROUTE,
|
||||||
|
|
|
@ -5,13 +5,24 @@ package org.yuzu.yuzu_emu.utils
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.net.ConnectivityManager
|
import android.net.ConnectivityManager
|
||||||
|
import androidx.preference.PreferenceManager
|
||||||
|
import org.yuzu.yuzu_emu.features.settings.model.Settings
|
||||||
|
|
||||||
object NetworkHelper {
|
object NetworkHelper {
|
||||||
fun getRoutes(context: Context): String {
|
/**
|
||||||
|
* Gets available network interface info/route info - currently the active network info.
|
||||||
|
* @return The route info separated by semicolons (interface, address, netmask, gateway), or null if no networks are available.
|
||||||
|
*/
|
||||||
|
fun getRoute(context: Context): String? {
|
||||||
val connectivity =
|
val connectivity =
|
||||||
context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
|
context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
|
||||||
|
|
||||||
val lp = connectivity.getLinkProperties(connectivity.activeNetwork) ?: return ""
|
val preferences = PreferenceManager.getDefaultSharedPreferences(context)
|
||||||
|
|
||||||
|
if(connectivity.isActiveNetworkMetered && preferences.getBoolean(Settings.PREF_FORCE_WIFI, false))
|
||||||
|
return null
|
||||||
|
|
||||||
|
val lp = connectivity.getLinkProperties(connectivity.activeNetwork) ?: return null
|
||||||
|
|
||||||
val ifName = lp.interfaceName
|
val ifName = lp.interfaceName
|
||||||
val addr = lp.linkAddresses[0]
|
val addr = lp.linkAddresses[0]
|
||||||
|
|
|
@ -347,7 +347,7 @@ namespace {
|
||||||
u16 server_port = Network::DefaultRoomPort,
|
u16 server_port = Network::DefaultRoomPort,
|
||||||
const std::string& password = "") {
|
const std::string& password = "") {
|
||||||
auto room_network = m_system.GetRoomNetwork();
|
auto room_network = m_system.GetRoomNetwork();
|
||||||
a
|
|
||||||
if (const auto member = room_network.GetRoomMember().lock()) {
|
if (const auto member = room_network.GetRoomMember().lock()) {
|
||||||
// Prevent the user from trying to join a room while they are already joining.
|
// Prevent the user from trying to join a room while they are already joining.
|
||||||
if (member->GetState() == Network::RoomMember::State::Joining || member->IsConnected()) {
|
if (member->GetState() == Network::RoomMember::State::Joining || member->IsConnected()) {
|
||||||
|
|
|
@ -155,6 +155,8 @@
|
||||||
<!-- Network settings strings -->
|
<!-- Network settings strings -->
|
||||||
<string name="network_route_desc">Sets the default network route</string>
|
<string name="network_route_desc">Sets the default network route</string>
|
||||||
<string name="set_network_route">Set network route</string>
|
<string name="set_network_route">Set network route</string>
|
||||||
|
<string name="set_force_wifi">Force Wi-Fi</string>
|
||||||
|
<string name="force_wifi_desc">Forces yuzu to use only Wi-Fi (non-metered connections in general)</string>
|
||||||
|
|
||||||
<!-- Multiplayer settings strings -->
|
<!-- Multiplayer settings strings -->
|
||||||
<string name="multiplayer_room_server_address">Server address</string>
|
<string name="multiplayer_room_server_address">Server address</string>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue