Android関連のことを調べてみた

Android関連のことを調べてみた

Android Studioについての個人メモ

– buildやmake projectは、ビルド+自動生成ファイル作成+テストが動く
– app実行は、テストが動かない

元記事を表示

【Android】Hiltを使ってWorkerにDIする

## はじめに
[こちらの記事](https://qiita.com/Nkot117/items/e86c45c5236fcc28f926)(【Android】WorkManagerを使ってPUSH通知を飛ばす)では、Workerクラスを作成し、WorkManagerのOneTimeWorkRequestを使ってPUSH通知を飛ばす内容をまとめました。

今回はの上記で作成したWorkerに、Hiltを使って依存注入する方法をまとめたいと思います。

## Hiltとは何か
Androidアプリで依存性注入(Dependency Injection)を簡単に実装するためのライブラリになります。
依存性注入とは何か、どう嬉しいのか等はここでは特に触れません。
詳しくは[公式サイト](https://developer.android.com/training/dependency-injection/hilt-android?hl=ja&_gl=1*1czggd0*_up*MQ..*_ga*MTU1OTIyMDM4My4xNzE3NDk5NzIy*_ga_6HH9YJMN9M*MTcxN

元記事を表示

一生忘れる mac でのandroid ndkの場所

## 概要

タイトルの通りです。

## 場所

“`
/Users/gabriel/Library/Android/sdk/ndk/21.4.7075529
“`

とかです。

元記事を表示

Unity Android/iOSでFCMの処理を拡張する方法

# はじめに
Unityで、FirebaseCloudMessagingの処理をAndroid,iOSで拡張する機会があったので記事にざっくりまとめたいと思いました。
詳細なコード載せられないのと、必ずうまくいくとは言い切れないので要点だけまとめます。

# iOSの通知拡張について
iOSで通知に画像をつけるために色々対応する必要があるのですが、手順が複雑で、プロジェクトやビルド環境によってセットアップが変わってくるため、一概にこうすればうまくいきますと言えないので詰まったところだけまとめておきます。
結果的には通知に画像をつけることは可能でした。

## PostBuildProcessでiOSのXCodeプロジェクト設定

詳細なコードは載せられないので、大きく要点だけ…

大きく以下の追加が必要になります
– PBXProject.AddAppExtensionで通知拡張サービスの追加
– 下に記載してあるinfo.plistも一緒に登録
– PBXProject.AddFileToBuildで拡張コードファイルの登録
– PBXProject.SetBuildPr

元記事を表示

Android Studioにてgradle build時にCould not read workspace metadata from ~ のエラー

Android Studioにてgradle build時に以下のようなエラーが発生してビルドできず

“`
Multiple build operations failed.

Could not read workspace metadata from C:\Users\UserName\.gradle\caches\transforms-4\hogehoge\metadata.bin
“`

キャッシュ関連のようだったので`Invalidate Caches`からキャッシュ削除では直らずで
`C:\Users\UserName\.gradle\caches`を直接全部消すことで直りました。

検索すると以下が出てきたので関係しているのかも?
比較的新しいバージョンのみのバグなのかもしれず、すぐ直るのかもしれないが備忘のため記載

https://github.com/gradle/actions/issues/167

元記事を表示

[Android/Jetpack Compose]Failed to resolve: <パッケージ名>の原因と解決方法

# 問題
Android WebRTCライブラリ[Sora](https://sora-android-sdk.shiguredo.jp/quickstart#a8b57b)の依存関係の設定をしようとして、`build.gradle.kts`(モジュール側)を書いていたときハプニング。

**`import org.webrtc….`のサジェストが効かない????**

`import`できない問題は大抵依存関係の問題なので、もう一度Syncしてログを見ると以下のログが出力されている

“`
Failed to resolve: <パッケージ名>
“`

ちなみにSync時はエラーではなく警告が出るだけなので、コードを書こうとしてサジェストされないことで問題が発覚。

# 原因と解決方法
`settings.gradle.kts`へ以下の記述が必要
“`
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositori

元記事を表示

Appium環境構築(Android編)

## はじめに

本文書は、「Appiumで実機のAndroid端末に接続し、Androidアプリを起動できるようにする」までの環境構築手順をまとめたものである。

## 環境

本文書は、以下の環境で実際に構築にした手順に基づき記載した。

– macOS 13.6.7
– Zsh 5.9

また、本文書の手順では、以下のパッケージ管理および、ランタイム管理ツールを使用しています。

– [Homebrew](https://brew.sh/ja/) 4.3.0
– [mise](https://mise.jdx.dev/) 2024.5.18 macos-arm64 (2024-05-19)

## 構築手順

### Node.jsのインストール

公式ドキュメントに[システム要件](https://appium.io/docs/en/latest/quickstart/requirements/)としてNode.jsが記載されているため以下のコマンドでインストールする。

“`shell
mise install node@18.17.1
“`

### Appiumのイン

元記事を表示

Socialiteアプリのユーザーエクスペリエンス向上方法

この記事では、SocialiteというAndroidアプリのユーザーエクスペリエンスを向上させる3つの具体的な方法について解説しています。

## 1. エッジツーエッジデザインの追加
Android 15では、アプリを画面全体に拡張し、ステータスバーとナビゲーションバーを非表示にする機能が導入されました。これにより、ユーザーはより没入感のある、現代的なデザインを体験できます。

**手順**:
– **ステップ1**: `WindowInsetsController` を使用してステータスバーとナビゲーションバーを非表示にする設定を行います。
– **ステップ2**: XMLレイアウトファイルで、アプリの主要コンテンツがエッジツーエッジデザインをサポートするように `fitsSystemWindows` 属性を適切に設定します。
– **ステップ3**: 3ボタンナビゲーションの互換性問題に対処するために、必要に応じてパディングやマージンを調整します。

## 2. 予測バックアニメーション
予測バックアニメーションは、ユーザーが「戻る」アクションを行う際に、次に表示される画面のプレ

元記事を表示

Composeで下部のみにShadowをつける

# はじめに
今回はViewの下部にのみshadowを付けるための拡張関数を紹介していきます
### 本文
基本的にはCardをで囲えば簡単にできますが、そうでないViewに対してなどに使う機会があったので下記をそのまま使ってもらって良しなに調整していただければ使えるものになっています
“`kotlin
private fun Modifier.bottomShadow(
blurRadius: Float,
color: Color,
): Modifier {
return this.then(
drawBehind {
drawIntoCanvas {
val paint = Paint()
val frameworkPaint = paint.asFrameworkPaint()
frameworkPaint.maskFilter =
BlurMaskFilter(

元記事を表示

Jetpack Composeでcontextを取得する方法

# 実践
“`
val context = LocalContext.current
“`
これだけでOK

# 注意
自分はToastをJetpack Composeで使用するときにこの状況になったのですが、
“`
@Composable
fun MyScreen() {
Button(
onClick = {
Toast.makeText(LocalContext.current, “”, Toast.LENGTH_SHORT).show()
}) {}
}
“`

このようにcontextが必要な引数に直接 **LocalContext.current**を入力したところ、以下のようなエラーが出ました。
>@Composable invocations can only happen from the context of a @Composable function

このエラー内容は、簡単にいると@Composable アノテーションを付けた関数内でのみ呼び出すことができます。

といった内容なので、イン

元記事を表示

Android 14以降の色のコントラスト機能をサポートする

Android 14 以降では OS での設定として色のコントラストを 3 段階に設定することができ、Android 14 では 開発者向けオプションでのみ設定可能だったものが、Android 15 以降では正式な機能になります。
この機能は各アプリで対応する必要があるものとなっています。

ここではその対応をどのように実装するのかについて書いてます。

色のコントラストごとの見え方の違い
デフォルト
Android データクラスをJsonに変換する方法

データクラスをJsonに変換する方法

`serialization`を使用するので、導入する必要があります。
導入しているプロジェクトが殆どだと思うので割愛します。

“`.kt
//必要なインポート
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json

val user = User(member = false, userId = 0, userName = “user”)
val userJson = Json.encodeToString(user)

“`
`Json.encodeToString`の引数の値へJsonにしたいデータクラスを渡してあげるだけでできます。

`userJson`の表示結果

`{“member”:false,”userId”:0,”userName”:”user”}`

Android Q (29)以上でWiFi P2Pをする際にbindProcessToNetworkが失敗する場合の解決

# 背景
Android Q以降から、セキュリティ強化の関係でWiFi接続の切り替えが制限された。
インターネットに接続する目的では接続先WiFiをプログラムから制御することができなくなり、デバイスとのP2P (ネットワークへの接続が不可)に限られるようになった。
さらに、接続したネットワークにアクセスできるのも接続したアプリ内に限られる。

この操作はWifiNetworkSpecifierを介して実行できるが、Switchの「スマートフォンに送る」から画像を取得しようとして、数時間ハマったので陥りやすい点をまとめた。

# WiFi P2Pで忘れがちな点まとめ
* AndroidManifest.xmlに権限を設定
“`xml


.

【Android】ViewAnimatorの高さを子要素に合わせて可変にする方法

# はじめに
Android Viewの機能であるViewAnimatorを久しぶりに触ったのですが、Viewを切り替える際に高さが最も高さの大きい子要素に依存する挙動となっており、可変にする為の方法を少し調べる形となったので、今後の備忘録的に調整方法を残しておこうと思います。

# ViewAnimatorの高さを可変にする方法
可変にする方法は非常にシンプルで、以下をXMLに追加するだけで実現可能です。

“`main.xml

“`

measureAllChildrenは、ViewAnimatorのプロパティで、すべての子Viewを測定するかどうかを指定する設定になります。
デフォルトではtrueが設定されているので、非表示の子Viewも含め、すべての子V

【Android】WorkManagerを使ってPUSH通知を飛ばす

## はじめに
Androidアプリでアプリからなんらかの操作を契機にPUSH通知を飛ばす(いわゆるローカルプッシュ)について調べる機会があったため、忘れないように記事に残そうと思いこちらを書きました。
## WorkManagerとは何か
非同期的なタスクをスケジュールとして設定・実行してくれるAPIになります。
スケジュールとしても設定方法がいくつかあり、一回限りの実行や繰り返しの実行も設定可能です。
アプリの状態に関わらずタスクをスケジュールし実行できるため、アプリ⇔サーバーが定期的にやり取りするような処理を実行したいときに使われるみたいです。
詳しくは[公式サイト](https://developer.android.com/topic/libraries/architecture/workmanager?hl=ja)を参照ください。

今回はそのWorkManagerの一回限りのスケジュール・実行を使ってPUSH通知を行っていきます。
## 実装
### 依存関係の追加
アプリレベルのgradleに以下の依存関係を追加します。
“`build.gradle.kts
depe

android(kotlin)で時刻を毎秒取得する方法

# はじめ
こちらのアプリをつく際に毎秒時刻を取得するのに手間取ったのでメモがてら書き綴っていこうかなと思います。

https://qiita.com/goretzka_/items/52295986d2163f30b11c

# 結論

“`kotlin:ViewModel

private val _data = MutableStateFlow(System.currentTimeMillis())
val data:StateFlow = _data.asStateFlow()
val formatter = SimpleDateFormat(“MM/dd:HH:mm”)
val formattedTimer:StateFlow = data.map {data ->
formatter.format(data)
}
.stateIn(viewModelScope, SharingStarted.WhileSubscribed(),””)

init {
vi

android studio(kotlin)でメモ帳アプリをつくって見ました。

## はじめ
2024年4月からkotlinを触り始めて、MVVM?なにそれ?的な感じからnavigationやら、viewModelやらをやって今に至る感じです。
公式のトレーニングをつかって勉強しました。

https://developer.android.com/courses/kotlin-android-fundamentals/overview?hl=ja

因みに、個人の方が一つ一つのトレーニングをわかりやすく解説してくれているnoteがあるので、是非参考までに!

https://note.com/haine_rion23

## メモ帳アプリ
![スクリーンショット 2024-05-29 12.36.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3756850/eebc3bc6-804d-8b24-fd64-11069e45efd1.png)

### github

https://github.com/REOysd/ToDoApp2

### 概要
主にやりたいことや、書

Oracle Cloud Infrastructureという名前のアプリ

先日、スマホにOCI2段階認証用のアプリをAndroid端末に入れようとGooglePlayで「Oracle」と検索したら色々と出てきました。

Fusionとかプリマベーラとかのアプリもあるんですね・・・
で、気になったのは「Oracle Cloud Infrastructure」というアプリ。
![1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2367692/9afc17e0-3c3d-d428-1e43-02f3c9289a27.jpeg)

OCIそのまんまの名前ですが、聞いた事が無かったのでとりあえずインストールしてみました。
![2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2367692/46796f32-e39c-240c-bfd8-0653b257c2e1.jpeg)

起動するとOCIのロゴが出てきました!
![3.jpg](https://qiita-image-store.s3.ap-

MacroDroidでNotionに最速でメモをする

# AndoroidでもNotionにサクッとメモがしたい
どうも、Androidユーザーです。先日こんな記事を見つけました。

https://tech-you.jp/notion-onetouch-setting/

テンプレも配布されてて、めっちゃいいじゃんと思ったのですが、ショートカット機能はMac, iPhone限定。。Androidで同じことをやりたくて、調べてみたもののMacroDroidってアプリが使えそうところまでしか見つけられなかったのでこのブログ記事を参考にしつつAndoroid版のNotionの連携機能を真似して作ってみました。

# こうしたらできました

## 下準備([こちら](https://tech-you.jp/notion-onetouch-setting/)を参考に)
– Notionインテグレーションの設定(`token`の値)
– Notionデータベースの作成
– インテグレーションの接続
– データベースIDの確認(`database_id`の値)
– 入力したい列のタイトルプロパティ名の確認(`property_title`の値)

Appium関連一式をUpdateする

# はじめに
Appiumを使ってAndroid上のChromeアプリを操作するPythonコードを書いていたのですが、開発途中で急に動作しなくなりました。
「Chrome Driverの最新版が見つからない」的なエラーが出たいので、Appium、uiautomator2、Appium-Python-Clientをupdateします。

# Update手順
## Appium
“`bash
$ npm i -g appium
“`
## uiautomator2
“`bash
$ appium driver update uiautomator2
“`
## Appium-Python-Client
“`bash
$ pip install -U Appium-Python-Client
“`

以上で、Chromeアプリを操作できるようになりました。

# 参考
https://www.seleniumqref.com/introduction/tips/appiumIns_update.html