- 1. [Unity] Android版だけAdMobの広告のリワードが受け取れなくてハマった話
- 2. UnityでAndroid端末の回転ベクトルを取得する
- 3. ChatGPTや他3種の生成AIに、Androidアプリでタップした時にテキストを1秒表示して消す処理を聞いて、結果を比較 →性能差・各特徴が見られる
- 4. Jetpack Composeのアニメーション設定(easing)の定義と効果について
- 5. [2024/3月版]ElixirDesktopでスマホアプリを作る – Phoenix1.7のアプリを起動するジェネレータが爆誕した
- 6. Androidからスマートウォッチにデータを送ってみよう!(MessageClient)
- 7. 開発チーム発足時に最初にやったこと
- 8. ChatGPTに、Androidアプリでタップした時にテキストを1秒表示して消す処理を聞いて、実際に実行させてみる →そのままで正常動作
- 9. Strong skipping modeの記事を読んで知らなかったことメモ
- 10. JetpackComposeで指定した文字列の色を変更する
- 11. Wear OS アプリの審査を通すために対応したこと 2024
- 12. 【Flutter】AndroidでImage.networkが表示されない問題を解説
- 13. Android「このデバイスでは、暗号化されたデータにアクセスできません」の対処
- 14. Jetpack composeでうまいことエラーハンドリングをしたい
- 15. 【Android】Kotlinのテストコードを書いていてエラーになった時の話【Kotlin】
- 16. Android+RetrofitでHTTP通信するアプリの作り方(その4)
- 17. 【Android】TextViewの自動サイズ調整に関する落とし穴
- 18. Unity AndroidのBuild時になるエラーについての対処
- 19. CircleCIとGitHubでAndroidの自動テスト環境を構築するためのメモ
- 20. IsarでMap型は取り扱えないので, IsarLinkを使った話
[Unity] Android版だけAdMobの広告のリワードが受け取れなくてハマった話
# 起きたこと
Unity製のアプリにAdMobの広告を組み込み、Rewarded型の広告を視聴した後にゲーム内の特典を与えるような実装をしていました。実装が完了し、Unityで動かしてOK、iOS実機で動かしてOKだったのでヨシヨシと思っていたのですが、最後に確認したAndroid実機でNGでした。ググってもなかなか答えに辿りつかず困ったのでここに吐き出しておきます。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/296554/c299ac3e-9c3f-76e7-113d-715a4dad641d.png)
ちなみに広告の実装に関しては以下の公式サイトの説明を読みながら進めていました。
https://developers.google.com/admob/unity/rewarded?hl=ja# NGだった時の実装
以下のような形で、rewardedAd.Showの中に処理を書き、PlayerPrefsを更新することでアプリ全体からspecial_item_countの値
UnityでAndroid端末の回転ベクトルを取得する
## 概要
Android端末の複数センサを用いて算出された回転ベクトルをUnityから取得する方法についてまとめます.
## やりたいこと
Android OS は複数センサの情報を複合した回転ベクトルを算出できるので,Unityからその情報を取得したい.
## 解決手法
UnityからAndroidの回転ベクトルを取得するAndroid Pluginを作成.
## 環境
– Unity 2022.3.4f1
– Windows 11
– Google Pixel 3a
– Android バージョン12## 実装
Androidプラグインの作成にはいくつかの方法がありますが,今回はJavaファイルをUnityのプロジェクト内に配置してプラグインとして読み込ませる方法をとることにしました.プラグインの再利用や配布を考えるなら,直接Javaファイルを配置するのではなく,[Android Libraries や Android Archives (AAR) を利用した方法](https://docs.unity3d.com/ja/2022.3/Manual/android
ChatGPTや他3種の生成AIに、Androidアプリでタップした時にテキストを1秒表示して消す処理を聞いて、結果を比較 →性能差・各特徴が見られる
# はじめに
本稿では、下記の記事で記載した、Androidアプリでタップした時にテキストを1秒表示して消す処理を行うコードの作成について、
4種の生成AI、ChatGPT・Phind・Microsoft Copilot・Google Gemini、のコード生成結果を比較します。https://qiita.com/dl_from_scratch/items/b5d6ab05464f8e25faf5
Androidのアプリの作り方を、ほとんど知らない状態で(※1・※2)、タップした時にテキストを1秒表示して消すような、簡単なサンプルアプリを試しに作ってみようと思った時に、
Androidアプリに関わったことがない、何も分からない状態で、一から検索して読み調べてコードを作るのは(簡単なコードであっても)相当面倒くさいな…、と思ってしまいます。そこで、4種の生成AIに聞いて、タップした時にテキストを1秒表示して消す動作を行うサンプルプログラムを作ってもらい、うまく動作するかを試してみます。
※1: ただし、Android Studioの空のサンプルプロジェクトをそのままビル
Jetpack Composeのアニメーション設定(easing)の定義と効果について
## Easingとは?
Easing関数は、アニメーションの速度変化を定義するために使用されます。アニメーションが開始から終了までどのように進行するか、つまりアニメーションのテンポを制御します。
* LinearEasing
* FastOutSlowInEasing
* FastOutLinearInEasing
* LinearOutSlowInEasingは、Jetpack Composeなどで使用される一般的なEasing関数の例です。それぞれの関数はアニメーションに異なる特性を与え、ユーザーインタフェースの動きをより自然またはダイナミックに見せることができます。
## 定義
Easing.ktからの抜粋です。
“`
/**
* Elements that begin and end at rest use this standard easing. They speed up quickly
* and slow down gradually, in order to emphasize the end of the transition.
*
* Stan
[2024/3月版]ElixirDesktopでスマホアプリを作る – Phoenix1.7のアプリを起動するジェネレータが爆誕した
こんにちは!
プログラミング未経験文系出身、Elixirの国に迷い込んだ?!見習いアルケミストのaliceと申します。
今回はElixirDesktopの起動が超楽になるジェネレータについて学んだことをまとめます。# 目的
@the_haigo さんが作っていただいたジェネレータを使って、PhoenixアプリをAndroid Studioで起動してみたい!
なお、本記事は[ElixirMobile#7:ジェネレータ作ったよ+ ハンズオン会](https://fukuokaex.connpass.com/event/309962/)のレポートを兼ねています。https://github.com/thehaigo/desktop_setup
このジェネレータを使用すればElixirDesktopのアプリ作成がコマンド一発でできてしまう…!
ものすごいものが爆誕してしまいました!!## 実行環境
:::note warn
Elixir, Erlangのバージョンに指定があります。ご注意ください。[^0]
:::Windows 11 + WSL2 + Ubuntu 2
Androidからスマートウォッチにデータを送ってみよう!(MessageClient)
WearOS開発において、教材や実装例は2014年~2015年付近のものが多く、特にAndroidからWearOSにデータを送信するコードが載っているサイトも数多くありません。
そこで初心者の方にもわかりやすくほぼコピペでできるアプリ実装例を書きました。
WearOS開発に詰まっている方に是非チェックしていただきたいです。
https://note.com/bakugui_inago/n/nc9cd083e4918?sub_rt=share_pwアプリご紹介
Androidで値を入力し、ボタンを押したらWearOSに値を送って表示させるシンプルなアプリ。![スクリーンショット 2024-03-06 155048.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3510524/3654add6-d459-5667-7562-091fc73aa5ae.png)
↓
![スクリーンショット 2024-03-06
開発チーム発足時に最初にやったこと
# はじめに
今年度に自身のキャリアとして初めて,新規モバイルアプリケーションの開発にチームビルディングから参加しました。開発チーム発足時に最初にやったことを備忘録も兼ねて記載していこうと思います。
# ブランチ戦略の決定
発足時は下記のようなブランチ戦略で開発を始めました。
タスク管理にはJiraを使用していたのでGitHub連携機能を使用し, 開発ブランチについてはチケット番号をそのままブランチ名にして管理していました。
![スクリーンショット 2024-03-10 23.52.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1550392/7e085709-af9b-7df1-43b1-9c754d267ff8.png)|ブランチ名 |役割 |
|—|—|
|main |マスターブランチ このブランチは必ず動く |
|feature(CH-XXXX/CH-YYYY) |開発用ブランチ チケット名をそのままブランチ名に |
|release |リリースブランチ cod
ChatGPTに、Androidアプリでタップした時にテキストを1秒表示して消す処理を聞いて、実際に実行させてみる →そのままで正常動作
# はじめに
Androidのアプリの作り方を、ほとんど知らない状態で(※1・※2)、タップした時にテキストを1秒表示して消すような、簡単なサンプルアプリを試しに作ってみようと思った時に、
Androidアプリに関わったことがない、何も分からない状態で、一から検索して読み調べてコードを作るのは(簡単なコードであっても)相当面倒くさいな…、と思ってしまいます。
そこで、ChatGPTに聞いて、タップした時にテキストを1秒表示して消す動作を行うサンプルプログラムを作ってもらい、うまく動作するかを試してみます。
※1: ただし、Android Studioの空のサンプルプロジェクトをそのままビルドしてスマホ上で動作させる所までは(最低限)、出来た状態を想定します。
※2: ただし、C#やPythonなどプログラムについては、ある程度知っている状態を想定します。# ChatGPTにサンプルプログラムを聞いてみる
現在最新のAndroid 13で動作するように、「Android 13、~」を付けます。
また、Javaのコードとなるように、「Java、~」を付けます。ht
Strong skipping modeの記事を読んで知らなかったことメモ
この記事を読みます。 基本記事に書いてあることを書いているだけです。何か誤りがあれば教えて下さい。
https://medium.com/androiddevelopers/jetpack-compose-strong-skipping-mode-explained-cbdb2aa4b900
stable unstableとか、Listはunstableになってしまうとかをすでに知っている人向けの記事です。
* **Unstable parameterはinstance equality (===)で見る**
* **stableは今までどおり equalsで見る**具体的にはこういうケースで救われる。以下だと、favoriteが変わったときに、Listがunstableなので、ArticleList()がもう一度走る(recompose)されてしまっていたが、 `===` での比較が変わっていないので、スキップされるようになる。
“`kotlin
@Composable
fun ArticleList(
articles: List, // List
JetpackComposeで指定した文字列の色を変更する
## はじめに
どうもこんにちは、最近Kotlin始めました。普段はUnityを触っています。
今回はテキストフィールドの一部文字列の色を変更するという処理を書いてみたのでまとめました。## JetpackComposeで文字列の色を変更
テキストフィールドに入力する文字列が一定文字数を超えた場合、超えている分だけ赤くするコードを書きました。↓こんな感じ↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2882297/2eb72dde-68fc-bac1-976c-a0e980dc9e40.png)## VisualTransformationを使用
VisualTransformationとは簡潔に言うと、Input TextFieldの見た目を変更するときに使用するインターフェイスです。[^1]
このインターフェイスを継承したクラスをTextField関数の引数に持たせ、InputFieldの見た目を変更することができます。## 手順① テキストフィールドの一部配色
Wear OS アプリの審査を通すために対応したこと 2024
## はじめに
Wear OS アプリの審査を通すために対応したことをまとめる## 対応したこと
### スクリーンショットから透過色の削除ストアに提出するスクリーンショットの背景に透過色が含まれているとリジェクトされる。Android Studio でスクリーンショットを撮影すると背景に透過色が含まれてしまうので、手動で透過色を塗り潰して再提出する必要がある
### スクロールバーの追加
`ScrollView` や `RecyclerView` な
【Flutter】AndroidでImage.networkが表示されない問題を解説
# はじめに
こんにちは!
Flutter開発を始めて2年目となるエンジニアです!ある日、後輩から「Image.networkが表示されないです。」っていうヘルプが飛んできました。
終業間近だったためとりあえずプッシュしておいてもらい、その場は終わり、デバッグしてみると確かに画像が読み込まれない赤の罰が表示されていました。今回の記事では、これの原因と解決方法を解説します。
# こんな人に読んでほしい
* Flutterでの開発を行っている方
* Flutterでの開発を検討している方
* Flutter初学者の方# エラーコード
“`
SocketException: Failed host lookup: ‘{project}’ (OS Error: No address associated with hostname, errno = 7)
“`# 原因
結論、Androidエミュレータからネットワークに接続して画像を表示させようとした際に、AndroidManifest.xmlで接続許可をしないといけませんでした。
未経験のエンジニアがExcep
Android「このデバイスでは、暗号化されたデータにアクセスできません」の対処
# 問題
Androidで
「このデバイスでは、暗号化されたデータにアクセスできません」
「セキュリティ上、このデバイスでは暗号化されたデータにアクセスできなくなりました。Google アカウントへのログインに最近使用したデバイスを使ってもう一度お試しください。詳しくは、g.co/OnDeviceEncryption をご覧ください。」
と表示されて認証が進まない。
他のアプリはコレに失敗してもSNS認証になるだけだったがメルカリのビットコインはこの認証が必須。# 解決
日本語でググってもろくな情報がなかったが端末言語設定を英語にしてメッセージを再度表示させググったら一発だった。1. https://myaccount.google.com/security でバックアップコード発行、再設定用連絡先などを設定する
1. https://takeout.google.com/settings/takeout 及び
https://passwords.google.com/options でChromeデータやパスワードをエクスポートしておく
1. https://chrome.
Jetpack composeでうまいことエラーハンドリングをしたい
# はじめに
今回はJetpack composeで実装するときに複数種類のエラーをハンドリングするときのアイデアを出していこうと思います
### 本文
今主流となっている`seald class`でUIの状態を分岐させてそれによって出すCompose部品を出しわけるのが今の主流化と思いますが、そこにネスとしてエラー用の`seald class`をはやすというものです。そうすることで読み込みのエラーや状態更新のエラーなどを分岐させることが可能になりそれにより表示を分岐させることもできます。
ただし、ここで懸念すべきところは分岐処理が増える分Compose関数内のコードが多少なりとも増えてしまうという点です
### 最後に
今回はアイデアの提案のみですが、何か改善点などがあればコメントいただけると参考になります
【Android】Kotlinのテストコードを書いていてエラーになった時の話【Kotlin】
# エラー内容
“`
Exception in thread “Test worker @coroutine#1” java.lang.IllegalStateException: Module with the Main dispatcher had failed to initialize. For tests Dispatchers.setMain from kotlinx-coroutines-test module can be used
“`# やったこと
上のエラーを翻訳をかけた感じ、ざっくりいうと
kotlinx-coroutines-test モジュールの Dispatchers.setMain が必要とのこと。**kotlinx-coroutines-test** で検索をかけてみると
https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-test/
このライブラリが出てきたので追加してみた。
“`php:build.gradle(Module :app)
depe
Android+RetrofitでHTTP通信するアプリの作り方(その4)
# UIの仮組みとViewModelの導入
[前回](https://qiita.com/aburagirio/items/abebf9a7fadf8ef94dce)の記事でHiltを活用できるようになりました。
それではここからアプリを組み上げていきましょう。
## 目次
– [UIの仮組みとViewModelの導入](#uiの仮組みとviewmodelの導入)
– [目次](#目次)
– [今回の作業内容](#今回の作業内容)
– [ViewModelを追加する](#viewmodelを追加する)
– [ViewModelの定義](#viewmodelの定義)
– [UIを追加する](#uiを追加する)
– [Sealed Interface](#sealed-interface)
– [通信状態に応じてUIを更新する機構を追加する](#通信状態に応じてuiを更新する機構を追加する)
– [MutaleState](#mutalestate)
– [Stateのhoist](#stateのhoist)
– [Mai
【Android】TextViewの自動サイズ調整に関する落とし穴
# はじめに
TextViewの自動サイズ調整、テキストが動的に変わる場合や少々長い文言を設定しなければならない場合などにおいて非常に便利ですよね。
ただし、この自動サイズ調整には設定を誤ると予期しない結果が生じる可能性がありますので、今回はその点を備忘録的にまとめておこうと思います。# 自動サイズ調整の落とし穴
まず、TextViewを以下のように設定しているとします。“`main.xml
“`
一見すると特に問題ないように見えますが、この実装では自動サイズ調整が機能しない
Unity AndroidのBuild時になるエラーについての対処
Unityで通常の実行ができるのに、AndroidでBuildができなかった時、確認すべきこととBuildするために行ったことを残しておく。
## まず確認すること
コンパイルする対象にEditor用のコードが含まれていないかを確認する。using UnityEditorを使用していたら注意。もしあればUnityのEditorフォルダに移動するか、#if UNITY_EDITOR のオプションを追加ってBuild時に影響がでないようにする。## アンドロイド関係のエラー
筆者自身もどうしてうまくいくようになるのか深く理解していない部分もあるので実施しするときには自己責任で。まずはなにはともあれExternal Dependency Managerを使う。Androidに必要なものを調整してくれるやつ
DLサイトhttps://github.com/googlesamples/unity-jar-resolver
external-dependency-manager-latest.unitypackageをGitHubからDLする。
Unity上ですでにDLしてあればま
CircleCIとGitHubでAndroidの自動テスト環境を構築するためのメモ
# CircleCIでAndroidの自動テスト
個人的な勉強でCircleCIとGitHubの連携を試した時のメモです。
おそらく、次回同じことをやろうとした時には忘れているのでメモを残します。
## 目次
– [CircleCIでAndroidの自動テスト](#circleciでandroidの自動テスト)
– [目次](#目次)
– [手順](#手順)
– [GitHubのリポジトリを用意する](#githubのリポジトリを用意する)
– [CircleCIのアカウントを作成する](#circleciのアカウントを作成する)
– [CircleCIとGitHubを連携させる](#circleciとgithubを連携させる)
– [鍵の作成](#鍵の作成)
– [公開鍵をGitHubへ保管する](#公開鍵をgithubへ保管する)
– [秘密鍵をCircleCIへ保管する](#秘密鍵をcircleciへ保管する)
– [スクリプトを修正する](#スクリプトを修正する)
– [circleci-project-setup
IsarでMap型は取り扱えないので, IsarLinkを使った話
# Isarとは
[Isar公式ドキュメント](https://isar.dev/tutorials/quickstart.html)曰く,**最もcoolなFlutterデータベース**とのこと。Flutter のために最適化された高速で軽量なオープンソースのデータベースエンジンであり, 他のモバイルデータベースエンジンと比べてはるかに高速で, あらゆるオブジェクトのデータを保存できます。
執筆時現在, Isarが対応している型は以下です。
– bool
– byte
– short
– int
– float
– double
– DateTime
– String
– List
– List
– List
– List
– List
– List
– List
– List残念ながらMap型には対応しておらず, 複雑なオブジェクトを取り扱う必要がある時に少し困ります。
# IsarLinkとは
`リンクは、例えばコメントの作成者(User)のようなオブジ