読者です 読者をやめる 読者になる 読者になる

はつねの日記

Kinect, Windows 10 UWP, Windows Azure, IoT, 電子工作

Xamarinで始めるAndroidアプリ作成(その3)

Xamarin Mobile VisualStudio

Xamarin.FormsがサポートしているAndroidのバージョンをおさらいしてみましょう。

https://developer.xamarin.com/guides/xamarin-forms/getting-started/installation/#android

 

公式ドキュメントによれば

Android 4.0.3、つまり、「Ice Creame Sandwitch」以降をサポートしています。4.0.3は2011年12月16日に提供開始されています。

4.0.3以降ということであれば、世の中にあるAndroidデバイスのほぼ100%(残念ながらそれ以前のバージョンも多少は存在する)をカバーできます。

日本でいえば、ドコモのGalaxy SII SC-02Cなどが4.0.3ですが、2016年時点でキャリア2年縛りはすでに超えていますから、ほぼカバーしていると言っていいでしょう。

 

ただし、素直に4.0.3かといえば、若干違和感があります。

その違和感はXamarin.FormsとXamarin.Android.SupportとAndroid SDKの関係を表にしてみるとはっきりしています。

  Xamarin.Forms Xamarin.Android.Support Android SDK
プロジェクト作成時 v1.3.3.6323 v4.21.0.3 4.0.3 (API1 5)
nuget最新 v2.2.0.31 v4.23.3.0 5.0 (API 21)

このように最新のXamarin.Forms v2.2が要求するXamarin.Android.Supportはv4.23.3.0であり、v4.23.3.0が要求するAndroid SDKは5.0になるのです。

 

それではなぜ、公式ドキュメントには「4.0.3」以上となっているのでしょうか。

答えは同様に公式ドキュメントにあります。

Target

Mini

つまり、ターゲットは最新(または少なくともXamarin.Android.Support.v4.23.3.0が要求する5.0以上)として、Minimum Android versionとして「4.0.3」を指定できることが、Xamarin.Formsの要求仕様がAndroid v4.0.3以上という意味だということです。

 

Visual Studioならプロジェクトのプロパティの[Application]-[Application properties]

 

違和感の原因は、4.0.3以上ということで、では自分たちの作ったアプリも4.0.3以上としようとしたときにターゲットフレームワークを「4.0.3」ではなく「5.0」としてMinimum Android versionで「4.0.3」としていいのかという点にあります。Visual StudioならTarget frameworkが「Complie using Android version」となっているのでさらに不安を感じます。

 

これらのバージョンはどのような意味があるのでしょうか。

注意しないといけないのは、これは、Xamarin固有の話ではなく、Android開発の基本的な話となります。Android StudioJavaで作成したときもbuild.grableに同じように描くことになります。

結論を先に書けばWindowsアプリに比べたらかなりおおざっぱというか、これでいいの?という感じがAndroidアプリ開発なんだなぁと。

Target framework
(targetSdkVersion)
 
Minimum Android version
(minSdkVersion)
指定したバージョン以上にインストールできる宣言

 

これ、トラディショナルジャパニーズカンパニーで開発やっていると、Target framework = Minimum Android versionとして、アプリの動作要件の○○以上とする一番古いバージョンに合わせてコンパイルして、それより上位のOSでも下位互換性確認の意味で動作チェックしてって感覚だと思うのです。

Target frameworkは最新にして、Minimum Android versionにアプリ動作要件の○○以上とするというのがAndroidスタイルだって納得して、きちんとシステムテストで4.0.3 (Ice Cream Sandwich)/4.3 (Jelly bean)/4.4 (KitKat)/5.1 (Lollipop)/6.0 (Marshmallow)とテストするしかないのでしょう。このあたり、Androidで業務アプリを作っていたり、それよりもGoogle Playで人気アプリ配信している個人開発者さんあたりにお話をお聞きしたいですね。ほんと、どうしていらっしゃるのだろうか。

 

まあ、そんなときに心強い味方と言ったら、Xamarin Test Cloudですよね。

例えば、月額249$のBUILDなら、こんな感じにテストができます。

  1. 同時に2つまでデバイスを選んでテスト可能 (2 concurrent devices)
  2. トータル10分かかるテストならば、2多重x10分で合計3時間(3 device hours/day)=毎日90分のテスト時間で18デバイスのテストが可能

 

4.0.3 (Ice Cream Sandwich)/4.3 (Jelly bean)/4.4 (KitKat)/5.1 (Lollipop)/6.0 (Marshmallow)の5バージョンでそれぞれ代表的なデバイスを1つづつテストするのであれば、もう一つ安いSTARTプラン=月額$99でもテストできそうですね。

  1. 同時に1つまでデバイスを選んでテスト可能 (1 concurrent devices)
  2. トータル10分かかるテストならば、1多重x10分で合計1時間(1 device hours/day)=毎日60分のテスト時間で6デバイスまでテスト可能

1日1回しかテストできないの?と思うかもしれませんが、手元の実機やエミュレータでテストしたあとの仕上げテストですから、毎日1回とかで十分と言えるでしょう。

 

そうそう、Visual Studio Enterpirse使っているなら上記の金額から25%引きで利用できますので、さらにお得ですね。

UWPカメラアプリをHoloLensで動作させる

HoloLens Hardware Windows10

HoloLensにはセンサー以外にカメラもついています。

HoloLens標準アプリで写真撮影やビデオ撮影もできますが、UWPアプリとしてカメラを使うアプリを作れば、そのアプリでもカメラ映像を扱えます。

image

Device Portalでその時の様子をCaptureすると視野の中のHolographic領域がそのままカメラアプリにプレビュー表示されているのがわかると思います。

HoloLensを使ったカメラアプリで注意しないといけないのは、上のスナップショットにあるように撮影ボタンや録画ボタンを画面端に配置しちゃうことです。

こうしちゃうとボタンにフォーカスを合わせるために顔の向きをボタン側によせるため、被写体から中心がずれてしまうからです。

要は画面中央、もしくは、画面全体に対するタップ(操作ミスを考えるとホールドがよいかも)で撮影ができるようにUIを工夫する点でしょう。

そこだけが一般のカメラ機能を使用するUWPアプリよりも注意しないといけない点でしょう。

なお、HoloLensで動作しているかどうかを判定する方法はいろいろあると思いますが、例えば

Windows.System.Profile.AnalyticsInfo.VersionInfo.DeviceFamily == “Windows.Holographic”

で判定するのも判定方法の1つでしょう。

 

なお、カメラ機能を使ったアプリとDevice Portalの組み合わせで注意しないといけないのは、DevicePortalでLive映像やビデオ録画はできますが撮影には失敗するという点です。

HoloLens空間に置いたHolographicオブジェクトがその場に居続けてくれるという意味

HoloLens Windows10 Hardware

HoloLensはウィンドについては壁に貼り付けた感じに配置してくれますが、もちろん何もない空間に配置することもできます。

ただ、ウィンドウは板状なので何もない空間においてもあまりおもしろくありません。

そこで、3Dオブジェクトを空間において、そのあとで装着者が移動したり頭の向きを変えた時にどのようにみえるかを確認した動画を撮影しました。


HoloLensで見る方向を変えたり体の位置を変えた時の表示

天井ちかく近くにオブジェクトを張り付けておいて、立ち上がるとちゃんと見え方が替りのがわかると思います。

 

HoloLensはじめました

HoloLens Windows10 Hardware

HoloLensが連休中日に届いたんで早速起動しました。

コルタナちゃんに教わりながらキャリブレーションしたら、さっそくDevice PortalでつないでHoloLensの世界を手元のPCで表示してみましょう。

 

イベント会場やおしゃれ空間での動作画面は多いですが、日本の普通のマンションで外光が入っているところでもこんな感じに表示できます。

image

 

HoloLensでみるともうちょっと鮮明で見た目大きくなるので文字を読むこともできます。

これ、壁の角度をセンシングしてペタって張り付いているので、壁の真正面から見れば、張り付いているウィンドウもちゃんと真正面から見ることができます。

 

Device Portalどっかでみたなーって思ったら、Windwos 10 IoTのDevice Portalと同じコンセプトのデザインなんですね。

オープンセミナー岡山2016に登壇します

Windows10Mobile

oso-web.doorkeeper.jp

2016/05/14 (土)に開催されるオープンセミナー2016@岡山に登壇します。

今回お話しするのは
UWPアプリによるマルチデバイス開発最新事情

というタイトルで

UWPアプリって実際はどうなのかbuild 2016やde:code 2016で発表された最新情報も交えて、実際のところを包み隠さずお伝えする予定です。

まだまだ、iOSAndroidに比べて情報の少ないUWPアプリですが、デバイスの価格という表面上のスペックだけではなく、サクサクと動く動作環境、作りやすい開発環境などは知らずにいたら損をすると思います。

ぜひ、この機会に理解を深めに来ていませんか?

 

HoloLens体験

Hardware Windows10

みつばたんが入手したHoloLensを体験させてもらいました。

P4290370

 

HoloLensは現実空間の中にホログラフ設置、設置したホログラフはその場所を維持しているので例えば回り込んだり上からのぞき込んだり下からのぞき込んだりできるすぐれものなウェラブルデバイスです。

P4290372

 

なぜそんなことができるのかといえば、空間をスキャンしてメッシュ状の網で再構築して、それを使ってオブジェクトの位置やあたり判定をしているからです。

無理やりHoloLensの中にカメラを差し込んで撮影してみました。

image

後ろの椅子よりも前に位置しているUnityちゃんでちゃんと後ろの椅子が隠れているのがわかると思います。

 

このUnityちゃんの位置はこちらが動いても変わらず(つまり床の同じポイントにいる)、自分が移動すれば椅子とUnityちゃんの間の位置からUnityちゃんの後ろ姿を見ることができるのです。

本当に鮮明で、移動中の画像処理も遅延なく位置の変化に追従するし、なんだか今までのものとは全然違う別世界外が広がっていました。

 

これって、ARという言葉の説明を聞いて思い描いていた姿そのままだと思うのです。

なのでAR未経験の人だと想像通り過ぎてしまって「なにがすごいの?」って思われてしまう危険性すらあるくらいいい感じでした。

AR経験者ならば「ついにここまでできるようになったんだー」とうぉぉぅってなると思います。

スタートメニューからアンインストールできない

Windows10

image

これ、どうやってアンインストールしたらいいだろう