techium

このブログは何かに追われないと頑張れない人たちが週一更新をノルマに技術情報を発信するブログです。もし何か調査して欲しい内容がありましたら、@kobashinG or @muchiki0226 までいただけますと気が向いたら調査するかもしれません。

Android

AHBottomNavigationを使ってNavigationItemにバッジを表示する

以前の記事でAndroid Support LibraryのBottomNavigationの使い方について説明したが、今回はAHBottomNavigationというライブラリについて記載します。 このライブラリはマテリアルデザインにのBottomNavigationガイドラインに沿ったもので、 ナビゲーション…

Firebase Cloud Messagingを使ってみる 後編

前回はFirebaseSDKを設定し、実際にPush通知を受信するところまで実施しました。 blog.techium.jp 今回はメッセージをアプリでハンドリングする方法についてみていきます。 FirebaseMessagingServiceを設定する メッセージの種類 フォアグラウンドとバックグ…

BottomNavigationViewのテスト

以前の記事でBottomNavigationViewについて書きましたが、今日はそのテストについて書きます。 blog.techium.jp

一晩でAndroidアプリ公開

TL;DR Android Studio など必要なファイルのダウンロードは済ませておく(ここは"一晩"の中に含まない) 作るアプリはシンプルに デザインは頑張れないので絵文字を多用 アイコンは Android Asset Studio - Launcher icon generator を使わせてもらったらすご…

Google Maps APIを使ってみる

Google Maps API マップを Android アプリに追加しましょう。ベースマップ、3D の建物、屋内のフロア図、ストリート ビューや衛星画像、カスタムのマーカーなどを統合できます。 Google Maps API 準備 APIを有効にする AndroidManifest.xmlの設定 Mapを表示…

RecyclerViewのフォーカス位置をトグルする

Android TVや業務用のシステムにAndroidが利用されるケースが増えてきていることでDPADを利用したアプリケーションの開発が再度行われるようになってきました。 そうした中でRecyclerViewで表示した画面の一番上のアイテムにフォーカスが当たっている状態で…

Google Places API を使ってみる

Google Places APIとは 引用 Google Places API を使えば、Google マップや Google+ と同じデータベースから取得される約 1 億か所の多彩なプレイスの詳細情報にアプリでアクセスできるようになります。

独自Annotationのコード生成をjavapoetを使ってやってみる

独自Annotationを使ってコードの自動生成(Annotation Processor)をこちらの記事で行いました。 自動生成を行うにあたって文字列をStringBuilderを使って生成するとインデントや似たコードの生成などを作る際にコードを生成してみないとわからないためかなり…

Androidで独自Annotationを使ってコードの自動生成したコードを使う

独自のAnnotationを定義したものを利用してコードの自動生成を行う方法について説明します。 独自のAnnotationの作り方はこちらを参照して下さい。 コードの自動生成をするにはAnnotation Processorという機能を利用して行います。 最近まではandroid-aptと…

Chuckを使ってRetrofitの通信を確認する

AndroidでHTTPの通信する際に利用されるOkHttp3用に作られたデバッグ用のツールChuckというのがあります。 Chuckの特徴はログとしてアウトプットするのではなく通信があった時に通知領域に表示され、通知を選択するとアプリが立ち上がり通信内容を閲覧するこ…

ConstraintLayoutをXMLでレイアウト定義を行う

AndroidのConstraintLayoutは新しく追加されたレイアウトです。 ConstraintLayoutはLinearLayoutやRelaytiveLayoutでは実現できなかったフラットなビュー階層を使用して、大規模で複雑なレイアウトを作成できるようになりました。 そしてAndroid StudioのLay…

StreamAPIをAndroidで使いたい時にRxJavaとLightweight-Stream-APIどちらを選べばいいのか調べるため計測してみました

Androidのアプリ開発をする際にJava8のStreamAPIを使いたいと考えることがあると思います。 2016/11/12時点では次の2つのライブラリでSteramAPIを使うことを可能とします。 Lightweight-Stream-API RxJava StreamAPIを外部のライブラリで実現した際に遅いと…

AndroidのライブラリプロジェクトでHugoのログを表示する

Androidのメソッドの呼び出しなどでログを表示をアノテーションが付与されているメソッドの呼び出し時に呼び出し時の引数の表示とをログに表示するライブラリです。 ただしAndroidのライブラリプロジェクトではビルドの設定の関係でログが表示されません。 …

Annotationを自作する

普段Androidアプリの開発を行っている際に、何の気なしにAnnotationを使用していましたが、ふとその仕組みが気になりました。 Annotationを利用することで二重化を防いだりコード量を減らせたりといった利点もありますが、個人的には使いすぎると可読性が下…

AndroidのPercelデータを自動生成するAutoValueを使ってみる

Googleがautoというライブラリ群の中にあるAutoValueというデータクラスを自動生成するライブラリがあります。 このAutoValueではJavaの一般的なデータクラスの生成しかできないためAndroidのインターフェースのParcelableを実装したものを自動生成すること…

Android 7.0 Nougatのマルチロケールについて

Android 7.0 Nougatから、マルチロケールが採用され、それに合わせてシステムのロケール選択のロジックが変更になったようです。 developer.android.com 今回は、以下の公式ドキュメントを参考に、マルチロケールを選択できるようになることで何が変わるのか…

QuantumFluxを使ってContentProviderを作成する

AndroidのContentProviderを作るときにsqliteを使っているケースがほとんどだと思います。 しかし昨今のORMではsqliteを作るのは簡単ですが、ContentProviderでの適応が難しいケースが多々あります。 そこでContentProvider用のORMとしてQuantumFluxというの…

Android 7.0 Nougatでクイック設定(Quick Setting)を追加する

Android 7.0 Nougatで新しく追加されたTile APIを利用することで、クイック設定(下図)を自作することができます。 developer.android.com developer.android.com 今回は上記リンクを参考に、クイック設定の追加方法について見ていきます。 TileServiceを作…

AndroidのWindowManagerでViewを表示するときのIMEの制約

Androidのアプリを作っている時にどの画面よりも手前にViewを表示したい時にWindowManagerを使って特定の指定レイヤーに対してaddViewを行うケースがあります。 しかし、このaddView時に発生するIMEの表示の制約があるのでそれをご説明します。

Android 7.0 Nougatの新しい外部ストレージアクセスを試してみた。

Android 7.0 Nougatでは新しい外部ストレージへのアクセス方法が提供されました。 developer.android.com developer.android.com これまでAndroidで外部ストレージにアクセスするには、ManifestファイルにPermissionを定義し、さらに6.0からはパーミッション…

Spinnerのデータとしてenumの配列を使用する場合のTIPS

Spinnerの表示データとしてenumを使用したときに引っかかった罠があったので共有したいと思います。 Spinnerとは Spinnerは複数の選択肢から一つの要素を選択するためのUIを提供するWidgetです。 詳しいことはDeveloperサイトを御覧ください。 developer.and…

Android Studioにコードジャンプするログを作る

Androidのstacktraceなどでコードジャンプするログが表示されています。 コードジャンプ自体はAndroidStudioの機能になるのですが、ログの作り方を工夫することでコードジャンプすることができるログを作ることができます。 そこで今回はコードジャンプする…

RxJava Mathを使って最大・最小・平均・合計を計算する

RxJavaを最近使うことが多くなってきてストリームに流れているデータ内の最小値と最大値を取ることができないか調べておりました。 そうするとRxJavaのMathというのがありそれで実現できたのでそのやり方とMathの機能についてごしょうかいします。

AndroidライブラリからアプリケーションプロジェクトのBuildConfigの値を参照する

Androidアプリ開発の際にオープンソースのライブラリを組み込むことが多いと思います。 そういった中でアプリのデバッグの時にはライブラリのログを出したいとかデバッグの時だけこういった挙動をしたライブラリがほしいことかがあります。 そこで今回はaar…

FirebaseのRealtime Databaseを利用してみる 〜その2〜

前回に引き続き、FirebaseのRealtime Databaseについてです。 今回は、前回保存したデータをクライアント上から参照してみます。 Realtime Databaseはその名の通り、データベースに変更があった場合に、それをリアルタイムにクライアントに反映させることが…

Retrofit2のレスポンスをmockに置き換える Retrofit-Mock編

前回の記事では、MockWebServerを使用してサーバ自体をMockに置き換えた。 blog.techium.jp 今回はRetrofitMockにてResponseの内容をMock化する方法を使う。 build.gradleの修正 // レスポンスのパースにgsonを使用 compile 'com.squareup.retrofit2:convert…

ContentProviderアクセステスト用ライブラリPantomimeを公開しました

Androidの開発を行うにあたってContentProviderへアクセスする場合にContentProviderの中身が動的に変化する場合にテストを書く場合に同じ環境にならなくてユニットテストが失敗したりすることがあります。 そこで今回作ったPantomimeを紹介します。

FirebaseのRealtime Databaseを利用してみる 〜その1〜

FirebaseのRealtime Databaseを利用してみました。と言っても、まだデータを登録しただけなので、導入編といった感じです。 Realtime DatabaseはFirebaseがクラウド上に提供するNoSQL型のデータベースです。 今回はこのRealtime Databaseを利用して、データ…

Retrofit2のレスポンスをmockに置き換えるMockWebServer編

ユーザー登録画面など、ネットワーク通信を伴う画面のUIテストするとき、実際のサーバへアクセスしては、テストが意図した結果にならないことがあるだろう。 MockWebServerを使用することで、サーバへのアクセスを回避し、かつ、必要なレスポンスを返すよう…

Realm JavaのRealmQueryをループで使ったらヒドい目に遭ったという話

先日からAndroidアプリの開発でRealmを使っていますが、今回はRealmの仕様なのかバグなのかよくわからない挙動にハマってヒドい目に遭ったというお話。 歴戦のRealmerには既知の問題かもしれないので何か情報をお持ちの方は適宜突っ込んでもらえると助かりま…