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

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

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)のようなオブジ

元記事を表示

Jetpack Composeでパフォーマンスが良くない書き方を避ける

基本的には「**早すぎた最適化は避けましょう**」が前提にはあるのですが、パフォーマンス的に気をつけた方がいい書き方を紹介します。

## 0. Jetpack Compose の最新バージョンを使用する
書き方の前に、Jetpack Compose は新しいバージョンほどパフォーマンス改善が入っているので、極力新しいバージョンを使いましょう。
– Modifier の Node 化
– Compose 1.7.0 で入る strong skip mode

## 1. derivedStateOf は必要以上に使わない
変更のバッファリングをするためコストがかかる処理なので、頻繁に値が変わるけど結果が変わらなくて recompose を避けたい時だけに使用しましょう。
単純な値変更による recompose で問題ない時は `derivedStateOf` を使う必要はないです。

“`kotlin
tabs.forEachIndexed { index, tab ->
// ❌
val isSelected = remember {
deri

元記事を表示

FlutterFlow GitHub経由でデプロイする際のエラー

## 初めに
### FlutterFlowについて

FlutterFlowは、爆速モバイルアプリ開発を実現する、画期的なノーコードツールです。簡単なアプリなら本当にその日のうちにテストフライトまでが完了していると優れたツールです。
他のノーコードツールと違って書ける、Flutterアプリとして吐き出せる、という点が強みです。
Flutterでできることならなんだってできちゃいます。

https://flutterflow.io/

### GitHubを使った開発が可能

FlutterFlowではコードをGitHubのレポジトリにボタンひとつでプッシュする機能が備わっています。また、それだけではなく、GitHub上のブランチを指定すると、そのブランチのコードを使ってデプロイまでしてくれます。

例えば、僕はFlutterFlowではどうしても修正できない箇所を修正・追加するためにこの機能を使っています。(具体的な手順は下の通り)

1. FlutterFlowからGitHubのレポジトリにプッシュ(flutterflowブランチが作成される)
1. プッシュされたコードをmai

元記事を表示

Skip使ってみた

## Skipとは?
– Swift/SwiftUIを用いてAndroid開発も行えるプロジェクト
– 内部で,Swift/SwiftUIコードをKotlin/Composeコードへのトランスパイルが行われている
– 正確にはクロスプラットフォームではなくSwift/SwiftUIでAndroid開発ができる
– Xcodeへ導入することで使えるようになる(AndroidのためにAndroid Studioは必要)

![スクリーンショット 2024-03-08 15.10.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3688344/bf469a88-afb1-8b4e-59f7-6889eeb431f3.png)

(引用:https://skip.tools/docs/)

## ここがすごい
– Swift Package Manager (SwiftPM) から Android Gradleへのプロジェクトコンバーターも同梱.パッケージ依存関係を自動的に保ってくれ

元記事を表示

OTHERカテゴリの最新記事