ฤรฃ giแบฃi quyแบฟt: khแปŸi tแบกo danh sรกch vแป›i cรกc giรก trแป‹

Chแบฏc chแบฏn rแป“i, hรฃy bแบฏt ฤ‘แบงu viแบฟt bร i.

ฤang khแปŸi tแบกo danh sรกch cรณ giรก trแป‹ trong Java lร  mแป™t thao tรกc thฦฐแปng ฤ‘ฦฐแปฃc yรชu cแบงu ฤ‘แป‘i vแป›i cรกc nhร  phรกt triแปƒn. Ngฦฐแปi ta thฦฐแปng thแบฅy rแบฑng cรกc lแบญp trรฌnh viรชn Java phแบฃi xแปญ lรฝ cรกc thao tรกc nhฦฐ tแบกo danh sรกch, thรชm giรก trแป‹ vร o danh sรกch vร  sau ฤ‘รณ thแปฑc hiแป‡n cรกc thao tรกc trรชn danh sรกch. Quรก trรฌnh nร y cรณ thแปƒ gรขy mแป‡t mแปi nแบฟu khรดng ฤ‘ฦฐแปฃc xแปญ lรฝ thรญch hแปฃp. Do ฤ‘รณ, sแปฑ hiแปƒu biแบฟt vแป cรกc cรกch hiแป‡u quแบฃ ฤ‘แปƒ khแปŸi tแบกo danh sรกch vแป›i cรกc giรก trแป‹ cรณ thแปƒ hแปฃp lรฝ hรณa ฤ‘รกng kแปƒ cรกc tรกc vแปฅ lแบญp trรฌnh.

Bร i viแบฟt sแบฝ cung cแบฅp sแปฑ hiแปƒu biแบฟt vแป cรกch khแปŸi tแบกo danh sรกch vแป›i cรกc giรก trแป‹ trong Java bแบฑng nhiแปu phฦฐฦกng phรกp vร  thฦฐ viแป‡n khรกc nhau.

Tรฌm hiแปƒu thรชm vแป PNV

ฤรฃ giแบฃi quyแบฟt: Nแป‘i chuแป—i trong luแป“ng

Trong Java, lร m viแป‡c vแป›i luแป“ng vร  chuแป—i lร  mแป™t phแบงn thiแบฟt yแบฟu trong cรดng viแป‡c hร ng ngร y cแปงa nhร  phรกt triแปƒn. Khรดng thแปƒ ฤ‘รกnh giรก thแบฅp chแปฉc nฤƒng cแปงa lแป›p StringJoiner trong bแป‘i cแบฃnh nร y. ฤฦฐแปฃc giแป›i thiแป‡u trong Java 8, StringJoiner lร  mแป™t lแป›p tiแป‡n รญch xรขy dแปฑng mแป™t chuแป—i cรกc kรฝ tแปฑ ฤ‘ฦฐแปฃc phรขn tรกch bแบฑng dแบฅu phรขn cรกch vร  ฤ‘ฦฐแปฃc bao quanh tรนy รฝ bแปŸi tiแปn tแป‘ vร  hแบญu tแป‘. ฤiแปu nร y hแป— trแปฃ ฤ‘แบกt ฤ‘ฦฐแปฃc cรกc tรกc vแปฅ nhฦฐ nแป‘i mแป™t luแป“ng chuแป—i hoแบทc mรฃ thรดng bรกo bแบฑng dแบฅu phรขn cรกch, ฤ‘แบทc biแป‡t lร  khi lร m viแป‡c vแป›i API luแป“ng.

Tiแป‡n รญch nร y ฤ‘ฦฐแปฃc xรขy dแปฑng theo gรณi java.util, thแปƒ hiแป‡n tรญnh ฤ‘ฦกn giแบฃn, hiแป‡u quแบฃ vร  tรญnh linh hoแบกt, do ฤ‘รณ khiแบฟn nรณ trแปŸ thร nh mแป™t cรดng cแปฅ quan trแปng ฤ‘แป‘i vแป›i cรกc nhร  phรกt triแปƒn. Lแป›p StringJoiner loแบกi bแป quy trรฌnh xแปญ lรฝ thแปง cรดng cรกc dแบฅu phรขn cรกch rฦฐแปm rร , giแบฃm ฤ‘รกng kแปƒ khแบฃ nฤƒng xแบฃy ra lแป—i.

Tรฌm hiแปƒu thรชm vแป PNV

ฤรฃ giแบฃi quyแบฟt: chแปn enum ngแบซu nhiรชn

Lร  mแป™t Nhร  phรกt triแปƒn Java giร u kinh nghiแป‡m vร  lร  ngฦฐแปi sร nh thแปi trang, chรบng tรดi thฦฐแปng ฤ‘ฦฐแปฃc giao nhiแป‡m vแปฅ tแบกo ra cรกc giแบฃi phรกp ฤ‘แป™c ฤ‘รกo cho cรกc vแบฅn ฤ‘แป phแปฉc tแบกp. Mแป™t vแบฅn ฤ‘แป nan giแบฃi nhฦฐ vแบญy lร  viแป‡c lแปฑa chแปn ngแบซu nhiรชn tแปซ mแป™t bแบฃng liแป‡t kรช (Enum) trong Java. Bแบกn cรณ thแปƒ ฤ‘รฃ ฤ‘oรกn rแบฑng khรดng cรณ phฦฐฦกng thแปฉc tรญch hแปฃp nร o trong Java cung cแบฅp trแปฑc tiแบฟp chแปฉc nฤƒng nร y - mแป™t tรญnh nฤƒng phแป• biแบฟn trong cรกc ngรดn ngแปฏ nhฦฐ Python. Mแบทc dรน vแบญy, Java vแบซn cung cแบฅp cho chรบng ta nhแปฏng cรดng cแปฅ cแบงn thiแบฟt ฤ‘แปƒ tแบกo ra giแบฃi phรกp cแปงa riรชng mรฌnh.

Kiแปƒu liแป‡t kรช, nhแปฏng anh hรนng thแบงm lแบทng cแปงa nhiแปu chฦฐฦกng trรฌnh, vแป cฦก bแบฃn lร  mแป™t kiแปƒu cรณ trฦฐแปng bao gแป“m mแป™t tแบญp hแปฃp cรกc hแบฑng sแป‘ cแป‘ ฤ‘แป‹nh. Thรดng thฦฐแปng chรบng ta muแป‘n chแปn mแป™t giรก trแป‹ ngแบซu nhiรชn tแปซ tแบญp hแปฃp nร y. Mแปฅc ฤ‘รญch cแปงa bร i viแบฟt nร y lร  ฤ‘แปƒ minh hแปa quรก trรฌnh nร y.

Tรฌm hiแปƒu thรชm vแป PNV

ฤรฃ giแบฃi quyแบฟt: cรกch kiแปƒm tra xem vแป‹ trรญ cรณ ฤ‘ฦฐแปฃc bแบญt trรชn Android khรดng

Viแบฟt mแป™t bร i viแบฟt mแปŸ rแป™ng vแป cรกch kiแปƒm tra xem mแป™t vแป‹ trรญ cรณ ฤ‘ฦฐแปฃc bแบญt trรชn thiแบฟt bแป‹ Android hay khรดng cรณ thแปƒ ฤ‘รฒi hแปi sแปฑ hiแปƒu biแบฟt sรขu sแบฏc vแป lแบญp trรฌnh Java vร  cรกch sแปญ dแปฅng cรกc thฦฐ viแป‡n Android khรกc nhau. Vรฌ vแบญy, hรฃy ฤ‘i sรขu vร o vแบฅn ฤ‘แป nร y.

Trong bแป‘i cแบฃnh แปฉng dแปฅng di ฤ‘แป™ng hiแป‡n ฤ‘แบกi, viแป‡c truy cแบญp vแป‹ trรญ cแปงa ngฦฐแปi dรนng ฤ‘รฃ trแปŸ nรชn quan trแปng ฤ‘แปƒ cung cแบฅp trแบฃi nghiแป‡m ฤ‘ฦฐแปฃc cรก nhรขn hรณa dแปฑa trรชn vแป‹ trรญ ฤ‘แป‹a lรฝ cแปงa ngฦฐแปi dรนng. Chแปฉc nฤƒng nร y cรณ sแบตn rแบฅt nhiแปu trong cรกc thiแบฟt bแป‹ chแบกy Android. Tuy nhiรชn, viแป‡c xรกc ฤ‘แป‹nh xem vแป‹ trรญ cรณ ฤ‘ฦฐแปฃc bแบญt hay khรดng cลฉng lร  mแป™t khรญa cแบกnh quan trแปng.

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);
    }
}

Hiแปƒu mรฃ

ฤoแบกn mรฃ trรชn sแบฝ kiแปƒm tra xem dแป‹ch vแปฅ ฤ‘แป‹nh vแป‹ cรณ ฤ‘ฦฐแปฃc bแบญt trรชn bแบฅt kแปณ thiแบฟt bแป‹ Android nร o hay khรดng theo hai bฦฐแป›c chรญnh:

โ€“ Nแบฟu phiรชn bแบฃn thiแบฟt bแป‹ lร  KitKat trแปŸ lรชn, nรณ sแบฝ cแป‘ gแบฏng lแบฅy cร i ฤ‘แบทt chแบฟ ฤ‘แป™ vแป‹ trรญ vร  xรกc thแปฑc xem nรณ cรณ phแบฃi lร  'Tแบฏt chแบฟ ฤ‘แป™ vแป‹ trรญ' hay khรดng. Nแบฟu vแบญy, nรณ xรกc nhแบญn rแบฑng vแป‹ trรญ ฤ‘รฃ ฤ‘ฦฐแปฃc bแบญt.
โ€“ ฤแป‘i vแป›i cรกc thiแบฟt bแป‹ chแบกy trรชn cรกc phiรชn bแบฃn cลฉ hฦกn KitKat, nรณ sแบฝ lแบฅy danh sรกch cรกc nhร  cung cแบฅp vแป‹ trรญ ฤ‘ฦฐแปฃc phรฉp vร  kiแปƒm tra xem danh sรกch ฤ‘รณ cรณ trแป‘ng khรดng. Nแบฟu danh sรกch khรดng trแป‘ng thรฌ xรกc nhแบญn rแบฑng vแป‹ trรญ ฤ‘รฃ ฤ‘ฦฐแปฃc bแบญt.

Vai trรฒ cแปงa cรกc thฦฐ viแป‡n vร  chแปฉc nฤƒng khรกc nhau

Trong mรฃ nร y, chรบng tรดi ฤ‘รฃ sแปญ dแปฅng mแป™t sแป‘ chแปฉc nฤƒng vร  thฦฐ viแป‡n cแปฅ thแปƒ, chแปง yแบฟu tแปซ Bแป™ cรดng cแปฅ dร nh cho nhร  phรกt triแปƒn Android:

  • Bแบฃn dแปฑng.VERSION.SDK_INT: ฤรขy lร  trฦฐแปng chแปฉa phiรชn bแบฃn SDK cแปงa nแปn tแบฃng hiแป‡n ฤ‘ang chแบกy trรชn thiแบฟt bแป‹.
  • Cร i ฤ‘แบทt.Secure: ฤรขy lร  lแป›p quแบฃn lรฝ quyแปn truy cแบญp vร o cร i ฤ‘แบทt hแป‡ thแป‘ng bแบฃo mแบญt toร n cแบงu, chแปง yแบฟu lร  cร i ฤ‘แบทt hแป‡ thแป‘ng แบฃnh hฦฐแปŸng ฤ‘แบฟn quyแปn riรชng tฦฐ cแปงa ngฦฐแปi dรนng.
  • Cร i ฤ‘แบทt.Secure.getInt: Phฦฐฦกng thแปฉc nร y trแบฃ vแป giรก trแป‹ cร i ฤ‘แบทt sแป‘ nguyรชn an toร n cho mแป™t tรชn ฤ‘รฃ cho.
  • Cร i ฤ‘แบทt.Secure.LOCATION_MODE: ฤiแปu nร y ฤ‘ฦฐแปฃc sแปญ dแปฅng ฤ‘แปƒ cรณ ฤ‘ฦฐแปฃc cร i ฤ‘แบทt chแบฟ ฤ‘แป™ vแป‹ trรญ hiแป‡n tแบกi.
  • Cร i ฤ‘แบทt.Secure.LOCATION_PROVIDERS_ALLOWED: Nhแบญn danh sรกch cรกc nhร  cung cแบฅp vแป‹ trรญ ฤ‘ฦฐแปฃc phรฉp.

Tรฌm hiแปƒu thรชm vแป PNV

ฤรฃ giแบฃi quyแบฟt: lerp

Nแป™i suy tuyแบฟn tรญnh, thฦฐแปng ฤ‘ฦฐแปฃc gแปi lร  Lerp, lร  mแป™t phฦฐฦกng phรกp ฤ‘ฦฐแปฃc sแปญ dแปฅng ฤ‘แปƒ tรญnh mแป™t ฤ‘iแปƒm nแบฑm giแปฏa hai ฤ‘iแปƒm khรกc trรชn mแป™t ฤ‘ฦฐแปng thแบณng hoแบทc ฤ‘ฦฐแปng cong. Kแปน thuแบญt nร y ฤ‘ฦฐแปฃc sแปญ dแปฅng rแป™ng rรฃi trong cรกc lฤฉnh vแปฑc khรกc nhau nhฦฐ ฤ‘แป“ hแปa mรกy tรญnh vร  phรกt triแปƒn trรฒ chฦกi. Trong bร i viแบฟt nร y, chรบng ta sแบฝ ฤ‘i sรขu tรฌm hiแปƒu Lerp lร  gรฌ vร  cรกch triแปƒn khai nรณ trong Java.

Tรฌm hiแปƒu thรชm vแป PNV

ฤรฃ giแบฃi quyแบฟt: Khรดng thแปƒ khแปŸi tแบกo lแป›p org.codehaus.groovy.vmplugin.VMPluginFactory

Chแบฏc chแบฏn, tรดi hiแปƒu yรชu cแบงu cแปงa bแบกn. Mรฌnh sแบฝ viแบฟt mแป™t bร i vแป chแปง ฤ‘แป โ€œKhรดng thแปƒ khแปŸi tแบกo lแป›p org.codehaus.groovy.vmplugin.VMPluginFactoryโ€ bao gแป“m phแบงn giแป›i thiแป‡u, giแบฃi phรกp, giแบฃi thรญch vแป mรฃ vร  cรกch sแปญ dแปฅng cรกc tiรชu ฤ‘แป.

Giแป›i thiแป‡u
Java cho phรฉp cรกc nhร  phรกt triแปƒn tแบกo ra cรกc แปฉng dแปฅng ฤ‘a nฤƒng. Tuy nhiรชn, hแป thฦฐแปng gแบทp phแบฃi mแป™t lแป—i khแปŸi tแบกo phแป• biแบฟn โ€“ โ€œKhรดng thแปƒ khแปŸi tแบกo lแป›p org.codehaus.groovy.vmplugin.VMPluginFactory.โ€ Lแป—i nร y thฦฐแปng phรกt sinh do Bแป™ cรดng cแปฅ phรกt triแปƒn Java (JDK) bแป‹ thiแบฟu hoแบทc khรดng tฦฐฦกng thรญch. ฤแปƒ hiแปƒu rรต hฦกn, ฤ‘iแปu cแบงn thiแบฟt lร  phแบฃi ฤ‘i sรขu vร o vแบฅn ฤ‘แป nร y vร  cรกch giแบฃi quyแบฟt nรณ.

Tรฌm hiแปƒu thรชm vแป PNV

ฤรฃ giแบฃi quyแบฟt: kiแปƒm tra phiรชn bแบฃn linux

Chแบฏc chแบฏn rแป“i, hรฃy bแบฏt ฤ‘แบงu vแป›i chแปง ฤ‘แป.

Giแป›i thiแป‡u

Linux lร  mแป™t hแป hแป‡ ฤ‘iแปu hร nh mรฃ nguแป“n mแปŸ giแป‘ng Unix dแปฑa trรชn Linux Kernel. Quรก trรฌnh kiแปƒm tra phiรชn bแบฃn Linux bแบกn ฤ‘ang chแบกy lร  mแป™t phแบงn thiแบฟt yแบฟu trong viแป‡c bแบฃo trรฌ hแป‡ thแป‘ng cแปงa bแบกn vร  nรณ giรบp bแบกn quแบฃn lรฝ cรกc bแบฃn cแบญp nhแบญt vร  khแบฏc phแปฅc sแปฑ cแป‘ mแป™t cรกch hiแป‡u quแบฃ. Bร i viแบฟt nร y sแบฝ hฦฐแป›ng dแบซn bแบกn cรกch kiแปƒm tra phiรชn bแบฃn Linux cแปงa bแบกn vร  hiแปƒu cรกc thร nh phแบงn cแปฅ thแปƒ liรชn quan ฤ‘แบฟn viแป‡c lแบญp phiรชn bแบฃn

Tรฌm hiแปƒu thรชm vแป PNV

ฤรฃ giแบฃi quyแบฟt: thแบฃ nแป•i vร o chuแป—i

Tรฌm hiแปƒu vแป chuyแปƒn ฤ‘แป•i Float sang String trong Java.

Chuyแปƒn ฤ‘แป•i mแป™t float thร nh mแป™t chuแป—i trong Java lร  mแป™t khรญa cแบกnh quan trแปng cแปงa ngรดn ngแปฏ lแบญp trรฌnh Java, ฤ‘แบทc biแป‡t ฤ‘แป‘i vแป›i cรกc chฦฐฦกng trรฌnh xแปญ lรฝ cรกc phรฉp tรญnh toรกn hแปc. ฤรดi khi cแบงn chuyแปƒn ฤ‘แป•i sแป‘ sang ฤ‘แป‹nh dแบกng vฤƒn bแบฃn ฤ‘แปƒ hiแปƒn thแป‹ phรน hแปฃp cho ngฦฐแปi dรนng, lฦฐu trแปฏ trong cฦก sแปŸ dแปฏ liแป‡u hoแบทc thao tรกc theo cรกch khรกc.

Tรฌm hiแปƒu thรชm vแป PNV

ฤรฃ giแบฃi quyแบฟt: vรญ dแปฅ vแป bรกnh mรฌ nฦฐแป›ng

Chแบฏc chแบฏn rแป“i, hรฃy bแบฏt ฤ‘แบงu bแบฑng viแป‡c giแบฃi thรญch khรกi niแป‡m lแบญp trรฌnh bแบฑng cรกch sแปญ dแปฅng lแบญp trรฌnh Java - vรญ dแปฅ: bรกnh mรฌ nฦฐแป›ng lร  mแป™t thรดng bรกo thรดng bรกo nhanh bแบญt lรชn, mแป dแบงn vร  khรดng cung cแบฅp tรนy chแปn ฤ‘แปƒ tฦฐฦกng tรกc. Tรญnh nฤƒng tiแป‡n lแปฃi nร y phแป• biแบฟn trong cรกc แปฉng dแปฅng Android.

Mแป‘i liรชn hแป‡ thแปi trang lร  hรฃy coi bรกnh mรฌ nฦฐแป›ng nhฦฐ mแป™t phแปฅ kiแป‡n cรณ thแปƒ lร m nแป•i bแบญt bแป™ trang phแปฅc nhฦฐng khรดng lแบฅn รกt nรณ. Nรณ hiแปƒn thแป‹ ngแบฏn gแปn, nรขng cao trแบฃi nghiแป‡m cแปงa ngฦฐแปi dรนng nhฦฐng khรดng ฤ‘รฒi hแปi sแปฑ chรบ รฝ cแปงa ngฦฐแปi dรนng khแปi tiรชu ฤ‘iแปƒm chรญnh, chแบณng hแบกn nhฦฐ mแป™t ฤ‘รดi bรดng tai nแป•i bแบญt hoแบทc mแป™t chiแบฟc tรบi xรกch mร u ฤ‘แบญm trong bแป™ quแบงn รกo ฤ‘ฦกn sแบฏc.

Tรฌm hiแปƒu thรชm vแป PNV