リア充爆発日記

You don't even know what ria-ju really is.

Android

Androidアプリ開発の手引 2014年 君がいた夏ver.

最後にAndroidアプリをいじっていたのはもう2年近く前のことだ。2年も経てばスタンダードも大きく変わっているだろうと再度初心に返り、イチからプロジェクトを作ってみたいと思うこの夏。 開発マシン OSX10.9.4 参考 http://developer.android.com/index.ht…

TitaniumのAndroidでGoogle Mapv2を使った時、なぜか2回目以降のアクセスから真っ黒になってしまったときのメモ

検索用。https://developer.appcelerator.com/question/156521/timap---map-shows-only-after-clear-data-otherwise-is-emptyblackAndroidManifest.xmlのtargetSdkVersionが14以上だとそうなるらしい。。。もうわけわからないよ。こんなわけわからん設定でOK…

TitaniumでAndroidアプリを配信する手順メモ

Google playを経由してテスト用や本番用のアプリを配信する手続き。これの和訳。 http://docs.appcelerator.com/titanium/3.0/#!/guide/Distributing_Android_apps 手順 Google playへの登録 キーペアと証明書の生成 キーストアの確認 アプリが正しいキーで…

Androidのタブレットとスマートフォンを判別する

スマホにはUAに”Mobile”って入ってるんだって。Android2.xはその限りではないそうだけど。http://googlewebmastercentral-ja.blogspot.jp/2012/11/giving-tablet-users-full-sized-web.html知らんかった。。。

Android開発でどうしたらいいかわからない未解決リスト

時間が解決してくれる問題もあるかもしれないので、備忘録的にメモしておく。 深刻度大 Google Maps v2を使っているActivityのテストがRobolectricで書けない。 GoogleMapオブジェクトがfinalで、それをモックする方法が見つかってない。 mockito1.9.5とpowe…

getBestProvider()の動きメモ

以下のコードの結果をデバイスのGPSの設定ごとに表示。デバイスは実機でIS05。 GPSの設定は2種類 無線ネットワークを使用 GPS機能を使用 なので、設定のパターンは4種類 実行コード LocationManager manager = (LocationManager) getSystemService(Context…

デバッグ時のSigningの話

Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES] こんなメッセージが出たらSign絡みをうたがったほうがいい。 Androidアプリにはかならずサインというのをする。鍵を作ってapkにサインする的な感じ。「してねーよ?」って人はIDEとかが勝手にやっ…

さくらのVPS+Jenkins+github+Android

さくらのVPS+Jenkins+github+rails3の続編。ゴールは、githubにpushすると、さくらのVPSで動いているJenkinsがgithubから最新ソースひっぱってRobolectricのテストかけた上に、apkを作るところまで。 プロジェクトの作成 mavenプロジェクトにしてみた。 ユー…

Android開発するときにテスト絡みで調べたことまとめ

追記系。 デフォのテストは重くてきつすぎるっす Androidのテストツールならこれ!Robolectric導入の儀。 これ以降、ほとんどRobolectricを使う前提の話 画面の遷移 RobolectricでActivityの遷移を確認する方法 フラグなんかも以下のような感じでテストでき…

java.io.IOException: No authentication challenges found

ヨシズミくん。このエラーの原因タウンページで調べてくれたまえ。で、調べたところ、これはサーバから401 Unauthorizedが帰ってきたときにヘッダが正しくないと起こるらしい。なんだよ、せっかくカッコつけて401返したのに。正しい状態のヘッダとは WWW-Aut…

Viewのレイアウト調整でよく使う事項メモ

随時追加系メモ 位置調整系 テキストを真ん中に寄せる layout_gravity="center" その他center系を適宜使う 等間隔にViewを置く。 layout_weightを使う widthかheightの指定(水平方向の場合はlayout_width)は意味がなくなるので0dpにしたほうがパフォーマンス…

美しくログアウトする方法

えーと、何が言いたいのかというと、ログアウトしたあとは、だいたいトップ画面とかログイン画面とかに遷移させると思うんです。 で、そのときに戻るボタン押した時にログアウトボタンがある画面に戻っちゃうとかっちょ悪いよね、という話。Activityの流れと…

SharedPreferencesを消す方法

個別の項目なら SharedPreferences.Editor.remove(String) 実際は・・・ context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE).edit().clear().commit(); 全部なら SharedPreferences.Editor.clear() 実際は・・・ context.getSharedPrefer…

リスト表示に使うListViewについて調べたメモ

動的なリスト表示を実現するにあたって調べたメモ。参考はここ。 http://developer.android.com/guide/topics/ui/declaring-layout.html#AdapterViewsざっくりな僕の理解では ・・・ AdapterViewというそれようのViewがあって、その子クラスにListViewとかGr…

どのContextを使えばいいの?

ここの要約的な話。 http://stackoverflow.com/questions/1026973/android-whats-the-difference-between-the-various-methods-to-get-a-contextActivity内でContextを引数に求められるメソッドを使うとき、以下の3つの選択肢がある。 this(=Activity) getA…

ユーザー情報などのデータの永続化の方法について調べたメモ

例えばSNSやゲームにおけるユーザー名とかの基本情報など、頻繁に利用する情報はどこかに出し入れしやすい場所に保存して置きたい。 そんな感じのAndroidにおけるデータの永続化について、セキュリティ面等も含め、カンタンに調査検討したメモ。情報元はここ…

EditTextを拡張してメールアドレス用にしてみる

public class EmailEditText extends EditText implements TextWatcher { private static final String TAG = EmailEditText.class.getSimpleName(); public boolean isValid = false; public EmailEditText(Context context) { super(context); initView();…

Androidのエミュレータのhostsを編集する

RESTful APIとWebサイトを1つのアプリケーションで作るでクライアントからはapiサブドメインにアクセスさせよう!と決めて、rspecでroutingのテストでその縛りを入れてしまったので、エミュレータからのアクセスはサブドメインapiが入ったhost指定にしない…

Fragmentの中にFragment

できるようになったのはつい最近だったんですな。 http://developer.android.com/about/versions/android-4.2.html#NestedFragments support libraryのリビジョンを11にする getChildFragmentManager()を使う ネストしたFragmentはlayout内でで配置したもの…

Httpで画像をとってきてImageViewにセットする

Weak Referencesから学ぶJavaにおけるオブジェクトの4種類の参照でWeak Referenceを学んだ後、http://android-developers.blogspot.jp/2010/07/multithreading-for-performance.htmlを真似ながら、HTTPで画像をとってきてImageViewにセットするクラスを書い…

HttpURLConnectionでmultipart/form-dataをPOSTする

たいがいのアプリで必要であろうHTTP通信。シンプルなRESTだけあればいいのに、既存のライブラリはどれもデカく、アプリサイズが大きくなるのが嫌だったので自前実装を試みた。 GB以降だったらHttpURLConnectionがいいってどこかのエライ人が言っていたのでH…

JSONArrayでStub!

どういうわけかRobolectricにないっぽい。Android実装があるだけで中身はピュアJavaのはずなので、手作りShadowでもいいと思うんだけど、めんどくさいのでポムった。 <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20090211</version> <scope>test</scope> </dependency> <dependency> <groupId>com.pivotallabs</groupId> <artifactId>robolectric</artifactid></dependency>

mockito1.9.5とpowermock1.5は同時に使えない件について

追記)なんかいろいろわかってないところがあるので、このエントリの内容はペンディング。 powermockなんていらないやい!と思ってたけど、finalなGoogleMapクラスをモックにしないとどうにもテストがままならない事案が発生しまして。で、powermockを以下の…

Android Google Maps v1でやってたことをv2でやる方法

随時追記型メモ。 MapViewの配置 private GoogleMap mMap; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.my_map)).getMap(); …

AndroidでGoogle Maps v2 をエミュレータで動かしてしかも爆速

Google Play ServicesとGoogle Maps Android API v2について調べて見たメモでちょろっと触れたけど、Google Maps v2はGoogle Play services経由で動かすという特性上、エミュレータでは基本的に現状は使えない。が、基本があれば例外もある、ということで動…

RobolectricでActivityの遷移を確認する方法

ActivityAからActivityBに遷移(?)できていることを確認するテストを書きたかったのでやり方を調べてみるとStartedMatcherってのを使うっぽかった。 http://pivotal.github.com/robolectric/javadoc/com/xtremelabs/robolectric/matchers/StartedMatcher.htm…

ActionBarSherlockのTabにFragmentでGoogle Map APIv2を突っ込む

こちらを参考に。 http://stackoverflow.com/questions/13721929/using-actionbarsherlock-with-the-new-supportmapfragment/13727539#13727539MapFragment(SupportMapFragment)を使おうとすると無理ゲーだし、そうしないといけないこともないんで、Sherlock…

Google Play ServicesとGoogle Maps Android API v2について調べて見たメモ

僕の理解の限りでは、これまではMapViewはActivityでしかつかえず、Fragmentとして使うことができなかった。作ればわかる! Androidプログラミング 第2版 -SDK4対応- (Smart Mobile Developer)作者: 金宏和實出版社/メーカー: 翔泳社発売日: 2013/04/23メディ…

Guiceを使う時の読み物まとめ

(Robo)Guiceを使うにあたってDI含め、理解に役に立ったサイトなど。 はじめてのDependency Injection Guiceチュートリアル Deep dive into RoboGuice beyond "Hello World apps" RoboGuiceもGuiceも読んでいるサイトがどのバージョンについて説明してるか注…

Androidエミュレータ起動時になんだかすごいエラーが出てどうにもならなくなったとき

今まではなんともなかったのにこんなエラーが・・・。 Crashed Thread: 0 Dispatch queue: com.apple.main-thread Exception Type: EXC_BAD_ACCESS (SIGSEGV) Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000000 VM Regions Near 0: --> __TEXT 0…