2013年7月13日土曜日

TextViewに値が表示されない

TextView に値を設定しているのに、表示されないパターンがありました。

レイアウトのTextViewにinputTypeを指定していると、一部端末(IS12S)で発生する模様。

そもそもTextViewにinputTypeを設定していることがおかしいのですが、、。

解決方法は、レイアウトからTextViewのinputTypeを削除すべし。

2013年3月29日金曜日

SupportMapFragment.getMap() でnullが返ってくる

動的にSupportMapFragment を生成して、
レイアウトに追加するとgetMap() でマップが取得できない。


以下のようにすると解決。

            mMapFragment = new SupportMapFragment() {
            @Override
            public void onActivityCreated(Bundle savedInstanceState) {
            super.onActivityCreated(savedInstanceState);
             mMap = mMapFragment.getMap();
            }
            };

            // Then we add it using a FragmentTransaction.
            FragmentTransaction fragmentTransaction = getActivity().getSupportFragmentManager().beginTransaction();
            fragmentTransaction.add(R.id.layoutMap, mMapFragment, TAG);
            fragmentTransaction.commit();



//            mMap = mMapFragment.getMap();    // ここだとnullが返ってくる





http://stackoverflow.com/questions/14067889/google-play-service-supportmapfragment-getmap-always-returning-null

GoogleMaps Android V2

はまったとこメモ。

Polygon 登録時は、Handler内でしないと描画されない。


handler.post(new Runnable() {
@Override
public void run() {
    PolygonOptions options = new PolygonOptions();
    options.fillColor(Color.RED);
    options.add(緯度経度のリスト);
    polygon = mMap.addPolygon(options);
}
});


Polygon の表示色などの更新をHandler内でするとPolygonが消えてしまう。


handler.post(new Runnable() {
@Override
public void run() {
     polygon.setFillColor(Color.BLUE);
}
});
→消えちゃう。



polygon.setFillColor(Color.BLUE);
→消えない。

2012年12月18日火曜日

[Android]アプリ内課金実装バージョン3リリース

アプリ課金のバージョン3がリリースされました。

In-App Billing Version 3  - Android Developer Blog -
http://android-developers.blogspot.jp/2012/12/in-app-billing-version-3.html

・より簡単に
 実装するのが簡単になりました。

・ローカルキャッシュ
 課金した情報をキャッシュすることができます。
 課金情報を非同期で確認しなくても良くなった。

・製品情報(課金アイテムの情報)
 課金アイテムのタイトルや金額(ロケールされた)を取得できる

・サンプルアプリケーション
 サンプルアプリが更新されました。

・アプリ鍵
 V3からアプリ単位で公開鍵




2012年12月9日日曜日

[Android]HTML5のvideoタグの罠

WebView使ってHTML5のvideoタグを表示した時の動作にはまってしまったので、メモ。

Android 2.x
Videoタグをタップすると、ビデオビューが起動して全画面で再生

Android3.x
Videoタグをタップすると、ビデオビュー起動せず、ブラウザ内でインライン再生
コントロールの全画面押したときだけ、ビデオビュー起動して全画面で再生

もともとAndroid 2.xで動作確認していて、
Android4.0で動かすとぜんぜん動作違っていて困った。



2012年12月7日金曜日

[Android]アプリケーションのキャッシュに保存する

アプリで取得したデータを永続的にキャッシュしておきたい場合には、
アプリケーションのキャッシュに保存しておきましょう。

Context.openFileInput()

http://developer.android.com/reference/android/content/Context.html#openFileInput(java.lang.String)

使い方1:データ読み出し
InputStream in = context.openFileInput("saveData");

使い方2:画像読み出し

FileInputStream is = context.openFileInput(dataName);
Bitmap image = BitmapFactory.decodeStream(is);
is.close();



Context.openFileOutput()

http://developer.android.com/reference/android/content/Context.html#openFileOutput(java.lang.String, int)

使い方1:データ保存
FileOutputStream os = context.openFileOutput("saveData", Context.MODE_PRIVATE);

int DEFAULT_BUFFER_SIZE = 1024 * 4;
byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];
int n = 0;
while (-1 != (n = in.read(buffer))) {
os.write(buffer, 0, n);
}
os.close();


使い方2:画像保存

FileOutputStream os = context.openFileOutput(dataName, Context.MODE_PRIVATE);
ret = image.compress(Bitmap.CompressFormat.PNG, 100, os);

os.cloase();


永続的でなく一時的に保存したい場合は、こちらに保存するのもアリです。
Context.getCacheDir()
http://developer.android.com/reference/android/content/Context.html#getCacheDir()

ファイル容量少なくなると、システムがファイル消してしまうので、その点のみ注意。