- 1. アーキテクチャって何?(UIレイヤー・ドメインレイヤー・データレイヤーなど)
- 2. 開発者に向けたGoogle I/O 2022の新着情報と主な発表内容
- 3. セキュリティ上の理由により、Google Play に公開するにはデバッグを無効にする必要があります
- 4. AndroidからPCへタップ座標値をUDPで送信
- 5. FreeBSDでAndroid USBデザリング
- 6. Xsens Dot SDK( Android ) Recordingの基本
- 7. もしAndroidオープンソースがクソコードだったら
- 8. Kotlin 1.6.20の変更点
- 9. [Android] Roomを使ってローカルDatabaseにデータを保存してみた
- 10. Kotest でのコルーチンのテスト向けのセットアップ
- 11. NCMBのKotlin SDKを使ってTodoアプリを作ろう
- 12. ViewBinderの使い方(初心者向け)
- 13. Android13写真選択ツールの実装方法
- 14. 【Android】覚えておくと便利なExtension:Part2
- 15. 余ったスマートフォンをIoTデバイスとして活用してみた
- 16. Android Jetpack(Room + Compose)でTodoアプリ作ろう【前編】
- 17. flutter doctor コマンド時の Android toolchain に関するエラー
- 18. 【Kotlin】Viewを長押し時、クリックイベントをリピートする処理を追加する
- 19. Androidアプリ(NDK)開発で時々logcat出力されない
- 20. 久々にAndroid開発する人のlinter導入ログ
アーキテクチャって何?(UIレイヤー・ドメインレイヤー・データレイヤーなど)
## はじめに
アーキテクチャについて学んだことを個人的にまとめました。「アーキテクチャ?何それ??」状態の方にとって少しでも参考になれば幸いです。
また、間違っている部分があればご指摘いただければと思います。### この記事で分かること
– アーキテクチャとは?
– UIレイヤー・ドメインレイヤー・データレイヤーの概要
– その他、大切なこと※細かい話は省いていますので、詳しくは公式ドキュメントなどをご覧ください
## アーキテクチャってそもそも何?
– 「堅牢で高品質なアプリを作るための設計」みたいなイメージ
– アーキテクチャがしっかりしてないと、修正やテストがしにくかったり、思わぬところに変更の影響が出てしまったり…など、余計な労力がかかる## 推奨されるアプリアーキテクチャ
– 推奨されるアプリアーキテクチャは、下記の矢印のような依存関係を持つUIレイヤー・ドメインレイヤー(※必須ではない)・データレイヤーに関心の分離を行う
![mad-arch-overview.png](https://qiita-image-store.s3.ap-no
開発者に向けたGoogle I/O 2022の新着情報と主な発表内容
![Codemagic_Android_Balakina.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2028491/16514b72-6e47-0533-18c0-3b0ca4c8a18b.jpeg)
> 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”>__
![スクリーンショット 2022-05-16 23.42.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/376429/949a53e3-03c9-f01d-d8e1-5ae74677b28d.png)再ビルドしてアップロードするとできた!
どうやら一度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++)ベースで作成したUDF受信処理。
・開発環境: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 でのコルーチンのテスト向けのセットアップ
![kc.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359439/b75b01ab-e388-a968-242d-3c88796177b3.png)
テストフレームワークとして [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に 「滞在人
Android Jetpack(Room + Compose)でTodoアプリ作ろう【前編】
みなさんこんにちは!この記事ではAndroid Jetpackに含まれるRoomとComposeを使ってTodoアプリを作りたいと思います。
【前編】(この記事)ではComposeでリスト表示をする部分を実装して、
【後編】ではRoomを使ってデータベースにデータを保存する部分を実装したいと思います。(作成中)今回作成したTodoアプリのソースコードはこちらにあります。(GitHub)
https://github.com/masashihamaguchi/TodoApp-Jetpack
**完成イメージ**
# Android Jetpackとは?
![Jetpack.png](https://qiita-image-store.s3.ap-
flutter doctor コマンド時の Android toolchain に関するエラー
-環境
Flutter 3.0.0
Android Studio Chipmunk | 2021.2.1-エラー
[!] Android toolchain – develop for Android devices (Android SDK version 32.1.0-rc1)
X cmdline-tools component is missing
Run `path/to/sdkmanager –install “cmdline-tools;latest”`
See https://developer.android.com/studio/command-line for more details.
X Android license status unknown.
Run `flutter doctor –android-licenses` to accept the SDK licenses.
See https://flutter.dev/docs/get-started/install/window
【Kotlin】Viewを長押し時、クリックイベントをリピートする処理を追加する
Viewを長押しした時にクリックイベントをリピートする処理を追加したく、
以下のJavaコードをKotlinに変換したコードを作成したため、備忘録として残しておきます。https://gist.github.com/shisashi/1718672
# 環境
– Android 10
– Android Studio 4.1.3# コード
“` LongClickRepeatAdapter.Kt
import android.annotation.SuppressLint
import android.os.Handler
import android.os.Looper
import android.view.MotionEvent
import android.view.Viewclass LongClickRepeatAdapter {
/**
* 長押し時のリピート処理間隔
*/
companion object {
private const val REPEAT_INTERVAL: Long = 1
Androidアプリ(NDK)開発で時々logcat出力されない
### 問題
AndroidのNDKを使った開発で、C++コードでベタにlogcat出力すると、全く出力されなかったり、少しだけ出力されたりする。### 対策
一旦適当な長さでキャッシュしてから書き出すように変更して、usleepでちょっと待つようにしたら少し遅くなるけどlogcat出力されるようになった。リリースビルドが必要。いつもこれでうまくいくのかは不明。“`C++: C++(NDK)のlogcat実装例
#include
#include#define dprintf(…) { \
__android_log_print(ANDROID_LOG_DEBUG, “MyNDK:”, __VA_ARGS__);\
usleep(5000);\
}
….
void printTbl(std::vector&tbl){
float numPrintUnit = 20.0f; // キャッシュするサイズ(usleepとのバランス)
int numTbl = tbl
久々にAndroid開発する人のlinter導入ログ
# はじめに
現在転職活動中だが、とある会社の技術試験中に自分のAndroid開発の知識が古すぎることを痛感した。
以前から考えているアイディアでアプリを作ることにより、
現代のAndroid開発の知識を習得し直すことにした。その時の学びをメモしていく。
## 筆者の知識レベル
自分のAndroidの知識レベルはおおよそ7年前、OSのバージョンだと4が出るかどうかレベルのものだ。
Android StudioやKotlinは普及する前だし、Gradleも触ったことがなかった。ライフサイクルやcontextの知識はそれなりにあるぐらい。
## 環境
IDEはAndroid Studio Arctic Fox | 2020.3.1 Patch 1、OSはWindows10
さっくりいうなら2022年4月の最新環境である。# Linter導入
今の自分がAndroidアプリを作るとして、まず手を付けること…
それはコードやプロジェクトの構成に誤りが生じる可能性を十分に下げること。
つまり、linterの導入だ。Android+Kotlinの場合、手軽に使えるものは