Androidアプリ開発の覚書き

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

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

ゲームプログラミングで用いる数学とAPI

数学が分からなくても、目的とするオブジェクトの座標変換はできるのですね。 これまで全然知らなかった世界です。 2Dのゲームプログラミングで有用な数学について教えてください。 AndroidのJetpack Composeを用いてアプリ開発をしています。挙げていただい…

Androidのセンサーで取得できる値

ChatGPTに聞いてみたところ、以下です。 加速度センサー (Accelerometer): デバイスの加速度を測定し、デバイスがどのように動いているかを知ることができます。 ジャイロスコープ (Gyroscope): デバイスの回転を測定します。 磁気センサー (Magnetic Field …

加速度センサーの値から、デバイスの動きを検出する方法

高校の時、物理の偏差値30台でしたが、ChatGPTのおかげで、センサーの利用は出来そうです。 かなり嬉しい。センサーの他の用途についても、いろいろ聞いてみたいです。 あと、会話の途中まで誤解していましたが、サンプルの例では、Androidの加速度センサー…

センサーを利用する前準備

Jetpack Composeの機能ではない、従来の機能であるセンサーを用いる場合、Composable関数の階層下からも、ApplicationContextにアクセスする必要が出て来ます。そこで、CompositionLocalで学んだ方法を通してアクセスできる、フレームワークによって定義され…

Jetpack Compose:複数画面を遷移するのに、Fragmentは使わないようです

UI

いやあ・・ほんまに、複数画面の行き来などの処理も含めて、全部、Kotlinのコードだけを用いて簡略化できるのですね。本当にびっくりしました。 Jetpack Composeで、複数画面を行き来するような処理を書く場合、どのようにするのですか? NavHostスコープのc…

Jetpack Compose:Modifierの概要

UI

Jetpack Conposeでいつも目にするModifierの意義と役割が分からなかったので聞いてみました。 マージン、パディング、イベントハンドラなど、あらゆる描画要素に共通する値をパッケージしたオブジェクトのようです。 チェーンの仕組みによって、値を上書きで…

Canvas上の動くオブジェクトを実装

Composable関数内のmutableState()でラップしたデータクラス等で定義したそのオブジェクトを、データを変更したオブジェクトで丸ごと置き換えることで、再描画に関連するComposable関数の更新処理をトリガーさせるという手順を取るようです。 ゲームループは…

Canvasでアニメーションを描画する場合は、ダブルバッファリングは不要

Jetpack ComposeのComposable関数で描画要素を定義する場合、その要素が参照する'State'のオブジェクトの値の変更は常にフレームワークによって検出されるよう構成され、値の変更に影響する部分のみが効率的に再描画されるようです。 昔、ゲームプログラミン…

2次元でキャラクターを操作するゲーム

Jetpack Composeで作った2次元ゲームの例を挙げてもらいました。 こんなにシンプルにできるんだと、びっくりしました。 AndroidのKotlinとJetpack Composeで、2次元でキャラクターを操作するゲームを作りたいです。 サウンドは後回しで良いです。キャラクタ…

Jetpack Compose:親コンポーネントから孫以降コンポーネントへ直接データを渡す(CompositonLocal)

UI

本を読んでいて分からなかった箇所を、ChatGPTに聞きました。Jetpack Compose以前の方法との比較など、色んな選択肢の意義や比較をすぐに教えてもらえるので、すごく助かります。 Jetpack ComposeのCompositionLocalが何をしているのか分かりません。 LocalT…

簡単なゲームのUIには、Jetpack Composeが良いかも

画面上のキャラクターがタップで動いたりするような、簡単なグラフィックスのゲームを作るには、Jetpack Composeが良さそうです。 また、それに限らず、UIをXMLではなくKotlinのコードで作成出来るというのは、僕にとってはすごく心惹かれます。 早速、本を…

Androidアプリの公開とデジタル署名

Androidアプリの公開プロセスで、アプリ自体の同一性がどう保証されているのか気になったので、ChatGPTに聞いてみました。 アプリをプレイストアに公開するというのは、どういうことなのでしょうか? どういった準備が必要になるのでしょうか? アプリのアイ…

100MBほどのデータをアプリ実行中にダウンロードするには(Retrofit, Kotlin Coroutine)

ネットワークから100MB程度のデータを最初だけダウンロードしたい場合、どういう処理が良いか。日本語で検索するとかなり古いAndroidフレームワークで利用されていた方法だったり、簡潔なKotlinの非同期処理を用いていないものだったりするので、お手上げで…

ボタン押下後の長い処理とか、二度押し禁止とか

本職で何年かプログラマーをしていましたが、その頃に比べても、非同期処理を普通に用いるAndroidプログラミングはすごく難しく感じます。 ChatGPTがなかったら、ずっと悩んだままだったかもしれません。 ボタンを押した後、時間がかかる処理をするときは、c…

タブのあるページは、ViewPager2とTabLayoutで作成する

(Jetpack Composeを用いない、古い手法になります。別記事 で少しだけ、Jetpack Composeでのコード例があります。) また、ChatGPTに聞いてみました。 Androidアプリを、KotlinとJetpackを用いて開発しています。タブを自由に増減できるページを作りたいので…

そもそもRoomライブラリとは

気になったので、ChatGPTに聞いてみました。ORMの利用だけでなく、テストの簡素化も目的だったのですね。 かなり使えそうです。 Roomライブラリの開発経緯や目的について、教えてください。 テストの簡素化はどのように実現されているのですか? Roomライブ…

Roomによるデータベースの監視方法

Roomライブラリの標準機能を利用して、データベースの内容変更を検出する方法ついて、ChatGPTに聞いてみました。 Roomによるデータベースの操作方法について教えてください。 データ監視方法と非同期処理についても教えてください。 LiveDataを用いるデータ…

Fragment間の引数付き移動

(Jetpack Compose以前の古い手法になります。詳しくは別記事参照。) JetpackでのFragment間の移動と従来の移動との違いが整理しきれていなかったので、ChatGPTに聞いてみました。 Androidアプリをkotlinで開発しています。次のコードがしていることを教えて…

設定値は、propertiesファイルでなくresouresに持たせる

プロパティファイルよりは、リソースファイルや、SharedPreferencesを通してアクセスするxmlファイルに持たせることが標準だったようです。 全く知らなかった。 Kotlinを用いたAndroidのプログラミングで、設定値を保持する標準的な方法を教えてください。 p…

WebViewでハイライトを動的に追加するには

(Jetpack Compose以前の手法です。Jetpack Compose内でWebViewを使用するためには、AndroidView関数を経由して、WebViewを生成する必要があります。詳細は別記事参照。) また、ChatGPTに聞いてみました。 WebViewでハイライトをするには、Javascriptを用いて…

EditViewでハイライトを動的に追加するには

(Jetpack Composeでは、TextFieldを用います。別記事参照) ChatGPTに聞いてみました。 TextViewまたはEditTextのSpannableStringオブジェクトの値を変更することでハイライトが付加出来るようです。 編集に関しては、表示させたメニューで色を指定するタイミ…