- 1. AndroidからPCへタップ座標値をUDPで送信。
- 2. FreeBSDでAndroid USBデザリング
- 3. Xsens Dot SDK( Android ) Recordingの基本
- 4. もしAndroidオープンソースがクソコードだったら
- 5. Kotlin 1.6.20の変更点
- 6. [Android] Roomを使ってローカルDatabaseにデータを保存してみた
- 7. Kotest でのコルーチンのテスト向けのセットアップ
- 8. NCMBのKotlin SDKを使ってTodoアプリを作ろう
- 9. ViewBinderの使い方(初心者向け)
- 10. Android13写真選択ツールの実装方法
- 11. 【Android】覚えておくと便利なExtension:Part2
- 12. 余ったスマートフォンをIoTデバイスとして活用してみた
- 13. Android Jetpack(Room + Compose)でTodoアプリ作ろう【前編】
- 14. flutter doctor コマンド時の Android toolchain に関するエラー
- 15. 【Kotlin】Viewを長押し時、クリックイベントをリピートする処理を追加する
- 16. Androidアプリ(NDK)開発で時々logcat出力されない
- 17. 久々にAndroid開発する人のlinter導入ログ
- 18. Google I/O 2022で驚いたところ
- 19. androidアプリ インターバルタイマーの開発
- 20. 【Android】Variable is accessed from within inner class, needs to be final or effectively final
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の場合、手軽に使えるものは
Google I/O 2022で驚いたところ
個人的に驚いたところを**太字**にしておきます。
AndroidのエンジニアなのでAndroidに関するものが多めです。専門領域外のものはかなり素人目線のただの感想が多いです。なにか大きな間違などがあればご指摘お願いします。修正いたします。 :pray:
またまだ見ていきますが、一旦、
* `Keynote`
* `Developer Keynote`
* `What’s new in Android`
* `What’s new in Jetpack`
* `What’s new in Development tool`
* `Lazy layouts in Compose`
* `Fragments: The good (non-deprecated) parts`を見たメモを書いています。
まだまだ、ここに追加していく予定です。
# セッション: Keynote
今までは2言語の比較を見ながら機械学習をしていたが、翻訳を見ずに学習ができるようになった。これにより翻訳に24の
androidアプリ インターバルタイマーの開発
# CoCoIntervalTimer紹介ページ
筋トレなどの時に使用できるインターバルタイマーアプリの紹介です。## 概要
たとえば、第1種目30秒、第2種目50秒、休憩20秒 以上の流れを×3セット!などの
プランを作成し、タイマーとして動作させます。## 用語解説
-プラン
第1種目30秒、第2種目50秒、休憩20秒 以上の流れを×3セット!などのトレーニングメニュー全体を1つのプランとします。-ステップ
プランを構成する要素です。
第1種目30秒→第1ステップ 第2種目50秒→第2ステップ-シンプルプラン
ワーク部分と休憩部分を何セット行うかのシンプルなプランです。(30秒運動、10秒休憩を3セットなど)
シンプルプランはワーク秒数、休憩秒数、セット数を指定することで作成できます。-カスタムプラン
複数ステップをカスタムしてプランを作成できます。
カスタムプランでは自由にステップを追加してより自由なプランを作成できます。
第1種目30秒、第2種目50秒、休憩20秒 以上の流れを×3セット!などはカスタムプランです。## メイン画面
アプリ起動時に起動
【Android】Variable is accessed from within inner class, needs to be final or effectively final
自作の Android アプリで、画面上のボタンを押したら〇〇変数をOFFにする、というコードを作っていたら Variable 〇〇 is accessed from within inner class, needs to be final or effectively final というエラーが出た。
ONにしたい変数をグローバルにする、という簡単な対策でしたが、Android Studio で確認しました。# 参考
[Variable is accessed from within inner class, needs to be final or effectively final – stack overflow](https://stackoverflow.com/questions/14425826/variable-is-accessed-within-inner-class-needs-to-be-declared-final#:~:text=You%20can%20declare%20the%20variable,inner%20class%20must%2