@neiraza

2匹の怪獣が寝た後にプログラマーしてる僕のネタ帳

Androidの位置情報がとれなくなった(非開発ネタ)

開発用のAndroid端末で位置情報が取得できなくなった。

3G回線を利用していないやつなので、
WI-FI基地局の位置情報か、GPS頼み。

WI-FI基地局の位置情報が急にとれなくなったとか言われても
確認がよくわからないので、GPSだけ確認してみた。

A-GPSの衛星軌道データがキャッシュされていて、
時間かかってるんじゃないかなー?と思い、

「GPS Status & Toolbox」ってツールで、
“メニュー”⇒“ツール”⇒“A-GPSの管理”でダウンロードを選択すればOK


これで大丈夫かなーと思ったら、やっぱりダメ。


なんとなく会社の非常階段に出て、リトライしたら10秒くらいで位置がとれた!




GALAXY S os2.2以外はね・・・。

ユー、Map Keyを取得しちゃいなよ

Android Maps API v1のAPI Keyを久々に新規に取得したのでめもめも。

仕事でAPI v1を使っていて、
(v2になればKey取得とかなかったような気もするけど)
サービスがまだv1なので開発機をかえる毎に取得しなおし。

そんなわけで、すぐに手順を忘れるのでメモる。

debug.key取得

HOME/.android/debug.key
これが無い場合は適当なIDEやantでアプリをbuildすると勝手につくられているはず。
keytoolで作成することも可能だけど、どうせIDEで開発するなら、
そいつに作成しておいたほうが無難なきがす。

md5を使うのでメモっておく

keytool -list -v -keystore ~/.android/debug.keystore

ちなみに・・・
keyのパスワードはandroidなので、自前で生成する場合は同じにしといた方がいいんでないかな。
下記、公式より抜粋。

debugしちゃいなよ(Android公式リファレンス)

Keystore name: "debug.keystore"
Keystore password: "android"
Key alias: "androiddebugkey"
Key password: "android"
CN: "CN=Android Debug,O=Android,C=US"

API Key取得

debug.keystoreが作成できたら、下記ページでterm踏みつつ、キーを生成する。
僕がハマったのは、なんかsha1sha1 と思って何度もsha1で入力して、よく見たらmd5だったとこくらい。

地味に生成サイトが見つからないって人もいるかも。
GoogleのAPI Key 生成サイト


keyが生成できたら、そいつを使ってアプリをビルドすれば終わり。

Androidアプリテスト技法

Androidアプリテスト技法

cocos2dの画面回転制御ネタ

前置き

以前リリースしたゲームで使っているcocos2dがずっとv0.9ぐらいで古かったので、
このたび、バージョンをあげることにした。
iTunes App Store で見つかる iPhone、iPod touch、iPad 対応 ChickenGame

最新はv2とか出ているみたいだけど、まずはv1.0.1で。
※本当は管理にCocoaPodsとか使った方がいいんだけど、まいっか。

使用中のcocos2dのバージョン確認

使用中のcocos2dのversionは、
cocos2d.mを見ればわかります。

回転がくるった

でも起動すると全く回転してないような。
f:id:redogu:20121110235202p:plain

iPhone6シュミレータを使ってると上手くいかない。
悩むこと数分。

回転の制御ネタだろうなと思い、こんなことをした。
GameConfig.hのGAME_AUTOROTATIONの値を変更した。
kGameAutorotationUIViewControllerがデフォルトで入ってたので、
kGameAutorotationCCDirectorにしただけ。

  • kGameAutorotationNone

回転しない

  • kGameAutorotationCCDirector

回転はcocos2dに委ねる、UIKitは使わない

  • kGameAutorotationUIViewController

回転はcocos2d、UIKitの両方を使う、但しパフォ落ちる

下記ソース

//
// Supported Autorotations:
//		None,
//		UIViewController,
//		CCDirector
//
#define kGameAutorotationNone 0
#define kGameAutorotationCCDirector 1
#define kGameAutorotationUIViewController 2

// 3rd generation and newer devices: Rotate using UIViewController. Rotation should be supported on iPad apps.
// TIP:
// To improve the performance, you should set this value to "kGameAutorotationNone" or "kGameAutorotationCCDirector"
#if defined(__ARM_NEON__) || TARGET_IPHONE_SIMULATOR
#define GAME_AUTOROTATION kGameAutorotationCCDirector

結果、こんな感じに。
f:id:redogu:20121110235156p:plain

小さな島国にずっといると、こーなる事例

普段、日本語しか使わない。
あとはせいぜい、英語を少しかじるていど。

こんな生活、環境にいるとLocale.ROOTを忘れる時がありますよね。

なに言ってんだ。valuesだのvalues-frだのvalues-jaだのvalues-koだの。


values-arだの(笑


今日、アラビックでアプリを操作してたら、
( ´∀`)<ぬるぽ
が発令されました。

原因は、

//これでも、たぶん大概の言語圏は通ってるんじゃ
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
//こうしておけばいいんじゃないかと
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.ROOT);

ここ見落としていて、長考してもーた。

Androidの端末設定が標準で色んな言語に変更できるようになって、
初めて検証したって人も多いのかもなーと思ったり。

EditTextのhintに画像を使いやがれ

AndroidのEditTextでhintってのがあると思うんだけど、
こいつで画像を使うネタを今日は仕込みたいと思います。

hintで画像(画像はandroid.R.drawable.start_big_on)

f:id:redogu:20120904095524p:plain

入力されると、hintが消えるので当然、画像も消える

f:id:redogu:20120904095528p:plain

ポイントは2つ。

  • EditTextでandroid:bufferTypeをeditableにしやがれ
<EditText
android:id="@+id/edit_text"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:bufferType="editable"/>

これでSpannableStringBuilderが使えるです

  • SpannableStringBuilderでImageSpanをsetSpanしやがれ
EditText editText = (EditText) findViewById(R.id.edit_text);
SpannableStringBuilder ssb = (SpannableStringBuilder) editText.getText();
ssb.append("カメラほしー");
ImageSpan imageSpan = new ImageSpan(this, android.R.drawable.star_big_on);
ssb.setSpan(imageSpan, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
editText.setHint(ssb);
editText.setText("");

ここで良く分かってないのが、3行目でappendした内容を
全文表示したいんだけど、うまくいかない。空文字つっこむとか無しで。
今のままだと、メラか米良がほしーみたいな話しに。
(ここがうまく行かないからblogネタにしたんだけど)
もう一点、最後の行でsetText("")しないと、hintの前にtextが入っちゃって・・・。


そのうち、きっとどうにかなる。

Androidアプリを駆け込みリリースしたった

6月からOceans-inc ( http://oceans-inc.com/ ) って会社で働いている。
SNSサービスをやってるスタートアップで、Eyeland ( http://eyeland.in/ )というサービスをやってる。
このサービスで使ってる、iOSとAndroidアプリのうち、僕はAndroidの方を担当してる。

ちなみにこのアプリ、以前は出会い系アプリとして2chでスレたってたけど、
最近だと、竹島上陸アプリとして紹介されてた。

それはどうでもいい。

今月から、色々あってAndroidの開発から何やらを1人でやってて、
ついこの間、自分の誕生日に2.1.1をリリースした。
ここでのリリース作業自体が初めてだったので、少し緊張したけど問題なさげ。


というわけで、調子にのってマーケットに出してなかった
自作のAndroidアプリを自分名義で登録したった。

このアプリはスライドショーアプリなんだけど、
以前作成した、幼稚園児レベルなiOSゲームとは違い、大人しすぎて面白みが無い。
機能は色々実装してあるんだけど、面白くないからほとんど外してコア部分だけ公開した。
公開したい気分に負けた。
※この記事を書いている時は、まだマーケットにでてこない


負けたついでにGitHubの月7ドルってやつを契約してしまた。