ワーカー側でヒストグラムの処理

ワーカー側で、ヒストグラムの処理
ヒストグラムは特定の色の値、つまり輝度のピクセルがどのくらい存在するか表すグラフ
ヒストグラムを処理する方法は
輝度ごとに処理して少しずつ結果を返す方法と
すべての輝度をまとめて処理する方法がある
輝度ごとに処理する方法では
少しずつ結果を見せられるためユーザーを待たせる時間が短いが、
全体の処理時間はのびる
まとめて処理する方法ては
全体の処理時間は短いが
画像サイズが大きい場合
ワーカー側での処理に時間がかかるため
ユーザー側では何も処理していないように見える
画像サイズが小さいなら、まとめて処理したほうがよいけど
状況により、このあたりは
ケースバイケース

ARの種類

拡張現実の種類
ビジョンベースAR
現実空間に存在する何らかの情報を読み取り
AR情報を表示するこ表示
ビジョンベースARは、更に
マーカー型ビジョンベースAR
マーカーレスビジョンベースAR
に分類できる
マーカー型ビジョンベースAR
マーカーと呼ばれる画像を認識してAR情報を表示する拡張現実
ARとしてほ!一番認知度が高い
マーカーを読み込むことで情報を表示するため
その他の情報がいらない
また、マーカーの傾きなどを、認識することで
表示する情報の角度を操作すれば
ARがより現実空間に存在するようにできる
マーカーレス型ビジョンベースAR
マーカーレス型ビジョンベースARは、
マーカーを利用せず、人の体の形を認識して
その場で試着
部屋の形を認識して模様替え
など、その空間にあるものを認識し、AR情報を表示
また、空間だけでなく
可視光通信を利用したアプリなども、開発されている
ただ、ビジョンベースARを作成するには
NyARToolkit
PTAM
などのライブラリを使わないと実装は困難
ロケーションベースAR
GPS情報と、六軸センサーを使いAR情報を表示する
このため、ビジョンベースARとは異なり
画像や空間認識がいらない
位置情報を利用して、高さ、距離などの算出もできるため
より空間的表示がてきる

拡張現実の仕組み

拡張現実の仕組み
拡張現実は、実際に現実には存在しない情報
マーカー
映像
情報タグ
などを画面上に表示することで
拡張された空間のことを示す 
ちのみに、拡張現実はARともいわれている
ARは
Augment Realityの略
ARは大きく分けて2つ
現実空間の、何らかの情報を読み取り映像を付加する
ビジョンベースAR
位置情報を利用して拡張現実を付加する
ロケーションベースAR
がある

XMLとJSON

XMLとJSON利用の利点
Androidでは、レスポンスデータの処理を
XML
または JSONで行うことが多い
どちらを使うかは開発者次第
ただ、XMLとJSONのパーシング処理だと
XMLのほうが早いことが多い
そのかわり!XMLが複雑になりタグ名が重複するときには
ソースも複雑になる傾向がある
一方、JSONは
XMLより速度は落ちるけど、階層ごとにパーシングするため
重複する要素名があっても
複雑な処理をせすにパーシングできる
このあたりは、アプリやAPIにより
レスポンス形式を指定することが重要になる

ホットペッパーAPI

ホットペッパーAPIのメモ
key
APIキーで、これは必須
APIを利用するためのキーを設定
lat
緯度
ある地点からの範囲内のお店検索する場合に使う
lng
経度
これも、緯度と同じで、お店検索に使う
range
検索範囲
さがす範囲を、5段階で設定
1なら 300m
2なら 500m
3なら1Km
4なら 2km
5なら 3km
デフォルトなら1km
format
レスポンス形式
これはレスポンス形式を
XML
JSON
JSONP
のどれかを指定する
JSONPなら、さらにパラメータに
callback=コールバック関数
とすれば
Javascript側コールバック関数が指定できる
ちなみに、デフレは、XML
検索クエリは、ベースとなる
リクエストURLの後ろへ追加する
ちなみに、ホットペッパーのリクエストURLは
http://webservice.recruit.co.jp/hotpepper/gourmet/v1/
このリクエストURLの後に?をつけて、
パラメータを&でくっつけて作成
わかりにくいから、構文の
例を書いてみた
http://webservice.recruit.co.jp/hotpepper/gourmet/v1/?key=APIキー&lat=緯度&lng=経度&range=検索範囲の値&format=フォーマット形式
これを数値とか入れてみると
http://webservice.recruit.co.jp/hotpepper/gourmet/v1/?key=12345&lat=35.69000&lng=139.87766&range=1/&format=json
というかんじになる
今回は、適当な数値だけど
しっかりと値やキーを設定すれば
リクエストURLへブラウザーでアクセスすれば
jsonとかXMLでレスポンスが表示される
XML形式なら
パーシング処理で実装できる

format メソッドと書式指示子

Android位置情報プログラミングで
format メソッドと書式指示子についてかかれていたので
そのときに気がついたことなどのメモ
書式指示子は
%s
これと format() を合わせることで
Web API のリクエストURLを作成できる
format() の書式は
String format(String format, Object args)
パラメータの解説もメモ
string format 書式指示子%sのある文字列(大抵はリクエストURLを代入した定数)
Object args 書式指示子に代入する文字列
今回、参考にした書式では
String.format(
WORDPRESS_URL,
Double.toString(location.getLatitude()), //緯度
Double.toString(location.getLongitude()), //経度
Integer.toString(100000), //範囲
Integer.toString(20) //取得件数
);
となっていたので、おそらくこの代入するものをリクエストパラメータに変更すれば
web api のアプリが作成できると思う
ちなみに 定数の WORDPRESS_URLは
リクエストURL
リクエストURLは、API関連を使うときには必要になるもので
基本的には
URLのあとに?をつけて、あとはパラメータを&でくっつけて記述していく
受け取る方法がXMLにするか、JSONにするかで変わる

ワーカーから他のスクリプト読み込み

ワーカーから他のスクリプトの読み込み
従来のJavascriptでは、
ほかのJavascriptファイルの読み込みができなかったけど
Web Workersを使えば
importScripts()へファイルパスを指定して読み込むことができる
読み込むファイルは、複数指定することも可能で
 ,て区切って記述する 
例えば
importScripts(“game.js”,”login.js”);
読み込みの順番は左から、つまり今回なら
game.jsから
となる

HttpClient と HttpURLConnectiion

Android 2.2 以前の場合、HttpClient のほうがバグがすくないので
これを使うのが最適だった
しかし、2.3 以降ではHttpURLConnection のほうが推奨になっている
HttpURLConnection のほうがシンプルでサイズが小さい
そして内部でネットワークの利用を減らし
バッテリー消耗、速度も改善させているため
基本的にこれからのアプリは4以上なのだから
HttpURLConnection を使うとかんがえたほうが正解だと思う

eclipseプロジェクトのコピー

Eclipse プロジェクトのコピーをするというものが
Androidアプリ位置情報プログラミング
であったので、これについて検索してみました
参考にさせていただいたのは
Eclipseでアンドロイドプロジェクトをコピーする
やりかたは、コピーしたいプロジェクトを右クリックして
copy
そして paste を選んで貼り付けます
すると、
Screenshot-2013-01-29 23:48:09
というように
Copy of プロジェクト名
というようになりますので、そのままOKを押します
あとは、このプロジェクト名を
右クリック > Refactor > Rename
で名前を変更します
Android プロジェクトの場合、アプリの名前を変更するため
/res/value/strings.xml
の中にある
app_name の部分も変えます

現在地取得は実機でしかできない


Androidアプリ位置情報プログラミング
を参考に、位置情報プログラミングを勉強しています
今回、現在地を取得するというところでエラーがおきたので、
原因を考えてみたら、Android エミュレータでは現在地の取得ができないのが
原因でした
ちなみに、座標を指定することはDDMSでもできるのですが
現在地の取得というようなものに関しては
実機検証が必要となります
実機検証として、一番おすすめなのは
Nexus 7 Wi-Fi Tablet 16GB (Android 4.1 Jelly Bean)-国内正規品

実機検証でないとできないものは
現在地の取得、
NFC
音声入力などがあります
Nexus7 をすすめる理由としては、スマートフォンではないので
なにか不具合がでたとしても
通信手段がなくなってしまうことがないので安心という点
スマートフォンを購入するよりは安い
比較的新しいOSなので、過去の白ロムを購入するよりは
検証する機能が豊富
ということが理由です