Android

Androidで現在起動中のActivityを知る方法

Android開発にて Activity, Fragment での画面遷移が入り乱れる実装をしていると、現在動かしている画面のActivityが何なのか知りたくなることがある。 昔の LayoutInspector や adb でも調べることができるけど、ログに出力する方法を書き残す。 ActivityLifecycleCallbacks を使って、activityがアクティブになった段階でログを出力すれば良い。

Read More
犬のためのアプリを作っている

犬のためのアプリを作っている

ZOZOテクノロジーズの愉快なエンジニア AdventCalendar その2、16日目です。12月も半分過ぎました。やばいですね。 ZOZOのAdventCalendarですが完全にZOZOとは関係ない、個人的趣味な記事になります。 いぬをささえるぎじゅつ と題して、趣味レベルでコツコツ作っている犬のアプリについて書きます。 なぜ いぬをささえるぎじゅつ なのか うちの愛犬のもなかです。 ウェルシュコーギーペンブローク♀推定8歳 instagram

Read More

Android の DI を Dagger から ToothPick に代えた

Dagger2 がほんとに辛い。 公式サイト見たり、先駆者の皆さんのブログを見ながらやってみるけど、ややこしくて自分で改善するのはかなり辛い。使っているというより、言われたとおりに設定するだけで精一杯。 そんなことをぼやいてたら Realm と ウフィカ の中の人 @zaki50 さんから

Read More

AndroidのTestまとめ

この記事をまとめるにあたって Best Practices for Testing | Android Developers を主に参考にしています。 Androidのテストは大きく分けて Unit test と UI test の2種類があり、実装方法や対象などで分けると5種類ある。

Read More

Gradleで管理されたAndroidProjectのEspressoテストをGenymotionを使ってjenkinsでぐるぐる回すまで(長い)

Gradleで管理されたAndroidプロジェクトをJenkinsで動かすまで苦しんだのでまとめます。 ##環境 MacOS 10.8.5 Java 1.7 Gradle 1.11 Android Studio 0.5.3 Espresso 1.1 Jenkins 1.5558 git plugin gradle plugin ###前提

Read More
とあるプログラマのAndroidAnnotations

とあるプログラマのAndroidAnnotations

※この記事はAndroid Advent Calendar 2013 12/04担当として書いてます。 勢いでAdvent Calendar登録したけど、最近新しいこと、突き詰めたことしてない。 Genymotionは 明日の mofmofneko さんが書くみたいだからやめておこう。

Read More
Ubuntu Touch Developer Preview を Nexus7にインストールしてみた

Ubuntu Touch Developer Preview を Nexus7にインストールしてみた

しかだよ。 Glaxy Nexus、Nexus7, Nexus10, Nexus4 でubuntu phone or tabletのデモ版がインストールできると聞いたので、早速やってみました。 割りと簡単に出来ました。DLに時間がかかるので、全部で2時間くらいかかりました。 Touch/Install - Ubuntu Wiki

Read More
ADT 21.0.0新機能紹介

ADT 21.0.0新機能紹介

しかだよ。 Android Developer Toolのリリース文をまとめてるよ。 しかの意訳なので気をつけてね。 #Layout Editor ##複数の端末画面が同時にプレビューできるようになりました。 ![](/images/android/Screen Shot 2013-02-20 at 1.08.14.png)

Read More

ADT 21.0.1新機能紹介

アプリケーションや依存ライブラリパッケージ名の重複を検出するようになりました。 Updated build to detect and handle package name conflicts between an application and the libraries it depends on. Libraries cannot share package names unless all of them share the same package name. (Issue 40152, Issue 40273)

Read More

ADT 21.1.0 新機能紹介

しかだよ。(`・ω・´) ADTが21.1.0にアップデートしてたので、新機能をまとめてみたよ。 ADT Plugin | Android Developers notificationとblank fragmentとlist fragmentのテンプレートができたよ。 Added new code templates for notifications, blank fragments and list fragments.

Read More

MapFragmentをTabの要素として表示したい

しかだよ。 MapFragmentをTabの一つとして表示したいんだけど、色々問題が出てきつつ解決できたのでメモ。 前提条件 Android 4.x TabはActionBarを使用 Mapはgoogle-play-servicesを使用 とりあえずActionBarにタブを設定するソースコードはこんな感じ。 {% highlight java %}

Read More

adk2012を動かすとこまで

しかだよ。 ADKのサンプル動かすとこまで意外と遠かったのでまとめたよ。 ここを参考にやってみました。 Accessory Development Kit 2012 Guide | Android Developers

Read More
NFC Checkin 端末 プロトタイプを作った。

NFC Checkin 端末 プロトタイプを作った。

しかだよ?FourSquareのチェックインってめんどくさいですね。 <ol> <li>アプリ起動</li> <li><a class="keyword" href="http://d.hatena.ne.jp/keyword/GPS">GPS</a>とネットで周辺検索(これが遅い)</li> <li>今居る場所を探す</li> <li>チェックイン</li> </ol> <p>チェックインしたいだけなのに、こんなに手間がかかります。めんどくさいとどんどんご無沙汰になって、いつしかチェックインしなくなる・・・。</p> <h4>そんなのってないよ</h4> <p><center></p> <p><a href="http://f.hatena.ne.jp/re_shikajiro/20121003214230" class="hatena-fotolife" target="_blank"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/re_shikajiro/20121003/20121003214230.jpg" alt="f:id:re_shikajiro:20121003214230j:image" title="f:id:re_shikajiro:20121003214230j:image" class="hatena-fotolife"></a></p> <p></center></p> <p>可能な限り短くしてみました。</p> <ol> <li>カードをかざしてチェックイン</li> </ol> <p><center><a href="http://f.hatena.ne.jp/re_shikajiro/20121003211154" class="hatena-fotolife" target="_blank"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/re_shikajiro/20121003/20121003211154.jpg" alt="f:id:re_shikajiro:20121003211154j:image" title="f:id:re_shikajiro:20121003211154j:image" class="hatena-fotolife"></a></center></p> <p><center><a href="http://f.hatena.ne.jp/re_shikajiro/20121003212914" class="hatena-fotolife" target="_blank"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/re_shikajiro/20121003/20121003212914.jpg" alt="f:id:re_shikajiro:20121003212914j:image" title="f:id:re_shikajiro:20121003212914j:image" class="hatena-fotolife"></a></center></p> <p>おしまい。</p> <p>ワンステップになった。やったね。</p> <h4>これどうやってるの?</h4> <p><center><a href="http://f.hatena.ne.jp/re_shikajiro/20121003212916" class="hatena-fotolife" target="_blank"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/re_shikajiro/20121003/20121003212916.jpg" alt="f:id:re_shikajiro:20121003212916j:image" title="f:id:re_shikajiro:20121003212916j:image" class="hatena-fotolife"></a></center></p> <p>これは<a class="keyword" href="http://d.hatena.ne.jp/keyword/NFC">NFC</a>という近距離通信技術を使って、皆が持ってる<a class="keyword" href="http://d.hatena.ne.jp/keyword/suica">suica</a>などのカードでチェックインをできるようにしたものです。<a class="keyword" href="http://d.hatena.ne.jp/keyword/NFC">NFC</a>は一部の<a class="keyword" href="http://d.hatena.ne.jp/keyword/Android">Android</a>端末で利用できます。このアプリはまだ公開していません。そのうち。</p> <h5>流れ</h5> <ol> <li><a class="keyword" href="http://d.hatena.ne.jp/keyword/NFC">NFC</a>搭載の<a class="keyword" href="http://d.hatena.ne.jp/keyword/Android">Android</a>がカードのIDを識別</li> <li><a class="keyword" href="http://d.hatena.ne.jp/keyword/FourSquare">FourSquare</a>のアカウントとカードのIDが関係しているかサー<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D0%A1%BC">バー</a>に問い合わせる。</li> <li>登録済みならばチェックイン処理を行う。</li> </ol> <p>とりあえずプロトタイプは<a class="keyword" href="http://d.hatena.ne.jp/keyword/Android">Android</a>だけで完結しました。このままだと普段画面が後ろを向いてしまって使いづらいので、<a class="keyword" href="http://d.hatena.ne.jp/keyword/NFC">NFC</a>は<a class="keyword" href="http://d.hatena.ne.jp/keyword/Arduino">Arduino</a>にして、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Android">Android</a>と<a class="keyword" href="http://d.hatena.ne.jp/keyword/ADK">ADK</a>で接続しようかと思ってます。</p> <p><b><a href="http://lab.aratana.jp/" target="_blank">アラタナ研究所</a> に遊びに来たら是非やってね。</b></p> <p>んじゃまた。</p>

Read More

ADKのサンプルを動かそう

しかだよ。 ADKのバージョンが変わったりしてて正規のサンプルが動かなかったりしますよね。 というわけで、2012/9/30 現時点で動くサンプルをご紹介します。 Android 動作環境 Android 4.0.3 Galaxy Nexus ソースコード Y.A.M の 雑記帳: Android Hello ADK つくった!のソースコードをほんの一部だけ修正しています。

Read More
Android Facebook SDKの認証サンプルが動かないので

Android Facebook SDKの認証サンプルが動かないので

Facebookの使い方を間違えて落ち込んでいるしかだよ。(´・ω・`) AndroidのFacebook SDKを使いたくてとりあえずAndroid Tutorial - Facebook Developersを動かそうとしたら、ずっとローディングのまま・・・。それを動かすまでの話です。 Jan 18, 2012のcommit: c58af0b64d85a853f1c79f2ee207c6d9992d31baの状態のsdkを利用しました。

Read More

起動しているアプリの使用メモリ情報を見る

adb shell dumpsys meminfo [パッケージ名] サンプル shikajiro-MacBook-Air:~ shikajiro$ adb -s HT0B4RX02342 shell dumpsys meminfo jp.shikajiro.app Applications Memory Usage (kB): Uptime: 10275836 Realtime: 15606411 ** MEMINFO in pid 7176 [jp.shikajiro.app] ** native dalvik other total limit bitmap nativeBmp size: 6148 5823 N/A 11971 32768 N/A N/A allocated: 6138 4121 N/A 10259 N/A 0 1912 free: 9 1702 N/A 1711 N/A N/A N/A (Pss): 706 184 6501 7391 N/A N/A N/A (shared dirty): 2772 1984 5520 10276 N/A N/A N/A (priv dirty): 664 108 5464 6236 N/A N/A N/A

Read More

Androidのbrowser ”Dolphin”の中の人達と会ってきた

3rd partyのbrowserとして上位のDL数を誇り、最近spy wareとして叩かれてたDolphinのCEO達とのmeetupが非公開で開催されたので会って来ました。 Dolphin Browser | Smart Phone, Clever Browsing

Read More

xmlのボタン切り替えselectorでstate_pressedが効かないと思ったらitemの順番に意味があった

タッチしたときに画像が切り替わるボタンを作るのでxmlをselectorで作りました。 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="

Read More
C2DMについて調べてみた

C2DMについて調べてみた

申請はアプリのパッケージ単位です。登録はGoogle Accountが必要です。 必須条件 Android 2.2に対応したAndroid Marketアプリが入っている端末 有効なGoogleアカウント 全体構成図 AndroidにはBroadcastReciverとしてC2DMの情報を受ける口を実装します。 自由に実装した3rd party App ServerでC2DMの情報を送信します。 Google管理下のC2DMServerと介して情報はAndroidに送られます。 C2DMの有効化

Read More
インストールされているアプリの一覧を取得するなど

インストールされているアプリの一覧を取得するなど

しかだよ。 AppCircleという、Androidのアプリを楽しむ探すアプリを作ってます。 そのなかの仕組みで、端末にダウンロードしてインストールしたアプリの一覧を取得したくなりました。 @t_eggさんの助言をもらい、以下な実装になりました。 ...略... //パッケージマネージャを利用して、アプリケーションの一覧を取得する。 //IntentにCATEGORY_LAUNCHERを指定しているので、厳密にはランチャーに表示されるアプリの一覧です。 PackageManager pm = getPackageManager(); Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCHER); List<ApplicationInfo> apps = pm.getInstalledApplications(0); Log.i(TAG, "ApplicationInfo count:"+apps.size()); /* * アプリケーションの一覧の中身に応じて色々処理する。 */ for(ApplicationInfo info : apps){ //アプリケーションにSYSTEMフラグが立っていたら(0000 0001)それはプリインストールされたアプリである。 if((info.flags & ApplicationInfo.FLAG_SYSTEM) == ApplicationInfo.FLAG_SYSTEM) continue; …略…

Read More
Android ソースコード読書会 第4回 Activity.java

Android ソースコード読書会 第4回 Activity.java

というわけで、日本Androidの会福岡支部の中で、Android SDKのソースコードを読む読書会(輪講)を隔週でやってまして、今回は第4回目です。Androidの中心とも言えるActivity.javaのライフサイクルを中心にソースコードを読み進めていきました。担当は @kenz_firespeed さんでした。 android.git.kernel.org Git - platform/frameworks/base.git/blob - core/java/android/app/Activity.java まずはライフサイクルの整理

Read More
Handler.javaを読む。

Handler.javaを読む。

Androidの勉強会でAndroidのソースコードを読む会を隔週月曜日の夜に行っています。 日本Androidの会福岡支部 Android Study Night : ATND Android Study Night vol.2 : ATND Handler.javaを理解する。 throw Life - AndroidのHandlerとは何か?にadamrockerさんがめちゃくちゃわかりやすくまとめて下さってますので、Handlerに興味が有る方はそちらをどうぞw

Read More
Androidのシナリオテストツール Robotium やってみた。

Androidのシナリオテストツール Robotium やってみた。

昨日、パプテマス Scirocco 触ってたら中はRobotiumというのを使っていたので調べてみたら、そこそこメジャーなシナリオテストツールだったので、触ってみました。 Robotium とは Androidのシナリオテストを簡単に書けるライブラリです。UIスレッドを意識せずに書けるので、テスト仕様書に近いコードを書くことができます。ブラウザテストツールのSeleniumを意識してるみたいですね。 公式サイト robotium - It’s like Selenium, but for Android™ - Google Project Hosting

Read More

Unable to resolve target ’android-x’ until the SDK is loaded.

タイトルのエラーになってしまって、Androidプロジェクトがビルドできません。androidのSDKを4、7、8と変えてもだめ、クリーンしてもだめ。 Eclipse再起動したら治りました。なんだったんだろう。

Read More
AndroidのUI自動テストツール Scirocco 触ってみた。

AndroidのUI自動テストツール Scirocco 触ってみた。

テスト大好きしかだよ。Scirocco っていうUIテスト自動化ツールがリリースされたので触ってみました。 Scirocco Zガンダムのパプテマス・シロッコと関係があるかわからないですが、UIテストの後スクリーンショットを撮って保存したり、レポートを出力することが出来るみたいです。さらに、TMSってのを使うと、プロジェクトメンバーと共有もできるらしい。業務支援ですな。 中ではrobotiumを動かしてるので、記述は簡略されてます。 公式サイトのQuick Start をやってみます。

Read More
AndroidのAsyncTaskをテストしてみるよ

AndroidのAsyncTaskをテストしてみるよ

Androidのテストコード書くのが日課のしかじろうだよ。 AsyncTaskのテストコードの書き方が分からなくて悩んでたけど、解決策が見つかったのでログに残します。意見・指摘とかあればコメントお願いしますね。 AsyncTaskとは AsyncTaskはAndroidで使う非同期処理のクラスです。重たい処理(例えばHTTPでのDLや画像の変換処理など)をバックグラウンドで実行させるのに向いてます。処理の進行状況をプログレスバーに表示させることもできます。 似た処理にServiceがありますが、Serviceはバックグラウンドで処理を繰り返させる(GPSを監視し続けて特定の条件で通知を出すなど)などが目的なので、Activityから独立しています。 Activityと密接な非同期処理がAsyncTask。独立した非同期処理がServiceって感じで使い分けてます。 Serviceは専用のTestCaseがあるからいいけど、AsyncTaskは無いのでさてどうしたものか。 ロジックのテスト まずは、非同期とかどうでもいいので、メソッドのロジックのテストがしたいです。でもAsyncTaskの #doInBackground() は protected なので、以下のやり方では動きません。

Read More

DBに変更があった場合ContentResolverのcallbackを呼び出す

データベースのデータが追加、変更、削除されたときに特定の処理を呼びたいってありますよね。うん、あるある。 AndroidだとregisterContentObserverとnotifyChangeを使うとできます。例えばこんな感じ。 メインの処理側 ... ContentObserver contentObserver = new ContentObserver(new Handler()) { @Override public void onChange(boolean selfChange) { super.onChange(selfChange); //データベースに変更があったときに呼び出したい処理を書く } }; //ObserverをContentResolverに登録 getContentResolver().registerContentObserver(URI, true, contentObserver); ... ContentProviderを継承したクラス。この場合はinsertを例に書いてます。

Read More

Java Cloud Meeting Fukuoka 2010 で Android のことを話してきたんだよ。

しかだよ。 Java Cloud Meeting Fukuoka 2010でAndroidの事を話してきたんだよ。 Android x CloudView more presentations from shikajiro.

Read More

Androidの会福岡支部でHackathonやるよー。

しかだよ。 Androidの会福岡支部でHackathonやるんだよ。 android hackathon in fukuoka 申し込みはこちらだよ。 1回目 11/15(日)10:00~ http://atnd.org/events/2057 2回目 11/29(日)10:00~ http://atnd.org/events/2058 Hackathon参考 http://googlejapan.blogspot.com/2009/03/android-hackathon.html

Read More

日本Androidの会福岡支部 第一回勉強会をやったよ

日本Androidの会福岡支部 支部長のしかだよ。 9/26(土)に第一回勉強会を行ったので報告だよ。 アジェンダ 13:00~ 自己紹介タイム 13:30~ ライトニングトーク Androidのおさらい @shikajiro 誰でも使いこなせる(はずの)スマートフォンを作ってみた @soichirooooo5 仮想SDカードの設定 @eryngii_mori 15:00~ 名刺交換 16:00~ オープンスペーステクノロジー 18:00~ 懇親会 今回は第一回ということで、

Read More

The project cannot be built until build path errors are resolved

別のPCで作ったandroidプロジェクトをチェックアウトしたらエラーになった。 The project cannot be built until build path errors are resolved

Read More
日本Androidの会福岡支部が立ち上がったよ

日本Androidの会福岡支部が立ち上がったよ

しかだよ。 日本Androidの会福岡支部が立ち上がるということで、参加してきました! きしだなおき ぷれぜんつ 『日本Androidの会の福岡支部を作りたいんですが・・・』 事前アンケート ※以下のデータは大変大ざっぱです。 参加者40名 iPhoneユーザー15人くらい Androidユーザー5人くらい 業務系10人 web系10人 組込5人 ケータイ3人 iアプリ5人 Androidアプリ3人 iPhoneアプリ1人 Androidについて 日本Androidの会事務局長の中村さんを迎え、Androidについてお話を聞きました。

Read More

日本Androidの会福岡支部が立ち上がるんだよー!

しかだよ。 福岡にも日本Androidの会が立ち上がります。牽引役は「創るJava」で有名なid:nowokayさん。 7/11 15:00 立ち上げのイベントがありますので、興味がある人は参加しちゃえばいいんだよー。鹿もいくよー。 http://atnd.org/events/961 ----- COMMENT: AUTHOR: re_shikajiro URL: http://d.hatena.ne.jp/re_shikajiro/ DATE: 07/02/2009 12:27:52 しかでは実力不足過ぎます>< 精進します。 ----- COMMENT: AUTHOR: yone098 URL: http://d.hatena.ne.jp/yone098/ DATE: 07/02/2009 01:54:06 たまにはシカジロウが牽引してもよいと思います。 きしだなおきをたまには休ませてあげてください。 ----- COMMENT: AUTHOR: ide DATE: 07/01/2009 21:56:01 興味深いなぁ。いきたいなぁ。

Read More

android1.5にしたらいきなり動かなかったあなたへ

ADT Plugin for Eclipse が古い 1.5からちょっと違うよ!すぐにpluginを更新するんだよ! https://dl-ssl.google.com/android/eclipse/ 1.1で作成したプロジェクトは動かないかもしれないです。 Creating an AVD 次はこんなエラーになって動かなかったよ。

Read More
ボタン表示はできたけど、ボタンクリック処理がうごかない

ボタン表示はできたけど、ボタンクリック処理がうごかない

ボタン表示はできたけど、ボタンクリック処理がうごかないよ>< public class Sample extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button button1 = (Button)findViewById(R.id.button1); button1.setOnClickListener(<span class="synStatement">new</span> OnClickListener(){ <span class="synType">public</span> <span class="synType">void</span> onClick(View v) { } }); } }

Read More
@Overrideでエラーがでちゃうー

@Overrideでエラーがでちゃうー

Androidのソースコードに@Overrideを明示的に書いたらエラーになってしまったよ。あれれ? Button button1 = (Button)findViewById(R.id.button1); button1.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { Button button = (Button)v; Log.v("Test", String.valueOf(button.getText())); } });

Read More
AndroidがHello World! と言うまで鹿は構築するのを止めない!

AndroidがHello World! と言うまで鹿は構築するのを止めない!

迷走に定評のあるしかじろうがAndroidに触ってみたんだよ。 とりあえず、HelloWorldまでのやり方だよ。 Eclipseインストール GoogleからAndroid Puluginが出ているので、開発環境はEclipseがおすすめだよ。 http://www.eclipse.org/ AndroidSDKインストール http://developer.android.com/sdk/1.1_r1/index.html 適当なディレクトリに配置するんだよ。後でEclipseに設定するよ。 Eclise で AndroidSDK のPathを設定する。 EclipseのPreference -> Android -> SDK Location をAndroidSDKを配置したディレクトリにするんだよ。

Read More