Your SlideShare is downloading. ×
Iosched読書会向け資料
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Iosched読書会向け資料

2,229

Published on

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

No Downloads
Views
Total Views
2,229
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
21
Comments
0
Likes
5
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. iosched読書会 T.K at 頓智・会議室
  • 2. 機能概要 • Google I/O 2011 スケジュール閲覧 • セッションの詳細とスピーカー情報の閲覧 • セッションとサンドボックスの評価 • リアルタイムの buzz 情報の閲覧 • カンファレンス地図を利用したガイド • Catch を利用したノート作成・管理
  • 3. アプリ画面 phoneのみ tablet未所持なもので・・・
  • 4. Top , search
  • 5. Schedule
  • 6. Map
  • 7. Sessions
  • 8. Starred
  • 9. Sandbox
  • 10. Blletin
  • 11. Realtime Stream
  • 12. 初見の雑感 • 素直によくできている – tabletも使ってみたかったが、emulator は立ち上 げる気が起きず・・・ • オプションメニューで機能を提供していない – iOS 向けに同じアプリを提供したいから? – ActionBarがあるから? • ActionBar が機能ごとに微妙に異なる機能を 提供 – どこからでも Home に戻れる機能を提供
  • 13. 中身をざっとみた雑感 • Honycombで Activity + Fragment のアプリを作ったことが ないため、違和感あり – 3.0以上では、Activity+Fragment – 2.3以下では、FragmentActivity + Fragment • 互換ライブラリの準備が必要 • iosched のビルドにも必要 – 1画面 1Activity に慣れているAndroid開発者はつらそう – tabletの1Activity 複数Fragmentからみたほうがよかったかも • 端末がないからイメージできず・・・ • これをベースに他のイベント向けスケジュールアプリ作るの は、意外と時間がかかりそう – phone向けのみで Fragment 利用無し版があればいいのに・・・ – でも、CEATECなどでは両対応のものを提供してもらいたい
  • 14. Buildするのに思ったより 時間が・・・・orz
  • 15. 技術詳細
  • 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. 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. AndroidManifest.xml <application> android:logo
  • 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. .service.SyncService • com.google.android.apps.iosched.service – SyncService.java • 機能 – BackGround で動作 – 最新情報をデータベース(ScheduleProvider)に同期 • 備考 – アプリ起動時に起動 • HomeActivity:102line:startService(intent) – xmlフォルダ内から各種情報を取得(オフライン対応) • blocks, rooms, tracks, search_suggest, sessions – ネットワーク上から最新情報取得も可能
  • 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. 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. 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. Common Activity系クラス図 .ui.*(AndroidManifestベース) Base Activity Home Activity Fragment Activity BaseSinglePane Activity Bulletin Activity BaseMultiPane Activity Starred Activity Search Activity TagStream Activity
  • 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. ui.Phone Activity
  • 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. .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. DashboardFragment • layout – R.layout.fragment_dashboard • .ui.widget.DashboardLayout – 子Viewとして、ダッシュボードの各ボタンを保持 – 子Viewをグリッドのように表示し、縦、横の空白を同じにするカスタ ムレイアウト • view を構築して、onCreateView() の返り値で返す – 各ボタンへのクリック処理を追加 – この View が HomeActivity の<fragment>に展開される
  • 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. Fragment系クラス • Fragment の派生クラス – .ui • BulletinFragment • DashboardFragment • MapFragment • ScheduleFragment • SessionDetailFragment • SessionsFragment • TagStreamFragment • TracksFragment • VendorDetailFragment • VendorsFragment • WhatsOnFragment – .ui.tablet • TracksDropdownFragment
  • 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. というところで、力尽きました・・・

×