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

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

星1個のアプリなんて作りたくない

「 [Labomartの軌跡。構想から運用まで](https://note.com/unotovive/n/n578baf44da60) 」 ( @unotovive )
↑[ゆめみ Advent Calendar 2019](https://qiita.com/advent-calendar/2019/yumemi) の前回の記事

# はじめに

 Android アプリ開発者のみなさん、Google I/O 2018 の下記のセッションは見ましたか?

ちなみに、私は、、、、、、見てないです :rolling_eyes:

セッションでは、Play Store で星1レビューのついた原因分析を公開して

原因の42% は**「アプリのクラッシュを含む安定性の問題」**だったみたい。

[](https://youtu.be

元記事を表示

Flutter Interact 2019のまとめ

# はじめに
この記事は[Flutter #2 Advent Calendar 2019](https://qiita.com/advent-calendar/2019/flutter-2)の11日目分です。

今年もすぐに枠が埋まってしまっていたのでFlutter Advent Calendarに参加する予定はなかったのですが、ふとカレンダーを覗いていみると11日枠が投稿されずに空いていたのでちょうどFlutter Interactが開催されたので急遽この記事を書くことにしました。

Flutterの最新情報に興味がある方はFlutterウィークリーもよかったらご覧ください
https://qiita.com/tags/flutterweekly

# Flutter Interact 2019とは
https://developers.google.com/events/flutter-interact

> Flutter Interact is a day dedicated to creation and collaboration with the world, inspi

元記事を表示

Android エンジニアがアプリ上で WebSocket を(比較的)易しく使うソリューション

この記事は [NewsPicks Advent Calendar](https://qiita.com/advent-calendar/2019/newspicks) の14日目の記事です。

# はじめに
NewsPicks で Android エンジニア兼、サーバサイドエンジニア兼、小さなチームのリーダをしている (何でも屋) の [kozmats](https://github.com/kozmats) といいます。

弊社は基本的に自由に副業が可という事もあり、自分もいくつか友人のプロジェクトを手伝ったり、個人的に仕事を請け負ったりする事があるのですが、その中の一つに Android で WebSocket どうしても扱わないといけない事がありました。過去 WebSocket を使うアプリを実装した事がなく少し実装までの調査に手間取ってしまった為、備忘録の意味も込めて記事にしてみました。

# そもそも WebSocket とは…?
アプリエンジニアが日々アプリを作っていく中で、REST や GraphQL は扱った事があるが、(使用しているライブラリの中で実は WebSock

元記事を表示

Google I/Oアプリで見る非同期通信

# はじめに
こんにちは!
andfactory App Div所属Androidエンジニアの久住です!
12月も中盤にさしかかってきて、忘年会やら年末調整やらで何かと忙しい時期ですね。

突然ですが、皆さんは**Androidの非同期通信**ってどのように実装してますか?
**ドメイン駆動設計**や**レイヤードアーキテクチャ**など、大枠の考え方はすぐに決められても、「レイヤー間の値の受け渡しはどうするか」とか「取得した値をどのようにしてViewに反映するか」など、細部については考えることも多くてなかなか決めづらいですよね!

というわけで!
僕の記事では、**Google I/O 2019の公式アプリのコードから、Androidにおけるモダンな非同期通信の実装方法**を見ていきたいと思います!
これでプロジェクト立ち上げ時にも、ズバっと非同期通信の実装方針を決められちゃう(かも)!

## プロジェクト構成

非同期通信に関係のあるディレクトリだけ切り抜いてみます。

iosched
├ mobile → Presentation層(View/ViewModel)
├ mod

元記事を表示

minSdkVersionが17以下のAndroidアプリにUI Automatorを導入する

UI Automatorは、minSDKVersionが17以下だと使えない。
ただ、UIテストの時だけminSdkVersionを18以上をすれば、UI Automatorは使える。
その設定方法を説明する。

# 設定方法
## 1. UI Automatorを導入する

「app/build.gradle」に以下を記述する。

“`gradle
dependencies {

androidTestImplementation ‘androidx.test.uiautomator:uiautomator:2.2.0’

}
“`

## 2. テスト用のAndroid Manifestを追加する

「app/src/androidTest/AndroidManifest.xml」に以下を記述する。

“`xml
そのアプリ…文字サイズをデカくしてもUI崩れないですか?

## はじめに

[株式会社Tenxia](https://tenxia.jp/)のCEOの岡部([Twitter](https://twitter.com/_masaokb))です。

この記事の内容は[Flutter Meetup Tokyo #13](https://flutter-jp.connpass.com/event/155559/)の自身のLTを記事に起こしたものです。

[![スライド](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/530822/6db15fdb-61c6-2b4f-8020-aa5fe4aaaf8e.png)](https://docs.google.com/presentation/d/1hvSX3ZzXPZZr3HeoBNhJiqSff-bPPa-UhhszgmClN2Q/edit?usp=sharing)

## これはなに

【Android開発】フラグメントでタイトルを共通化する

フラグメントとは?

フラグメントはアクティビティの中で扱う部品です。アクティビティは一つの画面に対応するものでしたが、その中で表示をしたりその切り替えなどの処理をひとまとめに行うことができます。これらを使いこなすことによって下記の図のように部品を共通化することができます。個人的にはwebのSPAに似てる気がしますね。

![AndroidDraw_Fragment1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274030/c2706fe3-9580-db60-8f5c-026579ce82f3.png)

実行環境

  • SDKのバージョン:Android29
  • エディタ:AndroidStudio
  • 使用言語:kotlin(今回はいじっていないです)

フラグメントファイルの準備

まず、app→New→Fragment→Fragment(Blank)の順番で新しいF

Android端末から開発PCに向けてポート転送を行う

本記事は、[サムザップ Advent Calendar 2019 #2](https://qiita.com/advent-calendar/2019/sumzap2) の12/13の記事です。
昨日は @kazuhiro1128 さんの [Next.js + FirebaseAuthでサインイン機能を実装してみた](https://qiita.com/kazuhiro1128/items/4fb6c5162116615bd045) でした。

本日はAndroid端末での実機デバッグで役立つコマンドと、その使用例をご紹介したいと思います。

## adb reverseコマンド
`adb reverse`コマンドは端末からPCへのポート転送を行うコマンドです。

この逆、PCから端末へポート転送する`adb forward`コマンドは、
UnityのProfilerを繋ぐために使うのでよく知られているのではないでしょうか。

私はこのコマンドを、

* PCでProxyサーバを立てて、通信内容を確認したり書き換えてデバッグする
* PCでWebページをホスティングして、端末での動作を

元記事を表示

mockkのslotを使って通信周りの負債解消のリファクタリングをする

ハロー、[@seto_hi](https://twitter.com/seto_hi)です。

最近は本業でも副業でも3年以上前に作られた既存プロダクトの負債解消を行っています。
負債になってしまった実装に対して、mockkのslotを使ったテストによって動作の同一性を保証しながらリファクタリングしていく方法について紹介します。

# どんな場面で使えるか
ほぼブラックボックスになっている負債があるとします。
負債クラスのメソッドを叩くと値が返ってくるようなものだと結果をassertするだけでテストができますが、そうもいかない場合があります。
例えば通信周りが負債になっており、サーバーにどのようなリクエストを送信しているかわからない場合などです。

そのような場合であっても、その負債が最終的に呼ぶクラスがmockやspyができるようになっており、呼ばれるメソッドに引数がある場合に使えます。
例えば[OkHttpClient](https://square.github.io/okhttp/4.x/okhttp/okhttp3/-ok-http-client/)であればnewCallとい

元記事を表示

アダプティブアイコン(Adaptive Icon)にとりあえず対応する

# アダプティブアイコン(Adaptive Icon)とは?
Adaptive Icon(アダプティブアイコン)とは、Android 8.0以降から実装された機能のこと。

Adaptive Iconとは?


背景とか説明はこのサイトが分かりやすいです。

背景画像の上に、メインとなる画像を重ねて、
その上から中心に丸や四角の穴が空いたマスクで覆って表現するみたいです。

# 対応方法
## アイコンにする画像の準備
アダプティブアイコンは2つの画像が必要です。
– アイコンの前面になる画像
– アイコンの背景になる画像(色

元記事を表示

Android Java FragmentでCameraXライブラリ使ってみた

Google I/O 2019で紹介されたCameraXをJavaでFragment上で試してみたので簡単にご紹介。

##準備

公式の[チュートリアル](https://codelabs.developers.google.com/codelabs/camerax-getting-started/#0)をみながら進めていくと楽チンなのでこちらを見ながら進めていきます。

プロジェクト作成や、dependenciesの追加などはチュートリアル通りに進めるだけなので本記事では割愛。

##プレビュー用のビューを追加
Fragmentで表示するlayout.xmlにTextureViewを追加します。

“`xml

元記事を表示

AzureSpatialAnchor2.0 と Unity で Hololens、iOS、Android の境界を超えた AR 体験を作る

こちらは AR Advent Calendar 2019 13日目の記事です。

# はじめに
ARKit、ARCore を使ったモバイル端末での AR もさることながら、Hololens、MagicLeap だけでなく、Nreal などメガネ型デバイスも界隈を賑わせているかなと感じています。各デバイスでそれぞれの世界を見ながらも、共通の情報も見るという世界が、すぐ近い未来にきていると思っています。

そこで気が付いたら Azure Spatial Anchor のバージョンが 2.0 に上がっていたので、このサービスとUnityを使い、Hololens、iOS、Android の各端末から、同じ位置に同じオブジェクトを出して表示するという単純なAR体験をやってみようと思います。

# Azure Spatial Anchor 2.0 を使ってみる

* [クイック スタート:Azure Spatial Anchors を使用する iOS アプリを Swift または Objective-C で作成する](https://docs.microsoft.com/ja-jp/azure/s

元記事を表示

Lottieを使ったAndroidのアニメーション実装

#はじめに
これは[CyberAgent 20新卒 Advent Calendar](https://adventar.org/calendars/3976)の12日目の記事です!

前日は[poccariswetさん](https://twitter.com/poccariswet)の記事になっています。
-> https://poccariswet.hatenablog.com/entry/2019/12/11/000037

同期の中からAdventCalendarをやろうなんて自発的に声が上がるなんていい会社に入ったなぁなんて思いながら、この記事を書かせてもらいます!:muscle:

#自己紹介
自己紹介をしますと、僕はAyumuと言います。twitterではあゆ?(-> https://twitter.com/airagu950) という名前でやってます。Python触ったり、java触ったり、フロント満遍なく触ったり今ではAndroidを触るためにKotlinを必死こいて勉強したりしてます。大学ではHCI分野の主にWebレイアウトについて研究をしてます。

趣味は絵を書く

元記事を表示

AndroidStudio4.0 Canaryでgradleを4.0.0にするとエラーになった

# はじめに
タイトルの通りです。
エラーになったので解消までの手順を備忘録として書いておきます。

# 何をしたか
「AndroidStudioの右下に、gradleの最新があるからupdateする?」
と出たのでアップデートしたらエラーが出ました。

“`
Could not find org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.60-eap-25
“`

こんな感じでエラーが出ました。

# 解消方法
https://androidstudio.googleblog.com/2019/10/android-studio-40-canary-1-available.html

ここを読め!なんですが、以下な感じです。

TopLevelのbuild.gradleに以下を追記しましょう。

“`:./build.gradle
buildscript {
repositories {
     ・・・
maven { url ‘https://dl.bintray.com/kotlin/kotlin-eap’ }

元記事を表示

Wifi経由でadbコマンドを実行しよう(1.Windows編)

#はじめに
 Androidアプリのデバッグといえば
ケーブルでPCとAndroid端末を接続して行うものだと思っていましたが、
Wifi経由でもadbコマンドを実行することが可能です。

#使用ツール
– Windows PC
– コマンドプロンプト
– Android端末(Wifi接続して、IPアドレスを振っておくこと)
– Wifi環境

#手順
1. Android端末の開発者モードをONにしてUSBデバッグを可能にする。
2. PC、Android端末ともにWifiに接続。
3. adb接続。
4. adbコマンドを実行。
5. adbを切断。

#1. Android端末の開発者モードをONにしてUSBデバッグを可能にする。
#2. PC、Android端末ともにWifiに接続。
手順1、2は略。
#3. adb接続。
コマンドプロンプトで下記コマンドを実行してadb接続をします。
`:5555`部分は省略可能です。

“`
adb connect 123.456.789.012:5555
“`
#4. adbコマンドを実行。

接続している端末の確認

“`
adb

元記事を表示

Flutter の DatePicker に関するTips

## はじめに

[ユアマイスター Advent Calendar 2019](https://qiita.com/advent-calendar/2019/yourmystar) の12日目の記事です。

ユアマイスターでは、 [あなたのマイスター](https://yourmystar.jp/) でハウスクリーニングや修理などのサービスを提供するプロや職人が利用する店舗向けアプリ「マイスターアプリ」 ([Android版](https://apps.apple.com/jp/app/id1478724946?l=ja), [iOS版](https://apps.apple.com/jp/app/id1478724946?l=ja)) があります。
このアプリでは、Flutterを採用しており、2019年10月にリリースされました。(その他の技術スタックは [こちら](https://yourmystar-engineer.hatenablog.jp/entry/2019/11/25/090000))

今回は、DatePickerを使ったTipsを紹介したいと思います。

## 基

元記事を表示

GitHub ActionsでGradleのユニットテストの結果を取得する

#GitHub ActionsでGradleのユニットテストの結果を取得する

GitHub ActionsでAndroidのユニットテストを実行し、結果をダウンロードできるようにしてみます。
ワークフローの実行中に生成された物をアーティファクトというそうです。
今回は以下を参考にしてトライしてみます。

https://help.github.com/ja/actions/automating-your-workflow-with-github-actions/persisting-workflow-data-using-artifacts

### ymlファイルを編集する

“`ruby:*.yml
name: branch2_CI

on:
push:
branches:
– branch2 # Push events on master branch
jobs:
build:
runs-on: ubuntu-latest

steps:
# Checking out
– uses: acti

元記事を表示

Androidアプリで謎の接続エラーが発生した話

## はじめに

こんにちは、[ラクス Advent Calendar 2019](https://qiita.com/advent-calendar/2019/rakus) 13日目担当の[@rs_tukki](https://twitter.com/rs_tukki)です。
気が付けばもうこれで中間地点です。一ヶ月って早いですね。

ちなみに昨日は[i476bさんの記事](https://qiita.com/i476b/items/4a5de2af75074f98eab3)でした。私も来年こそはC#勉強したい!
今日は、スマホアプリの開発中にやらかした(というか気づけなかった)ささいなミスのお話です。

## 背景

現在私が携わっているプロダクトでは、大元となるWebアプリケーションに加えてスマホアプリを2つリリースしています。それぞれAndroidとiPhoneで出しているので開発するものは4つ。
今年の4月に開発を引き継ぎましたが、そのころには既に4つともリリース済みで、後はWeb側の改修に合わせてアップデートを繰り返していくだけなので~~慣れない言語にひいこら言いながら~~

元記事を表示

play-services-oss-licenses で表示する一覧画面と詳細画面の Toolbar のタイトルの色を白くする

アプリ内で使用している OSS の一覧と詳細を表示している Activity の Toolbar のタイトルの色を白くしたく、いろいろと試行錯誤しました。
いつの日かの自分の参考のための備忘録です。

実装の詳しい手順に関しては以下の記事が参考になりますので割愛させていただきます。
https://qiita.com/sho5nn/items/f63ebd7ccc0c86d98e4b

公式URL
https://developers.google.com/android/guides/opensource

#結論
そこまで難しいことは無いのですが、結論から先に言うと、
DarkActionBar を parent に持つ style を定義してあげる
です。

以下コードです。
まずは OssLicensesActivity と OssLicensesMenuActivity に適用する style を作成します。

“`xml