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

็•ถ็„ถ๏ผŒ่ฎ“ๆˆ‘ๅ€‘้–‹ๅง‹ๅฏซๆ–‡็ซ ๅงใ€‚

็”จๅ€ผๅˆๅง‹ๅŒ–ๅˆ—่กจ ๅœจ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 ๆ‡‰็”จ็จ‹ๅผไธญๅพˆๅธธ่ฆ‹ใ€‚

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

ไบ†่งฃๆ›ดๅคš