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

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

RecyclerViewをするするっとした時にどれぐらいViewが表示されているか確認する

# スクロールして、Viewが50%表示されたら何かするみたいな需要があるらしい

動画広告が自動的に再生されたりするあれですね。はい。

# 結論:こんな感じでどうでしょう

“`kotlin:ViewExt.kt
fun View.visiblePercentage(): Int {
val visibleRect = Rect()
getLocalVisibleRect(visibleRect)

return round(((visibleRect.right – visibleRect.left) * (visibleRect.bottom – visibleRect.top)).toFloat() / (width * height) * 100).toInt()
}
“`

# 可視化

![out.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/69858/14501b02-86a6-8365-ff1c-62ec70fb6926.gif)

きれいですね。

#

元記事を表示

DroidKaigi2020の発表予定資料をまとめてみた

# はじめに
中止に終わってしまったDroidKaigi2020ですが、
登壇予定の方々が発表予定だった資料を公開してくれています。
Twitterであれこれフォローしていてもうまく集めれていないですが、
ひとまずちょっとずつ集めていきます。

[DroidKaigiのTimetable](https://droidkaigi.jp/2020/timetable)順に並べています。
タイトルはTimetableの概要にリンクを貼っています。

# Day1(2020/2/20)

### 10:20-11:00
#### [Jetpack時代のFragment再入門](https://droidkaigi.jp/2020/timetable/155510)
[資料](https://t.co/5UUrsdgt12?amp=1)

### 15:00-15:40
#### [MDCの内部実装から学ぶ 表現力の高いViewの作り方](https://droidkaigi.jp/2020/timetable/156210)
[資料](https://speakerdeck.com/seto

元記事を表示

【Android】 キーボードのレイアウト押し上げ設定が反映されない。

# はじめに
**「キーボードを出すとEditText下に配置しているviewが隠れて見えなくなっちゃう。」**
っていうバグを直すのに、めちゃくちゃ時間かかった。
結局とても限定的な場面でだけ発生する事案だったんだけれど、ハマると全然気付けなさそうな原因だったので共有。

## どんな状況?

EditTextの下に表示させている”0/1000″がキーボードで隠れているのがわかる。

これじゃ全くカウンターの意味がない。
キーボード表示中も見えるようにしておきたい。

## 調べると

めちゃくちゃ出てくる。

【参考】
https://qiita.com/bird_tummy/items/3709d607c4ec88ad9e71
http://furudate.hatenablog.com/entry/2013/07/

元記事を表示

Kotlin, LiveData, coroutine なんかを使って初めてのAndroidアプリを作る(10)

[前回](https://qiita.com/kasa_le/items/68098dd9fb04c542bdd5)の続きです。

# 今回の目標

予告はFirebaseをつかった認証とDatabaseとしていましたが、ちょっと方針転換で、CI(継続的インテグレーション)をやります。
テストが割と長くなってきたので、サーバーにお任せしたいな、と。
それと、apkファイルへの署名についてもやっていきます。

# CIとは

CIとは、継続的インテグレーションです。**Continuous Ingegration**の略です。
ざっくばらんに言うと、ビルドとテストを自動化してどっかクラウドとか別サーバーに繰り返しやらせましょうねってことです。
やらせる契機は、ブランチへのpushだったり、PR(プルリク)だったり、masterへのマージだったり、いろいろ指定できるものですが、今回は、**masterを除くブランチへのpushで毎回ビルドとデバッグテストを行う**というのをやってみようと思います。

## 1. CIツール

いくつかのCIツールについて紹介します。
今回やるのは、

元記事を表示

AndroidをBLEペリフェラルにしよう

AndroidのAPIを使ってアプリを作成してスマホをBLEペリフェラルにして、PCのブラウザからBLEでつないでみます。
Androidのスマホには、豊富なハードウェアやネットワーク機能がありますので、これがあれば、同じWiFiアクセスポイントにつながなくても、PCのブラウザからBLEでつないでみることができます。

#Android

(i) BLEアダプタの取得

“`java
mBleManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
mBleAdapter = mBleManager.getAdapter();
“`

(ii) GATTサーバの作成

“`java
mBtGattServer = mBleManager.openGattServer(this, mGattServerCallback);
“`

mGattServerCallback は、BLEセントラルからの接続が完了したときや、ATT Read/Wri

元記事を表示

【Unity】【 Androidビルド向け環境構築】

さて、本日はUnityでARを試してみたい。
やりたいことは、Androidデバイスのカメラ機能に、指定の経度緯度にでっかい3Dモデルを出現させるというものだ。
既に先駆者がいるがそれはIPhonseだった。
[【ARKit】GPSで特定の場所にARを表示する](http://nn-hokuson.hatenablog.com/entry/2019/06/13/180702)

ちなみに似た様なことをAndroidでやっている記事はあったので、この2つの記事を参考にしつつ、そのやりたいことを実現しようと思う。
[UnityでARアプリの作り方1/4 環境構築+androidビルドからカメラ表示](https://techblog.raccoon.ne.jp/archives/2019090401.html)

そもそも僕はUnityでAndroid向けの開発はやったことないから、
まずは上記記事を参考にして環境構築から始める。

## 環境
Windows10
メモリ8G
SSD
Unity 2019.3.3f1

## レッツゴー

まずはAndroid Studioを公式サイトか

元記事を表示

いろいろなCoordinatorLayoutパターン

#最初に一言
スクロールに合わせて消えるあのかっこいいやつやりたい。-> なるほど。**CoordinatorLayout**ってヤツを使えばできると。-> えっナニコレ、**CoordinatorLayout**すごく使いづらいYO、…ってことで、今後のために**CoordinatorLayout**の組み合わせをメモっておこうと思った。

#CoordinatorLayoutって?
個人的にはめちゃくちゃ使いづらいレイアウトってイメージ。分類的にはFrameLayoutだとか。
簡単な一からの実装方法はこちらを参考に [ドラッグで始める最速CoordinatorLayout](https://qiita.com/YS-BETA/items/a1be1fd37dd69d242239)

これを使えばどんなことができるのか?
↓こういうよく見るスクロールに合わせて消えるヤツ
Library not loaded: @rpath/Flutter.framework/Flutter

– 内容:
Flutterでアプリを作成し、実機で確認をしようとした際に、
下記のエラーが発生したため、実機での確認ができませんでしたので、
情報共有させていただきます。
※情報の判断はご自身の責任でお願い致します。

`dyld: Library not loaded: @rpath/Flutter.framework/Flutter`

– 環境:
Xcode 11.3
iPhoneX(iOS13.3.1)
iPhone5S(iOS10.3.2)

– 結果:
[本家サイト](https://github.com/flutter/flutter/issues/49504)に追記がありました。特定の条件の場合、エラーが出てしまうようです。
– signing identity profile
– iOS13.3.1
ですと、ダメなようです。

iPhone5S(iOS10.3.2)では、実機で実行されることを確認致しました。

以上となります。?

元記事を表示

MockRetrofit で異常系のテストを行う時の注意

# TL;DR
MockRetrofit で異常系のテストを行う時は、 **例外を throw せずに、 `BehaviorDelegate#returning` にエラー内容を渡す。**

※例外を throw すると、UnitTest が中断されてしまいます。
## Good
“`Kotlin
class MockGitHubService(
private val delegate: BehaviorDelegate
) : GitHubService {

override fun listRepos(user: String): Observable> {
// 通信失敗を delegate する
val fakeCall = Calls.response(Response.error(404, ResponseBody.create(…)))
return delegate.returning(fakeCall).li

元記事を表示

Androidデバイス内で起動したvimの為のtips

いつもポエムの様に[DroidVim](https://play.google.com/store/apps/details?id=com.droidvim&hl=ja)の話を垂れ流す当記事ですが、最近androidからのsshクライアントを[Termux](https://play.google.com/store/apps/details?id=com.termux&hl=ja)に変更したため、「Termuxでもvimが必要」というケースが増え、vimrc内で条件分岐が欲しいケースがまた増えました。gitを使って共通の設定を使っているので、設定内で複雑な記述を避けるために環境(と端末)を特定する方法が必要なわけですが…

## 出来らぁ!

とはいえ、とりあえずDroidVimとTermuxのケースに絞ります。他の方法は非現実的でしょうし、[UserLAnd](https://play.google.com/store/apps/details?id=tech.ula&hl=ja)なら逆にこんなことで困りません。この2つのアプリで共通するのは、android内の`/data/dat

元記事を表示

AndroidのTextViewで省略表示(マーキー、…)

TextViewの省略表示(マーキーや…)について調べました。

# layout xmlで設定する場合
[android:ellipsize](https://developer.android.com/reference/android/widget/TextView#attr_android:ellipsize)属性を設定することで、ビューの幅よりも長い文字の場合に省略表示されます。

“`xml:layout.xml

元記事を表示

ドラッグで始める最速CoordinatorLayout

#最初に一言
スクロールに合わせてアクションバーとか消したいと思って**CoordinatorLayout**使おうとして、「これめちゃくちゃ使いづらい(泣)、そもそも**CoordinatorLayout**ってどんなレイアウトよ?,linearなのか?constraintなのか?、Viewがなんか重なるし、スクロールしても消えないし…」って思いをしたことがある人は自分だけじゃないはず。

レイアウトのネスト構造が分かりづらい**CollapsingLayout**…
CoordinatorLayout調べても**android x**に対応した記事が少ない…

今回はそんな体験を踏まえて**CoordinatorLayout**の始め方を書いておこうと思った。

#CoordinatorLayoutって?
これを使えばどんなことができるのか?
↓こういうよく見るスクロールに合わせて消えるヤツ
WOL を使って Mac や Android から Arch Linux を起動する

Wake-On-LAN (WOL) は LAN 経由あるいはインターネット経由でコンピュータの電源を投入する機能です。この記事は Arch Linux をインストールしたサーバーを Macbook Pro や Android スマホから起動できるようにした記録です。

# 前提条件

WOL を利用するにはマザーボードや NIC が WOL に対応しており、かつ、BIOS から WOL を有効に設定している必要があります。この設定方法はマザーボードによって異なりますので、PCI Power up, Allow PCI wake up event, Boot from PCI/PCI-E など WOL を連想させる名前の設定項目を探してください。

# WoL の設定の確認

BIOS の設定に加えて Linux 上の設定も必要です。WOL の設定を確認するために `ethtool` をインストールしてください。

“`console
# pacman -Syu ethtool
“`

`ethtool` を使って WOL の設定を確認します。`Wake-on:` が `d` になっ

元記事を表示

【未解決】Intentで表示したGoogleMapsに指定したカスタムラベルが表示されない

## Intentで表示したGoogleMapsにカスタムラベルが表示されない!?
ある日突然AndroidアプリからIntentでGoogleMapsを起動するとカスタムラベルが表示されていた箇所に緯度経度のような値が表示されている状態となっていた
GoogleMapsのバージョンを落として確認するとカスタムラベルが表示されるため、新しいバージョンのGoogleMapsで発生していると思われる

Google Maps Intents for Android
https://developers.google.com/maps/documentation/urls/android-intents

## 調べてみた
Google Issue Trackerに投稿はあるようだがまだ修正が行われていない様子
https://issuetracker.google.com/issues/129726279?enable_mat=true

Stack Overflowにも投稿がありGoogle Issue Trackerにコメントとスターをつけてほしいと書かれている様子
https://s

元記事を表示

Navigation componentをテストする

Navigation 2.3.0-alpha01からナビゲーションをテストするためのAPIが用意されたので使ってみます。
(2020年2月29日現在、最新バージョンは2.3.0-alpha02です。この記事も2.3.0-alpha02に基づいています。)

#従来のNavigationテスト
今までNavigationのテストをする場合、以下のようなテストコードでした。

“`TitleScreenTest.kt
@RunWith(AndroidJUnit4::class)
class TitleScreenTest {

@Test
fun testNavigationToInGameScreen() {
// Create a mock NavController
val mockNavController = mock(NavController::class.java)

// Create a graphical FragmentScenario for the TitleScreen
val

元記事を表示

[Android]スワイプができるユーザーの操作を止めないレビュー誘導を簡単に実装してみた

#はじめに
最速で作れることに重きを置いていたので、最適ではないかもしれませんが早く作りたい方や初心者の方のご参考になればと思い投稿しました。
####この記事の主なターゲット
+ 細かいところはすっ飛ばして、邪魔しないレビュー誘導を実装したい方
+ アニメーションとか座標とか自力で考えるのが難しい、又は面倒だと感じている方
+ レビュー誘導の実装に時間を掛けてらんねぇわって思ってるけど、ユーザーにウザがられたくもないーと感じてる方

#概要(どんな感じのレビュー誘導なん?)
画面のとあるスペースに(あるいはView同士の間に割り込んで)、レビュー誘導を表示します。
こんな感じのレビューですね
スクリーンショット 2020-02-28 14.59.15.png

このレビュー誘導をスワイプで削除できるように対応しま

元記事を表示

[やってみた][Android]UserLAndを使用したUbuntu環境の構築

## 環境

LenovoPad 601LV(Softbank TAB3)

Android 6.0

## 参考サイト

[Android で動く Linux 環境 UserLAnd が XServer XSDL に対応](https://wlog.flatlib.jp/item/1866)

[UserLAndの日本語化](https://yamadablog.web.fc2.com/articles/2/index.html)

## 手順

1. アプリストアより「UserLAnd」「XServer XSDL」をインストール

2. [Android で動く Linux 環境 UserLAnd が XServer XSDL に対応](https://wlog.flatlib.jp/item/1866)を参考に、UserLAndにUbuntuの環境を構築

3. XSDL、SSHで接続可能であることを確認

なお、/support/startXSDLServer.shの編集は下記のように行うこと

“`
#! /bin/bash

if [

元記事を表示

[やってみた][Android]Termuxのインストールとssh接続

## 環境

LenovoPad 601LV(Softbank TAB3)

Android 6.0

## 参考サイト

[TermuxでSSH Serverを起動する](https://qiita.com/dev100kg/items/11fdaac265c35e777664)

## 手順

1. アプリストアからTermuxをインストールし起動

2. Androidで以下のコマンドを実行

“`
$ termux-setup-storage

$ apt update
$ apt upgrede

$ apt install -y openssh
$ ssh-keygen
$ cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
$ chmod 700 ~/.ssh

$ sshd

SSH Server を終了する場合
$ pkill sshd
“`

元記事を表示

Dagger2使用時に引数ありのViewModelをinterface化する

# はじめに
本記事はDagger2 + MVVM構成のアーキテクチャで、引数ありのViewModelをinterface化する方法の備忘録です。

# リポジトリ
以下に今回のサンプルを置いてあります。
https://github.com/nanaten/Dagger-ViewModel-Interface

# プロジェクト構成
昨今のAndroid開発における標準的なMVVMを想定しています。

View (Fragment) -> ViewModel -> Repository ( -> API )

# 注意書き
今回、**基本的なDagger2の構成の解説は省略します。** 今回はViewModelに関わる部分のみ解説します。

※Dagger2の基本構成は[【DI】Dagger2+Retrofit2(+OkHttp3)+ViewModelのDIの最小構成](https://qiita.com/m-coder/items/267abba3f059c4c9ed4a)で解説していますのでそちらを参照してください。今回のプロジェクト構成も上記記事とほぼ変わりません。

# 解

元記事を表示

【Android】テキスト入力が正しくない時に該当のEditTextにエラーを表示する

# 概要
例えばログインフォームで情報を入力してログインしようとした時に、メールアドレスやパスワードが間違っていた場合などにエラーメッセージを表示したい。該当項目の入力欄の近くに表示する方法をまとめる。
![スクリーンショット 2020-02-28 17.56.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/124752/a94848b7-5037-0f6c-3b3d-4b673e452fce.png)

今回はマテリアルデザインの[`TextInputLayout`](https://developer.android.com/reference/com/google/android/material/textfield/TextInputLayout)を用いた。

# EditTextにエラーを表示する
“`fragment_form.xml

元記事を表示

OTHERカテゴリの最新記事