• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content

Loading…

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

Like this presentation? Why not share!

Iosched読書会向け資料

on

  • 2,449 views

 

Statistics

Views

Total Views
2,449
Views on SlideShare
2,425
Embed Views
24

Actions

Likes
6
Downloads
21
Comments
0

4 Embeds 24

http://paper.li 20
http://b.hatena.ne.jp 2
http://a0.twimg.com 1
http://us-w1.rockmelt.com 1

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Iosched読書会向け資料 Iosched読書会向け資料 Presentation Transcript

    • iosched読書会 T.K at 頓智・会議室
    • 機能概要• Google I/O 2011 スケジュール閲覧• セッションの詳細とスピーカー情報の閲覧• セッションとサンドボックスの評価• リアルタイムの buzz 情報の閲覧• カンファレンス地図を利用したガイド• Catch を利用したノート作成・管理
    • アプリ画面 phoneのみ tablet未所持なもので・・・
    • Top , search
    • Schedule
    • Map
    • Sessions
    • Starred
    • Sandbox
    • Blletin
    • Realtime Stream
    • 初見の雑感• 素直によくできている – tabletも使ってみたかったが、emulator は立ち上 げる気が起きず・・・• オプションメニューで機能を提供していない – iOS 向けに同じアプリを提供したいから? – ActionBarがあるから?• ActionBar が機能ごとに微妙に異なる機能を 提供 – どこからでも Home に戻れる機能を提供
    • 中身をざっとみた雑感• Honycombで Activity + Fragment のアプリを作ったことが ないため、違和感あり – 3.0以上では、Activity+Fragment – 2.3以下では、FragmentActivity + Fragment • 互換ライブラリの準備が必要 • iosched のビルドにも必要 – 1画面 1Activity に慣れているAndroid開発者はつらそう – tabletの1Activity 複数Fragmentからみたほうがよかったかも • 端末がないからイメージできず・・・• これをベースに他のイベント向けスケジュールアプリ作るの は、意外と時間がかかりそう – phone向けのみで Fragment 利用無し版があればいいのに・・・ – でも、CEATECなどでは両対応のものを提供してもらいたい
    • Buildするのに思ったより 時間が・・・・orz
    • 技術詳細
    • AndroidManifest.xml(1/?)<manifestxmlns:android="http://schemas.android.com/apk/res/android"package="com.google.android.apps.iosched" android:versionCode="16" android:versionName="0.16" 2.1 eclair android:installLocation="auto"><uses-sdk android:minSdkVersion="7" android:targetSdkVersion="11" /> 3.0 honycomb <permission android:name="com.google.android.apps.iosched.permission.WRITE_SCHEDULE" android:protectionLevel="normal" android:label="@string/permission_write" android:description="@string/permission_write" />
    • 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">
    • AndroidManifest.xml <application> android:logo
    • AndroidManifest.xml(3/?) Google Analytics向け<!-- 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" />
    • .service.SyncService• com.google.android.apps.iosched.service – SyncService.java• 機能 – BackGround で動作 – 最新情報をデータベース(ScheduleProvider)に同期• 備考 – アプリ起動時に起動 • HomeActivity:102line:startService(intent) – xmlフォルダ内から各種情報を取得(オフライン対応) • blocks, rooms, tracks, search_suggest, sessions – ネットワーク上から最新情報取得も可能
    • 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
    • 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" />
    • Activity 一覧• For Phone – .ui.phone.ScheduleActivity – .ui.phone.TracksActivity – .ui.phone.SessionsActivity – .ui.phone.SessionDetailActivity – .ui.phone.VendorsActivity – .ui.phone.VendorDetailActivity – .ui.phone.MapActivity
    • Common Activity系クラス図Fragment .ui.*(AndroidManifestベース) Activity Base Activity BaseMultiPane Activity BaseSinglePane Activity Home TagStream Search Activity Activity Activity Bulletin Starred Activity Activity
    • phone Activity系クラス図 Fragment .ui.phohe.* (AndroidManifestベース) Activity Base Activity BaseSinglePane ActivitySchedule Sessions Vendors Map Activity Activity Activity Activity Tracks SessionDetail VendorDetail Activity Activity Activity
    • ui.Phone Activity
    • Fragment Activity tablet Activity系クラス図 Base .ui.tablet.*(AndroidManifestベース) Activity BaseMultiPane View. FragmentManager. Activity OnClickListener OnBackStackChangedListener MapMultiPane ScheduleMultiPane Activity ActivityVendorsMultiPane NowPlaying Activity MultiPane Activity SessionsMultiPane Activity
    • .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 として返すことによって画面を作成
    • DashboardFragment• layout – R.layout.fragment_dashboard • .ui.widget.DashboardLayout – 子Viewとして、ダッシュボードの各ボタンを保持 – 子Viewをグリッドのように表示し、縦、横の空白を同じにするカスタ ムレイアウト• view を構築して、onCreateView() の返り値で返す – 各ボタンへのクリック処理を追加 – この View が HomeActivity の<fragment>に展開される
    • WhatsOnFragment• layout – R.layout.fragment_whats_on • <LinearLayout>のみ horizontal• 第1要素 – 3パターンの文言表示 • Google IO 開催前 – R.layout.whats_on_countdown – カウントダウンタイマー – 残り時間、日数を表示 第1 第2 • 開催中 – 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 へのリンク
    • Fragment系クラス• Fragment の派生クラス – .ui • BulletinFragment • DashboardFragment • MapFragment • ScheduleFragment • SessionDetailFragment • SessionsFragment • TagStreamFragment • TracksFragment • VendorDetailFragment • VendorsFragment • WhatsOnFragment – .ui.tablet • TracksDropdownFragment
    • Fragment Fragment系 クラス図 Schedule Fragment View. OnClickListener Bulletin SessionDetailFragment Fragment ObservableScrollView.Dashboard VendorDetail OnScrollListenerFragment Fragment Map CompoundButton.Fragment Sessions OnCheckedChangeListener FragmentTagStream NotifyingAsyncQueryHandler. Fragment Tracks AsyncQueryListener FragmentWhatsOnFragment Vendors AdapterView. Fragment OnItemClickListener .tablet. TracksDropdown PopupWindow. Fragment OnDismissListener
    • というところで、力尽きました・・・