рд╕реНрдерд╛рди рдореЗрдВ рдЧрд╣рд░рд╛ рд╡рд┐рд╕рд░реНрдЬрди

рдпрд╣ рдкреЛрд╕реНрдЯ рдПрдВрдбреНрд░реЙрдЗрдб-рдбреЗрд╡рд▓рдкрд░реНрд╕ рдмреНрд▓реЙрдЧ рд╕реЗ рд╡рд┐рд╖рдп рдХрд╛ рдЕрдиреБрд╡рд╛рдж рд╣реИред рдмрд╛рдХреА рдХреА рдХрд╣рд╛рдиреА рдкреНрд░реЛрдлреЗрд╢рдирд▓ рдПрдВрдбреНрд░реЙрдЗрдб 2 рдПрдкреНрд▓реАрдХреЗрд╢рди рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХреЗ рд▓реЗрдЦрдХ рд░реЗрдЯреЛ рдореЗрдпрд░ рдХреА рд╣реИред рд╡рд╣ рд▓рд┐рдЦрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХреИрд╢рд┐рдВрдЧ рдкрд░рд┐рдгрд╛рдо, рдЧрддрд┐ рдФрд░ рдЗрддрдиреЗ рдХреЗ рдЕрд░реНрде рдореЗрдВ, рд╕реНрдерд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдХреИрд╕реЗ рдмреЗрд╣рддрд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдЖрдк рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рдмреЛрд░рд┐рд╕ рдмрд╛рдЗрдХ рдмрд╛рдЗрдХ рдХреЗ рд▓рд┐рдП рдирд┐рдХрдЯрддрдо рд╕реНрдерд╛рди, рдЬреАрдкреАрдПрд╕ рд╕реЗ рд╕реНрдерд╛рди рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдирд┐рд░реНрд╡рд╛рдд рдореЗрдВ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдПрдХ рдЕрдореВрд░реНрдд рд╕реВрдЪреА рдХреЛ рднрд░рдиреЗ рдореЗрдВ рд╣рдореЗрд╢рд╛ рджреЗрд░реА рд╣реЛрддреА рд╣реИред рдЬрдм рдЖрдк рдХрд┐рд╕реА рдРрд╕реА рдЬрдЧрд╣ рдкрд░ рд╣реЛрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдБ рдЖрдк рд╕рдВрджрд░реНрдн рд╕рдВрдмрдВрдзреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЕрдХреНрд╕рд░ рдбреЗрдЯрд╛ рдХрдиреЗрдХреНрдЯрд┐рд╡рд┐рдЯреА рдХреА рдХрдореА рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВред

рдЖрдХрд╛рд╢ рдореЗрдВ рдЕрдкрдиреА рдореБрдЯреНрдареА рдХреЛ рдЦрддрд░реЗ рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдореИрдВрдиреЗ рдПрдХ рдУрдкрди-рд╕реЛрд░реНрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрд╛ рдЬрд┐рд╕рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЦреЛрд▓рдиреЗ рдФрд░ рдкрд╛рд╕ рдХреЗ рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдк-рдЯреВ-рдбреЗрдЯ рдЬрд╛рдирдХрд╛рд░реА рджреЗрдЦрдиреЗ рдХреЗ рдмреАрдЪ рдХреЗ рд╕рдордп рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд┐рдкреНрд╕ рдФрд░ рдЯреНрд░рд┐рдХреНрд╕ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬреЛ рдСрдлрд╝рд▓рд╛рдЗрди рдСрдкрд░реЗрд╢рди рдореЛрдб рдХреЗ рдЙрдЪрд┐рдд рдкреНрд░рд╛рд╡рдзрд╛рди рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рд╣реИред рдФрд░ рдмреИрдЯрд░реА рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдХрдо рд╕реЗ рдХрдо рд░рдЦрддреЗ рд╣реБрдП рдпрд╣ рд╕рдмред

рдореБрдЭреЗ рдХреЛрдб рджрд┐рдЦрд╛рдУ!


рдЖрдк рд╕реНрдерд╛рди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ Android рдкреНрд░реЛрдЯрд┐рдкреНрд╕ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП Readme.txt рдХреЛ рдкрдврд╝рдирд╛ рдпрд╛рдж рд░рдЦреЗрдВред

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ?


рдпрд╣ рдЙрди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдореВрд▓ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Google рд╕реНрдерд╛рди API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрд╕-рдкрд╛рд╕ рдХреЗ рдЖрдХрд░реНрд╖рдг (рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рдЕрдВрдХ) рдХреА рдПрдХ рд╕реВрдЪреА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдЙрдирдХреЗ рд╡рд┐рд╡рд░рдг рджреЗрдЦрдиреЗ рдФрд░ рдореВрд▓реНрдпрд╛рдВрдХрди рдпрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред

рдХреЛрдб рдореЗрдВ Google I / O 2011, рдПрдВрдбреНрд░реЙрдЗрдб рдкреНрд░реЛрдЯрд┐рдкреНрд╕: рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ Android рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЙрдиреНрдирдд рд╡рд┐рд╖рдп ( рд╡реАрдбрд┐рдпреЛ ) рдкрд░ рдореЗрд░реЗ рд╕рддреНрд░ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрдИ рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╕реНрдерд╛рди рдкреНрд░рджрд╛рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдерд╛рди рдЕрдкрдбреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд░рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдЕрдкрдбреЗрдЯ рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдирд╛, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рд░рд┐рд╕реАрд╡рд░ рдХреЛ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛, рдФрд░ рдХрд░реНрд╕рд░ рд▓реЛрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред

рдЖрд╡реЗрджрди рд╣рдиреАрдХреЙрдореНрдм рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрд╕реНрдХрд░рдг 1.6 рдФрд░ рдЙрдЪреНрдЪрддрд░ рдкрд░ рднреА рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЕрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдб рд╣реИ, рдЖрдЗрдП рдЗрд╕реЗ рдХрд░реАрдм рд╕реЗ рджреЗрдЦреЗрдВ


рдореЗрд░реА рдореБрдЦреНрдп рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рддрд╛рдЬрдЧреА рд╣реИ: рдЖрд╡реЗрджрди рдЦреЛрд▓рдиреЗ рдФрд░ рд╕рд╣реА рд╕реНрдерд╛рдиреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рдмреАрдЪ рджреЗрд░реА рдХреЛ рдХрдо рдХрд░рдирд╛, рдЬрдмрдХрд┐ рдмреИрдЯрд░реА рдЙрдкрдпреЛрдЧ рдХреЛ рдХрдо рдХрд░рдирд╛ред

рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ:

рддрд╛рдЬрдЧреА рдХрд╛ рдорддрд▓рдм рд╣реИ, рдХрднреА рдкреНрд░рддреАрдХреНрд╖рд╛ рди рдХрд░реЗрдВ


рдЬрдм рдЖрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рдХреНрд░рд┐рдп рдореЛрдб рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рд░ рдмрд╛рд░ рд▓реЛрдХреЗрд╢рди рдореИрдиреЗрдЬрд░ рд╕реЗ рдЕрдВрддрд┐рдо рдЬреНрдЮрд╛рдд рдХрд╛ рдЪрдпрди рдХрд░рдХреЗ рдХрд┐рд╕реА рд▓реЛрдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп рдХреЛ рдХрд╛рдлреА рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЬрд┐рдВрдЬрд░рдмреНрд░реЗрдб рд▓реИрд╕реНрдЯрд▓реЛрдХреЗрд╢рди рдлрд╝рд╛рдЗрдВрдбрд░ рд╕реЗ, рд╣рдо рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рд╕рднреА рд╕реНрдерд╛рди рдкреНрд░рджрд╛рддрд╛рдУрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИрдВ, рд╕рдмрд╕реЗ рд╕рдЯреАрдХ рдЕрдВрддрд┐рдо рд╕реНрдерд╛рди рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдПред

List<String> matchingProviders = locationManager.getAllProviders(); for (String provider: matchingProviders) { Location location = locationManager.getLastKnownLocation(provider); if (location != null) { float accuracy = location.getAccuracy(); long time = location.getTime(); if ((time > minTime && accuracy < bestAccuracy)) { bestResult = location; bestAccuracy = accuracy; bestTime = time; } else if (time < minTime && bestAccuracy == Float.MAX_VALUE && time > bestTime){ bestResult = location; bestTime = time; } } } 

рдпрджрд┐ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╣реИрдВ, рддреЛ рд╕рдмрд╕реЗ рд╕рдЯреАрдХ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛, рд╕рдмрд╕реЗ рд╣рд╛рд▓рд┐рдпрд╛ рдкрд░рд┐рдгрд╛рдо рдмрд╕ рд╡рд╛рдкрд╕ рдЖрддрд╛ рд╣реИред

рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ (рдЬрдм рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдирд╡реАрдирддрдо рд╕реНрдерд╛рди рдЕрдкрдбреЗрдЯ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ), рдорд╛рди рдПрдХ рддрд░рд╣ рд╕реЗ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкрд░ рд▓реМрдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рдкреНрд░рджрд╛рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕реНрдерд╛рди рдЕрдкрдбреЗрдЯ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВред

 if (locationListener != null && (bestTime < maxTime || bestAccuracy > maxDistance)) { IntentFilter locIntentFilter = new IntentFilter(SINGLE_LOCATION_UPDATE_ACTION); context.registerReceiver(singleUpdateReceiver, locIntentFilter); locationManager.requestSingleUpdate(criteria, singleUpatePI); } 

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╣рдо рд╕рдмрд╕реЗ рддреЗрдЬ рдкреНрд░рджрд╛рддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдиреЗрдЯрд╡рд░реНрдХ рд░рд┐рдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдерд╛рди рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рддреЗрдЬреА рд╕реЗ рд╣реЛрддрд╛ рд╣реИред

рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХреЛрдб рдХрд╛ рдпрд╣ рдЯреБрдХрдбрд╝рд╛ рдЬрд┐рдВрдЬрд░рдмреНрд░реЗрдбрд▓рд╕реНрдЯрд┐рд▓реЗрд╢рдирдлрд╛рдЗрдВрдбрд░ рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдмрд╛рд░ рдХреЗ рд╕реНрдерд╛рди рдХрд╛ рдЕрджреНрдпрддрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП requestSingleUpdate рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЬрд┐рдВрдЬрд░рдмреНрд░реЗрдб рддрдХ рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рдереА - LegacyLastLocationFinder рджреЗрдЦреЗрдВ, рджреЗрдЦреЗрдВ рдХрд┐ рдореИрдВрдиреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХреА рд╣реИред

SingleUpdateReceiver рдХреЛ рд╕реНрдерд╛рди рд╢реНрд░реЛрддрд╛ рд╢реНрд░реЛрддрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЙрд▓рд┐рдВрдЧ рдХреНрд▓рд╛рд╕ рдореЗрдВ рд╡рд╛рдкрд╕ рдкреНрд░рд╛рдкреНрдд рдЕрдкрдбреЗрдЯ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред
 protected BroadcastReceiver singleUpdateReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { context.unregisterReceiver(singleUpdateReceiver); String key = LocationManager.KEY_LOCATION_CHANGED; Location location = (Location)intent.getExtras().get(key); if (locationListener != null && location != null) locationListener.onLocationChanged(location); locationManager.removeUpdates(singleUpatePI); } }; 

рд╕реНрдерд╛рди рдЕрдкрдбреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд░рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ


рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╕рдмрд╕реЗ рд╕рдЯреАрдХ / рд╕рдордп рдкрд░ рдореВрд▓реНрдпрд╛рдВрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рднреА рдЗрд╕рдХреЗ рдЕрдкрдбреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

PlacesConstants рд╡рд░реНрдЧ рдореЗрдВ рдорд╛рдиреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд╕реНрдерд╛рди рдЕрдкрдбреЗрдЯ рдХреА рдЖрд╡реГрддреНрддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ рдХрд┐ рдЬрд┐рддрдиреА рдмрд╛рд░ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред

 // The default search radius when searching for places nearby. public static int DEFAULT_RADIUS = 150; // The maximum distance the user should travel between location updates. public static int MAX_DISTANCE = DEFAULT_RADIUS/2; // The maximum time that should pass before the user gets a location update. public static long MAX_TIME = AlarmManager.INTERVAL_FIFTEEN_MINUTES; 

рдЕрдЧрд▓рд╛ рдЪрд░рдг рд╕реНрдерд╛рди рдкреНрд░рдмрдВрдзрдХ рд╕реЗ рд╕реНрдерд╛рди рдЕрдкрдбреЗрдЯ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рд╣реИред GingerbreadLocationUpdateRequester рд╕реЗ рд▓рд┐рдП рдЧрдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ, рд╣рдо рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдорд╛рдирджрдВрдб рдХреЛ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕рд╛ рд╕реНрдерд╛рди рдкреНрд░рдмрдВрдзрдХ рд╕реАрдзреЗ requestLocationUpdates рд╡рд┐рдзрд┐ рдХреЙрд▓ рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдЧрд╛ред

 public void requestLocationUpdates(long minTime, long minDistance, Criteria criteria, PendingIntent pendingIntent) { locationManager.requestLocationUpdates(minTime, minDistance, criteria, pendingIntent); } 

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдо рд▓рдВрдмрд┐рдд рдЗрд░рд╛рджреЗ рд╕реЗ рдЧреБрдЬрд░ рд░рд╣реЗ рд╣реИрдВ, рд╕реНрдерд╛рди рд╢реНрд░реЛрддрд╛ рдирд╣реАрдВред

 Intent activeIntent = new Intent(this, LocationChangedReceiver.class); locationListenerPendingIntent = PendingIntent.getBroadcast(this, 0, activeIntent, PendingIntent.FLAG_UPDATE_CURRENT); 

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореИрдВ рд╕реНрдерд╛рди рд╢реНрд░реЛрддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдХрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдпрд╛ рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ рдпрд╛ рд╕реАрдзреЗ рдкреНрд░рдХрдЯ рд╣реЛрдиреЗ рдкрд░, рд░рд╕реАрджреЛрдВ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдореЗрдВ рд▓рдЪреАрд▓рд╛рдкрди рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред

рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ, рдПрдХ рдирдП рд╕реНрдерд╛рди рдХрд╛ рдорддрд▓рдм рдЖрд╕-рдкрд╛рд╕ рдХреЗ рд╕реНрдерд╛рдиреЛрдВ рдХреА рдПрдХ рдЕрджреНрдпрддрди рд╕реВрдЪреА рд╣реИред рдпрд╣ рдЙрди рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд╕рд░реНрд╡рд░ рдХреЛ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддреЗ рд╣реИрдВ рдФрд░ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд╛рддрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╕реНрдерд╛рдиреЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рднрд░рддрд╛ рд╣реИред

рдЪреВрдВрдХрд┐ рд╕реНрдерд╛рди рдмрджрд▓рдиреЗ рд╕реЗ рдпреВрдЖрдИ рдХреЛ рд╕реАрдзреЗ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдкреНрд░рдХрдЯ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рд╕реНрдерд╛рдирдЪреЗрдВрдЬрд░рд░рд╛рдЗрд╡рд░ рдХреЛ рдмрдирд╛рдиреЗ рдФрд░ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдФрд░ рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ рдирд╣реАрдВред

 <receiver android:name=".receivers.LocationChangedReceiver"/> 

LocationChangedReceiver рдкреНрд░рддреНрдпреЗрдХ рдЕрджреНрдпрддрди рд╕реЗ рд╕реНрдерд╛рди рдХреЛ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ рдФрд░ рдкрд╛рд╕ рдХреЗ рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП PlaceUpdateService рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред

 if (intent.hasExtra(locationKey)) { Location location = (Location)intent.getExtras().get(locationKey); Log.d(TAG, "Actively Updating place list"); Intent updateServiceIntent = new Intent(context, PlacesConstants.SUPPORTS_ECLAIR ? EclairPlacesUpdateService.class : PlacesUpdateService.class); updateServiceIntent.putExtra(PlacesConstants.EXTRA_KEY_LOCATION, location); updateServiceIntent.putExtra(PlacesConstants.EXTRA_KEY_RADIUS, PlacesConstants.DEFAULT_RADIUS); updateServiceIntent.putExtra(PlacesConstants.EXTRA_KEY_FORCEREFRESH, true); context.startService(updateServiceIntent); } 

рдмреИрдЯрд░реА рдЬреАрд╡рди рдХреЗ рджреМрд░рд╛рди рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ


рдСрдлрд╝рд▓рд╛рдЗрди рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо PlacesContentProvider рдФрд░ PlaceDetailsContentProvider рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдХреИрд╢рд┐рдВрдЧ рдХрд░рдХреЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреБрдЫ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, рдЖрдкрдХреЛ рд╕реНрдерд╛рди рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред PlacesUpdateService рд╕реЗрд╡рд╛ рд╕реЗ рдХреЛрдб рдХрд╛ рдпрд╣ рдЯреБрдХрдбрд╝рд╛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рд╕реАрдорд┐рдд рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░реАрдлрд╝реЗрдЯрд┐рдВрдЧ рдХреИрд╕реЗ рд╕рдХреНрд╖рдо рд╣реИред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдмреИрдЯрд░реА рдХрдо рд╣реЛрдиреЗ рдкрд░ рдбреЗрдЯрд╛ рдкреНрд░реАрдлрд╝реЗрдХреНрдЯрд┐рдВрдЧ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

 if ((prefetchCount < PlacesConstants.PREFETCH_LIMIT) && (!PlacesConstants.PREFETCH_ON_WIFI_ONLY || !mobileData) && (!PlacesConstants.DISABLE_PREFETCH_ON_LOW_BATTERY || !lowBattery)) { prefetchCount++; // Start the PlaceDetailsUpdateService to prefetch the details for this place. } 

рдСрдлрд╝рд▓рд╛рдЗрди рдирд┐рд╢рд╛рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рди рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдмреИрдЯрд░реА рдЬреАрд╡рди рдХрд╛ рдЕрдиреБрдХреВрд▓рди: рд╕реНрдорд╛рд░реНрдЯ рд╕реЗрд╡рд╛рдУрдВ рдФрд░ рд░рд┐рд╕реАрд╡рд░ рдХреЛ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдСрдлрд╝рд▓рд╛рдЗрди рд╣реЛрдиреЗ рдкрд░ рдЕрдкрдбреЗрдЯ рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдЕрдкрдбреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрдиреЗрдХреНрдЯрд┐рд╡рд┐рдЯреА рдХреЗ рд▓рд┐рдП PlaceUpdateService рд╕реЗрд╡рд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИред

 NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); boolean isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting(); 

рдпрджрд┐ рдХреЛрдИ рдХрдиреЗрдХреНрд╢рди рдирд╣реАрдВ рд╣реИ, рддреЛ ActiveLocationChangedReceiver рдФрд░ PassiveLocationChangedReceiver рдмрдВрдж рдХрд░ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ ConnectChangedReceiver рдЪрд╛рд▓реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

 ComponentName connectivityReceiver = new ComponentName(this, ConnectivityChangedReceiver.class); ComponentName locationReceiver = new ComponentName(this, LocationChangedReceiver.class); ComponentName passiveLocationReceiver = new ComponentName(this, PassiveLocationChangedReceiver.class); pm.setComponentEnabledSetting(connectivityReceiver, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP); pm.setComponentEnabledSetting(locationReceiver, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); pm.setComponentEnabledSetting(passiveLocationReceiver, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); 

рд╕рднреА рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрд╢рди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд▓рд┐рдП ConnectChangedReceiver рд╕реБрдирддрд╛ рд╣реИред рдЬрдм рдПрдХ рдирдпрд╛ рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдмрд╕ рд╕реНрд╡рдпрдВ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ рдФрд░ рд╕реНрдерд╛рди рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЛ рдЪрд╛рд▓реВ рдХрд░ рджреЗрддрд╛ рд╣реИред

рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдФрд░ рдмрд┐рдЬрд▓реА рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмреИрдЯрд░реА рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░реЗрдВ


рдЬрдм рдлреЛрди рдЕрдВрддрд┐рдо 15% рдкрд░ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЕрдзрд┐рдХрд╛рдВрд╢ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд╛рд░реНрдЬ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЬрдм рдбрд┐рд╡рд╛рдЗрд╕ рдХрдо рдмреИрдЯрд░реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддрд╛ рд╣реИ рддреЛ рд╣рдо рдЪреЗрддрд╛рд╡рдиреА рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рд╕реАрд╡рд░ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

 <receiver android:name=".receivers.PowerStateChangedReceiver"> <intent-filter> <action android:name="android.intent.action.ACTION_BATTERY_LOW"/> <action android:name="android.intent.action.ACTION_BATTERY_OKAY"/> </intent-filter> </receiver> 

PowerStateChangedReceiver рдХрд╛ рдпрд╣ рд╕реНрдирд┐рдкреЗрдЯ PassiveLocationChangedReceiver рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ рдЬрдм рднреА рдбрд┐рд╡рд╛рдЗрд╕ рдХрдо рдмреИрдЯрд░реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЪрд╛рд░реНрдЬ рдареАрдХ рд╣реЛрдиреЗ рдкрд░ рдЗрд╕реЗ рдЪрд╛рд▓реВ рдХрд░рддрд╛ рд╣реИред

 boolean batteryLow = intent.getAction().equals(Intent.ACTION_BATTERY_LOW); pm.setComponentEnabledSetting(passiveLocationReceiver, batteryLow ? PackageManager.COMPONENT_ENABLED_STATE_DISABLED : PackageManager.COMPONENT_ENABLED_STATE_DEFAULT, PackageManager.DONT_KILL_APP); 

рдЖрдк рд╕рднреА рдкреНрд░реАрдлрд╝реИрдЪрд┐рдВрдЧ рдирдореВрдиреЛрдВ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдХреЗ рдпрд╛ рдХрдо рдмреИрдЯрд░реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рддрд╛рдЬрд╝рд╛ рджрд░ рдХреЛ рдХрдо рдХрд░рдХреЗ рдЗрд╕ рддрд░реНрдХ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ?


рдкреЛрд╕реНрдЯ рдкрд╣рд▓реЗ рд╣реА рдмрдбрд╝реА рд╣реЛ рдЪреБрдХреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдпрд╣рд╛рдВ рд░рд╣реВрдВрдЧрд╛ред рдореЗрд░реЗ рдмреНрд▓реЙрдЧ рдж рд░реЗрдбрд┐рдпреЛрдПрдХреНрдЯрд┐рд╡ рдпрд╛рдХ рдкрд░ рдкрдврд╝реЗрдВ

Source: https://habr.com/ru/post/In122705/


All Articles