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

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

[Android]初歩的なログの制御を理解しよう

# はじめに

Androidではandroid.util.Logを使うことでLogcatにログを出力できます。
LogcatとはAndroid Studioに表示されている次のウィンドウのことです。

android.util.Logは簡単に使えるのでなんとなく仕様を理解しているそんな方も多いと思います。
筆者もその一人なのですがログの仕組みを理解してよいログを書けるように知識をまとめたいと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/79387/7272b175-ac20-d8ec-c03f-607c6612619c.png)

# どうやったらログを出力できるのか?

まずはログをどうやったら出力できるのかというところだと思います。
android.util.Logでは次の2種類の方法でログを出力できます。

## (1) ログレベルごとに定義される関数を利用する

次のようにLogでは各レベルのログを出力するための関数が用意されていて
簡単に特定のレベルのログを出力

元記事を表示

【独学】React Nativeを初心者が学習してみた part1

# はじめに
筆者のプログラミング学習歴は独学で5ヶ月ほど。
普段はRuby on Rails5を学習している初学者の私が、面白そうなのでReact Nativeを学習してみることにした。
iOSアプリ作ってみたいし、ついでにReactも学べばRailsで作ったWebサービスのフロントエンドが充実するかもしれない!といった安直な考えだけで学習を始めてしまったのだが、本当にこれで良かったのか…。
その答えはいずれ私がReact,React Nativeを習得した時にわかるだろう。

# React Nativeとは何か
[公式サイト](https://facebook.github.io/react-native/)や様々なqiitaの記事を読み漁ったが、[こちらの記事](https://qiita.com/Iwark/items/7c27e919bb71f8b256f6)にわかりやすくまとめられていた。
要は、React NativeはReactをモバイルでも使えるようにしたもの。
そしてそのReactはJavaScriptのフレームワークということ。
現時点ではこの程度しか理解で

元記事を表示

Android/iOSアプリのアーキテクチャ検討

# はじめに
アプリのアーキテクチャというと、僕が一番はじめに思い浮かぶのはMVCとかMVP、Fluxみたいな
今回のアプリでどのパターンを採用するかという点です。
ただ、現場でそのパターンだけ考えれば良いかというとそれ以外の部分に対しても
もっと検討することが多くて、何を検討するかがまとまっていないことが多いので、
自分の備忘録としてまとめてみることにしました。

# お題
・アプリが起動したらQiitaの記事の一覧を表示できる
・記事をタップしたら、Webのページで記事の内容を閲覧できる
・どの記事を見たのか、履歴を確認できる
・どんな記事を見たのか集計して、アプリの改善に使いたい
・(簡単にするため、認証はなし)

というQiita閲覧アプリで考えてみます

# 要素を分解してみる
> アプリが起動したらQiitaの記事の一覧を表示できるアプリ

QiitaのAPIを使った通信が必要。
https://qiita.com/api/v2/docs#投稿

APIはJSONなので、JSONを解析できるライブラリがあると楽そう。
リスト表示であれば、標準コンポーネントで十分。

> ・

元記事を表示

Kotlin resの話

# KotlinでのAndroidアプリ開発
参考文献
[App resource overview | Android Developers](https://developer.android.com/guide/topics/resources/providing-resources)

## res(リソース)ディレクトリの話

プロジェクト作成時に生成されるresディレクトリとその中身

– res
– drawable
– layout
– mipmap
– values

他にもmenu, fontなどのリソースディレクトリがresディレクトリ内でサポートされている.しかし,menuなどのリソースディレクトリを活用したい場合は自分で作成する必要がある.

### drawableについて
一般的に,画面上に描画するグラフィックを保持.
.png, .jpg, .gifなど.

### layoutについて
ユーザーインターフェース(UI)のレイアウトを定義するXMLファイルを保持.

### mipmapについて
さまざまなランチャーアイコ

元記事を表示

Android Studio 3.5.1でSync Project with Gradle Filesが見つからない件

# 結論
ありました。
File -> Sync Project with Gradle Files
![sync.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85631/73acb547-850e-6d69-280b-eb8818b6ad92.png)

# ヘルプなどが改善されてなかった

[Android Gradle プラグインのリリースノート|Android Gradle プラグインのアップデート](https://developer.android.com/studio/releases/gradle-plugin?hl=ja#updating-plugin)

>Android Studio のメニューバーから [Tools] > [Android] > [Sync Project with Gradle Files] をクリックします。

ないし
![sync2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com

元記事を表示

【Flutter】 アプリ開発入門 Hello Flutter!!

# この記事で紹介すること

FlutterのSDKインストールから、Hello Flutterアプリ開発までを紹介

1. FlutterSDKインストール
2. Android Studio にFlutterプラグインのインストール
3. Android Studio にDartプラグインのインストール
4. Hello Flutterアプリ起動

※私自身すでに、Xcode、Android Studioはインストール済みでしたので、そちらはインストールを済ませておいてください。

# Flutterとは

[Flutter](https://flutter.dev/)は、Googleによって開発されたモバイルアプリケーションSDK

↓↓↓公式サイトから引用↓↓↓

“`
Flutter allows you to build beautiful native apps on iOS and Android from a single codebase.
(Google翻訳: Flutterを使うと、iOSとAndroid上で単一のコードベースから美しいネイティブアプリケーショ

元記事を表示

今の時代はAPKをコマンドで署名するなら、jarsignerではなくapksignerを使う

# あらすじ

現場ではAndroid TVの開発をやっているのですが、シェルスクリプトで署名済みのAPKを作ろうとした時に、jarsignerだとエラーが出るなどしてうまくいかなかったので、色々調べてみました。

# jarsignerで署名ができないパターン

どうやらAndroid 7.0以上ではできないらしい。
[Android 7.0 以上では jarsigner ではなく apksigner で署名する | メモ帳](https://egg616.com/%E6%8A%80%E8%A1%93%E3%83%A1%E3%83%A2/post-121/)

公式のページを見ても、apksignerについてのみ記載されていた。
[apksigner  |  Android Developers](https://developer.android.com/studio/command-line/apksigner?hl=ja)

# 事前準備

Android SDK Build Tools のリビジョン 24.0.3 以上で利用可能です。
事前にパスを通してお

元記事を表示

(非Root) Android版LINEが溜め込んでいる画像を削除する

#スマホのストレージをLINEが圧迫している
今や日常のコミュニケーションツールとなったLINEですが長年使用しているとストレージをとんでもなく圧迫しますよね.私のXperia X Performanceの場合,LINEだけで5GB近くストレージを占有しています.本体ストレージが32GBでシステム領域がその半分ですから,如何にLINEが肥大化しているかがお分かりいただけると思います.
![Screenshot_20191103-104004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501664/2a52763f-23cf-7251-d226-1910a6d6d010.png)

そんなLINEですが,主な保存ファイルは画像・動画のようです.そしてこれらはLINEの設定画面等から個別に削除することができません.(トーク丸ごと削除はできますが,画像だけ消して軽くしたいですよね)

※※ここから先はAndroid(LINE)のシステム領域へちょ

Android Dev Summit ’19で紹介されたサンプルから学ぶ、AndroidのTheme、Style、Colorの設定方法

Android Dev Summit ’19のDeveloping Themes with Styleで説明されているリソース定義の方法メモという感じで説明しようと思ったのですが、

全体的に、このリポジトリに入っている要素についての話が多かった、かつコードから参考になる部分が多かったので紹介していきます。
https://github.com/material-components/material-components-android-examples/

# Themeの定義方法

Owlではピンクのテーマの中にブルーのテーマが出てきたりなど複数のベースのテーマを切り替えることができる仕組みがあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27388/4580716d-1a57-33e3-eef1-80443cb09c25.png)

Owlではそのピンクのテーマとブルーのテーマで共

Medium on Android で GoldenDict を使う

Medium で記事を読んでいると時折知らない単語が出てくる。そんなとき iOS であれば簡単に辞書を引けるのだろうが、あいにく Android ではこのへんのサービスレベルが低い。ブラウザ上ではアドオンを使って似たようなこともできるようだが、Medium の専用アプリを使っているとこの手も使えない。結局、範囲選択→コピー→アプリ切替→ペーストという冴えない動作が必要になる。[Look Up](https://play.google.com/store/apps/details?id=gaurav.lookup) を使うと英英辞典を引けるらしいが、日本語や非西欧言語は蚊帳の外のようだ。

Medium アプリでは共有メニューから選択範囲を辞書へ渡すことも一応できる。一応、というのは、実際に渡される文字列は “`“選択文字列” by AUTHORNAME https://link.medium.com/ARTICLEID“` となるからだ。これでは辞書を引くことはできない。英語以外の言語も扱う必要から、私は [GoldenDict](https://play.google.com/s

Glide4系のDiskCacheについて

ギガを食うのを改善したいとの要望がありGlideのDiskCacheを調査したときのログ

## TL;DL
– /data/data/app_dir/image_manager_disk_cacheに保存される
– キャッシュアルゴリズムはLRU(Least Recently Used)
– キャッシュ容量はデフォルトで250MB(250*1024*1024)

## キャッシュの保存場所や容量について

#### デフォルトはinternalなimage_manager_disc_cacheディレクトリに容量250MBまで保存可
#### これらはGlideModuleを定義すれば変更可

“`example.java
@GlideModule
public class YourAppGlideModule extends AppGlideModule {
@Override
public void applyOptions(Context context, GlideBuilder builder) {
builder.setDiskCache(new Exte

Firebase Dynamic Linksによる起動時の細かい挙動メモ

本当に細かい挙動の話です。

Firebase Dynamic Links(FDL)が起動されるパターンは以下があります

1. アプリ未インストール時、FDLによってGoogle Playからインストールされてから起動される場合
2. アプリがインストールされている時、FDLからアプリを直接起動する場合

## 1. アプリ未インストール時、FDLによってGoogle Playからインストールされてから起動される場合

activity.intent.dataString は空になっており FDLの`FirebaseDynamicLinks.getInstance().getDynamicLink(activity.intent)`からでないとリンクが取得できない。
Google PlayやLauncherなどから起動されてくるので当たり前といえば当たり前なのですが、そうなります。
ちなみにFDLはどのようにリンクを取得してくるかというと、プロセス間通信によって、Google Play Servicesから取得しているようです。

https://github.com/firebas

Android FragmentContainerViewとは

# はじめに
AndroidでFragmentを表示する際のコンテナに、何を利用していますか?
一般的なコンテナとして``を、Navigation ComponentのFragmentのコンテナとして``を利用できます。

これからはandroidx.fragment 1.2.0から導入された`FragmentContainerView `を利用するべきだと考えています。
この記事では`FragmentContainerView`を調査した結果を記載しています。

# FragmentContainerViewの概要
ActivityでFragmentを表示する際にActivity側でFragmentのコンテナとなるViewを作成する必要があります。
コンテナとなり得るViewの1つがFragmentContainerViewです。
xmlで記載する場合の例が下記です。

“`xml:example.xml
Android NavigationとSharedViewModel

# はじめに
Navigation Architecture ComponentはAndroid Jetpackに含まれているコンポーネントです。
AndroidアプリにおけるActivityやFragment間の画面遷移をシンプルに実装することができます。
1つのActivityをホストとし、複数のFragmentを管理するように設計されています。

複数のFragmentで共通する処理をActivityに任せたくなるシーンに出会いませんか?
色々な実現方法があると思いますが、今回はSharedViewModelを用いた方法を紹介します。

言語はKotlinでバージョンは1.3.50です。

# 概要
Navigationを利用し、FragmentからFragmentへ値渡しをする場合、通常Safe Argsを用いた型安全の値渡しをします。
しかし、ホストしているActivityと各Fragmentで何かを共有する場合工夫が必要です。
また、ToolbarのTitleの変更や、Snackbarの表示は各Fragmentで行うと、同じような処理を複数記述することになるので、まとめたい

ActionBarに画像を表示する

# はじめに

Androidアプリ作成において、ActionBarに画像を表示する方法のメモになります。

アイコンを表示する方法が出てきたり、ToolBarに差し替えましょう、とあったのですが、ロゴなどの画像をそのまま表示する方法は見受けられませんでした。

筆者はAndroidに詳しくなく、知っていれば簡単なのに検索しても簡易的な記事が見つからなかったので記事として残します。

環境は、

– AndroidStudio: 3.4.1
– Kotlin: 1.3.40-release-Studio3.4-1

です

# 結果

【Android】DataBindingでチェックボックスの色(buttonTint)を動的に変更する

# 背景
下記の仕様を見たす画面を作るために、チェックボックスの色を動的に変更する必要がありました。

– チェックボックスが全て選択済みの場合のみ、ボタンタップで処理を行う
– 未選択のチェックボックスがある状態でボタンをタップした場合は、未選択のチェックボックスを警告色にする
– 他のチェックボックスの状態が変わったら再度デフォルト色に戻す

完成イメージはこちらです。
![screenshot.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136368/327f9b7b-0f1c-b118-3504-ad37b52e2bbf.gif)

# 実装方針
MVVM + DataBindingで実装します。
ViewModelでチェックボックスの色と選択状態を保持します。

チェックボックスの色はColorStateListで実装します。
デフォルト色と警告色の2種類のColorStateListをxmlで用意します。

チェックボックスの色を変えるにはCompoundButtonの属性buttonTi

Ionic + Firebaseで記録するカレンダーアプリを作る その2 実機でビルド

#完成イメージ

#はじめに

環境は以下の通り
・ionic4
・Nativeとの橋渡しには[capacitor](https://capacitor.ionicframework.com)を使用
・カレンダーについては[ionic2-calen

RobolectricでBackボタンのテスト

Androidのローカルテストで、フレームワーク依存のコードのテストを書く際にはみなさん、Robolectricを使っているかと思います。
今回はActivityやViewに対するBackボタン=戻るボタン処理の挙動をテストする方法をメモります。

大した内容じゃないですが、再度調べなくて良いように。

## なぜ戻るボタンのテストをしたいか?

普通にライフサイクルのテストとかするなら、activity.pause()やactivity.finish()などを呼ぶのがいいと思います。
今回テストしたかったのは、以下の動作確認がしたかったからです。

– Activity内のViewが特定条件で戻るボタンをconsumeするので、条件を変えた際の戻るボタンのイベント伝播を確認したい。
– Activityが戻るボタンを受けとった際の処理をテストしたい。
– onBackPressedがコールされること。
– 特定viewに対するkeyEventを送信することでテストを記述したい。
– 手動で呼べば再現できるけど、なるべくフレームワークの実装通りに伝播させたい。

##

[ Android ] 画面回転に対応したレイアウト変更

本記事では画面回転によってレイアウトを変更する実装方法について述べる。

##前準備
まず端末の
「**設定**」→「**ディスプレイ**」→「**画面の自動回転**」を**ON**にして頂きたい。
これに気づかず、実行してもうまくいかなかった。
準備ができたら早速実装である。

##実装
 とはいうものの、かなり簡単である。
**「res」にlayout-landディレクトリを作り、
その下に横画面用レイアウトファイルを作る**
だけである。
landは「landscape」の略で、
要するに横画面という意味である。
縦画面用ディレクトリはデフォルトで入っているlayoutである。

・ディレクトリ構造図
res
– layout    -activity_main.xml(縦画面用レイアウトファイル)
– layout-land -activity_main.xml(横画面用レイアウトファイル)

これ以外は何もする必要はない。
(マニフェストなどもいじらない)

実行して、縦横を変えてみると、それに応じた画面が表示される。
以上。

【java】if文でString型の条件文が無視される

#javaでif(string == “test_string”)を使っているあなた.

“`java
String string = “test_string”;

if(string==”test_string”){
System.out.println(“SUCCESS”);
}
“`

このようなString型の条件文にうまく入れないことがあります.

そんなあなたに朗報です.

“`java
String string = “test_string”;

if(string.equals(“test_string”)){
System.out.println(“SUCCESS”);
}
“`

こちらを使えば入れます.

equalsメソッドの詳しい解説は[こちら](https://engineer-club.jp/java-equals)を参照してみてください!