- 1. Androidで動的に追加削除できるFormを作成する方法【kotlin】
- 2. ARCore Geospatial APIのBalloon PopサンプルをAndroidビルドして試す
- 3. Compose Multipreview Annotationsで複数のバリエーションのPreviewを表示させる
- 4. [Android] 「難読化解除ファイル」と「デバッグ シンボル」の警告を消す方法
- 5. 【Flutter】結局、url_launcherはどう実装すべきなのか。
- 6. アーキテクチャって何?(UIレイヤー・ドメインレイヤー・データレイヤーなど)
- 7. 開発者に向けたGoogle I/O 2022の新着情報と主な発表内容
- 8. セキュリティ上の理由により、Google Play に公開するにはデバッグを無効にする必要があります
- 9. AndroidからPCへタップ座標値をUDPで送信
- 10. FreeBSDでAndroid USBデザリング
- 11. Xsens Dot SDK( Android ) Recordingの基本
- 12. もしAndroidオープンソースがクソコードだったら
- 13. Kotlin 1.6.20の変更点
- 14. [Android] Roomを使ってローカルDatabaseにデータを保存してみた
- 15. Kotest でのコルーチンのテスト向けのセットアップ
- 16. NCMBのKotlin SDKを使ってTodoアプリを作ろう
- 17. ViewBinderの使い方(初心者向け)
- 18. Android13写真選択ツールの実装方法
- 19. 【Android】覚えておくと便利なExtension:Part2
- 20. 余ったスマートフォンをIoTデバイスとして活用してみた
Androidで動的に追加削除できるFormを作成する方法【kotlin】
androidで動的なFormを作成しようとした際に、
“追加削除ができてユーザーが入力した情報を取得する”
という一連の流れの実装方法が見当たらなかったので、今回私が実装した方法を紹介します。android初心者なので、改善できる箇所があったらコメントで教えていただけると嬉しいです。
完成イメージ
—
### その1:layoutの作成
“`xml:fragment_family_form.
ARCore Geospatial APIのBalloon PopサンプルをAndroidビルドして試す
# 概要
2022年5月12日(JTS)に開催されたGoogle IOでARCoreの新しいAPIが発表されました。
その名も「Geospatial API」!スマホの緯度、経度、高度、向きをGPSより正確に測位できる機能です。
ストリートビューがある場所なら利用可能とのことです。日本だと大半の公道が当てはまります。
どのようなアプリが作れるかは[公式ページ](https://developers.googleblog.com/2022/05/Make-the-world-your-canv
Compose Multipreview Annotationsで複数のバリエーションのPreviewを表示させる
Jetpack Compose 1.2 と Android Studio Dolphin 以降の組み合わせで Compose Multipreview Annotations の仕組みを使い、複数の `@Preview` を一つの Annotation で表現することができます。
https://developer.android.com/studio/preview/features#compose_multipreview_annotations
## 実装
これまで、例えば Light Theme と Dark Theme の Compose のプレビューを表示したい場合は、以下のように複数の `@Preview` を使って実装していました。
“`kotlin
@Preview
@Preview(
uiMode = Configuration.UI_MODE_NIGHT_YES
)
@Composable
fun PreviewMilestoneItem() {
MilestoneItem()
}
“`
[Android] 「難読化解除ファイル」と「デバッグ シンボル」の警告を消す方法
# 概要
Android アプリをリリースするとき「リリースのレビュー」のところで ↓ の警告が出ることがある。
“`
⚠️ 警告
この APK に関連付けられている難読化解除ファイルはありません。難読化コード(R8 / ProGuard)を使用している場合、難読化解除ファイルをアップロードすると、
クラッシュと ANR をより簡単に分析、デバッグできるようになります。R8 / ProGuard の使用は、アプリサイズの縮小につながります。⚠️ 警告
この APK にはネイティブ コードが含まれ、デバッグ シンボルがアップロードされていません。
クラッシュや ANR を簡単に分析、デバッグできるよう、シンボル ファイルをアップロードすることをおすすめします。
“`この警告が出るたびに「
【Flutter】結局、url_launcherはどう実装すべきなのか。
[_url_launcher_](https://pub.dev/packages/url_launcher) を 6.0.20 -> 6.1.2 にアップしたところ `launch` と `canLaunch` が Deprecated になっていたため書き直したが、挙動が変わったため修正。
#### 元のコード
“`dart
await canLaunch(“アプリのカスタムURLスキーム”)
? await launch(“アプリのカスタムURLスキーム”)
: await launch(“ウェブのURL”);
“`このコードに問題があったことは認識していて、Androidの場合、特定のアプリにおいては想定している経路では処理されていない。
`twitter` などのURLスキームはアプリをインストールして必要な設定をしても `canLaunch` が _false_ を返してくる場合があり、ウェブブラウザでURLを起動される。
結果的に、ディープリンクとしてサポートしているアプリが起動されていた。そのため、`canLaunch` を使用せ
アーキテクチャって何?(UIレイヤー・ドメインレイヤー・データレイヤーなど)
## はじめに
アーキテクチャについて学んだことを個人的にまとめました。「アーキテクチャ?何それ??」状態の方にとって少しでも参考になれば幸いです。
また、間違っている部分があればご指摘いただければと思います。### この記事で分かること
– アーキテクチャとは?
– UIレイヤー・ドメインレイヤー・データレイヤーの概要
– その他、大切なこと※細かい話は省いていますので、詳しくは公式ドキュメントなどをご覧ください
## アーキテクチャってそもそも何?
– 「堅牢で高品質なアプリを作るための設計」みたいなイメージ
– アーキテクチャがしっかりしてないと、修正やテストがしにくかったり、思わぬところに変更の影響が出てしまったり…など、余計な労力がかかる## 推奨されるアプリアーキテクチャ
– 推奨されるアプリアーキテクチャは、下記の矢印のような依存関係を持つUIレイヤー・ドメインレイヤー(※必須ではない)・データレイヤーに関心の分離を行う

> This article is originally posted to [Codemgic blog](https://blog.codemagic.io/google-io-2022/).
**Googleの年次開発者会議であるGoogleI/ O2022**がぢょうど終わりました。これは、想像のはるかに超えるものでした! [Pixel Watch関連の噂](https://www.cnet.com/google-amp/news/google-pixel-watch-rumors/)のように、真実であることが証明されたものもありますが、それらは特に驚くことではありません。開発者基調講演では、興味深く、予測しにくかった見どころが多数ありました。メインの基調講演の詳細はライフスタイルメディ
セキュリティ上の理由により、Google Play に公開するにはデバッグを無効にする必要があります
## 現象
Google Play Consoleでaabファイルをアップロードすると上記タイトルのエラーになった## 対応
Unity上で以下を検索してファイルを開く
__AndroidManifest.xml__以下がTrueになっているのでfalseに編集する
__android:debuggable=”false”>__
再ビルドしてアップロードするとできた!
どうやら一度Development Buildにチェックをつけてしまうと、AndroidManifest.xmlのdebuggableがtrueになってしまうらしい
参考
https://unity-yuji.xyz/release-build-debuggable-apk-android-app-bundle-upl
AndroidからPCへタップ座標値をUDPで送信
■プログラムの概要
・Android側:画面アイコンをタップ移動した際の座標をUDP送信。
・PC側:winapi(言語:C++)ベースで作成したUDP受信処理。
・開発環境:AndroidStudioBumblebee2021.1.1 VisualSutudio2013
・送信確認ツール:Wireshark ver3.6.3
・用途:電子楽器。※YouTube動画リンク先:https://youtu.be/9AdsV2z7p_E
・備考:UDP受信後の処理(音生成/音色制御)は割愛してます。■Android側のプログラムのソースコード
(補足)touch_iconはトランペットアイコン、bgは背景画像。いずれもpptで作成。
“`java:activity_main.xml
FreeBSDでAndroid USBデザリング FreeBSD/i386 12.3RでAndoridをUSBにつないでUSBデザリングモードにするとカーネルモジュールがロードされue0が生えてきます。
dhclientをue0で上げるとプライベートが降ってきました。なぜかクラスCのプライベートアドレスなのに対向のアドレスの一番下が1ではなく129でした。
後はデフォルトルートと/etc/resolv.confを設定すればインターネットに接続できます。
インターネット接続がない状態でのインターネット接続は結構大変です。
とりあえずこれはWin10で書きました。
Xsens Dot SDK( Android ) Recordingの基本
# はじめに
Xsens Dot を制御するAndroidアプリを制作できる「Xsens Dot Sdk」の、サンプルアプリに実装がない「Recording」の基本的な実装方法をまとめました。Xsens DOT SDK本体や公式のドキュメントは、下記のURLのフォームに回答することで送られてくるメールからダウンロードすることができます。
https://content.xsens.com/xsens-dot-software-development-kit?hsCtaTracking=2af14a41-b15f-4733-b2ca-5498b2888842%7C21941862-cb62-421e-9e0e-2dac04d1ca9f
サンプルアプリもgithubに公開されています。サンプルにRecording機能はなく、Streamingのみの実装がされています。
https://github.com/xsens/xsens_dot_example_android本記事は、サンプルアプリ内に実装されていることに関しては解説しておらず、サンプルアプリ内の実装に一通り目を通したこと
もしAndroidオープンソースがクソコードだったら
## まえおき
– 下品なタイトルで申し訳ありません。
– あえてクソコード化させてクラス設計を考察する。という内容です。
– というのは、直近でCodeCompleteを読んでいてクラスをどう設計するべきかについて学びました。
– 抽象的な表現も多く記憶から消える前に実際のソースコードを通してクラス設計のアンチパターンをまとめてみようと思います。
– しかし設計を1からするのは難しいため、逆の発想でAndroidのオープンソースコードであればJavaで美しく設計されていると信頼して、そのうちのSimpleAdapterクラスを部分的に変更してどんなリスクが生じるのかを考察します。Fragmentクラスなどはメンバが多すぎたため少しマイナーかもしれませんがアダプタを説明の都合上採用します。
– CodeCompleteを読んだ人やクラス設計を学習している人、JavaでAndroid開発をしている人に楽しんでもらえたらうれしいです。## クラス定義のねらい
– CodeCompleteを読んでいるといろんなことが書いてあるわけですが、そもそものクラス設計の本質は『複雑さの緩和
Kotlin 1.6.20の変更点
※ソース記事は[こちら](https://kotlinlang.org/docs/whatsnew1620.html)
※Kotlin/JSやKotlin/Nativeについては個人的に使っていないので、割愛します。
Kotlin 1.6.20により、将来の言語機能のプレビューが明らかになり、マルチプラットフォームのプロジェクトのために階層構造がデフォルトになり、他のコンポーネントに進化的な改善がもたらされている。
こちらの[動画](https://youtu.be/8F19ds109-o)でも、変更の短い概要を見ることができる。
# 言語
Kotlin 1.6.20では、2つの言語の特徴を試すことができる。
– Kotlin/JVMのためのコンテキストレシーバーのプロトタイプ
– 明確なnon-nullable型
## Kotlin/JVMのためのコンテキストレシーバーのプロトタイプ
::: note alert
この機能はKotlin/JVMのためにのみ利用可能なプロトタイプである。`-Xcontext-receivers`を有効にすることで、コンパイラは本番コードでは利用できない
[Android] Roomを使ってローカルDatabaseにデータを保存してみた
## 背景
データ永続化するニーズが出てきたので、ローカルDBにデータを保存して、サーバーと常に同期するようにした### 技術背景
– Kotlin: 1.6.20
– KSP: 1.6.20-1.0.5
– Android Studio: BumbleBee## Roomとは
> Room 永続ライブラリは SQLite 全体に抽象化レイヤを提供することで、データベースへのより安定したアクセスを可能にし、SQLite を最大限に活用できるようにします。[Room \| Android デベロッパー \| Android Developers](https://developer.android.com/jetpack/androidx/releases/room?hl=ja)
## Setup Room
– kaptは非推奨になったため、kspを使いました。
– [Using kapt \| Kotlin](https://kotlinlang.org/docs/kapt.html)
– [Kotlin Symbol Processing API
Kotest でのコルーチンのテスト向けのセットアップ

テストフレームワークとして [Kotest](https://kotest.io/) を使っているのですが、コルーチンまわりのテストについて工夫が必要だったので、やっていることをご紹介します。
(ここでは `kotlinx-coroutines-test` 1.6 以降を対象とすることにします)。
## コルーチンのテストについて
テストフレームワークによらず一般論として、コルーチンのテストは `kotlinx-coroutines-test` を使ってテストを行うというやりかたが説明されています。
`kotlinx-coroutines-test` 1.6 への移行ガイドが一番わかりやすかったので引用します:
https://github.com/Kotlin/kotlinx.coroutines/blob/master/kotlinx-
NCMBのKotlin SDKを使ってTodoアプリを作ろう
NCMBでは公式SDKとしてSwift/Objective-C/Kotlin/Java/Unity/JavaScript SDKを用意しています。また、それ以外にもコミュニティSDKとして、非公式ながらFlutter/React Native/Google Apps Script/C#/Ruby/Python/PHPなど幅広い言語向けにSDKが開発されています。
今回は公式SDKの一つ、Kotlin SDKを使ってTodoアプリを作ってみます。まず画面の仕様とSDKの初期化について解説します。
## 完成版のコード
作成したデモアプリのコードは[NCMBMania/Kotlin_Todo: Kotlin SDKを使ったTodoアプリです](https://github.com/NCMBMania/Kotlin_Todo)にアップロードしてあります。
## ベースアプリのダウンロードまで
Android13写真選択ツールの実装方法
今回はAndroid13にて追加予定となっている写真選択ツールを使ってみました。
# リファレンス
https://developer.android.com/about/versions/13/features/photopicker?hl=ja
# 実装方法
“`MainActivity.kt
binding.button.setOnClickListener {
val intent = Intent(MediaStore.ACTION_PICK_IMAGES).apply {
type = “image/*”
}
startForResult.launch(intent)
}private val startForResult =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result: ActivityResult? ->
if (result?.resultCode == Activi
【Android】覚えておくと便利なExtension:Part2
# はじめに
何かしらの機能で必ず使用するExtensionですが、毎度実装している便利なExtensionを備忘録的に残しておこうと思います。# その1
“`
fun Context.showToast(message: String) {
mainThread { Toast.makeText(this, message, Toast.LENGTH_SHORT).show()}}“`
トーストを表示する拡張関数です。
上記はシンプルなデフォルトのトーストを表示する処理ですが、SHORTとLONGで拡張関数分けても良いですね# その2
“`
fun Int.dpToPx(context: Context): Float {
return this * context.resources.displayMetrics.density
}fun Int.pxToDp(context: Context): Float {
return this / context.resources.displayMetrics.density
}
“`
dp、
余ったスマートフォンをIoTデバイスとして活用してみた
# 概要
AI Dynamics Japanは、エッジデバイス向けアプリ開発に注力するスタートアップです。AI Dynamics Japanは、2022年4月にCYBERDYNE Omni Networks社「Acty-G3+」向けに __「滞在人数カウント」__ をリリースしました。この「滞在人数カウント」、アンドロイドで動くアプリで、ファイル形式も.apk 形式です。
機種変更で使わなくなったスマホのIoTデバイス化を目指し、__「滞在人数カウント」__ をアンドロイドスマホにインストールしてみました。
# 前提
### システム構成
__「滞在人数カウント」__ は、カメラ画像中の人物数をクラウドにアップロードするアプリです。会議室、フードコートなど人が集まる場所での混雑度推定に用いられることが多く、2022年5月時点、[SORACOM社のS+ Camera向け](https://aidynamics.jp/services/package20/people_counter)、アンドロイド端末向けの2種類があります。今回は、①Oppo R15 NEOに 「滞在人