Robolectric3.4.2+Powermock1.7.3でのテスト (2017版)

2017-09-29T18:00:00+09:00 Android robolectric

今まで何度か検証してみましたが、情報が2013年度と古く今で実際使えるのが微妙だったので2017年度版としてチャラい調査をしてみました

Robolectric3でDrawerLayoutをテスト

2015-10-29T23:17:26+09:00 Java Android robolectric

タイトル通り、DrawerLayoutをRobolectric3でテストするメモ

Robolectric3でandroid.os.Handler

2015-10-28T20:07:10+09:00 Java Android robolectric

android.os.Handlerを使う場合のテストのメモ

fabric.io(Crashlytics)でクラッシュレポート

2015-10-19T17:44:05+09:00 Android

fabric.io を使ってCrashlyticsでクラッシュレポートを送信するメモ

ToolbarからSearchView ActionViewを取る方法

2015-10-03T21:45:08+09:00 Java Android

Toolbarを使っている場合であれば、onCreateOptionsなんちゃらでメニューを作る以外でもSearchView等のActionViewを取得できるっぽい

TabLayoutでaddTabした直後にselectしてもスクロールされない件

2015-08-23T04:27:36+09:00 Java Android

Android Design Support Libraryで?追加されているTabLayoutを使った場合に、addTabをした直後にselectメソッドを呼んだりaddTabの第2引数でtrue(selected)にしてもそのタブにフォーカスは当たるけど自動アニメーションスクロールによる処理が行われない為に自分でそのタブが出てる所までスライドしないといけない問題が出てるのですが...

なんとか解決出来たっぽいのでメモ

twitter4j+mockwebserver

2015-08-17T13:54:43+09:00 Java Android

例えばtwitter4jを使う所をテストしたい場合にやたらとAPIリクエスト投げられても困るなっていう事案が発生した場合に、twitter4jが投げるリクエストをローカルサーバーとかにぶん投げるようにしてテストしたいみたいなケースの場合の検証をしてみた

※環境はAndroid(Robolectric)

retrolambda

2015-06-12T20:17:38+09:00 Android Java

公式?: https://github.com/evant/gradle-retrolambda

参考: http://qiita.com/kamimoo/items/f4b3ef22ca0327e88e32

最近色んなデモアプリのソースとかを見ていると一部でJava8での記法みたいなので作られてる物もあるけど、AndroidってJava8サポートしてないよねっていう事で調べたらretrolambdaっていうのを使う事で出来るっぽい

RxAndroidをざっくり使ってみた

2015-06-11T16:49:40+09:00 Java Android RxJava

参考1: 【翻訳】AsyncTask と AsyncTaskLoader を rx.Observable に置き換える - RxJava Android Patterns

参考2: http://stablekernel.com/blog/replace-asynctask-asynctaskloader-rx-observable-rxjava-android-patterns (参考1の元)

参考3: 俺が RxAndroid について知っているいくつかのまとめ

大分前から色々話題になってるRxAndroidをちょっとざっくりと使ってみた

※あくまで個人的なメモなので詳しく知りたいなら上記の参考を読んだ方が良い

※0.24以降になるとAndroidScheduler以外は無くなるそうなので以下のAppObservableを使うには0.24より上のバージョンでは使えなくなるらしい

Google AppEngine(+OAuth2)にAndroid AccountManagerを介してリクエストする

2015-06-01T16:58:53+09:00 Java Android Google App Engine

chrome.identity APIを使ってGoogle App Engine OAuth2を使うの続き

前回ではJavaScript(Chrome Extension)側からchrome.identityのAPIを利用してアクセスしてレスポンスを取るみたいな事しましたが、AndroidでAccountManagerを使って端末に紐付けしてあるGoogleアカウントを使ってリクエストする場合どうなるのって事でやってみた

gradle android build systemでjacoco

2014-07-01T00:00:00+00:00 Android gradle

参考: http://ksoichiro.blogspot.jp/2014/05/androidgradle-jacoco.html

gradle-android-plugin辺りで0.9.x辺りからサポートされてた気がするけどやってなかったのでやってみた

Androidでengine.io

2014-05-21T00:00:00+00:00 Android Java

前回やったengine.ioの記事にも書いてるが、Java向けのクライアントライブラリが既にengine.io-client-javaっていうのがあるので、それを使えば出来るだろうってことでやってみた

※サーバーは前回のをそのまま利用

gradle-android-test-plugin+robolectric+espresso

2014-04-28T00:00:00+00:00 Android Java robolectric

https://groups.google.com/forum/#!topic/robolectric/xsOpEwtdTi4 にあるように元はJake Wharton氏が開発されていてdeprecatedになっていたgradle-android-test-pluginをrobolectric開発チームによってメンテされるようになった模様

てな訳でgradle-android-test-pluginを使いつつの、robolectricでの単体テスト及びespressoによるUIテストをやってみる

Espressoを使ったUIテスト

2014-04-27T00:00:00+00:00 Android Java

公式: https://code.google.com/p/android-test-kit/wiki/Espresso

APIリファレンス: https://android-test-kit.googlecode.com/git-history/master/docs/javadocs/apidocs/index.html?r=master

タイトル通り、EspressoのUIテストキットなライブラリを使ってUIテストをするっていうのをやってみた。まぁ導入周りとかそっち系の単純な話だけなので(ry

SlidingPaneLayout

2014-04-04T00:00:00+00:00 Android Java

公式リファレンス: http://developer.android.com/reference/android/support/v4/widget/SlidingPaneLayout.html

android.support.v4.widgetにSlidingPaneLayoutっていうのが追加されていたのを今更知ったので検証してみた

SwipeRefreshLayout

2014-03-30T00:00:00+00:00 Android Java

参考: [Android] Support Library に追加された SwipeRefreshLayout - @adakoda

上記参考によるとAndorid Support v4 packageにSwipeRefreshLayoutっていうのが追加された模様。んまぁ見る限りだとAndroid PullToRefreshとActionBar PullToRefreshを組み合わせたのっぽいような感じもするんですが

という事で使ってみた。ちなみに/path/to/android_sdk/extras/android/support/samples/Support4Demosにサンプルが入ってる

LoadMoreListView

2014-02-26T00:00:00+00:00 Android Java

まぁ要はListViewの末尾に達したら新しいデータをロードする等の仕組みを提供する機能的なやつ。Android PullToRefreshにはそういう機能があったけど、何回かふれているけどActionBar PullToRefreshを使うべきという形になっているので、それっぽい機能をどうするかって所なんですが

調べた所によると、LoadMoreListViewっていうのを利用する事で出来るっぽい。という事で使ってみた

gradle-android-apt-plugin

2014-02-20T00:00:00+00:00 Android gradle

gradle-android-apt-pluginが便利っぽい

maven+android archive

2014-02-19T00:00:00+00:00 Android gradle Java

参考: http://www.flexlabs.org/2013/06/using-local-aar-android-library-packages-in-gradle-builds

今時な手法として良いかは知らんけど、例えばAndroidプロジェクトでライブラリプロジェクトを伴うけど、アプリプロジェクトとは別で開発されていてそれは社内なりのMaven Repositories(後術参考)を介して利用できる。それをやってみた

gradle-android-toolkit+robolectric-plugin

2014-02-18T00:00:00+00:00 Android Java robolectric

っていう事でrobolectric-pluginっていうのがあるっては知ってはいたんですが、どうも上手く行かなずな感じで。まぁ一回は挫折したんですが再チャレンジでようやくテストの実行が出来たのでメモっておく

gradle-android-test-plugin+Robolectricでテスト

2014-02-16T00:00:00+00:00 Android Java robolectric

参考: http://starzero.hatenablog.com/entry/2013/12/22/201149

gradle-android-test-pluginがいつの間にかDEPRECATEDになっているっていうのを知らずに(ry まぁ他に手段ってのもなかなかなものなので、とりあえずRobolectric演習的に使ってみる

ActionBar-PullToRefreshをメニューボタン等で連動させる

2014-02-13T00:00:00+00:00 Android Java

っていうActionBar-PullToRefreshを使っている場合において、メニューでリフレッシュボタンとかでActionBar-PullToRefreshを発生させるような要件を実現したい場合にはどうすれば良いのか。簡単に言えば上記画像中の右上にあるリフレッシュボタンをクリックする事でonRefreshStartedメソッドを発生させたいっていう所

っていうのをやってみた

gradle-android-toolkitのallprojects

2014-02-13T00:00:00+00:00 Android gradle

例えばapp/build.gradleがあって

apply plugin: "android"

repositories {
    mavenCentral()
}

dependencies {
    compile "com.actionbarsherlock:actionbarsherlock:4.4.0@aar"
}

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.1"
}

じゃなくて

apply plugin: "android"

dependencies {
    compile "com.actionbarsherlock:actionbarsherlock:4.4.0@aar"
}

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.1"
}

的な感じである程度共通化出来る部分は省略したい

ActionBar-PullToRefresh

2014-02-12T00:00:00+00:00 Android Java

※ActionBar-PullToRefreshも「PLEASE NOTE, THIS PROJECT IS NO LONGER BEING MAINTAINED」になってますので現時点で使う場合注意

Android PullToRefreshにも追記しましたが、Android-PullToRefresh は既にdeprecated(正確にはNO LONGER BEING MAINTAINED)らしいので、ActionBar-PullToRefreshを使えとのこと。つーことでListFragmentを使う場合のドキュメントを見つつやってみた

※但し、Android PullToRefreshとActionBar PullToRefreshはスタンスは異なるかと思われますので

gradle-android-toolkitでライブラリプロジェクト

2014-02-11T00:00:00+00:00 Android gradle Java

例えば、アプリプロジェクト・ライブラリプロジェクトの両方を持ちつつActionBarSherlock等のような外部のライブラリプロジェクトを利用する場合のgradle-android-toolkitでのビルドってどうなってるかとか辺りをまだやってなかったのでやってみた (※Android Studioに関してはノータッチで)

※以下のバージョンのgradle-android-toolkitはGradleのバージョンが1.10くらい辺りからじゃないと動かないので(ry

ProgressFragment

2014-02-10T00:00:00+00:00 Android Java

http://johnkil.github.io/Android-ProgressFragment っていうのがあるみたいでデモアプリもある模様

ottoの@Produceに関して

2014-02-03T00:00:00+00:00 Android Java

Androidのイベントバスなライブラリとしてottoが有名ですが、これの@Produceアノテーションの動作が微妙だったので検証してみた所だと

RefreshActionItem

2014-01-31T00:00:00+00:00 Android Java

的な感じでChrome拡張機能にあるchrome.browserAction.setBadgeText的な事も出来るリロード機能に特化した?AndroidライブラリのRefreshActionItemを使ってみた

SwipeListView

2014-01-31T00:00:00+00:00 Android Java

っていう事で使ってみた

Android4.4(Kitkat)のデフォルトSMSアプリに関して

2014-01-29T00:00:00+00:00 Android Java

参考1: Getting Your SMS Apps Ready for KitKat

参考2: Android KITKAT: デフォルトSMSアプリを作る - ブライテクノBlog

※非常に内容がざっくりとしてますので上記参考を(ry

Android 4.4(Kitkat)からデフォルトなSMSのアプリを作って利用する事が出来るらしいとの事は知っていたのだけど検証的な辺りとかしてなかったので色々やってみた

ottoとActivityRecognition

2014-01-27T00:00:00+00:00 Android Java

ottoな勉強をするにあたってそういう要件が必要にならないと例にならない気がしたので、ActivityRecognitionを使って行動認識をActivityへottoを使って通知する仕組み的な事やってみた

android-maven-plugin

2014-01-25T00:00:00+00:00 Android

今更かって感じだけど、android-maven-pluginを使ってAndroidアプリプロジェクトを管理出来るようにしてみる

AndroidSlidingUpPanel

2014-01-21T00:00:00+00:00 Android Java

Android Library Rankingで1位になっているAndroid SlidingUpPanelっていうのが気になったので使ってみた。んまぁAuthor見れば分かるがUmanoっていうアプリで使われてるそうで

でどういうライブラリなのかざっくり画像で見せると

っていう感じになってて下側にあるsliding contentsっていう部分をひっぱることが出来る

まぁ今時は使われてないけど、似たようなのにAndroid公式でサポートされているSlidingDrawerっていうのがある。まぁようはそれっぽい動作をする物みたいな感じ

Android ImageView Library?のPicassoが使えるんじゃないかって件

2014-01-20T00:00:00+00:00 Android Java

https://github.com/square/picasso っていうのがあるのを知り使ってみたんだが、これなかなか使えるのではと

android-times-square

2014-01-19T00:00:00+00:00 Android Java

CalendarっぽいViewなのでhttps://github.com/square/android-times-squareっていうのがある模様。ってな訳でちょいと使ってみた

gradle-android-test-plugin

2014-01-17T00:00:00+00:00 Android Java

ActionBarSherlockの開発者(だはず)でもあるJake Wharton氏がgradle-android-test-pluginっていうのを開発している模様っていうのを知ったので使ってみた

以前gradle-android-toolkitでRobolectricを動かすっていうのをやったのでそれをそのまま使う。修正するのはbuild.gradleだけ

Androidでsocket.io

2014-01-11T00:00:00+00:00 Android Java JavaScript Node.js

socket.io-java-clientを使えば出来るらしいのでちょっと要件検証目的でやってみた。ちなみにsocket.ioサーバーはnode.jsなやつを使う

DialogFragmentのsetShowsDialog

2013-11-25T00:00:00+00:00 Android Java

※ソースを完全に読んだ訳じゃないので若干微妙なのであくまでネタとして

例えば、DialogFragmentを継承したクラスを作りsetArgumentsでandroid.os.Bundleを指定してパラメーターを渡す。そこまでは良いのだけど、そのパラメーターに値が入ってないとかgetSerializableなりはできるけどnullが返ってきてるような場合でそのままonCreateDialogを実行されてしまうとNPEなりの問題が発生してくる訳。そこら辺の制御とか辺りどうするのかって所なんですが

jsonpullparserのcustom_rules.xml

2013-11-23T00:00:00+00:00 Android

Android+JsonPullParserでも書きましたけど、公式にあるcustom_rules.xmlを使うとアノテーションプロセッサのクラスパスに他のライブラリ参照が入ってないので、APT処理によるソースの生成は成功するけどエラーが色々出るのはイケてないなーって思ってて、どうにか修正せねばって事でやってみた

ViewPagerIndicatorのfooterIndicatorStyle

2013-11-20T00:00:00+00:00 Android

footerindicatorstyleを設定することちょっとした装飾が出来る模様

Android+JsonPullParser

2013-11-14T12:00:00+00:00 Android Java

AndroidでJsonPullParserを使うっていうネタ。まぁ公式にもサンプルあるしそれ参考にすれば良いんじゃねって所なんで

※@JsonModel等は前回のをそのまま利用

InputMethodServiceを使ってIMを作るメモ

2013-11-06T00:00:00+00:00 Android Java Python

ネタ帳からの大体そのままな引用(要は雑って事)。以前、Androidのソフトウェアキーボードを作って、PC側とbluetoothを経由してスマフォ上のテキスト入力をPCから入力させるとかっていうのをやってた。とりあえず書いておこうかと

SpeechRecognizerを使って音声テキスト及び音声データを取得する方法

2013-11-05T00:00:00+00:00 Android Java

昔書いたネタをそのまま書く。

※リソース開放方式まで考慮してないので、そこら辺は活用する場合にはそれなりに要修正必須

※onBufferReceivedが機種依存により呼ばれないのもあるそうです

android.speech.SpeechRecognizerを使って音声からテキストを起こすAPIがあるけど、この際に音声データ自体も保管しておくっていう事をする。

SherlockNavigationDrawerを使ってみた

2013-10-23T00:00:00+00:00 Android Java

んまぁSlidingMenuだったりだとか色々あるのですけど、Googleが公開したNavigationDrawer方式をベースに使えるようにした物がSherlockNavigationDrawerらしい、正しいかは微妙だけど。ちなみにデモアプリもあるのでちょっとどんな感じかってのを見たければそれ入れて確認してみるってのも可能

という事で使ってみた (ただ公式なサンプルを見て自分で書いてやってみただけなので、ほとんど同じ)

gradle-android-toolkitでRobolectricを動かす

2013-10-20T00:00:00+00:00 Android gradle Java robolectric

Robolectricなテストプロジェクトをgradleで動かすなネタと若干似てますけど、こっちではandroid toolkitなgradleプラグインを用いてAndroidアプリをビルドする、testタスクを利用してsrc/test/javaにあるクラスをRobolectric利用でテストを実行するっていう方式をやってみた

gradle-android-toolkit+Android Studio (1)

2013-10-19T00:00:00+00:00 Android gradle

普通ならAndroid Studioから「New Project」 -> 「New Module」でAndroidプロジェクトなりモジュールなりどんどん作成していくだけで良いと思うんだけれども、Android公式がサポートしているandroid-toolkitなgradle supportを使ってプロジェクト構成を作った場合なケースに関して検証してみた

Robolectricなテストプロジェクトをgradleで動かす

2013-10-17T00:00:00+00:00 Android gradle robolectric

但し、android用のgradle pluginだとかrobolectricなgradle pluginはある模様だけどそれを使わずに素のbuild.gradleだけでごちゃごちゃとやってみた

Robolectric+mockito

2013-10-15T00:00:00+00:00 Android Java robolectric

Robolectric+powermockitoでRobolectricを利用している際におけるstaticメソッドのモック化っていうのを書いたけど、単純にRobolectric+Mockitoを使ったインスタンスメソッドのモック化に関してはスルーしてたので色々検証

Robolectric+powermockito

2013-10-11T00:00:00+00:00 Android Java robolectric

参考: http://addie9000.blogspot.jp/2012/12/robolectricpowermockandroidunit-test.html

Robolectricを使ってJUnit4ベースでテストしたいけど、PowerMockitoを使ってstaticメソッドをテストしたいって思ってもRobolectric自体が@RunWith(RobolectricTestRunner.class)を使うので、PowerMockitoのPowerMockRunner.class指定出来ないよねっていう事で上記の参考にRobolectricでのPowerMockitoの動かし方参考にしつつやってみた。ただ気になる事の検証的な目的かなと

※但し、上記の参考のRobolectricバージョン(1.1)とこの記事のバージョン(2.2)は違う

Android NativeMethods Pattern

2013-10-10T00:00:00+00:00 Android C++ Java

Androidっていうか単純にJNIに関する事だと思うので(ry

おそらくは通常だと

JNIEXPORT JNICALL jstring Java_パッケージ_say(JNIEnv* env, jobject thiz) {
}

的な感じでパッケージ名とメソッド名をconcatしたような名前の関数を定義する方式が一般的に知られていると思われるのですが、Androidのコアパッケージのソースとか色々見ているとNativeMethodsパターンな方式を採用しているのが多い。つまり上記のように定義しないっていうのがAndroidでは一般的なのかなと。んまぁNDKというかこういう辺りな事をやる事自体まったく無いんだけれどもやってみた

Android Live Wallpaper

2013-09-10T00:00:00+00:00 Android Java

いわゆるライブ壁紙っていう機能。SurfaceView的な感じで壁紙に動的にレンダリングしたりとか出来る

まぁ自宅のメモ用ブログには書いてたけどこっちに書いてなかったので、美人時計サービスを利用して1分毎に動的に壁紙をレンダリングするっていうのをやってみる。ただ、結構雑に作ってあるので(ry

※あくまでLive Wallpaperってどんな感じで作るのかっていう

AccessibilityServiceを古いAndroidバージョンで動かす

2013-09-08T00:00:00+00:00 Android Java

android.accessibilityservice.AccessibilityServiceを使用してNotificationを取得するをAndroid4.x以下(3.x系を除く)な2.x系で動かす場合、<meta-data>によるAccessibityServiceInfoの構築?はサポートされてない模様。

という事でやってみた

oauth-signpost(Android)でGoogle App Engine(+OAuth)

2013-09-06T00:00:00+00:00 Android Google App Engine Java

タイトル通り。要件は以下

Android4.3 NotificationListenerServiceを使ってみる

2013-09-03T00:00:00+00:00 Android Java

タイトル通り、Android4.3から追加されたらしいNotificationListenerServiceっていうのがある模様。どうやらAccessibilityServiceを使って通知を取得するっていうのは以前にやったけれども、それと同等な事をサクッと出来るようになったっぽい

とりあえずwktkしてるので使ってみた

android.intent.action.ASSIST

2013-09-03T00:00:00+00:00 Android

っていうのがあるらしい。ホームボタンからスライドするなりで起動(もしくは一覧から選択して起動)したり出来る模様。おそらくはAPI Level 16から出来るらしいのでAndroid4.1辺りかなと

LocalBroadcastManager

2013-07-19T00:00:00+00:00 Android Java

※ローカルのネタ帳からのほぼコピペ

一言で言えばアプリ内ローカルでのみ利用可能なブロードキャスト的な感じかなと。一般的には

ActionsContentView

2013-07-17T00:00:00+00:00 Android Java

https://github.com/StevenRudenko/ActionsContentView

SlidingMenuと同様なUIコンポーネントライブラリ。まぁサイドバーを設置してスワイプする事で出てくるようなメニューUIを実現するようなライブラリ。使ってみた

ちなみに https://play.google.com/store/apps/details?id=sample.actionscontentview にデモがあるので

PullToRefresh(ListFragment)#onRefreshをTouchUtilsでテストする

2013-07-08T00:00:00+00:00 Android Java

PullToRefreshを使うのは良いけど、PullToRefreshBase.OnRefreshListenerを使用して発生するListViewの下部に向けてスライドする事でリフレッシュするUI処理をテストしたい場合

ViewPager(FragmentPagerAdapter)のテスト

2013-07-04T00:00:00+00:00 Android Java

ViewPager(+FragmentPagerAdapter)を使っている際に、Activityのテスト(ActivityInstrumentalTestCase2)でViewPagerで利用されているFragmentPagerAdapterを取って、そのFragmentを取得してごにょごにょテストする方法

PullToRefreshのヘッダー?部に表示される矢印を消す方法

2013-07-02T00:00:00+00:00 Android

だそうです。こっちでもやってみたら見事に消えてくれた(setShowIndicator)

PullToRefreshでListFragment

2013-06-27T00:00:00+00:00 Android Java

※以下のAndroid-PullToRefreshは現時点でも既にdeprecatedになっており、 https://github.com/chrisbanes/ActionBar-PullToRefresh を使うべきだそうです

https://github.com/chrisbanes/Android-PullToRefresh を使うにあたってListFragmentでPullToRefreshをする場合

robotium(+ActionBarSherlock)を使ってみた

2013-06-13T00:00:00+00:00 Android Java

https://code.google.com/p/robotium を使う事でSelenium likeな方式でUIをシナリオテスト的な感じで使えるらしい

※以降で継承しているBaseActivityTestCaseはただのActivityInstrumentationTestCase2のサブクラス

ライブラリプロジェクトを伴うAndroidアプリをJenkinsでビルド

2013-06-13T00:00:00+00:00 Android Jenkins

んまぁライブラリプロジェクト自体をJenkinsのビルドプロジェクト(フリースタイル)とかで定義しちゃっても良いとは思いますけど、ActionBarSherlockとかだったりだとか公開されている有用なAndroidライブラリとかを伴うプロジェクトをビルドするとなると定義するかプロジェクト内にぶち込んじゃうかっていう所だと思うのですが、その後者側の「参照するライブラリプロジェクト自体をビルドプロジェクトとして定義せずにアプリプロジェクトにぶち込んでビルド」するっていう方式的なのを検証してみた

Android AccountManagerのgetAuthTokenはキャッシュされる?

2013-06-07T00:00:00+00:00 Android

ふと思って

って書いちゃったので調べた

Android AccountManager+SyncAdapter

2013-06-04T00:00:00+00:00 Android Java

以前Android AccountManagerで使えるアカウントを開発する方法を書きましたが同期的な機能のSyncAdapterをすっぽかしてたのでやってみた

Rails(OAuth)+Android SyncAdapter

2013-06-04T00:00:00+00:00 Android Rails

今まで書いたAccountManager及びSyncAdapterなやつは認証トークンを適当に作ってそれを利用してAPIにリクエストを投げるという方式だったのですが、そのサーバー側の問題が色々あるのでそこら辺をRailsで組み直し、Android AccountManager+SyncAdapterではOAuthを使ってAPIリクエストを行う方式というのを採用してみた。要は

Android ViewPagerIndicatorを使ってみた

2013-05-31T00:00:00+00:00 Android

https://github.com/JakeWharton/Android-ViewPagerIndicator

PagerSlidingTabStripと似ているんだが、どっちかと言えばこっちがメジャーなのかな。ActionBarSherlockの開発者の方がこちらも開発されている模様で

Android PagerSlidingTabStripを使ってみた

2013-05-30T00:00:00+00:00 Android Java

https://github.com/astuetz/PagerSlidingTabStrip

デモアプリもある模様だからそれみれば良いんだけど、いわゆるViewPager+PagerTabStripにインディケーター装飾を付ける物なのかなと。とりあえず以前書いたのをベースに使ってみた

BaseAdapterでgetFilter

2013-05-29T00:00:00+00:00 Android Java

BaseAdapterを用いる際にはgetFilterなんてメソッドが存在しないのでどうすんの的な感じなんだけど、Android FrameworkソースのArrayAdapterは

ActionBarSherlockでSearchView

2013-05-27T00:00:00+00:00 Android Java

android.widget.SearchViewなメニューのActionView自体が多分Android3.xくらいからサポートされたんだと思うんだけど、ActionBarSherlockにそれと同等な感じのWidgetが存在する模様。という事でAndroidAnnotations+ActionBarSherlockな構成でやってみた

Androidでmockito+hamcrestを使うとエラーになる件

2013-05-23T00:00:00+00:00 Android

Unable to execute dex: Multiple dex files define Lorg/hamcrest/Description

っていうようにテストを起動したりしようとするとこういうエラーが出ちゃう。その原因っていうが単純でmockitoの中にhamcrestのインターフェース群っぽいのが含まれている模様なので、これのクラスとhamcrestのjarに含まれているクラスが衝突してclasses.dexを生成するにあたってエラーになるんじゃないかと

DialogFragmentのテスト

2013-05-21T00:00:00+00:00 Android Java

例えば、なんかの登録処理をAlertDialogで表示させてsetViewでフォーム的なのをビューとして利用、そのAlertDialog自体はDialogFragmentで生成される。でそれのテストをどうやるのかって所なんですが、DialogFragmentはレイアウトにIDとか含まれず

AddFormDialogFragment fragment = new AddFormDialogFragment();
fragment.show(getSupportFragmentManager(), "add_form_fragment");

的な感じで使ってる場合にそのUIの振る舞いな処理をテストするにはって所なんですが

ActionBarSherlockとSlidingMenuなテスト

2013-05-18T00:00:00+00:00 Android Java

ActionBarSherlockなActionBarを使いつつの、ホームアイコンをタップしたらSlidingMenuが出たり消えたりするっていう所なUIテスト的なのをちょっと色々やってみた

Androidのテストカバレッジレポートでフィルター

2013-05-15T00:00:00+00:00 Android Java

カバレッジレポート出力で特定のパッケージとかライブラリプロジェクトとして参照しているのは除外(あくまで自分が作ったのじゃない物)したいとかっていうケースがあると思うのですが、ant.propertiesにemma.filterっていう形式で書けば良い模様

Androidでテストカバレッジレポートを出力

2013-05-13T00:00:00+00:00 Android Java

http://blog.kawamura-lab.com/?p=68

を参考にしました。まぁ普通に「android update (test-)project」的な事をやったら生成されるbuild.xmlのantタスクでemmaタスクでサポート出来る模様。でこっちでハマったのがライブラリプロジェクトの扱い、ライブラリプロジェクトにもbuild.xmlとかそういう辺りが必要な模様(フィルターすれば必要ないのかは不明)

Android SlidingMenuを試す

2013-05-12T00:00:00+00:00 Android Java

https://github.com/jfeinstein10/SlidingMenu

っていうfoursquareとかのアプリとかで採用されているやつらしく、Facebookアプリとかでも左上(通常はActionBarとかにアイコンが表示されている部分)を押すと左にサイドメニューがびょ〜んって出てくるやつ、あんな感じなのを実現できるライブラリな模様で

Universal Image Loader for Androidを使ってみた

2013-05-10T00:00:00+00:00 Android Java

参考: http://qiita.com/chuross/items/e3ca79065d9b67716ace

https://github.com/nostra13/Android-Universal-Image-Loader

ちょうど、AndroidAnnotations+Twitter4jで作ってたデモアプリ的なのがあったので、そいつでプロフィール画像をロードする仕組みな所をこのUniversal Image Loaderを使ってプロフィール画像を読み込むっていうのを処理してみた

Android PullToRefresh

2013-04-16T00:00:00+00:00 Android Java

※以下のAndroid-PullToRefreshは現時点でも既にdeprecatedになっており、 https://github.com/chrisbanes/ActionBar-PullToRefresh を使うべきだそうです。既に補足済み

シリーズネタになるかどうかは現状微妙ですが...

PullToRefreshっていう引っ張ってリロードしたりだとか、画面中でデータが末尾に達した場合に次のページなデータを読み込むかだとか、んまぁそういうのを実現したい時に便利なのが https://github.com/chrisbanes/Android-PullToRefresh っていうのがある訳なんですが、まだ使ってみたりとかした事が無いし、ちょっと要件としてそういうのが出てきたので使ってみた

ActionBarCompat

2013-04-14T00:00:00+00:00 Android Java

一般的にAndroid3.x以下のバージョンにおいてはActionBarそのものがサポートされてない。でAndroidのサンプル集にActionBarCompatっていうのがあって、それを利用する事でAndroid3.x以下のバージョンでもActionBar同様なUIを実現する事は出来る模様(但し、ActionBarクラス自体が存在する訳じゃないのでそれは使えない。あくまでUI的な所かと)

HttpClientクラスで「java.io.IOException: Attempted read from closed stream」が出るケース

2013-04-05T00:00:00+00:00 Android Java

多分、Androidに限った話じゃないと思うのですが

MapFragmentを使ってみた

2013-03-24T00:00:00+00:00 Android Java

タイトル通り。今更ながらMapFragmentを使ってGoogle MapsをAndroidアプリ上に表示させてみた

Android DreamServiceのsettingsActivity

2013-02-27T00:00:00+00:00 Android Java

たまたま見ていたらandroid.service.dreamで指定出来るDayDreamの定義XMLでsettingsActivityっていうのがあるのに気づいたのでやってみた

Androidアプリのテスト関係な件

2013-01-27T00:00:00+00:00 Android Java

色々まとめてみようかと思う。以前勉強したのをAndroid v4.1ベースで検証して書く

UbuntuとAndroidをbluetooth RFCOMMで通信する

2013-01-21T00:00:00+00:00 Android Java Python

まぁAndroid公式にBluetoothChatっていうのはありますけど。一応Android側はそれのソース読んでやってみたって話。ただこれはAndroidとPC(Ubuntu)をbluetooth RFCOMMを使って通信するというところになる

UbuntuでAndroidの動作画面を動画で録画する方法

2013-01-20T00:00:00+00:00 Android

録画って言い方がどうも微妙なんですが、Androidアプリとかで概要な動画を撮りたい場合とかあるのかも知れないし、無いかも知れないし〜。という事でUbuntuを使って撮影する方法

Android AccountManagerで使えるカスタムアカウントを開発する方法

2013-01-19T00:00:00+00:00 Android Java

んまぁAndroid端末使ってる人とかだと見た事あるし、触った事もある人もいるだろう

まぁWebサービスとかのアカウントを端末内に保管して、認証要求だとかをAccountManagerな機能を通じて行えたり出来るAPIが存在する訳ですが、これの独自のを作る方法。まぁ結構書く量が多いので

AppWidgetでListView

2013-01-18T00:00:00+00:00 Android Java

検証したのいつかは覚えてないんですが、ネタとして書いておく

Android API Level 11(Android3.x)くらいから(RemoteViews.setRemoteAdapter辺りがAPI Level14が必要なのでAndroid4.0以降)だと思うんですが、AppWidgetにListViewが使えるようになってる。それを検証したという件

ContentProviderから返されたCursor実装を取る

2013-01-09T00:00:00+00:00 Android Java

例えば以下のようなAbstractCursorを継承したクラスを作ったとする

Androidアプリ上でのサーチハードウェアキーによる振る舞い機能を実装

2013-01-02T00:00:00+00:00 Android Java

まだ微妙だけどメモる。一応、テストケースとかで色々してませんので

ShareCompatとActionProvider

2013-01-01T00:00:00+00:00 Android Java

Android4.x系からはShareActionProviderとかあるんすけど、それを使わずにActionProviderを使ってShareCompatで共有の処理を実装する方法

android.service.dreams.DreamServiceを使ってみる

2012-11-14T00:00:00+00:00 Android Java

Android4.2から追加された模様なDreamService API(公式的にはDayDreamかと)をさっそく使ってみた。単純に言うとスクリーンセーバー機能。

PagerTitle(Tab)Stripを使ってみる

2012-10-15T00:00:00+00:00 Android Java

最近、サーバー関係なタスクが多くてAndroidな音沙汰がまったくしなかったのでリハビリ的な感じでちょいと調べ物をしてました。それがだいぶ前からGoogle Play等であったように

の上部に表示される「おすすめ」や「カテゴリ」といったようなヘッダーラベルのような物。これどうやってやるのかって調べたらPagerTitleStrip、PagerTabStrip等を用いる事で簡単に出来る模様。なのでやってみた(実行環境はAndroid2.2)

(AndroidManifest.xmlはアクティビティ定義だけなのでパス)

android.accessibilityservice.AccessibilityServiceを使用してNotificationを取得する

2012-10-14T00:00:00+00:00 Android Java

ちょっと前にDeskNotifierっていうスマフォの通知をPCにプッシュするというアプリがあったのを見て思ったのですけど、(Android)スマフォのNotificationって監視して取得したり出来る物なのかっていう所が不明だったので色々と調査

で調査結果としてAccessibilityServiceを使う事で可能な模様、という事でやってみた。まぁ詳しい事は公式ドキュメントに書いてあるんですけど

ConnectivityManager.isActiveNetworkMeteredな件

2012-10-08T00:00:00+00:00 Android Java

なんかどっかで見た気がするのですが、例えばでかいファイルをダウンロードする必要性がある場合に3GではなくWi-Fiを使ってダウンロードさせたい。っていうか正しいのかは曖昧なんですが、「通信制限が存在するネットワークでダウンロード処理を継続しない」っていう処理をする場合等に使える模様。

android.support.v13.dreams.BasicDream

2012-10-07T00:00:00+00:00 Android Java

android-support-v13.jarの中身を見てたらそういうのがあるっていうのを発見。で色々調べてみたら、なにやらスクリーンセーバーのような物を作れるAPIな模様。という事でやってみた

Android+Bluetoothを使ってPC側からテキストの入力を行う

2012-07-29T12:00:00+09:00 Android Java Python

んまぁAndroidのKeyboard APIを使って独自のキーボードを作って、それをBluetoothのRFCOMMを介してPCからAndroidスマートフォン側に入力をさせるというしょうもない事をやってみてる。まぁ実際やったのはかなーり前の話なんですが今更ながらネタにしてみようかと

(非常に適当に)Android ICS SpellCheckerServiceを使ってみる

2012-03-19T00:00:00+00:00 Android Java

Android4.xから使える(んだと思われる)SpellCheckerServiceを使って、独自のスペルチェックを行うサービスを作りそれをアプリから利用してみる

android.widget.ArrayAdapterでのフィルタリングの拡張

2012-02-28T00:00:00+00:00 Android Java

Quick Search Box関係を調べていて勉強しているとふと思ったのが、クエリーによる検索をするのは良いけど例えばフィルターをする実際の処理を自分で実装した場合とかどうするのって思った。というかどうやらデフォルトのAdapterのフィルターだと検索キーワードをトークンで分割してフィルタしてくれない模様なんだけど。という事でフィルタ処理を自分で処理する方法を調べた所だと、Adapterとそれが使用するFilterオブジェクトを拡張してやれば良いらしい

android.content.BroadcastReceiver Using Android ICS of android.test.AndroidTestCase

2012-01-07T00:00:00+00:00 Android Java

Android4.0以前だとonReceiveメソッドをそのままインスタンスメソッドとしてAndroidTestCaseを使ってテスト出来たんですけど、Android4.0からだとエラーになる。そのエラーになるケースがsetResultExtrasを使った場合になるんですが[APIドキュメント][1]によると

Change the current result extras of this broadcast; only works with broadcasts sent through Context.sendOrderedBroadcast. This is a Bundle holding arbitrary data, whose interpretation is up to the broadcaster. Can be set to null. Calling this method completely replaces the current map (if any). This method does not work with non-ordered broadcasts such as those sent with Context.sendBroadcast

って書いちゃってんすよね。英語読める訳じゃないけど、要するにsetResultExtrasを使う場合はonReceiveをそのまま実行してもsendBroadcastでやっても出来ないらしいっぽい事を書いてる気がする。じゃあどないすんねんと。まぁ書いてあるとおりにsendBroadcastではなく、sendOrderedBroadcastを使えとの事らしいので

android.content.Loader Test Case Using android.test.LoaderTestCase

2011-12-19T00:00:00+00:00 Android Java

例えば

SampleLoader.java

package sample.test;

import android.content.Context;
import android.content.CursorLoader;
import android.database.Cursor;
import android.database.MatrixCursor;

public class SampleLoader extends CursorLoader {

    public SampleLoader(Context context) {
        super(context);
    }

    @Override
    public Cursor loadInBackground() {
        Cursor csr  = null;

        try {
            MatrixCursor mc = new MatrixCursor(new String[]{ "_id", "NAME" });
            mc.addRow(new Object[] { 1, "hoge" });
            mc.addRow(new Object[] { 2, "fuga" });
            mc.addRow(new Object[] { 3, "foobar" });

            csr = mc;
        } catch(Exception e) {
            e.printStackTrace();
        }

        return csr;
    }
}

的な感じで作っといて、これをテストする方法ですが。普通にLoaderTestCaseっていうのがあるので