Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Wi-Fi RTTによる屋内測位アプリを作ろう
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
napplecomputer
February 08, 2019
Programming
18k
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Wi-Fi RTTによる屋内測位アプリを作ろう
napplecomputer
February 08, 2019
More Decks by napplecomputer
See All by napplecomputer
Kotlin2.0対応などでビルド時間を45%削減したぞ!
napplecomputer
0
1.2k
EmojiPicker触ってみた
napplecomputer
0
790
compileSdkVersion33でgetSerializable/getParcelableがつらい話
napplecomputer
13
6k
式年遷Target SDK Version
napplecomputer
0
490
Target SDK Versionを上げない Notification runtime permission対応
napplecomputer
0
530
通知がOFFだとToastは表示されな… されてる!?
napplecomputer
0
1.2k
Photo Pickerを触って比較してみた
napplecomputer
0
2.3k
Android Qのストレージの話
napplecomputer
3
1.3k
Other Decks in Programming
See All in Programming
Unity6 URPによる海底をテーマにしたVJシステムの解説 | Unity Shader 完全に理解した 勉強会
gam0022
0
320
Webの地図
yosuke_furukawa
PRO
6
5k
なぜCTOを降りてFDEを選んだのか?〜なぜプロダクト企業がFDEで顧客の現場に踏み込むのか〜
gonta
1
150
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
250
Verilogで学ぶCPU自作入門.pdf
uyuki234
8
4k
仕様駆動開発による爆速プロダクト開発 / Bakusoku Spec Driven Development
kobakei
0
180
Are APIs Still Relevant in the AI Era?
soyuka
0
420
Workers Cache を知る
syumai
0
330
Simple Storage Service(S3) is not simple
iwatsukayura
0
190
iOSDC2026登壇資料.pdf
riofujimon
0
210
設計次第でAIコードの読む量は減らせる / designing-for-code-reading
minodriven
34
15k
[ハンズオン]AIへの指示だけで「五目並べ」を作ってみよう
satoshi256kbyte
1
340
Featured
See All Featured
4 Signs Your Business is Dying
shpigford
187
23k
Docker and Python
trallard
47
4.2k
HDC tutorial
michielstock
2
940
Darren the Foodie - Storyboard
khoart
PRO
4
4k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
66k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.2k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
550
Heart Work Chapter 1 - Part 1
lfama
PRO
10
36k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Balancing Empowerment & Direction
lara
6
1.3k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Transcript
8J'J355ʹΑΔଌҐΞϓϦ Λ࡞Ζ͏ !OBQQMFDPNQVUFS 1
ࣗݾհ • ͳͬͽʔ • !OBQQMFDPNQVUFS • גࣜձࣾσΟʔɾΤψɾΤʔॴଐ • .07ͷϢʔβʔΞϓϦ։ൃ 2
࣍ 3 ͖͔͚ͬ 8J'J355ͷ༷ ࡞ͬͯΈͨ ਫ਼Λ্͛ΔͨΊͷΞΠσΟΞ
͖͔͚ͬ 4
5 )PXUPHFUPOFNFUFSMPDBUJPOBDDVSBDZ GSPN"OESPJEEFWJDFT (PPHMF*0` IUUQTZPVUVCFWZX(H4S(0%6
8J'J355ͷ༷ 6
"OESPJEͷҐஔใऔಘํ๏ 7
'VTFE-PDBUJPO 8
'VTFE-PDBUJPOͳ͠ 9 ΞϓϦ ηϯαʔ" ΞϓϦ ηϯαʔ$ ηϯαʔ#
'VTFE-PDBUJPO͋Γ 10 ΞϓϦ ηϯαʔ" ΞϓϦ ηϯαʔ$ ηϯαʔ# (PPHMF1MBZ 4FSWJDFT
'VTFE-PDBUJPO 11 (14 8J'J 344* ΩϟϦΞجہ ਫ਼ ϝʔτϧ ϝʔτϧ ϝʔτϧʁ
! " " ҐஔଌҐ༻ " ! ʁ
'VTFE-PDBUJPO 12 (14 8J'J 344* ΩϟϦΞجہ 8J'J 355 ਫ਼ ϝʔτϧ
ϝʔτϧ ϝʔτϧʁ ϝʔτϧ ! " " " ҐஔଌҐ༻ " ! ʁ "
'VTFE-PDBUJPO 13 (14 8J'J 344* ΩϟϦΞجہ 8J'J 355 ਫ਼ ϝʔτϧ
ϝʔτϧ ϝʔτϧʁ ϝʔτϧ ! " " " ҐஔଌҐ༻ " ! ʁ " /&8
8J'J355ͷ༷ 14
8J'J355 • 3553PVOE5SJQ5JNFͷུ • *&&&NDͰఆٛ • *&&&NDʹରԠ͍ͯ͠ΔΞΫηεϙΠϯτͱɺ *&&&NDʹରԠ͍ͯ͠Δ͕ඞཁ • ௨৴͔࣌ؒΒڑΛܭଌ͢Δ
15
ڑܭଌ 16 ΞΫηεϙΠϯτ ڑτʔλϧ࣌ؒʷޫͷ͞ D ̎
ڑܭଌͬͱৄ͘͠ 17 ΞΫηεϙΠϯτ '5.3FRVFTU '5. U U "$, U
U U U ڑ UU UU ʷޫͷ͞ D ࣌ؒ
ͷҐஔΛܭࢉ͢Δ 18
ͷҐஔΛࢉग़͢Δ • 355ͰऔΕΔͷΞΫηεϙΠϯτ·Ͱͷڑ͚ͩ • ͷҐஔใͷࢉग़355ͷൣғ֎ • ࣗͰܭࢉ͢Δ • ΞΫηεϙΠϯτͷҐஔใ355ͷൣғ֎ •
ΞΫηεϙΠϯτ͕ͭ͋ΕҐஔͷಛఆ͕Մೳ • ਫ਼Λग़͢ͳΒͭ΄͍͠ 19
ΞΫηεϙΠϯτ͕ͭͷ߹ 20
ΞΫηεϙΠϯτ͕ͭͷ߹ 21
ΞΫηεϙΠϯτ͕ͭͷ߹ 22
࣮ࡍʹᘳͳ औಘͰ͖ͳ͍ 23
ݱ࣮ 24
25
(PPHMF*0Ͱհ͞Ε͍ͯͨํ๏ • ࣍ݩަ࠲ඪʹͱΞΫηεϙΠϯτΛஔ͘ • ϐλΰϥεͷఆཧΛͬͯํఔࣜͰදݱ͢Δ • ͭͷ࣍ํఔࣜΛͭͷ࿈ཱํఔࣜʹͯ͠ղ͘ • ͭͷ࣍ํఔࣜʹͳΔ •
ͭͷ࣍ํఔࣜͷͰଟ֯ܗΛ࡞Γɺͦͷଟ֯ܗͷ த৺ΛͷҐஔͱ͢Δ 26
࣍ݩަ࠲ඪʹͱΞΫηεϙΠϯτΛஔ͘ 27
28 x1 y1 r1 x, y (x − x1 )2
+ (y − y1 )2 = r2 1 ϐλΰϥεͷఆཧΛͬͯํఔࣜͰදݱ͢Δ
ϐλΰϥεͷఆཧΛͬͯํఔࣜͰදݱ͢Δ 29 (x − x1 )2 + (y − y1
)2 = r2 1 (x − x3 )2 + (y − y3 )2 = r2 3 (x − x2 )2 + (y − y2 )2 = r2 2 (x − x4 )2 + (y − y4 )2 = r2 4
࣍ํఔࣜΛඳը͢Δ 30 (x − x1 )2 + (y − y1
)2 = r2 1 (x − x3 )2 + (y − y3 )2 = r2 3 (x − x2 )2 + (y − y2 )2 = r2 2 (x − x4 )2 + (y − y4 )2 = r2 4
ଟ֯ܗͷਅΜதΛͷॴͱ͢Δ 31 (x − x1 )2 + (y − y1
)2 = r2 1 (x − x3 )2 + (y − y3 )2 = r2 3 (x − x2 )2 + (y − y2 )2 = r2 2 (x − x4 )2 + (y − y4 )2 = r2 4
"OESPJEͷ8J'J355"1* 32
"OESPJEͰͷ8J'J355 • 04ͱͯ͠"OESPJE "1*-FWFM ͔ΒରԠ • ͱͯ͠1JYFM 9-ؚΉ ͕ରԠ͍ͯ͠Δ •
*0Ͱ1JYFMTͱݴͬͯͨͷͰ1JYFM1JYFMର Ԡͯ͠Δ͔ 33
ಛ • ΞΫηεϙΠϯτʹ8J'Jͱͯ͠ଓ͠ͳͯ͑͘Δ • ଞͷΞΫηεϙΠϯτʹ8J'Jͱͯ͠ଓதͰ͑Δ • ̍ͷ"1*ͷ࣮ߦͰ'5.Λෳճ͛ͯɺฏۉɺඪ४ ภࠩΤϥʔΛฦͯ͘͠ΕΔ • كʹϚΠφεͷڑ͕ฦͬͯ͘Δʜ
• ߴස NT͘Β͍ʣͰ͏ͱࢮ͵ 34
Δ͜ͱ • 8J'JΞΫηεϙΠϯτΛεΩϟϯ͢Δ • εΩϟϯͯ͠ಘΒΕͨΞΫηεϙΠϯτͷதʹ8J'J 355ରԠ͍ͯ͠ΔΞΫηεϙΠϯτ͕͋Δ͔֬ೝ͢Δ • 8J'J355ରԠΞΫηεϙΠϯτͱ8J'J355ͷ ΓͱΓΛͯ݁͠ՌΛಘΔ 35
ඞཁͳ1FSNJTTJPO <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 36
8J'JΞΫηεϙΠϯτΛεΩϟϯ val receiver = object: BroadcastReceiver() { override fun onReceive(context:
Context, intent: Intent) { when(intent.action) { WifiManager.SCAN_RESULTS_AVAILABLE_ACTION -> { // Wi-FiͷεΩϟϯ͕ྃͨ͠ } } } } val filter = IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION) registerReceiver(receiver, filter) 37
8J'JΞΫηεϙΠϯτΛεΩϟϯ val wifiManager = getSystemService(Context.WIFI_SERVICE) as WifiManager wifiManager.startScan() 38
8J'JΞΫηεϙΠϯτΛεΩϟϯ val scanResults = wifiManager.scanResults.filter { it.is80211mcResponder } 39
ΞΫηεϙΠϯτ·ͰͷڑΛऔಘ val rangingRequest = RangingRequest.Builder() .addAccessPoints(scanResults) .build() val rttManager =
getSystemService(Context.WIFI_RTT_RANGING_SERVICE) as WifiRttManager val resultCallback = object : RangingResultCallback() { override fun onRangingResults(results: MutableList<RangingResult>) { val ragingResults = results.filter { it.status == STATUS_SUCCESS } } override fun onRangingFailure(code: Int) { } } rttManager.startRanging(rangingRequest, executor, resultCallback) 40
TUBSU4DBOͷ༷มߋ • 8JGJ.BOBHFSTUBSU4DBO ͕"1*-FWFM͔ Β৭ʑมߋ • ಥવͷEFQSFDBUFE • ͔͠ସखஈࠓͷͱ͜Ζͳͦ͞͏ •
όοΫάϥϯυΞϓϦͰʹճ͔͠ݺͳ͍ • ϑΥΞάϥϯυΞϓϦͰʹճ͔͠ݺͳ͍ 41
8J'J"XBSFʹΑΔ355 42
8J'J"XBSFʹΑΔ355 • 8J'J"XBSFΛ͏ͱ"OESPJEಉ࢜Ͱ355Λ ߦ͑Δ • "1*-FWFM͔Β • 8J'J"XBSF͢Ε͕͍ͪ௨৴ͷΑ͏ͳػೳΛ࣮ݱ Ͱ͖Δ •
8J'J"XBSFͰଓޙɺ355༻ͷϝιουΛݺͿ 43
࡞ͬͯΈͨ 44
࡞ΔࡍʹΔ͜ͱ • ΞΫηεϙΠϯτͷબఆ • ॴͷબఆ • ਤͷೖख • ΞΫηεϙΠϯτͷઃஔ •
ΞΫηεϙΠϯτͷҢܦͷऔಘ • ΞϓϦͷ࡞ 45
ΞΫηεϙΠϯτͷબఆ 46
ΞΫηεϙΠϯτͷબఆ • *&&&NDʹରԠͨ͠8J'JΞΫηεϙΠϯτ • 8J'J"XBSF • ͭ·Γ1JYFM 47
*&&&NDରԠΛ ᨳ͍ͬͯΔΞΫηεϙΠϯτ 48
ແ͍ 49
ແ͍ ˞ͳͬͽʔௐ 50
51 (PPHMF8J'J
(PPHMF8J'J • (PPHMF*0Ͱ(PPHMF8J'J͕XJMMTPPO ͰରԠ͢Δͱݴ͍ͬͯͨ • (PPHMF8J'JͷϦϦʔεϊʔτΛҎ্ࢹ͠ଓ͚ ͕ͨ*&&&NDͷ͜ͱҰॻ͔Ε͍ͯͳ͍ • XJMMTPPOͱԿͩͬͨͷ͔ 52
(PPHMF8J'J • %SPJE,BJHJͷొஃܾ·ͬͨͷͰɺ(PPHMF8J'J ͕͍ͭߋ৽͞Ε͍͍ͯΑ͏ʹങ݄ͬͯʹηοςΟϯ άͨ͠ • ՈͰ8J'J355ͷ"OESPJE"1*Λࢼͨ͠Β8J'J 355ରԠ͍ͯ͠ΔΞΫηεϙΠϯτ͕ݟ͔ͭͬͨ • (PPHMF8J'J͕͠ΕͬͱରԠ͍ͯͨ͠
53
(PPHMF8J'J • ରԠ͍ͯ͠Δͷͷ(PPHMF 8J'Jͷઃఆ߲ʹ8J'J 355ͳ͍ • (PPHMF*0Ͱ8J'J355σϑΥϧτͰΦϯͱݴͬ ͍͕ͯͨΦϑʹͰ͖ͳ͍ • օ͞Μ͕͓͍ͷ(PPHMF8J'J'5.SFRVFTUΛ
ૹΔͱ'5.ฦͯ͘͠Ε·͢ 54
ॴͷબఆ 55
ॴͷબఆ • ී௨ܭଌ͍ͨ͠ॴ͕͋Δͱ͜Ζ͔Β࢝·ΔͷͰ ॴ͕ܾ·ͬͨঢ়ଶͰ࢝·Δʢͣʣ • ࠓճܭଌ͢Δ͜ͱ͕తͳͷͰɺॴͷબఆ͕ඞཁ 56
ॴͷ݅ • ͍ॴ • ڱ͍ॴਫ਼తʹແཧ • ݐͷେ͖͕͞ਖ਼֬ͳਤ͕͋Δ • ݐͷҢܦΛʢϝδϟʔͰଌΔͳͲͷํ๏Ͱʣ Δ͜ͱ͕Ͱ͖Δ
• ΞΫηεϙΠϯτͷҢܦʹਖ਼֬ͳ͕ඞཁ 57
ࠓճͷॴ • ࠓճࣗͷՈʹͨ͠ • ͋ͱ͔ΒݟΔͱ͜Εࣦഊ • ڱ͍ • σϞಈըͰΞϓϦͷը໘ͱॴΛऩΊ͔͕ͨͬͨɺ ՈͷதΛ%SPJE,BJHJͰࡽ͢༐ؾͳ͔ͬͨ
58
ਤͷೖख 59
ਤͷೖख • ϢʔβʔʹݟͤΔͱ͖ͱΞΫηεϙΠϯτͷઃஔʹ ༻͢Δ • ͷਤ͕ͳ͍ͳΒଌҐ͢Δҙຯ͋·Γͳ͍ • ਖ਼֬ͳਤͰͳ͚Εਖ਼֬ͳଌҐͰ͖ͳ͍ • ࠓճؒऔΓਤΛ༻
60
ΞΫηεϙΠϯτͷઃஔ 61
ΞΫηεϙΠϯτͷઃஔ • ձͷେ͖͞ʹ߹Θͤͯ·ΜΜͳ͘ઃஔ͢Δ • ΞΫηεϙΠϯτʹғ·Ε͍ͯΔΑ͏ͳঢ়ଶʹ͢Δ • ઢͰ݁ΔΑ͏ͳஔͰਫ਼͕ग़ͳ͍ • ࢛͍֯෦ͳΒ࢛۱ͱਅΜத͕ྑͦ͞͏ •
ࠓճׂͱࡶ 62
ΞΫηεϙΠϯτͷҢܦ 63
ΞΫηεϙΠϯτͷҢܦͷऔಘ • ਤͳͲΛͬͯΞΫηεϙΠϯτͷҢܦΛؤுͬ ׂͯΓग़͢ • େม 64
ΞϓϦͷ࡞ 65
ΞϓϦͷ࡞ • (PPHMF.BQ4%,Λ͏͔Θͳ͍͔ΛܾΊΔ • Θͳ͍߹ɺਤతͳૢ࡞ࣗલ࣮͕ඞཁ • Θͳ͍߹ɺҢܦͳ͍͍ͯ͘ • Ψοͱؾ߹Ͱ࣮͢Δ •
ਫ਼Λؾʹ͠ͳ͚Ε؆୯ʹ࣮Ͱ͖Δ • ਫ਼Λؾʹ͢Δͱແݶʹ͕͔͔࣌ؒΔ 66
ਫ਼Λ্͛ΔΞΠσΟΞ 67
ਫ਼Λ্͛Δ • ߴ͞Λ͏ • ΞΫηεϙΠϯτ͕ఱҪʹ͋Δ߹ͳͲߟྀͨ͠ ΄͏͕ྑͦ͞͏ • ΞΫηεϙΠϯτͷઃஔॴΛݟ͢ • ڑ͔ΒҐஔใΛࢉग़͢Δํ๏Λมߋ͢Δ
• લճऔಘͨ͠ͳͲΛͬͯҟৗΛແࢹ͢Δ 68
ਫ਼Λ্͛Δ • ΞΫηεϙΠϯτͷΛ૿͢ • ඪ४ภࠩͷେ͖ͳΞΫηεϙΠϯτΛແࢹ͢ΔͳͲ • ֤छηϯαʔΛ͏ • Ճηϯαʔ •
ίϯύε 69
·ͱΊ 70
·ͱΊ • ΞΫηεϙΠϯτ(PPHMF8J'J • ਤΞΫηεϙΠϯτͷҢܦͳͲͷਖ਼͕֬͞ॏཁ • ͋ΔఔΛ͠ͳ͍ͱਫ਼ग़ͳ͍ • ਫ਼͕ѱ͍߹Ͳ͜ʹ͕͋Δͷ͔ಛఆ͠ʹ͍͘ 71
͜͠ͷͰσϞ͢ΔͳΒ 72
͜ͷͰσϞ͢Δʹ • ձͷ8J'JʹӨڹΛ༩͑ΔՄೳੑ͕͋ΔͷͰӡӦʹ֬ ೝ • 8J'J"XBSFΛ͏ • ઃஔָ͕ 73
͜ͷͰσϞ͢Δʹ • ਖ਼֬ͳਤͷೖखఘΊΔ • (PPHMF.BQΛͦͷ··͍͍ͬͯͳΒਖ਼֬ͳ ਤͳ͍͍ͯ͘ • ৄࡉͳਤ͕͋ͬͨ΄͏͕໘ന͍͕ɺσϞͳͷͰ ͷલͰಈ͔͚ͩ͢Ͱे 74
͜ͷͰσϞ͢Δʹ • ઃஔॴ࢛۱ʴձͷେ͖͞ʹԠͯ͡ਅΜதʹ • Ңܦؤுͬͯ༧͢Δ • લͳͲʹਤΒͤͯΒ͑ͳ͍͔ަব͢Δ • 8J'J"XBSFͳΒஔ͚ͩ͘ͳͷͰɺΈͳ͞Μ ʹ࣋ͬͯΒ͏ͷ͋Γ
75