- 1. [Android]スワイプができるユーザーの操作を止めないレビュー誘導を簡単に実装してみた
- 2. [やってみた][Android]UserLAndを使用したUbuntu環境の構築
- 3. [やってみた][Android]Termuxのインストールとssh接続
- 4. Dagger2使用時に引数ありのViewModelをinterface化する
- 5. 【Android】テキスト入力が正しくない時に該当のEditTextにエラーを表示する
- 6. 51歳からの(現52)プログラミング 備忘 FileOutputStream android.content.Context.openFileOutput(java.lang.String, int)’ on a null object reference
- 7. Androidの用語を整理
- 8. アンドロイド Camera Xとトーチライトの組み合わせ
- 9. androidのtargetSdkVersionを’R’に変更する
- 10. DroidKaigi2020アプリで使われているInjectableについて
- 11. Docker を用いた AOSP Android10 のビルド時間の測定結果
- 12. 【Android-Codelabs】10/36 〜 Fragmentの使い方 〜
- 13. Android StudioでUsageStatsManagerを使う方法(他のアプリの起動時間を調べる方法)
- 14. 51歳からの(現52)プログラミング 備忘 3行 android ボタンにフォーカスを移動する
- 15. [AndroidStudio]仮想端末が起動しない件と対応(adbコマンドのログファイル)[ANDROID_SDK_ROOT]
- 16. 余ったPCをVPNサーバにしてAndroidでPCゲームをしてみる
- 17. Androidフレームワークビルド、カーネルビルド、ROM焼くまで-Pixel3aを用いた
- 18. ViewModelにLiveDataとMutableLiveDataを同時に宣言しなくていいようにする
- 19. MacのPCからADBコマンドを利用できるようにする(すでにJavaがPCに入っている人向け)
- 20. [Android Studio 3.6] Android Studioを再インストールしたのに起動しないとき
[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();
“`
[AndroidStudio]仮想端末が起動しない件と対応(adbコマンドのログファイル)[ANDROID_SDK_ROOT]
## 概要
Androidアプリの開発欲が再燃したので放置していたAndroidStudioを起動し、最新にアップデートをしたが
仮想端末が起動しないため、その原因の確認と対応をした。
紆余曲折あったがADVマネージャーのログが見つかったので確認。結果としては「C:\Users」の配下にあるユーザ名のフォルダが日本語であったため、仮想端末の起動に必要なファイルが読み込めなかった。
そのため、仮想端末が起動できなかった。
該当フォルダ名とユーザ名をアルファベット表記にすることで起動できることが確認できた。備忘録として以下に今回の内容を記載します。
## 環境
今回使用した環境は以下になります。– メインマシン
– Intel Core i7-6700k
– Windows10 Home
– AndroidStudio 3.5(後に3.6にアップグレード)
– サブマシン
– Intel Core i7-2600k
– Windows10 Pro
– AndroidStudio 3.5(後に3.6にアップグレード)## 事象
余ったPCをVPNサーバにしてAndroidでPCゲームをしてみる
#はじめに
AndroidでPCゲームがしたい!!
そんな夢を叶えてくれるのが[SteamLink](https://store.steampowered.com/steamlink/about/?l=japanese).しかしSteamLinkは同一ネットワーク内,所謂ローカルIPの末尾以外が同じ相手でしか使用できません.
そこで外部ネットワーク(自宅以外のWiFiなど)から接続するために**VPN(Virtual Private Network)**を使います.家に昔使っていたデスクトップPCが余っていたので今回はUbuntu18.04をインストールしてサーバとしました.
本記事は下記の記事を参考に躓いた点を追記していきます.
– [自分だけのVPNサーバを作る!Ubuntu 18.04 に SoftEther VPN Serverをインストール](https://qiita.com/dogwood008/items/3d11ea67661a5b6bc59d#%E5%88%9D%E6%9C%9F%E8%A8%AD%E5%AE%9A)
– [ubuntu18 に soft
Androidフレームワークビルド、カーネルビルド、ROM焼くまで-Pixel3aを用いた
# はじめ
忘れないように記録しただけ、参考は慎重に。
色々を試しながらやって成功したので、分かっていない部分もある。
とりあえずできたからよし。ソースコードは先にエミュレータでやってみた。
そして、実際の端末に応じたバージョンでやった。
本編もそのタイムラインに添って記録。参考したサイト:
[AOSP環境構築 [備忘録]](https://qiita.com/natmark/items/09802c7f16733cd77f8e)# 環境
OS:ubuntu18.04-LTS
NDK:r17
端末:Pixel3aのエミュレータ
フレームワークバージョン :android-9.0.0_r42
カーネルバージョン : android-msm-bonito-4.9-pie-b4s4# 環境
OS:ubuntu18.04-LTS
NDK:17
端末:Pixel3a
フレームワークバージョン : PQ3B.190705.003 android-9.0.0_r45
カーネルバージョン : android-msm-bonito-4.9-pie-b4s4上記のバージョンにした理由:
ViewModelにLiveDataとMutableLiveDataを同時に宣言しなくていいようにする
MainViewModelからMutableLiveDataのみを扱い、LiveDataの宣言をしなくていいようにします。
### 変更前のコード
“`kotlin
class MainViewModel() : ViewModel() {
private val _param = MutableLiveData()
val param: LiveData
get() = _paramfun load() {
viewModelScope.launch {
delay(1000L)
_param.value = MainViewParam(
nickname = “タロー”,
firstName = “太郎”,
lastName = “山田”,
age = 22,
MacのPCからADBコマンドを利用できるようにする(すでにJavaがPCに入っている人向け)
# 目的
– Android Debug Bridge(以後ADBと呼称する)のコマンドを使用できるようにする方法をまとめる
# 実施方法概要
1. Android Studioのインストール
1. コマンドのパス通し# 実施方法詳細
1. Android Studioのインストール
1. 下記のリンク先にアクセスする。
– [https://developer.android.com/studio/index.html](https://developer.android.com/studio/index.html)
1. 画面中央の「DOWNLOAD ANDROID STUDIO」をクリックしてダウンロードを行う。
![スクリーンショット 2020-02-26 23.03.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/fe866728-d980-528b-af4b-2f197d77372c.png)
1. 利
[Android Studio 3.6] Android Studioを再インストールしたのに起動しないとき
どうもこんばんわ。ニコ生できんいろモザイク一挙見ました。あややー
# 本題
なぜか起動しなくなってしまった。
昨日までは使えたのに。
わざわざ再インストールまでしたのに起動しない。
exeダブルクリックしてもマウスカーソルの隣にクルクルすら出ない。# 環境
|なまえ|あたい|
|—|—|
|OS|Windows 10 Pro 1909|
|Android Studio|3.6|# 解決策
“`
C:\Users\ユーザー名\.AndroidStudio3.6
“`
を消す。消すと起動できる。
ちなみにこのフォルダは隠しフォルダなので設定を変えないと一覧に表示されない。## 隠しフォルダを表示させるには
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409918/a19db71b-17da-ff86-b851-5e86d093667b.png)リボンの表示を押して端にあるオプションを選び、表示タブへ移動して、
「隠しファイル、隠しフォルダ、および隠しドライブを