- 1. Jetpack ComposeでonResume/onStartに相当する処理を実行する
- 2. AndroidスマホにKDDI系SIMを入れたときに2重に表示されるキャリア表示を改善する
- 3. 【Flutter】テキストの装飾
- 4. Android Studio コードメモ
- 5. 日本語プログラミング言語MindをAndroidに移植した時の記録(ステップ1/9)
- 6. Jetpack ComposeのCanvasでメーターのような可変する円を作る
- 7. マルチモジュールでの依存関係の記述をいい感じにする
- 8. aboutLibrariesに手動でライセンスを追加する
- 9. Android ビルドタイプによってアプリケーションIDを変える方法
- 10. Android通知のグルーピングを制御する
- 11. Android Hiltの@Inject constructor とは何か
- 12. 【違いを比較】「ViewBinding」と「DataBinding」
- 13. 【Android】xmlのコードフォーマット【随時更新】
- 14. 【Android】Throwableから呼び出し元の関数名を取得する方法
- 15. 自作ローカルAPIを用いて、ReactNativeでTODOアプリを作ってみた
- 16. Androidのアンテナピクトを5G NRに接続しているときだけ「5G」表示にする
- 17. DroidKaigi の開発体制に関する発表資料まとめ
- 18. AIで画像コンテンツを作成しつつFlutterでアプリ開発
- 19. ReactNativeでOSや端末ごとに条件分岐してみた【Platformを用いて】
- 20. android studioフォルダ構成について
Jetpack ComposeでonResume/onStartに相当する処理を実行する
lifecycleのバージョン2.7.0以降で `LifecycleEventEffect`を使うことができます。
“`kotlin
LifecycleEventEffect(Lifecycle.Event.ON_RESUME) {
// do something here
}
“`“`kotlin
LifecycleEventEffect(Lifecycle.Event.ON_START) {
// do something here
}
“`onPause/onStopに相当する処理が必要な場合には、`LifecycleResumeEffect`もしくは`LifecycleStartEffect`を使いましょう。
“`kotlin
LifecycleResumeEffect {
// ON_RESUME code is executed hereonPauseOrDispose {
// do any needed clean up here
}
}
“`“`kotlin
LifecycleStartEffect {
AndroidスマホにKDDI系SIMを入れたときに2重に表示されるキャリア表示を改善する
## はじめに
スマートフォンに通信キャリアのSIMを挿入すると、挿入したSIMのキャリア名が表示されるようになっていますが、一部のスマートフォンで一部の通信キャリアのSIMを挿入すると、キャリア名表示が二重に表示されてしまうことがあります。
特にGoogle PixelにKDDI系のSIMを入れると、auの場合は「KDDI – au」、UQ mobileの場合は「KDDI – UQ mobile」、povoの場合は「KDDI – povo」と表示され、キャリア表示が冗長的になってしまいます。![Screenshot_20240220-110340.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3715077/b5dd37fb-ac96-435e-cba6-392f84623b09.png)
本記事では、これをそれぞれ「au」「UQ mobile」「povo」の表示だけにする方法を解説します。
### ⚠︎注意
この記事ではAndroidのカスタムROMに関する事柄を記載しています。ご自身のスマ
【Flutter】テキストの装飾
Flutterでのテキストの装飾についてまとめました。
テキストサイズの記載がないものは一律「fontSize: 30」にしております。
## テキストサイズ
“`dart:書き方
Text(
‘fontSize 5’, // 表示したいテキスト
style: TextStyle(fontSize: 5), // テキストサイズ
),
“`![Screenshot_20240206_221806.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3641068/e0bec6fd-b8dd-7983-d2a1-ac02566d048f.png)
## テキストカラー
“`dart:書き方
Text(
‘color red’, // 表示したいテキスト
style: TextStyle(
color: Colors.red), // テキストカラー
),
“`![Screenshot_20240206_224645.png](h
Android Studio コードメモ
## AndroidStudio 完全個人メモ
### 前提条件
* 独学のため間違えた使い方が存在する可能性
* コードメモとして記載する
* Android Developerの例コードを掲載## Room DBの使い方
#### KSPプラグインのリリース情報
ここから確認#### build.gradle.ktsにKSP プラグインを宣言
![スクリーンショット 2024-02-19 223035.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3676163/a6870da8-1154-9292-e2e6-d09d8c120b63.png)#### モジュール レベルの build.gradle.kts ファイルで KSP を有効
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/
日本語プログラミング言語MindをAndroidに移植した時の記録(ステップ1/9)
# はじめに
この記事はだいぶ前(2012年)にココログの「[キリーの日本語プログラミング](http://uemon3511.cocolog-nifty.com/nihongoprogram/)」に掲載したコラムですが、再編集してこちらにも投稿します。今となっては古い話ではありますが、OSによってプログラム言語(AndroidではJava)が決め打ちされている環境で規定と異なるもの(Mind)を走らせたことの記録としてお読みください。
# AndroidでMindを動かす最初のステップ
AndroidでMindを動かしたいと思ってからもう1年半ほど経ってしまった(編集注:この時点で2012年)がようやく最初のステップまで来た。
本当に文字通り「動いた」だけで まだほんの序の口に過ぎない(^^;![s41hwscreenshotmindok20120417_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3118036/8e3b5ec2-e99d-528d-b115-66bd12e47
Jetpack ComposeのCanvasでメーターのような可変する円を作る
# drawCircle()
“`
Canvas(
modifier = Modifier.size(250.dp),
onDraw = {
drawCircle(Color.Green)
}
)
“`
![スクリーンショット 2024-02-18 21.38.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2394054/2138b393-544f-2223-e67c-3c6cb8184c14.png)可変でない場合の円の場合は**drawCircle()** または、**drawOval()** 使用すればいいのですが、メーターのように中を可変させたい場合は、**drawArc()** を使用します。
次は上のdrawCircle()を背景としてdrawArc()を使ってみましょう.
# drawArc()
“`
Column(
Modifier.size(225.dp
マルチモジュールでの依存関係の記述をいい感じにする
# マルチモジュール
マルチモジュールは、どんどん肥大化するプロジェクトにおいて効率性を維持するためにおすすめの方法です。アプリケーションを独立したモジュールに分割することで
– ビルドの高速化
– よいアーキテクチャを強制できるというメリットがあります。
一方で、モジュールの数が増えると、各モジュールでそれぞれ依存関係を管理するのは大変です。バージョンカタログを導入することによって、マルチモジュールでの依存関係を簡単に管理できるようになります。
## バージョンカタログ
バージョンカタログは依存ライブラリとプラグインのバージョンを一元管理するためのGradleの機能です。
### バージョンカタログファイルを作成
ルートの`gradle`フォルダに`libs.versions.toml`ファイルを作成します。Gradleはデフォルトでこのファイル名を読み込むので、ファイルを作成するだけで大丈夫です。
“`libs.version.toml
[versions][libraries]
[plugins]
“`### ライブラリの場合
バージョンカタロ
aboutLibrariesに手動でライセンスを追加する
# はじめに
今回は前回書いたaboutLibrariesというライセンス画面用のライブラリを使って手動でライセンスを追加する方法を紹介していきます。
一応以前に同じ記事を書いたのですが、もっと詳しく書いておこうと思ったので今回は詳細を書いていきます
### 本文
まず、プロジェクト直下に適当な名前でフォルダを作ります。
次に作ったフォルダの中で`libraries`と`licenses`というフォルダを作ります
`licenses`にはそのライブラリのライセンスが描かれたJsonを配置します。
“`json:hoge_license
{
// ライセンスの中身
“content”: “content”,
// どのライブラリのライセンスなのかを判断するためのハッシュ
“hash”: “flutter_secure_storage”,
// ライセンスのURL
“url”: “https://github.com/mogol/flutter_secure_storage/blob/develop/LICENSE”,
// ライセンス画面で表示されるライセン
Android ビルドタイプによってアプリケーションIDを変える方法
ビルドタイプによってアプリケーションIDを変える方法です。
`buildTypes`の設定したいビルドタイプに対して`applicationIdSuffix`の設定をします。
“`build.gradle
debug {
applicationIdSuffix = “.debug”
}
“``applicationIdSuffix`に設定した値が後ろに追加されます。
今回の場合は、.debugが後ろに設定されます。# 公式リファレンス
https://developer.android.com/build/build-variants?hl=ja#change-app-id
Android通知のグルーピングを制御する
Androidの通知は、3つまでは独立して表示されますが、4つ以上たまると、アプリごとにまとめられてしまいます。(API Levelで挙動が変わる場合があります)
|通知3つまで|通知4つ以上|通知4つ以上|
|:–:|:–:|:–:|
|![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155171/cc2ec18d-30d4-d7fa-6547-47ba7bf7ba6d.png)|![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155171/e715227d-5f2e-fc51-3251-f2205aa365c8.png)|![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155171/3e45fc02-98b1-c655-5d33-98db3e3b4d42.png)|通知エリアが通知で埋まってしまうと、必要な通知も探せなくなってしまうの
Android Hiltの@Inject constructor とは何か
# Android Hiltの勉強をしているので、備忘録として情報を記載しています。
## Android Hiltの@Inject constructorが分からなかったのでChatGPTに質問してみました。
※余談
@をエスケープしたい場合、spanタグを利用する。https://qiita.com/xsgk/items/b41262553cbc10544c2e
### 以下がChatGPTとの会話のやり取りになります。
“`
User
Android hiltの@Inject constructor の意味を教えて欲しい。
“`“`
ChatGPT
@Inject constructorはDagger Hiltにおいて、依存性の注入を行うためのアノテーションです。
これは、特定のクラスのコンストラクタに対してDagger Hiltが依存性を提供することを示します。具体的には、クラスのコンストラクタに@Injectを付け、そのコンストラクタが依存するクラスやオブジェクトを
引数として受け取るようにします
【違いを比較】「ViewBinding」と「DataBinding」
「ViewBinding」と「DataBinding」を学習している過程でこの2つの違いは一体何なんだろうと思ったのでMENTAで契約しているAndroidエンジニアの先輩に質問して両者の違いを言語化して整理して頂きました。
### 一言で言うと「DataBinding」は「ViewBinding」の【上位互換】的な技術です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359201/1efed175-a94c-9e63-81b7-52a9ea761993.png)
しかし、エネルギー消費的な観点から「ViewBinding」で済む場合はできる限り「ViewBinding」を使うべきです。
「ViewBinding」はViewとJava/Kotlinのコードを、「DataBinding」はその上データをViewに連携させます。後者はデータの変更を監視して自動でViewに反映させる(オブザーバブルパターン)時に使うことが多いです。
「DataBinding」で検討してデータの連
【Android】xmlのコードフォーマット【随時更新】
・名前空間の宣言(xmlns)は最上位に置きます。
・タグの属性(app:とかandroid:みたいなやつ)は揃えます。一般には上から、android -> app -> tools とします。
・ファイルに未使用のimportが残っている場合は削除すべきです。
・「text_size」は通常「dp」ではなく「sp」で指定します。
【Android】Throwableから呼び出し元の関数名を取得する方法
# はじめに
日常的にフロントエンドの開発を進めていると、必ず経験することになるであろう対応のひとつがエラーハンドリングかと思います。
このエラーハンドリングを如何にシンプル且つ汎用的に書くかというのはある種の永遠の課題でもあるかと思いますが、今回はエラーハンドリングなどで活用できる、Throwableから呼び出し元の関数名を参照する方法を備忘録的にまとめておこうと思います。# 呼び出し元の関数名を参照方法
実装方法は非常にシンプルで、以下になります。“`main.kt
val methodName = Throwable().stackTrace[0].methodName
“`以上になります。
Logを出す際などに使うと便利だと思います。# おまけ
せっかくなので、Throwable以外からも関数名を取得する方法をまとめておこうと思います。“`main.kt
val methodName = Thread.currentThread().stackTrace[1].methodName
“`
stackTraceの二番目には現在の関数が割
自作ローカルAPIを用いて、ReactNativeでTODOアプリを作ってみた
## はじめに
前回、TODOアプリのAPIを作成して、ローカルの挙動確認まで実施しました。
その続きとして、ReactNativeでTODOアプリを作成して、APIを叩く実装をします。以下は、前回の記事のリンクです。
https://qiita.com/muranakar/items/8b7fbaf9c27e53241ae1
## 内容
まず最初に、前回のAPIの修正が必要になります。
### 追加実装した内容
– `id`をすべてUUIDに変更
– ローカルサーバーAPIを叩く際のポート番号と接続の権限周りの変更### `id`をすべてUUIDに変更
変更する理由は、`number`で管理していると、数字の重複の可能性があるためです。uuidライブラリーをインストール
“`
npm install uuid
“`以下のコードに修正。
App.jsの変更後のコード
“`js
const express = require(‘express’);
const { v4: uuidv4 } =
Androidのアンテナピクトを5G NRに接続しているときだけ「5G」表示にする
## はじめに
5Gのサービスが始まって早4年が経とうとしています。5Gのエリアも広がり、スマートフォンのアンテナ表示にも「5G」と表示される頻度が高くなってきたように感じています。
一方、5Gはまだまだ過渡期であり、都心部を中心に通信が逼迫し、いわゆる「**パケ詰まり**」が起きている通信キャリアもあります。また、「5Gにするとバッテリー消費が激しい」とか、LTE向けに割り当てられた周波数を5Gに転用し、LTEと大して通信速度が変わらない「なんちゃって5G」という問題もあります。
そして、最大の問題点としては**5Gにつながっていないのに「5G」と表示される**という点ではないでしょうか。「5Gと表示されているのに通信し始めたら4Gになってしまった」「5Gと4Gの表示がコロコロ変わって安定しない」といった声をSNS上で見かけます。なぜこのような表示になっているのか、5Gにつながっているときだけ5Gと表示するにはどうすればいいのか、この記事で解説したいと思います。### ⚠︎注意
この記事ではAndroidのカスタムROMに関する事柄を記載しています。ご自身のスマホにカスタムROM
DroidKaigi の開発体制に関する発表資料まとめ
#
過去の DroidKaigi の発表のうち、開発体制に関する発表のみをまとめました。
今の開発体制に課題があると感じている人のヒントになれば幸いです。– DMM
– 2023 年
– [DroidKaigi 2023 突撃!隣のコードレビュー](https://speakerdeck.com/satotaichi/droidkaigi2023-tu-ji-lin-nokodorebiyu)
– 2021 年
– [DMMでのAndroidアプリ開発について](https://ninjas.droidkaigi.jp/post/dmm/)
– メルカリ
– 2022 年
– [Android/iOSアプリを協調開発するチーム 〜スクラム開発の実践とその先へ〜](https://speakerdeck.com/fumiyakume/droidkaigi-android-iosahuriwoxie-diao-kai-fa-surutimu-sukuramukai-fa-noshi-jian-tosonoxian-he-1)
– 2021 年
AIで画像コンテンツを作成しつつFlutterでアプリ開発
## はじめに
どうも、@nittannittanです。
趣味でAndroid/iOS/Webアプリを作成しているアニメオタクです。
今回は、AIで画像コンテンツを作成しその画像を利用したアプリを開発したので、利用技術などを紹介したいと思います。
AIでの画像生成にはStable Diffusion Web UIを、アプリ開発にはFlutterを利用しました。
## AI画像生成へようこそ
まず手始めに、ローカル環境へStable Diffusion Web UIをインストールして操作方法や基礎的なことを学びました。
下記のサイトが参考になります。### モデル探しの奇妙な冒険
なんとなく使い方が理解できたら次は生成したい画像にあったモデルを探す旅の始まりです。
下記サイトで探しわまったり、モデルを比較しているサイトもGoogle検索で見つかるので手当たり次第に試してみましょう。良し悪しがあって面白いです。https://civitai.c
ReactNativeでOSや端末ごとに条件分岐してみた【Platformを用いて】
OSや端末ごとに条件分岐して値を変更したり、表示するテキストを変更する必要があったので、記載していきます。
https://reactnative.dev/docs/platform
を参考に進めていきます。
# 概要
### Platform.OS
![スクリーンショット 2024-02-10 6.58.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/799713/3f041baa-d4b0-8133-3b74-a812205eae34.png)
– OSをenumで管理しています### Platform.isPad
![スクリーンショット 2024-02-10 6.58.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/799713/0c95ba39-2aa2-2fcc-2e86-08bf8582d0e1.png)
– iPadかどうかを、boolean型で返します
### Platform.sele
android studioフォルダ構成について
## はじめに
androidの学習を始めたので、プロジェクト内にある各フォルダの役割を確認しようと思います。
自分も初学者になりますので、初学者向けの記事になります。
※android studioでnew projectから「Empty Activity」を選択しております。■環境情報
android studio:Runtime version: 11.0.13+0-b1751.21-8125866 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.■プロジェクトでの使用言語
Java## manifests
“`AndroidManifest.xml