Androidアプリ開発の覚書き

Androidアプリ開発を、Kotlin, Jetpack Composeで行っています。気になったことをChatGPTに聞いて記事にしています。

2024-03-01から1ヶ月間の記事一覧

Firebaseって何だろう

「リアルタイムデータベースやプッシュ通知だけでなく、認証、アナリティクス、クラウドファンクションなど、多岐にわたる機能を提供しており、アプリ開発のさまざまな面で役立ちます」ということですが、今回はリアルタイムデータベースやプッシュ通知につ…

Jetpack ComposeとConstraintLayout

UI

Jetpack Composeでは、ConstraintLayoutは第一の選択肢でないようです。 Bootstrapのグリッドシステムっぽい手法に近いのかとも思いましたが、それとも違うようです。 Jetpack ComposeのConstraintLayoutの例を示してください。 ConstraintLayoutの方が一般…

Android, Kotlinの非同期処理

Jetpack ComposeでUIをデザインする際、Composable関数内に登場するStateFlow。 StateFlowのvalueが更新されることで、関連するComposable関数が再実行され、結果、StateFlowのvalueを参照するコンポーネントの表示も変わることになります。 ところで、非同…

比較的複雑なUIの実装例

Jetpack ComposeのColumnとRowの使い方を勘違いしていました。 あと、RadioButtonやCheckBox, LazyColumn, LazyRowといった複数の値や状態を持つコンポーネントの状態管理も、コード上の変数を通して管理するようで、従来のXMLベースのUIとは違った感じです…

Androidアプリで音声録音を実装する

音声録音の方法を聞いてみました。 ストリーミングと聞いて、リアルタイム音声通信などはできるかと思い、後半で聞いてみましたが、そちらはAndroid標準の機能だけで実装するのは難しそうです。 アプリ内から、音声の録音、録音したファイルの保存を行う方法…

Androidアプリ全体のデザイン:Scaffold

メニューの作成も、各画面への遷移も、Jetpack Composeを使うとかなり楽になりますね。 Scaffoldを用いたメニューのデザイン、画面の遷移、Androidデバイスによるメモリ管理に関わらず値を保持する方法など、教えてください。 sharedPreferencesを用いたデー…

Kotlinの依存性注入ライブラリ、Kodeinを使ってみる。

プラットフォームに依存せずどこでも使えるKotlinの依然性注入ライブラリ、Kodeinを、Androidアプリで使う方法について、ChatGPTに聞きました。 AndroidManifest.xmlに登録したクラス内で初期化するようです。 Kotlinの依存性注入ライブラリ、Kodeinの概要を…

Androidアプリをマルチモジュール化する

Jetpack Composeを用いるアプリが肥大化すると、UI確認のためにビルドが必要なことがネックになり、マルチモジュール化が必要になるそうです。 後々苦しまないよう、早めにChatGPTで聞いてみました。 マルチモジュール化とは何ですか? どうやって実現するの…

Androidアプリの開発手法の変遷について

ChatGPTに教えてもらいました。 僕は、Androidアプリ開発における、ViewModel以前を知りません。 Androidアプリの開発手法の変遷について教えてください。 このような変遷における、ViewModelの意義を教えてください。 データモデルとUIの間にViewModelを置…

物理エンジンが便利そう:JBox2D

Javaで書かれたJBox2DならKotlinでも使えます。 物理エンジンは、フレームレートの調整なども行ってくれるようです。 今は気が進みませんが、気が向いたら、使ってみようと思います。 あと、蛇足ですが、「衝突検知」というと難しいと思っていましたが、単純…

アプリをスリープ中も動かしたい:ForegroundService

ForegroundServiceを用いるとのことです。 イメージは、音楽再生アプリで、バックグラウンドでアプリが実行中であることを示す通知が表示されます。 ForegroudServiceの使い方を教えてください。 上のコードの内部的振る舞いも教えてください。 サンプルコー…

assetsやres/rawフォルダの音声の再生する

ゲームプログラミングなどで、プログラムで音声の再生や停止、切り替えをする方法が知りたくて、ChatGPTに聞きました。 音声を再生するにはどうするのですか? MediaPlayerオブジェクトとDisposableEffectについて、もう少し詳しく教えてください。 MediaPla…

Jetpack Compose:既存のRecyclerViewとLazyColumn/LazyRowの比較

UI

既存のRecyclerViewと、LazyColumn, LazyRowを比較しつつ、解説してもらいました。 Jetpack Composeに、既存のRecyclerViewに相当するComposable関数はありますか? RecyclerViewと、LazyColumn/LazyRowの機能を比較してください。 LazyPagingItemsの概要と…

AndroidView関数:WebView等の既存ViewをCompose内で使用する

UI

Composable関数が未提供の既存ViewをComposeで使用する方法です。 WebViewほか、MapViewなどはまだ未提供なため、以下で教わった方法が必要らしいです。 Jetpack ComposeでWebViewに対応する機能を持つComposable関数があれば教えてください。 AndroidViewシ…

Canvas上にキャラクターの画像を表示する(スプライトシート)

単に画像を表示するにしてもいろいろなやり方があるのですね。 キャラクターの上下左右向きの画像を一つの画像(スプライトシートという)として持ち、描画時に向きに対応した部分のみ切り抜いて表示するという手法を教えてもらいました。 Canvasを8x8のマスに…