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

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

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

元記事を表示

51歳からの(現52)プログラミング 備忘 FileOutputStream android.content.Context.openFileOutput(java.lang.String, int)’ on a null object reference

こんなコードがあったとする

“`java:SampleActivity
Context context;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContantView(R.layout.sample);
context = getApplicationContext();

new AsyncTask().execute();
}

public void fileWrite(){
try{
openFileOutput(“fileName”,Context.MODE_APPEND);
}
}
“`
“`java:AsyncTask
@Override
protected void onPostExecute(String s){
super.onPostExecute(s);

SampleActivity sampleA = new Sample

元記事を表示

Androidの用語を整理

#Androidの基礎用語を整理
##Context
・アプリケーションの環境情報とかをグローバル(Android OSの全域)で受け渡しするためのインターフェース
・アクティビティの起動とかブロードキャスト、インテントの受け取りといった他のアプリからの応答を行え、アンドロイド特有のリソース・クラスにアクセスすることも出来る。
 アプリ全体の状態を持っていて、何から起動されたかどういう状態か、何にアクセスしようとしているか、といった情報を受け渡すために使っている。ということでいいのかも。(次のサイトから抜粋)
http://individualmemo.blog104.fc2.com/blog-entry-41.html
#Activity
アプリの画面を表示するためのコンポーネントであり、また、状態の保存・復帰のための仕組みや、他のコンポーネントを呼び出す機能がある。ライフサイクルは今後追加
#Intent
 各コンポーネントの要求をシステムに伝えて、意図にあった相手のコンポーネントとつながる。
#Fragment
FragmentはActivity上で運用されるものの独立した機

元記事を表示

アンドロイド Camera Xとトーチライトの組み合わせ

#Camera Xでライトをつける

**Camera X**でカメラの機能を実装して、トーチライトを使おうとしたら、あれっ、ライト付かないんだけど…ってなったので今後忘れないようにメモ。

####Camera Xの前までやってた書き方↓(※Camera Xではライトが付かなかった例)

“`kotlin
val cameraManager = getSystemService(Context.CAMERA_SERVICE) as CameraManager
cameraManager.registerTorchCallback(object: CameraManager.TorchCallback(){
override fun onTorchModeChanged(cameraId: String, enabled: Boolean) {
super.onTorchModeChanged(cameraId, enabled)
cameraID = cam

元記事を表示

androidのtargetSdkVersionを’R’に変更する

#はじめに
探すの戸惑ったのでここにメモしておきます。

#参考
https://developer.android.com/preview/setup-sdk?hl=ja

#解決サンプル

“`build.gradle
android {
compileSdkVersion ‘android-R’

defaultConfig {
targetSdkVersion ‘R’
}
}

“`

#targetSdkVersionについて少し
対応する最大のバージョン

元記事を表示

DroidKaigi2020アプリで使われているInjectableについて

[DroidKaigi2020公式アプリ](https://github.com/DroidKaigi/conference-app-2020)で使われている`Injectable`が良さげだったので記事にします。

#Injectable
当該のプルリクエストは[こちら](https://github.com/DroidKaigi/conference-app-2020/pull/618)です。

`Injectable`はDaggerのInjectを便利にするためのInterfaceです。
元々はGoogleの[architecture-components-samples](https://github.com/android/architecture-components-samples)にあるGithubBrowserSampleで使われているコードです。
イメージとしては、`DaggerFragment = Fragment + Injectable`です。

“`Injectable.kt
interface Injectable
“`

“`SearchSess

元記事を表示

Docker を用いた AOSP Android10 のビルド時間の測定結果

## はじめに

[AOSP Android10](https://source.android.com/setup/start/android-10-release) 全体のビルド時間を測定したので、結果を共有します。
ビルド環境には Docker (Ubuntu 18.04) を用いました。
ビルド時間短縮のポイントは、これまで AOSP のワークスペースに組み込まれてきた
`ccache` が [Android10 からはサポートされなくなった事](https://android.googlesource.com/platform/build/+/7556703f0dfab14c91c03dab1a3c25f6386268d4) を受けて、

> Our binary was rather old, and for a variety of reasons we haven’t kept
it updated.

ビルド環境に `ccache` をインストールし、有効化する必要がありました。

> but if you still want to use ccache, con

元記事を表示

【Android-Codelabs】10/36 〜 Fragmentの使い方 〜

2019年にGoogleから,Web上でAndroidを学べるコースが提供されました.([Android Kotlin Fundamentals Course](https://codelabs.developers.google.com/android-kotlin-fundamentals/))
この記事では,そのコースを実際にやってみてアウトプットしてみるといった内容です.
何かツッコミなどあれば編集リクエストかコメントかTwitterでいただければ修正いたします

#今回学ぶこと
・Fragmentをアプリに追加する方法

#目指す成果物

今回は,このようなクイズアプリを作っていきます.

3-1-1.png

アプリの仕様
・左のスクリーンショットのタイトル画面で,ゲームを開始します.
・真ん中

元記事を表示

Android StudioでUsageStatsManagerを使う方法(他のアプリの起動時間を調べる方法)

## 前提

Windows 10
Android Studio最新版
Java

**この方法は、2020/02/27時点では私のスマートフォンのおいては正常に動作しました。**
**仕様変更があるかもしれないので、コピペしてうまく行かない場合は公式ドキュメントを参考にしましょう。**

## やりたいこと

他のアプリがその日どれくらい起動していたかを取得する必要がありました。
例えば、下の画像はActionDashというアプリで、他のアプリの起動時間を表示しています。
[](
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183842/204c2e67-128d-8889-6ae4-172c6a1155a8.png)
)

結論から言うと、[UsageStatsManager](https://developer.android.com/reference/android/app/usage/UsageStatsManager)を使えば良いです。

## UsageStatsMan

元記事を表示

51歳からの(現52)プログラミング 備忘 3行 android ボタンにフォーカスを移動する

“`
Button btn = findViewById(R.id.btn);

btn.setFocusable(true);
btn.setFocusableInTouchMode(true);
btn.requestFocusFromTouch();
“`

元記事を表示

OTHERカテゴリの最新記事