2016年11月13日日曜日

フィールドテストは大事よね:浜松餃子まつり2016に行ってみた #餃子 #android #浜松 #浜松餃子

ふー食った食った。
みなさんこんばんは。やっぱ浜松餃子は最高だわ。

えーと。
今月のABC 2016までには公開しようと、頑張ってアプリを作ってたワケですが。
先日、なんとか公開することができました。ぱちぱちぱち。
これで、浜松支部のブースに、チラシを置いてもらうことができる・・・ッ!
(急いでた理由これだけ)

Android SDKのCamera2に散々てこずらされたり、
パーミッション関係の処理をほとんどしてないことに、公開されてから気づいたり
(大慌てで修正)、
バタバタし通しでしたが、まあなんとか形になって良かった。

・・・形だけだけどな・・・(ぼそっ)

で。
今日はお天気もいいことですし、新アプリのフィールドテスト(?)を兼ねて、「浜松餃子まつり2016」に行ってみました。
位置情報を扱うアプリでありながら、開発とテストをほとんどおウチでしかやってませんでしたしね。さみしいよねそれじゃ。

というワケで、おにぎり持参で会場へ。
おおー。結構、人でてますなー。
早速「ロケッパ!」でパチリ。・・・よしよし、写ってる写ってる。ああ良かった。
(もう公開しちゃってるし写ってなかったら困るんですが)


餃子のお店もいっぱい。
だいたい1パック3個〜4個くらいで、200円〜400円くらい。
もうこれはいろいろと試すしかないでしょ!

まあ『豚猿』をおさえておくのは基本ですよね。れんこんシャリシャリで美味しかった。

でも、個人的なオススメは、こちらかな。
喜久屋』。キャベツがいっぱい入ってて、ほんのり甘かったー。おいしー。


あとはこちら。
しゃもじ』。パリパリ。上品で複雑な味。おいしい。


おっとっと、いけねえいけねえ。
フィールドテストだった、へっへっへ。餃子食ってばっかりじゃだめだ。

腹も膨れたので、ちょっと散歩。場所を変えてみました。

よしよし、ちゃんと住所も地図も更新されてる。ほっ。
(だから更新されてないとやばいんだってば)

気が楽になったのでもう少しお散歩。
途中でインド人っぽい方に道を聞かれた。
地下道の入り口で迷ってて、「浜松駅は、ココ、降りればイイノ・・・?」
笑顔で「イエス!ゴー!ダウン!ストレイトォー!」って答えときました。

ビオ・あつみにまで足を延ばしました。
ここ、いいものが結構置いてあって、棚を眺めてるだけで幸せになる・・・。


割と楽しいフィールドテストだったので、また行こうと思います。うふん。

★★★
PR:
OpenStreetMapを使用したAndroidカメラアプリ、「ロケッパ!」販売中です!
撮った写真に、OpenStreetMapの地図を合成するよ!それだけ!
よろしければご購入ください!助けると思って!お願い!!


2016年11月5日土曜日

またしてもたった一行が:Ancroid SDK Camera2で位置情報を写真に保存する #EXIF #Android

みなさまこんばんは。
今日はCamera2で位置情報保存するにはCaptureRequest.JPEG_GPS_LOCATIONしないとだめだよ、ってお話です。あるいは、リファレンスはちゃんと読め、というお話・・・。
週末ですねー。
週末といってもさっぱり休めてませんが、皆様いかがお過ごしでしょうか。

まあ休めていない理由の一つに、今月のABC 2016までに公開しようと目論んでるアプリの進捗が思わしくないことがあるんですけど。
あと二週間だよ。基本的な機能もまだ実装できてないよママン。

で、今日も空き時間を見つけてカリカリとコードを書いてました。
・・・やっぱCamera2難しいわ。
いや、「難しそう」と最初に先入観持ってしまったから、余計そう思うのかもしれませんが。

だってサンプル少ないんだもん。

カメラで撮影して、画像にOpenStreetMapの地図を合成して、ApacheのCommons Imagingを使ってEXIF情報をのっけたまではできたんですが。
肝心な位置情報がどうしても保存できない・・・。
GPSからはきちんと位置情報取れてるのになー。

・・・位置情報だけはExifInterface使わないとダメなのかな?
と思って、嫌々(理由はこちら)試してみるも、玉砕。

まあそんなわきゃねえか。

ここまでで既に一時間。コードを書いちゃ消し・・・はせずに「もったいないから」とコメントアウト。過ぎ去っていく時間に比例して増えていくコメント行。ああ。

でも、ふと、ぶれいくするーは訪れるもので。
「そもそも、位置情報を保存するようにカメラに言わなきゃだめなんじゃね?」

・・・あったあった。
CaptureRequest」に、「JPEG_GPS_LOCATION」ってのがしっかりと・・・。

こんな感じで。前後ちょっとはしょりますが。

Location crrLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
...
final CaptureRequest.Builder captureBuilder =
     mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE);
...
captureBuilder.set(CaptureRequest.JPEG_GPS_LOCATION, crrLocation);

これだけ。この最後の一行だけ。
この一行追加しただけで、あっさりと位置情報保存してくれた。
一時間半経過して、ようやくガッツポーズ。周囲に人いなくてよかった。

・・・何もカメラに要求しないでも、GPSさえ有効にしておけば、カメラちゃんの方で勝手に位置情報をメタデータに保存してくれる、って私が思い込んでたんですよねー。

Camera2ではいちいちきちんと要求しないといけない、ということなのかしら。

まあ、Commons Imagingの使い方を疑ったりExifInterfaceに擦り寄ったり、そういう回り道したからこそ、CaptureRequestしないとダメなんでは?と着想したわけで、何つーの?急がば回れ、的な・・・

・・・いや、最初からドキュメント読んどきゃええねん・・・ orz

あともうちょっと。頑張ろう。