gpt4 book ai didi

android - 获取 Tower GSM 位置经纬度

转载 作者:搜寻专家 更新时间:2023-11-01 08:04:58 24 4
gpt4 key购买 nike

我想知道一种方法或方法来找到手机连接到的小区的位置(GSM one)

这是我的课:

package com.example.signal;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.LinkedList;
import java.util.List;

import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.net.ConnectivityManager;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.telephony.CellLocation;
import android.telephony.NeighboringCellInfo;
import android.telephony.PhoneStateListener;
import android.telephony.SignalStrength;
import android.telephony.TelephonyManager;
import android.telephony.cdma.CdmaCellLocation;
import android.telephony.gsm.GsmCellLocation;
import android.text.format.Time;
import android.util.Log;
import android.view.Menu;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
int counter = 0;
MainActivity mainn = this;
String SignalType = "";
List<TextView> ListText = new LinkedList<TextView>();
TelephonyManager Tel;
MyPhoneStateListener MyListener;
int dBm;
int ASU;
Context context;
LinearLayout Linear;
ScrollView scroll;
File myFile;
FileOutputStream fOut;
OutputStreamWriter myOutWriter;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main);
myFile = new File("/sdcard/mysdfile.txt");
while (myFile.exists())
{
counter++;
myFile = new File("/sdcard/mysdfile" + counter+".txt");
}
try {
myFile.createNewFile();
fOut = new FileOutputStream(myFile);
myOutWriter = new OutputStreamWriter(fOut);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Linear = new LinearLayout(this);
Linear.setOrientation(LinearLayout.VERTICAL);
scroll = new ScrollView(this);
scroll.addView(Linear);
this.setContentView(scroll);
Tel = ( TelephonyManager )getSystemService(Context.TELEPHONY_SERVICE);
if (Tel.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA) {
Toast.makeText(getApplicationContext(), "NO GSM", Toast.LENGTH_SHORT).show();
return;
} else if (Tel.getPhoneType() == TelephonyManager.PHONE_TYPE_GSM) {

}
Tel.listen(MyListener ,PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
MyListener = new MyPhoneStateListener();

}

/* Called when the application is minimized */
@Override
protected void onPause()
{
super.onPause();
Tel.listen(MyListener, PhoneStateListener.LISTEN_NONE);
}

/* Called when the application resumes */
@Override
protected void onResume()
{
super.onResume();
Tel.listen(MyListener,PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
}

/* —————————– */
/* Start the PhoneState listener */
/* —————————– */
private class MyPhoneStateListener extends PhoneStateListener
{
/* Get the Signal strength from the provider, each tiome there is an update */
@Override
public void onSignalStrengthsChanged(SignalStrength signalStrength)
{

super.onSignalStrengthsChanged(signalStrength);
//Toast.makeText(getApplicationContext(), "Go to Firstdroid!!! GSM Cinr = "
// + String.valueOf(signalStrength.getGsmSignalStrength()), Toast.LENGTH_SHORT).show();
ASU = signalStrength.getGsmSignalStrength();
if (ASU > 30) {
SignalType = "Good";
// signalStrengthText.setTextColor(getResources().getColor(R.color.good));
} else if (ASU > 20 && ASU < 30) {
SignalType = "Average";
// signalStrengthText.setTextColor(getResources().getColor(R.color.average));
} else if (ASU < 20) {
SignalType = "Weak";
// signalStrengthText.setTextColor(getResources().getColor(R.color.weak));
}
dBm= -113+(2*ASU);
TelephonyManager m = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
if (m.getSimState() != TelephonyManager.SIM_STATE_ABSENT){
// SIM card
} else {
// No SIM card
}
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
CellLocation location = telephonyManager.getCellLocation();
GsmCellLocation gsmLocation = (GsmCellLocation) location;
String networkOperator = telephonyManager.getNetworkOperator();

if (networkOperator != null) {
int mcc = Integer.parseInt(networkOperator.substring(0, 3));
int mnc = Integer.parseInt(networkOperator.substring(3));
Log.d("mcc " + mcc, "mnc " + mnc);
}
//CdmaCellLocation gsmLocation1 = (CdmaCellLocation) location;
int cellId = gsmLocation.getCid();
int lac = gsmLocation.getLac();
// Log.d("al latitude ", gsmLocation1.getBaseStationLatitude()+"");
//Time today = new Time(Time.getCurrentTimezone());
//today.setToNow();
String mydate = java.text.DateFormat.getDateTimeInstance().format(Calendar.getInstance().getTime());
TextView tvv = new TextView(mainn);
tvv.setText("GSM dBm " + String.valueOf(dBm) + " , Cell ID " + String.valueOf(cellId) + " , Cell LAC " + String.valueOf(lac)+ " , ASU " + ASU + " , Time now " + mydate + " , Signal Type " + SignalType);
// Toast.makeText(getApplicationContext(), "Go to Firstdroid!!! GSM dBm = "
// + String.valueOf(dBm) + " , Cell ID = " + String.valueOf(cellId) +" , Cell Lac = " + String.valueOf(lac), Toast.LENGTH_SHORT).show();
/* LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);

// Define a listener that responds to location updates
LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
// Called when a new location is found by the network location provider.
// makeUseOfNewLocation(location);
}

public void onStatusChanged(String provider, int status, Bundle extras) {}

public void onProviderEnabled(String provider) {}

public void onProviderDisabled(String provider) {}
};

// Register the listener with the Location Manager to receive location updates
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
String locationProvider = LocationManager.NETWORK_PROVIDER;
// Or use LocationManager.GPS_PROVIDER

Location lastKnownLocation = locationManager.getLastKnownLocation(locationProvider);
double lat = lastKnownLocation.getLatitude();
double longg = lastKnownLocation.getLongitude();
Log.d("Lat is " + lat, "Long is " + longg);
int psc = gsmLocation.getPsc();
Log.d("TAG", "PSC = " + psc); */

List<NeighboringCellInfo> neighCell = null;
neighCell = telephonyManager.getNeighboringCellInfo();
for (int i = 0; i < neighCell.size(); i++)
{
NeighboringCellInfo thisCell = neighCell.get(i);
int CID = thisCell.getCid();
int RSSI = thisCell.getRssi();
int PSC = thisCell.getPsc();
Log.d("TAG", " "+CID+" - "+RSSI + " - " + PSC);
}
try
{

myOutWriter.append(tvv.getText());
myOutWriter.append("\n");
}
catch (Exception e)
{
e.printStackTrace();
}
Linear.addView(tvv);
Linear.invalidate();
scroll.invalidate();
}

};/* End of private Class */

/* GetGsmSignalStrength */
@Override
public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onBackPressed()
{
try
{
myOutWriter.close();
fOut.close();
this.finish();
}
catch (Exception e)
{
e.printStackTrace();
}
}

}

有什么我可以说 gsmLocation.getLatitude()gsmLocation.getLongitude() 吗?

最佳答案

要了解当前 GSM 小区的位置,您需要一个包含小区 ID 及其位置的数据库。如果您不是网络运营商,则没有真正好的、权威的信息来源,因为他们不发布这些信息。

如果您只想为设备定位,请尝试 this SO question.

关于android - 获取 Tower GSM 位置经纬度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15560870/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com