More Related Content
Similar to スマートフォン勉強会@九州 (20)
More from Yutaka Tsumori (20)
スマートフォン勉強会@九州
- 2. こんにちは!
• tmyt/つもゆた っていいます。
• だいたい大学院生をやっています。
• WindowsMobileシリーズに一途です。
• Azureaとか作ってます。
• C++担当です。
• ARMのアセンブラは一般教養です!
- 5. WindowsPhone7でできなくなったこと
• タスクを並列して2個以上同時に実行すること
• ネイティブコードを実行すること
• 実行中にコードを書き換えること
• 変数に代入した機械語を実行すること
• 他人のプロセスをフックしていろいろすること
• ファイルシステムへアクセスすること
• システムDLLをP/Invokeしていろいろすること
• などなど。変態的なことは基本的にできません
- 6. 現時点でできないこと
• OSグローバルな日本語入力
• こぴぺ
• リアルタイムなカメラ映像の参照
• エミュレータ上でのLiveIDの設定
• エミュレータ上でのメールアカウントの設定
- 8. できるようになったこと
• 加速度センサへのアクセス
• DeepZoomの利用
• 4点以上のマルチタッチ
• Silverlightを使用したアプリケーション開発
• PushNotificationの利用
• 統合されたロケーション情報へのアクセス
- 9. 従来のWindowsMobileとの違い
• 外部の情報へのアクセスにTaskを使用
• 写真を撮るも開くも、アドレス帳から選択してくるのもみんな同じ
手順で利用可能に
• タスクが殺される前にコンテキストの保存をしないといけなく
なった
• 開発がSilverlightになったのでXAMLをいじらないといけなく
なった
• XNAが使えるようになった
• Silverlight+XNAのキメラもできます!
- 12. 開発する上での注意
• XAPは400MBまで
• マーケットプレイスを経由していないアプリケーションは10個まで
• UIスレッドをブロックするコードは書けません
• Unlockできる端末は3台まで
• Etc…
- 15. いろいろなものを開くTask
• アプリケーションからデータにアクセスする場合はTaskを経由しなけれ
ばなりません。
• Taskはこんなのが用意されています
• CameraCaptureTask
• EMailAddressChooserTask
• EmailComposseTask
• MarketplaceDetailTask
• MarketplaceSearchTask
• PhoneCallTask
• PhoneNumberChooserTask
• PhotoChooserTask
• SaveEmailAddressTask
• SavePhoneNumberTask
• SearchTask
• SmsComposeTask
• WebBrowserTask
- 17. CameraCaptureTask
• カメラを起動して画像を入力
• WMでいうところのCameraCaptureDialog
• C++だとSHCameraCapture
• 撮影した写真は保存されません
- 24. WMでのロケーション
• GPSのみ
• Intermidiate Driverが仮想化してくれていた
• 基地局測位は自分でがんばるしかない
• PHSだとCOM叩きますよね
• 3GだとRILのCE向けAPIを叩きます
• 叩いた後GoogleのAPIとかに投げると経度緯度に変換してくれたり
• いろいろ大変でした。
- 25. WP7でのロケーション
• とても楽になりました。
• .NET 4のロケーションAPIと互換
• つまりWindows7のロケーションAPIと互換
• GPSを扱えます
• 基地局測位もあつかえます
• Wifi測位も使えるかもしれません
• 全部まとめて1つのインターフェースで提供されます
• 位置検出デバイスを指定できないのがちょっと残念
- 26. コードで書くとこんな感じ
public partial class Location
{
GeoCoordinateWatcher geo;
public Location()
{
geo = new GeoCoordinateWatcher();
geo.PositionChanged += new
EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(geo_Po
sitionChanged);
}
void geo_PositionChanged(object sender,
GeoPositionChangedEventArgs<GeoCoordinate> e)
{
// いろいろ
}
}
- 28. DeepZoomって?
• Deep Zoom は、高解像度のイメージをインタラクティブに表示
できる機能です。アプリケーションのパフォーマンスに影響を及
ぼさずにすばやく、イメージをズームインしたりズームアウトしたり
できます。Deep Zoom では、複数解像度のイメージを用意し、
スプリング アニメーションを使用することによって、滑らかな読
み込みとパンを可能にしています。
• http://msdn.microsoft.com/ja-jp/library/cc645050(VS.95).aspx
• つまりGoogleMapのWebみたいなのをやるコントロールです
- 29. とりあえず使ってみる
• Deep Zoom Composerで画像を分割、XMLを生成
• VSのプロジェクトに追加
• MultiScaleImageコントロールを配置
• Sourceにxmlのパスを設定
• とりあえずこれだけ書けば使えます。
- 38. 日本人の最大の悩み
• そう、それは、日本語入力
• WMではATOKとかインストールしてましたね
• Windows Phone 7では日本での発売が未定なのもあるのかIME
は実装されていません
• 今後実装されるでしょう!
• でもいま日本語入力が使いたい!とおもうのはしかたないこと。
• 悲しくも僕たちはデベロッパなのでIMEを作るかという発想にいた
るわけです…
- 45. 便利な拡張があります
• Silverlight for Windows Phone 7 Toolkit(長い
• これを使うとあらゆる面倒なことが一瞬で片付きます
• たとえば…
• ピンチイン ピンチアウト
• 画面遷移のトランジション
• コンボボックスのようなもの
• などなど…
- 49. P/Invoke
• P/Invokeはできませんが無理すればできます。
• COMInteropという裏技があります。
• これをつかうとマーケットの認証が通りません。
• でもOSにネイティブコードでフルアクセスできます。
• Microsoft.InteropServices.dll が必要なので
XDA-Developers どこかでげっとしましょう
- 51. COM経由でのネイティブコード
• ネイティブコード呼び出しでレジストリやファイルシステムに直接
アクセスができます。
• これをすることでPhone7が.NET VMという檻に閉じ込められて
いたのがその外部に出ることができるのです。
• Phone7のハードウェアはQualcomm Snapdragon 1GHz以上ま
たはそれ相応のCPUという条件があります。
• つまりARMv7なのでAdvanced SIMD拡張が利用できるわけで
す。
• すこしわくわくしますよね
- 52. ARMv7でどきどきする
• Advanced SIMD 拡張だと
Add128_32
; load first operand
vldr.64 d0, [r0]
vldr.64 d1, [r0, #8]
; load second operand
vldr.64 d2, [r1]
vldr.64 d3, [r1, #8]
; Add operands
vqadd.s16 q0, q0, q1
; save result
vqneg.s16 q0, q0
veor q0, q0
vstr.64 d0, [r2]
vstr.64 d1, [r2, #8]
; return
mov pc, lr
- 59. iPhone電話じゃない
• パケット通信無効にしてます
• 全部Docomoのモバイルルータ経由
• たまにしか発信しない
• メールアドレス誰にも教えてない
• 電話帳はExchange
• ただの情報への出入り口