- 1. Androidデバイス内で起動したvimの為のtips
- 2. AndroidのTextViewで省略表示(マーキー、…)
- 3. ドラッグで始める最速CoordinatorLayout
- 4. WOL を使って Mac や Android から Arch Linux を起動する
- 5. 【未解決】Intentで表示したGoogleMapsに指定したカスタムラベルが表示されない
- 6. Navigation componentをテストする
- 7. [Android]スワイプができるユーザーの操作を止めないレビュー誘導を簡単に実装してみた
- 8. [やってみた][Android]UserLAndを使用したUbuntu環境の構築
- 9. [やってみた][Android]Termuxのインストールとssh接続
- 10. Dagger2使用時に引数ありのViewModelをinterface化する
- 11. 【Android】テキスト入力が正しくない時に該当のEditTextにエラーを表示する
- 12. 51歳からの(現52)プログラミング 備忘 FileOutputStream android.content.Context.openFileOutput(java.lang.String, int)’ on a null object reference
- 13. Androidの用語を整理
- 14. アンドロイド Camera Xとトーチライトの組み合わせ
- 15. androidのtargetSdkVersionを’R’に変更する
- 16. DroidKaigi2020アプリで使われているInjectableについて
- 17. Docker を用いた AOSP Android10 のビルド時間の測定結果
- 18. 【Android-Codelabs】10/36 〜 Fragmentの使い方 〜
- 19. Android StudioでUsageStatsManagerを使う方法(他のアプリの起動時間を調べる方法)
- 20. 51歳からの(現52)プログラミング 備忘 3行 android ボタンにフォーカスを移動する
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=trueStack 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同士の間に割り込んで)、レビュー誘導を表示します。
こんな感じのレビューですね
このレビュー誘導をスワイプで削除できるように対応しま
[やってみた][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/bashif [
[やってみた][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をアプリに追加する方法#目指す成果物
今回は,このようなクイズアプリを作っていきます.
アプリの仕様
・左のスクリーンショットのタイトル画面で,ゲームを開始します.
・真ん中
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();
“`