AndroidとかiOSとかモバイル多め。その他技術的なことも書いていきます。

Android

Android通知のバージョンごとのUIの違い

自分用にメモ。以下のコードを実行したときのAndroid OSバージョンごとのUIを調べた。 Intent intent = new Intent(context, MainActivity.class); PendingIntent pi = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); …

CircleCIでAndroid SDKとGradleをキャッシュする

CircleCIで普通にビルドしていると毎回Android SDKとGradleのダウンロードが行われてビルド時間が長くなってくる。CircleCIにはデフォルトのキャッシュ以外にも自分でキャッシュの設定ができるので、Android SDKとGradleをキャッシュすることでビルドを短く…

【Android】jacocoでコードカバレッジを取る

最近UTを書くようになってきたのでカバレッジを取ってみました。Gradleにjacocoのプラグインがあるのでそれを使います。 build.gradleはDroidkaigi2017のbuild.gradleを参考にしました。 apply 'jacoco' apply plugin: 'com.android.application' android { …

【UI Automator 2.0】UiObject2#longClick()が効かない問題の対策

UI Automator 2.0を使ってListViewのContextMenuのテストを書きたかったのですが、UiObject2#longClick()ではどうもまくいきませんでした。 動きを見る感じロングクリックの時間が短いですね・・・ 調べるとUiDevice#swipe()でロングクリックしたい場所の座…

【Android】SQLiteのテーブルからカラムを削除する

ALTER TABLE mytable DROP COLOMN mycolomnを実行すれば完了・・・と思いきや、SQLiteはDROP COLOMNをサポートしていないらしい。 http://www.sqlite.org/faq.html#q11 そのため、以下の手順でカラムを削除した テーブルのデータを全て取得 DROP TABLEでテー…

【Android】UI Automator 2.0でUIテストをする

UI AutomatorはGoogleが開発しているAndroid向け自動UIテストフレームワークです。 2015年3月にバージョンが2.0になりGradleに対応しました。 有名なテストフレームワークのAppiumも中ではUI Automatorを実行しています。 Espressoとの違い Googleはテストフ…

【Android】MaterialShowcaseViewライブラリでチュートリアルを実装する

MyCurationの1.2.1でチュートリアルを追加しました。というのもインストールされてもすぐアンインストールされているようで、説明が足りなかったかな・・・と思い始めたためです。 実装を自分でやってもよかったのですが、デザイン的なセンスがないのと、あ…

【Android】App Standbyがわからない

App StatndbyはAndroid 6.0になって追加された省電力の機能である。 Doze と App Standby 用に最適化する | Android Developers アプリが以下の場合でないとき、そのアプリは"Idle"状態になり、"Idle"状態が長時間続くとバックグラウンドでの通信を1日1回し…

【Android】 リモートリポジトリに繋がらない環境でJUnitを実行する

ネットワーク環境に問題がないときは、Googleのページのやり方で設定すればJUnitの環境設定は簡単だけど、Proxyなどでmaven centralに繋がらない場合の対処法 jarファイルのダウンロード リモートリポジトリに繋がらないので、jarファイルをlibsフォルダに置…

【Android】自分でキュレーションを作るフィードリーダー「MyCuration」を公開しました

MyCuration -キュレーションを作るフィードリーダー - Google Play の Android アプリ だらだらと自分用に作ってたアプリがある程度まとまったので公開しました。 Android4.0以上対応です。 背景 開発の背景としては以下のような背景がありました。 feedlyが…

【Android】PreferenceActivity/PreferenceFragmentを使った設定画面

Androidの設定画面について AndroidではAPI1から設定画面を生成してくれるPreferenceActivityが用意されている Android 3.0で各設定画面をFragmentに分けるためのPreferenceFragmentが追加された Android 4.0ではPreferenceActivityが拡張され、PreferenceFr…

DockerでAndroidの環境を構築する

Androidでテストを同時並行に実行したいなーと思っていたので作ってみた。 phicdy/Docker-android-envgithub.com Javaのインストール dockerfile/javagithub.com こちらからコードを拝借。ただ、add-aptがデフォルトではUbuntuに入っていないのでatp-getでイ…

adbで端末のモデル名を取得する

adb shell cat /system/build.prop | grep ro\.product\.model | awk -F"=" 'NR==1 {print $2}' | tr -d ' ' | awk -v RS='\r\n' '{print $1}' 詳細はこちらから adbコマンドあれこれ - shima111の日記d.hatena.ne.jp ほとんどの機種は上記記事のコマンドで…

【Android】API16のuiautomatorでNoSuchMethodError

uiautomatorでNoSuchMethodErrorが発生して困っていた問題が解決したのでメモ。 発生までの流れ http://www.atmarkit.co.jp/ait/articles/1410/07/news029.html に従ってテストプロジェクトを作り、ターゲットは、API16(4.1, 4.1.1)としていた。 そして(Andr…

【Android】ActionBarから検索して別Activityで結果を表示する

検索してもなぜか、同じActivityで受け取る例ばかり出てくるので、自分のメモ用に。検索を行うActivityをDoSearchActivity、検索結果を受け取るActivityをSearchResultActivityとする。 AndroidManifest 検索を行う側(DoSearchActivity)にandroid.app.defaul…

SmartWatch 3を1ヶ月使ってみて

前月ソニーモバイルコミュニケーションズから発売されたAndroid Wear端末のSmartWatch3を買いました。 SmartWatch 3を買いました - pluea engineering blog SmartWatch 3を買いました - pluea engineering blog SmartWatch3 SWR50 | ソニーモバイルコミュニ…

SmartWatch 3を買いました

11/28にソニーからSmartWatch 3が発売されたので早速買ってきました。 SmartWatch3 SWR50 | ソニーモバイルコミュニケーションズ SmartWatch3 SWR50 | ソニーモバイルコミュニケーションズ 値段はビックカメラで26870円でした。 予約なしで買えるのかなと少…

【Android】HanlderとMessageを使ってマルチスレッドの処理結果を受け取る

Androidアプリ内で重たい処理を行う場合、処理をメインスレッドで行うと処理が終わるまで画面が止まってしまう。 そのため、スレッドを分けて処理を行わせる。 その際に、処理結果を別スレッドから受け取るときの一つの方法としてHandlerとMessageを使う方法…

【Android】 CSVファイルを読み込んでパースする

Androidで初期データなどCSVファイルを処理したい場合がある。 その時は、CSVファイルをassetsと呼ばれるフォルダに置き、それを読み込んでパースを行う。 assetsフォルダはプロジェクトの一番上に作成する。 assetsフォルダへのアクセスはAssetManagerを通…

【Android】Linuxコマンドの実行

AndroidアプリからLinuxコマンドを実行するにはRuntimeクラスを利用する。 package xxxxxxxxxxxx; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import android.util.Log; p…

【Android】 端末にインストールされているパッケージ一覧をadbコマンドで表示

Android端末に入っているパッケージの一覧をadbコマンドで表示できる。 adb shell pm list package 結果は以下のようになる。 package:com.android.defcontainer package:com.htc.customappinstaller package:com.htc.android.qxdm2sd package:com.htc.sense…

【Android】 クリップボードへのコピー

Androidでクリップボードにテキストを追加してコピーできるようにするにはClipboardManagerを使う。ClipboardManagerはAPI 11(~3.0)までで使われていたものとAPI11から推奨となったもので2つある。 // API 10(2.3.*)まで import android.text.ClipboardManag…