2013年7月29日月曜日

2013年7月23日火曜日

Androidアプリのプロモーションに最適なモックアップ作成サービス

Googleからアプリのプロモーション用にぴったりのモックアップ作成サービスがあったので紹介します。
Device Art Generator
http://developer.android.com/intl/ja/distribute/promote/device-art.html

使い方は簡単、まずリストにある端末に応じた解像度のスクリーンショットを用意します。
そして作った画像ファイルをサイトの対象の端末の上にドロップするだけ


少し待てば出来上がり。


オプションで影と反射の有り無しと端末の縦横を変更できます。



こんな感じで使うといいかも?

2013年7月18日木曜日

Spinnerの項目を文字列で選択したい

spinnerの項目をプログラムで選択するにはSpinner.setSelectionを使いますが、これの引数がsetSelection(int position)となっていて文字列では選択できません
setTextなんかで入れれば自動的にリストにある同名の項目が選択状態になればいいのになあ、ということで作ってみました。

    public static void setSelection(Spinner spinner, String item) {
        SpinnerAdapter adapter = spinner.getAdapter();
        int index = 0;
        for (int i = 0; i < adapter.getCount(); i++) {
            if (adapter.getItem(i).equals(item)) {
                index = i; break;
            }
        }
        spinner.setSelection(index);
    }

他spinnerにはこんな落とし穴もあるので注意
Spinnerのバグでハマる
http://team-pag.interprism.co.jp/member/noguchi/blog/2010/11/Spinnerのバグでハマる

2013年7月17日水曜日

Androidのcanvasに描画したイメージを画像ファイルで保存する

アプリの中でcanvasに描画したイメージを画像として保存するという機能を付けたくなることがありますが、こんな感じで簡単に出力できます。

    //保存用Bitmap準備
    Bitmap image = Bitmap.createBitmap(640, 480, Config.ARGB_8888);
    //新しいcanvasに保存用Bitmapをセット
    Canvas canvas = new Canvas(image);
    //canvasに対して描画
    try {
        //出力ファイルを準備
        FileOutputStream fos = new FileOutputStream(new File("sample.png"));
        //PNG形式で出力
        image.compress(CompressFormat.PNG, 100, fos);
        fos.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
image.compressの部分は
public boolean compress (Bitmap.CompressFormat format, int quality, OutputStream stream)
というような仕様になってますので、必要に応じてFormatをCompressFormat.JPEGに変えたりqualityの部分は0-100間で指定してください。

2013年7月9日火曜日

Playストアへのバッジ(リンク)ジェネレータ Google Play Badges

アプリ公開後に自分のブログやFacebookなんかに、公開したアプリのPlayストアへのリンク(バッジ)を貼ることがあるかと思います。こんな風に…


今まで適当に拾ってきた画像にリンクを設定していたんですが、Google公式のバッジジェネレータがありました。
Google Play Badges
http://developer.android.com/intl/ja/distribute/googleplay/promote/badges.html

使い方は簡単、言語、パッケージ名と好きな画像を選んでBuild my badgeを押すだけ。
あとは出来たhtmlをコピーして好きなように使ってください。


2013年7月4日木曜日

AndroidでString.Joinしたいので自作

Android(Java)にはsplitはあるのにどうやらjoinはないようで、データの保存や送信なんかで使いたい場合もあるので作っておきます。

    public static String join(String[] list, String with) {
        StringBuffer buf = new StringBuffer();
        for (int i = 0; i < list.length; i++) {
         if (i != 0) { buf.append(with);}
            buf.append(list[i]);
        }
        return buf.toString();
    }

    public static String join(ArrayList<String> list, String with) {
        StringBuffer buf = new StringBuffer();
        for (int i = 0; i < list.size(); i++) {
            if (i != 0) { buf.append(with);}
            buf.append(list.get(i));
        }
        return buf.toString();
    }

最近は配列よりもArrayListを使う機会のほうが多いので、ArrayList<String>を引数にするのも作りました。ArrayList<Integer>を引数にするのとか、いろいろバリエーションがあっても便利かもしれませんね。
nullチェックは入れていないのでお気を付けください。

2013年7月3日水曜日

Androidで画像をきれいに縮小して描画する

Androidでは様々な解像度の画面に対応するので、それに応じて画像を縮小して描画しています。
拙作Factoryでボタンを描画する際、普通にdrawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint)で描画してみるとちょっと我慢ならない感じだったので、いろいろと試してみました。

試したパターンはPaintsetAntiAliasのあるなし、setFilterBitmapのあるなしとMatrix.postScaleによる縮小です。


結果としてはAntiAliasは画像の縮小には関係ないようで、drawLinedrawPath,drawCircleで効いてくるパラメータかと思います。
setFilterBitmap(true)とMatrix.postScaleによる縮小の結果はほぼ同じで通常であればsetFilterBitmap(true)で事足りそうです。

こちらの投稿ではMatrix.postScaleで何段階かにわけて縮小することで、さらにきれいにする手法が出ています。場合によってはこの手法を取り入れる必要があるかもしれません。
日本Androidの会 >画像をきれいに縮小する方法

2013年7月2日火曜日

Androidアプリ不具合修正の強い味方 リモートテストサービス

先日、間取りー図の高密度解像度端末で起こる不具合を修正しましたが、 レビューで不具合を報告していただいた方の端末がわかったことと、知り合いにその端末の所有者がいたことから運良く原因を突き止めることが出来ました。

しかしいつもうまく行くとは限らず、全てのAndroid端末で試してみることも簡単には行うことはできません。
そんな時に非常に助かるのがリモートテストサービスです。
リモートテストサービスではサービス側で用意している多くのAndroid端末を、インターネットを経由してリモートでテストをすることが出来るサービスです。
実機ですので不具合が出ている端末と同じ端末でテストできれば、不具合の再現、原因究明、修正効率がかなり上がることでしょう。
二つほどそのようなサービスを見つけたので紹介します。

androidアプリ開発者のための実機検証サービス  Developers AppKitBox
対応機種数: 全95機種(2013/06/25時点)
利用料金:お試し端末 無料
       全ての端末  1時間   945円
       全ての端末  10時間  9,450円
       全ての端末  50時間 42,000円
       全ての端末 100時間 78,750円

Scirocco Cloud
http://www.scirocco-cloud.com/ja/price.html
対応機種数: 100機種以上(2013/07/02時点)
利用料金:お試し端末(6機種 1時間/日) 無料
       全ての端末  5時間   4,200円
       全ての端末  18時間 12,600円
       全ての端末  38時間 25,200円
       全ての端末   1ヶ月  18,900円 

いざというときのために…

2013年7月1日月曜日

Androidでの間取り作成アプリのまとめ

拙作間取りー図を企画した時に競合するアプリを調査したのですが、その時は見つからずこれはもしかしてAndroid史上初の間取り作成アプリか!?と思ったのを記憶しています。
あとあと調べると、どうやら海外の競合アプリがいくつか出ていたようです…
参考までに同種のアプリをまとめてみました。

Floor Plan Creator (無料) 
https://play.google.com/store/apps/details?id=pl.planmieszkania.android
かなりの高機能なアプリ、手書きやカメラの映像からも間取りが作れます

AutoCAD WS (無料)
https://play.google.com/store/apps/details?id=com.autodesk.autocadws
有名なCADソフトのAndroid版

Inard Floor Plan (無料)
https://play.google.com/store/apps/details?id=se.inard.fp
CAD系、Image・PDF・DXF出力が可能のようです。

Blumatica RILIEVI mobile (無料)
https://play.google.com/store/apps/details?id=blumatica.rilievimobile
CAD系、DXF出力が可能のようです。

WizPlan FREE (無料)
https://play.google.com/store/apps/details?id=com.brainspool.bwizplanfree
フリーハンドで描けるお絵かきモードのようなものがあるようです。

間取り+ (315円)
https://play.google.com/store/apps/details?id=air.jp.co.magic_hour.roomplus
間取りの作成に特化したアプリ建具や家具など100点以上のパーツがあるようです。
こちらはiPhone版もある模様。

同種のアプリは操作や機能面などいろいろと見習いたい所がありますね。