Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SDL_Application_Contest_IN_HIROSHIMA

688180c23dcbb4085cdcc3f4215536dd?s=47 oec
October 18, 2019

 SDL_Application_Contest_IN_HIROSHIMA

10/19 to 10/20

688180c23dcbb4085cdcc3f4215536dd?s=128

oec

October 18, 2019
Tweet

Transcript

  1. SDLϋϯζΦϯ Motoki OISHI Hiroshima MotionControl Network(HMCN) SDL։ൃ؀ڥͷ࢖͍ํ AndroidͷαϯϓϧΛೖखͯ͠ಈ͔ͯ͠ΈΔ 40෼ Q&A΋͘͠͸ɺ͜Μͳͷ࡞Γ͍͚ͨͲɺͲͷύλʔϯ࢖͑͹͍͍͔ʁ

    20෼
  2. 4%-ϋϯζΦϯ AndroidͷαϯϓϧΛೖ खͯ͠ಈ͔ͯ͠ΈΔ ΰʔϧ 1.AndroidΞϓϦ։ൃͱͷࠩΛཧղ͢Δ 2.αϯϓϧΛྲྀ༻ͯ͠ɺࣗ਎ͷΞϓϦ։ൃʹస༻Ͱ͖Δ

  3. Special Thanks:ాத խ໵ࢯ ࠓճͷαϯϓϧ͸ɺҒେͳΔઌਓͰ͋Δʮాத խ໵ࢯʯ ͷ஌ܙΛഈआ͓ͯ͠Γ·͢ɻ ઌਓͷ஌ܙΛआΓɺ޿ౡͰ͸ྑ͍΋ͷΛຊઓʹ͍͖࣋ͬͯ ·͠ΐ͏ʂ ͦͷલʹɾɾɾ

  4. Special Thanks: SDL։ൃΩοτ Ϋϥ΢υͷγϛϡϨʔλʔͰ͋ΔManticoreͷ઀ଓ੍ݶ΍ ωοτϫʔΫΛհ͢Δ͜ͱʹΑΔɺ΋ͬ͞Γͱͨ͠ಈ࡞ ͔Βղফͯ͘͠ΕͨSDL։ൃΩοτɻ ࢖͍ํ΋γϯϓϧͰɺϋϯζΦϯࢿྉΛ࡞Δͷ͕ੌָ͘ʹ ͳΓ·ͨ͠ɻ ͋Γ͕ͱ͏ɺSDL։ൃΩοτɻࢲ͸ɺ܅Λߪೖ͍ͨ͠ɻ ͦͷલʹɾɾɾ

  5. େ͖͘4ͭͷαϯϓϧΛ༻ҙ͠·ͨ͠  ΫϧϚͷٖࣅσʔλΛ࢖ͬͨΞϓϦ͕։ൃ͍ͨ͠  4%-ͷ6*ϨΠΞ΢τΛར༻ͯ͠։ൃ͍ͨ͠ .BOUJDPSF αϯϓϧͷछྨ ։ൃ؀ڥ  ࣗ༝ͳϨΠΞ΢τͰը໘Λ։ൃ͍ͨ͠

    4%-։ൃΩοτ 4%-։ൃΩοτ ιʔεೖखઌ IUUQTHJUIVCDPNPJD 4%-%JTQMBZ IUUQTHJUIVCDPNPJD 4%-7FIJDMF IUUQTHJUIVCDPNUBOBLB 4%-%JTQMBZ4BNQMF1SPKFDUJPO ΫϧϚͷٖࣅσʔλΛΫϥ΢υʹ஝ੵ͍ͨ͠ .BOUJDPSF  IUUQTHJUIVCDPNPJD 4%-$MPVE wιʔεͷμ΢ϯϩʔυˍ"OESPJE4UVEJPͰ։͖ɺϏϧυ·Ͱͯ͠௖͚ΔͱɺϋοΫλΠϜͷઅ໿ʹ ͳΓ·͢ wׂͱɺHSBEMFͷμ΢ϯϩʔυͱ͔ɺϏϧυ͢Δͷʹ͔͔࣌ؒΓ·͢
  6. Androidͷαϯϓϧιʔεͷೖखͷ࢓ํ αΠτʹΞΫηε ҎԼͷ63-Λϒϥ΢βͰ։͖·͢ αϯϓϧιʔεΛೖख ʮ$MPOFPSEPXOMPBEʯΛΫϦοΫͯ͠ɺ ʮ%PXOMPBE;*1ʯΛબ୒ɻ w(JUͷίϚϯυͰ͸ͳ͘ɺΘ͔Γ΍͍͢;*1μ΢ϯϩʔυͰઆ໌͍ͯ͠·͢ɻ w׳Ε͍ͯΔํ͸ɺίϚϯυͰ͓ئ͍͠·͢ʂ

  7. Android StudioͰμ΢ϯϩʔυͨ͠αϯϓϧΛ։͘ /%,ϩέʔγϣϯͷ֬ೝ MPDBMQSPQFUJFTϑΝΠϧͷOELEJS͕ ࣗ෼ͷύιίϯͷύεʹมߋ͞Ε͍ͯ Ε͹׬ྃͰ͢ αϯϓϧΛऔΓࠐΉ ϝχϡʔόʔͷ<'JMF><0QFO>ΛΫ ϦοΫ͠·͢ /%,͕ೖͬͯͳ͍৔߹

    /%,ΛηοτΞοϓ͠·͢ɻ <'JMF><1SPKFDU4USVDUVSF><4%, -PDBUJPO>ͷ"OESPJE/%,MPDBUJPO ͷԼʹ͋Δz%PXOMBE"OESPJE/%,z ͔ΒΠϯετʔϧ͍ͯͩ͘͠͞ w/%,ͷϩέʔγϣϯ·Ͱઃఆ͕׬ྃ͢Ε͹ɺϓϩδΣΫτͷϏϧυ͕࢝·Γ·͢ ͬͬ .BD049 8JOEPXT 4%,-PDBUJPO /%,Πϯετʔϧ MPDBMQSPQFUJFTϑΝΠϧ
  8. SDLͷUIϨΠΞ΢τΛར༻ͯ͠։ൃ͍ͨ͠ ❖ SDL։ൃΩοτͱεϚʔτϑΥϯΛUSBͰ ઀ଓ͠·͢ ❖ ܾΊΒΕͨσβΠϯςϯϓϨʔτ͕ଘࡏ ͠ɺςϯϓϨʔτΛબΜͰ։ൃ͠·͢ ❖ આ໌Ͱ͸ɺʮSDLDisplayʯαϯϓϧΛ࢖༻ ͠·͢ɻ

    ❖ ͜ΜͳਓʹΦεεϝ ❖ ΫϧϚͷதͰը໘Λૢ࡞͢ΔωλΛ͖࣋ͬͯͨ 
  9. ࠓճͷαϯϓϧͷ؀ڥߏ੒ w4%-։ൃΩοτͷ8J'Jܦ༝Ͱ΋઀ଓ͢Δ͜ͱ͕Ͱ͖·͕͢ɺαϯϓϧͰ͸64#ͱ͠·ͨ͠ w()[ଳͰࠞઢͯ͠ɺಈ͖͕஗͍ͱ͔ɺܨ͕Βͳ͍ͱ͔ɾɾɾͷ৺഑Λ͠·ͨ͠ 64#έʔϒϧ 4%-։ൃΩοτ

  10. ςϯϓϨʔτͷσβΠϯͬͯͲΜͳͷ͕͋Δͷʁ MEDIA MEDIA (WITH A PROGRESS BAR) NON-MEDIA GRAPHIC WITH

    TEXT TEXT WITH GRAPHIC TILES ONLY GRAPHIC WITH TILES TILES WITH GRAPHIC GRAPHIC WITH TEXT AND SOFT BUTTONS TEXT AND SOFT BUTTONS WITH GRAPHIC WITH TEXT BUTTONS GRAPHIC DOUBLE GRAPHIC WITH SOFT BUTTONS GRAPHIC WITH TILES TEXT BUTTONS ONLY LARGE GRAPHIC WITH SOFT BUTTONS LARGE GRAPHIC ONLY wશ෦Ͱ̎̌छྨͷςϯϓϨʔτ͔ΒબͿ͜ͱ͕Ͱ͖·͢ɻ
  11. AndroidΞϓϦͷ։ൃͱߏ଄తʹҧ͍ͬͯ͋Δͷʁ w"OESPJEΞϓϦΛ։ൃ͢ΔϓϩδΣΫτߏ଄ʹҧ͍͸͋Γ·ͤΜ w4%-ΞϓϦΛ։ൃ͢ΔͨΊʹɺґଘؔ܎ʹ4%-4%,Λࢦఆ͢ΔͷΈͱͳΓ·͢ CVJMEHSBEMFʹEFQFOEFODJFTʹTEMͷ4%,Λࢦఆ͢Δ ߏ଄͸ࠓ·Ͱ௨Γ "DUJWJUZҎ֎ʹ4%-ͬΆ͍ͷιʔε͕ͪΒ΄Β

  12. ͓खຊΛϕʔεʹΞϓϦΛ࡞Γ͍ͨɻͲ͍͜͡Δʁ wंࡌଆʹදࣔ͞ΕΔ6*Λ࡞Δ৔߹ͷमਖ਼ՕॴͱͳΓ·͢ɻ TFU%JTQMBZ(SBQIJD8JUI5FYU#VUUPOT ϝιουΛվม 4EM4FSWJDFΛجຊ৮Δ (3"1)*$@8*5)@5&95#6550/4ͷςϯϓϨʔτͰղઆ͠·͢

  13. ςϯϓϨʔτΛઃఆͯ͠ΈΔ private void setDisplayGraphicWithTextButtons(){ SetDisplayLayout setDisplayLayoutRequest = new SetDisplayLayout(); //GRAPHIC_WITH_TEXT_AND_SOFTBUTTONS

    setDisplayLayoutRequest.setDisplayLayout(PredefinedLayout.GRAPHIC_WITH_TEXTBUTTONS.toString()); setDisplayLayoutRequest.setOnRPCResponseListener(new OnRPCResponseListener() { @Override public void onResponse(int correlationId, RPCResponse response) { if(((SetDisplayLayoutResponse) response).getSuccess()){ Log.i("SdlService", "Display layout set successfully."); w4%-୺຤ʹΑͬͯɺ࢖͑ͳ͍ςϯϓϨʔτ͕͋Γ·͢ɻ࣍ʹͦͷௐ΂ํʹ͍͓ͭͯ఻͑͠·͢ SdlService.javaͷ213ߦ໨ ςϯϓϨʔτ໊Λॻ͘ͷΈ setOnRPCResponseListenerͰ ςϯϓϨʔτΛઃఆ
  14. SDL୺຤Ͱར༻Ͱ͖ΔςϯϓϨʔτ໊Λ೺Ѳ͢Δ private void checkTemplateType(){ Object result = sdlManager.getSystemCapabilityManager().getCapability(SystemCapabilityType.DISPLAY); if( result

    instanceof DisplayCapabilities){ List<String> templates = ((DisplayCapabilities) result).getTemplatesAvailable(); Log.i("Templete", templates.toString()); } } SdlService.javaͷ198ߦ໨ wΫϥ΢υγϛϡϨʔλͷ.BOUJDPSF΍4%-୺຤Αͬͯҧ͍͕͋ΔͷͰɺαϯϓϧΛίϐʔͯ͠Ξϓ ϦΛ࡞Δ৔߹ɺ͜ͷϩδοΫ͸ফͣ͞ʹ࢒͓͖ͯ͠·͠ΐ͏ɻ getTemplatesAvailableͰར༻ՄೳͳςϯϓϨʔτ໊͕ϦετͰฦ٫ ͞Ε·͢
  15. wSFTESBXCMFʹQOHը૾Λίϐϖͯ͠ɺ4EM"SUXPSLͷϑΝΠϧ໊Λॻ͖׵͑Ε͹޷͖ͳը૾ʹมߋ Ͱ͖·͢ GRAPHIC WITH TEXTBUTTONSʹը૾Λઃఆ͢Δ ͜ͷ෦෼ͷը૾ sdlManager.getScreenManager().beginTransaction(); //ςΩετΛొ࿥͢Δ৔߹ //sdlManager.getScreenManager().setTextField1("Hello, this

    is MainField1."); //ը૾Λొ࿥͢Δ SdlArtwork artwork = new SdlArtwork("clap.png", FileType.GRAPHIC_PNG, R.drawable.clap, true); sdlManager.getScreenManager().setPrimaryGraphic(artwork); sdlManager.getScreenManager().commit(new CompletionListener() { @Override public void onComplete(boolean success) { if (success) { Log.i(TAG, "welcome show successful"); } } }); SdlService.javaͷ223ߦ໨ ϑΝΠϧ໊Λઃఆ ͜͜Ͱ͸clap.pngɺR.drawble.clap res/drawableʹදࣔ͠ ͨը૾ΛೖΕ·͢
  16. wϘλϯͷઃఆͱɺPO1SFTTͰ4%-։ൃΩοτͷը໘͕λοϓ͞Εͨ৔߹ͷڍಈΛఆٛͰ͖·͢ɻ GRAPHIC WITH TEXTBUTTONSʹϘλϯΛઃఆ͢Δ ͜ͷ෦෼ SoftButtonState softButton02State1 = new SoftButtonState("button02_state1",

    "button02_state1", null); SoftButtonObject softButtonObject2 = new SoftButtonObject("softButtonObject02", Collections.singletonList(softButton02State1), softButton02State1.getName(), null); softButtonObject2.setOnEventListener(new SoftButtonObject.OnEventListener() { @Override public void onPress(SoftButtonObject softButtonObject, OnButtonPress onButtonPress) { sdlManager.getScreenManager().beginTransaction(); //ը૾Λొ࿥͢Δ SdlArtwork artwork = new SdlArtwork("oldman.png", FileType.GRAPHIC_PNG, R.drawable.oldman, true); sdlManager.getScreenManager().setPrimaryGraphic(artwork); sdlManager.getScreenManager().commit(new CompletionListener() { @Override public void onComplete(boolean success) { if (success) { Log.i(TAG, "welcome show successful"); } } }); } @Override public void onEvent(SoftButtonObject softButtonObject, OnButtonEvent onButtonEvent) { } }); List<SoftButtonObject> buttons = Arrays.asList(softButtonObject1, softButtonObject2); //ϘλϯΛొ࿥͢Δ sdlManager.getScreenManager().setSoftButtonObjects(buttons); SdlService.javaͷ263ߦ໨ ը໘ͷλοϓΠϕϯτΛݕग़Ͱ͖Δ αϯϓϧ͸λοϓ͞ΕͨΒը૾Λมߋ͢Δ λοϓͯ͠มߋ͢Δը૾
  17. ࣗ༝ͳϨΠΞ΢τͰը໘Λ։ൃ͍ͨ͠ ❖ SDL։ൃΩοτʹεϚʔτϑΥϯͷը໘Λ౤ Ө͢Δ։ൃํ๏ʹͳΓ·͢ ❖ SDLίΞͷ໰୊Ͱ10ճλοϓ͢Δͱೝࣝ͠ͳ ͘ͳΔΒ͍͠ͷͰɺؾΛ͚ͭͯ! ❖ SDLͷղ૾౓͸800✖350Ͱ͕͢ɺϥζύΠ͸ 800✖480Ͱ͢ɻ͜ͷࠩʹؾΛ͚ͭͳ͍ͱԼଆ

    ͷλοϓ͕Ͱ͖ͳ͍ ❖ ͜ΜͳਓʹΦεεϝ ❖ AndroidΞϓϦͷ։ൃۤखɾɾɾ 
  18. ࠓճͷαϯϓϧͷ؀ڥߏ੒ w4%-։ൃΩοτͷ8J'Jʹܨ͙ͱ௨৴Ͱ͖ͳ͘ͳΔͨΊɺ64#઀ଓͱͳ͍ͬͯ·͢ɻ w"OESPJEΞϓϦͰऔಘͨ͠ίϯςϯπΛͦͷ··4%-։ൃΩοτʹදࣔ͠·͢ 64#έʔϒϧ ܞଳ௨৴ ΞϓϦͰ࡞ͬͨը໘Λͦͷ··౤Ө͢Δ͚ͩͷ࢓૊Έ

  19. AndroidΞϓϦͷ։ൃͱߏ଄తʹҧ͍ͬͯ͋Δͷʁ w"OESPJEΞϓϦΛ։ൃ͢ΔϓϩδΣΫτߏ଄ʹҧ͍͸͋Γ·ͤΜ w4%-ΞϓϦΛ։ൃ͢ΔͨΊʹɺґଘؔ܎ʹ4%-4%,Λࢦఆ͢ΔͷΈͱͳΓ·͢ CVJMEHSBEMFʹEFQFOEFODJFTʹTEMͷ4%,Λࢦఆ͢Δ ߏ଄͸ࠓ·Ͱ௨Γ "DUJWJUZҎ֎ʹ4%-ͬΆ͍ͷιʔε͕ͪΒ΄Β

  20. ͓खຊΛϕʔεʹΞϓϦΛ࡞Γ͍ͨɻͲ͍͜͡Δʁ w8FC7JFXʹͳ͍ͬͯΔՕॴΛ"OESPJEωΠςΟϒͷϘλϯ΍ςΩετΛ഑ஔ͢Ε͹ɺωΠςΟϒ ը໘Λ4%-ʹදࣔ͢Δ͜ͱ͸ՄೳͰ͢ 63-Λಠࣗͷ8FCαΠτʹมߋ͢Δ 4EM4FSWJDFΛجຊ৮Δ webView1.loadUrl("https://youtu.be/Z44jE7f1amw?list=PLZeNrjPGMduVzURgZnHGaBV-6_TTwU5th"); SdlService.javaͷ265ߦ໨ αϯϓϧ͸WebViewʹͳͬͯ ͍Δ

  21. ΫϧϚͷٖࣅσʔλΛ࢖ͬͨΞϓϦ͕։ൃ͍ͨ͠ ❖ ຊαϯϓϧ͸ɺSDL։ൃΩοτͰ͸ͳ͘Ϋϥ ΢υܕͷ։ൃΩοτͰ͋ΔʮManticoreʯΛར ༻͠·͢ ❖ ʮManticoreʯͰɺΫϧϚ͔ΒऔಘͰ͖Δσʔ λΛ໛ٖͯ͠ɺSDLΞϓϦʹૹ৴͢Δ͜ͱ͕ Ͱ͖·͢ʢຊ౰͸ຊ෺ͷं͕࢖͍͔ͨͬͨʣ ❖

    ͜ΜͳਓʹΦεεϝ ❖ ΫϧϚ͔Βऔಘͨ͠σʔλΛ࢖ͬͨωλ͕ ΍Γ͍ͨɻ͔͠΋ɺ΄΅ϦΞϧλΠϜͰɻ ̏
  22. ࠓճͷαϯϓϧͷ؀ڥߏ੒ wεϚϗ͔Β4%-αΠτͷʮ.BOUJDPSFʯʹ઀ଓͯ͠ɺΞϓϦͷը໘Λ౤Ө͠·͢ ܞଳ௨৴ 4%-αΠτ্ͷʮ.BOUJDPSFʯ

  23. AndroidΞϓϦͷ։ൃͱߏ଄తʹҧ͍ͬͯ͋Δͷʁ w"OESPJEΞϓϦΛ։ൃ͢ΔϓϩδΣΫτߏ଄ʹҧ͍͸͋Γ·ͤΜ w4%-ΞϓϦΛ։ൃ͢ΔͨΊʹɺґଘؔ܎ʹ4%-4%,Λࢦఆ͢ΔͷΈͱͳΓ·͢ CVJMEHSBEMFʹEFQFOEFODJFTʹTEMͷ4%,Λࢦఆ͢Δ ߏ଄͸ࠓ·Ͱ௨Γ "DUJWJUZҎ֎ʹ4%-ͬΆ͍ͷιʔε͕ͪΒ΄Β

  24. Manticore͸Ͳ͜ʹΞΫηε͢Ε͹͍͍ͷʁ wϢʔβʔొ࿥͕ඞཁͱͳΓ·͢ͷͰɺࣄલࢿྉͷखॱʹԊͬͯ4%-Ϣʔβొ࿥Λ͓ئ͍͠·͢ 4%-αΠτʹΞΫηε ҎԼͷ63-Λϒϥ΢βͰ։͖·͢ IUUQTXXXTNBSUEFWJDFMJOLDPN ˞Ϣʔβʔొ࿥ࡁΈͰ͔͢ʁ <.BOUJDPSF>Λબ୒ ϝχϡʔόʔʹ͋Δʮ.BOUJDPSFʯΛ બ୒͢Δ͔ɺҎԼͷ63-ʹΞΫηε IUUQTXXXTNBSUEFWJDFMJOLDPN

    SFTPVSDFTNBOUJDPSF ̏<-"/$)."/5*$03&>Λબ୒ Լهͷؙ͕͍͍ͭͯΔՕॴΛΫϦοΫ ͢Δ
  25. ManticoreͱAndroidΞϓϦΛͭͳ͙࣌ͷ஫ҙ఺ w.BOUJDPSF͸̏̌෼ແૢ࡞ঢ়ଶͩͱ੾அ͢Δ͔ɺܧଓ͢Δ͔ͷϙοϓΞοϓ͕දࣔ͞Ε·͢ɻ w༨༟͕͋Δํ͸ɺ"OESPJEΞϓϦଆͰϙʔτ൪߸ΛखଧͪͰ͖ΔΑ͏ʹͨ͠ํ͕͍͍͔΋ɻ ઀ଓ͢Δͱຖճϙʔτ൪߸͕ มΘΔ private static final int TCP_PORT

    = 16589; private static final String DEV_MACHINE_IP_ADDRESS = "m.sdl.tools"; SdlService.javaͷ60ߦ໨ Manticoreʹͭͳ͙౓ʹमਖ਼͕ඞཁ
  26. ManticoreͷσʔλΛͲ͏ΞϓϦͰऔಘ͍ͯ͠Δʁ //͜ΕΛ͢Δͱఆظతʹσʔλ͕औಘՄೳ sdlManager.addOnRPCNotificationListener(FunctionID.ON_VEHICLE_DATA, new OnRPCNotificationListener() { @Override public void onNotified(RPCNotification

    notification) { OnVehicleData onVehicleDataNotification = (OnVehicleData) notification; sdlManager.getScreenManager().beginTransaction(); SdlArtwork artwork = null; //ճస਺͕3000Ҏ্͔ɺҎԼͰը૾Λ੾Γସ͑Δ Integer rpm = onVehicleDataNotification.getRpm(); ͜ͷ෦෼ͷΤϯδϯճస਺Λ औಘ͢Δ SdlService.javaͷ172ߦ໨ wTEM.BOBHFSBEE0O31$/PUJpDBUJPO-JTUFOFSʹΑΓఆظతʹΫϧϚͷσʔλ͕औಘՄೳ wPO7FIJDMF%BUB/PUJpDBUJPO͔ΒɺΫϧϚͷσʔλΛऔΓग़͢͜ͱ͕Ͱ͖Δ ͜͜Ͱճస਺Λऔಘ͍ͯ͠Δ
  27. ఆظతʹऔಘ͢Δσʔλ͸ඞͣઃఆ͢Δඞཁ͋Γ //͜ΕΛ͢Δͱఆظతʹσʔλ͕औಘՄೳ SubscribeVehicleData subscribeRequest = new SubscribeVehicleData(); subscribeRequest.setRpm(true); //Τϯδϯճస਺ subscribeRequest.setPrndl(true);

    //γϑτϨʔόͷঢ়ଶ subscribeRequest.setOnRPCResponseListener(new OnRPCResponseListener() { @Override public void onResponse(int correlationId, RPCResponse response) { if (response.getSuccess()) { Log.i("SdlService", "Successfully subscribed to vehicle data."); } else { Log.i("SdlService", "Request to subscribe to vehicle data was rejected."); } } }); sdlManager.sendRPC(subscribeRequest); ͜ͷ෦෼ͷΤϯδϯճస਺Λ औಘ͢Δ SdlService.javaͷ366ߦ໨ w͜ͷઃఆΛ͍ͯ͠ͳ͍ͱΫϧϚͷσʔλΛఆظऔಘͰ͖ͳ͍ͷͰ͝஫ҙ͍ͩ͘͞ɻ w߲໨Λ૿΍͢ͷ͸ɺTVCTDSJCF3FRVFTUTFUऔΓ͍߲ͨ໨໊ USVF Ͱ0,Ͱ͢ɻ ߲໨͝ͱʹTrueΛઃఆ
  28. ं྆σʔλ ϝιου ܕ આ໌ GPS getGps GPSData Ң౓ɺܦ౓ɺ଎౓ͳͲͷGPSσʔλ ଎౓ getSpeed

    Double ं଎(KPH) RPM getRpm Integer Τϯδϯͷຖ෼ճస਺ ೩ྉϨϕϧ getFuelLevel Double λϯΫ಺ͷ೩ྉϨϕϧʢύʔηϯτʣ ೩ྉϨϕϧঢ়ଶ getFuelLevel_State ComponentVolumeStatus ೩ྉϨϕϧͷঢ়ଶ ೩ྉൣғ getFuelRange List< FuelRange > ೩ྉϨϕϧͱফඅྔʹج͍ͮͯं͕྆૸ߦͰ͖Δkmͷ ਪఆൣғ Πϯελϯτ೩අ getInstantFuelConsumption Double ϚΠΫϩϦοτϧͰͷॠؒతͳ೩ྉফඅྔ ֎ؾԹ getExternalTemperature Double ઁࢯԹ౓Ͱͷ֎෦Թ౓ VIN getVin String ं྆ࣝผ൪߸ PRNDL getPrndl PRNDL બ୒͞ΕͨΪΞ λΠϠۭؾѹ getTirePressure TireStatus ं྆ͷ֤ϗΠʔϧͷλΠϠঢ়ଶ Φυϝʔλʔ getOdometer Integer ૸ߦڑ཭ܭ(Km) ϕϧτঢ়ଶ getBeltStatus BeltStatus ֤γʔτϕϧτͷঢ়ଶ ϘσΟ৘ใ getBodyInformation BodyInformation ֤ंମͷঢ়ଶʢυΞ΍ɺ఺ՐεςʔλεͳͲʣ ं྆σʔλ ϝιου ܕ આ໌ σόΠεεςʔλε getDeviceStatus DeviceStatus εϚʔτϑΥϯσόΠεʹؔ͢Δ৘ใ ӡసऀϒϨʔΩ getDriverBraking VehicleDataEventSt atus ϒϨʔΩϖμϧͷঢ়ଶ ϫΠύʔঢ়ଶ getWiperStatus WiperStatus ϫΠύʔͷঢ়ଶ ϔουϥϯϓͷঢ়ଶ getHeadLampStatus HeadLampStatus ϔουϥϯϓͷঢ়ଶ ΤϯδϯτϧΫ getEngineTorque Double σΟʔθϧҎ֎ͷΤϯδϯͷτϧΫ஋ ʢNmʣ ΤϯδϯΦΠϧͷण ໋ getEngineOilLife Float Τϯδϯͷ࢒ଘΦΠϧण໋ͷਪఆׂ߹ ΞΫηϧϖμϧҐஔ getAccPedalPosition Double ΞΫηϧϖμϧͷҐஔʢύʔηϯτʣ ϋϯυϧ֯ getSteeringWheelAng le Double εςΞϦϯάϗΠʔϧͷݱࡏͷ֯౓ ʢ౓ʣ Eίʔϧ৘ใ getECallInfo ECallInfo ۓٸ௨ใͷঢ়گʹؔ͢Δ৘ใ ΤΞόοάͷঢ়ଶ getAirbagStatus AirbagStatus ं྆಺ͷ֤ΤΞόοάͷঢ়ଶ ۓٸΠϕϯτ getEmergencyEvent EmergencyEvent ۓٸͷঢ়گ ΫϥελϞʔυͷঢ় ଶ getClusterModeStatus ClusterModeStatus ిྗϞʔυ͕ΞΫςΟϒ͔Ͳ͏͔ My Key getMyKey MyKey ۓٸ911ͳͲͷ৘ใ ΢ΠϯΧʔ getTurnSignal TurnSignal ํ޲ࢦࣔثͷঢ়ଶ ిࢠύʔΩϯάϒϨ ʔΩͷঢ়ଶ getElectronicParkBrak eStatus ElectronicParkBrak eStatus ύʔΫϒϨʔΩͷεςʔλε wϝιουͷྻʹHFUͱॻ͍ͯ·͕͢ɺఆظతʹऔಘ͍ͨ͠σʔλ͸HFUΛTFUʹಡΈସ͑ͯ5SVFઃఆ ͍ͯͩ͘͠͞ ΫϧϚ(Manticore)͔ΒऔಘͰ͖ΔΫϧϚͷσʔλ
  29. ΫϧϚͷٖࣅσʔλΛΫϥ΢υʹ஝ੵ͍ͨ͠ ❖ ʮ̏.ΫϧϚͷٖࣅσʔλΛ࢖ͬͨΞϓϦ͕ ։ൃ͍ͨ͠ʯͱ΄΅ಉ͡Ͱ͕͢ɺSDLΞϓ Ϧ͔ΒผͷΫϥ΢υ؀ڥʹσʔλΛ஝ੵ͠ ͨ৔߹ʹ͍ͭͯ঺հ͠·͢ ❖ ͜ΜͳਓʹΦεεϝ ❖ ΫϧϚ͔Βऔಘͨ͠σʔλΛ࢖ͬͨωλ

    ͕΍Γ͍ͨɻ͔͠΋ɺσʔλΛ஝ੵͯ͠ ผͷαʔϏεͱͯ͠ɻ 
  30. ࠓճͷαϯϓϧͷ؀ڥߏ੒ wεϚϗ͔Β4%-αΠτͷʮ.BOUJDPSFʯʹ઀ଓͯ͠ɺΞϓϦͷը໘Λ౤Ө͠·͢ wʮ.BOUJDPSFʯ্Ͱऔಘͨ͠ΫϧϚͷσʔλΛผͷαʔϏεʹ)551Ͱϙετ͠·͢ ܞଳ௨৴ 4%-αΠτ্ͷʮ.BOUJDPSFʯ ܞଳ௨৴ ผͷαʔϏε

  31. σϞ wࠓճ͸ɺ.BOUJDPSFͰૢ࡞ͨ͠Τϯδϯճస਺Λఆظతʹ*#.$-06%ʹ)5511045͢Δαϯϓ ϧͰ͢ɻ ϜʔϏʔͰ͢ͷͰɺ౰೔ಈ͖Λݟͤ·͢

  32. Ͳ͏΍ͬͯผͷαʔϏεʹσʔλΛૹ͍ͬͯΔ͔ʁ public void doPost(String url,String engineRPM) throws IOException { final

    FormBody.Builder formBodyBuilder = new FormBody.Builder(); //POST͢Δσʔλ formBodyBuilder.add("engine", engineRPM); final Request request = new Request.Builder() .url(url) .header("User-Agent", "SDL client") .post(formBodyBuilder.build()) .build(); OkHttpClient client = new OkHttpClient.Builder() .build(); //ಉظݺͼग़͠ Response response = client.newCall(request).execute(); } w0L)UUQͷϥΠϒϥϦΛ׆༻ͯ͠ɺࢦఆͷ63-ʹ1045͍ͯ͠·͢ɻ wࢦఆͷ63-Λมߋ͢Ε͹ɺ //͜ΕΛ͢Δͱఆظతʹσʔλ͕औಘՄೳ sdlManager.addOnRPCNotificationListener(FunctionID.ON_VEHICLE_DATA, new OnRPCNotificationListener() { @Override public void onNotified(RPCNotification notification) { OnVehicleData onVehicleDataNotification = (OnVehicleData) notification; sdlManager.getScreenManager().beginTransaction(); //Τϯδϯճస਺ΛࢦఆURLʹHTTP POST͢Δ try { //FIXME POST͢ΔURLΛॻ͍ͯͶ doPost("https://υϝΠϯ",onVehicleDataNotification.getRpm().toString()); } catch (IOException e) { //FIXME ͪΌΜͱΤϥʔॲཧͯ͠Ͷ e.printStackTrace(); } SdlService.javaͷ225ߦ໨ ͜͜ͰURLͱσʔλΛηοτ͍ͯ͠Δ SdlService.javaͷ95ߦ໨ POSTσʔλͱͯ͠ηοτ
  33. ΫϧϚͷऔಘ߲໨Λ૿΍͢ͷ͸ɺ3ষͱಉ͡ //͜ΕΛ͢Δͱఆظతʹσʔλ͕औಘՄೳ SubscribeVehicleData subscribeRequest = new SubscribeVehicleData(); subscribeRequest.setRpm(true); //Τϯδϯճస਺ subscribeRequest.setPrndl(true);

    //γϑτϨʔόͷঢ়ଶ subscribeRequest.setOnRPCResponseListener(new OnRPCResponseListener() { @Override public void onResponse(int correlationId, RPCResponse response) { if (response.getSuccess()) { Log.i("SdlService", "Successfully subscribed to vehicle data."); } else { Log.i("SdlService", "Request to subscribe to vehicle data was rejected."); } } }); sdlManager.sendRPC(subscribeRequest); ͜ͷ෦෼ͷΤϯδϯճస਺Λ औಘ͢Δ SdlService.javaͷ429ߦ໨ w߲໨Λ૿΍͢ͷ͸ɺTVCTDSJCF3FRVFTUTFUऔΓ͍߲ͨ໨໊ USVF Ͱ0,Ͱ͢ɻ ߲໨͝ͱʹTrueΛઃఆ