2013-02-28 14 views
6

Mam aplikację działającą na systemie Android, która używa tylko widoku internetowego do wyświetlania aplikacji mobilnej i w pewnym momencie używa urządzenia GPS do uzyskania ich pozycji.Sprawdź, czy włączony jest tryb oszczędzania energii - Android SDK

Mam niestandardowego ChromeWebClient itp. I ładnie uzyskuje swoją pozycję, z wyjątkiem urządzeń, na których włączony jest tryb oszczędzania energii? Czy istnieje w SDK/API dla mnie, aby móc określić, czy użytkownik ma to włączone i odpowiednio im doradzić? nie mogę znaleźć nic w docs więc nie jestem, ale warto spróbować zakładając,

Wiwaty,

Lee

+0

Co rozumiesz przez "tryb oszczędzania energii"? –

+0

@RaghavSood Na przykład w Galaxy S4. urządzenie ma "tryb oszczędzania energii", który można włączyć i tylko wtedy, gdy jest włączony, mam problem z uzyskaniem lokalizacji GPS z aplikacji internetowej. Jeśli nie tryb oszczędzania energii, czy mogę dowiedzieć się, czy aplikacja ma zezwolenie na lokalizację GPS? – theiOSDude

+0

AFAIK, która nie jest oficjalną funkcją AOSP, więc jest mało prawdopodobne, że publiczny SDK będzie miał metodę jej obserwowania. Samsung mógł dodać interfejs API lub opcję do klas ustawień, ale nie mogę powiedzieć tego na pewno. –

Odpowiedz

5

Po odowla komentarze

Z mojego doświadczenia Samsung, jak również HTC, jest jednym z producentów, którzy modyfikują system operacyjny Android w najbardziej nieprzewidywalny sposób. Dodają nowe funkcje i tryby, takie jak widżety uruchamiania przełączników 4G i "tryb oszczędzania energii". Modyfikują one wymagania dotyczące uprawnień dla udokumentowanych metod SDK, tj. Aby włączyć Bluetooth na urządzeniu Samsung, którego potrzebuje twoja aplikacja i dodatkowe zezwolenie, podczas gdy Android wymaga tylko android.permission.BLUETOOTH_ADMIN. I jest coś więcej.

Krótko mówiąc, jak zauważył @RaghavSood, "tryb oszczędzania energii" nie jest oficjalną funkcją AOSP i nie ma sposobu na jej wykrycie za pośrednictwem oficjalnego zestawu SDK. Istnieje jednak sposób, w jaki można to obejść. Uważam, że najprawdopodobniej Twoja aplikacja nie działa w trybie oszczędzania energii, ponieważ ten tryb wyłącza GPS. Możesz to potwierdzić, konfigurując tryb oszczędzania energii w ustawieniach, aby wyłączyć wyłączanie GPS (nie można tego wyrazić, przepraszam) - first link from google with steps. Następnie przetestuj aplikację. Czy to działa? Jeśli tak, to zlikwidowałeś problem, a teraz Twoim zadaniem jest poinformowanie użytkownika, że ​​aplikacja nie będzie działać bez GPS. Możesz umieścić kod w swojej aplikacji, aby wykryć, czy usługa GPS jest włączona i wyświetlić okno dialogowe z ostrzeżeniem, jeśli nie jest. Kod w swojej działalności może wyglądać następująco:

LocationManager lm = getSystemService(Context.LOCATION_SERVICE); 
if(!lm.isProviderEnabled(LocationManager.GPS_PROVIDER)) { 
    //Show a notification prompting user to switch on GPS. 
} 

Można być jeszcze bardziej skomplikowane i sprawiają, aplikacja wykryje producentem urządzenia, aby pokazać niestandardowy komunikat na wszystkich urządzeniach Samsung.

+0

Poszedłem z rozwiązaniem, ponieważ jest to wykonalne rozwiązanie :) dziękuję za szczegółową odpowiedź :) Burrows – theiOSDude

Powiązane problemy