Slide 1

Slide 1 text

4MJDFTͷΞϨίϨ (PPHMF*0ࢀՃใࠂձ !BNZV@TBO

Slide 2

Slide 2 text

"CPVUNF w .JNB:VLJ w !BNZV@TBO w /&95$633&/$: */$ w "OESPJE&OHJOFFS

Slide 3

Slide 3 text

͋Γ͕ͱ͏Ŋฐࣾ

Slide 4

Slide 4 text

͋Γ͕ͱ͏Ŋฐࣾ

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

"HFOEB w (PPHMF*0ͷײ૝ͱ஌ݟ w 4MJDFTͷ࿩ w ·ͱΊ

Slide 7

Slide 7 text

(PPHMF*0ͷ஌ݟ w ։࠵ͷલલ೔ೖΓ͕ྑͦ͞͏ w ࣌ࠩϘέ·͡ਏ͍ w ૣΊͷ#BEHF1JDLVQͰΑΓྑ͍੮Ͱ,FZOPUFΛݟΕΔ w ௚௨ͷγϟτϧόε͕ग़Δϗςϧ͕Α͍ w IUUQTXXXDPVOUSZJOOTDPN w #BEHF1JDLVQͷ࣌ؒ͸ޕલ࣌෼͘Β͍͕ྑͦ͞͏ w ன൧͕ޱʹ߹Θͳ͍ w 6CFS࠷ߴ

Slide 8

Slide 8 text

(PPHMF*0ͷײ૝ w ·ͨདྷ೥΋ߦ͖͍ͨ

Slide 9

Slide 9 text

4MJDFTͷ࿩

Slide 10

Slide 10 text

͜͜ͷ෦෼

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

࡞ͬͯΈͨ

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

PO#JOE4MJDF 4MJDF1SPWJEFS GFUDI"1* 4FSWJDF TUBSU4FSWJDF DPOUFOU3FTPMWFSOPUJGZ$IBOHF VSJ

Slide 15

Slide 15 text

class CryptoSliceProvider : SliceProvider() { private val path = "/crypto" override fun onCreateSliceProvider(): Boolean = true override fun onBindSlice(sliceUri: Uri): Slice? = when (sliceUri.path) { path -> { context.startService(Intent(context, CryptoService::class.java)) createCryptoSlice(sliceUri) } else -> null } private fun createCryptoSlice(sliceUri: Uri): Slice? = ListBuilder(context, sliceUri, ListBuilder.INFINITY) .addGridRow { it.apply { addCell { it.apply { addImage(IconCompat.createWithResource(context, R.drawable.ic_bitcoin), SMALL_IMAGE) addTitleText("Bitcoin") addText(CryptoService.bitcoin, true) } } ... } } .build() }

Slide 16

Slide 16 text

class CryptoSliceProvider : SliceProvider() { private val path = "/crypto" override fun onCreateSliceProvider(): Boolean = true override fun onBindSlice(sliceUri: Uri): Slice? = when (sliceUri.path) { path -> { context.startService(Intent(context, CryptoService::class.java)) createCryptoSlice(sliceUri) } else -> null } private fun createCryptoSlice(sliceUri: Uri): Slice? = ListBuilder(context, sliceUri, ListBuilder.INFINITY) .addGridRow { it.apply { addCell { it.apply { addImage(IconCompat.createWithResource(context, R.drawable.ic_bitcoin), SMALL_IMAGE) addTitleText("Bitcoin") addText(CryptoService.bitcoin, true) } } ... } } .build() }

Slide 17

Slide 17 text

class CryptoSliceProvider : SliceProvider() { private val path = "/crypto" override fun onCreateSliceProvider(): Boolean = true override fun onBindSlice(sliceUri: Uri): Slice? = when (sliceUri.path) { path -> { context.startService(Intent(context, CryptoService::class.java)) createCryptoSlice(sliceUri) } else -> null } private fun createCryptoSlice(sliceUri: Uri): Slice? = ListBuilder(context, sliceUri, ListBuilder.INFINITY) .addGridRow { it.apply { addCell { it.apply { addImage(IconCompat.createWithResource(context, R.drawable.ic_bitcoin), SMALL_IMAGE) addTitleText("Bitcoin") addText(CryptoService.bitcoin, true) } } ... } } .build() }

Slide 18

Slide 18 text

class CryptoSliceProvider : SliceProvider() { private val path = "/crypto" override fun onCreateSliceProvider(): Boolean = true override fun onBindSlice(sliceUri: Uri): Slice? = when (sliceUri.path) { path -> { context.startService(Intent(context, CryptoService::class.java)) createCryptoSlice(sliceUri) } else -> null } private fun createCryptoSlice(sliceUri: Uri): Slice? = ListBuilder(context, sliceUri, ListBuilder.INFINITY) .addGridRow { it.apply { addCell { it.apply { addImage(…) addTitleText("Bitcoin") addText(CryptoService.bitcoin, true) } } ... } } .build() }

Slide 19

Slide 19 text

class CryptoSliceProvider : SliceProvider() { private val path = "/crypto" override fun onCreateSliceProvider(): Boolean = true override fun onBindSlice(sliceUri: Uri): Slice? = when (sliceUri.path) { path -> { context.startService(Intent(context, CryptoService::class.java)) createCryptoSlice(sliceUri) } else -> null } private fun createCryptoSlice(sliceUri: Uri): Slice? = ListBuilder(context, sliceUri, ListBuilder.INFINITY) .addGridRow { it.apply { addCell { it.apply { addImage(…) addTitleText("Bitcoin") addText(CryptoService.bitcoin, true) } } ... } } .build() }

Slide 20

Slide 20 text

class CryptoService : Service() { companion object { var bitcoin: String? = null ... } override fun onBind(p0: Intent?): IBinder? = null override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int = START_NOT_STICKY.also { _ -> apiClient.getCryptoList() .doOnFinish { stopSelf() } .subscribe({ bitcoin = "ˇ${it.toNumberformat()}" ... applicationContext.contentResolver.notifyChange(uri, null) }, { }) } }

Slide 21

Slide 21 text

class CryptoService : Service() { companion object { var bitcoin: String? = null ... } override fun onBind(p0: Intent?): IBinder? = null override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int = START_NOT_STICKY.also { _ -> apiClient.getCryptoList() .doOnFinish { stopSelf() } .subscribe({ bitcoin = "ˇ${it.toNumberformat()}" applicationContext.contentResolver.notifyChange(uri, null) }, { }) } }

Slide 22

Slide 22 text

class CryptoService : Service() { companion object { var bitcoin: String? = null ... } override fun onBind(p0: Intent?): IBinder? = null override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int = START_NOT_STICKY.also { _ -> apiClient.getCryptoList() .doFinally { stopSelf() } .subscribe({ bitcoin = "ˇ${it.toNumberformat()}" ... applicationContext.contentResolver.notifyChange(uri, null) }, { }) } }

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

ͱͬͯ΋؆୯ͩͶ

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

·ͱΊ

Slide 27

Slide 27 text

w IUUQTUFDICMPHQJDBQQJODKQHPPHMFJ P&"&&#& #&"&#&# "&$&"&'TMJD FT&"&&"#EFCC

Slide 28

Slide 28 text

·ͨདྷ೥΋ߦ͔ͤͯ͘ ͍ͩ͞