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

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

iOSのNSTimeZoneのUTCってnameがGMTなんだ..

![GMT_UTC.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152641/ac5ea486-92d4-d55f-c618-9febbf5f2194.png)

AndroidとiOSでTimeZoneのUTCにまつわる調査をしていたところ想定外の結果になったので書き残しておきます。誰か真相を知っていたら教えて下さい。

# GMTとUTCの違い
GMTとUTCの違いをググるとCITIZENの用語集とよくある質問リストが最初に出てくる

https://citizen.jp/faq/detail/id1363

>両者は、目的も概念も算出方法もまったく異なりますが、日常生活に不都合のない精度の時間測定(整数の秒)であれば、ほぼ差がないと考えて問題ありません。

そう、ほぼ一緒と考えてよいということ。日本のAsia/Tokyo(+9:00)より9時間前のタイムゾーンということだ。

# Android(Kotlin)の場合

“`kotlin
import java.util.TimeZone

f

元記事を表示

UnityでAndroidアプリをリリースする下準備

# 本記事のゴール?
– UnityでGoogle Play StoreにリリースできるAndroidアプリビルド環境設定を行うことです。

# 環境
– Unity 2020.3.27f1を使用しました。

# 環境準備に参考にした資料
1. https://learn.unity.com/tutorial/publishing-for-android#
1. 上記のUnity Learnの”Publishing for Android”という記事に従い、Unity用のAndroid設定を行いました。上記ページで使用されているUnityのバージョンが、私が使用しているUnity 2020.3.27f1よりも少々古かったので、所々UIが違いましたが(特にUnityHub)、似たような項目を探して何とかなりました。

## Unity Learnに従って準備→Google Play Store申請時に嵌ったこと
1. Google Play Storeにリリースする際に.aabファイルが必要なので、以下のように”Build App Bundle (Google Play)”のチェ

元記事を表示

[Flutter/Android]「uses-sdk:minSdkVersion XX cannot be smaller than version YY declared in library」のエラー解消

# 環境
Windows 10 Home
Flutter 2.10.2
Dart 2.16.1
Android Studio 4.0.1

# エラー内容
Androidのエミュレータにてビルド時に下記のエラーが発生。

>uses-sdk:minSdkVersion 16 cannot be smaller than version 19 declared in library

「SDKのバージョン19以上じゃないとだめなので(今は16)、`minSdkVersion`を上げてね」ということでした。

# 解決方法
`android/app/build.gradle`の`defalutConfig`の中に、`minSdkVersion`を指定できるのでそこを変更しましょう。

“`gradle:android/app/build.gradle|変更前
defaultConfig {
// …略
minSdkVersion 16
// …略
}
“`

“`gradle:android/app/build.

元記事を表示

Kotlinのyield関数についてまとめてみる

今ままで、KotlinのCoroutineを書いている中での時々登場する、“yield“がなにをやっているのかいまい理解せずになんとなくで、書いていたので“yield“について調べてみました。

:::note info
Sequenceで使う“yield()“もありますが、今回はCoroutineの“yield“についてです
:::

# yield関数とは?
“yield“関数は、KotlinのCoroutineのsuspend関数です。

# yieldを使うとどうなるのか?
“yield“を使うと、例えば複数のCoroutineを同時に実行しているときに、どれか一つが時間のかかる重い処理だった場合に、他のCoroutineに対して実行を譲ることができる関数です。

::: note warn
(コメントで指摘いただきありがとうございます。)
複数のスレッドを持っている場合、スレッドを譲った前と後でスレッドが異なっている場合があるので、そこを注意する必要があります。
:::

コードで書くとこんな感じです。

“`Kotlin
fun main() {

元記事を表示

【Android】Navigationでデータ受け渡しを伴う画面遷移をする方法

# はじめに

皆さん、ごきげんよう!れぶです!

今回の記事では、Android Jetpack系の[Navigation](https://developer.android.com/guide/navigation?hl=ja)を使って、データの受け渡しをしつつ、Fragment間の画面を遷移させる手順を書いていきます。

自身が実装をする上で[公式ドキュメント](https://developer.android.com/guide/navigation/navigation-pass-data?hl=ja)を参照したのですが、個人的に少し理解に苦しんだ箇所がありました。なので、注意すべきことも含めて詳細にまとめていこうと思います。

それでは、参りましょう!!

# この記事の対象者

* Navigationで、画面間のデータ受け渡しを伴う遷移を実現したい方
* Navigationを使った画面遷移の処理は分かるけど、画面間のデータ受け渡しの処理に苦戦している方
* 画面間のデータ受け渡しの処理の手順を知りたい方

ただし、[公式ドキュメント](https://develo

元記事を表示

Unity+Android+OAuth認証の実装方法の紹介

# 1. 前置き
AndroidでOAuthを実装するにあたり、専用ライブラリを使うことが最も簡単な方法です。しかし、当たり前ですが、Android向けのライブラリなので、Unityでは使えません。本稿はUnityでAndroid向けのOAuthを実装する手順を紹介するものです。また、例として、GoogleのOAuthを取り上げます。

# 2. 流れの概要
AndroidでGoogleのOAuthを使用する流れは次の通りです。
1. Custom Tabsを開く
2. Googleの認証画面を表示する
3. Google認証のリダイレクトを受け取る
4. リダイレクトで得られたトークンを使い、ユーザー情報を取得する

下記のリソースを使えば、実装がより簡単になります。

## 2.1. リソースの紹介
### 2.1.1. IdentityModel.OidcClient
IdentityModel.OidcClientはC#向けのOpenID Connect認定済みのOAuth SDKです。netstandard14、デスクトップ.N​​ET、UWP、.NET Core、Xamar

元記事を表示

Firebase Analytics実装方法

# 初めに
今回は、楽にAnalyticsでlogEventを実装できる様にするやり方を備忘録として書いていこうと思います

### 実装方法
まず、イベントを渡す用のクラスを作成します
“`kotlin:
abstract class TrackingEvent(
val key: String,
val parameters: Map = emptyMap(),
)
“`

次に、logEventを実装するためのInterfaceと本実装用のクラスを実装します

“`kotlin:
class TrackingService @Inject constructor(
private val firebaseAnalytics: FirebaseAnalytics
) : TrackingServiceInterface {
override fun track(trackingEvent: TrackingEvent) {
firebaseAnalytics.logEvent(

元記事を表示

[Android]Androidでテストフィクスチャを使う

Android Gradle Plugin 7.1.0 からテストフィクスチャがサポートされたようなので試してみました。

https://developer.android.com/studio/preview/features#test-fixtures

テストフィクスチャはテストに必要な前提条件などを設定したりするためのものです。この機能を使うことによって、テストに必要なオブジェクトの定義やユーティリティメソッドなどを提供することができ、それらを Gradle の各モジュールのテストコードで参照することが可能になります。

今回試したプロジェクトは [こちら](https://github.com/watabee/TestFixturesSample) にアップしています。

# ライブラリモジュールでのテストフィクスチャの設定

Android ライブラリの Gradle モジュールでテストフィクスチャを提供する方法を見ていきます。ここではこのライブラリモジュールを仮に `data` モジュールとします。まずはこの `data` モジュールの `build.gradle` で

元記事を表示

[iOS/Android]FirebaseAuthの電話番号認証(SMS)にてボット判定(reCAPTCHA 検証)をなくす方法

# 概要
この記事ではFirebaseAuthの電話番号認証(SMS)にてボット判定(reCAPTCHA 検証)をなくす方法についてご紹介します。
今回iOS,Androidそれぞれボット判定を消す事が出来たのでそれぞれ解説します!

# そもそもボット判定とは?
以下のような画面を指します。まずこのような画面が表示されたあとに
![スクリーンショット 2022-02-25 11.02.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/49347/a06d2f79-d54f-4d07-8e5d-b14e5c108553.png)

このような画面が出る場合があります。
![l_mm_captcha_05_w290.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/49347/89a1a2e7-ae64-e3c5-d431-334d8a8acb5f.jpeg)

これをユーザにサインアップ、ログインしてもらう度に実施して

元記事を表示

2022年のiOS/Androidの技術をざっくりキャッチアップ

ネイティブアプリにも宣言型UIとかなんかいろいろ入ってきたので、「いい加減そろそろ覚えないとな~~」ってなってる人は少なくないと思ってるんですけれど、一足先に一通り触ったのでどんな感じで学べばいいのかなという参考になればという感じの記事です。

# 宣言型UI

WebにjQueryがもたらされたとき、だれでも簡単に直接DOMを触ってViewを弄れるようになった結果、アプリの大規模化・保守の長期化に伴って手に負えなくなったので、それを解決するためにReact辺りが宣言型UIの思想を生み出した…というざっくりした認識を持ってるんですけれど、合ってるかは知りません。

とまれ、ネイティブアプリにも数周遅れではありますが宣言型UIの流れがきています。

## SwiftUI

SwiftUIの現在の最新バージョンは3です。

どんどん便利になるのはいいことなんですけれど、サポートするiOSのバージョン指定によっては使えない機能とかがあります…。

これは公式のコードなのですけれど、

“`swift
struct Content: View {
@State var model =

元記事を表示

【Flutter】api通信がAndroidでのみうまくいかない件

# 何があったのか?
GitHubApiを使用した通信処理がAndroidでのみ失敗して詰まったので、備忘録を残しておく。

# 解決法
#### AndroidManifest.xmlにネットワーク権限を追加
以下のようにandroid / src / main /AndroidManifest.xmlに\の記述を加えるとネットワーク権限が加えられ、api通信もできるようになります。

“`




“`

# 参考
https://stackoverflow.com/questions/64120563/flutter-android-http-get-never-returns-in-release-mode

元記事を表示

Nature Remo Cloud API + Lambdaで温度を記録して折れ線グラフを表示する自分ち専用のAndroidアプリを作った

Nature Remo Cloud API + Lambdaで温度を記録して折れ線グラフを表示する自分ち専用のAndroidアプリを作りました。
# 経緯

– 我が家ではNature Remoというスマートリモコンを使っており、Alexaやスマホアプリ経由でいろんな家電を操作できるようにしている
– そのNature Remoでは[Nature Remo Cloud API](https://swagger.nature.global/)というものが提供されており、HTTPで簡単に情報が取れるらしい
– 最近エアコン暖房がついててもたいしてあったかくない気がする
– Nature Remoに搭載されている温度センサーの値と、エアコンの稼働状況をAPIから定期的に取得し、保存して見える化すればエアコンが本当に調子が悪いのかわかるのでは?
– 単純に室温の変化が見えたら面白そう
– [気象庁ホームページのリニューアルでアメダスのデータも簡単に取れるようになったらしい](https://mindtech.jp/?p=1754)のでついでに外気温も取得してみよう

# つくった

元記事を表示

ネイティブアプリの初回審査通過に向けて気をつけたポイント(2022年2月版)

# 0. 概要

この度、**新規の**ネイティブアプリをiOS/Androidの両プラットフォームにて**スケジュール通り**にリリース可能な(Apple/Googleによる審査が通過した)状態にすることができました!

※審査時間がとても早かった(通常、初回は2週間ほどを見るのが良いと言われていますが、提出から通過までなんと1営業日…!)というラッキーはありましたが、間違いなく開発チームの努力の成果だと思っています!

チームの中でも私個人は今回、技術的な側面ではなく、アプリが審査基準を満たせているか?審査提出に必要なタスクは何か?といった側面において、リスク回避に努めました。スケジュール通りに何かを成し遂げる際は「不確定要素」をどれだけ減らしていくかといったことが重要だと思いますが、アプリのサービスリリースにおいて最大の不確定要素は「審査でのリジェクト」になるかと思います。今回得た知見で、どなたかの「不確定要素」を減らす手助けが出来れば…!という気持ちです。

# 1. 公式のガイドラインを読む

兎にも角にもまずは公式のガイドラインを読みました。入り口が分かりづらかったり、各所

元記事を表示

【AndroidStudio】xmlにあるandroidとかtoolsとかappの違いって何?

# xmlにあるandroidとかtoolsとかappの違い
xmlには以下の画像のようにandroidとかappとかtoolsという名前空間?が存在します。
これらは何を表していて、お互いどのように違うのでしょうか。

# 調べる
調べてみるとtoolsに関しては公式ドキュメントで以下の通りに説明されていました。
>Android Studio では tools 名前空間でさまざまな XML 属性がサポートされており、これを使用して設計時の機能(フラグメントに表示するレイア

元記事を表示

Android12のバックグランドからのフォアグランドサービス起動制限が起きそうで起きない件を調べた話

# 概要
targetSdkversionを31に上げて影響を調査していたときの話です。バックグランドからのフォアグランドサービス起動制限の影響を食らうだろうと思っていたのにテストしてみたら全然クラッシュしませんでした。理由がわからないと不安なので、時間の許す範囲で調べてみました。

# 条件・環境
端末:Pixel6
OS:Android12

# 経緯
ドキュメントを見るとバックグランドからフォアグランドサービス起動時はForegroundServiceStartNotAllowedExceptionがスローされるとあります。

https://developer.android.com/guide/components/foreground-services#background-start-restrictions

しかし、バックグランドからのフォアグランドサービス起動をテストしても狙ったところでこの例外は発生せず、意図しないところで発生しました。

# 調査方法
Androidのソースコードを見ていると起動中のサービスについての情報がServiceRecordなるものに書か

元記事を表示

【Appium】自動テストがしたいのにAndroid Chromeのようこそ画面が邪魔

## 事の発端

業務でウェブアプリの自動テストの需要が高まってきたので、Appiumの環境構築をして動作確認をしていた時の話です。

なんとかPC版Chromeで動作するようになったので、じゃあAndroid実機でも!と思い実行。

Welcome

**これじゃテスト動かんやん!なんでや!!**

でも新品の端末買ってきた、みたいな新鮮さだけはある。

【環境】
– Mac OS 12.2.1
– Android 12(実機Pixel 3a)
– Appium 1.22.2(CUI)
– Python3.6

## 解決法

capabilitiesに`appPackage`と`appActivity`ではなく、`browserName`を使用する。

“`python
driver = webdriver

元記事を表示

build.gradleをbuild.gradle.ktsへ移行したい!

[ビルド構成を Groovy から KTS に移行する](https://developer.android.com/studio/build/migrate-to-kts?hl=ja)のドキュメントによると、
> Kotlin の方が可読性が高く、コンパイル時のチェックと IDE サポートが優れているため、今後、Gradle スクリプトの記述には Groovy よりも KTS が優先されます。

とあります。今後はGroovyのビルドスクリプトよりもKotlinビルドスクリプトの方が主流になっていくものと思われます。

とはいえ、未だにAndroid Studioで新規作成したプロジェクトはbuild.gradleで作られるし、Groovyのスクリプトで運用している開発環境はたくさんあると思います。
Android StudioではJavaからKotlinへは自動変換できますが、GroovyのビルドスクリプトをKotlinに変換する機能はまだありません。そのため、移行は手動で行う必要があります。

移行方法は上記リンク先にも記載がありますが、ビルドスクリプトの一部分しか紹介されていな

元記事を表示

Play console上のFlutterアプリ更新手順メモ

#バージョンを更新
pubspec.yaml内のバージョンを更新する

“`
version: 1.0.0+3
“`

#Appbundleファイルを作成する
“`
$ flutter build appbundle
“`

下記フォルダにaabファイルが作成される
build\app\outputs\bundle\release\app-release.aab

#Play Consoleにファイルアップロード
製品版 → 新しいリリースを作成 → AppBundle内にアップロード
リリースの詳細に修正箇所などを記載
保存 → リリースのレビューを確認

確認して公開で完了

元記事を表示

【Android/iOS】Webブラウザのアドレスバーを非表示にする方法

#はじめに
Android/iOSのWebブラウザのアドレスバーを非表示にする方法です。
ネットで調べて出てくることには出てくるのですが、なかなかたどり着かなかったのでQiitaに投稿しておきます。

#やりたいこと
据え置きのタブレット端末でWebアプリを動作させるときに、アドレスバーを非表示にしたい。

調べたところ、Webブラウザの設定でフルスクリーン(アドレスバー非表示)にするのは無理そう。
(フィッシングサイトによる悪用などを考慮している?)

**Webブラウザの設定変更以外の方法でアドレスバーを非表示にしたい。**←今回やりたいこと

#結論
以下のサイトを参考にしました。
[[HTML5] フルスクリーンの開始と解除](https://blog.katsubemakito.net/html5/fullscreen)

対象ページのheadタグ内に以下のmetaタグを記述します。

“`html

OTHERカテゴリの最新記事