Iosched読書会向け資料

2,553 views
2,397 views

Published on

Published in: Technology, News & Politics
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,553
On SlideShare
0
From Embeds
0
Number of Embeds
41
Actions
Shares
0
Downloads
23
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

Iosched読書会向け資料

  1. 1. iosched読書会 T.K at 頓智・会議室
  2. 2. 機能概要 • Google I/O 2011 スケジュール閲覧 • セッションの詳細とスピーカー情報の閲覧 • セッションとサンドボックスの評価 • リアルタイムの buzz 情報の閲覧 • カンファレンス地図を利用したガイド • Catch を利用したノート作成・管理
  3. 3. アプリ画面 phoneのみ tablet未所持なもので・・・
  4. 4. Top , search
  5. 5. Schedule
  6. 6. Map
  7. 7. Sessions
  8. 8. Starred
  9. 9. Sandbox
  10. 10. Blletin
  11. 11. Realtime Stream
  12. 12. 初見の雑感 • 素直によくできている – tabletも使ってみたかったが、emulator は立ち上 げる気が起きず・・・ • オプションメニューで機能を提供していない – iOS 向けに同じアプリを提供したいから? – ActionBarがあるから? • ActionBar が機能ごとに微妙に異なる機能を 提供 – どこからでも Home に戻れる機能を提供
  13. 13. 中身をざっとみた雑感 • Honycombで Activity + Fragment のアプリを作ったことが ないため、違和感あり – 3.0以上では、Activity+Fragment – 2.3以下では、FragmentActivity + Fragment • 互換ライブラリの準備が必要 • iosched のビルドにも必要 – 1画面 1Activity に慣れているAndroid開発者はつらそう – tabletの1Activity 複数Fragmentからみたほうがよかったかも • 端末がないからイメージできず・・・ • これをベースに他のイベント向けスケジュールアプリ作るの は、意外と時間がかかりそう – phone向けのみで Fragment 利用無し版があればいいのに・・・ – でも、CEATECなどでは両対応のものを提供してもらいたい
  14. 14. Buildするのに思ったより 時間が・・・・orz
  15. 15. 技術詳細
  16. 16. AndroidManifest.xml(1/?) <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.google.android.apps.iosched" android:versionCode="16" android:versionName="0.16" android:installLocation="auto"> <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="11" /> <permission android:name="com.google.android.apps.iosched.permission.WRITE_SCHEDULE" android:protectionLevel="normal" android:label="@string/permission_write" android:description="@string/permission_write" /> 2.1 eclair 3.0 honycomb
  17. 17. AndroidManifest.xml(2/?) <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.USE_CREDENTIALS" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <application android:label="@string/app_name" android:icon="@drawable/ic_launcher" android:logo="@drawable/title_logo" android:theme="@style/Theme.IOSched" android:hardwareAccelerated="true">
  18. 18. AndroidManifest.xml <application> android:logo
  19. 19. AndroidManifest.xml(3/?) <!-- Used for install referrer tracking --> <receiver android:name="com.google.android.apps.analytics.AnalyticsReceiver" android:exported="true"> <intent-filter> <action android:name="com.android.vending.INSTALL_REFERRER" /> </intent-filter> </receiver> <!-- Other manifest items --> <meta-data android:name="android.app.default_searchable" android:value=".ui.SearchActivity" /> <service android:name=".service.SyncService" /> <provider android:name=".provider.ScheduleProvider" android:authorities="com.google.android.apps.iosched" android:writePermission="com.google.android.apps.iosched.permission.WRITE_SCHEDULE" /> Google Analytics向け インストール数計算?
  20. 20. .service.SyncService • com.google.android.apps.iosched.service – SyncService.java • 機能 – BackGround で動作 – 最新情報をデータベース(ScheduleProvider)に同期 • 備考 – アプリ起動時に起動 • HomeActivity:102line:startService(intent) – xmlフォルダ内から各種情報を取得(オフライン対応) • blocks, rooms, tracks, search_suggest, sessions – ネットワーク上から最新情報取得も可能
  21. 21. Activity 一覧 • Common Activity – .ui.HomeActivity – .ui.BulletinActivity – .ui.TagStreamActivity – .ui.StarredActivity – .ui.SearchActivity • For Phone – .ui.phone.ScheduleActivity – .ui.phone.TracksActivity – .ui.phone.SessionsActivity – .ui.phone.SessionDetailActivity – .ui.phone.VendorsActivity – .ui.phone.VendorDetailActivity – .ui.phone.MapActivity • For Tablet – .ui.tablet.SessionsMultiPaneActivity – .ui.tablet.VendorsMultiPaneActivity – .ui.tablet.ScheduleMultiPaneActivity – .ui.tablet.MapMultiPaneActivity – .ui.tablet.NowPlayingMultiPaneActivity
  22. 22. Activity 一覧 • Common Activity – .ui.HomeActivity • intent-filter – android.intent.action.MAIN – android.intent.category.LAUNCHER – .ui.BulletinActivity – .ui.TagStreamActivity – .ui.StarredActivity – .ui.SearchActivity • android:launchMode="singleTop“ • intent-filter – android.intent.action.SEARCH – android.intent.category.DEFAULT • <meta-data android:name="android.app.searchable" android:resource="@xml/searchable" />
  23. 23. Activity 一覧 • For Phone – .ui.phone.ScheduleActivity – .ui.phone.TracksActivity – .ui.phone.SessionsActivity – .ui.phone.SessionDetailActivity – .ui.phone.VendorsActivity – .ui.phone.VendorDetailActivity – .ui.phone.MapActivity
  24. 24. Common Activity系クラス図 .ui.*(AndroidManifestベース) Base Activity Home Activity Fragment Activity BaseSinglePane Activity Bulletin Activity BaseMultiPane Activity Starred Activity Search Activity TagStream Activity
  25. 25. phone Activity系クラス図 .ui.phohe.* (AndroidManifestベース) Base Activity Fragment Activity BaseSinglePane Activity Schedule Activity Tracks Activity SessionDetail Activity Vendors Activity Sessions Activity VendorDetail Activity Map Activity
  26. 26. ui.Phone Activity
  27. 27. tablet Activity系クラス図 .ui.tablet.*(AndroidManifestベース)Base Activity Fragment Activity BaseMultiPane Activity ScheduleMultiPane Activity SessionsMultiPane Activity NowPlaying MultiPane Activity VendorsMultiPane Activity MapMultiPane Activity FragmentManager. OnBackStackChangedListener View. OnClickListener
  28. 28. .ui.HomeActivity • トップページで、phone と tablet で異なるレイアウト – Phone • ダッシュボード(DashboardFragment) – tablet • ダッシュボード(DashboardFragment) • Stream(TagStreamFragment) • Layout – activity_home.xml • [include] actionbar.xml – [include] colorstrip.xml • [fragment] DashboradFragment – layout/fragment_dashboard.xml • [fragment] WhatsOnFragment – layout/fragment_whats_on • 疑問 – Actionbarのデザインや機能は誰が設定しているか? • *Fragment の中で Honycomb かどうかを判断して、View を構築し、onCreateView()の返 り値として、そのview として返すことによって画面を作成
  29. 29. DashboardFragment • layout – R.layout.fragment_dashboard • .ui.widget.DashboardLayout – 子Viewとして、ダッシュボードの各ボタンを保持 – 子Viewをグリッドのように表示し、縦、横の空白を同じにするカスタ ムレイアウト • view を構築して、onCreateView() の返り値で返す – 各ボタンへのクリック処理を追加 – この View が HomeActivity の<fragment>に展開される
  30. 30. WhatsOnFragment • layout – R.layout.fragment_whats_on • <LinearLayout>のみ horizontal • 第1要素 – 3パターンの文言表示 • Google IO 開催前 – R.layout.whats_on_countdown – カウントダウンタイマー – 残り時間、日数を表示 • 開催中 – R.layout.whats_on_now_playing – Now Playing(リンク設定) » Honycombの場合:NowPlayingMultiPaneActivity へのリンク » phoneの場合:現在開催中のScheduleContract へのリンク • 開催後 – R.layout.whats_on_thank_you » @string/whats_on_thank_you_title » you next year! • 参考情報 – UIUtils » public static final long CONFERENCE_START_MILLIS = ParserUtils.parseTime("2011-05-10T09:00:00.000- 07:00"); » public static final long CONFERENCE_END_MILLIS = ParserUtils.parseTime("2011-05-11T17:30:00.000-07:00"); • 第2要素 – phoneのみ • R.layout.whats_on_stream – 文言:Realtime¥nStream – TagStreamActivity へのリンク 第1 第2
  31. 31. Fragment系クラス • Fragment の派生クラス – .ui • BulletinFragment • DashboardFragment • MapFragment • ScheduleFragment • SessionDetailFragment • SessionsFragment • TagStreamFragment • TracksFragment • VendorDetailFragment • VendorsFragment • WhatsOnFragment – .ui.tablet • TracksDropdownFragment
  32. 32. Fragment系 クラス図 Fragment .tablet. TracksDropdown Fragment NotifyingAsyncQueryHandler. AsyncQueryListener AdapterView. OnItemClickListener PopupWindow. OnDismissListener Bulletin Fragment Dashboard Fragment Map Fragment Schedule Fragment SessionDetail Fragment Sessions Fragment TagStream Fragment Tracks Fragment VendorDetail Fragment Vendors Fragment WhatsOn Fragment View. OnClickListener ObservableScrollView. OnScrollListener CompoundButton. OnCheckedChangeListener
  33. 33. というところで、力尽きました・・・

×