くうと徒然なるままに

モバイルアプリを作りながらバックエンドも作っています。

Android

Android 10 から導入された Settings Panels を使ってみた。仕組みも少し見てみた。

Android 10 から設定画面をユーザーアプリが起動しているときに画面を遷移せずに表示することができるようになっています。 今回はこちらようにアプリ内に設定画面の一部を表示してみたいと思います。 ここでは、設定アプリの一部を表示と書きましたが、正確…

Android 端末で Suica に触れたときにアプリが起動してUIDを読み取れるようにする

この記事を開いた皆さんは、タイトルのように Android 端末で Suica に触れたときにアプリが起動してUIDを読み取ろうとしている奇特な人だと思います。 NfcAdapter と言うクラスを利用することであれこれをお任せすることができます。 ここで重要になってく…

Gradle Custom Task with kotlin を実行するときに 引数を渡したり実行結果を読み取る。

Gradle Task に引数を渡す Gradle Task を実行するときに引数を渡したいときがあると思います。 build.gradle内で完結している場合には、以下のように lateinit var な変数を定義すれば値を渡すことができます。 lateinit var userName: String さて、build.…

adb shell からURlを指定してIntentを飛ばす

am コマンドの -d オプションで指定すれば行けそう am start -a android.intent.action.VIEW -d "https://google.com"

RecyclerView.ListAdapter でアイテム挿入後に何かしたい!非同期辛い!

RecyclerView を使って何かする時に ListAdapter を使ってますか? DIFFUtil を使うときに合わせて使うことが多いかなと思います。 問題点 submitList しても非同期で挿入されるため、 SubmitList() した直後にRecyclerView(Adapter) に対してあれこれすると…

LiveData-Kotlin Extension を試してみた

基本的には、 Transformations の拡張関数の集合です。 implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.1.0-alpha04" class MainActivityViewModel : ViewModel() { private val source1LiveData = Source1Livedata() // 同じものが流れてき…

Android Architecture Components 勉強会 #5 に参加してきた。

せっかく東京にいるので、ということで AAC の勉強会に参加してきました。 Google で開催されてました。 GDE な人がたくさんいており技術難易度も結構高めだった気がします。 感想 めちゃめちゃ勉強になりました。 AAC は普段使っていてノリで色々しているの…

Gradle 公式が出している kotlin-dsl のサンプル集リポジトリが良さそう

Kotlin-DSL を書こうとしていて色々つまづくことがあります。そんな時に参考にすると良さそうなリポジトリ。 プレーンなやつからBuildSrc を利用したりするやつまである程度揃ってる。 github.com

Spek/Kotlin を使っている時に LiveData を利用した Unit Test を記述する

Live Data を使ったコードのテストを記述する場合にはメインスレッドで実行しなければいけない Live data をUnit Test であれこれする時には、 MainThread で実行しなければいけないという制限が問題になります。 具体的には、 LiveData の setValue メソッ…

kotlin で lambda 関数の呼び出しログと回数を記録できる便利クラスを作ってみた。

Unit Test 等で lambda 関数 を使用しているところで呼び出しログと呼び出し回数を記録したいことはたまによくあると思います。 そこで、記録できる便利クラスを書いてみました。 機能 呼び出しログの記録 回数の記録と検証(指定された回数呼び出されてなか…

Android でプログレスリングを表示する方法。

そういえば、毎回ググってたなぁと思って書いた。 覚えるほどではないのに使うんですよね。。 <ProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content" style="?android:attr/progressBarStyleLarge" /></progressbar>

Chrome Custom Tabs の Pre Fetch を Kotlin っぽく書いてみた。

Chrome Custom Tabs には Pre Fetch という機能が存在します。 これは、 Chrome Custom Tabs でウェブページを表示する前に事前に読み込んでおくことで表示速度の最適化を行える機能です。 自前実装しようとすると大変なこの機能ですが、 Google Chrome の機…

ChromeCustomTabs の Androidx パッケージ

ChromeCustomTabs を使うときに必要になるパッケージ名が Androidx では変更されていたため記事にします。 具体的には、以下のパッケージになっているようです。 implementation "androidx.browser:browser:1.0.0" 以下にパッケージの詳細が書いてあります。…

Android でタップしたときにリップルエフェクトを設定する方法

ForeGround に以下の属性を適用させるとできます。 android:foreground="?android:attr/selectableItemBackground"

しがない大学生が #Droidkaigi に初参加してみた。

体調崩して投稿が遅れてしまいました/// DroidKaigi とは 02/7-02/8 に 新宿で開催された Android App Developer のためのカンファレンスです。 前日に shibuya.spk とかも開催されてたので前日に参加してたりしました。 参加した理由 Android アプリ開発の…

Android アプリのパッケージ依存管理と大変だったところ。

導入 Android アプリ開発をしていると各Module ごとに依存しているライブラリのバージョンや種類がバラバラになって後で苦労することは多々あると思います。 私の認識では、依存するライブラリを集中管理するためのテクニック。について書きます。 英語でグ…

Android App のCI を Azure DevOps から Circle CI に移行して大変だったところについて。

Azure DevOps から業界で幅広く使われている Circle CI に移行中です。 ※最近見てる企業では大体Circle CI 使ってるみたい。 また、DroidKaigi のアプリ開発やインターンシップで少しCircle CI を触った感触的には面白そうだったのも理由の一つにあります。 …

Android で ChipGroup に属しているChip を列挙する

ChipGroup Class には 追加されている Chip 一覧を取得できそうな関数が生えてないです。 val chipGroup = // Chip Group への参照を取得する val chipCount = chipGroup.childCount // 2 (0..chipCount - 1) .map { chipGroup.getChildAt(it) as Chip } .ma…

Android-NDK で エラーがでた。 No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android

C++ で書かれたライブラリを Android 向けライブラリにビルドしようとしたら下記のようなエラーが出ました。 No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android mios64el-linux-android に対応した NDK Toolch…

Firebase Readtime DB + Kotlin Coroutine でいい感じに使う

Firebase の Realtime Database 使ってますか? firebase.google.com 問題点 基本的に Callback な作りなため Kotlin Coroutine との相性がよくない Firebase Realtime Database で値を読み取る時には基本的には Callback スタイルなコードを書きます。 Kotl…

Flutter 向け マネージド CI/CD サービスの codemagic が良さそう

最近流行りの Flutter 、 Flutter 向けな マネージド CI/CD サービスがついに出てきました( Native 向けなら色々あるけど、 Flutter 向けを売り出しているのは珍しさ) CodeMagic とは? Flutter ファンにより生み出された Flutter 専用のCI/CD サービスで…

AndroidX の androidx.textclassifier を試してみる

アドベントカレンダー Android 初心者 15日目の記事です。 まだ枠が空いているので記事を見た人は登録するか3人の Android エンジニアに送りつけてください。 qiita.com 初心者ということで試してみた記事を書いてみたいと思います。 Android 8 ~ テキスト…

Azure DevOps で Firebase, google-services.json を使った Android-Kotlin なアプリを CI/CD する

Azure DevOps 使ってますか〜?周りでは余り使われてなくて悲しいです〜(お金で殴れるなら Bitrise も使いたい...) タスク管理とかの機能が強力で良さげっすよ(Trello でやるよりは良さげ、癖が強いけど) さて、 Android-Kotlin な Firebase を導入した…

Android-Kotlin で現在起動してるアプリの設定画面に移動する

コード val intent = Intent() intent.action = Settings.ACTION_APPLICATION_DETAILS_SETTINGS val packageName = context?.packageName ?: return@setOnClickListener val uri = Uri.fromParts( "package", packageName, null ) intent.data = uri startAc…

Azure DevOps で Android Self Hosted Build Agent をセットアップできるスクリプトがある程度できた。

Azure DevOps ってサービス知ってますか? VSTS とか言われてたやつです。 CI サービスとか タスク管理、Wiki とかの開発で必要そうな奴が詰め合わせになった奴。 Circle CI + Github + Trello とかが合わさったサービスです。(正確には違う) モバイルDevO…

Android アプリで現在デバッグ実行中かを判定する方法

Android アプリを作っていて、現在デバッグ実行されているかを確認したいことはたまによくあると思います。 BuildConfig から取得すればいけ感じな。 コード BuildConfig.DEBUG 情報元 stackoverflow.com

Extended FAB っぽいものを実装してみた

Extended FAB を実装するモチベーションはFAB をよりユーザーにわかりやすく実装するため 普通のアイコンだけのFAB だけで実装してましたが、 「アイコンだけでは何をするためのものかすぐに理解して使い始めることができない」という問題が出てきました。 …

Mockito で void なメソッドをモックする

Mockito はいいぞ〜 さて、 void なメソッドを mock するにはどうすれば良いのかってのは少しハマったので書いてきます〜 解決方法 doNothing().when(targetMock).targetMethod() 的な感じで実装してくといけました〜。 コードで解説 val keyword = "hello w…

BottomAppBar で menu を表示する

BottomAppBar で menu を表示するためには、以下のメソッド読んであげれば表示できます。 {BottomAppBar への参照}.replaceMenu(R.menu.ResourceFileName)

Android の Fuel + Moshi + Kotlin Coroutine でいい感じにする拡張関数を書いた

Fuel には、 mochi、 Kotlin Coroutine といい感じに連携してくれる機能があります。 けど、 Moshiと Kotlin Coroutine を組み合わせていい感じに呼び出せる関数は存在してないです。(まぁ、標準で存在してても依存関係考えたら載せるべきでないのはそう)…