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

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

AARファイルを依存関係に追加する方法(Kotlin)

## はじめに

AAR形式のライブラリをAndroidアプリのプロジェクトに追加する方法を紹介します。

## 「AAR」とは?

「__A__ndroid __AR__chive」の略で、Androidライブラリのことです。

構造上はAndroidアプリモジュールと同じく、ソースコードやリソースファイル、Androidマニフェストなどを含めることができます。
ただコンパイルすると、端末で実行できるAPKファイルではなく、Androidアプリモジュールの依存関係として使えるAARファイルになります。

たとえるならば、WindowsのEXEに対するDLLのようなものです。

JAR形式と比較して、リソースファイルやAndroidマニフェストを含められる点が異なります。

## 環境

– OS:macOS Big Sur 11.5.2
– Android Studio:Arctic Fox | 2020.3.1
– Kotlin:1.5.21
– Gradle:7.0.2
– Gradle plugin:7.0.0

## AARファイルの追加

### AARファイルの格納

A

元記事を表示

Android: 最小のタップ領域サイズは 48dp (UIデザイン, Material Design)

マテリアルデザイン、および Android アプリのデザインには、最適なタップ領域のサイズ (Touch targets) が定義されています。

アプリの実装をするときにはこの最小タップ領域を守って対応しましょう。デザインの段階からこのタップ領域を意識する必要があります。

## 結論

推奨される最小のタップ領域のサイズは 48dp です。

アイコンやボタンの見た目のサイズが 48dp より小さくデザインされることは構いませんが、タップ領域は 48dp となるように実装時に拡張します。

48dp のタップ領域を確保できない場合は最低でも 32dp のサイズを確保する。これよりも小さなタップ領域の UI は実装してはいけません。

## 説明

スマートフォンやタブレットなどのタッチ操作の UI では、タップ領域が小さいボタンはタップが難しくユーザーのストレスとなります。

マテリアルデザインの Accessibility の項目で最小のタップ領域サイズとして 48dp が推奨されています。

見た目のサイズが 48dp より小さくデザインされることは構いませんが、デザインの段階

元記事を表示

アプリリリースしました 「Flexible Dice~シンプルで解析もできるダイスアプリ~」

play storeにて、アプリ
[Flexible Dice](https://play.google.com/store/apps/details?id=com.chelak.dice)をリリースしました。

Google Play で手に入れよう

[Android × 株] ヒートマップを作る (ツリーマップ)

S&P500などでよく見られるヒートマップ

業務で使用するにあたり、実装方法を調べたが日本語の記事どころか英語の記事もほとんどなかったので、実装方法をなるべく分かりやすく書いていきます。
ライブラリは使いません。
kotlinを用いて実装します。

## まずは完成形

Screenshot_20210821-142541.png

## 超ざっくりと実装の流れを説明

* 株価データの作成
* 株価データも基に座標を計算
* 座標データを元にCanvasで描画

## 実装

### まずは株価データ用のデータクラスを作成します

“`kotlin:StockData
// 株価データ
data class StockData(
// 運用額
var amount:Double,

元記事を表示

Chromebook IdeaPad duet セットアップ 備忘録

Chromebookが使ってみたくてLenoveのIdeaPad duetを購入。
古くなったAndroid Table (Nexus9)の代わり。メインのユースケースは電子書籍の閲覧。サブはAndroidアプリ開発時のデバッグ用実機。
ChromebookではLinuxも動くようなので、出先での開発マシンとしての用途も試してみたい。VSCodeから開発機に接続してコーディング、デバッグ。

インストールやセットアップした内容の備忘録。随時追記。

# 電子書籍アプリ
2021.08.21
Androidタブレットのときと同じようにGoogle Play ストアからインストール。
Chromebookへのインストールに対応していないものある。

|アプリ名|Chromebookへのインストール|見開きページ表示|
|—|—|—|
|Kindle|○|○|
|紀伊国屋Kinoppy|○|○|
|Reader by Sony|×|-|
|DMMブックス|○|○|
|ヤンジャン!|○|○|
|ジャンプ+|○|○|

# Linux
chromebookにLinuxをインストールす

元記事を表示

Android 12で変更されるウェブインテントの解決から、改めて考えるURLハンドリング

Android 12では[ウェブインテントの解決](https://developer.android.com/about/versions/12/web-intent-resolution?hl=ja)の方法が変わるらしいですね。
そもそも、従来からAndroidにおいて、URLをどうやってハンドリングするかは結構奥深い問題です。ちょっと整理してみようと思います。

# URLのハンドリング

URLをハンドリングするシーンとして、主には以下のようなものが考えられると思います。

– WebViewのshouldOverrideUrlLoading()で渡されたURL
– 広告など動的コンテンツのクリック時のアクションとして渡されたURL

安直に扱うなら、

“`kotlin
runCatching {
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url)))
}
“`

と、暗黙的Intentを投げてしまえば良いです。

しかし、ChromeCustomTabsを使ってURLを表示させたい場合は、暗黙的Inte

元記事を表示

flutterで端末の気圧センサーを用いたpluginを自作して公開してみた

#

# 下準備

まずこれを呼び出します。

`flutter create –template=plugin –platforms=android,ios -a java flutter_barometer`

テンプレート作成時に追加されている、 `example` ディレクトリで

`flutter build apk`

`flutter build ios –no-codesign`

を実行し、事前にアプリをビルドします。

# 作成

### Android
Android Studioで `[プラグイン名]/example/android/build.gradle` を選択してプロジェクトを開きます。

サイドバーにある`[プラグイン名]/java/[パッケージ名]/[プラグイン名]Plugin` というファイルに実装していきます。

### iOS

Xcodeで `[プラグイン名]/example/ios/Runner.xcworkspace` を選択してプロジェクトを開きます。

サイドバーにある

`Pods/Development Pods/hel

元記事を表示

Universal Android Music Player(UAMP)のカスタマイズ (音源の変更 2/2)

#はじめに
Android用アプリのプログラミングを学ぶため、Googleが公開しているサンプルコード **Universal Android Music Player(UAMP)**をカスタマイズしてみます。
まずは、端末(アプリを実行するスマートフォンなど)内の好きな音楽ファイルを再生するように変更します。

[Universal Android Music Player(UAMP)のカスタマイズ (1/2)](https://qiita.com/Jin_Kubota/items/fc94ecd12bc069a58926)で、オリジナルコードでの楽曲カタログ取得からプレイヤーへの設定までの処理の流れを確認し、音源を端末内の音楽ファイルへ変更するカスタマイズの方法を検討しました。
今回は、コードの変更について記載します。

#環境
####PC
MacBook Pro 16
2.3 GHz 8コアIntel Core i9
16 GB 2667 MHz DDR4
macOS Big Sur ver.11.5.2

####開発用SW
Android Studio 4.2.1

##

元記事を表示

Recyclerviewの実装をしてみた。+ 要素の一番上、一番下を判定を行う

ListViewばっかり使用していましたが、置き換えるついでに色々やってみました。

## 導入
build.gradleに以下を。(1.2.1は記事を書いている当時の最新なので読み替えてください。)
参考:[Recyclerview](https://developer.android.com/jetpack/androidx/releases/recyclerview?hl=ja)

“` build.gradle
dependencies {
implementation ‘androidx.recyclerview:recyclerview:1.2.1’
}
“`

## 実装

とりあえずザーッと。
(細かい部分はよしなに・・・)

#### 表示する要素のレイアウト
各要素は全て以下を基準に作られます。

“` item.xml

Androidエミュレータで、ホーム画面からSettingしようとするとブラックアウトする問題

# 目次
[1.現象](#1現象)
[2.解決法](#2解決法)

# 1.現象
エミュレータのホーム画面のSettingsから設定しようとするとブラックアウトしてしまいます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630191/dd482a67-ef0a-638f-e548-8d889325a23c.png)

# 2.解決法
Android Studioの右上にあるAVD Managerを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630191/698ad14b-ef09-b864-9016-58036cacd330.png)


直したいエミュレータのプルダウンからWipe Dataを選択し、Yesを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0

元記事を表示

LayoutInflater.inflateのattachToRootとは何か?

##はじめに
Fragment等を扱うときなどにおまじないとして書いていたLayoutInflaterのinflateメソッドの第3引数attachToRootの意味がよくわからなかったので調べてみました。

##LayoutInflaterについて
LayoutInflaterとはxmlをViewオブジェクトに変換するものです。ドキュメントを確認したところLayoutInflater内のinflateメソッドは色々種類がありましたが、多分一番多く使われているのが

“`kotlin
open fun inflate(resource: Int, root: ViewGroup?, attachToRoot: Boolean): View!
“`
のタイプだと思います。これの第一引数ではViewに変換したいlayoutのxmlを指定します。第二引数についてはドキュメントの説明をdeepLで翻訳すると
>ViewGroup。オプションで、生成された階層の親となるビュー(attachToRootがtrueの場合)、または単に、返された階層のルートのLayoutParams値のセットを提

元記事を表示

DatePickerで生年月日を入力できるようにする

# 前提条件
SDKバージョン: 30
Androidバージョン: 9.0

# この記事を書こうと思ったきっかけ
Android DatePickerで調べるとほぼ出てくるのがカレンダー形式のもので私は結構困りました。日付を選択する際は別にカレンダー形式でも問題ないと思うのですが、生年月日の選択の場合はスピナー、あるいはドラムロールと言われるタイプの形式の方が遥かに選択が楽です。
参考:[【ダメなUIについて】androidの生年月日の入力フォームで使ってはいけないUIデザイン
](https://satoriku.com/android-uidesign/)

# 作りたいもの

こんな感じで、EditTextをクリックしたら生年月日を選択するためのスピナーが表示され、ユーザーが選択すると、その結果がEditTextに反映され

元記事を表示

ListView✖️ArrayAdapter✖️RadioButtonでアンケートを作成!

# 前提条件
SDKバージョン: 30
Androidバージョン: 9.0

# 作りたいもの

この画像の「からだの症状」という部分ですが、「目が疲れる」などのタイトルの横にラジオボタンが5つ並んでいます。そして同じような構造が下にいくつも繰り返されています。このように同じ構造のアイテムを繰り返すときには、ListView✖️ArrayAdapterが良いです。
参考:[Using an ArrayAdapter with ListView
](https://guides.codepath.com/android/Using-an-ArrayAdapter-with-ListView)

# 1. 繰り返したいアイテムを作成
こんな感じでリストアイテムを作成します。
【Android】 ToggleButtonのカスタマイズ

# はじめに
ToggleButtonのアイコンと背景をカスタマイズする方法。
全体の流れとしては、まず前景画像と背景のレイアウトを`toggle.xml`で記述し、次にそれをToggleButtonのbackgroundに指定する。

# drawable
`state_checked`でON/OFFを切り替える。`layer-list`内に背景とbitmapを記述。

“`toggle.xml




<

元記事を表示

アプリリリースしました 「ツケ台帳」

play storeにて、私が初めて開発したアプリ
[ツケ台帳](https://play.google.com/store/apps/details?id=com.chelak.tsuke_daicho)をリリースしました。

Google Play で手に入れよう

ArcticFox(AGP7.0)マイグレーション時にCircleCIで発生する java.lang.NoSuchMethodError: ‘void org.apache.commons.compress.archivers.zip.ZipFile.(java.nio.channels.SeekableByteChannel)’ について

CircleCIから提供されているAndroidのDockerイメージを使用している場合、使われるbuildToolsVersionの一覧が`dockerfiles`に書かれているみたいです。

例えば api-30を使う場合、?

https://github.com/CircleCI-Public/circleci-dockerfiles/blob/master/android/images/api-30/Dockerfile#L183

“`yml
RUN sdkmanager \
“build-tools;27.0.0” \
“build-tools;27.0.1” \
“build-tools;27.0.2” \
“build-tools;27.0.3″ \
# 28.0.0 is failing to download from Google for some reason
#”build-tools;28.0.0” \
“build-tools;28.0.1” \
“build-tools;28.0.2” \
“build-tools

元記事を表示

Navigationのセットアップ&使い方(Kotlin)

## はじめに

Navigationのセットアップ方法と使い方を紹介します。

## 「Navigation」とは?

Googleが提供しているJetpackのコンポーネントです。
フラグメント間の遷移など、様々なナビゲーションの実装に役立ちます。

## 環境

– OS:macOS Big Sur 11.5.2
– Android Studio:Arctic Fox | 2020.3.1
– Kotlin:1.5.21
– Gradle:7.0.2
– Gradle plugin:7.0.0
– Navigation:2.3.5

## セットアップ

### Navigationのインストール

ルート直下の「build.gradle」にNavigationのバージョンを追加します。

別の記事で紹介する予定ですが、Navigationと併用して「Safe Args」というGradleプラグインを使うことが多いです。
そのため、先にNavigationのバージョンを定数化しています。

“`diff_groovy:/build.gradle
buildscript {

元記事を表示

【Firebase】別アカウント管理のGoogle Playと接続する方法

# TL;DR
Google Playのオーナー or 管理者アカウントユーザーを、Firebaseのプロジェクトに「オーナー」としてメンバー追加して、そのユーザーに接続してもらえばOK

# はじめに
FirebaseのプロジェクトはGoogle Playと接続できます。

[プロジェクト設定] > [統合]の Google Play の箇所

接続すると、Google Playの収益データがFirebase上から利用できたり、Firebase App DistributionのAndroid App Bundle(aab)配信を使えるようになったりします。:sunglasses:

[【Firebaseヘルプ】Google Play を Firebase にリンクする](https://support.google.com/fi

元記事を表示

AndroidでHiltをつかう

## Android Studioでの設定
基本的にはチュートリアルの通りなのだが、少し違っているのでとても迷う。
https://developer.android.com/training/dependency-injection/hilt-android
以下に設定すれば通る
## build.gradle
“`
dependencies {
・・・
classpath ‘com.google.dagger:hilt-android-gradle-plugin:2.38.1’
classpath “org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.21”
}
“`
## app/build.gradle
“`
apply plugin: ‘kotlin-android’
apply plugin: ‘kotlin-kapt’
apply plugin: ‘dagger.hilt.android.plugin’
・・・
dependencies {
        ・・・

元記事を表示

Android(Termux)でプログラミング【code-server】

# Termuxを公式サイトからインストール
https://f-droid.org/packages/com.termux/

Google Play ストアのTermuxはバージョンが古いので、公式サイトからダウンロードしたapkを開いて、インストールしてください。

# TermuxにUbuntuをインストール
https://github.com/termux/proot-distro

起動用のシェルスクリプトを作成しておくと良いでしょう。

# code-serverをインストール、起動
https://github.com/cdr/code-server

キーボードはCodeBoardがおすすめです。
https://play.google.com/store/apps/details?id=com.gazlaws.codeboard

# 端末でテザリングする、外部から接続する場合
テザリングする場合は、まずテザリングをオンにします。
テザリングせずWi-Fiに接続する場合は、Wi-Fiに接続してから、`ip -4 a`コマンドでローカルipを確認します。

次に、c

元記事を表示

OTHERカテゴリの最新記事