- 1. Jetpack ComposeでViewModelを使わずに、Composable関数(Factory Function)を使って状態とロジックを切り出す!
- 2. AndroidのAPN Type一覧
- 3. Jetpack Composeで画面幅を取得して4分割する方法
- 4. Unity で Google Mible Ads (AdMob) を使うコード
- 5. 【Flutter】percent_indicator の使い方
- 6. UIの状態管理方法とViewModelイベントの実装例
- 7. JetpackCompose BottomNavigation の基本的な構成
- 8. 【Flutter】アプリアイコンを変更する
- 9. 各ProductFlavorsによって使用するAPIエンドポイントを変えたい
- 10. インストール済みのアプリを一覧表示させる
- 11. Kotlin Nativeってandroid向けにも書けるんですよ
- 12. Flutter 3.0.x 環境をmacOS上に構築する(XcodeとFlutterの複数バージョン対応版)
- 13. Android13で追加されたMaterial YouのThemed app iconsに対応する
- 14. JavaからKotlinの拡張関数を呼び出す
- 15. AndroidのLogとTimberについて
- 16. 【Android】時間を表示するView『TextClock』
- 17. Android Studioのメモリーサイズを変更する方法
- 18. Unity2021の2D Mobile[プログラミング]
- 19. Unity2021の2D Mobile[初期設定]
- 20. 【Android】PCとBluetooth接続し、PCに文字列を送信する
Jetpack ComposeでViewModelを使わずに、Composable関数(Factory Function)を使って状態とロジックを切り出す!
## はじめに
この記事では、**Jetpack Composeで、ViewModelを使わずにComposable関数(Factory Function)を使って、状態とロジックをViewの外に切り出す方法** について、説明しています。Composable関数を使えば「状態やロジック」を簡単にコンポーネントの外に切り出すことができます。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f39333730332f65613365366164372d306130302d323436342d323935392d3737386566313365363232372e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93703/3628ecc0-9b60-954d-67ec-da1c829b2b41.png
AndroidのAPN Type一覧
# 前提
Androidのモバイルネットワークの設定においてAPNを登録することがあります。その中でもAPN Typeに関してまとまった記事がなかったため、メモがてらに作成します。## Android コード
https://android.googlesource.com/platform/frameworks/base/+/a79bad63a3a813d0c38babd8d74c4076a43d47d/telephony/java/android/telephony/data/ApnSetting.java# Type 一覧
| 内容 | 文字列 | 概要 |
| —- | —- | —- |
| TYPE_ALL_STRING | “*” | データ接続用のAPNタイプ |
| TYPE_DEFAULT_STRING | “default” | デフォルトのデータトラフィックのAPNタイプ |
| TYPE_MMS_STRING | “mms” | MMS(Multimedia Messaging Service)トラフィックのためのAPNタイプ |
| T
Jetpack Composeで画面幅を取得して4分割する方法
## はじめに
今回はまず画面の幅を取得して、その上で最小値を設定して4分割した値を取得し、Jetpack ComposeのRowの中でそれぞれ要素に横幅を設定して呼び出していこうと思います。## 画面の幅を取得
まず、画面の横幅を取得するところからやっていこうと思います。“`Kotlin
@Composable
fun Root() {
DetailSection(
modifier = Modifier
.fillMaxWidth()
)
}@Composable
fun DetailSection(
modifier: Modifier = Modifier
) {
val configuration = LocalConfiguration.current.screenWidthDp.dpRow(
modifier = modifier,
horizontalArrangement = Arrangement.Start,
verticalAlignment = Alignment.
Unity で Google Mible Ads (AdMob) を使うコード
## 前提
– Unity 2021.3.8f1
– Google Mobile Ads Unity Plugin v7.1.0
– Apple App Store、Google Play Store
– この記事では、Google Mobile Adsの一部機能を限定的に使用し、汎用性のない部分があります。
– この記事では、以下の内容を扱いません。
– Google Mobile Adsのルールやコンソールの使い方など
– Unityエディタの使い方やモバイル向けのビルド方法など
– この記事のソースは、実機でテストしていますが、本番広告でのテストはしていません。
– プロジェクトで使用したIDはテスト用のもので、ストアで公開する製品に使用できるものではありません。## できること
– AndroidまたはiOSで、AdMobを利用します。
– 複数のバナー、インタースティシャル、リワードビデオ広告の表示を制御し、シーンに応じて広告を切り替えます。
– 報酬の獲得を検出します。## リソース
### このプロジェクト
– [ソース (GitHub)](https
【Flutter】percent_indicator の使い方
## 初めに
percent_indicator とは、以下の画像のように何らかの達成状況を示すための Widget です。
家計簿のアプリや習慣化のアプリに多く使用される印象です。
## 準備
まずは、[percent_indicator パッケージ](https://pub.dev/packages/percent_indicator) を「 pubspeck.yaml 」に記述します。
パッケージのバージョンは、特に制約がなければ最新のバージョンで問題ありません。“`yaml: pubspeck.yaml
dependencies:
flutter:
sdk: flutterpercent_indicator: ^4.2.2
“`
Pub get をして準備は完了です。## 実装
まず
UIの状態管理方法とViewModelイベントの実装例
## はじめに
2021年12月に公式の[アーキテクチャガイド](https://developer.android.com/jetpack/guide?hl=ja)が大幅に更新されました。この記事では、[UI層](https://developer.android.com/jetpack/guide/ui-layer?hl=ja)の大まかな解説と、[ViewModelイベント](https://developer.android.com/jetpack/guide/ui-layer/events)について、LiveDataとFlowの2パターンでの実装例を示しながら解説を行います。
## UI層の大まかな解説
公式のアーキテクチャガイドをおさらいしてみると、 `UI層、Domain層、Data層`の3つに分かれており、それぞれ`一方向に依存している`ことが分かります。この一方向に依存しているというのが、後から重要になってくるので覚えておいてください。
![mad-arch-overview.png](https://qiita-image-store.s3.ap-nort
JetpackCompose BottomNavigation の基本的な構成
![Reflector Recording.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588914/2d744d55-4699-e0c5-c0ae-216c5210948e.gif)
# 構成
シンプルに構成します。
![スクリーンショット 2022-08-18 19.14.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588914/59a48ebe-9e3f-b6a0-f24b-fb8f0a4ff13f.png)
メイン画面を表示する部分は
「NavHost」
、それを表示切り替えする下側に並んだ操作部分は
「BottomNavigation」
です。
コードは以下のように構成できます。
“`kotlin
@Composable
fun MainScreen() {val navController = rememberNa
【Flutter】アプリアイコンを変更する
## 初めに
Apple Store や Google Play Store にアプリを表示させる場合、当然のことながら、自分独自のアイコンを作成して表示させる必要があります。
今回は作成したアイコンをアプリアイコンとしてホーム画面に表示させる方法を紹介します。## flutter_launcher_icons
今回は [flutter_launcher_icons](https://pub.dev/packages/flutter_launcher_icons) というパッケージを使用します。
このパッケージはアプリのアイコンを変更する際に使用されるパッケージです。## 準備
まずは、パッケージのバージョンを「 pubspeck.yaml 」に記述します。
このパッケージを使用するのは開発段階であるため、`dependencies` ではなく、 `dev_dependencies` に追加します。パッケージのバージョンは、特に制約がなければ最新のバージョンで問題ありません。
“`yaml: pubspeck.yaml
dev_dependencies:
flutt
各ProductFlavorsによって使用するAPIエンドポイントを変えたい
# 初めに
前回の記事で書くBuildTypeによって要素を変更する処理を紹介したので、今回はProductFlavorsによって変更する処理を書いていこうと思います。
### 本文
前回同様`build.gradle`に書いていきます“`gradle
productFlavors {
register(“stg”) {
buildConfigField(
“String”,
“API_ENDPOINT”,
“\”api_end_point/\””
)
}
register(“prd”) {
buildConfigField(
“String”,
“API_ENDPOINT”,
“\”api_end_point\””
)
}
インストール済みのアプリを一覧表示させる
# 動作画面
# 解説
デフォルトで[PackageManager](https://developer.android.com/reference/android/content/pm/PackageManager)というアプリを管理するマネージャが用意されているみたいなので、こちらを使用して実装します。今回のView側はJetpackComposeで実装しているので難しいロジックを考える必要は無いですね。“`MainActivity.kt
class MainActivity : ComponentActivity() {
@SuppressLint(“QueryPermissionsNeeded”)
override fun onCreate(savedInstanceState: Bundle
Kotlin Nativeってandroid向けにも書けるんですよ
# Kotlin Nativeってandroid向けにも書けるんですよ
この記事は2022年7月20日に開催された[Qiita Night〜2022年、Androidアプリはどう作る?〜](https://increments.connpass.com/event/251564/)でLTした内容の記事版です。
Qiiita様にまとめていただいたイベントレポートは[こちら](https://qiita.com/Qiita/items/0d9bb3d523e36319f1a5)です。
検証に使ったプログラムは[GitHub](https://github.com/RyuNen344/KotlinNativeForAndroid)にて公開しています。# Android NDK使ってますか?
– androidエンジニアは普段kotlinもしくはJavaを用いてアプリを作成します。
– Android NDKは処理を高速化したいときやメモリ管理を手動で行いたい場合に使用します。
– linkerの設定やCmakeList.txtの準備などいくつか超えなければならないハードルがあります
Flutter 3.0.x 環境をmacOS上に構築する(XcodeとFlutterの複数バージョン対応版)
# なぜこの記事を書いているか
以前、[Flutter 2.5.x 環境をmacOS上に構築する(XcodeとFlutterの複数バージョン対応版)](https://qiita.com/uehatsu/items/bdd652464a81c9c71ff7)と題した記事を投稿したのですが、この記事では3.0.x環境でも同様の手順で構築できるのかを検証する意味も含めてトレースします。
# 環境(2022/08/17現在)
– MacBook Pro (Intel Mac)
– macOS Monterey (12.5)
– Flutter (3.0.5)
– Android Studio (Chipmunk | 2021.2.1 Patch 2)
– Xcode (13.4.1)# インストール
## Homebrew
今回もHomebrew経由で色々なものをインストールします。
“`bash:terminal
/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HE
Android13で追加されたMaterial YouのThemed app iconsに対応する
Android13では、ユーザーのテーマに合わせてランチャーアイコンのtintを設定する機能が新たに追加されました。
これにアプリ側で対応する方法を紹介します。
https://developer.android.com/about/versions/13/features#themed-app-icons
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53293/77f049d5-70a2-ba59-efb8-77bc1a6b8a59.png)## 対応
Adaptive iconに``を一行追加すればOKです。
“`xml
…
JavaからKotlinの拡張関数を呼び出す ## やること
タイトルの通りです。
JavaからKotlinの拡張関数を呼び出し方を書いていきます。## どうやるか?
JavaからKotlinの拡張関数を呼び出すときは、`ソースファイル+Kt`という名前のクラスのstatic関数としてコンパイルされる。
Javaから呼び出す場合は、`this`となるオブジェクトが第一引数となります。
実際には下記のような感じ。Kotlinの拡張関数
“`Kotlin:Extension
fun fromJava?.toMapping(): Qiita {
return Qiita(
account = this.account,
username = this.username,
twitter = this.twitter
)
}
“`Java
“`Java
qiita = ExtensionKt.toMapping(fromJava);
“`以上です。
AndroidのLogとTimberについて
### AndroidのLogとTimberについて
Android開発をしている際にLogを用いてデバックや値の確認をする人が多いと思います。今回、普段使っているLogについてもっと使いやすい方法はないのだろうかと思い調査をしてまとめました。そこでTimberというライブラリを知ったのでTimberについてもまとめました。### Logについて
まずLogはClassとして定義されていてLogを出力するAPIを提供しています。その中にも様々なmethodが存在しています。そしてLogには優先度というものが存在しています。優先度の高い順番に記載をすると以下のようになります。| Log Type | 意味 |
|:———|——|
|e|error エラー|
|w|warn 警告
|i|info 情報
|d|debug デバック|
|v|Verbose*1 詳細|*1 verbose : 口数が多いなど意味があり詳細を表しています。
#### コードでの利用方法
実際のコード上では以下のような形式で記載されます。“`kotlin
Log.e(“Ma
【Android】時間を表示するView『TextClock』
# 初めに
今回はデジタル時計で時間を表示させるためのView 『TextClock』というものうを見つけたので、それをご紹介します# TextClock
デジタル時計を表示させるには **TextClockクラス**か Layoutに**TextClockタグ**を追加して用います。
TextClockはTextViewの子ViewなのでTextViewのメソッドを使用することができます。TextClockのデジタル時計の表示形式は24時間表示か12時間表示のどちらかを定義することができます。
**setFormat24Hour**メソッドを使用すると24時間表示内容を定義することができます。
XML側で定義する場合は
“`
android:format24Hour=”HH:mm:ss”
“`
といった感じで定義することができます。# タイムゾーンを指定
TextClockではデジタル時計のタイムゾーンを指定することができます。
setTimeZoneメソッドを使用するとタイムゾーンの指定が可能になります。
XML側で定義する場合は
“`
android:time
Android Studioのメモリーサイズを変更する方法
# はじめに
たまにAllroidStudioのメモリーサイズが足りなくなり、警告が出たりしますよね。
その場合の対応方法としてメモリーサイズの変更方法を残しておこうと思います。# 変更方法
Android Studioのメモリーサイズを変更するためには、VMオプションから設定する必要があります。
VMオプションは、`help→Edit Custom VM Options`という項目から設定可能です。
上記からVMオプションを開くと、以下設定の記載があると思いますので、サイズを上下させることでメモリーサイズを変更可能です。
“`
-Xmx3072m
“`上記を変更したら、Android Studioを再起動すれば反映されるはずです。
設定は以上になります。# さいごに
こういった設定は設定を変更する頻度
Unity2021の2D Mobile[プログラミング]
# はじめに
この記事は一つ前の**初期設定**を済ましていることを前提としています。それから、そこそこのプログラミング経験がある方でなければ分かり辛い表現が多いと思います。
ご注意ください。Unityを初めてたったの二日目ですがUnityの仕様がだんだん掴めてきた現状です。
備忘録として記事を書いている形ではありますが、あまりに基礎的なことなので自分でも見返すかはよく分かりません。まぁ誰かの役に立ったらいいや程度の認識で進めましょう。
一日目に「一日あったら簡単なゲームくらい作れるやろwww」という甘い見通しが残念ながら達成されなかったのに続いて二日目も無事終わりそうですが、全容が掴めてきましたのでその先駆けとしてプログラミングについて書き留めておきたいことを書いていきます。
特にTMPを使用していた場合、古いTextに関するプログラムは軒並み使えなかったので、TMPを使用していてボタンやテキストのUIのスクリプトアタッチが出来ないよ~!という方に参考にしていただければ幸いです。https://qiita.com/king_dog_fun/items/60dcdf
Unity2021の2D Mobile[初期設定]
# はじめに
スマホのゲーム開発を始めようと思い至ったのは夏休みが暇すぎたからです。
幸い僕にはあまりある時間と大量のプログラミングの経験とコンピュータに関する知識がありました。一日で簡単なゲームくらいは作れるだろうと思い適当なサイトを参照しながら開発を進めようとしたところ、参照しているサイトより進んだUnityのバージョンが存在していることに気が付きました。それがUnity2021です。正確にはUnity2021.3.8f1です。
まぁ大丈夫だろうと最新の安定バージョンらしいそれをインストールして進めていたのですが、どうにも文字化けがあったり、エラーが起きたりで進められない。こうして僕の簡単な目論見をした一日は消費されていきました。
この記事を書いているのは、その次の日です。
この記事では僕が忘れてもいいように、Unityの2021において行うべきだと判断した初期設定の数々を書いていきたいと思います。# Unity Hub
Unityをインストールするため、あるいはバージョン管理をするためのソフトです。Unityを扱うにはこれを入れるのが最も賢いらしく、僕もそれには
【Android】PCとBluetooth接続し、PCに文字列を送信する
# はじめに
AndroidスマホをPCとBluetooth接続し、PCに文字列を送信するアプリをBluetooth接続のサンプルコード[「android-BluetoothChat」](https://github.com/googlesamples/android-BluetoothChat)を基に作成しました。[「Android開発日記 AndroidのBluetooth通信(SPP)【初心者向け】」](https://mikulogi-tomo.hatenablog.com/entry/2018/01/04/033458)などにも同様の記事がありますが、将来の使い勝手を考慮し、接続先の選択を[android-BluetoothChat](https://github.com/googlesamples/android-BluetoothChat)と同様に別アクティビティでペア設定済みのデバイスから選択できたり、接続処理はUIスレッドとは別のスレッドでの処理としています。さらに、Android 12で動作させるために必要な変更を追加しています。
# 検証環境
この記事の内容