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

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

背景付き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-

元記事を表示

Androidスマホと自作機器をUSBで繋ぎたい(Android Open Accessoryのサンプル実装)

# はじめに
こんなときはありませんか?

+ メカとかロボットとかなんか作ったはいいけど、画面作るのがめんどくさい
+ タッチとか音声とか通信とかスマホを使ったほうが早いけど、周辺機器を繋ぎたい
+ スマホと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
こちらの端末を使って実機でのアプリ実行の流れを説明していきます
# 早速

設定→端末情報と進みビルド番号の項目を数回タップします
「デベロッパーになりました」とトーストが表示されるので、確認次第前の画面に戻ります
![Screenshot_2022-04-15-21-19-44-13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2394054/c8fdc29e-dced-758a-2793-b9704db411fb.png)


その他の設定→開発者オプション(①をやっていないと表示されていない可能性があります)と進みます
開発者オプションはオンオフを切り替えることが可能です
![Screenshot_2022-04-15-21-19-51-20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2394054/d1cd6c0

元記事を表示

【Material Design】そういえばDynamic colorってなんだっけ?

## 概要
Dynamic colorは、Google I/Oで話題になったMaterial Youの仕組みの1つです。

ユーザーによって、デバイスやアプリの色が変わるってどういうこと? と思ったり、
何がいいのなど疑問に思うことが多いので、
この記事では、Dynamic colorについての解説しようと思います。

実際に[Material Design 3(通称:M3)](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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2612874/61b9362d-e507-34c3-4931-00c3fef471d6.png)

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

#### 1.RemoteMediatorの設定

基本は、上記`AP

元記事を表示

NCMB Kotlin SDKを使ってTodoアプリを作る(その2 タスクデータの保存)

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の初期化について解説しました](https://qiita.com/goofmint/items/8b0b566ad213a6215d94)ので、今回はタスクデータの保存について解説します。

## 完成版のコード

作成したデモアプリのコードは[NCMBMania/Kotlin_Todo: Kotlin SDKを使ったTodoアプリです](https://github.com/NCMBMania/Kotlin_Todo)にアップロードしてあります。

## ナビゲーションの振り分け

今回は以下のようなナビゲーション

元記事を表示

NCMB Kotlin SDKを使ってTodoアプリを作る(その1 アプリの仕様とNCMBの初期化)

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)にアップロードしてあります。

## ベースについて

今回はKotlin + Jetpack Composeの組み合わせになっています。プロジェクトを作る際には Empty Compose Activity を選択してください。

## Composeについて

元記事を表示

OTHERカテゴリの最新記事