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

Android関連のことを調べてみた2020年10月31日
目次

コピペでSingle,Double and Long Press 感知 Android

@SuppressLint(“ClickableViewAccessibility”)
private void setClick(Context context, View view){
GestureDetector gestureDetector = new GestureDetector(context,new GestureDetector.SimpleOnGestureListener(){
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
Log.d(“Click State”,”Single Tap”);
return true;
}

@Override
public boolean onDoubleTap(MotionEvent e) {
Log.

元記事を表示

初心者としてAndroidアプリ開発を一から学ぶ #1

一応過去に2年くらい開発していたことがあるのですが

– 7年のブランク
– 最後に触ったバージョンは Android 4.4
– AndroidStudio:インストールしたことならあるよ
– Kotlin:何それ美味しいの?

という状態で、先日AndroidStudioをインストールして、画面レイアウトすら作れず途方に暮れました…自分の経験なんて化石でしかないんやと。
正直「何となく触ればわかるだろう」と高をくくっていたのですが、Hello Worldすらできない状態なので、初心者として一から学んでいこうと化石は決心しました。

というわけで、「何かしらのプログラミング経験はあるけどAndroidワカラナイ」という状態の人間が、Android開発を学んでいく方法を探りながら書き留めていこうと思います。

## まずはDeveloperガイド
とりあえずは公式ドキュメントのデベロッパーガイドを読み進めようと思います。
(老人なので「す、すごい、日本語になっている…!」と感動しました)
[Android Develipers > ドキュメント > デベロッパーガイド](https:/

元記事を表示

[Android] Jetpack DataStoreのRead/Writeについて読んだので覚え書き

# はじめに
[Jetpack DataStore](https://developer.android.com/topic/libraries/architecture/datastore)がどうやってデータの管理をしているのかを知っておこうと思って、ちょっと[ソース](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-master-dev:datastore/)を読んでみたのでその覚え書きです。
**自身のメモ的な要素が多分に含まれております。予めご了承いただければ幸いです。**

# ソースについて
今回読んだソースコードは2020/10/30時点のものとなります。
`DataStore`は現時点ではAlphaなのですぐに実装が様変わりすることも十分あるかと思います。

また、`DataStore`には`Preferences DataStore`と`Proto DataStore`がありますが、どちらもCoreの部分は同じコードで動いていて、データの扱い方がちょっと違う(`Prefere

元記事を表示

【Android/Java】リスナ設定(ボタン設置)における記述型式を把握する

## はじめに
Androidアプリ開発で出てくる様々なListener。
javaファイルでの書き方が大きく2パターンあり、混乱したので備忘録として記しておく。

今回のサンプルはボタンを押すと、メッセージが表示されるアプリです。
※尚、ボタンはボタンでも、ActionBarにボタン(オプションメニュー)を設置する方法は全く違うのでこちらを参照してみてください。
https://qiita.com/kilalabu/items/62a39e63ee2c6d4293bd

## 用語の確認
イベント ・・・ 画面に対して行う操作のこと (例:クリックする)
イベントハンドラ ・・・ そのイベントに対して行う処理のこと (例:クリックされたらテキストを表示する)
リスナ ・・・ イベントの検知をしてくれるもの (例:ボタン)

## コード
レイアウトは適当です。

“`xml:activity_main.xml

元記事を表示

【Android】Flavor毎にアプリ名とアプリアイコンを変更する

Androidアプリ開発時に、開発環境・ステージング環境・本番環境 などの環境毎にFlavorを設定することがあるかと思います。
環境が違うアプリをひと目で見分けられるように、アプリ名とアプリアイコンを変更する方法をまとめておきます。

# Flavorを設定する

アプリの `build.gradle` にFlavorの設定を行います。
今回は例として、 `dev`(開発)・`stg`(ステージング)・`prod`(本番) の3つの環境を用意するものとします。

“`gradle:build.gradle
android {

// 省略

// ここから追加
flavorDimensions “environment”
productFlavors {
dev {
dimension “environment”
applicationIdSuffix “.dev”
versionNameSuffix “.dev”
}
stg {

元記事を表示

Androidアプリのユーザ補助機能を高める(システム ウィジェットを使用または拡張する 〜 メディア コンテンツのユーザー補助機能を強化する)

# はじめに
### モバイル端末のa11yについて
Webでは活発であったアクセシビリティを踏まえた開発は近年のモバイル端末の使用者増加によって、モバイル端末でも必要とされ始めています。アプリ開発者はこれを踏まえた上での開発や、開発ずみのアプリのさらなるユーザへの改善としてユーザ補助機能を高めることが必要になってきています。

今回は自学のためandroid developers documentからユーザ補助に関するドキュメントをざっと全体をみてまとめていきます。参考は最後にリンクを貼っていますので、詳しくはそちらから見てください。

##シリーズ
1. [前置き〜「要素にラベルを付ける」まで](https://qiita.com/airagu950/items/4407afcb89944397d2ee)
2. システムウィジェットを使用または拡張する
3. 色以外の手がかりも取り入れる
4. メディア コンテンツのユーザー補助機能を強化する
今回の記事は2〜4になります。

## 改善方法
これらの機能をアプリの中で活かすために以下の方法があると紹介されています。

– 要素

元記事を表示

Android エミュレーターがネットワークに繋がらないときに一瞬で繋げる方法

# やりたいこと

自分の環境では、Android エミュレーターを使っているとネットワークに繋がらなくなることが多々あります。ほとんどの場合、DNS の設定に問題があるらしく、[こちら](https://qiita.com/maaaaaiiiisan/items/fdcf1c370fc381bb9dd2)の記事を参考にすれば問題は解決します。

**しかし…**

エミュレーターを起動するたびにこの記事どおりにコマンドを打つのが面倒くさい…。

ということで、これらの処理を 1 発で済ませるためのシェルを作ってみました。

# ソースコード

普段シェルを使うことがなく、何かおかしな点があればご指摘ください。

“`run-avd.sh
#!/bin/bash

me=$(whoami) # ユーザー名を取得
path=/Users/${me}/Library/Android/sdk # ここは環境に合わせて変更してください

command=${path}/emulator/emulator
avds=$(${command} -list-avds) # インストールされ

元記事を表示

Android Studioショートカット

#個人的によく使うショートカットまとめ

| \ | Android Studio | Visual Studio |
|:-:|:-:|:-:|
| 定義に移動 | F4 | F12 |
| 前画面 | Ctrl+Alt と  ← | Ctrl と – |
| 次画面 | Ctrl+Alt と  → | Ctrl+Shift と – |
| コメントアウト | Ctrl と / | Ctrl+K と C |
| コメントアウト外す | Ctrl と / | Ctrl+K と U |
| ビルドデバック | Shift + F9 | – |
| ビルド次に進める | F8 | F10 |
| ビルドブレイクまで進める | F9 | F5 |
| ビルドstepイン | F7 | F11 |
| ブックマーク一覧表示 | Shift + F11 | Ctrl+K と W |
| ブックマークon/off | F11 | Ctrl+K と K |
| ブックマーク前移動 | – | Ctrl+K と P |
| ブックマーク後

元記事を表示

#25 Kotlin Koans Collections/Sort 解説

#1 はじめに

Kotlin公式リファレンスのKotlin Koans Collections/Sortの解説記事です。

Kotlin Koansを通してKotlinを学習される人の参考になれば幸いです。

ただし、リファレンスを自力で読む力を養いたい方は、
**すぐにこの記事に目を通さないで下さい!**

一度各自で挑戦してから、お目通し頂ければと思います:fist:

#2 sorted()/sortedBy()

**[sorted()](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/sorted.html)**:関数の呼び出しもとのコレクションの要素を50音順(アルファベット順)に並び替えて返す。
(※1文字目が共通の要素があれば2文字目で判断する。)

**[sortedBy()](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/sorted-by.html)**:関数に渡す引数(selector)の戻り値の結

元記事を表示

Android SDK Platform-Toolsのパスを通す方法

## はじめに

`adb` コマンドを使いたいため、Android SDK Platform-Tools(以下「Platform-Tools」)のパスを通します。

## 「Platform-Tools」とは?

Androidアプリの開発に必要なツール群で、 `adb` 、 `fastboot` 、 `systrace` などが含まれています。

## 前提条件

– Android Studioをインストールしている

## 環境

– Android Studio:4.0
– adb:1.0.41

## Platform-Toolsのパスを通す

基本的には参考リンクのやり方と同じです。
私はフォルダが存在する場合のみパスを通したいため、 `if` 文を追加しています。

`.bash_profile` に以下を追記します。
前半部分はAndroid SDKのパスを通していて、Platform-Toolsと直接は関係ないですが、 `ANDROID_HOME` 変数を再利用しているので載せています。

“`bash:.bash_profile
export ANDROID_H

元記事を表示

AndroidでFragmentを実装するとRunTimeExceptionが発生する

#概要
Fragmentを実装しようとするとjava.lang.RuntimeException: Unable to start activity ComponentInfo{}~といったエラーが発生する。
日本語でいい対処法の記事がなかったので備忘録替わりに。

#エラー内容
Fragmentを実装すると

“`
java.lang.RuntimeException: Unable to start activity ComponentInfo{}~
“`

といったエラーが出てくる。
ついでに以下のような原因も記載される

“`
Caused by: android.view.InflateException: Binary XML file line #6: Binary XML file line #6: Error inflating class fragment
Caused by: android.view.InflateException: Binary XML file line #6: Error inflating class fragment

元記事を表示

実機テストってどうやるの?

#やりたいこと
実機デバイス(iPad)の表示確認をしたい.

#条件
– プロキシの設定が必要

#手順

「設定」 -> 「Wi-Fi」 -> 対象のネットワークのℹ️ボタンを選択して詳細設定画面へ
![D282083E-0B1D-4E3D-BBB8-8A45BAB953B1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/377231/bfb90eaf-3fae-15f3-1889-17455b5f15e4.png)

「プロキシ」 -> 「手動」 -> サーバとポート番号を設定
![62C24F1A-5437-4EAD-A777-06F27199900A (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/377231/dcc82a9b-2a08-f11d-6f02-5eacb5ba9942.png)

「一般」 -> 「プロファイル」
![AB687199-12DA-44CB-B66D-BE31153

元記事を表示

Navigation Compose を使ってみる

Jetpack Compose で画面遷移する仕組みとして [Navigation Compose](https://developer.android.com/jetpack/compose/navigation) が用意されています。
stable になるまで大きな変更が入るそうですが、[1.0.0-alpha01](https://developer.android.com/jetpack/androidx/releases/navigation#navigation_compose_version_100_2) 時点でどのように使うのか、内部でどのようなことをしているのか書いていこうと思います。

## 実装

#### セットアップ
“`
dependencies {
implementation “androidx.navigation:navigation-compose:1.0.0-alpha01”
}
“`
ライブラリへの依存を追加します。

#### 画面の定義
“`Screen.kt

@Composeable
fun App() {
val

元記事を表示

Androidアプリのユーザ補助機能を高める(前置き〜「要素にラベルを付ける」まで)

#はじめに – モバイル端末のa11yについて
Webでは活発であったアクセシビリティを踏まえた開発は近年のモバイル端末の使用者増加によって、モバイル端末でも必要とされ始めています。アプリ開発者はこれを踏まえた上での開発や、開発ずみのアプリのさらなるユーザへの改善としてユーザ補助機能を高めることが必要になってきています。

今回は自学のためandroid developers documentからユーザ補助に関するドキュメントをざっと全体をみてまとめていきます。参考は最後にリンクを貼っていますので、詳しくはそちらから見てください。

## Androidで提供されているユーザ補助機能
Androidでは端末に備わっているユーザ補助機能として以下の二つが挙げられます。

– TalkBack: 視力の弱いユーザーや目の不自由なユーザーをサポートします。合成音声でコンテンツを知らせ、ユーザーの操作に応じてアプリでアクションを実行します。
– スイッチ アクセス: 運動障がいのあるユーザーをサポートします。インタラクティブな要素をハイライト表示し、ユーザーのボタン押下に応じてアクションを実行

元記事を表示

【LT】Unity5.2で作ったAndroidアプリをUnity2019.4に更新した話

LTのYouTube動画 (クリックで再生)
[](https://www.youtube.com/watch?v=5cKQ_w8Op0U)

※以下は動画の内容を書き起こして一部編集したものです。

# はじめに

2016年にUnity5.2で開発したAndroidアプリが今年の夏にGoogle PlayでBANしまいました。Unity製Androidアプリを最新バージョンのUnity2019.4に対応して気づいたことを共有します。

Glide を Coil に置き換える

# 概要
画像読み込みライブラリーの Glide を Coil に置き換える際のポイントについて書きます。

## Coil
Kotlin で実装された画像読み込みライブラリーです。[今月1.0がリリース](https://github.com/coil-kt/coil/releases/tag/1.0.0)されました。
軽量で十分なパフォーマンスを出すことができ、簡単に使える点が特徴だと紹介されています。

| 公式サイト | https://coil-kt.github.io/coil/
|:—|:—
| GitHub | https://github.com/coil-kt/coil

また、GIF画像についてはオプションです。[coil-gif](https://github.com/coil-kt/coil/tree/master/coil-gif) を別途導入する必要があります。

### コードの書きやすさ
後発ライブラリーだけあってコードの書きやすさは上回っています。Kotlin の拡張関数を用いて、簡潔に Kotlin らしいコードを書ける実装になっています。

元記事を表示

#24 Kotlin Koans Collections/Max min 解説

#1 はじめに

Kotlin公式リファレンスのKotlin Koans Collections/Max minの解説記事です。

Kotlin Koansを通してKotlinを学習される人の参考になれば幸いです。

ただし、リファレンスを自力で読む力を養いたい方は、
**すぐにこの記事に目を通さないで下さい!**

一度各自で挑戦してから、お目通し頂ければと思います:fist:

#2 max()/min()/maxBy()/minBy()

**[max()](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/max.html)**:コレクションの要素の最大値を返す。

**[min()](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/min.html)**:コレクションの要素の最小値を返す。

**[maxBy()](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.

元記事を表示

#23 Kotlin Koans Collections/FlatMap 解説

#1 はじめに

Kotlin公式リファレンスのKotlin Koans Collections/FlatMapの解説記事です。

Kotlin Koansを通してKotlinを学習される人の参考になれば幸いです。

ただし、リファレンスを自力で読む力を養いたい方は、
**すぐにこの記事に目を通さないで下さい!**

一度各自で挑戦してから、お目通し頂ければと思います:fist:

#2 flatMap()

**[flatMap()](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/flat-map.html)**:呼び出し元のコレクションの要素を連結してListとして返す。

“`
val result = listOf(“abc”, “12”).flatMap { it.toCharList() }
result == listOf(‘a’, ‘b’, ‘c’, ‘1’, ‘2’)
“`

上の例では、`abc`と`12`という要素を持ったListがflatMap()にラムダ式を渡し、戻り値を連

元記事を表示

UnityでAndroidのプラグインのクラスが見つからなくて(ClassNotFoundException)何故か使えないときに怪しむべきProGuard、Minify

# Androidのプラグイン何故か使えない
俺は完璧に設定しているのにビルドして実行するとClassNotFoundExceptionでAndroidプラグインが使えないことがあって時間を費やしたのですが、いろいろ調べた結果ProGuardのMinifyという処理が原因でした。ClassNotFoundExceptionの原因調べててProGuardまでたどり着かなくね?という懸念があったので共有します。
自分がたどり着いたのは[これ](https://forum.unity.com/threads/native-share-for-android-ios-open-source.519865/page-11)にProGuradの記述があったからです。。。

## リリースビルドはMinifyが有効になっている
デフォルトの状態でリリースビルドするとProGuardによるMinify処理が行われるようになっているみたいです。
チェックが入っていてMinifyを切るとプラグインの機能が使えるようになりました。
![スクリーンショット 2020-10-28 16.45.17.png](h

元記事を表示

【Android】switch/caseでR.id.XXXXを書いたら警告が出た

# 事の発端

アクションバーの戻るボタン実装方法を調べていて、
以下の書き方の記事がよく見かけたので、

“`java
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
int id = item.getItemId();
switch (id) {
case R.id.home:
// …
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
“`
その通りに実装したら、こういう警告がでてしまいました。
> Resource IDs will be non-final in Android Gradle Plugin version 5.0, avoid using them in switch case statement.

# if-else文のほうが良いら

元記事を表示

OTHERカテゴリの最新記事