ๅทฒ่งฃๅ†ณ๏ผš็”จๅ€ผๅˆๅง‹ๅŒ–ๅˆ—่กจ

ๅฝ“็„ถ๏ผŒ่ฎฉๆˆ‘ไปฌๅผ€ๅง‹ๅ†™ๆ–‡็ซ ๅงใ€‚

็”จๅ€ผๅˆๅง‹ๅŒ–ๅˆ—่กจ ๅœจJavaไธญๆ˜ฏๅผ€ๅ‘่€…ๅธธ็”จ็š„ๆ“ไฝœใ€‚ๆˆ‘ไปฌ็ปๅธธ็œ‹ๅˆฐ Java ็จ‹ๅบๅ‘˜ๅฟ…้กปๅค„็†่ฏธๅฆ‚ๅˆ›ๅปบๅˆ—่กจใ€ๅ‘ๅˆ—่กจๆทปๅŠ ๅ€ผไปฅๅŠ็„ถๅŽๅฏนๅˆ—่กจๆ‰ง่กŒๆ“ไฝœไน‹็ฑป็š„ๆ“ไฝœใ€‚ๅฆ‚ๆžœๅค„็†ไธๅฝ“๏ผŒ่ฟ™ไธช่ฟ‡็จ‹ๅฏ่ƒฝไผšๅพˆ็ƒฆไบบใ€‚ๅ› ๆญค๏ผŒไบ†่งฃ็”จๅ€ผๅˆๅง‹ๅŒ–ๅˆ—่กจ็š„ๆœ‰ๆ•ˆๆ–นๆณ•ๅฏไปฅๆ˜พ็€็ฎ€ๅŒ–็ผ–็จ‹ไปปๅŠกใ€‚

ๆœฌๆ–‡ๅฐ†ๅธฎๅŠฉๆ‚จไบ†่งฃๅฆ‚ไฝ•ไฝฟ็”จๅ„็งๆ–นๆณ•ๅ’Œๅบ“ๅœจ Java ไธญ็”จๅ€ผๅˆๅง‹ๅŒ–ๅˆ—่กจใ€‚

้˜…่ฏปๆ›ดๅคš

ๅทฒ่งฃๅ†ณ๏ผšๆตไธญ็š„ๅญ—็ฌฆไธฒ่ฟžๆŽฅๅ™จ

ๅœจ Java ไธญ๏ผŒไฝฟ็”จๆตๅ’Œๅญ—็ฌฆไธฒๆ˜ฏๅผ€ๅ‘ไบบๅ‘˜ๆ—ฅๅธธๅทฅไฝœ็š„้‡่ฆ็ป„ๆˆ้ƒจๅˆ†ใ€‚ StringJoiner ็ฑปๅœจ่ฟ™็งๆƒ…ๅ†ตไธ‹็š„ๅŠŸ่ƒฝไธๅฏไฝŽไผฐใ€‚ StringJoiner ๆ˜ฏๅœจ Java 8 ไธญๅผ•ๅ…ฅ็š„ไธ€ไธชๅฎž็”จ็จ‹ๅบ็ฑป๏ผŒๅฎƒๆž„้€ ไธ€ไธช็”ฑๅˆ†้š”็ฌฆๅˆ†้š”็š„ๅญ—็ฌฆๅบๅˆ—๏ผŒๅนถไธ”ๅฏไปฅ้€‰ๆ‹ฉ็”จๅ‰็ผ€ๅ’ŒๅŽ็ผ€ๆ‹ฌ่ตทๆฅใ€‚่ฟ™ๆœ‰ๅŠฉไบŽๅฎŒๆˆ่ฏธๅฆ‚้€š่ฟ‡ๅˆ†้š”็ฌฆ่ฟžๆŽฅๅญ—็ฌฆไธฒๆˆ–ๆ ‡่ฎฐๆต็ญ‰ไปปๅŠก๏ผŒๅฐคๅ…ถๆ˜ฏๅœจไฝฟ็”จ Streams API ๆ—ถใ€‚

่ฏฅๅฎž็”จ็จ‹ๅบๆž„ๅปบๅœจ java.util ๅŒ…ไธ‹๏ผŒๅ…ทๆœ‰็ฎ€ๅ•ๆ€งใ€้ซ˜ๆ•ˆๆ€งๅ’Œ็ตๆดปๆ€ง๏ผŒๅ› ๆญคไฝฟๅ…ถๆˆไธบๅผ€ๅ‘ไบบๅ‘˜็š„้‡่ฆๅทฅๅ…ทใ€‚ StringJoiner ็ฑปๆถˆ้™คไบ†ๆ‰‹ๅŠจๅค„็†ๅˆ†้š”็ฌฆ็š„็น็่ฟ‡็จ‹๏ผŒๆ˜พ็€ๅ‡ๅฐ‘ไบ†ๅ‡บ้”™็š„ๆœบไผšใ€‚

้˜…่ฏปๆ›ดๅคš

่งฃๅ†ณ๏ผš้€‰ๆ‹ฉ้šๆœบๆžšไธพ

ไฝœไธบไธ€ๅ็ป้ชŒไธฐๅฏŒ็š„ Java ๅผ€ๅ‘ไบบๅ‘˜ๅ’Œๆ—ถๅฐš้‰ด่ตๅฎถ๏ผŒๆˆ‘ไปฌ็ปๅธธๆ‰ฟๆ‹…ไธบๅคๆ‚้—ฎ้ข˜ๅˆ›ๅปบ็‹ฌ็‰น่งฃๅ†ณๆ–นๆกˆ็š„ไปปๅŠกใ€‚่ฟ™ๆ ท็š„ๅ›ฐๅขƒไน‹ไธ€ๆ˜ฏไปŽ Java ไธญ็š„ๆžšไธพ (Enum) ไธญ่ฟ›่กŒ้šๆœบ้€‰ๆ‹ฉใ€‚ๆ‚จๅฏ่ƒฝๅทฒ็ป็Œœๅˆฐ๏ผŒJava ไธญๆฒกๆœ‰ๅ†…็ฝฎๆ–นๆณ•ๅฏไปฅ็›ดๆŽฅๆไพ›ๆญคๅŠŸ่ƒฝโ€”โ€”่ฟ™ๆ˜ฏ Python ็ญ‰่ฏญ่จ€ไธญ็š„ๅธธ่งๅŠŸ่ƒฝใ€‚ๅฐฝ็ฎกๅฆ‚ๆญค๏ผŒJava ่ฟ˜ๆ˜ฏไธบๆˆ‘ไปฌๆไพ›ไบ†ๅฟ…่ฆ็š„ๅทฅๅ…ทๆฅๆž„ๅปบๆˆ‘ไปฌ่‡ชๅทฑ็š„่งฃๅ†ณๆ–นๆกˆใ€‚

ๆžšไธพๆ˜ฏ่ฎธๅคš็จ‹ๅบ็š„ๆ— ๅ่‹ฑ้›„๏ผŒๆœฌ่ดจไธŠๆ˜ฏไธ€็ง็ฑปๅž‹๏ผŒๅ…ถๅญ—ๆฎต็”ฑไธ€็ป„ๅ›บๅฎš็š„ๅธธ้‡็ป„ๆˆใ€‚้€šๅธธๆˆ‘ไปฌๅธŒๆœ›ไปŽ่ฏฅ้›†ๅˆไธญ้€‰ๆ‹ฉไธ€ไธช้šๆœบๅ€ผใ€‚ๆœฌๆ–‡็š„็›ฎ็š„ๆ˜ฏ่ฏดๆ˜Ž่ฟ™ไธช่ฟ‡็จ‹ใ€‚

้˜…่ฏปๆ›ดๅคš

่งฃๅ†ณ๏ผšๅฆ‚ไฝ•ๆฃ€ๆŸฅไฝ็ฝฎๆ˜ฏๅฆๅฏ็”จandroid

ๆ’ฐๅ†™ๆœ‰ๅ…ณๅฆ‚ไฝ•ๆฃ€ๆŸฅ Android ่ฎพๅค‡ไธŠๆ˜ฏๅฆๅฏ็”จไฝ็ฝฎ็š„่ฏฆ็ป†ๆ–‡็ซ ๅฏ่ƒฝ้œ€่ฆๅฏน Java ็ผ–็จ‹ๅ’ŒไธๅŒ Android ๅบ“็š„ไฝฟ็”จๆœ‰ๆทฑๅ…ฅ็š„ไบ†่งฃใ€‚ๅ› ๆญค๏ผŒ่ฎฉๆˆ‘ไปฌๆทฑๅ…ฅ็ ”็ฉถไธ€ไธ‹ใ€‚

ๅœจๅฝ“ไปฃ็งปๅŠจๅบ”็”จ็จ‹ๅบ็Žฏๅขƒไธญ๏ผŒ่ฎฟ้—ฎ็”จๆˆทไฝ็ฝฎๅฏนไบŽๆ นๆฎ็”จๆˆทๅœฐ็†ไฝ็ฝฎๆไพ›ไธชๆ€งๅŒ–ไฝ“้ชŒๅ˜ๅพ—่‡ณๅ…ณ้‡่ฆใ€‚ๆญคๅŠŸ่ƒฝๅœจ Android ้ฉฑๅŠจ็š„่ฎพๅค‡ไธญๅคง้‡ๅฏ็”จใ€‚็„ถ่€Œ๏ผŒ็กฎๅฎšไฝ็ฝฎๆ˜ฏๅฆๅฏ็”จไนŸๆ˜ฏไธ€ไธชๅ…ณ้”ฎๆ–น้ขใ€‚

public boolean isLocationEnabled(Context context) {
    int locationMode = 0;
    String locationProviders;

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        try {
            locationMode = Settings.Secure.getInt(context.getContentResolver(), Settings.Secure.LOCATION_MODE);

        } catch (Settings.SettingNotFoundException e) {
            e.printStackTrace();
        }

        return locationMode != Settings.Secure.LOCATION_MODE_OFF;

    } else {
        locationProviders = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
        return !TextUtils.isEmpty(locationProviders);
    }
}

็†่งฃไปฃ็ 

ไธŠ้ข็ป™ๅ‡บ็š„ไปฃ็ ้€š่ฟ‡ไธคไธชไธป่ฆๆญฅ้ชคๆฃ€ๆŸฅไฝ็ฝฎๆœๅŠกๆ˜ฏๅฆๅœจไปปไฝ• Android ่ฎพๅค‡ไธŠๅฏ็”จ๏ผš

โ€“ ๅฆ‚ๆžœ่ฎพๅค‡็‰ˆๆœฌไธบ KitKat ๆˆ–ๆ›ด้ซ˜็‰ˆๆœฌ๏ผŒๅฎƒไผšๅฐ่ฏ•่Žทๅ–ไฝ็ฝฎๆจกๅผ่ฎพ็ฝฎๅนถ้ชŒ่ฏๅ…ถๆ˜ฏๅฆไธบโ€œไฝ็ฝฎๆจกๅผๅ…ณ้—ญโ€ไปฅๅค–็š„่ฎพ็ฝฎใ€‚ๅฆ‚ๆžœๆ˜ฏ๏ผŒๅˆ™็กฎ่ฎค่ฏฅไฝ็ฝฎๅทฒๅฏ็”จใ€‚
โ€“ ๅฏนไบŽ่ฟ่กŒๆ—ฉไบŽ KitKat ็‰ˆๆœฌ็š„่ฎพๅค‡๏ผŒๅฎƒไผš่Žทๅ–ๅ…่ฎธ็š„ไฝ็ฝฎๆไพ›ๅ•†ๅˆ—่กจๅนถๆฃ€ๆŸฅๅฎƒๆ˜ฏๅฆๅฎŒๅ…จไธบ็ฉบใ€‚ๅฆ‚ๆžœๅˆ—่กจไธไธบ็ฉบ๏ผŒๅˆ™็กฎ่ฎค่ฏฅไฝ็ฝฎๅทฒๅฏ็”จใ€‚

ไธๅŒๅ›พไนฆ้ฆ†็š„ไฝœ็”จๅ’Œ่Œ่ƒฝ

ๅœจๆญคไปฃ็ ไธญ๏ผŒๆˆ‘ไปฌไฝฟ็”จไบ†ไธ€ไบ›็‰นๅฎš็š„ๅ‡ฝๆ•ฐๅ’Œๅบ“๏ผŒไธป่ฆๆฅ่‡ช Android ๅผ€ๅ‘ไบบๅ‘˜ๅทฅๅ…ทๅŒ…๏ผš

  • ๆž„ๅปบ.VERSION.SDK_INT๏ผš ่ฏฅๅญ—ๆฎตไฟๅญ˜่ฎพๅค‡ไธŠๅฝ“ๅ‰่ฟ่กŒ็š„ๅนณๅฐ็š„ SDK ็‰ˆๆœฌใ€‚
  • ่ฎพ็ฝฎ.ๅฎ‰ๅ…จ๏ผš ่ฏฅ็ฑป็ฎก็†ๅฏนๅ…จๅฑ€ๅฎ‰ๅ…จ็ณป็ปŸ่ฎพ็ฝฎ็š„่ฎฟ้—ฎ๏ผŒไธป่ฆๆ˜ฏๅฝฑๅ“็”จๆˆท้š็ง็š„็ณป็ปŸ่ฎพ็ฝฎใ€‚
  • ่ฎพ็ฝฎ.Secure.getInt๏ผš ๆญคๆ–นๆณ•่ฟ”ๅ›ž็ป™ๅฎšๅ็งฐ็š„ๅฎ‰ๅ…จๆ•ดๆ•ฐ่ฎพ็ฝฎๅ€ผใ€‚
  • ่ฎพ็ฝฎ.ๅฎ‰ๅ…จ.LOCATION_MODE๏ผš ่ฟ™็”จไบŽ่Žทๅ–ๅฝ“ๅ‰็š„ๅฎšไฝๆจกๅผ่ฎพ็ฝฎใ€‚
  • Settings.Secure.LOCATION_PROVIDERS_ALLOWED๏ผš ่Žทๅ–ๅ…่ฎธ็š„ไฝ็ฝฎๆไพ›ๅ•†็š„ๅˆ—่กจใ€‚

้˜…่ฏปๆ›ดๅคš

ๅทฒ่งฃๅ†ณ๏ผš lerp

็บฟๆ€งๆ’ๅ€ผ๏ผˆ้€šๅธธ็งฐไธบ Lerp๏ผ‰ๆ˜ฏไธ€็ง็”จไบŽ่ฎก็ฎ—็›ด็บฟๆˆ–ๆ›ฒ็บฟไธŠๅ…ถไป–ไธค็‚นไน‹้—ด็š„็‚น็š„ๆ–นๆณ•ใ€‚่ฏฅๆŠ€ๆœฏๅนฟๆณ›ๅบ”็”จไบŽ่ฎก็ฎ—ๆœบๅ›พๅฝขๅ’Œๆธธๆˆๅผ€ๅ‘็ญ‰ไธๅŒ้ข†ๅŸŸใ€‚ๅœจๆœฌๆ–‡ไธญ๏ผŒๆˆ‘ไปฌๅฐ†ๆทฑๅ…ฅๆŽข่ฎจ Lerp ๆ˜ฏไป€ไนˆไปฅๅŠๅฆ‚ไฝ•ๅœจ Java ไธญๅฎž็Žฐๅฎƒใ€‚

้˜…่ฏปๆ›ดๅคš

ๅทฒ่งฃๅ†ณ๏ผšๆ— ๆณ•ๅˆๅง‹ๅŒ–็ฑป org.codehaus.groovy.vmplugin.VMPluginFactory

ๅฝ“็„ถ๏ผŒๆˆ‘็†่งฃไฝ ็š„่ฆๆฑ‚ใ€‚ๆˆ‘ๅฐ†ๅ†™ไธ€็ฏ‡ๅ…ณไบŽโ€œๆ— ๆณ•ๅˆๅง‹ๅŒ–็ฑป org.codehaus.groovy.vmplugin.VMPluginFactoryโ€ไธป้ข˜็š„ๆ–‡็ซ ๏ผŒๅŒ…ๆ‹ฌไป‹็ปใ€่งฃๅ†ณๆ–นๆกˆใ€ไปฃ็ ่งฃ้‡Šๅ’Œๆ ‡ๅคด็š„ไฝฟ็”จใ€‚

ไป‹็ป
Java ๅ…่ฎธๅผ€ๅ‘ไบบๅ‘˜ๅˆ›ๅปบๅคšๅŠŸ่ƒฝๅบ”็”จ็จ‹ๅบใ€‚็„ถ่€Œ๏ผŒไป–ไปฌ็ปๅธธ้‡ๅˆฐไธ€ไธชๅธธ่ง็š„ๅˆๅง‹ๅŒ–้”™่ฏฏโ€”โ€”โ€œๆ— ๆณ•ๅˆๅง‹ๅŒ–็ฑป org.codehaus.groovy.vmplugin.VMPluginFactoryโ€ใ€‚ๆญค้”™่ฏฏ้€šๅธธๆ˜ฏ็”ฑไบŽ Java ๅผ€ๅ‘ๅทฅๅ…ทๅŒ… (JDK) ็ผบๅคฑๆˆ–ไธๅ…ผๅฎน่€Œๅฏผ่‡ดใ€‚ไธบไบ†ๆ›ดๅฅฝๅœฐ็†่งฃ๏ผŒๆœ‰ๅฟ…่ฆๆทฑๅ…ฅ็ ”็ฉถ่ฟ™ไธช้—ฎ้ข˜ๅŠๅ…ถ่งฃๅ†ณๆ–นๆกˆใ€‚

้˜…่ฏปๆ›ดๅคš

่งฃๅ†ณ๏ผšๆฃ€ๆŸฅlinux็‰ˆๆœฌ

ๅฝ“็„ถ๏ผŒๆˆ‘ไปฌๅ…ˆไปŽไธป้ข˜ๅผ€ๅง‹ๅงใ€‚

ไป‹็ป

Linux ๆ˜ฏไธ€็ณปๅˆ—ๅŸบไบŽ Linux ๅ†…ๆ ธ็š„ๅผ€ๆบ็ฑป Unix ๆ“ไฝœ็ณป็ปŸใ€‚ๆฃ€ๆŸฅๆญฃๅœจ่ฟ่กŒ็š„ Linux ็‰ˆๆœฌ็š„่ฟ‡็จ‹ๆ˜ฏ็ปดๆŠค็ณป็ปŸ็š„้‡่ฆ็ป„ๆˆ้ƒจๅˆ†๏ผŒๅฎƒๅฏไปฅๅธฎๅŠฉๆ‚จๆœ‰ๆ•ˆๅœฐ็ฎก็†ๆ›ดๆ–ฐๅ’Œ่งฃๅ†ณ้—ฎ้ข˜ใ€‚ๆœฌๆ–‡ๅฐ†ๆŒ‡ๅฏผๆ‚จๅฆ‚ไฝ•ๆฃ€ๆŸฅๆ‚จ็š„ Linux ็‰ˆๆœฌๅนถไบ†่งฃ็‰ˆๆœฌๆŽงๅˆถไธญๆถ‰ๅŠ็š„็‰นๅฎš็ป„ไปถ

้˜…่ฏปๆ›ดๅคš

ๅทฒ่งฃๅ†ณ๏ผšๆตฎๅŠจๅˆฐๅญ—็ฌฆไธฒ

ไบ†่งฃ Java ไธญๆตฎ็‚นๅž‹ๅˆฐๅญ—็ฌฆไธฒ็š„่ฝฌๆขใ€‚

ๅœจ Java ไธญๅฐ†ๆตฎ็‚นๆ•ฐ่ฝฌๆขไธบๅญ—็ฌฆไธฒๆ˜ฏ Java ็ผ–็จ‹่ฏญ่จ€็š„ไธ€ไธช้‡่ฆๆ–น้ข๏ผŒ็‰นๅˆซๆ˜ฏๅฏนไบŽๅค„็†ๆ•ฐๅญฆ่ฎก็ฎ—็š„็จ‹ๅบใ€‚ๆœ‰ๆ—ถ้œ€่ฆๅฐ†ๆ•ฐๅญ—่ฝฌๆขไธบๆ–‡ๆœฌๆ ผๅผ๏ผŒไปฅไพฟๅฐ†ๅ…ถๆญฃ็กฎๆ˜พ็คบ็ป™็”จๆˆทใ€ๅฐ†ๅ…ถๅญ˜ๅ‚จๅœจๆ•ฐๆฎๅบ“ไธญๆˆ–ไปฅๅ…ถไป–ๆ–นๅผๅฏนๅ…ถ่ฟ›่กŒๆ“ไฝœใ€‚

้˜…่ฏปๆ›ดๅคš

ๅทฒ่งฃๅ†ณ๏ผšๅๅธ็คบไพ‹

ๅฝ“็„ถ๏ผŒ่ฎฉๆˆ‘ไปฌ้ฆ–ๅ…ˆไฝฟ็”จ Java ็ผ–็จ‹ๆฅ่งฃ้‡Š็ผ–็จ‹ๆฆ‚ๅฟต - ไพ‹ๅฆ‚๏ผŒtoast ๆ˜ฏไธ€็งๅฟซ้€Ÿ้€š็Ÿฅๆถˆๆฏ๏ผŒไผšๅผนๅ‡บใ€ๆถˆๅคฑ๏ผŒๅนถไธ”ไธๆไพ›ไบคไบ’้€‰้กนใ€‚่ฟ™ไธชๆผ‚ไบฎ็š„ๅŠŸ่ƒฝๅœจ Android ๅบ”็”จ็จ‹ๅบไธญๅพˆๆ™ฎ้ใ€‚

ๆ—ถๅฐšๆญ้…ๆ˜ฏๅฐ†ๅๅธ่ง†ไธบไธ€็ง้…้ฅฐ๏ผŒๅฏไปฅๅขžๅผบๆ•ดไฝ“้€ ๅž‹๏ผŒไฝ†ๅˆไธไผšๅŽ‹ๅ€’ๆ•ดไฝ“้€ ๅž‹ใ€‚ๅฎƒๆ˜ฏ็Ÿญๆš‚ๅฏ่ง็š„๏ผŒๅขžๅผบไบ†็”จๆˆท็š„ไฝ“้ชŒ๏ผŒไฝ†ไธไผš่ฆๆฑ‚็”จๆˆทๅฐ†ๆณจๆ„ๅŠ›ไปŽไธป่ฆ็„ฆ็‚นไธŠ็งปๅผ€๏ผŒๅฐฑๅƒๅ•่‰ฒๅฅ—่ฃ…ไธญ็š„ไธ€ๅฏนไธชๆ€ง่€ณ็Žฏๆˆ–ๅคง่ƒ†็š„ๅฝฉ่‰ฒๆ‰‹ๆๅŒ…ไธ€ๆ ทใ€‚

้˜…่ฏปๆ›ดๅคš