Android TVアプリについて雑に調べた

Android TV にもOS12があると知り、興味を持ったので少し調べた。

現段階では Android12 Developer Preview2が最新で、これから段々とUpdateされていくんだろう。

developer.android.com

開発機器としては、ADT-3 というデバイスがあるらしい。

sites.google.com

こんなのあるんだ?初めて知った。

調べたキッカケは、「既存アプリをTV用に配布できるのか?」という疑問が湧いたからである。

一応、公式には日本語ドキュメントも用意されてある。
(全部は読んでない)

developer.android.com

コロナで家にいる時間も増えたので、TV向けアプリも面白いかなー

なんて妄想してただけ

Kotlin Multiplatform MobileでFirebaseを使いたい

最近はKMMに夢中

最近はすっかりKotlin Multiplatform Mobileにお熱である。

個人アプリをKMM化したのだが、Firebase Realtime DatabaseがKMMに対応してるんだろうか?

どこかで「JavaコードはKMMの共通では使えない」と見たので、たぶん使えないはず。

調べると、redditで公式アカウントが「対応する予定もない」との回答を見つけた。

www.reddit.com

しかし、回答のなかに公式から「非公式だけどこんなのあるよ」と紹介されてたのがこれ

github.com

この非公式SDKJavaコードであるFirebaseをKotlinでラップしてるようで、KMMに対応しているらしい。

実際に使ってみた結果

KMMの共通コード内でFirebase Realtime Databaseの値が取得できた!

なので、当分はこのSDKを使っていこうと思う。

Unable to determine application id: xxx com.android.tools.idea.run.ApkProvisionException: No outputs for the main artifact of variant: xxxx

現象

さっきまでビルドしていたAndroid Studioのプロジェクトがビルドエラーとなった。

Unable to determine application id: xxx com.android.tools.idea.run.ApkProvisionException: No outputs for the main artifact of variant: xxxx

解決方法

Invalidate Caches > Reset で直った。

f:id:banbara:20210105192420p:plain
Invalidate Caches > Reset

ビルドも問題なし

いったいなんだったんだろう...

Android公式の oss-licenses-plugin を試してみた

Androidアプリのライブラリを表示するためのGoogle公式 Gradle Pluginがあると聞いて、さっそく試してみた。

GitHub code

github.com

screen shot

f:id:banbara:20201208141804p:plain

f:id:banbara:20201208141822p:plain

感想

導入:とっても簡単
表示:とてもシンプルすぎて味気ない感じ
懸念:TensorFlowやOpenCVなど使ってないライブラリも表示されてる?(FirebaseのMLKitがこれらを含んでると予想)

Document link

公式リンク
developers.google.com

No such property: scope for class: com.android.build.gradle.internal.variant.ApplicationVariantData

現象

Android Studioを4.1にupdateしてビルドするとエラーが出た。

A problem occurred configuring project ':app'.
> groovy.lang.MissingPropertyException: No such property: scope for class: com.android.build.gradle.internal.variant.ApplicationVariantData

com.android.build.gradle.internal.variant.ApplicationVariantDataというプロパティが見つからないようだ。
なんだそれは... 聞き覚えがない名前だ

原因

Fabric SDKのpluginやLibraryが使えなくなったため、取得に失敗?していたらしい

解決策

Fabric plugin, library, codeを全て削除して、Firebase Crashlyticsに移行するとエラーが直った。

firebase.google.com

Androidカメラであつ森のカブ価を認識したい - チャレンジ編

やりたいこと(おさらい)

あつ森のカブ価を表示したとき、Androidのカメラでカブ価の数字のみを認識したい

前回

banbara-studio.hatenablog.com

Firebase ML Kitの英語のみオンデバイスモデルで数字だけを読み込む → 失敗

今回

tess-twoライブラリで試してみる

github.com

結果

ま た も や 失 敗

f:id:banbara:20200716015422p:plain
tess-twoの文字認識結果

アスキーアートか!

あまり期待してなかったが、数字すら認識できてないとは...

それとも自分の実装方法がおかしいのか?

感想

tess-twoの文字認識速度がめちゃくちゃ遅い!

1回の認識処理で30秒くらいかかってる(体感)

うーん、やっぱりダメか...

あとはFirebase cloud APIくらいしかないな

KotlinのifEmptyとifBrank

空白チェックを行う場合、if elseでもいいが、ifEmptyやifBlankでも便利にできる。


if elseの場合

val result = if (dummyText.isEmpty()) "hello" else ""
println(result) // hello


ifEmpty だとスッキリする

val result = dummyText.ifEmpty { "hello" }
println(result) // hello


ifBlank はnullも扱える

val result: String? = dummyText?.ifBlank { "hello" } ?: "null"
println(result) // hello