- 1. 単体テストで、日付を扱う
- 2. Android端末でOpen Interpreterを使用する方法
- 3. 使用できない状態となった楽天ポイントを使用できる状態に修正した話
- 4. ずんだもん認知シャッフル睡眠アプリを作ろうと思ったら大変だった
- 5. 初心者でも簡単!AndroidのTermuxでSSH接続する方法
- 6. 【Android】Jetpack ComposeのButtonあれこれ【Kotlin】
- 7. android studio PNG画像インポート時のtips
- 8. Androidアプリ制作メモ
- 9. AlarmClockクラスのリファレンスがぺらぺらすぎるので補いたい
- 10. ドキュメントからadbコマンドの仕組みを読み解く
- 11. 【Android】起動したWorkerを停止させる方法
- 12. 【Android】Jetpack ComposeでViewModelを入れてみた
- 13. Androidで画面にタップしている箇所を表示する方法
- 14. [Unity] Android版だけAdMobの広告のリワードが受け取れなくてハマった話
- 15. UnityでAndroid端末の回転ベクトルを取得する
- 16. ChatGPTや他3種の生成AIに、Androidアプリでタップした時にテキストを1秒表示して消す処理を聞いて、結果を比較 →性能差・各特徴が見られる
- 17. Jetpack Composeのアニメーション設定(easing)の定義と効果について
- 18. [2024/3月版]ElixirDesktopでスマホアプリを作る – Phoenix1.7のアプリを起動するジェネレータが爆誕した
- 19. Androidからスマートウォッチにデータを送ってみよう!(MessageClient)
- 20. 開発チーム発足時に最初にやったこと
単体テストで、日付を扱う
日付を扱った単体テストを実施することがあったので、その際にモック化したり色々問題があったので、まとめてみました。
Hiltでの単体テストに関しては、こちらの記事を[参考](https://qiita.com/shimizu-you/items/ad8ad91b9b27c227d2a5)してください。### Mockkを導入
“`kotlin
testImplementation(“io.mockk:mockk:1.13.9”)
“`### 日付ライブラリーの導入
日付関連のライブラリーとして、Androidに最適化された[threetenbp](https://github.com/ThreeTen/threetenbp)を使用します。
ただし、単体テストをする際に注意点があります。
単体テストでは、threetenabpが使えないため、除外してthreetenbpを使用する必要があります。“`kotlin
implementation(“com.jakewharton.threetenabp:threetenabp:1.4.6”)
testImplementa
Android端末でOpen Interpreterを使用する方法
Android端末で高性能なAIアシスタントを使いたいと思ったことはありませんか?Open Interpreterを使えば、ChatGPTのようなAIとAndroid端末上で直接対話することができます。この記事では、Android端末へのOpen Interpreterのインストール方法を詳しく解説します。
—
こちらの記事もおすすめ
https://hamaruki.com/its-easy-even-for-beginners-how-to-connect-via-ssh-with-android-termux/
## Open Interpreterとは
Open InterpreterはオープンソースのAIアシスタントアプリケーションで、OpenAI APIを利用してユーザーとの対話を行います。PC版に加えて、Android版も開発されています。
Android版Open InterpreterはTermuxというターミナルエミュレータアプリ上で動作します。Termuxは追加の設定なしにAndroid端末上でLinux環境を提供するアプリで、Open Inter
使用できない状態となった楽天ポイントを使用できる状態に修正した話
事の経緯は、嫁のキャリアメールを普通のメールアドレスに切り替えようとしたことが始まりです。
最初にキャリアメール(仮に**AAA@com**とします)のアドレスに紐づけて楽天アカウントを作成していました。そして、このキャリアメールのアカウントをやめて例えばgmail(仮に**BBB@com**)のようなメールアドレスで楽天アカウントを作成しようとしました。
### 結論からすると楽天会員情報ページでメールアドレスをAAA@comからBBB@comに変更すれば良かったのです。
![タイトルなし.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/495919/282672d0-5af8-31ba-fc23-59c9eac546fc.jpeg)そうしないで、**BBB@com**として楽天アカウントを新規作成してしまい悲劇は起こりました。
嫁は、楽天カードを作成し入会ポイントをもらったのですが、**BBB@com**には入会ポイントは入らず**AAA@com**に入会ポイントが付与されたのです。それ
ずんだもん認知シャッフル睡眠アプリを作ろうと思ったら大変だった
ずんたもんが読み上げる認知シャッフル睡眠の動画をよく聴くので、voicevoxで単語を読み上げるアプリを作ってみようと挑戦しましたが、アプリ初心者なので各種ポイントでつまずいてしまい思ったより大変でした。
はまったポイントを記録したいと思います。順不同です。## これをやったら動いた
### voicevox_coreのAARファイルをアプリのプロジェクトのdependencyに追加する
aarがビルドされているのはプレビュー版のみのようです。
https://github.com/VOICEVOX/voicevox_core/releases/tag/0.15.0-preview.16 (2024/02現在最新のプレビュー版ビルド)
から `model-0.15.0-preview.16.zip` をDL・解凍し、
https://developer.android.com/studio/projects/android-library#psd-add-aar-jar-dependency
こちらの手順通りにaarファイルをdependencyに追加する
つまずきの8割がcore
初心者でも簡単!AndroidのTermuxでSSH接続する方法
こんにちは!今回は、AndroidのTermuxアプリを使ってSSH接続する方法を初心者向けに詳しく解説していきます。Termuxを使えば、Androidスマホやタブレットからリモートのサーバーに接続できるようになります。
—
こちらの記事もおすすめ
https://hamaruki.com/how-to-use-apollonstreamapi-to-stream-android-screen-capture-in-real-time/
https://hamaruki.com/create-a-gemini-app-with-android-studio-and-check-its-operation-on-the-actual-device/
## Androidにアプリのインストール
### Termuxアプリのインストール
まずは、Android端末にTermuxアプリをインストールしましょう。GooglePlayストアから入手できるバージョンは古いので、以下のリンクから最新版をダウンロードしてください。
https://github.com/termux
【Android】Jetpack ComposeのButtonあれこれ【Kotlin】
# 目次
* Button
* FilledTonalButton
* TextButton
* OutlinedButton
* ElevatedButton
* IconButton
* FloatingActionButton
* RadioButton# Button
“`
Button(onClick = {}) {
Text(“Button”)
}
“`
デフォルトで背景色がついているボタン# FilledTonalButton
“`
FilledTonalButton(onClick = {}) {
Text(“FilledTonalButton”)
}
“`
デフォルトの背景色がSecondaryColorによって設定されている# TextButton
“`
TextButton(onClick = {}) {
Text(“TextButton”)
}
“`
特に装飾のないTextにCl
android studio PNG画像インポート時のtips
# はじめに
今回はすごい基本的なことである`AndroidStudio`のプロジェクト内に`png`の画像を入れる方法を紹介します
最近はsvgを使用することが多いので中々使わないので最近自分が触って意外と細かい部分で忘れてるのがあったので紹介していきます
### 本文
まず、基本的に使う画像はデザイナさんか`Figma`から受け取ると思うのですが`svg`と違い`png`は各サイズを用意しないといけません。
その時に各サイズをまとめてフォルダでインポートすると思うのですが、`Figma`とかだと画像のファイル名に対して`hogehoge@1x.png`のような設定になってると思いますがそのフォルダをそのままインポートしようとすると[公式](https://developer.android.com/studio/write/resource-manager#automatic-parsing)にもあるように下記の三種類しか対応しません。
* @2
* @3
* @4そのため、すべての名前を変更して`ldpi`などの指定をしてあげないといけません。
### 最後に
今回は転ばぬ先
Androidアプリ制作メモ
# ライブラリについて
app以下の**build.gradle.kts**ファイル内**depenciesブロック**に記載される。
build.gradle.ktsはAndroidアプリをビルドするために使うgradleというツールのためのファイル。アプリに関する情報などを記述する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3491422/0628753f-fbea-4dd1-2f07-18a3ef5df21c.png)
**以前まではドキュメントの内容を直接depenciesブロックに追加するだけでライブラリが追加できたが、現在はできないらしい**
## Navigationライブラリの追加
Navigationライブラリ(画面遷移のためのライブラリ)を追加する。
app/src/main配下のresフォルダを右クリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/34914
AlarmClockクラスのリファレンスがぺらぺらすぎるので補いたい
**AlarmClockクラス**はAndroidアプリケーションでアラームをセットするための便利なクラスです。特に、アラームを解除する際に使用する`ACTION_DISMISS_ALARM`アクションについて、具体的な実装例をご紹介します。
以下は、指定されたラベルに基づいてアラームを解除するKotlinの関数です。
“`kotlin
/**
* 指定されたラベルのアラームを解除します。
*
* @param context コンテキスト
* @param label アラームのラベル
*/
fun dismissAlarmByLabel(context: Context, label: String) {
val intent = Intent(AlarmClock.ACTION_DISMISS_ALARM).apply {
setPackage(alarmPackageName) // アラームアプリのパッケージ名を指定
putExtra(AlarmClock.EXTRA_ALARM_SEARCH_MODE, AlarmCl
ドキュメントからadbコマンドの仕組みを読み解く
# adbコマンドってなに
まずは[公式ドキュメント](https://developer.android.com/tools/adb?hl=ja)を読んでみましょう。
次の通りに説明されています。
> Android Debug Bridge (adb) is a versatile command-line tool that lets you communicate with a device.> Android Debug Bridge(adb)は、デバイスとの通信を可能にする多機能なコマンドラインツールです。
つまり、**adbというコマンドを通してAndroidデバイスに色々させることができるよ!** というものです。
# adbコマンドでできること!
色々させることができると言いましたが、具体的にどんなことができるのでしょうか。
具体的なシチュエーションと共にいくつか紹介します。## アプリインストール
アプリのファイル(APK)をインストールすることができます。
サッと手元でインストールして確認したい時に便利です。
“`
adb install [apkフ
【Android】起動したWorkerを停止させる方法
# はじめに
皆さん、Worker使っていますか?
Serviceへの風当たりがどんどん強くなる今日この頃ですが、公式でもできる限りWorkerへの置き換えを推奨しているご状況です。
以前にもWorkerの取り扱いについて触れましたが、仕様の変更や何らかの問題が発生した際にすでに起動中のWorkerを止めなければならないケースが発生した場合、単純に処理を消すだけではWorkerは止まりません。
明確に停止する必要がありますので、今回は備忘録的にWorkerの停止方法をまとめておこうと思います。# Workerの停止方法
Workerの停止方法には3通りのやり方があります。“`main.kt
val workManager = WorkManager.getInstance(context)// by id
workManager.cancelWorkById(syncWorker.id)// by name
workManager.cancelUniqueWork(“sync”)// by tag
workManager.cancelAllWorkByTag(“s
【Android】Jetpack ComposeでViewModelを入れてみた
## 背景
前回jetpack composeでカウントアップアプリを作成したときに、クリック回数を記憶する変数をActivityに直書きしていました。
↓前回製作したものhttps://github.com/jtakumi/jetpackComposebasic/tree/clickableImage
ただ、画面の回転やライフサイクルの働きによりactivity内の一時的に保存している情報が破棄されてしまい、リセットされる危険性があるためViewModelにカウントアップの処理を移動させました。
## 今回の変更
クリック回数計算をviewModelに託す### Before
“`MainActivity.kt
var countTapStar by remember {
mutableStateOf(0)
}
var countTapTriangle by remember {
mutableStateOf(0)
}
“`### After
“`MainActi
Androidで画面にタップしている箇所を表示する方法
開発している人に不具合を報告する際に、再現方法が複雑な場合や、画面録画で再現方法を説明することなどがあると思います。
その際にどこをタップしているかわかると便利ですよね。
Androidの設定で表示させることができます。
# 設定方法
開発者向けオプションをまず表示させます。
ビルド番号を7回連続でタップします。(設定画面のデバイス情報にあります。)
開発者向けオプションを開きます
![Screenshot_20240316_200604.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274615/0a483985-e4b7-bd27-90cf-11f1ea40e63f.png)
タップを表示をONにすると表示されるようになります。
[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