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

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

アプリテスト自動化への旅【AppiumとJestで簡単に試してみよう!】

皆さんはアプリのテスト自動化をしたことがありますか?
おそらく手元で**手動テスト**をし、Excelか何かにまとめられたテスト仕様書にチェックを入れている人もいるのではないでしょうか。

しかし、自動化しようとしても、**どこまで自動化ができるのだろうか。。。**だとか、**こんな表現をテストで実装は出来ないよね?**だとか、**時間かかりそうだし、今はそういうフェーズじゃない。**だとか…そう思っている人は結構いるのではないかと私は思っています。

そんな人たちに、意外とアプリのテスト自動化はイケるぞ!ってのを伝えるために、本記事にて、**Appium**と**Jest**を組み合わせた自動テストを紹介します。

皆さんの手元で簡単にセットアップできるので、是非お試しください!

なお、今回紹介する内容のソースコードは以下のリポジトリから参照できますので、是非ご利用ください!
https://github.com/minakawa-daiki/AppiumJestSample

# 目標
今回の記事では、以下が出来ることをゴールにしていきたいと思います。

– ページがしっかり

元記事を表示

Androidアプリの開発するなら要件定義と設計はこう考えるといいんじゃない

# はじめに

ごぶさたしてます。Javaおじさんです。
相変わらずのフリーランス稼業で糊口をしのいでいる感じですが、さすがにこのご時世Webアプリだけ作って食っていけるわけでもないのでAndroidのアプリにも手を出しているわけです。
ただ、Webアプリって結構設計前に考えなきゃいけないことが少ないせいで、Androidのアプリ考えるときいろいろスコーンと抜けてることが多くていざブツを作ろうとすると結構大変だったりします。
というわけで、いろいろ過去の事例を思い出しつつAndroidアプリを作る場合の要件定義や設計なんかについて備忘録代わりにちょっとまとめてみましょ。

# 前提

そもそもAndroidアプリだろうがiOSアプリだろうが、Webアプリと違って以下の特性が存在します。ぶっちゃけこのあたりはクライアント/サーバ型のシステムの設計/運用ノウハウが結構流用できると思うんだけど意外にもうみんな忘れてるんだろうか。

– Webサーバと違ってメモリが決定的に少ない。なのであまり一度に大量のデータを受信するとメモリ不足でアプリが死ぬ。それゆえ事前のデータ量見積、各データのCRUD

元記事を表示

Google Issue Trackerにライブラリの不具合報告した話

この記事は、[Android#2のアドベントカレンダー](https://qiita.com/advent-calendar/2019/android-2)の20日目の記事になります。

初めてGoogle Issue Trackerに不具合報告した話になります

# 経緯

[ViewPager2](https://developer.android.com/jetpack/androidx/releases/viewpager2)のβ版を使って色々試していた際に謎挙動に遭遇。
ググっていろいろ調べた結果解決策がなさそうだということが判明しました。

そういえば[Issue Tracker](https://issuetracker.google.com) みたいなのあったなーと思い出し、
そこで不具合報告されてないかと調べてみましたが、
残念ながらそれらしい報告はありませんでした。

それなら自分で報告してしまおうということでIssue TrackerでIssueを作成することにしました。

(ちなみに遭遇した不具合は
`CoordinatorLayout`と`ScrollView

元記事を表示

dagger2入門 – basic(@Inject & @Component)

# 概要
* [dagger2入門 – 導入の仕方](https://qiita.com/alingogo/items/e99fb4c1af01fccf5ab4)に、gradleよりdagger2の導入方法を紹介しました
* 今回はdagger2の基本的な使い方を紹介します – @Inject と @Component
* 概念などをここに紹介しなくて、使い方を中心として話します

# 簡単な使い方
### 注入できるクラスを作成して、コンストラクタ前に@Injectを追記

“`
class People @Inject constructor() {
fun doWhat(): String {
return “eat dinner”
}
}
“`

### Componentを作成して注入先を指定

“`
@Component
interface PComponent {
fun into(home: Home)
}
“`

### インスタンス変数を用意
* DaggerPComponentを生成されるクラス

“`
cl

元記事を表示

Jetpack Benchmark を利用した実行時間計測

## はじめに

[Android Advent Calendar 2019](https://qiita.com/advent-calendar/2019/android) の20日目です。

この記事では、Google I/O 2019で発表された [Jetpack Benchmark](https://developer.android.com/jetpack/androidx/releases/benchmark) の1.0.0が先月末にstableリリースされたので、こちらについて紹介したいと思います。
※ 2019年12月20日現在、日本語のドキュメントがアルファ版のままなので、言語を切り替えて利用すると良いと思います。

## Jetpack Benchmarkについて
Benchmarkは、Androidアプリコードのパフォーマンスを適切に計測のためのライブラリです。

コードの実行速度を計測する上で、単純な開始時間と終了時間の差分では計測のたびにムラが生じたり、
端末が起動直後であったり高負荷状態であるなどの不安定要素の存在によって都度適切な計測は困難です。

これ

元記事を表示

AndroidアプリにOpenCVを導入してみる

#はじめに
AndroidStudioのデフォルトだけで完結するアプリ作りにも飽きてきたので、
OpenCVを使って画像をあーだこーだしてアプリの幅を広げてみる。
手始めにインストールして試しに使ってみる。

[Androidアプリで端末の画像を取り込む](https://qiita.com/satodayo/items/0dd592f6d92c87ee0ac4)の続き

#環境
OpenCV 4.1.2
AndroidStudio 3.4.1

#インストール
こちらの記事を参考にさせていただきました。
特に支障なくインストールとインポートは完了。

[Android StudioでOpenCVを使う](https://qiita.com/tifa2chan/items/a2ec4f5d90eeb9cf1802)

#Mat形式で取り込む
前回の記事でデバイスの画像データをbitmapで取り込むところまでやりました。
このbitmapをOpenCVで扱うためのMat形式に変換します。

OpenCVのLibraryに含まれているandroid.packageのUtilsクラスに以下の

元記事を表示

dagger2入門 – 導入の仕方

## 概要
* dagger2やDIの初心者です。
* gradleとKotlinでプログラミングします。

## daggerのみを使う

### 環境
* IntellJ IDEA 2019.1.3
* JRE 1.8.0
* gradle 5.4.1

### gralde
“`
apply plugin: ‘kotlin-kapt’

dependencies {
……

def dagger_version = “2.25.2”
implementation “com.google.dagger:dagger:$dagger_version”
kapt “com.google.dagger:dagger-compiler:$dagger_version”
kaptTest “com.google.dagger:dagger-compiler:$dagger_version”
}
“`

## Androidアプリ向けにdaggerを利用する

### 環境
* Android Studio 3.5.3
* gradle 5

元記事を表示

Dialogflow の Java client library は Android で動作するのか?(音声入力ストリーム編)

# はじめに

本記事は「[Dialogflow の Java client library は Android で動作するのか?(DetectIntent編)](https://qiita.com/r-hashioka/items/c25858d10bb8f4234865)」の続編です。

軽くおさらいしておくと、
Java client library を使って Dialogflow に detectIntent し、その結果を取得することができました。

次は、音声入力のストリームを Dialogflow に投げて、リアルタイム解釈を行えるか確かめてみます。
(結論から言うとできました。)

下の URL は Google さんの音声入力ストリームするためのガイドです。
https://cloud.google.com/dialogflow/docs/detect-intent-stream?hl=ja#detect-intent-stream-java

前回記述した内容は省きますのであしからず。

# 環境
言語:Kotlin
端末:Pixcel3a (Android 10)

元記事を表示

[ Android ] NoMachingViewException

AndroidTestをするうえでNoMachingViewExceptionというエラーが発生した。

例えば以下のようなコードでテストしたときである。

~~~java
onView(withText(“test”)).check(matches(not(isDisplayed())));
~~~

このコードはダイアログが表示されていないことを確認するために、ダイアログ上の文字列”text”が画面にないということを確認するプログラムであった。しかしNoMachingViewExceptionというエラーが発生した。

このエラーはつまり、”text”という文字列を持ったViewが存在しないことを示している。

私は以下のようにコードを追加することで、エラーを解消できた。

~~~java
new Thread (new Runnable(){
@Override
public void run() {
//エラーが発生したテストコードを記述
}
}
~~~

もしNoMachingViewExceptionが発生し

元記事を表示

NavigationViewを全画面表示するとstatus barやnavigation barを透過させていても暗い色がついてしまう現象の解決法

android10対応の一環としてアプリの全画面を
https://developer.android.com/guide/navigation/gesturenav#transparent-bars
https://developer.android.com/guide/navigation/gesturenav#vis-flag
を見て対応。
status barもnavigation barもstyleから色を@android:color/transparentにして、javaからSystemUiVisibilityにView.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION、View.SYSTEM_UI_FLAG_LAYOUT_STABLE、View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREENフラグを設定し、全画面表示できるようにした。

が、NavigationViewだけは何故か上下のstaus bar部分とnavigation bar部分に影がついてしまう。

元記事を表示

Android で annotation が見つからない件 – シンボル annotation を解決できません。

# はじめに
最近、Google Speech-to-Text を使った音声アプリを Android で作る機会がありました。
Google さんの公式ドキュメントから [Android のサンプルリンク](https://github.com/GoogleCloudPlatform/android-docs-samples/tree/master/speech/Speech)があり、
そのまま「えいっ!」ってコピペしてみると、「シンボル annotation を解決できません。」と怒られました。

多分、上記サンプルに関わらず、コピペしてコマッタ…って人もいるかとおもいます。
パッと検索してみても annotation をキーワードに指定するとなかなか出てこなかったので記事にしてみました。

# 問題のコード

“` java
import android.support.annotation.NonNull;
“`

# 先に結論
下記のように書き換えると、とりあえず動きました。

“` java
import androidx.annotation.NonNull;
“`

元記事を表示

Firebaseで流しそうめん

これは[Firebase #2 Advent Calendar 2019](https://qiita.com/advent-calendar/2019/firebase_2)の20日目の記事です。

# はじめに
Firebase Realtime Databaseでスマホを連結して、スマホの中で流しそうめんします。
流れてくるそうめんは、箸デバイス(おそらく世界初)でとれます。
箸デバイスとモードの背景は、[@krohigewagma](https://qiita.com/krohigewagma)さんに作ってもらいました。

![流しそうめん展示.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543183/174f6b1a-7884-28c4-af7e-868da30939cc.png)

流しそうめんを作ろうと思ったのは、ダライアスが好きで、今ならスマホで作れるだろうと試作を始めたら、いつの間にか流しそうめんを作ってました。

# 概要
– 1台のそうめんを流す端末と、複数台のそうめんが流れる端

元記事を表示

DatePickerDialog と TimePickerDialog を使って日時選択をできるようにする

時間選択を実装するのに便利な DatePickerDialog と TimePickerDialog に出会ったので備忘録を残そうと思います。

# DatePickerDialog と TimePickerDialog とは
実態としては AlertDialog の setView に カスタムのレイアウトを追加しているものです。
DatePickerDialog であれば DatePicker を、TimePickerDialog であれば TimePicker を追加しています。

さらに PositiveButton と NegativeButton はデフォで実装されているので、 show してあげるだけで簡単に時間選択用のダイアログを表示することができます。

参考イメージ
DatePickerDialog
![TimePickerSample.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/236467/0793c375-1d6c-52d8-4069-9537e6557084.png)

T

元記事を表示

AOSP をビルドして海外版 Xperia XZ にインストールして気が付いた話。

# tl;dr
AOSP をビルドして海外版 Xperia XZ にインストールしたければ、[Sony の Open Devices](https://developer.sony.com/develop/open-devices/) と [Google 公式](https://source.android.com/) は必ず読むべき。

以下、一問一答形式でお送りします。

# なぜ AOSP をビルドするのか?

__そこに AOSP と Xperia XZ があるから__

という人もいるでしょうが、思う存分 root がとりたい人や Android をハックしたい人が主にやりたくなるようです。

# なぜ Xperia XZ か?

__比較的英語の情報が集めやすいから__

の一言につきます。
Project Treble より少し前の端末で、中古でお値段が比較的手ごろになってきたからのようです。
メルカリ等で時々お宝がでます。要チェック!

# なぜ海外版か?

__そうでなければ Unlock できないから__

同じ機種でも国内版はほぼアンロックできません。
対象機種

元記事を表示

はじめて Android のハンズオンに参加する前の準備

## はじめに
はじめて Android のハンズオンに参加する方向けに、Android の開発環境構築手順をまとめました。
ハンズオンの事前準備の参考資料として活用して頂ければ幸いです。

**環境構築にはトータルで数 GB のダウンロードが必要なため、ハンズオン会場ではなく事前に環境構築を済ませておくことをお奨めします。**
(過去何度か、ダウンロードで待ちぼうけになるハンズオン参加者がいらっしゃいました…)

## Android Studio の インストール
次の URL から必要に応じた Android Studio をダウンロードします。
### 安定版のダウンロード
通常はこちらで大丈夫かと思います。
https://developer.android.com/studio/
### Preview 版のダウンロード
Preview 版の Android Studio でしか実行できない機能を使う場合は、下記 URL からダウンロードします。
https://developer.android.com/studio/preview

もし、指定のバージョンが表示されない

元記事を表示

Wikipedia 読み上げ Android アプリを Jsoup + TextToSpeech で作った話

Android 開発初心者がアプリ開発をしてみた体験記です。なお、作成物はストア公開はしてないです

# やったこと
– Kotlin で Activity 三つのアプリ作成
– Jsoup を利用したウェブページのロード、DOM 操作
– TextToSpeech を利用した読み上げ機能

ソースコードはこちら: https://github.com/negito6/WikipediaSpeech-Android

# 動機と機能
Android の読み上げ機能を使ってウェブページ全体を読み上げようとすると、読み上げにはちょっと邪魔な文字列が沢山あります。特に Wikipedia でいうと、メニューにある各種リンクのテキストや、細かい数字が載った表などです。
また、(端末によってなのか知らないのですが) Chrome 上で「全て選択」をすると選択範囲が変更できないため、読み上げアプリにコピペする文字列として長い文章を選択しづらいです。

そこで、Wikipedia のページの文字列のうち、読んでほしいところだけを読み上げてくれるアプリを自作することに。

# 自分の Android 

元記事を表示

Androidをfastlaneで配信しようとして沼にハマった

## 要点
Androidでfastlane使って配信しようとして上手くいかず、沼にハマったけど、
実際はコマンドによるビルドで失敗していた話。

`JDK 8`を使わないとダメだよという話。
(筆者は`jdk-8u231-macosx-x64.dmg`をインストールして解決)

## 経緯
環境構築で、AndroidアプリをfastlaneによってbetaからDLできるような作りになっていた。

fastlane入れる。

fastlaneコマンドを叩く

はい!エラー!

“`:fastlane_error
$ bundle exec fastlane staging
[✔] ?
[14:31:08]: —————————————-
[14:31:08]: — Step: Verifying fastlane version —
[14:31:08]: —————————————-
[14:31:08]: Your fastlane version 2.137.0 m

元記事を表示

Flutterで作ったアプリをfastlane+App Distributionで配信する(Android編)

[iOS編](https://qiita.com/renoinn/items/e082d43dc4973b0c0ba7)の続き。AndroidもローカルからApp Distributionに配信できるようにする。

#1.環境を分けてビルド
Androidの方はめちゃくちゃ簡単で、この記事を参考にgradleで設定すれば問題なくできる。flavorはiOSの側と合わせておく。
https://medium.com/flutter-community/flutter-ready-to-go-e59873f9d7de

#2.fastlaneのインストール
[iOS編](https://qiita.com/renoinn/items/e082d43dc4973b0c0ba7)でインストールしているのでスキップ。

#3.Fastfileを作る
flavorを分けたら、それに合わせてFlutterでビルドする。App DistributionではAppBundleに対応していないので、apkで出力する。
テストする端末に合わせて32bit版と64bit版両方欲しかったので、オプションに`–

元記事を表示

Canvas: trying to draw too largeで落ちる

こんなエラーが出て落ちる

java.lang.RuntimeException: Canvas: trying to draw too large(******bytes) bitmap.

drawableに大きい画像があると出るそうですが、なかった。

代わりに、AndroidManifest.xmlの内に

android:hardwareAccelerated=”false”

を入れたら直りました。

元記事を表示

AndroidでスイッチUIの実装をいくつか比較検討してみた

# つくりたかった物

![スクリーンショット 2019-12-19 15.36.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14359/beade60c-e337-758a-933f-5fd684609654.png)

デザイナーさんからZeplinでいただいていたイメージ
これをどうやってつくるかプロトタイプを作成しながら比較検討しました。

# onDrawでCanvasに書いていく

![f5c76e3c-219d-4e0e-8d7d-0eb8c6adf31a-960x184r.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14359/2e93493c-85f5-eb48-d0e2-51960a25f6ee.png)

## 概要

AndroidのViewをカスタムする時にonDrawというメソッドの中で、
Canvasに独自で丸やテキストを書いたりする事でUIを再現する。

内部でホバーがどこに表

元記事を表示

OTHERカテゴリの最新記事