[Android TV] Googleアカウント

Google系のアプリ使うためにGoogleアカウントでログインしたりする機能が必要っぽいので試しました

Googleアカウントにログインする方法は以下があると思います
・OSのSettings
・GoogleSignIn(com.google.android.gms:play-services-auth)を使う

後者の場合Googleアカウント名やユーザアイコンが表示したくなるのでユーザ情報を取得できるようにしたいのですが、その場合はGCPにアプリ登録などが必要となります

GCP関連は以下を参照
https://developers.google.com/identity/sign-in/android/start?hl=ja

デバック用の署名証明書のフィンガープリント(SHA-1)の取得方法は以下
C:\Users(ユーザー).android\debug.keystore
password: android

cd C:\Users\(ユーザー)\.android
keytool -list -v -keystore debug.keystore

OSのSettings

Intentで呼び出すだけ

val intent = Intent(Settings.ACTION_SETTINGS)
startActivity(intent)

GoogleSignIn

Android TV 12ではSettingsのGoogleアカウント設定と同じものが呼び出されました

val activity = LocalContext.current as Activity

val launcher = rememberLauncherForActivityResult(
    ActivityResultContracts.StartActivityForResult()
) { result ->
    // displayNameなど更新
}

// ボタンクリックなどでintent呼び出す
val client = GoogleSignIn.getClient(
    activity,
    GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
        .build()
)
client.signInIntent.also { intent ->
    launcher.launch(intent)
}

Googleアカウント情報を得るには先にGCPの対応が必要です
1日1万回の呼び出し制限があるようです

val acct = GoogleSignIn.getLastSignedInAccount(activity)
acct?.let {
    name = it.displayName.toString()
}

Android Studio Hedgehog 2023.1.1 RC 3 built on November 3, 2023