Как я могу найти свое текущее местоположение, если я в помещении? ANDROID

1

Я хочу найти свое текущее местоположение, если GPS не доступен, и нет беспроводной связи? Я думаю, мне нужно сделать некоторые вычисления или есть некоторые коды, которые он может сделать для меня.?

Спасибо.

Я написал, как этот код, но он не может найти текущее местоположение, когда я в помещении.

package com.anil.bestlocation;

import java.util.List;

import android.app.Activity;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.location.LocationProvider;
import android.os.Bundle;
import android.widget.TextView;

public class showBestLocation extends Activity implements LocationListener{
    /** Called when the activity is first created. */

    private static final String[] S = { "Out of Service", 
                                        "Temporarily Out of Service", 
                                        "Available" };
    private TextView output;
    private LocationManager locationManager;
    private String bestProvider;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        output = (TextView) findViewById(R.id.txtLoc);

        locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);

        //list all providers
        List<String> providers = locationManager.getAllProviders();
        for(String provider : providers){
            printProvider(provider);
        }

        Criteria criteria = new Criteria();
        bestProvider = locationManager.getBestProvider(criteria, false);
        output.append("\n\nBEST PROVIDER:\n");
        printProvider(bestProvider);

        output.append("Location.. (initialized with the last known location):");
        Location location = locationManager.getLastKnownLocation(bestProvider);
        printLocation(location);
    }



    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        locationManager.removeUpdates(this);
    }



    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
        locationManager.requestLocationUpdates(bestProvider, 20000, 1, this);
    }


    @Override
    public void onLocationChanged(Location location) {
        // TODO Auto-generated method stub
        printLocation(location);

    }

    @Override
    public void onProviderDisabled(String provider) {
        // TODO Auto-generated method stub
        output.append("\n\nSProvider Disabled: " + provider);

    }

    @Override
    public void onProviderEnabled(String provider) {
        // TODO Auto-generated method stub
        output.append("\n\nProvider Enabled: " + provider);

    }

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
        // TODO Auto-generated method stub
        output.append("\n\nProvider Status Changed: " + provider + 
                      ", Status= " + S[status]);

    }

    private void printProvider(String provider){
        LocationProvider info = locationManager.getProvider(provider);
        output.append(info.toString() + "\n\n");
    }

    private void printLocation(Location location){
        if(location == null){
            output.append("\nLocation UNKNOWN\n\n");
        }
        else{
            output.append("\n\nLatitude: " + location.getLatitude() + "\nLongitude: " + location.getLongitude());
        }
    }

}
  • 0
    "Есть ли какие-то расчеты", что именно?
  • 0
    Я действительно не знаю точно, но я могу сказать так, иногда GPS не доступен для поиска местоположения, и если это невозможно, я получаю местоположение по Wi-Fi, но если нет Wi-Fi, что я могу сделать ?
Теги:

3 ответа

0
Лучший ответ

В помещении вы можете использовать NetworkProvider для получения местоположения. Этот метод использует комбинацию информации о ячейке сотовой ячейки и информации о ближайшей базовой станции Wi-Fi для приближения вашего местоположения.

То, как это делается, - это сканирование области для базовых станций Wi-Fi и сбор информации о ячейке сотового оператора мобильной связи от ближайших сотовых вышек. Затем он отправляет все эти данные на сервер и просит сервер оценить ваше местоположение.

Если у вас нет доступа к Интернету (т.е. Нет подключения к Wi-Fi и никакого мобильного подключения к данным), вы не получите никакой информации о местоположении. Вы ничего не можете с этим поделать. Это так, как это работает.

  • 0
    Исходя из кода, который вы разместили, я не вижу, где вы используете NetworkProvider для обновления местоположения. Вы запрашиваете и сохраняете bestProvider без каких-либо критериев. Какой поставщик вы получаете в качестве лучшего поставщика? Если вы хотите получить как местоположения GPS, так и сетевые местоположения, вам нужно будет вызывать requestLocationUpdates() дважды, один раз для каждого провайдера.
  • 0
    я вызвал requestLocationUpdates () в методе onResume
Показать ещё 9 комментариев
1
  • 0
    Я написал, как этот класс, но когда я в помещении, он не может найти свое местоположение ..
0

Для получения местоположения вам понадобится какой-то вход. Ваши расчеты должны основываться на чем-то. В зависимости от вашего аппаратного обеспечения телефона вы можете попробовать использовать bluetooth, NFC или попробовать и обнаруживать некоторую частоту, которая излучается передатчиком (это должно быть размещено в месте). Я надеюсь, это поможет вам.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню