Slide 1

Slide 1 text

ʮ΋͔ͯ͠͠…ʯ ʮԶͨͪ…ʯ ʮʮશવରԠ͞Εͯͳ͍ʙʙʂʂʁʁʯʯ DroidKaigi 2017 (3/10 14:20~ @Room 3)

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

ࣗݾ঺հ Masaki Ogata CyberAgent, Inc. / AbemaTV, Inc. ogaclejapan @ogaclejapan New

Slide 4

Slide 4 text

2017೥4݄11೔ൃച
 ( ͍ͨͩ·༧໿ड෇த ) ࢁށໜथɼࡔాߊҰɼࠇ઒༸ɼ౻ా ୖຏɼࢁాߤɼాࡔ࿨ெɼ۽୩஌ࢠɼ ৿ຊརതɼࡔຊ࿨େɼখܗণथɼླ ໦େوɼࢤำါلɹஶ B5൑ʗ192ϖʔδ ఆՁʢຊମ1,980ԁʴ੫ʣ ISBN 978-4-7741-8863-8 https://goo.gl/Jcy3lJ New

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

ࠓ೔ͷΰʔϧ

Slide 7

Slide 7 text

ࠓ೔ͷΰʔϧ

Slide 8

Slide 8 text

ΞδΣϯμ ֓ཁ ։ൃ ެ։ • Android TVͱ͸ • Fire TVͱ͸ • σβΠϯͱUXΨΠυϥΠϯ

Slide 9

Slide 9 text

ΞδΣϯμ ֓ཁ ։ൃ ެ։ • جຊʢπʔϧɺϓϩδΣΫτɺetc..ʣ • Leanback Support Libraryೖ໳ • Fire TVͰߟྀ͢Δ΂͖͜ͱ

Slide 10

Slide 10 text

ΞδΣϯμ ֓ཁ ։ൃ ެ։ • Android TV޲͚ʹΞϓϦΛ഑෍ • Fire TV޲͚ʹΞϓϦΛ഑෍

Slide 11

Slide 11 text

֓ཁ • Android TVͱ͸ • Fire TVͱ͸ • σβΠϯͱUXΨΠυϥΠϯ

Slide 12

Slide 12 text

Android TVͱ͸ Google͕ࣾఏڙ͢ΔTV޲͚ϓϥοτϑΥʔϜ • Android 5.0 (Lollipop) ʙ 7.1.1 (Nougat) • Google Play StoreʹTV޲͚ΞϓϦΛެ։Մೳ
 (ॳճͷΈ৹ࠪ͋Γ) • ੡଄ϝʔΧʔଟ਺

Slide 13

Slide 13 text

Android TV - ओͳ౥ࡌσόΠε Nexus Player ʢGoogleʗASUSʣ BRAVIA ʢSONYʣ AQOUS ίίϩϏδϣϯ ʢSHARPઐ༻ʣ Life Stick ʢϨΦύϨεઐ༻ʣ Air Stick ʢCCCʣ 2015೥2݄ 2015೥10݄ʙ 2016೥6݄ 2016೥7݄ 2016೥12݄ OS: 7.1.1 Quad-core 1GB RAM 8GB Storage OS: 5.1.1 Dual-core *1
 1.5GB RAM *1
 8GB Storage *1 OS: 5.1 Dual-core *1 2.5GB RAM 16GB Storage - OS: 6.0
 Quad-core 1GB RAM 8GB Storage 13,824ԁ 100,000ԁ ʙ 13,380ԁ - 9,800ԁ *1: ະެදͷͨΊਪଌ

Slide 14

Slide 14 text

Android TV - ϗʔϜը໘

Slide 15

Slide 15 text

Android TV - ϗʔϜը໘

Slide 16

Slide 16 text

Android TV - ϗʔϜը໘ Voice Search

Slide 17

Slide 17 text

Android TV - ϗʔϜը໘ D-Pad

Slide 18

Slide 18 text

Android TV - ϗʔϜը໘ Select

Slide 19

Slide 19 text

Android TV - ϗʔϜը໘ Back

Slide 20

Slide 20 text

Android TV - ϗʔϜը໘ Play/Pause

Slide 21

Slide 21 text

Android TV - ϗʔϜը໘ Home

Slide 22

Slide 22 text

Android TV - ϗʔϜը໘ Focus

Slide 23

Slide 23 text

Android TV - ϗʔϜը໘ Focus

Slide 24

Slide 24 text

Android TV - ϗʔϜը໘ Focus

Slide 25

Slide 25 text

Android TV - ϗʔϜը໘ Global Search

Slide 26

Slide 26 text

Android TV - ϗʔϜը໘ Recommendation Row

Slide 27

Slide 27 text

Android TV - ϗʔϜը໘ Apps and games

Slide 28

Slide 28 text

Android TV - ϗʔϜը໘ Settings

Slide 29

Slide 29 text

֓ཁ • Android TVͱ͸ • Fire TVͱ͸ • σβΠϯͱUXΨΠυϥΠϯ

Slide 30

Slide 30 text

Fire TVͱ͸ Amazon͕ࣾఏڙ͢ΔTV޲͚ϓϥοτϑΥʔϜ • Fire OS 5 (Based on Android 5.1 - API 22) • Amazon App StoreʹTV޲͚ΞϓϦΛެ։Մೳ
 (Appleࣾͱಉ͘͡ϦϦʔε͝ͱʹ৹ࠪ͋Γ) • ࣗࣾσόΠεͷΈ

Slide 31

Slide 31 text

Fire TV - ओͳ౥ࡌσόΠε Fire TV Stick - Gen. 1 ʢAMAZONʣ Fire TV - Gen. 2 ʢAMAZONʣ Fire TV Stick - Gen. 2 ʢAMAZONʣ 2014೥11݄ 2015೥12݄ 2017೥4݄ Fire OS 5 Dual-core 1GB RAM *1 8GB Storage Fire OS 5 Quad-core 2GB RAM 8GB Storage Fire OS 5
 Quad-core 1GB RAM 8GB Storage 4,980ԁʗ6,480ԁ 11,980ԁ 4,980ԁ *1: 512MB system, 512MB video New

Slide 32

Slide 32 text

Fire TV - ϗʔϜը໘

Slide 33

Slide 33 text

Fire TV - ϗʔϜը໘

Slide 34

Slide 34 text

Fire TV - ϗʔϜը໘

Slide 35

Slide 35 text

Fire TV - ϗʔϜը໘

Slide 36

Slide 36 text

Fire TV - ϗʔϜը໘ Menu

Slide 37

Slide 37 text

Fire TV - ϗʔϜը໘ Rewind/Fast-forward

Slide 38

Slide 38 text

֓ཁ • Android TVͱ͸ • Fire TVͱ͸ • σβΠϯͱUXΨΠυϥΠϯ

Slide 39

Slide 39 text

σβΠϯͱUXΨΠυϥΠϯ • Designing for Android TV
 https://goo.gl/VWrKs7 • Android TV Design Guidelines
 https://goo.gl/Z7tSTj • Design and User Experience Guidelines
 for Fire TV
 https://goo.gl/ZYgf7D

Slide 40

Slide 40 text

։ൃ • جຊʢπʔϧɺϓϩδΣΫτɺetc..ʣ • Leanback Support Libraryೖ໳ • Fire TVͰߟྀ͢Δ΂͖͜ͱ

Slide 41

Slide 41 text

جຊ - ։ൃπʔϧͱSDK Android Studio + Android Emulator • SDK tools: 24.0.0 or higher • Minimum SDK: API 21 (Lollipop) or higher

Slide 42

Slide 42 text

جຊ - ։ൃπʔϧͱSDK ADB over Wi-Fi <—> TVσόΠεʢ࣮ػʣ adb connect :5555 • Using Android Debug Bridge for Android TV
 https://goo.gl/BpSmm0 • Connecting to Fire TV Through ADB
 https://goo.gl/tEsypE

Slide 43

Slide 43 text

جຊ - ϓϩδΣΫτઃఆ • 320 x 180 px (xhdpi) • ΞϓϦ໊Λόφʔը૾಺ʹؚΊΔඞཁ͕͋Δ TVΞϓϦ༻ͷόφʔը૾

Slide 44

Slide 44 text

جຊ - ϓϩδΣΫτઃఆ TVΞϓϦ༻ͷόφʔը૾ ...

Slide 45

Slide 45 text

جຊ - ϓϩδΣΫτઃఆ ... • Handle Unsupported Hardware Features
 https://goo.gl/u1UU4D

Slide 46

Slide 46 text

جຊ - ϓϩδΣΫτઃఆ

Slide 47

Slide 47 text

جຊ - ϓϩδΣΫτઃఆ ͕ɺɺFire TV͸Mobileͱಉ͡ɻ…

Slide 48

Slide 48 text

جຊ - ϓϩδΣΫτઃఆ Ͳ͏΍ͬͯϓϩδΣΫτΛ෼͚Δ΂͖ʁ

Slide 49

Slide 49 text

جຊ - ϓϩδΣΫτઃఆ Single APK Multiple APK Other APK Mobile TV app Google Play Store Amazon App Store app app

Slide 50

Slide 50 text

جຊ - ϓϩδΣΫτઃఆ Single APK Multiple APK Other APK Good :) • ιʔείʔυ͕ҰݩԽͰ͖Δ

Slide 51

Slide 51 text

جຊ - ϓϩδΣΫτઃఆ Single APK Multiple APK Other APK Bad :( • ͭͶʹશϓϥοτϑΥʔϜ͕ߋ৽ର৅ͱͳΔ • Manifest΍Ϧιʔεͷ؅ཧ͕ΧΦε • APKαΠζ͸΍΂ʙ੎͍Ͱ͛͢ʔ૿͑Δ⾭

Slide 52

Slide 52 text

جຊ - ϓϩδΣΫτઃఆ Single APK Multiple APK Other APK Mobile TV app Google Play Store Amazon App Store app app app

Slide 53

Slide 53 text

جຊ - ϓϩδΣΫτઃఆ Single APK Multiple APK Other APK Good :) • σόΠε͝ͱʹΞϓϦΛߋ৽Ͱ͖Δ • Manifest΍Ϧιʔεͷ؅ཧ͸ָνϯ • APKαΠζ͸σόΠε͝ͱʹ࠷దԽ

Slide 54

Slide 54 text

جຊ - ϓϩδΣΫτઃఆ Single APK Multiple APK Other APK Bad :( • APKΞοϓϩʔυ࣌ʹΦϖϛεͷةݥ͋Γ • ར༻Ͱ͖Δόʔδϣϯίʔυͷܻ͕ݮΔ

Slide 55

Slide 55 text

جຊ - ϓϩδΣΫτઃఆ Single APK Multiple APK Other APK • Multiple APK Support
 https://goo.gl/WuXcvN Mobile: v1.0.0(1) -> v1.0.1(2) -> v1.1.0(3) -> …
 TV : v1.0.0(1000001) -> v1.0.1(1000002) -> … όʔδϣϯίʔυͷྫʣ

Slide 56

Slide 56 text

جຊ - ϓϩδΣΫτઃఆ Single APK Multiple APK Other APK Mobile TV app Google Play Store Amazon App Store app2 app app2 app2

Slide 57

Slide 57 text

جຊ - ϓϩδΣΫτઃఆ Single APK Multiple APK Other APK Good :) • ʢMultiple APKͱಉ͡ʣ

Slide 58

Slide 58 text

جຊ - ϓϩδΣΫτઃఆ Single APK Multiple APK Other APK Bad :( • ϨϏϡʔ΍μ΢ϯϩʔυ਺ͳͲ͕ڞ༗͞Εͳ͍ • ύοέʔδΛ෼͚ͨ͜ͱʹΑΔ৭ʑͳฐ֐
 ʢΞϓϦ಺՝ۚͳͲʣ

Slide 59

Slide 59 text

جຊ - ϓϩδΣΫτઃఆ Multiple APK͕Αͦ͞͏

Slide 60

Slide 60 text

جຊ - Focusͷ੍ޚ Focus͍ͤͨ͞Viewʹ͸focusableଐੑΛઃఆ
 (ButtonͳͲҰ෦ͷViewͷΈσϑΥϧτͰtrue) ...

Slide 61

Slide 61 text

جຊ - Focusͷ੍ޚ ॳճදࣔͷFocusҐஔʹ͸requestFocusΛઃఆ

Slide 62

Slide 62 text

جຊ - Focusͷ੍ޚ FocusͷҠಈઌ͕ҙਤ͠ͳ͍ͱ͖͸໌ࣔతʹఆٛ
 (௨ৗ͸FocusFinderʹΑΓࣗಈతʹॲཧ͞ΕΔ)

Slide 63

Slide 63 text

جຊ - Focusͷ੍ޚ (RecyclerViewͷ৔߹) public View focusSearch(View focused, int direction) { View result = mLayout.onInterceptFocusSearch(...); if (result != null) { return result; } final FocusFinder ff = FocusFinder.getInstance(); result = ff.findNextFocus(this, focused, direction); if (...) { eatRequestLayout(); result = mLayout.onFocusSearchFailed(...); resumeRequestLayout(false); } return result != null ? result : super.focusSearch(...); }

Slide 64

Slide 64 text

جຊ - Focusͷ੍ޚ (RecyclerView + CustomLayoutManagerͷ৔߹) public View focusSearch(View focused, int direction) { View result = mLayout.onInterceptFocusSearch(...); if (result != null) { return result; } final FocusFinder ff = FocusFinder.getInstance(); result = ff.findNextFocus(this, focused, direction); if (...) { eatRequestLayout(); result = mLayout.onFocusSearchFailed(...); resumeRequestLayout(false); } return result != null ? result : super.focusSearch(...); }

Slide 65

Slide 65 text

جຊ - Input Eventͷ੍ޚ onTouchEventͱಉ͘͡ɺbool஋Λฦ͢ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { boolean handled = false; switch (keyCode) { case KeyEvent.KEYCODE_DPAD_DOWN: case KeyEvent.KEYCODE_DPAD_UP: ... handled = true; break; default: // no-op } return handled || super.onKeyDown(keyCode, event); }

Slide 66

Slide 66 text

جຊ - Input Eventͷ੍ޚ Button KeyEvent Voice Search - Select KEYCODE_DPAD_CENTER Left KEYCODE_DPAD_LEFT Up KEYCODE_DPAD_UP Right KEYCODE_DPAD_RIGHT Down KEYCODE_DPAD_DOWN Back KEYCODE_BACK Menu KEYCODE_MENU Home - Play/Pause KEYCODE_MEDIA_PLAY_PAUSE Rewind KEYCODE_MEDIA_REWIND Fast Forward KEYCODE_MEDIA_FAST_FORWARD

Slide 67

Slide 67 text

։ൃ • جຊʢπʔϧɺϓϩδΣΫτɺetc..ʣ • Leanback Support Libraryೖ໳ • Fire TVͰߟྀ͢Δ΂͖͜ͱ

Slide 68

Slide 68 text

Leanback Support Libraryͱ͸ Google͕ࣾެࣜʹఏڙ͢ΔϥΠϒϥϦͷ̍ͭͰɺ TVΞϓϦ޲͚ʹ࠷దͳUI΢ΟδΣοτͳͲΛఏڙ dependencies { ... compile "com.android.support:leanback-v17:25.2.0" } <item name="android:colorPrimary">...</item> <item name="android:colorPrimaryDark">...</item> <item name="android:colorAccent">...</item>

Slide 69

Slide 69 text

Leanback Support Libraryͷֶͼํ • googlesamples/leanback-showcase
 https://goo.gl/99nI2m • googlesamples/androidtv-Leanback
 https://goo.gl/3foS5q • android/platform_frameworks_support
 https://goo.gl/K90lXi GitHub্ͷެࣜαϯϓϧΞϓϦΛίϯύΠϧ͠ ͯಈ͔ͯ͠ΈΔͷ͕Ұ൪ͷۙಓ

Slide 70

Slide 70 text

BrowseFragment ίϯςϯπΛ୳ͨ͢ΊͷϝΠϯը໘

Slide 71

Slide 71 text

HeadersFragment RowsFragment BrowseFragment

Slide 72

Slide 72 text

BrowseFragment RowsFragment HeadersFragment(Hidden)

Slide 73

Slide 73 text

BrowseFragment RowsFragment HeadersFragment(Hidden) VerticalGridView

Slide 74

Slide 74 text

BrowseFragment RowsFragment HeadersFragment(Hidden) VerticalGridView HorizontalGridView

Slide 75

Slide 75 text

VerticalGridView / HorizontalGridView
 ͱRecyclerView͸Կ͕ҧ͏ͷʁ VerticalGridView gv = ...; gv.setNumColumns(1); gv.addItemDecoration(new ItemDecoration()); gv.setAdapter(new Adapter()); RecyclerView rv = ...; rv.setLayoutManager(new GridLayoutManager(this, 1)); rv.addItemDecoration(new ItemDecoration()); rv.setAdapter(new Adapter()); Leanback Support Library - Tips

Slide 76

Slide 76 text

VerticalGridView RecyclerView ্͔ΒԼ΁ॱ൪ʹFocusΛҠಈͤ͞Δ

Slide 77

Slide 77 text

VerticalGridView RecyclerView ্͔ΒԼ΁ॱ൪ʹFocusΛҠಈͤ͞Δ

Slide 78

Slide 78 text

VerticalGridView RecyclerView ্͔ΒԼ΁ॱ൪ʹFocusΛҠಈͤ͞Δ

Slide 79

Slide 79 text

VerticalGridView RecyclerView ্͔ΒԼ΁ॱ൪ʹFocusΛҠಈͤ͞Δ

Slide 80

Slide 80 text

VerticalGridView RecyclerView ্͔ΒԼ΁ॱ൪ʹFocusΛҠಈͤ͞Δ

Slide 81

Slide 81 text

VerticalGridView RecyclerView ্͔ΒԼ΁ॱ൪ʹFocusΛҠಈͤ͞Δ

Slide 82

Slide 82 text

VerticalGridView RecyclerView ্͔ΒԼ΁ॱ൪ʹFocusΛҠಈͤ͞Δ

Slide 83

Slide 83 text

VerticalGridView RecyclerView ্͔ΒԼ΁ॱ൪ʹFocusΛҠಈͤ͞Δ

Slide 84

Slide 84 text

VerticalGridView RecyclerView ্͔ΒԼ΁ॱ൪ʹFocusΛҠಈͤ͞Δ

Slide 85

Slide 85 text

VerticalGridView RecyclerView ্͔ΒԼ΁ॱ൪ʹFocusΛҠಈͤ͞Δ

Slide 86

Slide 86 text

VerticalGridView / HorizontalGridView ͸Focus͞ΕͨView͕ՄೳͳݶΓը໘ͷη ϯλʔʹදࣔ͞ΕΔ VerticalGridView RecyclerView ্͔ΒԼ΁ॱ൪ʹFocusΛҠಈͤ͞Δ

Slide 87

Slide 87 text

DetailsFragment ίϯςϯπͷ಺༰Λදࣔ͢Δৄࡉը໘

Slide 88

Slide 88 text

PlaybackOverlayFragment ίϯςϯπΛݟΔͨΊͷϝσΟΞίϯτϩʔϧը໘

Slide 89

Slide 89 text

Leanback Support Library - Tips PresenterʁͳʹͦΕʁඒຯ͍͠ͷʁ A Presenter is used to generate Views and bind Objects to them on demand. It is closely related to the concept of an RecyclerView.Adapter, but is not position-based. (from API Reference) View Presenter Object
 (Model)

Slide 90

Slide 90 text

Leanback Support Library - Tips PresenterʁͳʹͦΕʁඒຯ͍͠ͷʁ A Presenter is used to generate Views and bind Objects to them on demand. It is closely related to the concept of an RecyclerView.Adapter, but is not position-based. (from API Reference) View Presenter Object
 (Model) Model-View-Presenter (MVP)

Slide 91

Slide 91 text

Leanback Support Library - Tips PresenterʁͳʹͦΕʁඒຯ͍͠ͷʁ A Presenter is used to generate Views and bind Objects to them on demand. It is closely related to the concept of an RecyclerView.Adapter, but is not position-based. (from API Reference) View Presenter Object
 (Model) Model-View-Presenter (MVP)
 RecyclerView with multiple view types
 ΛAdapter͔Β෼཭࣮ͯ͠ݱ͢Δ࢓૊Έ

Slide 92

Slide 92 text

e.g. RecyclerView with multiple view types { "ranking_items":[ { "rank":1, "title":"foo", "image":"http://..." }, { "rank":2, "title":"bar", "image":"http://..." }, ... ] } Rank1 XXXXXXXXXXXXX XXXXXXXXXXX… XXXXXXX… Rank2

Slide 93

Slide 93 text

public class RankingListAdapter extends RecyclerView.Adapter { @Override public int getItemViewType(int position) { RankingItem item = ...; return (item.rank == 1) ? LARGE : NORMAL; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { return (viewType == LARGE) ? LargeViewHolder.create(parent) : NormalViewHolder.create(parent); } ... e.g. RecyclerView with multiple view types

Slide 94

Slide 94 text

Presenter LargeRankingItemPresenter NormalRankingItemPresenter public class NormalRankingItemPresenter extends Presenter { @Override public ViewHolder onCreateViewHolder(ViewGroup parent) { return NormalViewHolder.create(parent); } @Override public void onBindViewHolder(ViewHolder vh, Object item) { RankingItem rankingItem = (RankingItem) item; NormalViewHolder viewHolder = NormalViewHolder.of(vh); ... } @Override public void onUnbindViewHolder(ViewHolder vh) {} static class NormalViewHolder extends Presenter.ViewHolder

Slide 95

Slide 95 text

PresenterSelector public class RankingPresenterSelector extends PresenterSelector { final LargeRankingItemPresenter largePresenter = ...; final NormalRankingItemPresenter normalPresenter = ...; final Presenter[] presenters = ...; @Override public Presenter getPresenter(Object item) { RankingItem rankingItem = (RankingItem) item; return (rankingItem.rank == 1) ? largeRankingItemPresenter : normalRankingItemPresenter; } @Override public Presenter[] getPresenters() { return presenters; } }

Slide 96

Slide 96 text

ObjectAdapter (ArrayObjectAdapter) public class RankingFragment extends VerticalGridFragment { // Setup VerticalGridPresenter (Column: 1) private ArrayObjectAdapter adapter; @Override protected onViewCreated(...) { ... PresenterSelector ps = new RankingPresenterSelector(); adapter = new ArrayObjectAdapter(ps); setAdapter(adapter); // Load data. } private onLoaded(List rankingItems) { adapter.addAll(0, rankingItems); } ...

Slide 97

Slide 97 text

ObjectAdapter (ArrayObjectAdapter) public class RankingFragment extends VerticalGridFragment { // Setup VerticalGridPresenter (Column: 1) private ArrayObjectAdapter adapter; @Override protected onViewCreated(...) { ... PresenterSelector ps = new RankingPresenterSelector(); adapter = new ArrayObjectAdapter(ps); setAdapter(adapter); // Load data. } private onLoaded(List rankingItems) { adapter.addAll(0, rankingItems); } ... RecyclerView with multiple view types
 ΛAdapter͔Β෼཭࣮ͯ͠ݱ͢Δ࢓૊Έ

Slide 98

Slide 98 text

Leanback Support Library - Pros & Cons • ϝσΟΞ࠶ੜίϯτϩʔϧը໘ͳͲࣗલͰ࡞ Δඞཁ͕ͳ͍ • FocusͷϑΟʔυόοΫʢεέʔϦϯά΍ίϯ τϥετͳͲʣ͕UI΢ΟδΣοτʹ૊Έࠐ· Ε͍ͯΔͷͰɺྑ͠ͳʹ΍ͬͯ͘ΕΔ Good :)

Slide 99

Slide 99 text

Leanback Support Library - Pros & Cons Bad :( • େ఍ͷσβΠφʔ͞Μ͸LeanbackͷUIͦͷ· ·ͰΑ͍ͱ͸ܾͯ͠ݴͬͯ͘Εͳ͍ • @HideɺPackage Privateɺfinalએݴ͕ඇৗʹ ଟ͘ɺΧελϚΠζͷ೉қ౓ߴΊ

Slide 100

Slide 100 text

Leanback Support Library - Pros & Cons Bad :( • େ఍ͷσβΠφʔ͞Μ͸LeanbackͷUIͦͷ· ·ͰΑ͍ͱ͸ܾͯ͠ݴͬͯ͘Εͳ͍ • @HideɺPackage Privateɺfinalએݴ͕ඇৗʹ ଟ͘ɺΧελϚΠζͷ೉қ౓ߴΊ 㱺RowsFragmentΛϕʔε͢Δͷ͕͓͢͢Ί

Slide 101

Slide 101 text

։ൃ • جຊʢπʔϧɺϓϩδΣΫτɺetc..ʣ • Leanback Support Libraryೖ໳ • Fire TVͰߟྀ͢Δ΂͖͜ͱ

Slide 102

Slide 102 text

FireTVͰߟྀ͢Δ΂͖͜ͱ • How Fire TV Development Differs from Android TV Development
 https://goo.gl/kvjiaR • Can you use Firebase on Amazon Android devices?
 https://goo.gl/Y3n4Al • Identifying Amazon Fire TV Devices
 https://goo.gl/fkhp4a

Slide 103

Slide 103 text

ެ։ • Android TV޲͚ʹΞϓϦΛ഑෍ • Fire TV޲͚ʹΞϓϦΛ഑෍

Slide 104

Slide 104 text

Android TV޲͚ʹΞϓϦΛ഑෍ Google Play Store΁ͷਃ੥ʹඞཁͳ΋ͷ • TV޲͚ΨΠυϥΠϯʹద߹ͨ͠ΞϓϦ(.apk) • TV༻ͷը૾Ξηοτ • εΫϦʔϯγϣοτʢ1ຕҎ্ʣ • όφʔը૾ʢ1280 x 720 pxʣ

Slide 105

Slide 105 text

Android TV޲͚ʹΞϓϦΛ഑෍ Google Play Store΁ͷਃ੥ʹඞཁͳ΋ͷ • TV޲͚ΨΠυϥΠϯʹద߹ͨ͠ΞϓϦ(.apk) • TV༻ͷը૾Ξηοτ • εΫϦʔϯγϣοτʢ1ຕҎ্ʣ • όφʔը૾ʢ1280 x 720 pxʣ

Slide 106

Slide 106 text

Android TV޲͚ʹΞϓϦΛ഑෍ Google Play Store΁ͷਃ੥ʹඞཁͳ΋ͷ • TV޲͚ΨΠυϥΠϯʹద߹ͨ͠ΞϓϦ(.apk) • TV༻ͷը૾Ξηοτ • εΫϦʔϯγϣοτʢ1ຕҎ্ʣ • όφʔը૾ʢ1280 x 720 pxʣ

Slide 107

Slide 107 text

Android TV޲͚ʹΞϓϦΛ഑෍ APKΛϕʔλʗΞϧϑΝʹΞοϓϩʔυ

Slide 108

Slide 108 text

Android TV޲͚ʹΞϓϦΛ഑෍ ը૾ΞηοτΛετΞܝࡌ৘ใʹΞοϓϩʔυ

Slide 109

Slide 109 text

Android TV޲͚ʹΞϓϦΛ഑෍ Android TV΁ͷ഑৴νΣοΫΛ༗ޮʹߋ৽ ̍ʙ̎Ӧۀ೔..

Slide 110

Slide 110 text

Android TV޲͚ʹΞϓϦΛ഑෍

Slide 111

Slide 111 text

ެ։ • Android TV޲͚ʹΞϓϦΛ഑෍ • Fire TV޲͚ʹΞϓϦΛ഑෍

Slide 112

Slide 112 text

Fire TV޲͚ʹΞϓϦΛ഑෍ Amazon App Store΁ͷਃ੥ʹඞཁͳ΋ͷ • TV޲͚ΨΠυϥΠϯʹద߹ͨ͠ΞϓϦ(.apk) • TV༻ͷը૾Ξηοτ(for Gen. 2) • εΫϦʔϯγϣοτʢ3ຕҎ্ʣ • όφʔը૾ʢ1280 x 720 pxʣ • όοΫάϥ΢ϯυը૾ʢ1920 x 1080 pxʣ

Slide 113

Slide 113 text

Fire TV޲͚ʹΞϓϦΛ഑෍ Amazon App Store΁ͷਃ੥ʹඞཁͳ΋ͷ • TV޲͚ΨΠυϥΠϯʹద߹ͨ͠ΞϓϦ(.apk) • TV༻ͷը૾Ξηοτ(for Gen. 2) • εΫϦʔϯγϣοτʢ3ຕҎ্ʣ • όφʔը૾ʢ1280 x 720 pxʣ • όοΫάϥ΢ϯυը૾ʢ1920 x 1080 pxʣ

Slide 114

Slide 114 text

Fire TV޲͚ʹΞϓϦΛ഑෍ Amazon App Store΁ͷਃ੥ʹඞཁͳ΋ͷ • TV޲͚ΨΠυϥΠϯʹద߹ͨ͠ΞϓϦ(.apk) • TV༻ͷը૾Ξηοτ(for Gen. 2) • εΫϦʔϯγϣοτʢ3ຕҎ্ʣ • όφʔը૾ʢ1280 x 720 pxʣ • όοΫάϥ΢ϯυը૾ʢ1920 x 1080 pxʣ

Slide 115

Slide 115 text

Fire TV޲͚ʹΞϓϦΛ഑෍ Amazon Developer Console (Dashboard) https://developer.amazon.com/home.html

Slide 116

Slide 116 text

Fire TV޲͚ʹΞϓϦΛ഑෍ Amazon Developer Console Amazon Developer Console (App)

Slide 117

Slide 117 text

Fire TV޲͚ʹΞϓϦΛ഑෍ ը૾ΞηοτͱAPKΛΞοϓϩʔυ

Slide 118

Slide 118 text

Fire TV޲͚ʹΞϓϦΛ഑෍ ४උ͕੔ͬͨΒਃ੥ͯ͠଴ͭɻ1ʙ5Ӧۀ೔..

Slide 119

Slide 119 text

Fire TV޲͚ʹΞϓϦΛ഑෍ LiveʹͳΕ͹ࣗಈతʹެ։

Slide 120

Slide 120 text

Fire TV޲͚ʹΞϓϦΛ഑෍

Slide 121

Slide 121 text

• Distribute to Android TV
 https://goo.gl/kViUiV
 
 TV App Quality
 https://goo.gl/bGdFOi • Submitting Your Fire TV App to the Amazon Appstore
 https://goo.gl/hDuuDH
 ࢀߟϦϯΫू

Slide 122

Slide 122 text

No content

Slide 123

Slide 123 text

͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ