2015年9月10日木曜日

Recon Jet向けAndroidアプリ開発:ヘッドトラッキング編

前回はRecon JetでAndroidアプリ開発するための前準備について書きました。

【注意】
ReconOSを最新版にしておきましょう。
Recon UplinkアプリをダウンロードしてデバイスをPCに接続するだけでアップロードが始まります。なお、Recon UplinkはEngageに登録後ダウンロードできます。
最新版のファームにしないと実機デバッグができない場合があります。

今回はヘッドトラッキングをするための手順をメモしていきます。
こちらの手引きを参考にすればできます。
英語なので苦手な方に参考になれば幸いです。

①AndroidManifest.xmlに追加します。
applicationタグの間に下線部を追加します。
<下記は引用>
<manifest…>

<application…>

<uses-library android:name="com.reconinstruments.os" />

</application>

</manifest>

②パッケージのインポート、マネージャーの取得、リスナーの実装をします。
Activityクラスに直接実装する場合は大枠は以下のようになるはずです。
<下記は引用>
import com.reconinstruments.os.HUDOS; ←インポート
import com.reconinstruments.os.hardware.sensors.HUDHeadingManager; 
←インポート
import com.reconinstruments.os.hardware.sensors.HeadLocationListener; 
←インポート

public class SampleActivity extends Activity implements HeadLocationListener ←ロケーション情報コールバック用のリスナーを実装します。
{

HUDHeadingManager mHUDHeadingManager = null; ←マネージャー保持用変数

@Override
public void onCreate(Bundle savedInstanceState) {
Log.i(TAG,"onCreate");
...
mHUDHeadingManager = (HUDHeadingManager) HUDOS.getHUDService(HUDOS.HUD_HEADING_SERVICE); ←onCreate時にマネージャー取得します。
}

@Override
public void onStart() {
Log.i(TAG,"onStart");
super.onStart();
mHUDHeadingManager.register(this); ←onStart時にリスナーを登録します。
mIsStarted = true; ←トラッキング中かどうかのフラグを保存しておけば便利になります。
}
@Override
public void onStop() {
Log.d(TAG,"onStop");
mHUDHeadingManager.unregister(this); ←onStop時にリスナーを登録を解除します。
mIsStarted = false;
 ←トラッキング中かどうかのフラグを保存しておけば便利になります。
super.onStop();
}

@Override
public void onHeadLocation(float yaw, float pitch, float roll) { ←リスナーの実装部分です。
// ここでRecon Jetの現在のヘッドロケーションがコールバックされます。
// yaw値:頭の水平方向の移動(※詳細は後述)
// pitch値:頭の上下方向の傾き(※詳細は後述)
// roll値:頭の左右方向の傾き(※詳細は後述)
}

}

③onHeadLocationコールバックについて
実際に20ms前後の間隔でコールバックされてきました。
yaw, pitch, rollそれぞれの値の単位は恐らく【度(°)】です。
yaw=0°になる位置とiPhoneのコンパスアプリの北が微妙にずれていました。
ちゃんと検証してないので間違っているかもしれないのでご注意を。
だいたい以下のような感じです。
■yaw
0°=北
90°=東
180°=南
360°=北
■pitch
−90°=真上仰向け
0°=正面
90°=真下
■roll
-90°=右真横
0°=垂直
90°=左真横

④あとは応用
好きに料理しちゃってください。

あまりRecon JETでアプリ開発してる人いなそうな。
ぐぐってもあまり情報がないような。。。

2015年9月2日水曜日

地元の豆腐屋食べ比べ。

午前の仕事終わり、帰りに地元の豆腐屋に寄ってみた。
最寄駅は西武多摩川線の新小金井駅。

お世辞にも活気がある商店街とは言えないが、豆腐大好きとしては買わずにはいられない。

木綿一丁。
あと夕食用にゆばと揚げ出しも。

早く豆腐を食べようと歩いてるともう一軒豆腐屋があった。

思いついた。

食べ比べよう!

木綿もう一丁。

先に買った方(写真右)をA、あとに買った方(写真左)をBとしよう。

弾力 A > B
水分 A < B

味はBはクリーミーで滑らかな舌触り。
Aはやや弾力がありかみごたえが楽しめる上味もしっかりしている。

木綿としての好みはA。

お店の詳細は今度紹介してみよう。

2015年8月27日木曜日

ドライブでまれのロケ地(大沢集落)に行ってみた【1日目】

■3日間(8月22日〜24日)の大体の概要
レンタカー(アクア)、2泊3日、宿予約なし。
走行距離1210km。
道中給油が3384円。
ガソリンは地方は高いですね。レギュラーはだいたい130円オーバー。東京だと120円程度。
平均燃費25.6km/L
最後は燃費計算で返却で総額43550円。(レンタカー3日間+ガス代+高速代)
ETCカードはレンタル。

コースはだいたいこんな感じ。
東京→山梨→長野→岐阜→富山→石川→富山→新潟→群馬→埼玉→東京。

天気
たまたま3日間晴天でした。曇りはありましたが。。。


①下道でゆっくり行こうとしたが思ったより時間がかかるので、
大月ICで高速へ。

②PM2:30頃にネットランキング3位のお蕎麦屋さん「水車挽き番所そば 中之屋」へ。水車で挽いてるとのこと。さっぱりと美味しかったです。写真下手でごめんなさい。
(左)おろしそば1550円  (右)水車小屋


③白川郷に向かう途中で鍾乳洞を見つける。入場券1000円で入る。気温12度でだいぶ冷やされた。上着必須。最後まで歩くと30分くらいかかるので今回は15分で出ました。進むに連れて狭くなるので苦手な人は気をつけてください。
あとでっかい鍋「日本一宿儺鍋」があった。数千人分の炊き出しができるとか。大橋展も併設されていたがあまり興味なかったのでスルー。
ライトアップされた鍾乳洞内(入場券1000円)


④夕方8時頃に白川郷に着く。この時間にはほとんどのお店は閉まっている。3時でほとんど閉まってしまうので要注意。さらに注意したいのは駐車場が18時に閉まってしまうので路頭に迷います。
★夏の夕暮れ時の白川郷は何とも言えない哀愁を漂わせ、なんだか懐かしい雰囲気で心落ち着きました。これはオススメ!予約すれば8000円台〜民宿に泊まれる。次は冬の景色を見に行きたいところ。
きれいな夕暮れに包まれた白川郷


⑤初日の宿探し。健康ランド「アラピア」に決めた。20時過ぎに着いた。付近でご飯を食べるために散策したが遠い。結局近くのインドカレー屋に入った。カレーとナンで1040円。つくってる方は現地の方っぽいのですが、地元のインドカレーの方が美味しかった^^;
アラピアは想像より大きい施設。16種類もある温泉でさっぱりして快適に過ごせました。ただ、難点がいくつかある。館内の温度設定が若干私には暑い。テレビが0時で消えるのはいいけど、朝テレビが大音量でいきなりつくのでびっくりする。女性専用部屋もあるしオススメ。一人2500円と格安。素泊りより安い。
貴重品の管理方法を決めて置かないと私みたいにビクビクしながら寝ることになりますのでご注意を。
でもリクライニングチェアーでプログラミングもはかどりましたし、Macbook Proもなくなりませんでした!
今晩の宿アラピア


2日目へつづく。

2015年7月4日土曜日

Recon Jet向けAndroidアプリ開発:開発準備編

昨今話題になっているメガネ型のウェアラブルデバイス「Recon Jet」
詳細はここ→http://www.reconinstruments.com/products/jet/

ようやくSDKが公開されたので早速アプリを開発しましょう!
ということで準備しましょ。

【注意事項】
Androidアプリの開発環境がすでに整っている前提とします。
また、ご自身の環境に合わせて読みといてください。

■環境
OS:Mac OS X 10.10.4
Java:1.8

■必須
事前にRecon JetのOSのバージョンを最新の4.2.0(2015年7月3日現在)にアップデートしておいてください。

本家のページを参考にすれば数分でセットアップは終わります。
http://www.reconinstruments.com/developers/develop/getting-started/recon-sdk-4-api/

1、Android Studioを起動します。Configure→SDK Managerを起動します。
2、一旦すべてのチェックをはずしてから、APIレベル16(4.1.2)のSDK PlatformとSources for Android SDKを選択しインストールする。
3、次にRecon SDK Add-Onをインストールするために、SDK ManagerのToolsメニュー→Manage Add-on sitesを選択する。
4、User Defined Sitesタブを選択し、Newを選択する。
5、http://www.reconinstruments.com/wp-content/recon-sdk/repository.xmlを入力してOKを選択し、Closeを選択する。
6、Recon instruments SDK Add-onが追加されているのでインストールする。
7、appモジュール内のbuild.gradleを開いてcompileSdkVersionの項目を下記のように修正する。
compileSdkVersion 'Recon Instruments:Recon Instruments SDK Add-On:16'
8、ついでに、targetSdkVersionをついでに「16」に変更します。
9、このままだと実機(Recon Jet)を接続しても表示されないので、Adbを差し替えます。
9−1、http://www.reconinstruments.com/wp-content/recon-sdk/adb.zipからダウンロードする。※3つのバージョンが入ってます。
9−2、./adb kill-serverで一旦終了させてから、既存のadbはadb.orgなどにリネームして置いておくといいと思います。
9−3、解凍したadbに置き換えてください。
10、アプリを実行してみてください。めでたくReconJetが表示されれば成功です。

2015年6月12日金曜日

Mac OS X Yosemite 10.10.3でParrot社のDroneSDKをAndroid向けにビルド

いろいろな事前準備と予期せぬエラーで大変だったのでメモしておきます。
間違っていたらご指摘ください。コメントなどで補足いただけると幸いです。

※個人メモのコピペなので親切じゃないです。
パスなど環境は適宜に読み替えてください。
※個人の環境によっても発生するエラーが異なるので
がんばってください。。。orz

公式ブログも合わせてご参照ください。
http://ardroneblog.com/ARDroneBlog/DroneBlog/Entries/2015/2/24_Bebop_SDK_in_OSX.html

-------ここから------
Homebrewをインストールして、brewコマンドを使えるようにしておく

Oracle Javaをインストールしてjava -versionでバージョン表示されるようにする

brewコマンドでgit, wget, automake, autoconf, libtool, yasm, nasm, mysqlあたりはインストールできるはず。
※mysqlはなぜかビルド失敗時にそれ関係のログを吐いたので入れてます

rplは以下のURLからダウンロードして解凍してパスに通しておく
http://sourceforge.net/projects/rpl/files/rpl/rpl-1.5.5/

AndroidSDKとAndroidNDKをそれぞれダウンロードして解凍しておく
適当に~/devディレクトリを作成して、~/dev/sdk、~/dev/ndkのように入れておく
次にANDROID_SDK_PATHとANDROID_NDK_PATHにそれぞれSDKのルートまでのパスをとおしておく。
Macだと~/.bash_profileでいいと思います。

$ANDROID_SDK_PATH/tools/androidを起動してAPI14とAPI19の2つに関するもの、
ADTの最新版をインストールしておく。
SupportLibraryなども入れといた方が良さそうです。

~/dev/android_toolchainsディレクトリを作成し、さらに中に
~/dev/android_toolchains/toolchain_arm,
~/dev/android_toolchains/toolchain_mips,
~/dev/android_toolchains/toolchain_x86の3つのディレクトリを作成する

以下のコマンドで上記の3つのディレクトリにツールを入れる
$ANDROID_NDK_PATH/build/tools/make-standalone-toolchain.sh --platform=android-14 --arch=<arch> --install-dir=<your/installation/dir>
【注意】
<arch>はそれぞれarm, mips, x86
<your/installation/dir>はフルパス指定で作成した3つのディレクトリをそれぞれ指定
(例)
<arch>がarmの場合は、
<your/installation/dir>を/Users/tsuyoshi/android_toolchains/toolchain_arm

上記のすべてが終われば事前準備は完了のはず。はず。

ビルドスクリプトをgitからダウンロードする。
~/dev/dronesdkを作成して
cd ~/dev/dronesdk; git clone https://github.com/ARDroneSDK3/ARSDKBuildUtils.git
すでにclone済みの人はgit pullで最新版にしておいてください。

【注意】
以下は、ARSDKBuildUtilsの中のpythonスクリプトが実行できない場合、改行コードが影響していると思われるエラーが出たらやってください。実行できるなら必要ないです。
ARSDKBuildUtils以下にある.pyファイルの改行コードをLFに変換する。
ARSDKBuildUtils/Utils以下にある.bashファイルの改行コードをLFに変換する。

環境セットアップが正しいかどうか必ずCheckEnv.pyを実行してオールグリーンにしておく
ただし、AndroidSDKのAPI19をインストールしてもMissingって出るのは放置。←10.10.3では出なかったな。。。
Platoforms/Android-19があることを確認して、あればおk。

CheckEnv.phを実行してAndroidセクションがOKであれば次はビルドを実行する

./SDK3Build.py -t Androidとすればビルドが開始される

2015/06/05にビルドしたらopensslのダウンロードで証明証エラーでコケる。
opensslで証明証エラーって怖いな。。と思いつつ、手動でダウンロード。
※これは発生しない場合もあったので注意
wget --no-check-certificate https://www.openssl.org/source/openssl-1.0.2a.tar.gz -O /Users/[USERNAME]/mydev/drone/dronesdk/ARSDKBuildUtils/../openssl/openssl-1.0.2a.tar.gz
【追記】2015/06/12時点で上記のコマンドではエラーになる。原因はopenssl-1.0.2a.tar.gzがないようだ。openssl-1.0.2b.tar.gzになっているので以下のように手動でダウンロードおよび解凍をしてください。--no-check-certificateオプションは必要に応じて。
wget --no-check-certificate https://www.openssl.org/source/openssl-1.0.2b.tar.gz -O /Users/[USERNAME]/mydev/drone/dronesdk/ARSDKBuildUtils/../openssl/openssl-1.0.2a.tar.gz
ダウンロードしたら、手動で解凍します。
cd ../opensslに移動して、tar xzvf openssl-1.0.2a.tar.gzで解凍します。
openssl-1.0.2bと解凍されるので、openssl-1.0.2aにリネームしてください。

そしたら、またARSDKBuildUtilsディレクターに戻って、
再度./SDK3Build.py -t Androidを実行してください。

スペックに依存しますが、10分前後くらい時間かかります。
正常にすべてのビルドが終了すると以下のような表示になるはずです。
そうするとARSDKBuildUtils/Targetsの中にビルド結果ができてますね。
結構面倒です。
がんばってください。。。

2015年1月23日金曜日

LOVE TOHO(Android版も)で映画上映時間をサクッと確認

映画好きの方に朗報です!
TOHOシネマズで映画をよく観る、という方のために「LOVE TOHO」というアプリを制作しました。
iOS版→https://itunes.apple.com/JP/app/id864004130
Android版→https://play.google.com/store/apps/details?id=jp.tajisoft.android.lovetoho2&hl=ja

アプリを起動するだけで上映時間が表示されます。
劇場を選択することで全国のTOHOシネマズの上映時間を観ることができます。
「マイシネ」として登録しておくと以降の起動で優先的に表示されます。


映画タイトルをタップすると映画の詳細情報が表示されます。

さらに上映予定のタイトル一覧も見れます。もちろん詳細情報も見れます。
通知登録すると前日にプッシュ通知してくれます。
観たい映画を見逃すこともなくなりますよ。


←iOS版












←Android版

2015年1月6日火曜日

Android StudioでFacebook SDKを追加する際に発生するエラーの回避

OS: Mac OS X 10.10
Android Studio: 1.0.2
Facebook SDK: 3.21.1

主に2つのエラーに出くわしました。
・SDKに関するプロパティがない
・bolts-androidがない
前者はわりと簡単に解決できました。
後者は他のブログでおっしゃっているような方法とちょっと異なっていたので、
メモしておきます。
例えば下記のブログエントリーではboltsのパスを書き換えればよいと書いてある。

android studioでfacebook sdkを使えるようにするまでにやった事


でも実際のbuild.gradleは以下のような記述になっています。
compile 'com.parse.bolts:bolts-android:1.1.2'
しかし、しっかりとbolts-androidは存在していた!なのになぜ?!
もしかして、mavenCentral()って書いてあるけど見てない??
facebookのbuild.gradleのリポジトリはmavenCentral()となっているけど、
作成したプロジェクトのbuild.gradleはjcenter()ってなってる!!!?ん??
ん??もしかしてこれに上書きされているのか!?
もっと調べてみるとSOFでこんな投稿を見つけた。
http://stackoverflow.com/questions/24852219/android-buildscript-repositories-jcenter-vs-mavencentral
どうやらまだ統一されていないようだ。

いろいろgradleファイルのrepositoryを書き換えてリビルドしたけど結局解決しないので、libsにあるものを見るようにしてあげた。これで一応ビルドは通るけどしっくりこないんだよね!!
//compile 'com.parse.bolts:bolts-android:1.1.2'
    compile files('libs/bolts-android-1.1.2.jar')

原因が分かる方いましたら教えてくださいm(_ _)m

とりあえずこれで。
まとめると以下のような手順。

1.SDKファイルをダウンロードする
ダウンロード先:https://developers.facebook.com/docs/android?locale=ja_JP
2.Android Studioにインポートする
2−1.Android Studioを起動する
2−2.ダウンロードしたzipファイルを解凍する
2−3.Android Studioの[File]-[Import Module...]を選択する
2−4.回答したフォルダ(例:facebook-android-sdk-3.21.1)の中のfacebookというフォルダを選択する
2−5.下記のようなエラーメッセージが表示される
Error:(8, 0) Could not find property 'ANDROID_BUILD_SDK_VERSION' on project ':Todo'.
2−6.gradle.propertiesフィアルに以下を追加する
※編集できないというメッセージが出ても強制編集
ANDROID_BUILD_TARGET_SDK_VERSION=18
ANDROID_BUILD_TOOLS_VERSION=20
ANDROID_BUILD_SDK_VERSION=18
ANDROID_BUILD_MIN_SDK_VERSION=14
2−7.Android Studioの[Build]-[Rebuild Project]を選択する
3.Android Studioの[File]-[Project Structure...]を選択する
4.左側の[app]を選択し、[Dependencies]タブを選択する
5.左下の[+]ボタンを選択肢[Module Dependency]を選択する
6.先ほど追加した[:facebook]を選択してOKを選択する
7.さらにOKで画面を閉じる
8.今度は以下のようなエラーメッセージが表示される
bolts-android.jarがありません
9.追加したfacebookモジュールのbuild.gradleを開く
10.11行目をコメントアウトし以下のように追加する
    //compile 'com.parse.bolts:bolts-android:1.1.2'
    compile files('libs/bolts-android-1.1.2.jar')
11.Android Studioの[Build]-[Rebuild Project]を選択する