diff --git a/.google/packaging.yaml b/.google/packaging.yaml index dea2d5828..796b81d39 100644 --- a/.google/packaging.yaml +++ b/.google/packaging.yaml @@ -16,12 +16,12 @@ level: INTERMEDIATE icon: screenshots/icon-web.png apiRefs: - - android:android.support.v4.media.session.MediaSessionCompat - - android:android.support.v4.media.session.MediaControllerCompat - - androidx.media.MediaBrowserServiceCompat - - android:android.support.v4.media.MediaBrowserCompat - - androidx.media.app.NotificationCompat.MediaStyle - - android:com.google.android.exoplayer2.SimpleExoPlayer - - android:com.google.android.exoplayer2.ext.mediasession.MediaSessionConnector + - android:android.support.v4.media.session.MediaSessionCompat + - android:android.support.v4.media.session.MediaControllerCompat + - androidx.media.MediaBrowserServiceCompat + - android:android.support.v4.media.MediaBrowserCompat + - androidx.media.app.NotificationCompat.MediaStyle + - android:com.google.android.exoplayer2.SimpleExoPlayer + - android:com.google.android.exoplayer2.ext.mediasession.MediaSessionConnector license: apache2-android diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 000000000..dfca6e5ca --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,129 @@ + + + + + + + + + + +
+ + + + xmlns:android + + ^$ + + + +
+
+ + + + xmlns:.* + + ^$ + + + BY_NAME + +
+
+ + + + .*:id + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + .*:name + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + name + + ^$ + + + +
+
+ + + + style + + ^$ + + + +
+
+ + + + .* + + ^$ + + + BY_NAME + +
+
+ + + + .* + + http://schemas.android.com/apk/res/android + + + ANDROID_ATTRIBUTE_ORDER + +
+
+ + + + .* + + .* + + + BY_NAME + +
+
+
+
+ + +
+
\ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 000000000..79ee123c2 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 000000000..35eb1ddfb --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index bd26a634c..5e2381d7e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,5 +1,4 @@ - - + xmlns:aapt="http://schemas.android.com/aapt" + android:width="108dp" + android:height="108dp" + android:viewportWidth="108" + android:viewportHeight="108"> + android:strokeWidth="1" + android:strokeColor="#00000000"> + android:strokeWidth="1" + android:strokeColor="#00000000" /> diff --git a/app/src/main/res/drawable/ic_album_black_24dp.xml b/app/src/main/res/drawable/ic_album_black_24dp.xml index f4d76aece..f488a2934 100644 --- a/app/src/main/res/drawable/ic_album_black_24dp.xml +++ b/app/src/main/res/drawable/ic_album_black_24dp.xml @@ -14,7 +14,12 @@ ~ limitations under the License. --> - - + + diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml index 6016520da..bc5563d53 100644 --- a/app/src/main/res/drawable/ic_launcher_background.xml +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -1,5 +1,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:viewportHeight="108"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_pause_black_24dp.xml b/app/src/main/res/drawable/ic_pause_black_24dp.xml index 5a7f8bd4b..6758f9978 100644 --- a/app/src/main/res/drawable/ic_pause_black_24dp.xml +++ b/app/src/main/res/drawable/ic_pause_black_24dp.xml @@ -15,11 +15,11 @@ --> + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + android:pathData="M6,19h4L10,5L6,5v14zM14,5v14h4L18,5h-4z" /> diff --git a/app/src/main/res/drawable/ic_play_arrow_black_24dp.xml b/app/src/main/res/drawable/ic_play_arrow_black_24dp.xml index 532f51bfc..2c94c5b12 100644 --- a/app/src/main/res/drawable/ic_play_arrow_black_24dp.xml +++ b/app/src/main/res/drawable/ic_play_arrow_black_24dp.xml @@ -15,11 +15,11 @@ --> + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + android:pathData="M8,5v14l11,-7z" /> diff --git a/app/src/main/res/drawable/ic_signal_wifi_off_black_24dp.xml b/app/src/main/res/drawable/ic_signal_wifi_off_black_24dp.xml index f0a118db4..23b8f7d6a 100644 --- a/app/src/main/res/drawable/ic_signal_wifi_off_black_24dp.xml +++ b/app/src/main/res/drawable/ic_signal_wifi_off_black_24dp.xml @@ -15,11 +15,11 @@ --> + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + android:pathData="M23.64,7c-0.45,-0.34 -4.93,-4 -11.64,-4 -1.5,0 -2.89,0.19 -4.15,0.48L18.18,13.8 23.64,7zM17.04,15.22L3.27,1.44 2,2.72l2.05,2.06C1.91,5.76 0.59,6.82 0.36,7l11.63,14.49 0.01,0.01 0.01,-0.01 3.9,-4.86 3.32,3.32 1.27,-1.27 -3.46,-3.46z" /> diff --git a/app/src/main/res/drawable/media_item_background.xml b/app/src/main/res/drawable/media_item_background.xml index 6e7d4cd2c..1a9f0ef0e 100644 --- a/app/src/main/res/drawable/media_item_background.xml +++ b/app/src/main/res/drawable/media_item_background.xml @@ -1,5 +1,4 @@ - - - + android:startColor="#CCFFFFFF" /> diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 190b3e71e..80d52cf98 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,5 +1,4 @@ - - - \ No newline at end of file + tools:context="com.example.android.uamp.MainActivity" /> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_mediaitem.xml b/app/src/main/res/layout/fragment_mediaitem.xml index bc6187e65..f2b1cd668 100644 --- a/app/src/main/res/layout/fragment_mediaitem.xml +++ b/app/src/main/res/layout/fragment_mediaitem.xml @@ -1,5 +1,4 @@ - - - - - - - + android:scaleType="centerCrop" + app:srcCompat="@android:color/transparent" /> diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml index 71677d4cd..972708c19 100644 --- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -1,5 +1,4 @@ - - - - + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml index 71677d4cd..972708c19 100644 --- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -1,5 +1,4 @@ - - - - + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index f83464d1a..e7ad52829 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -1,5 +1,4 @@ - - - - + + \ No newline at end of file diff --git a/automotive/src/androidTest/java/com/example/android/uamp/automotive/ExampleInstrumentedTest.java b/automotive/src/androidTest/java/com/example/android/uamp/automotive/ExampleInstrumentedTest.java index 9ae5a68d4..7ef2135b3 100644 --- a/automotive/src/androidTest/java/com/example/android/uamp/automotive/ExampleInstrumentedTest.java +++ b/automotive/src/androidTest/java/com/example/android/uamp/automotive/ExampleInstrumentedTest.java @@ -18,12 +18,12 @@ import android.content.Context; -import org.junit.Test; -import org.junit.runner.RunWith; - import androidx.test.InstrumentationRegistry; import androidx.test.runner.AndroidJUnit4; +import org.junit.Test; +import org.junit.runner.RunWith; + import static org.junit.Assert.assertEquals; /** diff --git a/automotive/src/main/AndroidManifest.xml b/automotive/src/main/AndroidManifest.xml index 622c0fdf2..d99fcb182 100644 --- a/automotive/src/main/AndroidManifest.xml +++ b/automotive/src/main/AndroidManifest.xml @@ -1,5 +1,4 @@ - - + android:label="@string/settings_label" + android:theme="@style/AppTheme.Drawer"> diff --git a/automotive/src/main/java/com/example/android/uamp/automotive/PhoneSignInFragment.kt b/automotive/src/main/java/com/example/android/uamp/automotive/PhoneSignInFragment.kt index 5695a64cb..257ac45e8 100644 --- a/automotive/src/main/java/com/example/android/uamp/automotive/PhoneSignInFragment.kt +++ b/automotive/src/main/java/com/example/android/uamp/automotive/PhoneSignInFragment.kt @@ -38,12 +38,13 @@ class PhoneSignInFragment : Fragment() { private lateinit var appIcon: ImageView private lateinit var primaryTextView: TextView private lateinit var pinSignInButton: Button - private lateinit var qrCodeSignInButton : Button + private lateinit var qrCodeSignInButton: Button private lateinit var footerTextView: TextView override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle?): View? { + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { return inflater.inflate(R.layout.phone_sign_in, container, false) } @@ -68,23 +69,25 @@ class PhoneSignInFragment : Fragment() { pinSignInButton.text = getString(R.string.pin_sign_in_button_label) pinSignInButton.setOnClickListener { requireActivity().supportFragmentManager.beginTransaction() - .replace(R.id.sign_in_container, PinCodeSignInFragment()) - .addToBackStack("landingPage") - .commit() + .replace(R.id.sign_in_container, PinCodeSignInFragment()) + .addToBackStack("landingPage") + .commit() } // Set up QR code sign in button. qrCodeSignInButton.text = getString(R.string.qr_sign_in_button_label) qrCodeSignInButton.setOnClickListener { requireActivity().supportFragmentManager.beginTransaction() - .replace(R.id.sign_in_container, QrCodeSignInFragment()) - .addToBackStack("landingPage") - .commit() + .replace(R.id.sign_in_container, QrCodeSignInFragment()) + .addToBackStack("landingPage") + .commit() } // Links in footer text should be clickable. - footerTextView.text = HtmlCompat.fromHtml(context.getString(R.string.sign_in_footer), - HtmlCompat.FROM_HTML_MODE_LEGACY) + footerTextView.text = HtmlCompat.fromHtml( + context.getString(R.string.sign_in_footer), + HtmlCompat.FROM_HTML_MODE_LEGACY + ) footerTextView.movementMethod = LinkMovementMethod.getInstance() } } \ No newline at end of file diff --git a/automotive/src/main/java/com/example/android/uamp/automotive/PinCodeSignInFragment.kt b/automotive/src/main/java/com/example/android/uamp/automotive/PinCodeSignInFragment.kt index 357ecd035..8f5dbdbeb 100644 --- a/automotive/src/main/java/com/example/android/uamp/automotive/PinCodeSignInFragment.kt +++ b/automotive/src/main/java/com/example/android/uamp/automotive/PinCodeSignInFragment.kt @@ -41,12 +41,13 @@ class PinCodeSignInFragment : Fragment() { private lateinit var appIcon: ImageView private lateinit var primaryTextView: TextView private lateinit var secondaryTextView: TextView - private lateinit var pinCodeContainer : ViewGroup + private lateinit var pinCodeContainer: ViewGroup private lateinit var footerTextView: TextView override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle?): View? { + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { return inflater.inflate(R.layout.pin_sign_in, container, false) } @@ -70,13 +71,15 @@ class PinCodeSignInFragment : Fragment() { secondaryTextView.text = getString(R.string.pin_sign_in_secondary_text) // Links in footer text should be clickable. - footerTextView.text = HtmlCompat.fromHtml(context.getString(R.string.sign_in_footer), - HtmlCompat.FROM_HTML_MODE_LEGACY) + footerTextView.text = HtmlCompat.fromHtml( + context.getString(R.string.sign_in_footer), + HtmlCompat.FROM_HTML_MODE_LEGACY + ) footerTextView.movementMethod = LinkMovementMethod.getInstance() val pin = ViewModelProviders.of(requireActivity()) - .get(SignInActivityViewModel::class.java) - .generatePin() + .get(SignInActivityViewModel::class.java) + .generatePin() setPin(pin) } @@ -93,9 +96,10 @@ class PinCodeSignInFragment : Fragment() { for (element in pin) { val pinItem = LayoutInflater.from(context).inflate( - R.layout.pin_item, - pinCodeContainer, - false) as TextView + R.layout.pin_item, + pinCodeContainer, + false + ) as TextView pinItem.text = element.toString() pinCodeContainer.addView(pinItem) } diff --git a/automotive/src/main/java/com/example/android/uamp/automotive/QrCodeSignInFragment.kt b/automotive/src/main/java/com/example/android/uamp/automotive/QrCodeSignInFragment.kt index 0b00ea9f4..de93f185a 100644 --- a/automotive/src/main/java/com/example/android/uamp/automotive/QrCodeSignInFragment.kt +++ b/automotive/src/main/java/com/example/android/uamp/automotive/QrCodeSignInFragment.kt @@ -32,7 +32,7 @@ import com.bumptech.glide.Glide * Fragment that is used to facilitate QR code sign-in. Users scan a QR code rendered by this * fragment with their phones, which performs the authentication required for sign-in * -*

This screen serves as a demo for UI best practices for QR code sign in. Sign in implementation + *

This screen serves as a demo for UI best practices for QR code sign in. Sign in implementation * will be app specific and is not included. */ class QrCodeSignInFragment : Fragment() { @@ -41,12 +41,13 @@ class QrCodeSignInFragment : Fragment() { private lateinit var appIcon: ImageView private lateinit var primaryTextView: TextView private lateinit var secondaryTextView: TextView - private lateinit var qrCode : ImageView + private lateinit var qrCode: ImageView private lateinit var footerTextView: TextView override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle?): View? { + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { return inflater.inflate(R.layout.qr_sign_in, container, false) } @@ -70,8 +71,10 @@ class QrCodeSignInFragment : Fragment() { secondaryTextView.text = getString(R.string.qr_sign_in_secondary_text) // Links in footer text should be clickable. - footerTextView.text = HtmlCompat.fromHtml(context.getString(R.string.sign_in_footer), - HtmlCompat.FROM_HTML_MODE_LEGACY) + footerTextView.text = HtmlCompat.fromHtml( + context.getString(R.string.sign_in_footer), + HtmlCompat.FROM_HTML_MODE_LEGACY + ) footerTextView.movementMethod = LinkMovementMethod.getInstance() setQrCode(getString(R.string.qr_code_url)) diff --git a/automotive/src/main/java/com/example/android/uamp/automotive/SignInActivity.kt b/automotive/src/main/java/com/example/android/uamp/automotive/SignInActivity.kt index 428136516..3faee2385 100644 --- a/automotive/src/main/java/com/example/android/uamp/automotive/SignInActivity.kt +++ b/automotive/src/main/java/com/example/android/uamp/automotive/SignInActivity.kt @@ -31,8 +31,8 @@ class SignInActivity : AppCompatActivity() { setContentView(R.layout.activity_sign_in) viewModel = ViewModelProviders - .of(this) - .get(SignInActivityViewModel::class.java) + .of(this) + .get(SignInActivityViewModel::class.java) viewModel.loggedIn.observe(this, Observer { loggedIn -> if (loggedIn == true) { @@ -42,7 +42,7 @@ class SignInActivity : AppCompatActivity() { }) supportFragmentManager.beginTransaction() - .add(R.id.sign_in_container, SignInLandingPageFragment()) - .commit() + .add(R.id.sign_in_container, SignInLandingPageFragment()) + .commit() } } \ No newline at end of file diff --git a/automotive/src/main/java/com/example/android/uamp/automotive/SignInActivityViewModel.kt b/automotive/src/main/java/com/example/android/uamp/automotive/SignInActivityViewModel.kt index b48722451..e9b2735b2 100644 --- a/automotive/src/main/java/com/example/android/uamp/automotive/SignInActivityViewModel.kt +++ b/automotive/src/main/java/com/example/android/uamp/automotive/SignInActivityViewModel.kt @@ -34,8 +34,8 @@ import java.util.Random class SignInActivityViewModel(application: Application) : AndroidViewModel(application) { private val applicationContext = application.applicationContext private val musicServiceConnection = MusicServiceConnection( - applicationContext, - ComponentName(applicationContext, AutomotiveMusicService::class.java) + applicationContext, + ComponentName(applicationContext, AutomotiveMusicService::class.java) ) private val _loggedIn = MutableLiveData() @@ -44,9 +44,9 @@ class SignInActivityViewModel(application: Application) : AndroidViewModel(appli fun login(email: String, password: String) { if (TextUtils.isEmpty(email) or TextUtils.isEmpty(password)) { Toast.makeText( - applicationContext, - applicationContext.getString(R.string.missing_fields_error), - Toast.LENGTH_SHORT + applicationContext, + applicationContext.getString(R.string.missing_fields_error), + Toast.LENGTH_SHORT ).show() } else { val loginParams = Bundle().apply { diff --git a/automotive/src/main/java/com/example/android/uamp/automotive/SignInLandingPageFragment.kt b/automotive/src/main/java/com/example/android/uamp/automotive/SignInLandingPageFragment.kt index 9d1d5cc69..6cb068874 100644 --- a/automotive/src/main/java/com/example/android/uamp/automotive/SignInLandingPageFragment.kt +++ b/automotive/src/main/java/com/example/android/uamp/automotive/SignInLandingPageFragment.kt @@ -68,16 +68,17 @@ class SignInLandingPageFragment : Fragment() { private lateinit var googleSignInButton: Button private lateinit var usernameAndPasswordSignInButton: Button private lateinit var primaryTextView: TextView - private lateinit var identifierContainer : TextInputLayout - private lateinit var identifierInput : TextInputEditText + private lateinit var identifierContainer: TextInputLayout + private lateinit var identifierInput: TextInputEditText private lateinit var footerTextView: TextView override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle?): View? { + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { val layout = if (ENABLE_USERNAME_PASSWORD_SIGN_IN) R.layout.sign_in_landing_page_with_username_and_password - else R.layout.sign_in_landing_page + else R.layout.sign_in_landing_page return inflater.inflate(layout, container, false) } @@ -109,8 +110,10 @@ class SignInLandingPageFragment : Fragment() { primaryTextView.text = getString(R.string.sign_in_primary_text) // Links in footer text should be clickable. - footerTextView.text = HtmlCompat.fromHtml(context.getString(R.string.sign_in_footer), - HtmlCompat.FROM_HTML_MODE_LEGACY) + footerTextView.text = HtmlCompat.fromHtml( + context.getString(R.string.sign_in_footer), + HtmlCompat.FROM_HTML_MODE_LEGACY + ) footerTextView.movementMethod = LinkMovementMethod.getInstance() configureUsernameAndPasswordSignIn() @@ -138,9 +141,9 @@ class SignInLandingPageFragment : Fragment() { fragment.arguments = args requireActivity().supportFragmentManager.beginTransaction() - .replace(R.id.sign_in_container, fragment) - .addToBackStack("landingPage") - .commit() + .replace(R.id.sign_in_container, fragment) + .addToBackStack("landingPage") + .commit() } } } @@ -167,9 +170,9 @@ class SignInLandingPageFragment : Fragment() { phoneSignInButton.text = getString(R.string.phone_sign_in_button_label) phoneSignInButton.setOnClickListener { requireActivity().supportFragmentManager.beginTransaction() - .replace(R.id.sign_in_container, phoneSignInFragment) - .addToBackStack("landingPage") - .commit() + .replace(R.id.sign_in_container, phoneSignInFragment) + .addToBackStack("landingPage") + .commit() } } @@ -186,9 +189,9 @@ class SignInLandingPageFragment : Fragment() { } val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) - .requestIdToken(getString(R.string.server_client_id)) - .requestEmail() - .build() + .requestIdToken(getString(R.string.server_client_id)) + .requestEmail() + .build() googleSignInButton.text = getString(R.string.google_sign_in_button_label) @@ -199,13 +202,14 @@ class SignInLandingPageFragment : Fragment() { } } - private fun checkPlayServices() : Boolean { + private fun checkPlayServices(): Boolean { val apiAvailability = GoogleApiAvailability.getInstance(); val resultCode = apiAvailability.isGooglePlayServicesAvailable(context); if (resultCode != ConnectionResult.SUCCESS) { if (apiAvailability.isUserResolvableError(resultCode)) { apiAvailability.getErrorDialog( - activity, resultCode, PLAY_SERVICES_RESOLUTION_REQUEST).show(); + activity, resultCode, PLAY_SERVICES_RESOLUTION_REQUEST + ).show(); } return false; } @@ -232,9 +236,10 @@ class SignInLandingPageFragment : Fragment() { // The ApiException status code indicates the detailed failure reason. // Please refer to the GoogleSignInStatusCodes class reference for more information. Toast.makeText( - requireContext(), "Sign in failed with error code: " + e.statusCode, - Toast.LENGTH_SHORT) - .show() + requireContext(), "Sign in failed with error code: " + e.statusCode, + Toast.LENGTH_SHORT + ) + .show() } } } \ No newline at end of file diff --git a/automotive/src/main/java/com/example/android/uamp/automotive/UsernameAndPasswordSignInFragment.kt b/automotive/src/main/java/com/example/android/uamp/automotive/UsernameAndPasswordSignInFragment.kt index 12b1b10e1..f2b45dda9 100644 --- a/automotive/src/main/java/com/example/android/uamp/automotive/UsernameAndPasswordSignInFragment.kt +++ b/automotive/src/main/java/com/example/android/uamp/automotive/UsernameAndPasswordSignInFragment.kt @@ -40,14 +40,15 @@ class UsernameAndPasswordSignInFragment : Fragment() { private lateinit var toolbar: Toolbar private lateinit var appIcon: ImageView private lateinit var primaryTextView: TextView - private lateinit var passwordContainer : TextInputLayout - private lateinit var passwordInput : TextInputEditText - private lateinit var submitButton : Button + private lateinit var passwordContainer: TextInputLayout + private lateinit var passwordInput: TextInputEditText + private lateinit var submitButton: Button private lateinit var footerTextView: TextView override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle?): View? { + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { return inflater.inflate(R.layout.username_and_password_sign_in, container, false) } @@ -75,8 +76,10 @@ class UsernameAndPasswordSignInFragment : Fragment() { } // Links in footer text should be clickable. - footerTextView.text = HtmlCompat.fromHtml(context.getString(R.string.sign_in_footer), - HtmlCompat.FROM_HTML_MODE_LEGACY) + footerTextView.text = HtmlCompat.fromHtml( + context.getString(R.string.sign_in_footer), + HtmlCompat.FROM_HTML_MODE_LEGACY + ) footerTextView.movementMethod = LinkMovementMethod.getInstance() // Get user identifier from previous screen. @@ -90,7 +93,7 @@ class UsernameAndPasswordSignInFragment : Fragment() { private fun onSignIn(userIdentifier: CharSequence, password: CharSequence) { ViewModelProviders.of(requireActivity()) - .get(SignInActivityViewModel::class.java) - .login(userIdentifier.toString(), password.toString()) + .get(SignInActivityViewModel::class.java) + .login(userIdentifier.toString(), password.toString()) } } \ No newline at end of file diff --git a/automotive/src/main/res/color/car_text_dark.xml b/automotive/src/main/res/color/car_text_dark.xml index 67f51856c..5763636f9 100644 --- a/automotive/src/main/res/color/car_text_dark.xml +++ b/automotive/src/main/res/color/car_text_dark.xml @@ -1,5 +1,4 @@ - - - + diff --git a/automotive/src/main/res/color/car_text_light.xml b/automotive/src/main/res/color/car_text_light.xml index 103166f2c..556302eb9 100644 --- a/automotive/src/main/res/color/car_text_light.xml +++ b/automotive/src/main/res/color/car_text_light.xml @@ -1,5 +1,4 @@ - - - - + + diff --git a/automotive/src/main/res/drawable-v24/ic_launcher_foreground.xml b/automotive/src/main/res/drawable-v24/ic_launcher_foreground.xml index d2656a545..6b48ff7f2 100644 --- a/automotive/src/main/res/drawable-v24/ic_launcher_foreground.xml +++ b/automotive/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -1,5 +1,4 @@ - - - - - + + diff --git a/automotive/src/main/res/drawable/google_sign_in_button_background.xml b/automotive/src/main/res/drawable/google_sign_in_button_background.xml index 30a553379..e41509734 100644 --- a/automotive/src/main/res/drawable/google_sign_in_button_background.xml +++ b/automotive/src/main/res/drawable/google_sign_in_button_background.xml @@ -1,5 +1,4 @@ - - - - - + + + diff --git a/automotive/src/main/res/drawable/google_sign_in_button_logo.xml b/automotive/src/main/res/drawable/google_sign_in_button_logo.xml index 92712caf5..e8d936bbd 100644 --- a/automotive/src/main/res/drawable/google_sign_in_button_logo.xml +++ b/automotive/src/main/res/drawable/google_sign_in_button_logo.xml @@ -1,5 +1,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:viewportHeight="108"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/automotive/src/main/res/drawable/pin_background.xml b/automotive/src/main/res/drawable/pin_background.xml index dce9cd7bc..cb38892a3 100644 --- a/automotive/src/main/res/drawable/pin_background.xml +++ b/automotive/src/main/res/drawable/pin_background.xml @@ -1,5 +1,4 @@ - - - + android:gravity="center" + android:orientation="vertical"> - + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> - + \ No newline at end of file diff --git a/automotive/src/main/res/layout/preference_category.xml b/automotive/src/main/res/layout/preference_category.xml index d843352e9..530254b36 100644 --- a/automotive/src/main/res/layout/preference_category.xml +++ b/automotive/src/main/res/layout/preference_category.xml @@ -1,5 +1,4 @@ - - + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> - + \ No newline at end of file diff --git a/automotive/src/main/res/layout/qr_sign_in.xml b/automotive/src/main/res/layout/qr_sign_in.xml index 4e987eaef..4a237832a 100644 --- a/automotive/src/main/res/layout/qr_sign_in.xml +++ b/automotive/src/main/res/layout/qr_sign_in.xml @@ -1,5 +1,4 @@ - - - - + + \ No newline at end of file diff --git a/automotive/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/automotive/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml index 5b50e46fb..41b989067 100644 --- a/automotive/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ b/automotive/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -1,5 +1,4 @@ - - - - + + \ No newline at end of file diff --git a/automotive/src/main/res/values-h1060dp/dimens.xml b/automotive/src/main/res/values-h1060dp/dimens.xml index c8bdf1321..c28848c6c 100644 --- a/automotive/src/main/res/values-h1060dp/dimens.xml +++ b/automotive/src/main/res/values-h1060dp/dimens.xml @@ -1,5 +1,4 @@ - - - + + android:layout="@layout/preference_category" + android:title="Account"> + android:layout="@layout/preference" + android:title="Log Out" /> diff --git a/automotive/src/test/java/com/example/android/uamp/automotive/ExampleUnitTest.java b/automotive/src/test/java/com/example/android/uamp/automotive/ExampleUnitTest.java index 64b7d95df..7391a0445 100644 --- a/automotive/src/test/java/com/example/android/uamp/automotive/ExampleUnitTest.java +++ b/automotive/src/test/java/com/example/android/uamp/automotive/ExampleUnitTest.java @@ -18,7 +18,7 @@ import org.junit.Test; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; /** * Example local unit test, which will execute on the development machine (host). diff --git a/common/src/main/AndroidManifest.xml b/common/src/main/AndroidManifest.xml index 70aa870cb..d00825859 100644 --- a/common/src/main/AndroidManifest.xml +++ b/common/src/main/AndroidManifest.xml @@ -1,5 +1,4 @@ - - - - + + diff --git a/common/src/main/res/drawable/ic_recommended.xml b/common/src/main/res/drawable/ic_recommended.xml index 83e1f15ab..9e33422c7 100644 --- a/common/src/main/res/drawable/ic_recommended.xml +++ b/common/src/main/res/drawable/ic_recommended.xml @@ -13,7 +13,12 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - - + + diff --git a/common/src/main/res/values/strings.xml b/common/src/main/res/values/strings.xml index 7097d22a7..d613b7ae2 100644 --- a/common/src/main/res/values/strings.xml +++ b/common/src/main/res/values/strings.xml @@ -1,5 +1,4 @@ - - - - 19:75:b2:f1:71:77:bc:89:a5:df:f3:1f:9e:64:a6:ca:e2:81:a5:3d:c1:d1:d5:9b:1d:14:7f:e1:c8:2a:fa:00 - 70:81:1a:3e:ac:fd:2e:83:e1:8d:a9:bf:ed:e5:2d:f1:6c:e9:1f:2e:69:a4:4d:21:f1:8a:b6:69:91:13:07:71 - fd:b0:0c:43:db:de:8b:51:cb:31:2a:a8:1d:3b:5f:a1:77:13:ad:b9:4b:28:f5:98:d7:7f:8e:b8:9d:ac:ee:df + + + 19:75:b2:f1:71:77:bc:89:a5:df:f3:1f:9e:64:a6:ca:e2:81:a5:3d:c1:d1:d5:9b:1d:14:7f:e1:c8:2a:fa:00 + + + 70:81:1a:3e:ac:fd:2e:83:e1:8d:a9:bf:ed:e5:2d:f1:6c:e9:1f:2e:69:a4:4d:21:f1:8a:b6:69:91:13:07:71 + + + fd:b0:0c:43:db:de:8b:51:cb:31:2a:a8:1d:3b:5f:a1:77:13:ad:b9:4b:28:f5:98:d7:7f:8e:b8:9d:ac:ee:df + - - 69:d0:72:16:9a:2c:6b:2f:5a:cc:59:0c:e4:33:a1:1a:c3:df:55:1a:df:ee:5d:5f:63:c0:83:b7:22:76:2e:19 - 85:cd:59:73:54:1b:e6:f4:77:d8:47:a0:bc:c6:aa:25:27:68:4b:81:9c:d5:96:85:29:66:4c:b0:71:57:b6:fe + + + 69:d0:72:16:9a:2c:6b:2f:5a:cc:59:0c:e4:33:a1:1a:c3:df:55:1a:df:ee:5d:5f:63:c0:83:b7:22:76:2e:19 + + + 85:cd:59:73:54:1b:e6:f4:77:d8:47:a0:bc:c6:aa:25:27:68:4b:81:9c:d5:96:85:29:66:4c:b0:71:57:b6:fe + - - 19:75:b2:f1:71:77:bc:89:a5:df:f3:1f:9e:64:a6:ca:e2:81:a5:3d:c1:d1:d5:9b:1d:14:7f:e1:c8:2a:fa:00 + + + 19:75:b2:f1:71:77:bc:89:a5:df:f3:1f:9e:64:a6:ca:e2:81:a5:3d:c1:d1:d5:9b:1d:14:7f:e1:c8:2a:fa:00 + - - 19:75:b2:f1:71:77:bc:89:a5:df:f3:1f:9e:64:a6:ca:e2:81:a5:3d:c1:d1:d5:9b:1d:14:7f:e1:c8:2a:fa:00 - f0:fd:6c:5b:41:0f:25:cb:25:c3:b5:33:46:c8:97:2f:ae:30:f8:ee:74:11:df:91:04:80:ad:6b:2d:60:db:83 + + + 19:75:b2:f1:71:77:bc:89:a5:df:f3:1f:9e:64:a6:ca:e2:81:a5:3d:c1:d1:d5:9b:1d:14:7f:e1:c8:2a:fa:00 + + + f0:fd:6c:5b:41:0f:25:cb:25:c3:b5:33:46:c8:97:2f:ae:30:f8:ee:74:11:df:91:04:80:ad:6b:2d:60:db:83 + - - 17:E2:81:11:06:2F:97:A8:60:79:7A:83:70:5B:F8:2C:7C:C0:29:35:56:6D:46:22:BC:4E:CF:EE:1B:EB:F8:15 - 74:B6:FB:F7:10:E8:D9:0D:44:D3:40:12:58:89:B4:23:06:A6:2C:43:79:D0:E5:A6:62:20:E3:A6:8A:BF:90:E2 + + + 17:E2:81:11:06:2F:97:A8:60:79:7A:83:70:5B:F8:2C:7C:C0:29:35:56:6D:46:22:BC:4E:CF:EE:1B:EB:F8:15 + + + 74:B6:FB:F7:10:E8:D9:0D:44:D3:40:12:58:89:B4:23:06:A6:2C:43:79:D0:E5:A6:62:20:E3:A6:8A:BF:90:E2 + diff --git a/common/src/test/java/com/example/android/uamp/media/library/MusicSourceTest.kt b/common/src/test/java/com/example/android/uamp/media/library/MusicSourceTest.kt index d716c3062..563812e3f 100644 --- a/common/src/test/java/com/example/android/uamp/media/library/MusicSourceTest.kt +++ b/common/src/test/java/com/example/android/uamp/media/library/MusicSourceTest.kt @@ -39,21 +39,21 @@ import org.robolectric.RobolectricTestRunner class MusicSourceTest { private val musicList = listOf( - MediaMetadataCompat.Builder().apply { - id = "ich_hasse_dich" - title = "Ich hasse dich" - album = "Speechless" - artist = "Jemand" - genre = "Folk" - }.build(), - - MediaMetadataCompat.Builder().apply { - id = "about_a_guy" - title = "About a Guy" - album = "Tales from the Render Farm" - artist = "7 Developers and a Pastry Chef" - genre = "Rock" - }.build() + MediaMetadataCompat.Builder().apply { + id = "ich_hasse_dich" + title = "Ich hasse dich" + album = "Speechless" + artist = "Jemand" + genre = "Folk" + }.build(), + + MediaMetadataCompat.Builder().apply { + id = "about_a_guy" + title = "About a Guy" + album = "Tales from the Render Farm" + artist = "7 Developers and a Pastry Chef" + genre = "Rock" + }.build() ) /** Variables for testing [MusicSource.whenReady] */ @@ -148,7 +148,8 @@ class MusicSourceTest { } } -class TestMusicSource(private val music: List +class TestMusicSource( + private val music: List ) : AbstractMusicSource(), Iterable by music { override suspend fun load() = Unit diff --git a/gradle.properties b/gradle.properties index 1e4e18d4e..5f4669377 100644 --- a/gradle.properties +++ b/gradle.properties @@ -13,25 +13,19 @@ # See the License for the specific language governing permissions and # limitations under the License. # - # Project-wide Gradle settings. - # IDE (e.g. Android Studio) users: # Gradle settings configured through the IDE *will override* # any settings specified in this file. - # For more details on how to configure your build environment visit # http://www.gradle.org/docs/current/userguide/build_environment.html - # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. android.enableJetifier=true android.useAndroidX=true org.gradle.jvmargs=-Xmx1536m - # Required by Robolectric. android.enableUnitTestBinaryResources=true - # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects