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

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

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)
– 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でもだめです。その行をコメントアウトしないといけない。
【解決】Project Settings>Player>Android>Publish Set

元記事を表示

[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

元記事を表示

【Android】UI テストに Page Object デザインパターンを適用する

## Page Object デザインパターン

UI テストにおける Page Object デザインパターンとは、1つの画面を1つのオブジェクトとして定義し、画面に対する操作や検証をオブジェクト経由で行う設計指針です。このデザインパターンを適用させることにより、可読性や保守性を向上させることができます。

コードを見た方がわかりやすいと思うので、今回は簡単な具体例で考えてみます。

## ログイン処理の UI テスト

Espresso を使った次のようなログイン処理の UI テストを例に考えます。

“`kotlin
@Test
fun loginSuccess() {
// ユーザー ID を入力
onView(withId(R.id.user_id)).perform(
ViewActions.replaceText(“test_user_id”)
)
// パスワードを入力
onView(withId(R.id.password)).perform(
ViewActions.replaceText(“

元記事を表示

agora SDKを利用し、Android Studioで通話アプリを作成

Vcubeで通話処理をするためのサンプルアプリを作成したので、記録に残します。

# 動作環境

* Android studio 4.1.2
* Windows 10 Pro 20H2

# agora consoleにてApp idを取得
1. [agora console](https://console.agora.io/) にアクセスする
1. 会員登録を行い、consoleを表示する
![画像2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/957268/3e246b2e-6aa4-e01b-651f-3596d9895259.png)
1. Project Managementをクリックし、Createをクリック
![画像3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/957268/e1d317d3-0675-509d-16fc-ae46352f662e.png)

1. プロジェクト名を入力し、認証方法

元記事を表示

【Android】UI テストで RecyclerView のリストアイテムの中にあるビューを操作する方法

## やりたいこと

以下のような RecyclerView で作ったリストに対して Espresso の UI テストを行うことを考えます。

赤枠が1つのリストアイテムです。このリストアイテムの中にある青枠のボタンをクリックする操作を UI テストに組み込んでみます。

## UI テストで RecyclerView を操作する

espresso-contrib パッケージの RecyclerViewActions を使うと ViewHolder が保持している一番外側のビュー(赤枠)を操作でるようになります。

下記の例は RecyclerView の中からポジション 3 のリストアイテムをクリックする操作です。

“`kotlin
onView(withId(R.id.recycler_view)).perf

元記事を表示

FlutterでAndroid向けのSplashScreenを自前で実装する

# 概要
この記事は「**FlutterでAndroid向けのSplashScreenを自前で実装する**」という内容の記事です.

ライブラリを用いて`SplashScreen`を実装する情報は散見されるのですが, Android側の`layout` ファイルを呼び出す`SplashScreen`の実装に関する情報は少ないという印象です.

そこで今回は`SplashScreen`のライブラリを用いず, 自前で実装を行うことで**カスタマイズ性の高いSplashScreenを実装する方法**について紹介していきます.

最終的には, 次の動画のような「**アニメーション**」と「**フェードアウト**」を組み合わせた`SplashScreen`を実装します.

元記事を表示

HMS Coreのバージョンと各HMS Kitとの関係

HMS Coreの各バージョンで利用できるHMS Kitをまとめました。

### App Services
|HMS Kit|HMS Core 2.4以上|HMS Core 3.0以上|HMS Core 4.0以上|HMS Core 5.0以上|HMS Core 6.0以上|備考|
|:—:|:—:|:—:|:—:|:—:|:—:|:—|
|[Account Kit](https://developer.huawei.com/consumer/en/doc/development/HMSCore-Guides/introduction-0000001050048870)|〇|〇|〇|〇|〇||
|[Ads Kit](https://developer.huawei.com/consumer/en/doc/development/HMSCore-Guides/publisher-service-introduction-0000001070671805)|||〇|〇|〇|〇|〇||
|[Analytics Kit](https://developer.hua

元記事を表示

コマンドラインでAndroidアプリをビルドして起動し直す

“`bash
export APPLICATION_ID=com.example.myapplication
./gradlew assembleDebug; adb install -r app/build/outputs/apk/debug/app-debug.apk; adb shell am force-stop $APPLICATION_ID; adb shell monkey -p $APPLICATION_ID -c android.intent.category.LAUNCHER 1
“`

たまにAndroid Studioのことが信じられなくなることがあって、そういう時はコマンドラインで一通りやりたくなる。アプリを起動する時に、Acitivityを指定する必要があるのかなと思ってたけど、monkeyというコマンドがあるのを知らなかった。

元記事を表示

[Android] RecyclerViewを用いてSticky Headerを実装する

##はじめに
RecyclerViewとItemDecorationクラスを用いて、Sticky Headerを実装します。

「Epoxy」等なのどライブラリを利用することで、Sticky Headerを実装することは可能らしいですが、今回は使い慣れてるRecyclerView用いて実装します。

分かりやすくするために、ソースコードにはなるべくコメント残していますので、最後まで見て頂ける嬉しいです。

ソースコードは[GitHub](https://github.com/kosuke-nakazono/Sticky_Header)に上げております。

##そもそもSticky Headerとは?
Sticky Headerとはこのような動きをするリストです。
![2021-08-01_22_24_09.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1830512/d34c3b02-43b6-b5c5-2971-2154cda28294.gif)

## 大まかな流れ

RecyclerViewと

元記事を表示

OTHERカテゴリの最新記事