Próbuję odczytać wiele czujników z karty Samsung Galaxy Tab GT-P1000 i wydaje się, że procesor jest dość poważny w stosunku do aplikacji, z których korzystałem.Używanie procesora z Androidem
Jako test, stworzyłem krótki program, który implementuje SensorEventListener dla czujnika akcelerometru, ale nic nie robi z odczytów czujnika:
public class SensorTestActivity extends Activity implements SensorEventListener {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
SensorManager oSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
oSensorManager.registerListener(this, oSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_GAME);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
}
}
Wynika to w 10% zużycia procesora podczas stała mi debugowania (moje urządzenie jest podłączone do mojego komputera) i 5% użycia, podczas gdy ja nie. Jeśli użyję SENSOR_DELAY_FASTEST, użycie będzie wzrastać do stałej wartości 30% podczas debugowania i 20%, podczas gdy ja nie.
Stwarza to ogromny problem, gdy chcę korzystać z wielu czujników, ponieważ wszystkie mają wysokie użycie procesora i to bez przetwarzania danych. Używałem aplikacji Compass z Android Market i żadne z nich nie zużywa więcej niż 5% procesora w danym momencie, więc czuję, że brakuje mi czegoś oczywistego, ale nie mogę znaleźć nikogo, kto miałby ten sam problem .
Nie edytowałem pliku manifestu ani układu dla tej aplikacji - jest to domyślny szablon stworzony przez Eclipse i dodałem czujnik.
AKTUALIZACJA: Moja metoda odczytu użycia procesora jest błędna, ponieważ używałem menedżera zadań do jej pomiaru. Moja aplikacja nie zatrzymuje czujników za pomocą funkcji onPause, gdy menedżer zadań otwiera się, podczas gdy większość innych aplikacji to robi.
Byłem dość głupi z moim oświadczeniem o wykorzystaniu procesora - zmierzyłem użycie w Menedżerze zadań, zapominając, że większość aplikacji będzie WSTRZYMAĆ czujniki, kiedy to zrobię, a tym samym dać naprawdę mały odczyt. Moja aplikacja z drugiej strony nie zatrzymała czujników w nadpisanej metodzie Pause. Być może najlepszym sposobem rozwiązania tego problemu jest próba ustawienia własnych niestandardowych opóźnień lub jednego z podanych, ponieważ dodanie większej liczby czujników, takich jak magnometr lub żyroskop, może naprawdę spowodować brzydkie rzeczy. – Namdrater
@ user1021922: Nie możesz tworzyć niestandardowych opóźnień, przepraszam. – CommonsWare