summaryrefslogtreecommitdiff
path: root/src/android
diff options
context:
space:
mode:
authorGravatar Charles Lombardo2023-06-02 03:10:08 -0400
committerGravatar Charles Lombardo2023-06-05 14:34:23 -0400
commitcba5865afe025b954b24b0ae8562f94c0b2a62af (patch)
treebf4a6ffb2896d19439818ef120248f6f5e228e69 /src/android
parentMerge pull request #10605 from 8bitDream/kotlin (diff)
downloadyuzu-cba5865afe025b954b24b0ae8562f94c0b2a62af.tar.gz
yuzu-cba5865afe025b954b24b0ae8562f94c0b2a62af.tar.xz
yuzu-cba5865afe025b954b24b0ae8562f94c0b2a62af.zip
android: Create licenses page
Diffstat (limited to 'src/android')
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/LicenseAdapter.kt54
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/AboutFragment.kt10
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/LicenseBottomSheetDialogFragment.kt59
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/LicensesFragment.kt137
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/model/License.kt16
-rw-r--r--src/android/app/src/main/res/layout/dialog_license.xml64
-rw-r--r--src/android/app/src/main/res/layout/fragment_about.xml33
-rw-r--r--src/android/app/src/main/res/layout/fragment_licenses.xml30
-rw-r--r--src/android/app/src/main/res/navigation/home_navigation.xml11
-rw-r--r--src/android/app/src/main/res/values/strings.xml508
10 files changed, 918 insertions, 4 deletions
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/LicenseAdapter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/LicenseAdapter.kt
new file mode 100644
index 000000000..7006651d0
--- /dev/null
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/LicenseAdapter.kt
@@ -0,0 +1,54 @@
1// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
2// SPDX-License-Identifier: GPL-2.0-or-later
3
4package org.yuzu.yuzu_emu.adapters
5
6import android.view.LayoutInflater
7import android.view.View
8import android.view.ViewGroup
9import androidx.appcompat.app.AppCompatActivity
10import androidx.recyclerview.widget.RecyclerView
11import androidx.recyclerview.widget.RecyclerView.ViewHolder
12import org.yuzu.yuzu_emu.YuzuApplication
13import org.yuzu.yuzu_emu.databinding.ListItemSettingBinding
14import org.yuzu.yuzu_emu.fragments.LicenseBottomSheetDialogFragment
15import org.yuzu.yuzu_emu.model.License
16
17class LicenseAdapter(private val activity: AppCompatActivity, var licenses: List<License>) :
18 RecyclerView.Adapter<LicenseAdapter.LicenseViewHolder>(),
19 View.OnClickListener {
20 override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): LicenseViewHolder {
21 val binding =
22 ListItemSettingBinding.inflate(LayoutInflater.from(parent.context), parent, false)
23 binding.root.setOnClickListener(this)
24 return LicenseViewHolder(binding)
25 }
26
27 override fun getItemCount(): Int = licenses.size
28
29 override fun onBindViewHolder(holder: LicenseViewHolder, position: Int) {
30 holder.bind(licenses[position])
31 }
32
33 override fun onClick(view: View) {
34 val license = (view.tag as LicenseViewHolder).license
35 LicenseBottomSheetDialogFragment.newInstance(license)
36 .show(activity.supportFragmentManager, LicenseBottomSheetDialogFragment.TAG)
37 }
38
39 inner class LicenseViewHolder(val binding: ListItemSettingBinding) : ViewHolder(binding.root) {
40 lateinit var license: License
41
42 init {
43 itemView.tag = this
44 }
45
46 fun bind(license: License) {
47 this.license = license
48
49 val context = YuzuApplication.appContext
50 binding.textSettingName.text = context.getString(license.titleId)
51 binding.textSettingDescription.text = context.getString(license.descriptionId)
52 }
53 }
54}
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/AboutFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/AboutFragment.kt
index 0314feff6..c92e2755c 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/AboutFragment.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/AboutFragment.kt
@@ -15,13 +15,12 @@ import android.view.View
15import android.view.ViewGroup 15import android.view.ViewGroup
16import android.view.ViewGroup.MarginLayoutParams 16import android.view.ViewGroup.MarginLayoutParams
17import android.widget.Toast 17import android.widget.Toast
18import androidx.core.content.ContextCompat
19import androidx.core.view.ViewCompat 18import androidx.core.view.ViewCompat
20import androidx.core.view.WindowInsetsCompat 19import androidx.core.view.WindowInsetsCompat
21import androidx.core.view.updatePadding 20import androidx.core.view.updatePadding
22import androidx.fragment.app.Fragment 21import androidx.fragment.app.Fragment
23import androidx.fragment.app.activityViewModels 22import androidx.fragment.app.activityViewModels
24import androidx.navigation.fragment.findNavController 23import androidx.navigation.findNavController
25import com.google.android.material.transition.MaterialSharedAxis 24import com.google.android.material.transition.MaterialSharedAxis
26import org.yuzu.yuzu_emu.BuildConfig 25import org.yuzu.yuzu_emu.BuildConfig
27import org.yuzu.yuzu_emu.R 26import org.yuzu.yuzu_emu.R
@@ -38,6 +37,7 @@ class AboutFragment : Fragment() {
38 super.onCreate(savedInstanceState) 37 super.onCreate(savedInstanceState)
39 enterTransition = MaterialSharedAxis(MaterialSharedAxis.X, true) 38 enterTransition = MaterialSharedAxis(MaterialSharedAxis.X, true)
40 returnTransition = MaterialSharedAxis(MaterialSharedAxis.X, false) 39 returnTransition = MaterialSharedAxis(MaterialSharedAxis.X, false)
40 reenterTransition = MaterialSharedAxis(MaterialSharedAxis.X, false)
41 } 41 }
42 42
43 override fun onCreateView( 43 override fun onCreateView(
@@ -54,7 +54,7 @@ class AboutFragment : Fragment() {
54 homeViewModel.setStatusBarShadeVisibility(visible = false) 54 homeViewModel.setStatusBarShadeVisibility(visible = false)
55 55
56 binding.toolbarAbout.setNavigationOnClickListener { 56 binding.toolbarAbout.setNavigationOnClickListener {
57 parentFragmentManager.primaryNavigationFragment?.findNavController()?.popBackStack() 57 binding.root.findNavController().popBackStack()
58 } 58 }
59 59
60 binding.imageLogo.setOnLongClickListener { 60 binding.imageLogo.setOnLongClickListener {
@@ -67,6 +67,10 @@ class AboutFragment : Fragment() {
67 } 67 }
68 68
69 binding.buttonContributors.setOnClickListener { openLink(getString(R.string.contributors_link)) } 69 binding.buttonContributors.setOnClickListener { openLink(getString(R.string.contributors_link)) }
70 binding.buttonLicenses.setOnClickListener {
71 exitTransition = MaterialSharedAxis(MaterialSharedAxis.X, true)
72 binding.root.findNavController().navigate(R.id.action_aboutFragment_to_licensesFragment)
73 }
70 74
71 binding.textBuildHash.text = BuildConfig.GIT_HASH 75 binding.textBuildHash.text = BuildConfig.GIT_HASH
72 binding.buttonBuildHash.setOnClickListener { 76 binding.buttonBuildHash.setOnClickListener {
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/LicenseBottomSheetDialogFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/LicenseBottomSheetDialogFragment.kt
new file mode 100644
index 000000000..78419191c
--- /dev/null
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/LicenseBottomSheetDialogFragment.kt
@@ -0,0 +1,59 @@
1// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
2// SPDX-License-Identifier: GPL-2.0-or-later
3
4package org.yuzu.yuzu_emu.fragments
5
6import android.os.Bundle
7import android.view.LayoutInflater
8import android.view.View
9import android.view.ViewGroup
10import com.google.android.material.bottomsheet.BottomSheetBehavior
11import com.google.android.material.bottomsheet.BottomSheetDialogFragment
12import org.yuzu.yuzu_emu.databinding.DialogLicenseBinding
13import org.yuzu.yuzu_emu.model.License
14import org.yuzu.yuzu_emu.utils.SerializableHelper.parcelable
15
16class LicenseBottomSheetDialogFragment : BottomSheetDialogFragment() {
17 private var _binding: DialogLicenseBinding? = null
18 private val binding get() = _binding!!
19
20 override fun onCreateView(
21 inflater: LayoutInflater,
22 container: ViewGroup?,
23 savedInstanceState: Bundle?
24 ): View {
25 _binding = DialogLicenseBinding.inflate(layoutInflater)
26 return binding.root
27 }
28
29 override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
30 super.onViewCreated(view, savedInstanceState)
31 BottomSheetBehavior.from<View>(view.parent as View).state =
32 BottomSheetBehavior.STATE_HALF_EXPANDED
33
34 val license = requireArguments().parcelable<License>(LICENSE)!!
35
36 binding.apply {
37 textTitle.setText(license.titleId)
38 textLink.setText(license.linkId)
39 textCopyright.setText(license.copyrightId)
40 textLicense.setText(license.licenseId)
41 }
42 }
43
44 companion object {
45 const val TAG = "LicenseBottomSheetDialogFragment"
46
47 const val LICENSE = "License"
48
49 fun newInstance(
50 license: License
51 ): LicenseBottomSheetDialogFragment {
52 val dialog = LicenseBottomSheetDialogFragment()
53 val bundle = Bundle()
54 bundle.putParcelable(LICENSE, license)
55 dialog.arguments = bundle
56 return dialog
57 }
58 }
59}
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/LicensesFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/LicensesFragment.kt
new file mode 100644
index 000000000..59141e823
--- /dev/null
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/LicensesFragment.kt
@@ -0,0 +1,137 @@
1// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
2// SPDX-License-Identifier: GPL-2.0-or-later
3
4package org.yuzu.yuzu_emu.fragments
5
6import android.os.Bundle
7import android.view.LayoutInflater
8import android.view.View
9import android.view.ViewGroup
10import android.view.ViewGroup.MarginLayoutParams
11import androidx.appcompat.app.AppCompatActivity
12import androidx.core.view.ViewCompat
13import androidx.core.view.WindowInsetsCompat
14import androidx.core.view.updatePadding
15import androidx.fragment.app.Fragment
16import androidx.fragment.app.activityViewModels
17import androidx.navigation.findNavController
18import androidx.recyclerview.widget.LinearLayoutManager
19import com.google.android.material.transition.MaterialSharedAxis
20import org.yuzu.yuzu_emu.R
21import org.yuzu.yuzu_emu.adapters.LicenseAdapter
22import org.yuzu.yuzu_emu.databinding.FragmentLicensesBinding
23import org.yuzu.yuzu_emu.model.HomeViewModel
24import org.yuzu.yuzu_emu.model.License
25
26class LicensesFragment : Fragment() {
27 private var _binding: FragmentLicensesBinding? = null
28 private val binding get() = _binding!!
29
30 private val homeViewModel: HomeViewModel by activityViewModels()
31
32 override fun onCreate(savedInstanceState: Bundle?) {
33 super.onCreate(savedInstanceState)
34 enterTransition = MaterialSharedAxis(MaterialSharedAxis.X, true)
35 returnTransition = MaterialSharedAxis(MaterialSharedAxis.X, false)
36 }
37
38 override fun onCreateView(
39 inflater: LayoutInflater,
40 container: ViewGroup?,
41 savedInstanceState: Bundle?
42 ): View {
43 _binding = FragmentLicensesBinding.inflate(layoutInflater)
44 return binding.root
45 }
46
47 override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
48 homeViewModel.setNavigationVisibility(visible = false, animated = true)
49 homeViewModel.setStatusBarShadeVisibility(visible = false)
50
51 binding.toolbarLicenses.setNavigationOnClickListener {
52 binding.root.findNavController().popBackStack()
53 }
54
55 val licenses = listOf(
56 License(
57 R.string.license_fidelityfx_fsr,
58 R.string.license_fidelityfx_fsr_description,
59 R.string.license_fidelityfx_fsr_link,
60 R.string.license_fidelityfx_fsr_copyright,
61 R.string.license_fidelityfx_fsr_text
62 ),
63 License(
64 R.string.license_cubeb,
65 R.string.license_cubeb_description,
66 R.string.license_cubeb_link,
67 R.string.license_cubeb_copyright,
68 R.string.license_cubeb_text
69 ),
70 License(
71 R.string.license_dynarmic,
72 R.string.license_dynarmic_description,
73 R.string.license_dynarmic_link,
74 R.string.license_dynarmic_copyright,
75 R.string.license_dynarmic_text
76 ),
77 License(
78 R.string.license_ffmpeg,
79 R.string.license_ffmpeg_description,
80 R.string.license_ffmpeg_link,
81 R.string.license_ffmpeg_copyright,
82 R.string.license_ffmpeg_text
83 ),
84 License(
85 R.string.license_opus,
86 R.string.license_opus_description,
87 R.string.license_opus_link,
88 R.string.license_opus_copyright,
89 R.string.license_opus_text
90 ),
91 License(
92 R.string.license_sirit,
93 R.string.license_sirit_description,
94 R.string.license_sirit_link,
95 R.string.license_sirit_copyright,
96 R.string.license_sirit_text
97 ),
98 License(
99 R.string.license_adreno_tools,
100 R.string.license_adreno_tools_description,
101 R.string.license_adreno_tools_link,
102 R.string.license_adreno_tools_copyright,
103 R.string.license_adreno_tools_text
104 )
105 )
106
107 binding.listLicenses.apply {
108 layoutManager = LinearLayoutManager(requireContext())
109 adapter = LicenseAdapter(requireActivity() as AppCompatActivity, licenses)
110 }
111
112 setInsets()
113 }
114
115 private fun setInsets() =
116 ViewCompat.setOnApplyWindowInsetsListener(binding.root) { _: View, windowInsets: WindowInsetsCompat ->
117 val barInsets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
118 val cutoutInsets = windowInsets.getInsets(WindowInsetsCompat.Type.displayCutout())
119
120 val leftInsets = barInsets.left + cutoutInsets.left
121 val rightInsets = barInsets.right + cutoutInsets.right
122
123 val mlpAppBar = binding.appbarLicenses.layoutParams as MarginLayoutParams
124 mlpAppBar.leftMargin = leftInsets
125 mlpAppBar.rightMargin = rightInsets
126 binding.appbarLicenses.layoutParams = mlpAppBar
127
128 val mlpScrollAbout = binding.listLicenses.layoutParams as MarginLayoutParams
129 mlpScrollAbout.leftMargin = leftInsets
130 mlpScrollAbout.rightMargin = rightInsets
131 binding.listLicenses.layoutParams = mlpScrollAbout
132
133 binding.listLicenses.updatePadding(bottom = barInsets.bottom)
134
135 windowInsets
136 }
137}
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/License.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/License.kt
new file mode 100644
index 000000000..f24d5cf34
--- /dev/null
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/License.kt
@@ -0,0 +1,16 @@
1// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
2// SPDX-License-Identifier: GPL-2.0-or-later
3
4package org.yuzu.yuzu_emu.model
5
6import android.os.Parcelable
7import kotlinx.parcelize.Parcelize
8
9@Parcelize
10data class License(
11 val titleId: Int,
12 val descriptionId: Int,
13 val linkId: Int,
14 val copyrightId: Int,
15 val licenseId: Int
16) : Parcelable
diff --git a/src/android/app/src/main/res/layout/dialog_license.xml b/src/android/app/src/main/res/layout/dialog_license.xml
new file mode 100644
index 000000000..866857562
--- /dev/null
+++ b/src/android/app/src/main/res/layout/dialog_license.xml
@@ -0,0 +1,64 @@
1<?xml version="1.0" encoding="utf-8"?>
2<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:layout_width="match_parent"
4 android:layout_height="match_parent"
5 xmlns:tools="http://schemas.android.com/tools">
6
7 <androidx.core.widget.NestedScrollView
8 android:layout_width="match_parent"
9 android:layout_height="wrap_content">
10
11 <LinearLayout
12 android:layout_width="match_parent"
13 android:layout_height="wrap_content"
14 android:orientation="vertical"
15 android:layout_marginHorizontal="16dp">
16
17 <com.google.android.material.bottomsheet.BottomSheetDragHandleView
18 android:layout_width="wrap_content"
19 android:layout_height="wrap_content"
20 android:layout_gravity="center_horizontal"/>
21
22 <com.google.android.material.textview.MaterialTextView
23 style="@style/TextAppearance.Material3.HeadlineLarge"
24 android:id="@+id/text_title"
25 android:layout_width="match_parent"
26 android:layout_height="wrap_content"
27 android:gravity="center"
28 tools:text="@string/license_adreno_tools" />
29
30 <com.google.android.material.textview.MaterialTextView
31 style="@style/TextAppearance.Material3.BodyLarge"
32 android:id="@+id/text_link"
33 android:layout_width="match_parent"
34 android:layout_height="wrap_content"
35 android:gravity="center"
36 android:layout_marginTop="16dp"
37 android:autoLink="all"
38 tools:text="@string/license_adreno_tools_link" />
39
40 <com.google.android.material.textview.MaterialTextView
41 style="@style/TextAppearance.Material3.BodyLarge"
42 android:id="@+id/text_copyright"
43 android:layout_width="match_parent"
44 android:layout_height="wrap_content"
45 android:gravity="center"
46 android:layout_marginTop="16dp"
47 android:textStyle="bold"
48 tools:text="@string/license_adreno_tools_copyright" />
49
50 <com.google.android.material.textview.MaterialTextView
51 style="@style/TextAppearance.Material3.BodyMedium"
52 android:id="@+id/text_license"
53 android:layout_width="match_parent"
54 android:layout_height="wrap_content"
55 android:layout_gravity="center"
56 android:layout_marginVertical="16dp"
57 android:autoLink="all"
58 tools:text="@string/license_adreno_tools_text" />
59
60 </LinearLayout>
61
62 </androidx.core.widget.NestedScrollView>
63
64</androidx.coordinatorlayout.widget.CoordinatorLayout>
diff --git a/src/android/app/src/main/res/layout/fragment_about.xml b/src/android/app/src/main/res/layout/fragment_about.xml
index 549f00aa5..3e1d98451 100644
--- a/src/android/app/src/main/res/layout/fragment_about.xml
+++ b/src/android/app/src/main/res/layout/fragment_about.xml
@@ -115,6 +115,39 @@
115 android:layout_marginHorizontal="20dp" /> 115 android:layout_marginHorizontal="20dp" />
116 116
117 <LinearLayout 117 <LinearLayout
118 android:id="@+id/button_licenses"
119 android:layout_width="match_parent"
120 android:layout_height="wrap_content"
121 android:paddingVertical="16dp"
122 android:paddingHorizontal="16dp"
123 android:background="?attr/selectableItemBackground"
124 android:orientation="vertical">
125
126 <com.google.android.material.textview.MaterialTextView
127 style="@style/TextAppearance.Material3.TitleMedium"
128 android:layout_width="match_parent"
129 android:layout_height="wrap_content"
130 android:layout_marginHorizontal="24dp"
131 android:textAlignment="viewStart"
132 android:text="@string/licenses" />
133
134 <com.google.android.material.textview.MaterialTextView
135 style="@style/TextAppearance.Material3.BodyMedium"
136 android:layout_width="match_parent"
137 android:layout_height="wrap_content"
138 android:layout_marginHorizontal="24dp"
139 android:layout_marginTop="6dp"
140 android:textAlignment="viewStart"
141 android:text="@string/licenses_description" />
142
143 </LinearLayout>
144
145 <com.google.android.material.divider.MaterialDivider
146 android:layout_width="match_parent"
147 android:layout_height="wrap_content"
148 android:layout_marginHorizontal="20dp" />
149
150 <LinearLayout
118 android:id="@+id/button_build_hash" 151 android:id="@+id/button_build_hash"
119 android:layout_width="match_parent" 152 android:layout_width="match_parent"
120 android:layout_height="wrap_content" 153 android:layout_height="wrap_content"
diff --git a/src/android/app/src/main/res/layout/fragment_licenses.xml b/src/android/app/src/main/res/layout/fragment_licenses.xml
new file mode 100644
index 000000000..6b31ff5b4
--- /dev/null
+++ b/src/android/app/src/main/res/layout/fragment_licenses.xml
@@ -0,0 +1,30 @@
1<?xml version="1.0" encoding="utf-8"?>
2<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 xmlns:app="http://schemas.android.com/apk/res-auto"
4 android:id="@+id/coordinator_licenses"
5 android:layout_width="match_parent"
6 android:layout_height="match_parent"
7 android:background="?attr/colorSurface">
8
9 <com.google.android.material.appbar.AppBarLayout
10 android:id="@+id/appbar_licenses"
11 android:layout_width="match_parent"
12 android:layout_height="wrap_content"
13 android:fitsSystemWindows="true">
14
15 <com.google.android.material.appbar.MaterialToolbar
16 android:id="@+id/toolbar_licenses"
17 android:layout_width="match_parent"
18 android:layout_height="?attr/actionBarSize"
19 app:title="@string/licenses"
20 app:navigationIcon="@drawable/ic_back" />
21
22 </com.google.android.material.appbar.AppBarLayout>
23
24 <androidx.recyclerview.widget.RecyclerView
25 android:id="@+id/list_licenses"
26 android:layout_width="match_parent"
27 android:layout_height="match_parent"
28 app:layout_behavior="@string/appbar_scrolling_view_behavior" />
29
30</androidx.coordinatorlayout.widget.CoordinatorLayout>
diff --git a/src/android/app/src/main/res/navigation/home_navigation.xml b/src/android/app/src/main/res/navigation/home_navigation.xml
index 2275ddc32..48072683e 100644
--- a/src/android/app/src/main/res/navigation/home_navigation.xml
+++ b/src/android/app/src/main/res/navigation/home_navigation.xml
@@ -40,11 +40,20 @@
40 <fragment 40 <fragment
41 android:id="@+id/aboutFragment" 41 android:id="@+id/aboutFragment"
42 android:name="org.yuzu.yuzu_emu.fragments.AboutFragment" 42 android:name="org.yuzu.yuzu_emu.fragments.AboutFragment"
43 android:label="AboutFragment" /> 43 android:label="AboutFragment" >
44 <action
45 android:id="@+id/action_aboutFragment_to_licensesFragment"
46 app:destination="@id/licensesFragment" />
47 </fragment>
44 48
45 <fragment 49 <fragment
46 android:id="@+id/earlyAccessFragment" 50 android:id="@+id/earlyAccessFragment"
47 android:name="org.yuzu.yuzu_emu.fragments.EarlyAccessFragment" 51 android:name="org.yuzu.yuzu_emu.fragments.EarlyAccessFragment"
48 android:label="EarlyAccessFragment" /> 52 android:label="EarlyAccessFragment" />
49 53
54 <fragment
55 android:id="@+id/licensesFragment"
56 android:name="org.yuzu.yuzu_emu.fragments.LicensesFragment"
57 android:label="LicensesFragment" />
58
50</navigation> 59</navigation>
diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml
index fc24e27f5..704b12a23 100644
--- a/src/android/app/src/main/res/values/strings.xml
+++ b/src/android/app/src/main/res/values/strings.xml
@@ -104,6 +104,7 @@
104 <string name="contributors">Contributors</string> 104 <string name="contributors">Contributors</string>
105 <string name="contributors_description">Made with \u2764 from the yuzu team</string> 105 <string name="contributors_description">Made with \u2764 from the yuzu team</string>
106 <string name="contributors_link">https://github.com/yuzu-emu/yuzu/graphs/contributors</string> 106 <string name="contributors_link">https://github.com/yuzu-emu/yuzu/graphs/contributors</string>
107 <string name="licenses_description">Projects that make yuzu for Android possible</string>
107 <string name="build">Build</string> 108 <string name="build">Build</string>
108 <string name="support_link">https://discord.gg/u77vRWY</string> 109 <string name="support_link">https://discord.gg/u77vRWY</string>
109 <string name="website_link">https://yuzu-emu.org/</string> 110 <string name="website_link">https://yuzu-emu.org/</string>
@@ -346,4 +347,511 @@
346 <string name="use_black_backgrounds">Use Black Backgrounds</string> 347 <string name="use_black_backgrounds">Use Black Backgrounds</string>
347 <string name="use_black_backgrounds_description">When using the dark theme, apply black backgrounds.</string> 348 <string name="use_black_backgrounds_description">When using the dark theme, apply black backgrounds.</string>
348 349
350 <!-- Licenses screen strings -->
351 <string name="licenses">Licenses</string>
352 <string name="license_fidelityfx_fsr" translatable="false">FidelityFX-FSR</string>
353 <string name="license_fidelityfx_fsr_description">High-quality upscaling from AMD</string>
354 <string name="license_fidelityfx_fsr_link" translatable="false">https://github.com/GPUOpen-Effects/FidelityFX-FSR</string>
355 <string name="license_fidelityfx_fsr_copyright" translatable="false">Copyright © 2021 Advanced Micro Devices, Inc.</string>
356 <string name="license_fidelityfx_fsr_text" translatable="false">
357Permission is hereby granted, free of charge, to any person obtaining a copy
358of this software and associated documentation files (the \"Software"), to deal
359in the Software without restriction, including without limitation the rights
360to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
361copies of the Software, and to permit persons to whom the Software is
362furnished to do so, subject to the following conditions:\n\n
363
364The above copyright notice and this permission notice shall be included in
365all copies or substantial portions of the Software.\n\n
366
367THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
368IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
369FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
370AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
371LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
372OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
373THE SOFTWARE.
374 </string>
375 <string name="license_cubeb" translatable="false">cubeb</string>
376 <string name="license_cubeb_description" translatable="false">Cross platform audio library</string>
377 <string name="license_cubeb_link" translatable="false">https://github.com/mozilla/cubeb</string>
378 <string name="license_cubeb_copyright" translatable="false">Copyright © 2011 Mozilla Foundation</string>
379 <string name="license_cubeb_text" translatable="false">
380Permission to use, copy, modify, and distribute this software for any
381purpose with or without fee is hereby granted, provided that the above
382copyright notice and this permission notice appear in all copies.\n\n
383
384THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
385WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
386MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
387ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
388WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
389ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
390OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
391 </string>
392 <string name="license_dynarmic" translatable="false">Dynarmic</string>
393 <string name="license_dynarmic_description" translatable="false">An ARM dynamic recompiler</string>
394 <string name="license_dynarmic_link" translatable="false">https://github.com/merryhime/dynarmic</string>
395 <string name="license_dynarmic_copyright" translatable="false">Copyright © 2017 merryhime</string>
396 <string name="license_dynarmic_text" translatable="false">
397Permission to use, copy, modify, and/or distribute this software for
398any purpose with or without fee is hereby granted.\n\n
399
400THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
401WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
402MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
403ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
404WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
405AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
406OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
407 </string>
408 <string name="license_ffmpeg" translatable="false">FFmpeg</string>
409 <string name="license_ffmpeg_description" translatable="false">FFmpeg is a collection of libraries and tools to process multimedia content such as audio, video, subtitles and related metadata.</string>
410 <string name="license_ffmpeg_link" translatable="false">https://github.com/FFmpeg/FFmpeg</string>
411 <string name="license_ffmpeg_copyright" translatable="false">Copyright © 1991, 1999 Free Software Foundation, Inc.</string>
412 <string name="license_ffmpeg_text" translatable="false">
413GNU LESSER GENERAL PUBLIC LICENSE\n
414TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n
415
416 0. This License Agreement applies to any software library or other
417program which contains a notice placed by the copyright holder or
418other authorized party saying it may be distributed under the terms of
419this Lesser General Public License (also called \"this License\").
420Each licensee is addressed as \"you\".\n\n
421
422 A \"library\" means a collection of software functions and/or data
423prepared so as to be conveniently linked with application programs
424(which use some of those functions and data) to form executables.\n\n
425
426 The \"Library\", below, refers to any such software library or work
427which has been distributed under these terms. A \"work based on the
428Library\" means either the Library or any derivative work under
429copyright law: that is to say, a work containing the Library or a
430portion of it, either verbatim or with modifications and/or translated
431straightforwardly into another language. (Hereinafter, translation is
432included without limitation in the term \"modification\".)\n\n
433
434 \"Source code\" for a work means the preferred form of the work for
435making modifications to it. For a library, complete source code means
436all the source code for all modules it contains, plus any associated
437interface definition files, plus the scripts used to control compilation
438and installation of the library.\n\n
439
440 Activities other than copying, distribution and modification are not
441covered by this License; they are outside its scope. The act of
442running a program using the Library is not restricted, and output from
443such a program is covered only if its contents constitute a work based
444on the Library (independent of the use of the Library in a tool for
445writing it). Whether that is true depends on what the Library does
446and what the program that uses the Library does.\n\n
447
448 1. You may copy and distribute verbatim copies of the Library\'s
449complete source code as you receive it, in any medium, provided that
450you conspicuously and appropriately publish on each copy an
451appropriate copyright notice and disclaimer of warranty; keep intact
452all the notices that refer to this License and to the absence of any
453warranty; and distribute a copy of this License along with the
454Library.\n\n
455
456 You may charge a fee for the physical act of transferring a copy,
457and you may at your option offer warranty protection in exchange for a
458fee.\n\n
459
460 2. You may modify your copy or copies of the Library or any portion
461of it, thus forming a work based on the Library, and copy and
462distribute such modifications or work under the terms of Section 1
463above, provided that you also meet all of these conditions:\n\n
464
465a) The modified work must itself be a software library.\n\n
466
467b) You must cause the files modified to carry prominent notices
468stating that you changed the files and the date of any change.\n\n
469
470c) You must cause the whole of the work to be licensed at no
471charge to all third parties under the terms of this License.\n\n
472
473d) If a facility in the modified Library refers to a function or a
474table of data to be supplied by an application program that uses
475the facility, other than as an argument passed when the facility
476is invoked, then you must make a good faith effort to ensure that,
477in the event an application does not supply such function or
478table, the facility still operates, and performs whatever part of
479its purpose remains meaningful.\n\n
480
481(For example, a function in a library to compute square roots has
482a purpose that is entirely well-defined independent of the
483application. Therefore, Subsection 2d requires that any
484application-supplied function or table used by this function must
485be optional: if the application does not supply it, the square
486root function must still compute square roots.)\n\n
487
488These requirements apply to the modified work as a whole. If
489identifiable sections of that work are not derived from the Library,
490and can be reasonably considered independent and separate works in
491themselves, then this License, and its terms, do not apply to those
492sections when you distribute them as separate works. But when you
493distribute the same sections as part of a whole which is a work based
494on the Library, the distribution of the whole must be on the terms of
495this License, whose permissions for other licensees extend to the
496entire whole, and thus to each and every part regardless of who wrote
497it.\n\n
498
499Thus, it is not the intent of this section to claim rights or contest
500your rights to work written entirely by you; rather, the intent is to
501exercise the right to control the distribution of derivative or
502collective works based on the Library.\n\n
503
504In addition, mere aggregation of another work not based on the Library
505with the Library (or with a work based on the Library) on a volume of
506a storage or distribution medium does not bring the other work under
507the scope of this License.\n\n
508
509 3. You may opt to apply the terms of the ordinary GNU General Public
510License instead of this License to a given copy of the Library. To do
511this, you must alter all the notices that refer to this License, so
512that they refer to the ordinary GNU General Public License, version 2,
513instead of to this License. (If a newer version than version 2 of the
514ordinary GNU General Public License has appeared, then you can specify
515that version instead if you wish.) Do not make any other change in
516these notices.\n\n
517
518 Once this change is made in a given copy, it is irreversible for
519that copy, so the ordinary GNU General Public License applies to all
520subsequent copies and derivative works made from that copy.\n\n
521
522 This option is useful when you wish to copy part of the code of
523the Library into a program that is not a library.\n\n
524
525 4. You may copy and distribute the Library (or a portion or
526derivative of it, under Section 2) in object code or executable form
527under the terms of Sections 1 and 2 above provided that you accompany
528it with the complete corresponding machine-readable source code, which
529must be distributed under the terms of Sections 1 and 2 above on a
530medium customarily used for software interchange.\n\n
531
532 If distribution of object code is made by offering access to copy
533from a designated place, then offering equivalent access to copy the
534source code from the same place satisfies the requirement to
535distribute the source code, even though third parties are not
536compelled to copy the source along with the object code.\n\n
537
538 5. A program that contains no derivative of any portion of the
539Library, but is designed to work with the Library by being compiled or
540linked with it, is called a \"work that uses the Library\". Such a
541work, in isolation, is not a derivative work of the Library, and
542therefore falls outside the scope of this License.\n\n
543
544 However, linking a \"work that uses the Library\" with the Library
545creates an executable that is a derivative of the Library (because it
546contains portions of the Library), rather than a \"work that uses the
547library\". The executable is therefore covered by this License.
548Section 6 states terms for distribution of such executables.\n\n
549
550 When a \"work that uses the Library\" uses material from a header file
551that is part of the Library, the object code for the work may be a
552derivative work of the Library even though the source code is not.
553Whether this is true is especially significant if the work can be
554linked without the Library, or if the work is itself a library. The
555threshold for this to be true is not precisely defined by law.\n\n
556
557 If such an object file uses only numerical parameters, data
558structure layouts and accessors, and small macros and small inline
559functions (ten lines or less in length), then the use of the object
560file is unrestricted, regardless of whether it is legally a derivative
561work. (Executables containing this object code plus portions of the
562Library will still fall under Section 6.)\n\n
563
564 Otherwise, if the work is a derivative of the Library, you may
565distribute the object code for the work under the terms of Section 6.
566Any executables containing that work also fall under Section 6,
567whether or not they are linked directly with the Library itself.\n\n
568
569 6. As an exception to the Sections above, you may also combine or
570link a \"work that uses the Library\" with the Library to produce a
571work containing portions of the Library, and distribute that work
572under terms of your choice, provided that the terms permit
573modification of the work for the customer\'s own use and reverse
574engineering for debugging such modifications.\n\n
575
576 You must give prominent notice with each copy of the work that the
577Library is used in it and that the Library and its use are covered by
578this License. You must supply a copy of this License. If the work
579during execution displays copyright notices, you must include the
580copyright notice for the Library among them, as well as a reference
581directing the user to the copy of this License. Also, you must do one
582of these things:\n\n
583
584a) Accompany the work with the complete corresponding
585machine-readable source code for the Library including whatever
586changes were used in the work (which must be distributed under
587Sections 1 and 2 above); and, if the work is an executable linked
588with the Library, with the complete machine-readable \"work that
589uses the Library\", as object code and/or source code, so that the
590user can modify the Library and then relink to produce a modified
591executable containing the modified Library. (It is understood
592that the user who changes the contents of definitions files in the
593Library will not necessarily be able to recompile the application
594to use the modified definitions.)\n\n
595
596b) Use a suitable shared library mechanism for linking with the
597Library. A suitable mechanism is one that (1) uses at run time a
598copy of the library already present on the user\'s computer system,
599rather than copying library functions into the executable, and (2)
600will operate properly with a modified version of the library, if
601the user installs one, as long as the modified version is
602interface-compatible with the version that the work was made with.\n\n
603
604c) Accompany the work with a written offer, valid for at
605least three years, to give the same user the materials
606specified in Subsection 6a, above, for a charge no more
607than the cost of performing this distribution.\n\n
608
609d) If distribution of the work is made by offering access to copy
610from a designated place, offer equivalent access to copy the above
611specified materials from the same place.\n\n
612
613e) Verify that the user has already received a copy of these
614materials or that you have already sent this user a copy.\n\n
615
616 For an executable, the required form of the \"work that uses the
617Library\" must include any data and utility programs needed for
618reproducing the executable from it. However, as a special exception,
619the materials to be distributed need not include anything that is
620normally distributed (in either source or binary form) with the major
621components (compiler, kernel, and so on) of the operating system on
622which the executable runs, unless that component itself accompanies
623the executable.\n\n
624
625 It may happen that this requirement contradicts the license
626restrictions of other proprietary libraries that do not normally
627accompany the operating system. Such a contradiction means you cannot
628use both them and the Library together in an executable that you
629distribute.\n\n
630
631 7. You may place library facilities that are a work based on the
632Library side-by-side in a single library together with other library
633facilities not covered by this License, and distribute such a combined
634library, provided that the separate distribution of the work based on
635the Library and of the other library facilities is otherwise
636permitted, and provided that you do these two things:\n\n
637
638a) Accompany the combined library with a copy of the same work
639based on the Library, uncombined with any other library
640facilities. This must be distributed under the terms of the
641Sections above.\n\n
642
643b) Give prominent notice with the combined library of the fact
644that part of it is a work based on the Library, and explaining
645where to find the accompanying uncombined form of the same work.\n\n
646
647 8. You may not copy, modify, sublicense, link with, or distribute
648the Library except as expressly provided under this License. Any
649attempt otherwise to copy, modify, sublicense, link with, or
650distribute the Library is void, and will automatically terminate your
651rights under this License. However, parties who have received copies,
652or rights, from you under this License will not have their licenses
653terminated so long as such parties remain in full compliance.\n\n
654
655 9. You are not required to accept this License, since you have not
656signed it. However, nothing else grants you permission to modify or
657distribute the Library or its derivative works. These actions are
658prohibited by law if you do not accept this License. Therefore, by
659modifying or distributing the Library (or any work based on the
660Library), you indicate your acceptance of this License to do so, and
661all its terms and conditions for copying, distributing or modifying
662the Library or works based on it.\n\n
663
664 10. Each time you redistribute the Library (or any work based on the
665Library), the recipient automatically receives a license from the
666original licensor to copy, distribute, link with or modify the Library
667subject to these terms and conditions. You may not impose any further
668restrictions on the recipients\' exercise of the rights granted herein.
669You are not responsible for enforcing compliance by third parties with
670this License.\n\n
671
672 11. If, as a consequence of a court judgment or allegation of patent
673infringement or for any other reason (not limited to patent issues),
674conditions are imposed on you (whether by court order, agreement or
675otherwise) that contradict the conditions of this License, they do not
676excuse you from the conditions of this License. If you cannot
677distribute so as to satisfy simultaneously your obligations under this
678License and any other pertinent obligations, then as a consequence you
679may not distribute the Library at all. For example, if a patent
680license would not permit royalty-free redistribution of the Library by
681all those who receive copies directly or indirectly through you, then
682the only way you could satisfy both it and this License would be to
683refrain entirely from distribution of the Library.\n\n
684
685If any portion of this section is held invalid or unenforceable under any
686particular circumstance, the balance of the section is intended to apply,
687and the section as a whole is intended to apply in other circumstances.\n\n
688
689It is not the purpose of this section to induce you to infringe any
690patents or other property right claims or to contest validity of any
691such claims; this section has the sole purpose of protecting the
692integrity of the free software distribution system which is
693implemented by public license practices. Many people have made
694generous contributions to the wide range of software distributed
695through that system in reliance on consistent application of that
696system; it is up to the author/donor to decide if he or she is willing
697to distribute software through any other system and a licensee cannot
698impose that choice.\n\n
699
700This section is intended to make thoroughly clear what is believed to
701be a consequence of the rest of this License.\n\n
702
703 12. If the distribution and/or use of the Library is restricted in
704certain countries either by patents or by copyrighted interfaces, the
705original copyright holder who places the Library under this License may add
706an explicit geographical distribution limitation excluding those countries,
707so that distribution is permitted only in or among countries not thus
708excluded. In such case, this License incorporates the limitation as if
709written in the body of this License.\n\n
710
711 13. The Free Software Foundation may publish revised and/or new
712versions of the Lesser General Public License from time to time.
713Such new versions will be similar in spirit to the present version,
714but may differ in detail to address new problems or concerns.\n\n
715
716Each version is given a distinguishing version number. If the Library
717specifies a version number of this License which applies to it and
718"any later version\", you have the option of following the terms and
719conditions either of that version or of any later version published by
720the Free Software Foundation. If the Library does not specify a
721license version number, you may choose any version ever published by
722the Free Software Foundation.\n\n
723
724 14. If you wish to incorporate parts of the Library into other free
725programs whose distribution conditions are incompatible with these,
726write to the author to ask for permission. For software which is
727copyrighted by the Free Software Foundation, write to the Free
728Software Foundation; we sometimes make exceptions for this. Our
729decision will be guided by the two goals of preserving the free status
730of all derivatives of our free software and of promoting the sharing
731and reuse of software generally.\n\n
732
733NO WARRANTY\n\n
734
735 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
736WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
737EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
738OTHER PARTIES PROVIDE THE LIBRARY \"AS IS\" WITHOUT WARRANTY OF ANY
739KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
740IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
741PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
742LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
743THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n
744
745 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
746WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
747AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
748FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
749CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
750LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
751RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
752FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
753SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
754DAMAGES.
755 </string>
756 <string name="license_opus" translatable="false">Opus</string>
757 <string name="license_opus_description" translatable="false">Modern audio compression for the internet</string>
758 <string name="license_opus_link" translatable="false">https://github.com/xiph/opus</string>
759 <string name="license_opus_copyright" translatable="false">Copyright 2001–2011 Xiph.Org, Skype Limited, Octasic, Jean-Marc Valin, Timothy B. Terriberry, CSIRO, Gregory Maxwell, Mark Borgerding, Erik de Castro Lopo</string>
760 <string name="license_opus_text" translatable="false">
761Redistribution and use in source and binary forms, with or without
762modification, are permitted provided that the following conditions
763are met:\n\n
764
765- Redistributions of source code must retain the above copyright
766notice, this list of conditions and the following disclaimer.\n\n
767
768- Redistributions in binary form must reproduce the above copyright
769notice, this list of conditions and the following disclaimer in the
770documentation and/or other materials provided with the distribution.\n\n
771
772- Neither the name of Internet Society, IETF or IETF Trust, nor the
773names of specific contributors, may be used to endorse or promote
774products derived from this software without specific prior written
775permission.\n\n
776
777THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
778``AS IS\'\' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
779LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
780A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
781OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
782EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
783PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
784PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
785LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
786NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
787SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n
788
789Opus is subject to the royalty-free patent licenses which are
790specified at:\n\n
791
792Xiph.Org Foundation:
793https://datatracker.ietf.org/ipr/1524/ \n\n
794
795Microsoft Corporation:
796https://datatracker.ietf.org/ipr/1914/ \n\n
797
798Broadcom Corporation:
799https://datatracker.ietf.org/ipr/1526/
800 </string>
801 <string name="license_sirit" translatable="false">Sirit</string>
802 <string name="license_sirit_description" translatable="false">A runtime SPIR-V assembler</string>
803 <string name="license_sirit_link" translatable="false">https://github.com/ReinUsesLisp/sirit</string>
804 <string name="license_sirit_copyright" translatable="false">Copyright © 2019, sirit All rights reserved.</string>
805 <string name="license_sirit_text" translatable="false">
806Redistribution and use in source and binary forms, with or without
807modification, are permitted provided that the following conditions are met:\n
808* Redistributions of source code must retain the above copyright
809 notice, this list of conditions and the following disclaimer.\n
810* Redistributions in binary form must reproduce the above copyright
811 notice, this list of conditions and the following disclaimer in the
812 documentation and/or other materials provided with the distribution.\n
813* Neither the name of the organization nor the
814 names of its contributors may be used to endorse or promote products
815 derived from this software without specific prior written permission.\n\n
816
817THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND
818ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
819WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
820DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER BE LIABLE FOR ANY
821DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
822(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
823LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
824ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
825(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
826SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
827 </string>
828 <string name="license_adreno_tools" translatable="false">Adreno Tools</string>
829 <string name="license_adreno_tools_description" translatable="false">A library for applying rootless Adreno GPU driver modifications/replacements</string>
830 <string name="license_adreno_tools_link" translatable="false">https://github.com/bylaws/libadrenotools</string>
831 <string name="license_adreno_tools_copyright" translatable="false">Copyright © 2021, Billy Laws</string>
832 <string name="license_adreno_tools_text" translatable="false">
833BSD 2-Clause License\n\n
834
835Redistribution and use in source and binary forms, with or without
836modification, are permitted provided that the following conditions are met:\n\n
837
8381. Redistributions of source code must retain the above copyright notice, this
839 list of conditions and the following disclaimer.\n\n
840
8412. Redistributions in binary form must reproduce the above copyright notice,
842 this list of conditions and the following disclaimer in the documentation
843 and/or other materials provided with the distribution.\n\n
844
845THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"
846AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
847IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
848DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
849FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
850DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
851SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
852CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
853OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
854OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
855 </string>
856
349</resources> 857</resources>