Android関連のことを調べてみた2023年08月17日

Android関連のことを調べてみた2023年08月17日

【Flutter】1年間頼ってきたサイト3選

Flutterを学び始めたエンジニアにとって、1番ネックなのが参考サイトが少ないことですよね。。。
かといって、公式を見ても解決できないし。
そこで、自分がFlutterを学び始めてから1年間の中で、めちゃくちゃお世話になったサイトを3つご紹介します。

# 1\. ちょげぶろぐ
Flutter初心者は絶対に見るべきサイトだと思います。

https://www.choge-blog.com/

【対象目安】
初心者・中級者

【概要】
Widgetの基本的な使い方だったり、汎用性の高いUIの実装方法をこれでもかというくらいわかりやすく教えてくれます。
あまり多くのWidgetを触ったことがない初心者の方が取説として使うもよし、中級者の方が簡単なWidgetを組み合わせて作るUIの参考にしてもよし。
1年経った今でも、あまり触れることのないWidgetの用途を知りたいときや、このWidgetでこんなことできないかな??と思いついた時などにお世話になっています。

# 2\. stack overflow

知識豊富なエンジニアたちのナレッジ交換を覗き見してきました。

https://

元記事を表示

【Flutter】Listを操るメソッド3選

未経験にとって、List自体は理解していても、そのListを表示させるために操ろうとすると結構詰まりません??
そこで、1年間Flutterの開発をしてきて、「このメソッド知ってたらなんとなく行けるだろ」ってメソッドを3つ紹介します!

# 1\.`map`
Iterableを返却してくれます。 ← Iterableってなんやねん。ってなりますよね最初は。

簡単にいうと、forEach文と同じ動きをしてくれていると思ってください。
mapの処理を通ることで、Listのひとつ分の要素を返却する処理を繰り返してくれます。

`list.map((e) => e)`にあたるところで、listひとつ分の要素が「e」に入り、
それをTextWidgetで利用することで表示しています。

“`dart
Widget build(BuildContext context) {
final List list = [‘apple’, ‘orange’, ‘greape’];

return Scaffold(
appBar: AppBar(

元記事を表示

【Android】定期購読更新日が月末だった場合の挙動の違い【iOS】

# はじめに

8月は31日まであるので、夏休みが長くて学生は嬉しいですね。
ところで、月ごとの定期購読が29日、30日、31日に更新される場合、次回の更新日は何日になるか皆さんご存知でしょうか。

恥ずかしながら、自分は先日改めて聞かれるまで意識したことがありませんでした。
きちんと調べてみたところ、GooglePlayとAppStoreで、月末に定期購読更新をする時の挙動が異なるようです。

良い機会なので、二つの挙動の違いをまとめてみました。

## GooglePlayの場合

Googleのドキュメントでは、下記のように記載されています。

https://developer.android.com/google/play/billing/lifecycle/subscriptions?hl=ja

> 注: 定期購入を月の 29 日、30 日、31 日のいずれかに更新するよう設定された場合、うるう年以外の 2 月になると、更新日が 2 月 28 日に移動され、それ以降の定期購入期間中は毎月 28 日に更新されるようになります。同じように 3 月 31 日に定期購入を開始した

元記事を表示

SharedPreferencesをJetpack DataStoreに置き換えて、HiltでDIする

https://developer.android.com/topic/libraries/architecture/datastore?hl=ja#kotlin

# この記事について
HiltでProvideしていた「SharedPreferences」をJetpackの「Preferences DataStore」に置き換えようという内容です。
「Proto DataStore」には触れていません。

## モジュール構成

今までの構成

Repository(自作)
 -> SharedPref(自作)
 -> SharedPreferences
 -> デバイスのファイル「/data/data/{package-name}/shared_prefs/forecast_pref.xml」

これを

Repository(自作)
 -> SharedPref(自作)
 -> DataStore<Preferences>
 -> デバイスのファイル「/data/data/{pack

【Android】Android 14 新機能まとめ

## はじめに

一昨日 Android 14 Beta 5 がリリースされました。公式に`final compatibility testing`と記載され、最終リリースまであと僅かとなりました。そこで、今回は Android 14 で提供される新機能の概要をまとめてみました。

## 機能と API の概要

Android 14 の「新機能と APIの概要」は、[公式ページ](https://developer.android.com/about/versions/14/features?hl=ja)に記載されており、日本語の翻訳も徐々に進んでおりますが、ニュアンスが微妙なところもあるので、可能であれば[英語版](https://developer.android.com/about/versions/14/features?hl=en)で読むとより理解が進むかと思います。

Android 14 の新機能を大別すると、以下の 3 つに分類されるので、それぞれを順に紹介したいと思います。

* 国際化(Internationalization)
* ユーザー補正(Accessib

UnityでROS2用スマホコントローラを作る

※今回の記事はほとんど下の記事の再現です。偉大な先人に感謝。
https://qiita.com/Kotakku/items/cdc3eca89dd8aec4ee86

 今回はAndroidとROS2を通信させてスマホコントローラーを作成する。なお,UnityはUbuntu22.04に対応していないため,大人しくWindowsにインストールすること。
 それぞれのバージョンは以下の通り。
– Windows11
– Unity 2021.3.25f1
– Ubuntu22.04
– ROS2 Humble

 それぞれの導入については簡単なので省略する。

# 大まかな解説
 最近はTelloなどの市販品に限らず,ロボコンなどでもスマホでロボットを操作する事例をよく見かける。遅延はどうなってるの?とか,コントローラーで良くね?とか,色々消極的な意見はあるだろうが,やはりスマホからロボットを操作しているとなんとなくカッコよく見えるのは確かだ。
 そんなわけでスマホをコントローラーとして用いようと思った時に,最も簡単と思われるのがUnityとROS2を用いるやり方だ。この方法で

お前が作ったアプリのパフォーマンス改善について語れ(part1)

# 背景
今年度に出るプロダクトに入るAndroidのアプリケーション(UIというより設定を管理するようなシステムサービス)を半年ぐらい設計したりコード書いたりして作ってました。
’22/08ぐらいから本格的に書き始め、MVPのワンパスを通しつつ、提供する機能やAPIを作るなかで、
機能が多いためパフォーマンスが気になり始めました。
特に他アプリとのやり取りがJSONであることもあって、初期化処理は数KBあるJSONを複数処理しないとならず、
処理自体は削減できないので実行時間を短くするしかなく、並列処理するなりしないと時間かかるよねという話になり、KotlinのCoroutineを導入しました。
今回はそんなCoroutineの導入で色々苦労した話をまとめようと思います
(Part1で導入部分について書いてみました)

# 前提
## 作ったもの
今回作ったのはAndroidのサービスアプリケーションです。
複数のAPIをAIDLの形式で提供しており、クライアントもそれなりの数がいます。
加えてPFのAPIにもかなり依存しており、PFビルドしないといけないようなものになっています。

【Android】驚くほどシンプルなComposeのPullToRefreshを実装してみた

# はじめに

皆さん、ごきげんよう!れぶです!

今回の記事では、Composeのリスト表示で`PullToRefresh`機能を実装してみたので、その手順をサクッと解説していきます。

**PullToRefreshで表示するデータを更新したい方には特に参考になる**のではないかと思います。

約5分以内で読めます。それでは、参りましょう!!

# 開発環境

* MacBook Air
* Android Studio Hedgehog | 2023.1.1 Canary 9
* Kotlin
* compileSdkVersion 34
* minSdkVersion 24

# 動作イメージ

動画のように、PullToRefreshで毎回ランダムな数字をリスト表示するという超シンプルなものです。ただし、初回読み込み時はPullToRefreshのインジケーターは表示されないようにしています。

![ezgif.com-video-to-gif.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2

[Flutter]FlutterでAndroidのcompileSdkVersion,targetSdkVersion,minSdkVersionを変更する方法

## はじめに

以前までは、バージョン更新はapp直下のbuild.gradleの設定で行っていました。
変数を使う場合も同ファイルで行っていましたが、現在はflutter.minSdkVersionのようにflutterの設定ファイルから取得しているようです。ガン無視してダイレクトに記載しても動作しますが、作法がよろしくないので、flutterの設定をいじって直すにはどうしたらいいのかを調べました。

“`kotlin
defaultConfig {
applicationId “com.example.hogehoge”
minSdkVersion flutter.minSdkVersion
targetSdkVersion flutter.targetSdkVersion
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
}
“`

## 解決
flutterのSDKをインストール(

【Android】テキストサイズを自動的に調整する機能を使った時の落とし穴【Kotlin】

# はじめに
テキストサイズを端末の画面サイズに応じて自動調整してくれる機能なんてあるんだ!と思い、軽い気持ちで設定した機能で
“`
android:autoSizeTextType=”uniform”
“`
というものがあり TextViewに設定しましたが、これを使った時にやりたいことができなかったという実体験を記事にします。

# android:autoSizeTextType=”uniform” ってなに?
先述した通り、端末サイズに合わせてテキストサイズを自動で調整してくれる機能で、大きい画面では文字サイズを大きく 小さい画面では文字サイズを小さくといった感じで、横軸と縦軸で均一に拡大縮小してくれるものです。
“none”を設定することで 機能をオフにすることもできます。

# 問題点
結論から言うと、**動的にテキストサイズを変えようとした時に テキストサイズを変えることができなかった。**
と言うことです。
自動調整機能でのテキストサイズ変更が優先され、動的にテキストサイズを変えることができなくなっていました。
早めに気がついてよかったのですが、気がつけなかった

【Android】ローカルWebViewを使ってみた

## はじめに
今回はAndroidのローカルにあるHTMLを表示させてみようと思います。
ローカルWebViewと呼ばれています。
HTMLを表示するだけではなく、JavaScript⇒Androidや、Android⇒JavaScriptのメソッドを呼び出してみようと思います。
実装自体はあまり変わりません。前回の「WebViewを使ってみた」の記事を参考にしてください。
変わった部分としてはWebViewのURLがローカルファイルを参照するようにしたことと、HTMLをAndroid側に持ってきたぐらいです。

ディレクトリの構成はこんな感じです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2689436/7ac42194-f14e-2dd1-944f-aa06ab925610.png)

シンプルにボタンがあるだけです。
クリックするとjsのメソッドを呼び出します。
“`html:index.html


Jetpack Compose v1.5.0に気になったAPIのまとめ

[Jetpack Compose `v1.5.0` stable になりました](https://twitter.com/JimSproch/status/1638604000881967104)?。

今回もたくさんのAPIの追加や更新がありますし、その中で個人的に気になった API を紹介しようと思います。Compose チームもまとめ記事を出しましたので、ぜひ読んでみてください。

https://android-developers.googleblog.com/2023/08/whats-new-in-jetpack-compose-august-23-release.html

今回のリリースでは [Android Dev Summit’22](https://www.youtube.com/playlist?list=PLWz5rJ2EKKc_L3n1j4ajHjJ6QccFUvW1u) で発表された Modifier.Node の改善を含めて、主に内部的なパフォーマンス向上に向けて更新が多いんですね。