タグ:android ( 43 ) タグの人気記事

AndEngine事始め by @yamacraft on @Qiita

記事先にもこのブログのリンクを置くことで回遊性を増大させるテクニックです。ここのPV?PV?知らない子ですね。

本当は事始め系ではなく、別方面でもうちょっと変な方面の記事を書きたかったんですが、調査不足で諦めることとなりました。

以下、予定していた案

1. なるべくお金を使わずにそれっぽい環境づくり
BitBucketやBugsenseやGoogle Analytics等を駆使して、できるかぎりお金を使わずに、何か「ちゃんと開発してる!」と見せかけるための記事。
一番のメインで考えていたSaasとかBaasを使ったバックエンド環境とか、Eclipse+GradleとかLintとかJenkinsとか使ったいい感じの品質管理の部分がまるで未着手なのでボツ

2. 下のバージョンでもいけるか!?ChromiumeWebview!
4.4から追加されたChromiumベースのWebviewをなんとか移植するための奮闘記事。とりあえずview自体は持ってこれたものの、なぜか起動するとスゴイ勢いでグラフィックエラーを吐き出してヒープを圧迫する問題の原因調査ができなかったのでボツ

3. ioschedに学ぶ、いい感じのListView実装
ioschedの最新ソースから、いい感じに安定するListViewの実装方法を調べる記事。調べる時間がとれなかったのでボツ

いつか解決したときにでも、記事にしようと思います。
あとAndEngineのノウハウがQiitaには全然なかったので、今後ちょこちょこ上げていくかもしれません。
[PR]
※残念ながら、悪いことはしていません。

「艦隊これくしょんのマンガが無料で読めるぞ!」という話を聞いて、先日ニコニコ書籍というアプリを落として読んでみたのですが、思ったよりもアプリ自体の動きがよくて驚きました。艦これマンガの感想?まあ、それはいいとして……。(ちなみに読んでいたマンガは現在掲載期間が過ぎていました。まあ別の艦これのマンガが載っている雑誌がありましたが。あとニンジャスレイヤー)

さらに最近プレスリリースが出たマンガボックスもページの遷移や拡大縮小がスムーズだったのが印象的だったので、両者の設定にあるオープンソース・ソフトウェアライセンスのページから、それぞれが使っているライブラリを調べてみることにしました。
中には当然、ビューアとは関係ないライブラリも含まれています。

ニコニコ書籍
IPAフォント
http://ipafont.ipa.go.jp/faq.html

Apache commons
http://commons.apache.org/

Guava
https://code.google.com/p/guava-libraries/

JSONIC
http://jsonic.sourceforge.jp/

Simple
http://simple.sourceforge.net/

RoboGuice
https://github.com/roboguice/roboguice

PhotoView
https://github.com/chrisbanes/PhotoView

Android-ViewPagerIndictor
https://github.com/JakeWharton/Android-ViewPagerIndicator

Android-Universal-Image-Loader
https://github.com/nostra13/Android-Universal-Image-Loader

SLF4J
http://www.slf4j.org/

ORMLite
http://ormlite.com/

ビューア自体はPhotoView+Android-Universal-Image-Loaderのキャッシュ機能、ページ遷移はAndroid-ViewPagerIndictorを使ったViewPagerで行っている感じでしょうか。
なぜJSONとXMLそれぞれのライブラリが搭載されているのかは不明ですが、利用しているAPI側の都合なんでしょう。きっと、

apache commonsやGuavaといったJavaライブラリや、SLF4Jのロギングライブラリ、ORMLiteのSQLライブラリを使っているあたり、なるべく既存のライブラリを利用して、危ない橋は渡らない(ムリな車輪の最適化は行わない)、という印象を持ちました。


マンガボックス

koush/ion
https://github.com/koush/ion

AndroidAsync
https://github.com/koush/AndroidAsync

StaggeredGridView
https://github.com/maurycyw/StaggeredGridView

ImageViewZoom
https://github.com/sephiroth74/ImageViewZoom

google-gson
https://code.google.com/p/google-gson/

Youtube Player API
Google Cloud Messaging for Android
Google In-App Billing
(この辺は一般的なライブラリなので割愛)


どちらかというと、通信周りのライブラリが多数です。画像自体はImageViewZoomを使って、ページ遷移の方は独自設計でしょうか。TOPページの特徴的なグリッド表示は、StaggeredGridViewを使って実装しているようです。

こんな風に、気になるアプリのオープンソース・ソフトウェアのライセンス表示を眺めることで、新しいライブラリとの出会いもあるので、オススメです。


ついでに上記のライブラリをざっと調べてるうちに、こんなサイトを見つけました。
http://www.androidviews.net/
Githubなどに上がっているカスタムViewライブラリを紹介してるサイトのようです。こんな便利なサイトもあったんですねー。
[PR]

国内のandroidデベロッパーであれば、Nexus5や噂のNexus8(Nexus10 2013?)の方に目がいってしまうのは当然かもしれません。
しかし一般ユーザー相手にアプリ公開しているデベロッパーであれば、主要3キャリアのスマートフォン端末を無視することはできません。どんなにデベロッパーにとって◯◯な端末であろうと、ユーザーはNexusというブランドには惹かれることなく、各々のキャリアの国産端末を選んでしまうのです。

というわけで、ずいぶん遅れてしまいましたが、主要3キャリアの冬モデル端末の発表が全て終了しましたので、各社の冬モデル端末のまとめや、雑感などを書いてみます。

情報自体をまとめるのはめんどくさいので、スマートフォンデータベースさんとGPadさんのまとめ記事を使っています。合わせて御覧ください。

■au
KDDI au 2013年冬モデル発表会を10月2日(水)開催、新型 Android スマートフォン6機種とタブレット1機種発表 | GPad

au - スマートフォンデータベース


ハンドセット5機種+ファブレット1機種+タブレット1機種の、計7機種+αです。
それぞれのメーカーのフラッグシップモデルを1つずつ採用しているようなラインナップとなっています。唯一LGの端末のみが国内専用モデルという位置づけになりますが、実際にはLG G2がベースになっているかと思われます。
ちなみに京セラ端末を採用しているキャリアはauのみとなります。また、Galaxy Noteはありますが、サムスンのハンドセット端末はありません。


■docomo
ドコモ、「2013-2014 冬春モデル 新商品・新サービス発表会」10月10日(木)開催、Android 端末14機種の製品情報まとめ | GPad
ドコモ - スマートフォンデータベース

ハンドセット11機種+ファブレット1機種+タブレット1機種の、計13機種+αです。
さすがにiPhoneがない分(※この記事を書いたときは、まだ販売決定していませんでした)、端末の数はキャリア1です。とはいえ、ディズニー・モバイルもドラクエスマホもスマートフォンジュニアも、既存の新端末(ARROWSとAQUOS PHONE)のバリエーションモデルです。事実上ハンドセット端末は7機種と思えばいいでしょう。
ソニーモバイルとシャープでそれぞれフラッグシップモデルに加えて、4インチ台を保った端末が1つずつ採用されています。シャープ側の解像度はフラッグシップと同じなのに対し、ソニーモバイル側は解像度がFullHDでなくFWXGAに落ちている点を見ると、なんだかんだでシャープの液晶技術の高さを感じました。


■softbank
ソフトバンク、2013年冬から2014年春モデルとなる新商品発表会を9月30日(月)15時より開催、Android スマートフォン3機種発表 | GPad
ソフトバンク - スマートフォンデータベース

ハンドセット4機種(1機種はディズニー・モバイル)のみです。
もはやandroidに頼らずとも充分、とでも言ってるような強気の選択です。ラインナップもシャープ2機種に富士通1機種という純国産企業の端末のみとなっています。
AQUOS PHONEも、名前だけ違ってドコモと同一かと思いきや、スペックに微妙な差異があります。逆にこれだけの数を用意するシャープの元気さにも驚きます。落ち着いてもらってもいいんですが。

□タブレットについて
auとドコモがそれぞれタブレットを1機種発表しましたが、どちらも同じ、Arrows Tabになります。

□+αについて
auとドコモにそれぞれGalaxy Gearというスマートウォッチが含まれています。

■雑感

  • auのXperia Z1 fを除いた(細かく言うと、スマートフォンジュニアも除く)全てのハンドセットの端末のdpiがxxhdpiクラスになりました。もはや国内は完全にxxhdpiの始まりです。

  • 数値上、4.5インチAQUOS PHONEのdpiがxxxhdpiクラスに入ろうとしています。

  • 一時期、また増えるかと思ったタブレットが、事実上1種類だけになりました。タブレットはキャリア販売という場から撤退し、家電量販店などの小売店からの戦略に変わっていくのでしょう。

  • (客)「スマートウォッチ?いいえ、知らない子ですね。」

  • iPhoneがついに3キャリア販売され、イーモバイルでNexus5が発売され、そしてどちらも現在SIMフリー端末が発売された現状、これから主要キャリアの端末の販売の仕方が変わるのか、もしくは何も変わらないのか。その辺り、個人的に楽しみです。


[PR]
Q. なんでいまさら2.3.1なんですか? もう2.4.7出てますよ??
A. 1年ぐらい前に作ったソースが出てきたから

1. android用のファイルを落とす
こちらでまだ入手出来ました
http://sourceforge.jp/projects/sfnet_opencvlibrary/downloads/opencv-android/2.3.1/OpenCV-2.3.1-android-bin.tar.bz2/

2. 適当な場所に解凍する
中身はこんな感じのはずです
OpenCV-2.3.1
 +androidのeclipseプロジェクトっぽいのがいろいろ
samples
 +サンプルっぽいのがいろいろ


3. eclipseでOpenCV-2.3.1の中身をインポート
ごく普通に「android - Existing Android Code into Workspace」でOK。
ちなみに1年前の代物らしく、プロジェクトがAPI4でビルドされています。
あと右クリック→プロパティ→Androidで、下のライブラリにチェックが入っていることを確認してください。

4. OpenCVを使いたいプロジェクトと連携
プロジェクトを右クリック→プロパティ→Androidで、下のライブラリのところで「追加」を押して、先ほどインポートしたOpenCVライブラリのプロジェクトを追加しましょう。

これで準備管完了です。
もう1年前の代物なので、ざざっと一部のフィルタの使い方だけ書きます。
というか、それしか試してなかったので。

5. Bitmap画像をMat形式に変換する。
いちおう、BitmapはARGB_8888形式でやったほうがいいかもしれません。

Mat srcMat = Utils.bitmapToMat(srcBmp);


6-1. 画像をグレースケール化する
Imgproc.cvtColor(srcMat, srcMat, Imgproc.COLOR_RGB2GRAY);
Imgproc.cvtColor(srcMat, srcMat ,Imgproc.COLOR_GRAY2BGRA,4);

ちなみに1つ目の引数が入力元、2つ目の引数が出力元です。

6-2. 画像をメディアンフィルタでぼかす
Imgproc.medianBlur(srcMat, srcMat, BLUR_VALUE);

こちらも引数の内容は同じです。

7. 変換したMatをBitmapに変換する
Utils.matToBitmap(srcMat, dstBmp);


以上です。
いまとなっては端末自体のスペックが上昇しているので、あまり恩恵を感じないかもしれませんが、少なくとも1年前の感覚でいえば、かなり高速で画像加工してくれる素敵なライブラリでした(実際に諸事情でアプリ化には至りませんでしたが)。

そのうち最新版でも試してみます。
[PR]
そういえば前回、「xxhdpiが480dpiまで、xxxhdpiが640dpiまで」と当然のように書いていましたが、これはandroid SDKのソースをもとに、判断しています。
というわけで、android SDKのソースを落として、該当部分を見てみましょう。

1. androidSDKのソースを取得する
androidSDKマネージャを使って、最新ソースを落としましょう。

d0252816_23452516.png


インストールが完了すると、android-sdkの入っているフォルダに

android-sdks/sources/android-19/


というものができています。
19の部分は、先ほど選んだAPIレベルの値です。
この下に、SDKのソースが一式入っています。

さて肝心のdpiに関するソースですが

android/util/DisplayMetrics.java


このファイルに、DPI関連の定数が記載されています。

/**
* Standard quantized DPI for extra-extra-high-density screens. Applications
* should not generally worry about this density; relying on XHIGH graphics
* being scaled up to it should be sufficient for almost all cases.
*/
public static final int DENSITY_XXHIGH = 480;

こちらがxxhdpiの判定に使っている、定数のようです。
コメントの部分は要訳(意訳)すると、
「あんまり気にしなくていいよ。世の中の端末はxhdpi以下で作っちゃえばほとんど対応するからさ。」
と書いてあるようです。もう日本国内では、冬モデルのほぼ全てがxxhdpi端末なんですけどね……。

/**
* Standard quantized DPI for extra-extra-extra-high-density screens. Applications
* should not generally worry about this density; relying on XHIGH graphics
* being scaled up to it should be sufficient for almost all cases. A typical
* use of this density would be 4K television screens -- 3840x2160, which
* is 2x a traditional HD 1920x1080 screen which runs at DENSITY_XHIGH.
*/
public static final int DENSITY_XXXHIGH = 640;

xxxhdpiの定数にも、何かコメントがあります。
要訳(意訳)すると
「これ、4Kテレビ用だから」
と書いてあるようです。もう2Kハンドセット端末が出ちゃうんですが……。

そんなわけで、コメントを見る限り、android側は若干解像度まわりの事情にはのんきなようですね。

ちなみに、この定数を使っているソースは
android/app/ActivityManager.java
com/android/server/display/OverlayDisplayAdapter.java

こちらの2ファイルのようです。余裕があるときに、こちらの処理も覗いてみるといいでしょう。

というわけで、今後もAPIが追加されたときには公式の差分表だけでなく、こうしてSDKソースを直接見るのもありではないでしょうか。
差分表だけだと見逃すこともありますからね。
[PR]
中国メーカー Vivo、世界初となる 2K (2560x1440) 解像度の Android スマートフォン「Xplay 3S」を12月12日正式発表 | GPad
http://gpad.tv/phone/vivo-xplay-s3/


公式発表されているわけではありませんが、ティザー画像で堂々と2Kの表記がありますし、すでに中国ではフルHD以上の解像度端末が発表されているので、むしろ不思議でもないことかと思います。いちおうハンドセットとはいえ、5.7インチのようですし。5.7インチはファブレット?そもそもファブレットって、なに??

5.7インチの2K(2560x1440)端末なので、DPIの値は515dpiです。
xxhdpiは480dpiまでとなっているので、この端末は4.3から追加されたxxxhdpiカテゴリとして扱われそうです。
4.7インチでも624dpiのようなので、xxxhdpiカテゴリの上限値である640dpiを超えることはなさそうです。安心。

ちなみに、この流れで4K解像度のハンドセットが現れたらどうなるのでしょうか。
4Kの一般的な解像度は4096x2160または3840x2160です。5インチ端末で作られたとして、dpiはなんと882dpiです。
個人的には夏の時点でもうそんな端末でてくるんじゃないか、という気分なので、googleは早く次のOSを用意するか、現状のOSをマイナーアップデートしてxxxxhdpiを用意してほしいですね。4xhdpi?

なんにせよ、デベロッパーには頭が痛くなる話題ですね(終)
[PR]
スマートフォン端末の仕様で公開されている解像度とディスプレイのインチ数から、その端末のdpiを計算する方法です。
※ディスプレイのインチ数は、対角線上のインチ数であることを前提に書いてます。そもそも対角線上でない場合を見たことがありませんが。

以降は「縦1920px、横1080px、5インチ」の端末を例にしています。

1. 縦と横の解像度から、対角線の長さ(px単位)を求める。

みんな大好き、直角三角形の斜辺を求める計算です

対角線 = sqrt(1920*1920 + 1080+1080)
対角線 = 2202.9071700823…

2. 求めた斜辺と対角線のインチ数から、縦と横のインチ数を求める

みんな大好き、比率の計算です。

縦インチ : 5 = 1920 : 2202.9071700823…
縦インチ = 5 * 1920 / 2202.9071700823…
縦インチ = 4.357877685622..

横インチ : 5 = 1080 : 2202.9071700823…
横インチ = 5 * 1080 / 2202.9071700823…
横インチ = 2.451306198162..

3. それぞれの解像度を、インチ数で割るとdpiが出て来る

どちらで計算しても、同じ値になるはずです。

縦dpi = 1920 / 4.357877685622.. = 440.5814340164.. ≒ 440
縦dpi = 1920 / 4.357877685622.. = 440.5814340164.. ≒ 440

4. 実は解像度の計算はいりません

お気づきかもしれませんが、途中で掛けた解像度を、同じ解像度で割っています。つまりこの部分は計算する必要がありません。

dpi = sqrt(1920*1920+1080*1080)/5 = 440.581434016.. ≒ 440

ほら、スッキリ。
というわけで、たまに使える知識講座でした(終)
[PR]
by yamacraft | 2013-11-29 00:07 | いろいろ

Ubuntu(xbuntu)12.10にcocos2d-x入れてみた日記
http://yamacraft2.exblog.jp/18987676


以前cocos2d-xを入れてみたわけですが、結論を言うとU100のスペックでは、ビルドするたびに艦隊これくしょんの演習を1回やれるぐらいの待ち時間が発生して非常にストレスだったので、macminiとかをいずれ買った時に改めてちゃんとやろうかな、という感じで現在放置しています。

そんな中、KLabが自社のゲームエンジンであるPlaygroundのOSS版を公開していたので、試しにサンプルだけ動かしてみようと挑戦してみました。


KLabが開発したゲームエンジン「Playground」のソースコードを公開 | ニュースリリース | KLab株式会社
http://www.klab.com/jp/press/130926.html


結論からいうと、公開当日の環境構築ゲームは敗北に終わったわけですが、別でwindows側でサンプルの動作に成功していた人がいたので、あらためて参考にして挑戦しました。


2D/2.5Dゲームエンジン Playgroundのセットアップ | ブライテクノBlog
http://brightechno.com/blog/archives/150


内容はかなり上の記事に酷似しています。そりゃ環境構築なんだから当たり前なんですけど。


0. PlaygroundOSSのソース取得

https://github.com/KLab/PlaygroundOSS/

通常のgit cloneしてしまえばいいです。


% git clone https://github.com/KLab/PlaygroundOSS.git
% cd PlaygroundOSS


ブランチを切るかどうかはお好みですが、なんだかんだでしばらくは激しく修正が行われるので、やっておいたほうがいいかもしれないです。(ここでは書きません)

1-1. pythonのインストール
いるのでやっておきましょう。(割愛)

1-2. NDKのインストールとかSDKのインストールとかADTとかEclipseとか
もうここで書く必要もないので割愛します。
ただこの後のビルド作業の中で、NDKにPATHが通っていることを前提とした部分があるので、忘れないように注意してください。
ちなみにPlaygroundOSSの中はNDKのバージョンがr9前提となっているので、コレを機に最新版のNDKを落としておきましょう。


export PATH=$PATH:$HOME/android-ndk-r9/


もしかしたらsdkのplatform-toolsもPATHに通しておいたほうがいいかもしれません。コマンドライン上でどこからでもadbコマンド叩ければ、PATH通ってると思います(投げやり感)。

2. PlaygroundOSSエンジンのビルド
正直ここは何やっているのかよくわかっていないです。
とりあえずビルド用のPythonファイルに実行権限を与えて、python越し初回のndk-buildとかをやらせてるみたいです。


% cd (省略)/PlaygroundOSS/Engine/porting/Android/GameEngine-android
% chmod +x ./build.py
% ./build.py --rebuild --project SampleProject


SampleProject以外だと失敗するらしいですが、じゃあ新規にプロジェクト作りたい場合はどうするんだという疑問もつきないでしょう。いいんです、とりあえず私は動作確認だけしたいので。

成功すれば、GameEngine-android/libs/以下にgcm.jar以外のいろんなライブラリファイル(*.so)があるはずです。ndk-buildだけ失敗すると、フォルダだけできて中身が何もはいっていないことがあるので注意してください。

3. プロジェクト用のassetsを作成
GitHubにアップされている説明書は何故かここからあやふやな記述になっていた、自分はここでつまっていましたが、Tutorial以下のサンプルフォルダを指しているようでした。
いまはどこにあったかわかりませんが、当日は他にも同じ内容のzipファイルかなにかがあって、しかも必要なファイルがないという罠が仕掛けてあって恐ろしい目にあいました。


% cd (省略)/PlaygroundOSS/Tutorial/01.SimpleItem/.publish/android
% zip -r -0 (省略)/PlaygroundOSS/Engine/porting/Android/GameEngine-android/assets/AppAssets.zip ./*
% echo -n "1" > (省略)/PlaygroundOSS/Engine/porting/Android/GameEngine-android/assets/version ./*


2行目でassetsにあるフォルダを無圧縮zipに固めて、先ほどビルドしたプロジェクト内のassetsフォルダに入れて、versionというファイル名の無圧縮zip内のファイルリストのテキストファイルを、同じようにassetsフォルダに入れます。頭に1がつくのは、今回は01.SimpleItemだからかなあと思いますが、よくわかりません……。
そもそもgit cloneしてきた中身にどんどんプロジェクト作るのも変じゃないかって??私にもよくわかりません……。でもとりあえず、動いてるところがみたいだけです……。

4. プロジェクトをeclipse - adtでインポート
インポート手順の詳細は省略します。
インポートの選択は「Existing Android Code into Workspace」で、インポートするフォルダは、先ほどassetsで色々おいたフォルダの一つ上「GameEngine-android」になります。

あとインポートしたプロジェクトを右クリック-プロパティを呼び出して
「C/C++」の中のビルドコマンドのパス、「C/C++ -> 環境(Environment)」の中身のパスを修正しておいてください。

5. 実行
Lintエラーとかで実行出来ない場合は、何度かF5キーでプロジェクト内をリフレッシュしたり、2のエンジンビルドを何回か再実行してみてください。
eclipse上でクリーンビルドすると、艦隊これくしょんで演習を1つ進められる時間が発生する上に、それでいてビルド失敗する可能性があるので注意してください。

とりあえず実行に成功すると、猫の写真に変な色合いのフィルターがかかってなんか数秒間だけ動いて止まる何かができました。

d0252816_2353572.png


このフィルターは正しいのかどうかわかりませんが、とりあえず動きました。ちなみにバックボタン聞かないので注意してください。

ただ正直言って、プロジェクトの作成手順がなんか複雑だし、そもそもサンプルがluaファイルだし、結局ビルドまでの手間暇とビルド時間はcocos2d-xと対して変わらないなあということで、しばらく自分はゲームはAndEngineでやっていこうと思いました。

もうちょっとプロジェクトの修正が落ち着いて、ある程度運用方法の情報が出来上がったタイミングで、改めて考えることにします。


はやくビルド時間に困らないハイスペックなPCが買いたーい。
[PR]
を入れた時の簡易メモ

1. 公式サイト(http://developer.android.com/sdk/installing/studio.html)でandroid studioのLinux版を落とす

2. 好きな場所に解凍する

3. (androud studioのroot)/bin/studio.sh を実行

4. 動かなかったら、.bash_profileにでも
JAVA_HOME=/usr/bin/java
でも入れたり、studio.shの中身で未定義のパスとかを何とかすればいいと思います。


メモにもならない。
あとU100ではandroid studioは重いです。Eclipseより明らかに重い。あとJDKのせいかしらないけど見た目が若干しょぼい。あと解像度が高さ768px以上あること前提にしてるので、プロジェクトの新規作成をしてもOKボタンが押せないなどの不便があります。

なので私はしばらくEclipseでいいです(終わり)
[PR]
更新できるほどまとまっていることが特にないので、今後試してまとめたいことを掲載

1. NavigationDrawerと他スライドメニューライブラリ
NavigationDrawerをつかって、スライド式のメニューを実装する
http://techbooster.org/android/application/16318/



Androidアプリにサイドメニューを簡単に追加できるライブラリ
http://www.adamrocker.com/blog/335/simple-side-drawer.html


2. androidでのcocos2d-x

3. androidでの汎用Oauth

たいしてあんまりないなあ。
[PR]