- 0.0.1. 【Material Design】Material Design 3のタイポグラフィーは、今までと何が違うの?
- 0.0.2. Android タブレット端末で ROS の点群データを表示
- 0.0.3. 背景付きTextViewやEditTextでautoSizeTextTypeを使う方法
- 0.0.4. 【初心者応援】デグレしないために気をつけること
- 0.0.5. Flutter 公開済みAndroidアプリの更新時テストで、署名が異なるエラーが出たとき
- 0.0.6. Profileable apkを使ってリリースapkで起動時に実際に何が時間がかかっているのかを確認する
- 0.0.7. Xamarin.Forms (Android) に Azure Notification Hubs からタグを活用して Push 通知を送る
- 0.0.8. 【Android】フォアグランドサービスを作成する
- 0.0.9. Androidアプリを開発する #0
- 0.0.10. android studioのデバッガが遅いとき
- 1. android studioのデバッガが遅いとき
- 1.0.1. Androidスマホと自作機器をUSBで繋ぎたい(Android Open Accessoryのサンプル実装)
- 1.0.2. Mockitoでのユニットテストに入門してみた
- 1.0.3. 【Android】Navigationを実装してみる
- 1.0.4. ハッカソンから始まってiOSアプリ、Androidアプリをリリースするまでの軌跡
- 1.0.5. adb関連のあれこれ(Mac)
- 1.0.6. ライフサイクル 呼び出されるタイミング早見表
- 1.0.7. 実機(Android端末)で実行する方法
- 1.0.8. 【Material Design】そういえばDynamic colorってなんだっけ?
- 1.0.9. NCMB Kotlin SDKを使ってTodoアプリを作る(その3 タスクデータの表示)
- 1.0.10. RemoteMediator + Paging3 + Room + ViewModel で既読機能、削除機能付きのRecyclerViewを作る。
【Material Design】Material Design 3のタイポグラフィーは、今までと何が違うの?
## 概要
この記事では、少し前に公開された[Material Design 3(通称 : M3)](https://m3.material.io/)のTypographyと、
今までのTypographyを比べて、変わったところ、追加されたところについて解説します。M3のTypographyでの変更点を簡単にまとめると、
**シンプルに、わかりやすく、使いまわすことができるようになった**
ということになると思います。## M3のTypographyのアップデート内容
M3のTypographyでは、以下の内容がアップデートされました。+ **デフォルトフォントが決められた。**
+ **テキストの種類が単純になった。**
+ **TokenでTypographyを管理することで、デバイスに最適なサイズになった。**これらを順番に解説していこうと思います。
## デフォルトフォントが決められた。
デフォルトフォントが決められていなかったのが、不思議ですが、
M3で、デフォルトフォントとして決められたのは、
[**Roboto**](https://fonts.g
Android タブレット端末で ROS の点群データを表示
ROSロボットシステムのLiDAR、ステレオカメラなどのデバイスより生成した点群データ(PointCloud2)をユーザに表示時、パソコンPCの画面で表示できますが、ビジネス現場で運用には、丁度不便です。
何か簡単にAndroid タブレット端末でROS の点群データを表示できるかを試してます。# システム構成
“`mermaid
sequenceDiagram
Androidタブレット端末 –>> ROSロボット : Wifi接続
ROSロボット –>> Androidタブレット端末: 点群データ
“`# Point Cloudアプリをインストール
[android_pointcloud_viewer](http://wiki.ros.org/android_pointcloud_viewer)のAndroidアプリを使用して点群データを表示します。
Gitから[android_ros_pointcloud_viewer](https://github.com/cogniteam/android_ros_pointcloud_viewer)のAn
背景付きTextViewやEditTextでautoSizeTextTypeを使う方法
# 背景付きTextViewやEditTextでautoSizeTextTypeを使う方法
>Android 8.0(API レベル 26)以上では、テキストサイズを自動的に拡大または縮小し、TextView の特性と境界に基づいてレイアウトを埋めるよう TextView に指示できます。このように設定すると、動的コンテンツを表示するさまざまな画面で、テキストサイズの最適化が容易になります。
https://developer.android.google.cn/guide/topics/ui/look-and-feel/autosizing-textview?hl=ja&msclkid=d5ecdf15c07511ecbb50c59aa695f7ef
TextViewに対して上下左右の制約を課したときに自動サイズ調節を行える機能があります。
こちら、xmlファイルに`android:autoSizeTextType=”uniform”`を追加するだけで済むので非常に便利なのですが、
以下のような要件の時に問題が発生します。– ①TextViewに背景を設定したい場合
– ②
【初心者応援】デグレしないために気をつけること
# 初めに
今回は、デグレを起こさないために気をつけるべきことを紹介していきたいと思います。
デグレとは、不具合修正をした際に元々正常だった動作が不具合を起こすことを言います。### 正常動作と異常動作の確認をする
正常時の動作はどういったものなのか、今回の不具合はどういった異常が起こってしまっているのかを把握することで、不具合の原因に見当をつける際にかなり絞ることができます。
そして、正常時との違いを把握することで他の部分に対して無駄な変更をしなくて済むので、間接的にデグレが起こることを未然に防ぐことができます。### 修正は大雑把にしすぎない
通信部分や変数に修正を加える際に、大元を変えてしまったりすると意図しない変更が起こってしまい他の部分にも影響が出てしまいます。
そのためにも3段回に分けるといいかと思います。
1.原因を発見
2.それを修正するのに必要なことを見定める
3.実装するのにはどうするのが適切なのかを考える
このように、修正に必要なものを見定めた後に適切な修正はどれかを考えることで、直線的な考えをしてデグレが起こってしまうということを防ぐことができます
Flutter 公開済みAndroidアプリの更新時テストで、署名が異なるエラーが出たとき
## アプリのアップデートでエラー
Flutterで作成し、既にPlayStoreで公開済みのAndroidアプリを更新する際のテストで、
アプリの更新ができなかった事象について、備忘録として記載します。## 前提条件
・バージョン1.0.0を新規アプリとしてPlayStore公開済み
・上記公開時はapkファイルではなく、aabファイルで申請を行った
・バージョン1.1.0をapkファイルとして作成
・アプリはFlutterで作成## 更新できなかった事象
PlayStoreより、既に公開されている1.0.0をダウンロードし、そのあとローカルで作成した1.1.0の新バージョンapkファイルを
ファイルシステムより、インストールしようとしたところ、8割ほどインストールが進んだのちに、「アプリはインストールされていません。」と表示され、正常にインストールができなかった。## 試してみたこと
1.0.0アプリがインストールされた状態で、1.1.0バージョンの実行をflutter run –release コマンドで行った。
すると、署名が異なるのでエラーする旨のメッセージが
Profileable apkを使ってリリースapkで起動時に実際に何が時間がかかっているのかを確認する
# モチベーション
デバッグではランダムに時間が増えてしまうので、基本的にデバッグが有効の場合でプロファイルしても実際にかかっている時間は取れないです。ですが、これまではデバッグでしかプロファイルが取れなかったので、正確なものを見るには[OSごと書き換えたり](https://github.com/uber/nanoscope)とかしかなかったです。
ランダムに時間が増える図
それがAPI level 30で、Android Studio Bumblebee (2021.1.1) からProfileable apkが利用できるようになりました。
https://android-developers.googleblog.com/202
Xamarin.Forms (Android) に Azure Notification Hubs からタグを活用して Push 通知を送る
# はじめに
以下のものを準備
– Visual Studio 2022
– Azure アカウント および サブスクリプション(今回使用するのは無料Tier)
– Google アカウントiOSは開発者プログラムへの登録が必要そうだったり、エミュレータでの通知配信が怪しいらしいので、とりあえずAndroidのエミュレータで進めることにした
# 全体像
Xamarin.Androidに対してpush通知を送る場合は、[こちら](https://docs.microsoft.com/ja-jp/azure/developer/mobile-apps/notification-hubs-backend-service-xamarin-forms)の公式docがガイドしてくれそう。ただ、今回はバックエンドなしのシンプルな構成にしたかったので、以下の通り、Azure Portalをバックエンドと見立ててタグ制御によるテスト配信を行った。

## 環境
Android Studio:2021.1.1 Patch 2
kotlin:1.6.10
targetSdkVersion:31
minSdkVersion:27## 実装
今回は音楽を再生するサービスをフォアグラウンドで動かすサービスを作ります。まずは Manifest でフォアグラウンドでサービスを実行する権限を付与します。(APIレベル28以降では必須)
“` Andr
Androidアプリを開発する #0
# はじめに
業務で触る機会があった…とかではないのですが、触ったことが全く無いのもなんか嫌。。。
ということで今回からAndroidアプリ開発を始めていきたいと思います。
毎週進捗を努力目標として記事を出していきたいですが、気長に読んでいただけるとありがたいです。
初心者なので、こんなツールあるよ、こうしたほうがいいよはどんどん教えていただけると
脳のキャパシティーを超えない程度に参考にさせていただきます。今回はタイトルにもある通り「#0」ということで下準備回なのでさらっと読み進めていただけると幸いです。
# 下準備
### 開発環境に関して
iOSは今回考慮しないのでAndroid Studioで開発していきます。
2022/04/18時点での最新版が「Android Studio Bumblebee | 2021.1.1 Patch 3 for Windows 64-bit」だったのでこちらを使っていきます。
ダウンロードはこちらからhttps://developer.android.com/studio?hl=ja&gclid=Cj0KCQjwmPSSBhCNAR
android studioのデバッガが遅いとき
android studioのデバッガが遅いとき
結論:使わないbreakpointを全部削除。必要なbreakpointを消してはダメです。
実機でもエミュレータでも、デバッガが遅くなる時ありますよね。
図1のような画面を見たことあると思います。

図1これを図2のように削除していれば、速くなります。削除したいブレークポイントを選んで、deleteキーで削除です。チェックを外すだけではダメです。

# はじめに
こんなときはありませんか?+ メカとかロボットとかなんか作ったはいいけど、画面作るのがめんどくさい
+ タッチとか音声とか通信とかスマホを使ったほうが早いけど、周辺機器を繋ぎたい
+ スマホとUSBで繋ぎたいが、スマホの電力を使うんじゃなくてむしろ充電したい
+ 古いAndroidスマホと自分の電子機器を繋ぎたいそういうときに使える仕組みとして、
+ 有線(USB)でAndroidデバイスと接続
+ 電源供給は機器側からスマホに行う
+ 非常にシンプルに通信できるそういう仕組をAndroid OSがサポートしています。
これがAndroid Open Accessoryです。# Android Open Accessoryとは
Android Open Accessoryってご存知でしょうか?
機能としては上述のものを実現するためのものなのですが、なんと初出は2011年のGoogle IO。
Android OSのサポートバージョンはなんとAndroid 2.3.4からです。10年前のあまり使われていなさそうなプロトコルが使い物になるのか?と思うかも
Mockitoでのユニットテストに入門してみた
# Mockitoとは
Mockitoとは、Javaアプリケーション開発においてデファクトスタンダートになっているモックライブラリです。
ユニットテストを記述するする際、テスト対象が他のコンポーネントに依存している場合、その依存しているコンポーネントとそっくりな振る舞いをするテストダブル(影武者)を作成する必要があります。
自前でテストダブルを作成するのは大変ですが、Mockitoを使えば依存コンポーネントとテスト対象とのやりとりを簡単に実装することができます。
今回は、MockitoのKotlin向けラッパーアプリである [Mockito-Kotlin](https://github.com/mockito/mockito-kotlin) を使用していきます。# テストダブルについて
テストダブルの役割は以下の5つです。– スタブ
– モック
– スパイ
– フェイク
– ダミー今回は、特によく使われるスタブ・モック・スパイオブジェクトについて入門していきます。
スタブ: テスト対象に対して、事前定義した任意の値を与える
モック: テスト対象メソッド実行時に、テスト対象が
【Android】Navigationを実装してみる
なんか面白そうなやつがあったので試してみました。
備忘録的な感じです。
## Navigationを実装してみる
とりあえず適当な新規プロジェクトを作成してFragmentを追加しました。スタート画面レイアウト
“`xml:fragment_start.xml
ハッカソンから始まってiOSアプリ、Androidアプリをリリースするまでの軌跡 **@kenmaro**です。
普段は主に**秘密計算、準同型暗号などの記事について投稿しています**。
秘密計算に関連するまとめの記事に関しては以下をご覧ください。> – [秘密計算エンジニアを始めて2年半が経った。](https://qiita.com/kenmaro/items/48059dd60f79e80f5ef8)
> – [秘密計算エンジニアを始めて3年が経った。](https://qiita.com/kenmaro/items/a1d90a074d552b7bf886)## 忙しい人のために最初に宣伝
**この度我々が個人開発する「YorimichiApp」はAndroid版を正式リリースしました。**アンドロイドユーザの方は、ぜひこちらからアプリをダウンロードしてみてください。
https://play.google.com/store/apps/details?id=com.agrimetal.yorimichi2
また、iOSユーザの方でまだダウンロードしていない人は、ぜひこちらからどうぞ。
https://apps.apple.com/jp/
adb関連のあれこれ(Mac)
## 今回の内容
– adbとは?
– adbコマンドのファイルパスを通す
– adbコマンドでapkをインストールする
– AndroidデバイスでFirebaseDebugViewモードを有効にする方法## マシン環境
– マシン:M1 MacbookAir 2020
– OS:Mac OS Big Sur Ver.11.3.1
– シェル:zsh 5.8 (x86_64-apple-darwin20.0)## adbとは?
adbとは、「Android Debug Bridge」の略で、Android端末とやりとりするための多用途なコマンドである。アプリのインストールやアンインストール、クラッシュログの出力など、さまざまな操作が行える。### Android SDK locationを調べる
– Android Studioを起動しSDK Locationを調べる
– 大体、`/Users/ユーザ名/Library/Android/sdk`が初期設定から変更しない場合ある。## adbコマンドのファイルパスを通す
adbコマンドはsdkフォルダのplatform-
ライフサイクル 呼び出されるタイミング早見表
ライフサイクルのメソッドがそれぞれどのタイミングで呼ばれるかの早見表を自分のメモ用に作成しました
# ライフサイクル早見表
|メソッド名 |呼び出されるタイミングと説明|
|:-|:—|
|onCreate() |アクティビティの生成時。アクティビティの初期化は通常ここで行われる|
|onStart() |アクティビティが表示されるとき。複数回呼び出される可能性がある|
|onResume() |アクティビティがフォアグラウド(画面上で操作できる状態)になり、ユーザーの操作を受け付けるとき|
|onPause() |アクティビティがフォアグラウンドでなくなるとき|
|onStop() |アクティビティが非表示になったとき|
|onRestart() |バックグラウンドから、再びフォアグラウンドになる前。onStop()からアクティビティが再表示されるとき|
|onDestory()|アクティビティが破棄されるとき|# 最後に
こうして改めて見ると、ライフサイクルとアクティビティの関係が親密なのを再確認しました。
また、「android ライフサイクル」などで検索すると 画
実機(Android端末)で実行する方法
# 初め
端末 :OPPO Reno A
androidバージョン :9
こちらの端末を使って実機でのアプリ実行の流れを説明していきます
# 早速
①
設定→端末情報と進みビルド番号の項目を数回タップします
「デベロッパーになりました」とトーストが表示されるので、確認次第前の画面に戻ります
②
その他の設定→開発者オプション(①をやっていないと表示されていない可能性があります)と進みます
開発者オプションはオンオフを切り替えることが可能です
](https://m3.material.io/)のDynamic colorを読んで
個人的に思った事をまとめました。## Dynamic color とは?
>
> Dynamic colorは、Material Design 3(通称:M3)で定義されてれた新しい色
NCMB Kotlin SDKを使ってTodoアプリを作る(その3 タスクデータの表示)
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アプリを作ってみます。[前回はタスクデータの保存について解説しました](https://qiita.com/goofmint/items/92d1021dbebd7e7c1644)ので、今回は保存したデータの取得と表示、そしてデータ削除を解説します。
## 完成版のコード
作成したデモアプリのコードは[NCMBMania/Kotlin_Todo: Kotlin SDKを使ったTodoアプリです](https://github.com/NCMBMania/Kotlin_Todo)にアップロードしてあります。
## タスクデータの取得
データストアに保存したタス
RemoteMediator + Paging3 + Room + ViewModel で既読機能、削除機能付きのRecyclerViewを作る。
# RemoteMediator + Paging3 + Room + ViewModel で既読機能、削除機能付きのRecyclerViewを作る。
参考https://qiita.com/que9/items/59cc988bfd92d0acea07
https://qiita.com/snichi/items/822b1f015458c503be5a

図のように既読、削除機能付きのネットワークPagingを作ろうとしたとき、RemoteMediatorを使った網羅的な解説が見当たらなかったので、いろいろと探し回って得た知見を書いておこうと思います。
特に、日本語、javaの最近のandroid技術紹介ページが少なくなっているので参考いただければと思います。#### 1.RemoteMediatorの設定
基本は、上記`AP