Android从手机塔获取位置信息
嗨,我想在没有互联网的情况下从手机发射塔(Sim卡)获取位置。我用了下面提到的代码,它只给我最后一个位置时,网络可用 我的要求是在没有WiFi或互联网的情况下获取位置。这可能吗Android从手机塔获取位置信息,android,android-location,android-loadermanager,Android,Android Location,Android Loadermanager,嗨,我想在没有互联网的情况下从手机发射塔(Sim卡)获取位置。我用了下面提到的代码,它只给我最后一个位置时,网络可用 我的要求是在没有WiFi或互联网的情况下获取位置。这可能吗 package com.example.gpscelltower; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Timer; import java.
package com.example.gpscelltower;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
public class CellTowerActivity1 extends Activity {
private static final String TAG = "Cell";
private static LocationManager locationManager;
private static LocationListener locationListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cell_tower);
locationManager=(LocationManager)getSystemService(Context.LOCATION_SERVICE);
String providerName=LocationManager.NETWORK_PROVIDER;
Location location=locationManager.getLastKnownLocation(providerName);
updateWithLocation(location);
//Cell-ID and WiFi location updates.
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 0, locationListener);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, locationListener);
locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
Log.d("TAG", "locationListner");
updateWithLocation(location);
String Text = "My current location is: " + "Latitude = "+ location.getLatitude() + "Longitude = " + location.getLongitude();
Toast.makeText(getApplicationContext(), Text, Toast.LENGTH_LONG).show();
Log.d("TAG", "Starting..");
}
public void onStatusChanged(String provider, int status, Bundle extras) {
Log.d("TAG", "onSatatus");
}
public void onProviderEnabled(String provider) {
Log.d("TAG", "onProviderEnable");
}
public void onProviderDisabled(String provider) {
Log.d("TAG", "onProviderDisble");
}
};
}
private void updateWithLocation(Location location) {
Log.d("TAG", "UpdateWithLocation");
String displayString;
if(location!=null){
Double lat=location.getLatitude();
Double lng=location.getLongitude();
Long calTime=location.getTime();
DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss.SSS");
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(calTime);
String time=formatter.format(calendar.getTime()).toString();
displayString="The Lat: "+lat.toString()+" \nAnd Long: "+lng.toString()+"\nThe time of Calculation: "+time;
}else{
displayString="No details Found";
}
Toast.makeText(CellTowerActivity1.this, ""+displayString, Toast.LENGTH_LONG).show();
}
}
Cell geolocation的工作原理是将Cell towers ID发送到服务器,服务器将其映射到坐标。所以,不幸的是,在没有标准API数据连接的情况下获取坐标是不可能的。上次我检查位置时,网络提供商需要internet访问@懒惰的忍者,所以没有互联网,我们无法获得位置?我认为手机塔返回位置,所以我尝试你可以使用GPS提供商!这是我唯一知道的另一种方式。但是GPS不能从手机发射塔获取位置,但GPS也可以从互联网获取位置。。我想没有任何方式的互联网。在我的理解中,没有必要通过互联网获得GPS定位。如果onLocationChanged()未触发,可能是因为您正在建筑内进行测试。要测试它,把它放在一个设备上,然后走到外面。