Android関連のことを調べてみた2022年04月26日

Android関連のことを調べてみた2022年04月26日
目次

Flutter × Firebaseでアプリを個人開発した話

今回、初めてFlutterとFirebaseを使ってandroidrアプリを作りました。
個人でアプリを作ってみたい人やFlutterを使ってみたい人の参考になればと思います。

# 作ったアプリ
[てすろぐ](https://play.google.com/store/apps/details?id=com.murapon.self_scoring_app)
テストや問題集を解いた結果を保存し、復習に使えるようにするアプリです。
今後、iosアプリもリリースする予定です。
アプリに関してはこちらにも書きました。

# 使った言語、サービス
## Flutter
1つのソースで、android、ios両方のアプリができるのでこちら選びました
僕の場合、[現場で使える Flutter開発入門](https://www.amazon.co.jp/gp/product/483997375X/)を買って、一通り勉強してから作り始めようと思ったのですが、初心者には少し難しい内容で、1章だけ読んで挫折しました・・:sweat:
ただ、サンプルソースがダウンロードできるようになっていたので、それを

元記事を表示

UnityでHMSのAnalytics Kitを使用する方法

Unityのオフィシャルドキュメントにしたがって、HMSのAnalytics Kitを実装しましたが、うまくいきませんでした。

Analytics Kit (HMS)
https://docs.unity.cn/cn/Packages-cn/com.unity.huaweiservice@2.3/manual/analyticskit.html

“`
2022/04/06 11:40:52.159 3747 3747 Error HiAnalyticsSDK createInstance=> Stop report! Instance init failed: _openness_config_tag
2022/04/06 11:40:52.159 3747 3747 Error HiAnalyticsSDK createInstance=> Stop report! Instance init failed: _openness_config_tag
2022/04/06 11:40:52.159 3747 3747 Error HiAnalyticsSDK cr

元記事を表示

既存の Android アプリの UI を Jetpack Compose で書き換えた際の知見をまとめてみる

# 概要
View & Fragment で画面を20ほど作っていた既存のアプリを1ヶ月かけて Jetpack Compose で書き換えたので、その際の進め方や気づいたことをまとめてみます。

Jetpack Compose を使う意義や具体的な書き方については別の記事をお読みください。

# モチベーション
[Jetpack Compose 移行する前と移行した後](https://developers-jp.googleblog.com/2020/12/jetpack-compose-before-and-after.html) を読んでやってみたくなったのがきっかけでした。特にビルド時の最適化のパフォーマンスが向上するという点に興味を持ちました。

> 最大のポイントは Compose がほとんどのデベロッパー指標で良好な(または中立的な)影響を示していることです。この点と Compose でデベロッパーの生産性が大幅に向上することを踏まえれば、いろいろ考えなくても、Compose が Android の UI 開発の未来であることはわかります。

# 書き換えのステップ
大ま

元記事を表示

Androidアプリを開発する #1

# はじめに
今回から本格的に中身の機能を作っていきます
下準備編はこちらから

https://qiita.com/sekkenn1102/items/eb0bc3646036b0ad9d36

# 作成するアプリに関して
#0の時にもほんの少し触れましたが、今回から「汎用性の高そうなスケジュール・タスク管理アプリ」を目指していきます
目指すにあたって最低限必要のは以下の3機能だと思っています
* スケジュール/タスクを登録する画面
* 登録したスケジュール/タスクを表示させる画面
* そもそも登録データを保存するためのDB

想定としてはかなりざっくりしていますがこんな感じ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1700794/9a953895-3368-c7b4-2de8-bca2c7bf4aae.png)

まずはスケジュール/タスクを登録する画面から手を付けていきます

# スケジュール/タスクを登録する画面を作成する
登録画面に必要な項目としては以下を想定していま

元記事を表示

KMMプロジェクトを作ってバージョンカタログが利用できるスタート地点に立つまで

## はじめに
設定が複雑で設定やちゃんと動くようにするだけで一苦労。
とりあえず現時点での環境でプロジェクトが動くようになるまでまとめておく。後々別環境とかで動かす機会があったら、最初から環境構築から書きたい。
ライブラリのバージョンカタログ、バージョン管理ができるようになるまでします。

## 環境
* Macbook Air M1 2020
* iOS 12.1 Monterey
* Android Studio Bumblebee | 2021.1.1 Patch 1
* Kotlin Multiplatform Mobile plugin 0.3.2
* Xcode 13.2.1

## プロジェクトが動くようになるまでの手順
1. Android StudioでNew Project->Kotlin Multiplatform App
2. 名前を任意で決めて、OSバージョンは29〜
3. アプリ名は、androidApp,iosApp,shared
4. iOS frameworkは、 CocoaPods dependency frameworkを利用
5. Androi

元記事を表示

[Android + Vulkan + ImGui] AndroidでGUIをC++で

# 概要
AndroidにVulkanベースでImGuiを導入できた。
ImGuiとはMITライセンスで公開されている、C++で書けるGUIライブラリである。
https://github.com/ocornut/imgui
ImGuiはexampleとして、いくつかのplatformとgraphics APIの組み合わせを紹介している。
https://github.com/ocornut/imgui/tree/master/examples
この中にAndroid + Vulkanの組み合わせはないが、やってみると導入は可能だったので、手順を簡単にまとめる。

# 結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1446998/0a10d98e-41c5-26a6-5c0c-10062754fca5.png)
私の前回記事の続きにimguiの領域を追加。
https://qiita.com/Aqoole/items/d8f020b24d2861d20322
オブジェクトはray

元記事を表示

【初心者応援】初心者Androiderに贈る、学習時に使用できるコンテンツ3選

# はじめに

[新人プログラマ応援 – みんなで新人を育てよう!](https://qiita.com/official-events/3f21c92121aa125807b4)
ということで、今月から社会人となり、エンジニアになる方も多いのではないでしょうか?
今月は上記イベントに合わせて初心者応援をキーワードとして記事を書いていこうと思います。

今回は初心者応援記事第5弾、Android学習時に使用できるコンテンツを3つほどご紹介したいと思います。

# 1.GoogleDeveloperトレーニングコース

https://developer.android.com/courses

1つ目にご紹介するコンテンツは、Googleが公式に出している、学習コンテンツです。
初心者から経験者まで幅広くコンテンツを提供しており、基本的にCodelabベースの学習システムです。

Kotlin、Androidの基礎中の基礎から、比較的新しい技術であるComposeにフォーカスを当てた講座など、それぞれにあったレベル間で学習できるのが強みとなっています。

今後Androidをメインで開

元記事を表示

Nexus 7(2012)にAndroid 7をインストールする

Nexus 7(2012)が余っているので、AndroidのカスタムROMをインストールしてみました。
手順としては他のAndroid機種でも大体同じなので、試してみたい人はどうぞ。

なんでこんな古いタブレットをまだ使っているかというと、Androidアプリの実機テスト用です。
パワフルな最新機種で早く動くアプリを作るのは簡単です。
しかし古い(非力な)機種でもある程度の早さで動くアプリを作るには、アルゴリズムやデータ構造の工夫が必要です。
そうゆうテストをするために敢えて古い機種を残しています。

今回はXDAのフォーラムで紹介されているAOSP 7.xをインストールします。

# 1. TWRPのインストール

まずは`Recovery`と呼ばれるプログラムを書き換える必要があります。
`Recovery`は何をするかというと、Androidをリセットするときに元の初期状態に戻すためのプログラムです。

いくつか有名なリカバリーソフトがありますが、`TWRP`が一番有名なのでこれを使いましょう。

Nexus 7の`電源ボタン`と`下ボリュームボタン`を**同時押し**

元記事を表示

今更ながらRiverPodのdependenciesをためしてみた

タイトルの通り、今更ながらRiverPodのdependenciesを試してみたメモです。
※RiverPod 1.0.3で確認
# そもそもdependenciesとは?
https://pub.dev/documentation/riverpod/latest/riverpod/Provider/dependencies.html
かんたんにいうと、ProviderRefからScopedなProviderにアクセスするためのパラメータです。dependenciesにScopedなProviderを指定すると、そのProviderもScopedになりアクセスが可能になります。

“`dart
final scopedValue = Provider((_) => ‘1’);
final valueDependsOnScopedValue = Provider(
(ref) => ref.watch(scopedValue),
// この指定により、scopedValueがoverrideされるとvalueDependsOnScopedValueもscopedになる
de

元記事を表示

AnimatedSwitcherが動かない!というときの対処法

# 結論
これを
“`dart
class _BadWidget extends ConsumerWidget {
const _BadWidget({Key? key}) : super(key: key);

@override
Widget build(BuildContext context, WidgetRef ref) {
return AnimatedSwitcher(
duration: const Duration(milliseconds: 100),
child: Icon(
ref.watch(_shouldShowDetail)
? Icons.keyboard_arrow_up
: Icons.keyboard_arrow_down,
),
);
}
}
“`
こうする
“`dart
class _GoodWidget extends ConsumerWidget {
const _GoodWidget({Key? k

元記事を表示

【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をバックエンドと見立ててタグ制御によるテスト配信を行った。
![overview.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0

元記事を表示

【Android】フォアグランドサービスを作成する

## 概要
フォアグラウンドサービスとは、フォアグラウンドで実行できるサービスのことで、タスクの終了などによりアプリを終了させても動作させ続けることができます。

フォアグラウンドサービスが動いている間はサービスがシステムのリソースを消費し続けている事実をユーザーに認識させるために、専用の通知を通知領域に表示し続ける必要があります。

なお、サービスそのものについては以下の記事を参考にしていただければと思います。

[【Android】サービスの概要とサンプルコード](https://qiita.com/kenmaeda51415/items/c80065a48bd11d26df84)

## 環境
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のような画面を見たことあると思います。
![スクリーンショット 2022-04-18 21.17.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373549/841662f3-c50f-5390-5fdc-bd0366d2eb74.png)
図1

これを図2のように削除していれば、速くなります。削除したいブレークポイントを選んで、deleteキーで削除です。チェックを外すだけではダメです。
![スクリーンショット 2022-04-18 21.18.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373549/48032fda-4a83-35ff-

元記事を表示

OTHERカテゴリの最新記事