Я пытаюсь включить прослушиватель местоположения для предоставления информации, если телефон переместился более чем на определенное расстояние, когда установлен флажок. Для теста я просто хочу увеличить счетчик на 1, если я переместился более чем на 1 метр за 10 секунд.
Я могу заставить слушателя местоположения работать, и флажок на слушателе щелчка работает. Тем не менее, у меня возникают проблемы, пытаясь удалить locationlistener, когда флажок не установлен. Кроме того, я получаю несколько приращений, когда перепроверяю флажок. Ниже мой код. Я вызываю метод testgps () из метода OnCreate () моего класса.
Если у вас есть какие-либо предложения, они будут оценены.
Thx
private void testgps() {
final CheckBox gps_enb = (CheckBox) findViewById(R.id.checkBox_gps);
gps_enb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LocationManager loc = (LocationManager) getSystemService(LOCATION_SERVICE);
if (((CheckBox) v).isChecked()) {
long minTime = 10000;
float minDistance = 1;
loc.requestLocationUpdates( LocationManager.GPS_PROVIDER, minTime,minDistance, new LocationListener() {
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onLocationChanged(Location location) {
TextView count = (TextView) findViewById(R.id.textView_GPS_Listener_debug);
int buffer = new Integer(count.getText().toString()).intValue() + 1;
StringBuilder count_up = new StringBuilder();
count_up.append(buffer);
count.setText(count_up);
}
});
Toast.makeText(QuizSettingsActivity.this, "True",
Toast.LENGTH_SHORT);
Toast.makeText(QuizSettingsActivity.this, "Selected", Toast.LENGTH_SHORT).show();
} else {
loc = null;
Toast.makeText(QuizSettingsActivity.this, "Not selected", Toast.LENGTH_SHORT).show();
}
}
});
Привет, спасибо за помощь. Это то, чем я закончил. Я еще немного покопался в модификаторах без доступа.
private void testgps () {
final CheckBox gps_enb = (CheckBox) findViewById(R.id.checkBox_gps);//Checkbox to Enable GPS
final LocationManager loc = (LocationManager)getSystemService(LOCATION_SERVICE);//Declare location mgr
//Location Listner
final LocationListener loc_listener= new LocationListener() {
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onLocationChanged(Location location) {
TextView count = (TextView) findViewById(R.id.textView_GPS_Listener_debug);
int buffer = new Integer(count.getText().toString()).intValue() + 1;
StringBuilder count_up = new StringBuilder();
count_up.append(buffer);
count.setText(count_up);
}
};
gps_enb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean checked = gps_enb.isChecked();
if (checked==true) {
long minTime = 10000;
float minDistance = 1;
loc.requestLocationUpdates( LocationManager.GPS_PROVIDER, minTime,minDistance, loc_listener);//Provide Location Updates
Toast.makeText(QuizSettingsActivity.this, "Selected", Toast.LENGTH_SHORT).show();
};
if (checked!=true){
loc.removeUpdates(loc_listener);
Toast.makeText(QuizSettingsActivity.this, "Not selected", Toast.LENGTH_SHORT).show();
}
}
});