2012年11月28日水曜日

[Android]ImageViewの後始末

ImageViewは画像を表示するのに使いますが、
終了時にちゃんとメモリ解放処理いれてあげないと、
大きい画像を扱ったりすると、すぐにメモリ不足おきてしまいます。

使うとき

imageView.setImageResource(resId);
imageView.setImageBitmap(bitmap);
imageView.setImageDrawable(drawable);


使い終わったとき
void cleanup(ImageView view) {
    d = view.getImageDrawable()
    d = null;

    if(bitmap != null) {
        if(!bitmap.isRecycle()) {
            bitmap.recycle();
        }
        bitmap = null;
    }

    imageView.setImageDrawable(null);

    view.setOnClickListener(null);
}



2012年11月26日月曜日

[Android]metaio SDK 3.0 → 4.0にバージョンアップ

metaio Mobile SDK のバージョン4がリリースされました。

というわけで、
SDKを入れ替えましたが、大幅に変わっているので、注意点をいくつか。

1.metaio Mobile SDK がない!?

Download Center に行くと、
metaio Mobile SDK 4.0 が見当たりません。

metaio SDK v4.0.2に統合されたようです。
こちらをダウンロードしましょう。


2.jarの名前が変わっている

jar の名前がmetaiomobilesdk.jar からmetaiosdk.jar になっています。
metaiomobilesdk.jar をビルドパスから外しましょう。
それから、metaiosdk.jar をビルドパスに追加しましょう。


3.クラス名が大幅に変わっている

ARViewActivity.java で使用していた様々なクラス名が変更されています。
一つずつ置き換えていきましょう。


4.シグネチャの変更が必要。

metaio Developer Console でシグネチャ登録しましたが、
4.0 に変更した場合、再度シグネチャを取得する必要があります。


5.トラッキングデータの変更


今までのも使えますが、ここも名前が変わっています。

2012年11月25日日曜日

[Android]トレーニング

Android公式でトレーニングなる項目を見つけた。
いろんなサンプルコードを解説してくれてます。
http://developer.android.com/intl/ja/training/index.html

2012年11月22日木曜日

[Android]SQLiteOpenHelperでDBバージョンを上げる時に、列を追加する方法


SQLiteOpenHelperでDBバージョンを上げる時に、列を追加する方法です。

onUpgrade()で古いバージョン、新しいバージョンが分かるので、
古いバージョンのときに処理を行うようにします。
(今回の場合は、1 -> 2にバージョン上げたと仮定します)

db.execSQLで、
列追加のSQLコマンドを実行すればOK。

ALTER TABLE テーブル名 add 追加する列名 型名


@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
try {
if(oldVersion == 1) {
db.execSQL( "ALTER TABLE " + DB_TABLE_NAME + " add " + ADD_COLUM_NAME + " TEXT;");
}
} catch (Exception e) {
e.printStackTrace();
}
}



2012年11月21日水曜日

[Android]WebView の背景を透過する方法

WebViewの背景を透過する方法です。

HTMLで以下のように指定しても、透過されません。
<body style="background-color:transparent;">


WebView に以下のようにセットしましょう。
webView.setBackgroundColor(0);


2012年11月20日火曜日

[Android]TextView に使用できるHTMLタグ一覧

TextView にHTMLタグありの文字列をセットすると、
リンクや文字色などを設定することができたりします。

String html_source;
textView.setText(Html.fromHtml(html_source);

しかし、
すべてのHTMLタグが使える訳ではないです。

使用できるタグはここ参照。
http://commonsware.com/blog/Android/2010/05/26/html-tags-supported-by-textview.html


<a href="...">
<b>
<big>
<blockquote>
<br>
<cite>
<dfn>
<div align="...">
<em>
<font size="..." color="..." face="...">
<h1>
<h2>
<h3>
<h4>
<h5>
<h6>
<i>
<img src="...">
<p>
<small>
<strike>
<strong>
<sub>
<sup>
<tt>
<u>




<a>タグでリンク張り、ブラウザ起動させたい場合は、以下の設定も必要です。

MovementMethod movementmethod = LinkMovementMethod.getInstance();
textView.setMovementMethod(movementmethod);



2012年11月19日月曜日

[Android]WebViewのloadDataで文字化け

ここが参考になりました。
http://d.hatena.ne.jp/paraches/20120819



loadDataWithBaseURL(null, html, "text/html", "utf-8", null)
loadData(html, "text/html; charset=utf-8", "utf-8")

2012年11月17日土曜日

[Android]AES復号化処理でBadPaddingException

サーバで暗号化した文字列を
アプリで復号化しようとした際にはまったので、メモ。



SecretKey key = new SecretKeySpec(key, "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] encrpytText = cipher.doFinal(encryptCode);


最後のdoFinal()で
BadPaddingException: pad block corrupted.

が発生します。


そんなあなたに、

暗号化キーと復号化キーは同じですか?


http://stackoverflow.com/questions/12110459/android-des-decrypt-badpaddingexception-pad-block-corrupted

2012年11月16日金曜日

[Android]selectorをJavaで書く

selector使うと、
ボタン押したときの画像を変更できたりします。
とても、便利。


今回は、
XMLで定義しないで、プログラム上でselectorを行う方法です。


使うのは、StateListDrawableクラス。

http://developer.android.com/intl/ja/reference/android/graphics/drawable/StateListDrawable.html


使い方

        Drawable iconOn = /* Drawble 作成する */;
        Drawable iconOff = /* Drawble 作成する */;
        
        // StateListDrawable に状態と表示するDrawable をセット
        StateListDrawable d = new StateListDrawable();
        d.addState( new int[]{ android.R.attr.state_selected }, iconOn );
        d.addState( new int[]{ -android.R.attr.state_selected }, iconOff );


状態は、
new int[] { android.R.attr_state_xxxxx}
という形で指定します。

状態が無効のときは、マイナスを付ける
new int[] { -android.R.attr_state_xxxxx}

あとは、Viewにセットするだけです。


2012年11月14日水曜日

[Android]画面解像度の違い

ldpi、hdpi、mdpi、xdpi などありますが、
それぞれいったい画面サイズはいくつなのさ?


という訳で公式サイトにありました。
http://developer.android.com/intl/ja/guide/practices/screens_support.html#testing


2012年11月13日火曜日

[Android]APIレベル一覧

APIレベルが分からなくなってしまうので、Android公式ページで探してきた。

http://developer.android.com/intl/ja/guide/topics/manifest/uses-sdk-element.html#ApiLevels




ついでに現在のOSシェア、画面解像度の割合とかもあった。
グラフでみやすい。
http://developer.android.com/intl/ja/about/dashboards/index.html


2012年11月12日月曜日

[Android]Android開発グッズ(リール式USBケーブル)

Android開発で役立つアイテムを紹介します。




リール式USBケーブル。

端末付属のUSBケーブルでもよいですが、
100均で売られているリール式USBケーブルをおすすめします。

お勧めポイント
・安い
・ケーブルが細い
・リール式なので机の上がすっきり。



リール部分は壊れやすいのが難点ですが、
壊れたらリール部分をはずしておくとかさばらなくてよいです。


ぜひ。

2012年11月10日土曜日

Androidアプリ開発用に所有している端末リスト(2012)

Androidアプリの開発していると気づいたら、端末増えてきたのでまとめてみます。



1.au ISW11HT (HTC)

http://www.au.kddi.com/seihin/archive/kishu_archive.html?id=isw11ht


初めて購入したAndroid。私物です。
au初の WiMax + Wifiテザリング が魅力。
どこでもルータ代わりになって便利。
OSは購入時は、2.2。 今は、 2.3 にバージョンアップしてます。


2.docomo Galaxy Nexus SC-04D (SamSung)




4.0が普及し始めて、2.xのみでは動作確認が厳しくなってきたので、Amazonで購入。

docomo GALAXY NEXUS SC-04D チタンシルバー SAMSUNG Android4.0搭載 スマートフォン 白ロム 携帯電話本体標準セット

・Google標準機なので、基本こちらで動作確認。
・HTCと解像度異なるので、レイアウトの調整にも使ってます。
・NFCが付いてるので、それ使った開発もそのうち。



3. SIMフリー Xperia Play (SonyEricsson)

http://www.sonymobile.co.jp/product/docomo/so-01d/
楽天かAmazonで購入。

ギャラリー周りの動作確認で、ソニエリ端末が欲しかった。
Playにしたのは、形状変わっているのが理由。
OSは、2.3。
解像度は、HTCと同じなので、
HTCをルータと使ってる間の代替端末。

ゲームもできるよw


4. docomo Galaxy Tab 10.1 LTE SC-01D (SamSung)



Amazonで購入。ケース付けてくれた。ラッキー。
docomo GALAXY Tab 10.1 LTE SC-01D

初のタブレット。OSは3.2。
ソニタブとは迷った。Galaxyにしたのは、Google公認なのと値段。

レイアウト確認がメイン。
解像度違うと、レイアウトが崩れる崩れる。。

4.0にバージョンアップできるけど、現状維持。


5. au IS05 (Sharp)

http://www.sharp.co.jp/products/is05/

即日発送!新品 IS05 グリーン×ブラック 携帯電話 白ロム au

とあるアプリで不具合報告あって、
手持ちの端末で発生しなくて、オークションで5000円くらい購入。

結局再現できなかったですけど。

OSは2.2。
スペックが貧弱なので、メモリ不足の動作確認で。
あと、Felica搭載端末なのが魅力です。


6. au SIRIUS α IS06 (PANTECH)

http://jp.pantech.com/products/siriusis06.html


au IS06  チャコールブラック


家族が機種変したので、貰った。
OSは2.2。
2.3にバージョンアップ出来るけど、現状維持。

電池が膨らんでて、危険。。


7. au iPhone4S (Apple)

http://www.apple.com/jp/iphone/iphone-4s/specs.html

新品 iPhone 4S 16GB ホワイト au 白ロム MD240J/A

iPhoneアプリからAndroidへの移植案件が重なって、
画面イメージだけだと詳細まで確認できないため、購入。
オークションで。

iPhoneはiPhoneの
AndroidはAndroidの良さがそれぞれあるなと実感。



------------
という訳で現在は、iPhone含めて7台所有。

メインは、Galaxy Nexus と Xperia Play。
ルータとして、ISW11HT。


OS内訳
1.6 ・・・ なし
2.1 ・・・ なし
2.2 ・・・ 2台(IS05、IS06)
2.3 ・・・ 2台(PLAY、ISW11HT)
3.2 ・・・ 1台(SC-01D)
4.0 ・・・ 1台(SC-04D)
4.1 ・・・ なし
4.2 ・・・ なし


今すぐ、買うつもりはないけど、
次は、
4.xのタブレット端末
4.1のスマートフォン
かな。

メーカーは、悩みどころです。
ARROWS、MEDIASは一台は持っておきたいところ。

NEXUS 7が欲しい。

iPhone 5も欲しい。

Windows Phone 8も欲しい。

我慢、我慢。