Android関連のことを調べてみた2021年08月13日

Android関連のことを調べてみた2021年08月13日
目次

【Android】Jetpack ComposeでAdMobのバナー広告を表示する

Jetpack Composeを使ったアプリで、[AdMobのバナー広告](https://developers.google.com/admob/android/banner?hl=ja)を表示する方法です。

↓のような感じで、画面下部にバナーを表示します。

# :file: コード

現時点(2021/08/13)では、Jetpack Compose用に用意されたAdMobのバナー広告( `AdView` )はなさそうなので、 `AndroidView` を使って対応しています。
(既存のViewも使えるので `AndroidView` 便利ですね :relaxed:)

“`kotlin
@Composable
fun SampleScreen() {
Scaffold {
Column {

元記事を表示

【Android】Jetpack DataStoreのproguard設定(Proto DataStore編)

[Jetpack DataStore](https://developer.android.com/topic/libraries/architecture/datastore) の **Proto DataStore**(`androidx.datastore:datastore`)を使ったアプリで、難読化を有効にした場合にクラッシュが発生したので、proguard設定をメモがてら記載したいと思います。

※ エラーの内容は下記で、いかにも難読化の設定が不十分っぽい感じがしました。

“`
java.lang.RuntimeException: Field showCompleted_ for e1.a not found. Known fields are [public boolean e1.a.i, public int e1.a.j, public static final e1.a e1.a.k, public static volatile k2.a1 e1.a.l]
“`

# proguard設定
下記の内容を、proguardに記述すればOKでした。

“`p

元記事を表示

Influxdb-client-kotlinを使ってみた

InfluxDBを使ってみたかったので、AndroidからKotlin SDKでwrite/readを試してみた。

## 準備 Clientライブラリの追加

ライブラリを追加する

“`gradle:app/build.gradle
implementation “com.influxdb:influxdb-client-kotlin:3.1.0”
“`

ライブラリバージョンは以下で確認できる。
2021/08/12時点では 3.1.0 が最新
https://github.com/influxdata/influxdb-client-java/tree/master/client-kotlin

## 実装

Androidで実装しているので、
View → Repository → ApiClientWrapper の順になるよう実装していく。
(ViewModelは ~~面倒~~ サンプルなのでスキップした)

### View
“`kotlin:MainActivity.kt
// 本来はDIすべき
val repositor

元記事を表示

Androidアプリを作成しCI上でE2Eテスト自動化までを1からやってみた

## はじめに
1から簡単なAndroidアプリを作成し、それに対するE2EテストをAppiumで自動化しCI環境で実行できるようにする所までをやってみたのでその備忘録を残しておく。

構築したアプリ・e2e自動テストのコード・CIパイプラインのコードは以下のGitHubにある。
(ブランチで作成したアプリがそれぞれ分かれている。)

https://github.com/yuta-katayama-23/mobile-app-e2e-test

## 内容
セクションは大きく3つで、

– アプリの実装について([Androidアプリを作成する](#androidアプリを作成する))
– e2eテスト自動化のソースコードの実装について([AppiumによるE2Eテスト](#appiumによるe2eテスト))
– CI上での自動テスト実行について([CI](#ci))

に分かれている。

## Androidアプリを作成する
### アプリの実装
[Androidアプリのdeveloper向けのサイト](https://developer.android.com/)にある公式チュート

元記事を表示

プログラムでPetalマップの場所情報を検索する方法

次のソースコードを使えば、Petalマップで特定な場所の情報を検索できます。

“`kotlin
val uriString = “petalmaps://poidetail?center={検索場所}&marker={検索場所}”

Uri.parse(uriString)?.let { uri ->
Intent(Intent.ACTION_VIEW, uri).let { intent ->
if (intent.resolveActivity(requireContext().packageManager) != null) {
startActivity(intent)
}
}
}
“`

# GitHub
Petal Map Sample : https://github.com/Rei2020GitHub/MyPublicProject/tree/master/PetalMapSample

元記事を表示

プログラムでPetalマップのルート検索機能を使う方法

次のソースコードを使えば、Petalマップでルート検索ができます。

出発地:場所名または経緯度(Longitude,Latitude)
到着地:場所名または経緯度(Longitude,Latitude)
移動手段:drive、walk、bicycle、bus

“`kotlin
val uriString = “petalmaps://route?saddr={出発地}&daddr={到着地}&type={移動手段}”

Uri.parse(uriString)?.let { uri ->
Intent(Intent.ACTION_VIEW, uri).let { intent ->
if (intent.resolveActivity(requireContext().packageManager) != null) {
startActivity(intent)
}
}
}
“`

# GitHub
Petal Map Sample : https://github.com/Rei2020GitHub/M

元記事を表示

プログラムでPetalマップの場所検索機能を使う方法

次のソースコードを使えば、Petalマップで場所検索ができます。

“`kotlin
val uriString = “petalmaps://textSearch?text={場所検索のキーワード}”

Uri.parse(uriString)?.let { uri ->
Intent(Intent.ACTION_VIEW, uri).let { intent ->
if (intent.resolveActivity(requireContext().packageManager) != null) {
startActivity(intent)
}
}
}
“`

# GitHub
Petal Map Sample : https://github.com/Rei2020GitHub/MyPublicProject/tree/master/PetalMapSample

元記事を表示

プログラムでPetalマップの近辺情報を検索する方法

Nearby Place Searchはユーザーの位置に基づく場所検索機能です。
次のソースコードのように、キーワードを渡せば検索できます。

“`kotlin
val uriString = “petalmaps://nearbySearch?text={Nearby Place Searchのキーワード}”

Uri.parse(uriString)?.let { uri ->
Intent(Intent.ACTION_VIEW, uri).let { intent ->
if (intent.resolveActivity(requireContext().packageManager) != null) {
startActivity(intent)
}
}
}
“`

# GitHub
Petal Map Sample : https://github.com/Rei2020GitHub/MyPublicProject/tree/master/PetalMapSample

元記事を表示

Kotlin Jetpack Compose について その1

#はじめに
久しぶりにAndroidアプリの手入れをしたらJetpackComposeの仕様がかなり変わっていたので忘備録として記事にします。
まだ正式にリリースされたわけではなく、変更があるかもしれませんのでご注意ください。
公式ドキュメントを軽くまとめたものになります。

#Jetpack Composeとは
去年か一昨年くらいにAppleからSwiftUIが発表されました。それのAndroid版です。
通常、Androidアプリを作成するときは、**xmlファイル**と**kotlinファイル**の2つのファイルを使って作成するかと思いますが、
Jetpack Composeを使用すると、UIの全てをコードで作成することができます。

##開発環境
– iMac 2019
– Android studio Arctic Fox | 2020.3.1
– Kotlin Jetpack compose 1.0.0-rc02(正式リリースの可能性あり)

##基本

“`Kotlin
class MainActivity : ComponentActivity() {
ove

元記事を表示

[Android]annotationタグを使ってstrings.xmlで文字列を装飾する

Android で文字列を装飾したい場合、XML ファイルで文字列を定義する際にいくつかの HTML タグがサポートされています。
例えば以下のように設定してみます。

“`xml

この部分は太字です。\nこの部分は赤字です。\nこの部分は取り消し線です。

“`

“`xml

“`

すると、以下のように文字列が装飾されて表示されるようになります。

kaptからkspに変わるとどれくらい早くなるのか〜Room編〜

# kaptとは

“`
Annotation processors (see JSR 269) are supported in Kotlin with the kapt compiler plugin.
“`
Javaのannotation processingをkotlinで使えるようにするcompiler pluginのことです。

# kspとは
“`
Kotlin Symbol Processing (KSP) is an API that you can use to develop lightweight compiler plugins. KSP provides a simplified compiler plugin API that leverages the power of Kotlin while keeping the learning curve at a minimum. Compared to KAPT, annotation processors that use KSP can run up to 2x faster.
“`

kspは

元記事を表示

Android Kotlin オプションメニューを表示させる

#はじめに
今回は画面右上にオプションメニューを表示させていきます。

![スクリーンショット 2021-08-11 22.51.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704865/7fbe9733-02e2-07ed-c118-54c62f709b11.png)

##オプションメニュー
画像右上がオプションメニューです。
ちなみにこのボタンを押すと、
![スクリーンショット 2021-08-11 22.54.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704865/5c31c9ac-85ab-c87d-89a5-f4aa27b3df77.png)
上記の画像のようにお問い合わせボタンをクリックするとお問い合わせフォームに画面が遷移する様にしていきます

##実装
menuフォルダを作成し、フォルダ内にxmlファイルを作成

“`Kotlin:menu_options.xml

元記事を表示

【Flutter】BottomNavigationBarに4個以上Iconを実装する方法

## はじめに
先日からFlutterを始めた初心者です。
BottomNavigationBarを色々触ってみてるうちに詰まった部分についての備忘録としてメモします。

## この記事で分かること
完成形はこんな感じ
![スクリーンショット 2021-08-11 143614.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1630025/4ccc8663-f21f-b648-e409-23adf4cb0b6d.png)

この記事では主に

– BottomNavigationBarの実装方法
– Iconの増やし方
– Icon一覧サイト

をまとめています。

## BottomNavigationBarを実装しよう
まずは[BottomNavigationBar class](https://api.flutter.dev/flutter/material/BottomNavigationBar-class.html)のサイトにある以下のコードをmain.dartにコピペしてください。(ここでは

元記事を表示

Flutter Androidでflavorを指定したらエントリポイントのmain.dartが自動設定されるようにしたい

# 背景
Flutter で作ったアプリを flutter run や build する際は、以下のように –flavor オプションでビルドフレーバーを、さらに -t オプションを使ってエントリポイントの dart ファイルを指定します。

“`
flutter run –flavor dev -t lib/main_dev.dart
“`

Android Studio でビルド/実行するときはプロジェクトの Configuration でフレーバー名とエントリーポイントの dart ファイルを指定します。

![Screen Shot 2021-08-11 at 14.39.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43781/5e72d612-a1a1-d37f-af9c-2c9b670d4639.png)

しかし、冗長です。単に、フレーバー `hoge` を設定したら自動で `main_hoge.dart` が選ばれてくれないだろうか…。
(※iOSではスキーム毎に.x

元記事を表示

UnityプロジェクトにFirebaseSDK導入後Android Gradleビルドエラー対策

# 環境
Windows 10
Unityバージョン:2020.3.15f2
Android/iOS関係モジュールはUnity Hub経由で導入。

# やったこと
【ゲーム作成】
– 2D Modileテンプレートでプロジェクト新規作成
– Unityプログラミング、実行(動作確認OK)
– player設定>iOS/Androidビルド時の.NETバージョンを4.xに変更
– apkビルド、実行(動作確認OK)
【Firebase導入】
– 公式サイトからfirebase_unity_sdk_8.1.0.zipをダウンロード、解凍。
– 一個ずつインポート…
❌ FirebaseFunctions.unitypackage
こいつをインポートしたら、コンパイル時エラー出まくる。

# ビルドエラー対応
## `Configure project :launcher WARNING: The option setting ‘android.enableR8=false’ is deprecated`
trueでもfalseでもだめです。その行をコメントアウトしないといけない。
【解決

元記事を表示

[Flutter] Android外部ストレージのファイル一覧を取ろうとしたらディレクトリしか取れない

原因は実行時のパーミッション不足で、分かってみたら当然なんだけど、ググったときに事例が見つからずちょっとハマったので、メモとして残すことにしました。

####ディレクトリ内のファイル一覧の取得
“`dart
Directory pDir = Directory(_target);
var plist = pDir.listSync();
for( var p in plist ){
print( p.path );
}
“`
ファイル一覧の取得にはDirectoryクラスのlistSync()とかlist()メソッドを使います。_targetには対象ディレクトリの名前が入ります。AndroidManifest.xmlには外部ストレージのアクセス許可のため、次の記述を入れてあります。

“`xml

“`

ここで _target=”/stora

元記事を表示

FirebaseCrashlyticsのレポート収集&送信をコントロールする

## 概要
iOSやAndroidでクラッシュ情報を収集するために、FirebaseCrashlyticsを利用されている方は多いと思います。
FirebaseCrashlyticsはデフォルトではクラッシュレポートの収集・送信を全て自動的に行ってくれますが、

* ユーザーの同意を得た上で収集&送信をしたい
* 収集&送信をコントロールしたい

など、開発者側でコントロールをしたいというニーズが発生することがあるかと思います。
この記事では、これらのコントロールを行う方法を紹介させていただきたいと思います。

## 前提
本記事はFirebaseCrashlytics 8.0.0 の情報を元に記載しています。
今後のバージョンアップなどにより動作が異なる場合があるので、ご注意ください。

## クラッシュレポートの自動収集を停止する
クラッシュレポートの自動収集を停止するには、以下のいずれかの対応が必要です。

1. `Info.plist` の FirebaseCrashlyticsCollectionEnabled キーに対して、false(Bool

元記事を表示

Android Studioのチェック付きListViewでスクロールするとチェックの状態が変わってしまう(解決)

#チェックの状態が変わってしまう

まず、スクロールするほどのチェックを追加したとして、それでスクロールしたらなぜかチェックの状態が変わってしまうのです。

↑のように、アイテム1がチェックされていない状態でスタートして、

↑のように、アイテム1にチェックを入れます。
【SikuliX】スマホゲームの自動化(ウィンドウサイズ・位置固定)

#はじめに
[前回](https://qiita.com/kazu_kr/items/5865541a3ad05ce810aa)の記事では、スマホゲームを自動化するためのサンプルコードを記載しました。
今回はSikuliXを使用していて発生する問題の解決策を記載していきます。

#発生する問題
SikuliXでは画面上の画像を認識してスクリプトにより操作を自動化します。
しかし、指定した画像サイズが画面上に表示されている画像サイズと違う場合、うまく画像認識されずスクリプトが正しく動作しない場合があります。

例えば、BlueStacksなどのエミュレータではウィンドウサイズを自由に変えることが可能です。
ウィンドウサイズ変更してしまい元のサイズに戻せなくなり、検索画像の取り直ししなければならない状況が発生することがあります。

この事象を解決するため、対象のウィンドウサイズを固定にする方法を検討しました。

#サンプルコード
“`setwindow.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import ctypes

元記事を表示

今更ながらダークテーマ対応

最近になってようやくダークテーマ関連に足を踏み入れたのでまとめてみようと思いました。

## 呼び方
・私も勘違いしていたのですが、Androidはダークモード・ライトモードではなくダークテーマ・ライトテーマと呼ぶそうですね。
参考:[ダークテーマ](https://developer.android.com/guide/topics/ui/look-and-feel/darktheme?hl=ja)

## 色分け
・ライトテーマ(デフォルト)は今まで通りvalues/colors.xmlに定義しておくとして、ダークテーマ用のものはどうすれば良いのでしょうか。答えは簡単で、values-night/colors.xmlを作成、その中に定義しておけばよさそうです。
ただし、ライトテーマ用のcolors.xmlに定義がないものをダークテーマ用のcolors.xmlに定義することはできないようです。あくまでオーバーライドです。

## 基準色
・themeとして設定。以下あたりでしょうか。
>Theme.AppCompat
Theme.AppCompat.DayNight
Theme.Ma

元記事を表示

OTHERカテゴリの最新記事