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

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

ViewModelを使ったAndroidプロジェクトセットアップのチートシート

いつもドキュメントを探してググりまくっているので、ここにまとめる。

## ViewModel

– ViewModelを使いたい
– `val viewModel: MyViewmodel by viewModels()`を使いたい

“`gradle
dependencies {
implementation ‘androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0’
implementation ‘androidx.activity:activity-ktx:1.1.0’
implementation ‘androidx.fragment:fragment-ktx:1.2.5’
}
“`

## Data binding

ViewModelを使うということはたぶんData bindingも必要になると思います。

[ドキュメント](https://developer.android.com/topic/libraries/data-binding/start)には

“`gradle
android {

元記事を表示

Kotlin 1.4.20-M2でDeprecatedとなったKotlin Android Extensionsを弔う

表題の通り`Kotlin 1.4.20-M2`でKotlin Android ExtensionsがDeprecatedとなりました、個人的には好きな技術だったので弔いがてら記事にしたいと思います。

## 概要
Kotlin Android Extensions[1]はKotlin用のView参照機構で、`findViewById`によるViewの参照の問題を解決するために導入された。手軽に導入できシンタックスもシンプルなので採用しているプロジェクトも多いように思うが、後述するいくつかの問題によりAndroid公式からはBest Practiceとはされていなかった。

このような背景からView参照機構として長らく`findViewById`,`ButterKnife`,`Kotlin Android Extensions`といった技術が存在する状況が続いてたが(`DataBinding`は除く)、2019年のGoogle I/OにてViewBinding[2]が発表されView参照機構のBest Practice問題は一様の収束に至った。

これを受けて昨日リリースされた`Ko

元記事を表示

#28 Kotlin Koans Collections/Partition 解説

#1 はじめに

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

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

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

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

#2 partition()

**[partition()](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/partition.html)**:コレクションの渡す引数(predicate)の戻り値がtrueをとる要素と、falseをとる要素のListの[Pair](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-pair/)を生成する(trueのListがPairクラスのプロパティfirstに、falseのListがPairクラスのプロパティsecondに代入され

元記事を表示

Google Play Storeでリジェクトされた App Rating : App is incorrectly rated as AO – Adults Only.

#初めてGoogle Playでリジェクトされた!!
![スクリーンショット 2020-10-29 18.05.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167220/a8d0c99f-dbbf-a071-179b-9db9f2e1e3f2.png)

アプリをアップデートするとまさかの**reject**でした。。。

#理由は?
**「コンテンツレーティングのガイドラインに違反している」**ということでした。。。

うーん。よくわからんが、意図してレーティングを「18歳以上」にしたのがよくなかったのかも。

レーティングは`アプリのコンテンツ>コンテンツのレーティング`で質問に回答することで変更できる。
![スクリーンショット 2020-10-29 18.11.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167220/014c5d87-2707-6db3-3f92-41e87cafffb3.png)

元記事を表示

Google Play Consoleから前のバージョンのappファイル(もしくはapk)を削除するには?

#はじめに
Google Play Consoleの画面の見方と操作方法が分からずにめっちゃ困ったお話。
新しいGoogle Play Consoleになってから、どこにどのボタンがあるか?などわからず、かなり時間を費やしてしまったのでここに記録する!

#目的
![スクリーンショット 2020-10-29 22.32.00.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167220/dc229871-4f79-61c6-7c6c-0a1fbd797785.jpeg)
上記の一覧から「バージョンコード31と32」を削除したいのです。

**新しいGoogle Play Consoleからだと、どの画面のどこのボタンを押せば削除か?
それがなかなかわからなかった**:joy:

#背景
そもそも、「なんでアップローダしたappファイルを削除したいのか?」ということから書きていく。

###環境
ストアで公開されているアプリのバージョンは下記の通り。
・バージョンコード29
・バージョン(1.3.8)

元記事を表示

宣言的UIフレームワークでのラジオボタン(選択UI)実装方法の確認(Compose、SwiftUI、Flutter)

### 実装の狙い

![スクリーンショット 2020-10-31 19.20.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4493/ef320b61-9b18-f9b8-1aa9-ae7444502b7d.png)

上記のようにユーザーの入力などUIイベントの発生から画面の更新までを単一方向のフローで処理するための、基本的な実装についての確認です。
また、選択UIというのは非宣言的UIフレームワークにおいては、UI側に状態を持たせる実装になることが多いため、宣言的UIフレームワークにおいての実装のためのインターフェイスを確認する目的もあります。

### 今回実装したものについて

– 色の選択肢を複数の中から選択UIによって一つ選択できるようにする
– 前面の**小さな方**の四角い枠のバックグラウンドは今、選択UIで選択されている色を表示する
– その四角い枠の背面にはみ出ている**大きな方**の四角い枠のバックグラウンドには現在選択されたものより一つ前の選択されたものを表示する

以下

元記事を表示

Unity Ads でAndroidの広告を実装

今更ですが、UnityのAds でAndroid の広告を実装しました。
設定も簡単で実機の確認もすぐできました
#【Unity Ads を有効にする】

Window > General > Services を開く
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/771936/a7c52ec4-f81b-320a-4fc0-c0e19129d663.png)

#Ads を有効にする

Test Mode と Advanced を有効にする

実機にビルドする場合はTest Modeのチェックを外します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/771936/6dc0f783-6595-73db-5f79-bc55c0375886.png)

#【広告を表示する場所に処理を書く】

c#側で表示したい位置に下記のように処理を書きます

下記はポップアップ広告です

私の場合は表示

元記事を表示

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

@SuppressLint<("ClickableViewAccessibility") static public setClick(@NonNull Context context,@NonNull 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) {

元記事を表示

初心者として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

元記事を表示

OTHERカテゴリの最新記事