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

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

CognitoのユーザIDを取得(Amplify, Android)

# Amplifyで認証完了後に実行
“`kotlin:
Amplify.Auth.currentUser.userId
“`

# 実装例
“`kotlin:
// session確認
Amplify.Auth.fetchAuthSession(
{
// Sessionがある場合
var userId = Amplify.Auth.currentUser.userId
binding.userId = userId
},
{
error -> Log.e(“AmplifyQuickstart”, “Failed to fetch auth session”, error)
}
)
“`

元記事を表示

BottomSheetDialogFragment + GoogleMapで表示が崩れる問題を解決する方法

# はじめに
今回はBottomSheetDialogFragmentの中にGoogleMapを実装した際に発生した問題の解決方法を紹介します。

# 発生した問題
下記の動画のように、BottomSheetDialogFragmentをバックキーで閉じる際に、GoogleMapの表示が崩れるという問題が発生しました。

# 実装概要
実装していたコードの概要は下記の通りです。
GoogleMapには[googlemaps/android-maps-compose](https://github.com/googlemaps/android-maps-compose) を使用していました。

“`BottomSheetFragment.kt

override fun onCreateView(

元記事を表示

EditTextとTextViewを組み合わせて金額入力風なUIを実装してみる

### はじめに
このようなUIを表現しようと思い、実装を試みたところ以外と面倒臭かったのでログとして残しておこうと思います。
2022-03-31 19.28.38.png
まず、EditTextで単純に実現ができるかなと思ったところ、先頭にある通貨表記や3桁ごとに入る`,`の対応を考えたところ`edittext.addTextChangedListener`を使って入力された値を監視して実装をしようと思ったのですが、結構苦戦しました。まず金額なのでInputTypeが数値になるのですが、通過表記や`,`を入れるため入力をパースして1つ目を入力されたら通過表記をいれ、3桁目には`,`をいれれば良さそうですが削除が入ったりするとどうもうまくイメージ通りに動作しませんでした。

### どうしたか
`edittext

元記事を表示

AWS Amplifyを用いたAndroidでのGoogle認証

# Google認証プロバイダーの作成
以下のAmplifyのドキュメントを参考に実施してみました。
https://docs.amplify.aws/lib/auth/social_signin_web_ui/q/platform/android/
## 同意画面の作成
1. Googleデベロッパーコンソールを開く
https://console.cloud.google.com/apis/dashboard

1. [▼](プルダウン)を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162829/50758d14-79e3-cbd7-b28f-1d3a3c9aa52b.png)

1. [新しいプロジェクト]を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162829/ae5a4ef3-4afb-a2bd-97f8-ab4579224b50.png)

1. [プロジェ

元記事を表示

【ユーザーインタラクション編】 2022年だしそろそろAndroidアプリ開発を始めてみる (4/4)

この記事はPart4です。Part3(API通信編)は[こちら](https://qiita.com/tkhskt/items/e491f389ff9ba0563fda)をご覧ください。
Part4では、ユーザーが入力した値を使って記事を検索する機能を実装します。

## レイアウトの編集

`MainActivity`のレイアウト(`activity_main.xml`)に入力フォームと検索ボタンを追加します。

“`xml

【API通信編】 2022年だしそろそろAndroidアプリ開発を始めてみる (3/4)

この記事はPart3です。Part2(UI実装編)は[こちら](https://qiita.com/tkhskt/items/f354a7da6c6270107f62)をご覧ください。
Part3では、Web APIからデータを取得してアプリに反映させます。楽しくなってきた。

## Web API通信実装の準備

Web APIからデータを取得するため、いくつかのライブラリを導入します。
`app/build.gradle`にライブラリの設定を追加します。

“`gradle

dependencies {
….

// REST APIを使うためのライブラリ
implementation ‘com.squareup.retrofit2:retrofit:2.9.0’

// JSONをKotlinのオブジェクトに変換するためのライブラリ
implementation “com.squareup.retrofit2:converter-moshi:2.9.0”
implementation “com.squ

元記事を表示

【UI実装編】 2022年だしそろそろAndroidアプリ開発を始めてみる (2/4)

この記事はPart2です。Part1(環境構築編)は[こちら](https://qiita.com/tkhskt/items/084e451c9ba5c9c1cf21)をご覧ください。
Part2では、実際にアプリを作り始めます。
データをごにょごにょするよりも、先に見た目がいい感じになる方がテンションが上がると思うので、UIの実装から始めます。

## UI実装の準備

### AndroidManifest.xml

そういえばUI実装の前にやっておかなきゃいけないことがありました。
今回作成するアプリでは、インターネット上にある画像を表示します。
インターネット通信を使用するAndroidアプリでは、`AndroidManifest.xml`に設定を追加する必要があります。(インターネット通信を使用しないアプリでは設定不要です)

`AndroidManifest.xml`は`app/src/main`にあります。

![スクリーンショット 2022-03-29 2.11.41.png](https://qiita-image-store.s3.ap-northeast-1.am

元記事を表示

【環境構築編】 2022年だしそろそろAndroidアプリ開発を始めてみる (1/4)

この記事は、Android開発の難しい部分を端折ったゆる〜いチュートリアル記事です。
この記事でAndroid開発に興味を持ってもらえたら泣いて喜びます。
この記事はPart1です。Part1では、Androidアプリを開発するための環境構築をします。

## 対象者

この記事は「Androidアプリ作りたいけど難しそうだな〜」と感じている人向けです。
多少のプログラミング経験と、JavaやKotlinをある程度理解していると進めやすいと思います。

## ゴール

この記事では、MediaWiki APIを使用して、Wikipediaの記事一覧を表示するアプリを作成します。

この記事で作成するアプリのコードはGitHubで公開しています。
https://github.com/tkhskt/WikiClient

> 記事内で登場するコードではimport文などは記載していないので、各ファイルのimport文はGitHubに公開しているサンプルを参考にしてください。

実装する機能はざっくりこんな感じです。シンプルですね。

– 記事のリスト表示
– 記事の検索

技術的なポイン

元記事を表示

ComposeViewとAbstractComposeViewの使い分け

ここ最近採用されることが多くなってきたJetpackCompose(以下Composeと呼びます。)ですが、xmlで作成していたり、Javaで記述されているような既存UIを一括で移行していくことは難しい場面が多いです。

そこで、[GoogleDevelopersの記事](https://developer.android.com/jetpack/compose/interop/compose-in-existing-ui?hl=ja)でも紹介しているような、部分的にCompose移行していく方法が挙がってくるかと思います。

方法としてはComposeViewを使う方法と、AbstractComposeViewを使う方法と2パターンあります。
いざコーディングしてみると、両者ともやっていることは「Composeを既存UIに当て込むための橋渡し」であり、使い分けの判断がよくわかりませんでした。

色々記事を読んだり、色々実装を試してみた上で、「こういうことかな?」という使い分けの判断を持つことができたので、メモ書きしておきます。

# 結論(個人的見解)
### AbstractC

元記事を表示

xmlのshapeタグって意外と自由度が高いっていう話 part1

# 初めに
今回からxmlの`shape`タグで使えるものをシリーズ化して紹介していこうと思います。
トップバッターは最も使われているであろう要素である`corners`です。

## 本文
こちらは、その名の通り角丸にすることができます。
`dp`を値として渡し、渡した値が角丸の半径になります。
`corners`と言っても要素として一括で角丸を指定する`radius`と各種四隅ごとに設定できる`topLeftRadius`等があります。
こちらを使用することで下記の様なViewを作れます

“`xml





“`
![スクリーンショット 2022-03-31 17.19.04.png](https://

元記事を表示

2種類のaarファイル作成方法とその違い

## 背景
AndroidStudioでaarファイルを作成しようとした際、利用できる2つの方法のうち片方では成功、片方では失敗となることがありました。
同じことをしていると思っていましたが何かが違うようだということで、その違いについて調べました。

・環境
AndroidStudio:Android Studio Bumblebee | 2021.1.1 Patch 1
Gradle:7.2

## aarファイルとは
拡張子.aar、aar(Android ARchive)形式のライブラリファイルで、Androidアプリモジュールの依存関係として使用されるファイルです。
Androidライブラリモジュールをコンパイルすることで作成できます。
単体では動きませんが簡単に追加や交換ができ、必要なaarファイルを組み込むことで簡単に複数パターンのアプリを展開できる特徴があります。
役割のイメージとしては、コッペパンの中に入れるあんこやバター、ジャムがaarファイルです。
コッペパンはジャムだけを入れて食べる場合もあれば、あんことバターを入れて食べる場合もあるように、aarファイルもアプ

元記事を表示

【Flutter】freezedでネストさせるとき

freezedでネスト構造のAPIレスポンスをパースするときに行ったことを共有します。

## 前提
以下、[こちらのOpenWeatherAPI](https://openweathermap.org/current)の例で書いてます。

以下でAPIを叩くと
“`
https://api.openweathermap.org/data/2.5/weather?q=Tokyo&appid=${appId}
“`

こんなレスポンスがもらえます。
“`
{
“coord”: {
“lon”: 139.6917,
“lat”: 35.6895
},
“weather”: [
{
“id”: 800,
“main”: “Clear”,
“description”: “clear sky”,
“icon”: “01n”
}
],
“base”: “stations”,
“main”

元記事を表示

Android でマイナンバーカードにアクセスしてみた

# まえがき
マイナンバーカードを作ったもののイマイチこのカードで何ができるのか、そもそもこのカードは一体ナニモノなのか分からない。でもまぁマイナポイントもらえるから別にいっか!・・・ちょっと前まで私はそんな人間でした。ごめんなさい反省してます許して!
でも確定申告の電子申告をやってみたら、なんと手持ちの Android スマホ+マイナンバーカードで個人認証できるじゃないですか。え、このカードってそういうものなの!?実はめっちゃ便利なものなんじゃない??となったわけです。

というきっかけから、そもそもマイナンバーカードとは何なのか、どんなことができるのかを技術的な観点から調べてみました。また実際に Android 端末からアクセスする方法も調べてデモアプリも作ってみました。この記事ではそれら調べたことをまとめています。デモアプリも併せて公開します。

# サンプルアプリ

https://github.com/ishihatta/mynacard-android-demo

![app_ss.png](https://qiita-image-store.s3.ap-northeast

元記事を表示

MTGのカード検索アプリを作る with AAC

# はじめに
MTG(Magic: The Gathering)のAPIを使うことで、カードデータを取得することができます。
今回はそのAPIを使ってカード検索をするAndroidアプリを作りました。
ついでに一からアプリを作るということで、Android Architecture Components(AAC)での設計、実装をしました。

# 使ったAPI
[Magic: The Gathering API](https://docs.magicthegathering.io/)
MTGのカードやフォーマット等の情報を取得することが出来るAPI。
取得できる情報量が多い + 多言語のカードも取得できるAPIになっています。

このAPIは`https://api.magicthegathering.io//`の形式でのREST APIを提供しているので、今回はこちらを使って以下のリクエストでカード検索を行いました。

“`
https://api.magicthegathering.io/v1/cards?language=japanese&n

元記事を表示

Mi 11Lite 5Gのナイトモードを解除する

### 1.はじめに
MIUIやColor OSなど、中華スマホに搭載されているAndroid OSにはナイトモードのON/OFFを操作する項目が無く、ナイトモードがONになるとスマホ単体では初期化以外に解決する方法がありません。

今回OSアップデートを実施したところ、半年ほど前に無効化したはずのナイトモードが有効になったため、忘備録も兼ねて書いておこうと思います。

### 2.必要なもの
– スマホ
– PC
– USBケーブル

### 3.手順
1. PCにAndroid開発ツールを導入するか、[15 seconds ADB Installer](https://forum.xda-developers.com/t/official-tool-windows-adb-fastboot-and-drivers-15-seconds-adb-installer-v1-4-3.2588979/)を用いてadbコマンドが実行出来る状態にする
1. スマホの開発者オプションを有効にする
1. 設定を開く
1. デバイス情報に入る
1. MIUIバージョンを連打

元記事を表示

[Android] Navigationの基礎の基礎

# はじめに
今回はAndroid JetPackのNavigationについてまとめました。
「これからNavigationに移行しようと思ってるけどどうやれば…」
「Navigationってそもそもなんぞや」
という方向けの記事になります。

# Navigaiton とは
アプリの画面遷移をサポートするライブラリです。
特徴として、
– アプリの画面遷移を手軽に実装できる
– 視覚的に画面遷移の動線を確認できる
– GUIから設定が可能
があり、かなり直感的に画面遷移の設定をすることができます。

# サンプルアプリ
Navigationの基礎機能を確認するためにサンプルアプリを取得しましょう。
今回は[architecture-conponents-sample](https://github.com/android/architecture-components-samples)の中にある[NavigationBasicSample](https://github.com/android/architecture-components-samples/tree/main/

元記事を表示

「 DataBinding やり方 」

# この記事は
今更だけど、`DataBinding`のやり方をまとめます。
実はDataBinding理解できるようになったのつい最近で、いまだに過去の自分の実装を見ながら、おぼつかない手付きでコード書いているので、そろそろQiitaにまとめた方がいいなと思いました。

なーんでこんな覚えられないんだろうな〜。

# DataBindingとは
`DataBinding`とは、**変更されたデータをコードからUI側(View)へ伝える**ためのライブラリです。
似たようなライブラリに`ViewBinding`もあります。
`DataBinding`と`ViewBinding`の違いは[こちら](https://qiita.com/mi_iroha/items/dbc07737e81776e05f8d#%E8%BF%BD%E8%A8%98databinding%E3%81%A8%E3%81%AE%E9%81%95%E3%81%84%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)を参考にしてください。

# DataBindingのやり方
では実際のコードを見つ

元記事を表示

リモートテストキットの基本機能チュートリアル

# 前言
これは、NTTのリモートテストキットの6年ぶりのレビューです。 6年前なので、ウェブサイト操作のスクリーンショットのスクリーンショットも撮りました。 私のXiaomi電話に保存されたスクリーンショットがこのようなものであるため、それは残念です。 今日韓国のウェブサイトのドキュメントから申し込みます。 トライアルアカウントの取得に成功しました。 記事のウェブサイトに公開します:relaxed:
# リモートテストキット(Remote Testkit)とは
NTTとappkitboxが共同開発したプラットフォームです。 プラットフォームサーバーは日本と韓国をカバーしています。 androidstudioおよびxcodeデバッグ機能をサポートします。 また、デバッグ用の複数の開発プラットフォームソフトウェアもサポートしています。 最新モデルをカバーしています。 新しいバージョンのWebページは、同時に表示および使用する5つのデバイスもサポートしています。
# 利用条件
アクセス [Remote testkit](http://appkitbox.com)
アカウントにはサブスクリプ

元記事を表示

AndroidのFirebase Dynamic Linksをお試し

Android12からhttpsでのディープリンクができなくなったという記事を見たこともあり、今後はhttpsでのアプリ起動する場合、FirebaseのDyanamic LinksもしくはAppLinksが必要そうだったので調査しました。

その記事は[こちら](https://doordash.engineering/2022/01/25/your-deep-links-might-be-broken-web-intents-and-android-12/)

まずはFirebaseのDynamic Linksについて調べてみたのでまとめです。

1.Firebase Dynamic Linksとは?

Android,iOSの両方の端末でURLをクリックした際に、アプリを起動できます。その際にアプリがインストールされていない場合、GooglePlayStore、AppStoreの該当ページに遷移したり設定したページへの遷移なんかができたりします。
URLSchemeと違って、起動時に複数のアプリが存在する場合にはアプリ選択画面が出てくることなく、該当のアプリを直接

元記事を表示

【Android Test】特定のViewが表示されるまで待機+RootViewWithoutFocusExceptionの対策

# Viewが表示されるまで待機する
ユーザの操作に応じてメッセージを表示するDialogを表示したり、別のActivityへ移動したりと新しいViewを表示するケースは多々あると思います。この挙動をUIテストで確認しようとすると、特定のViewが表示されるまで待機するようなActionが必要となります。

実装例
1. 引数`Matcher`で待機するViewを指定する
2. `onView()`
3. 取得した`ViewInteraction`に対応するViewが存在するか確認する
関数`isExists()`は [StackOverflow – Espresso does not wait until dialog is shown and fail](https://stackoverflow.com/questions/42766596/espresso-does-not-wait-until-dialog-is-shown-and-fail)を参考に実装
4. Viewが存在しない場合は一定時間待機して再度2.から繰り返す
“`kotlin
fun

元記事を表示

OTHERカテゴリの最新記事