2012年6月25日月曜日

DialogFragmentメモ

Android Developersブログの記事「Using DialogFragments」を読んだのでメモ。
http://android-developers.blogspot.jp/2012/05/using-dialogfragments.html

先日、リファレンスを見ていてActivityのshowDialog()/dismissDialog()はdeprecatedなので、代わりに「DialogFragmentを使いましょう」と書いてあった。
気になっていたので、読んでみました。

このサンプル、v4 support libraryを使ってます。
1.6~2.3でもフラグメント使えるようになるアレです。
Eclipseでプロジェクトのルートフォルダを右クリックして
[Android Tools] - [Add Support Library...]
とやればOKです。
自動で
・libsフォルダの作成
・android-support-v4.jarの配置
・ビルドパスの設定
が行われます。

使い方(ざっくり)
・DialogFragmentを継承したクラスをつくる
・レイアウトはonCreateView()の中でinflate
・表示したい時は、上記のクラスをインスタンス化してshow()メソッドを呼ぶ

注意
このサンプルプログラム、IMEが「Google日本語入力Beta」だと動きませんでした...
onEditorAction()でアクションIDがIME_ACTION_DONEだったら入力内容をToastに表示してダイアログを閉じる作りですが、ログを仕込んで確認したところIME_ACTION_DONEが発生していないのが原因。
「Google日本語入力Beta」ではEnterキーをタップした時のアクションIDがIME_ACTION_UNSPECIFIEDでした。
他のIMEに切り替えたところ、問題なく動作。

感想
ブログ記事のスクリーンショットにもあるように4.xでTheme.Holoが効いているとそれなりの見栄えで表示されますが、2.xで表示するとこんな感じに...

ちゃんとレイアウトしないとダメですね。
ちょっとしたダイアログ出すのは、これまで通りAlertDialog.Builderでやろうかなぁというのが正直なところ。
とか、思ってたらこんな記事を発見!
Y.A.Mの雑記帳
「Android DialogFragment」を使うときの注意点。」
こうやって使うんですね。。
こんな有用な情報を発信できる存在でありたい...

参考
サンプルコードの閲覧・ダウンロードは下記から
dialogfragmentdemo


2012年6月24日日曜日

実機デバッグでプリファレンスの内容を確認する方法

エミュレーターはroot権限なので/data/data/パッケージ名/以下のファイルが見られますが、実機では権限が無いため見られません。
「実機でも見られたらデバッグ捗るのになぁ」というお話。

前提条件
AndroidManifest.xmlの
android:debuggableが"true"であること。
※明示的にdebuggableを指定していない場合はデバッグビルド / リリースビルドでtrue / falseを勝手に切り替えてくれる

手順
adb shell
run-as パッケージ名

ran-asコマンドにより、指定したアプリ(パッケージ名)のユーザーに切り替わるので/data/data/パッケージ名/以下が見られるようになる。
あとは、/data/data/パッケージ名/shared_prefs/以下にあるプリファレンスのxmlファイルをcatコマンドで表示すれば内容が確認できます。

注意事項
便利なrun-asコマンドですが、すべての実機で使えるわけではないようです。
以下、動作確認結果です。

[OK] Nexus S
[OK] ICONIA TAB A500
[NG] IS11LG *コマンド実行権限はあるが...
[NG] IS06 *コマンド実行権限なし
[NG] IS01 *コマンド実行権限なし

データベースも!と思ったのですが、sqlite3コマンドの実行権限が無かったり、そもそもsqlite3コマンドが無かったりでだめでした。。

2012年6月5日火曜日

GitHub for WindowsでAndroidプロジェクトをGitHubにアップする方法

1. EclipseでAndroidプロジェクトを作成
2. 作成したプロジェクトのルートディレクトリに.gitignoreファイルを配置
   ※.gitignoreファイルは下記からDLした
3. Git Shellを起動
4. 作成したプロジェクトのルートディレクトリに移動してコマンド”git init”を実行
5. GitHub for Windowsを起動
6. GitHub for Windowsのウィンドウに、作成したプロジェクトのディレクトリをドラッグ&ドロップ
7. GitHub for Windowsのlocal repositoriesを開く
8. 追加したプロジェクトを開く
9. COMMIT MESSAGEを記入して[COMMIT]ボタンを押下
10. ウィンドウ上部中央の[push to github]を押下
11. DESCRIPTIONを記入して(任意)[PUSH]ボタンを押下

12. ウィンドウ上部中央の[publish]を押下
13. ウィンドウ上部中央に”in sync”と表示されたら完了


2012年6月4日月曜日

ADT 20 Preview 3 メモ

インストール方法、リリースノートは以下から。
http://tools.android.com/download/adt-20-preview

気になった変更点
・layout editorでLint先生がグラフィカルに叱ってくれる。
・LogCatの文字色が変更可能に
設定は [Window] - [Preferences] - [Android] - [LogCat] - [Colors]
・複数デバイスに同時Deployできる。
設定はプロジェクトの
[Run As] - [Run Configurations...] - [Target]タブ - [Launch on all compatible devices/AVD's]
※実機3台繋いで試したら動いた
・今後、SDK ManagerからPreview版のSDK ToolsがDLできるようになる?
SDK Managerの [Tools] - [Options...] - [Others] - [Enable Preview Tools]

2011/05/04追記
Emulatorが起動しなくなってしまったのでATD 18に戻しました。
※症状は起動画面で固まる...
環境はEclipse3.7/Windows 7 64bitです。
Mac環境ですが、こんなIssueが上がってますね。
Issue 32577: Emulator crashes when loading with ADT 20 Preview 3
http://code.google.com/p/android/issues/detail?id=32577

2012年6月3日日曜日

スプラッシュ画面を表示する方法

Androidアプリでスプラッシュ画面を表示する方法のメモ

アプリを起動するとスプラッシュ画面(SplashActivity)を表示。
3秒後にメイン画面(MainActivity)に遷移する。
スプラッシュ画面の表示時間は
Handler#sendEmptyMessageDelayed()の第2引数で調整。
単位はミリ秒。
※LayoutのXMLとAndroidManifest.xmlの設定は割愛。

2012年5月20日日曜日

Google Play ストアの言語を切り替える方法

アプリ紹介文多言語対応確認用メモ。

https://play.google.com/store/apps/details?id=<パッケージ名>&hl=<言語コード?>

<言語コード?>の部分にアルファベット2文字のコードを入れると言語が切り替わる
例えば
ja(日本語)
en(英語)
fr(フランス語)

ただそれだけですが、忘れっぽいのでメモる...

2012年5月3日木曜日

デバッグビルドとリリースビルドで処理を変える方法(2)

デバッグビルドとリリースビルドで処理を変える方法その2です。
以前に書いた方法は以下から。

デバッグビルドとリリースビルドで処理を変える方法
http://neta-abc.blogspot.jp/2012/02/blog-post.html

ADT 17(らしい)から/genの下にBuildConfig.javaが自動生成されるようになっています。

BuildConfig.java
/** Automatically generated file. DO NOT MODIFY */
package com.example.builconfigtest;

public final class BuildConfig {
    public final static boolean DEBUG = true;
}

このBuildConfig.DEBUGはリリースビルド時(Export Signed Application Package...)に自動でfalseになってくれる仕組みだそうです。

なので、これを利用してデバッグビルドとリリースビルドで処理を切り替えることが出来ます。

BuildConfigTestActivity.java
public class BuildConfigTestActivity extends Activity {

    private final String TAG = getClass().getSimpleName();

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        if (BuildConfig.DEBUG) {
            Log.e(TAG, "BuildConfig.DEBUG = true");
        } else {
            Log.e(TAG, "BuildConfig.DEBUG = false");
        }
    }
}

上記のコードでデバッグビルド/リリースビルド時にログが切り替わることを確認しています。

因みにWindows環境(のみ?)ではBuildConfig.DEBUGがリリースビルド時にfalseにならないバグがあるようです。
私の環境(Windows 7 64bit/Indigo/ADT 18)でも発生しています。
>Eclipseの[Project] -> [Build Automatically]を外すと回避できました。

Issue 27940: BuildConfig.DEBUG is "true" for exported application package
http://code.google.com/p/android/issues/detail?id=27940