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

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

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

元記事を表示

APIを叩いて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&nam

元記事を表示

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

元記事を表示

キミがGroupieを使うワケ。

# この記事は
なぜ生のRecyclerViewではなく、Groupieを使うのか。
Groupieを選択することによる利点を、具体的なアプリを用いて説明していきます!

# 例とするアプリ:ZOZOTOWN
注意:わたしはZOZOのエンジニアではありません!ただのファッション大好きエンジニアです! :bow:

わたしが個人的にZOZOTOWNのUIを真似て画面構成の練習をしていることと、ZOZOTOWNで実際にGroupieが使われているかどうかは置いといてGroupieの利点の説明をするのに分かりやすい画面になっていると考えたので、例としてあげる事にしました。

今回はZOZOTOWNの中でも、特にホーム画面に着目していきましょう。

なんか著作権的なアレがアレかもなので、画面のスクショではなくわたしのラクガキを見てください :bow:

元記事を表示

Ionic+ReactでNFCタグを読み取れるアプリを作る

## 必要な条件

このチュートリアルでは, アンドロイドアプリを作っていきます。同じ手順でiPhoneアプリも作れるはずですが、テストしてみたことはありません。 Ionicは、Angular、Vue、React、およびvanilla Javascriptで使用できます。 でも、このチュートリアルでは、React/Typescriptと一緒にIonicを使います。 チュートリアルに沿っていくには、次の条件が必要になります:

– android studio
– VsCode (他のIDEでも良い)
– Node (npm)
– Reactの基礎知識
– Typescriptの基礎知識

## 準備

コマンドラインを使用してionicCLIをダウンロードします: `$ npm install -g @ionic/cli`

IDEでIonicアプリを入れたいフォルダを開きます。 IDEのターミナルで、`ionic start`を実行します。アプリ作成ウィザードを使用するかどうか表示されるので、`Y` (yes)を選びます。初めて使う方は、アカウントを作る必要があります。良ければ、簡

元記事を表示

【macOS】Flutterの環境構築【iOS / Android対応】【4つの手順】

# はじめに
「Flutter SDKのインストール」から「iOSとAndroidでFlutterアプリを実行」までを、以下の手順で解説します。

1. Flutter SDKのインストール
1. シンプルなFlutterアプリの作成
1. iOSでFlutterアプリを実行
1. AndroidでFlutterアプリを実行

# 環境
OSはmacOSを利用します。macOS以外ではiOSの環境構築ができないためです。

FlutterのインストールとアップデートにGitが利用されているため、事前にXCodeをインストールしておくことをお勧めします。
[Webダウンロード](https://developer.apple.com/xcode/) / [Mac App Store](https://apps.apple.com/us/app/xcode/id497799835)

Homebrewを利用するため、事前にHomebrewをインストールしておくことをお勧めします。
[インストール方法](https://qiita.com/zaburo/items/29fe23c1ceb60

元記事を表示

Execution failed for task ‘:app:kaptDevelopDebugKotlin’. > A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution > java.lang.reflect.InvocationTargetException (no error message) というエラーが出た時

# 初めに

ビルド実行時に AndroidStudioで

>Execution failed for task ‘:app:kaptDevelopDebugKotlin’.
> > A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution
>  > java.lang.reflect.InvocationTargetException (no error message)

というエラーが発生した時の対処をここに残します
※エラー自体を解消するものではありません、エラーの内容を把握するためのものです

# 翻訳
> タスク’:app:kaptDevelopDebugKotlin’の実行に失敗しました。
> >org.jetbrains.kotlin.gradle.internal.KaptExecutionの実行中にエラーが発生しました
>  > java.lang.reflect.InvocationTargetException(エラーメッセージなし)

元記事を表示

Android振動のさせ方

今回はAndroidの実装で振動をさせることになったので、やり方を残しておこうと思います。

※こちらAPI level 26以上 API level 31未満のやり方です。
API level 31ではDeprecatedになっており、VibratorManagerを使用します。

# Manifestの設定

AndroidManifest.xmlでVIBRATEの許可します。

“`AndroidManifest.xml

“`

# Activity
“` MainActivity.kt
val vibrator = getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
val vibrationEffect = VibrationEffect.createOneShot(500, 200)
vibrator.vibrate(vibrationEffect)
“`

これで振動できます。

元記事を表示

AndroidStudioのemulatorで’No device definitions are available’や’AVD has terminated’

# 結論
APIを32から31に落とす

元記事を表示

JetPackComposeをマルチモジュールで使ったときのNoSuchMethodError

マルチモジュールでJetpackComposeを使おうとして以下遭遇。

Android: java.lang.NoSuchMethodError

composeを使うモジュールのbuild.gradleに以下が必要でした。
“`build.gradle
android {
・・・
buildFeatures {
compose = true
}
composeOptions {
kotlinCompilerExtensionVersion = “X.X.X”
}
}
“`

モジュール作成時のデフォルトだと設定されないのに気づかず地味にはまったので備忘

元記事を表示

【React Native】位置情報アクセス許可要求とAppStateの相性が悪い件

## はじめに
React Nativeを仕事で扱い始めてから、早半年以上が過ぎました。
いろいろ躓くところはありましたが、一番躓いたといっても過言ではない件を備忘録として残しておこうと思います。

### まず、結論から言わせて
今回根本的な解決はできておりません!!!
実装に合わせた修正をいれて対応したけど、あくまで __「こういった事象が発生したよ。」__ というものになります。

## 位置情報アクセス許可要求とAppStateの相性が悪い件
厳密には相性が悪いという訳ではなく、想定外の動きをしてしまったというのが正しいです。
ちょっと盛りましたね。
※ちなみにAndroidのみで発生。

### AppStateとは?

[React Native公式ドキュメント – AppState](https://reactnative.dev/docs/appstate)

公式ドキュメントを読んでもらったほうが早いですが、アプリがフォアグラウンドにあるかバックグラウンドにあるかを通知してくれるものです。

### AppStateを使用した背景
位置情報を監視したかったのですが、一

元記事を表示

android:layout_width=”0dp”て何?

# この記事は
Androidで画面を構成していく時、`height`や`width`などを指定することは頻繁にあることと思います。

このような時に、多くの場合は、`wrap_content`や`match_parent`を使いますが、たまに`android:layout_width=”0dp”`のような表現を見ることがあります。
ではこれらの違いを見ていきましょう

# wrap_content:子に合わせる
これはその中に入るビューの大きさに任せるよ、という意味です。
つまり、例えば`layout_height=”wrap_content”`で指定されたButtonの中に`layout_height=”100dp”`のTextViewを入れたとします。その場合、Buttonの高さはTextViewに合わせて100dpになります。

# match_parent:親に合わせる
これは、親(1つ上のビュー)の大きさに合わせるよ、という意味です。
例えば、`layout_height=”100dp”`としているButtonの中に`layout_height=”match_paretn

元記事を表示

Flutter環境構築(Mac Intel-chip)

基本的には下記の記事通りでよかったけど・・・。

https://qiita.com/ruru9yoonsic/items/1d21826f9b591577d307

最後に一つだけWarningが残ったので備忘。
警告内容は以下。

:::note warn
Android toolchain – develop for Android devices (Android SDK version 32.1.0-rc1) ! Some Android licenses not accepted. To resolve this, run: flutter doctor –android-licenses
:::

以下を実行して、y/Nと聞かれるので全て「y」を選択。

~~~.zsh
flutter doctor –android-licenses
~~~

その後、再度以下を実行
~~~
flutter doctor
~~~

No issues found!

元記事を表示

OTHERカテゴリの最新記事