- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我想知道一种方法或方法来找到手机连接到的小区的位置(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 个 API 检索坐标。其他人没有。不知道为什么 我正在使用 GPSTracker 服务 public Location getLocation()
我有一个表(DB2 数据库),其中包含城市信息和相应的经纬度以及与城市相关的许多其他信息。我的要求是: 我的应用程序的输入将是纬度和经度,它们可能是或许多不是存储在数据库中的精确纬度和经度。我需要借助
我在经度和纬度上有一个位置 (A)。 我有一条线段,起点(B)和终点(C)在经度和纬度上。 我试图计算的是从 A 到 BC 线的最短距离。 换句话说,从 A 到最近点(在 BC 线上)的距离(以米为单
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
这个问题在这里已经有了答案: Find nearest latitude/longitude with an SQL query (18 个答案) 关闭 6 年前。 我正在尝试编写一个在某个位置附近
我正在尝试将 Yelp 的 API 与纬度/经度位置结合使用。我使用了 yelp 给出的 javascript 代码,它基本上有一个参数数组,并像这样将值插入其中: parameters.push([
我有一大组纬度和经度需要存储在 MySQL 数据库中。我正在阅读有关要使用的字段类型的相互矛盾的建议。 数据的一个例子是... Lat | Long -----------------
在我的应用程序中,我通过以特定时间间隔从服务器获取他们的位置(纬度和经度)来显示其他人的位置。 获取后,我必须删除所有注释并删除基于服务器数据的新注释。 但它看起来非常低效,因为当我们以前存在相同用户
我正在尝试将鼠标在谷歌地图上的位置转换为 LatLng 对象。我看到很多关于通过谷歌地图“点击”事件等获取位置的帖子,如下所示: google.maps.event.addListener(map,
我的 SQLite 数据库中存储了经纬度数据,我想获取与我输入的参数最近的位置(例如,我当前的位置 - 纬度/经度等)。 我知道这在 MySQL 中是可能的,并且我已经进行了相当多的研究,认为 SQL
伙计们,我在我的 Android 应用程序中实现了谷歌地图,并开始创建一个标记,我在 map 中间放置了一个标记图像。现在,我希望每当用户拖动 map 时,我都能得到 map 中心的位置(我放置图像的
我正在实现 GPS 跟踪器以从 http://www.androidhive.info/2012/07/android-gps-location-manager-tutorial/ 获取经度和纬度.
我有一个多边形形状文件(可下载 here ),我想从中创建一个包含 3 列的 data.frame ,其中包含: 多边形 ID 质心纬度 质心经度 来自这个答案here ,我知道以 Formal Cl
有没有办法使用facebook api以(纬度和经度格式)获取用户的位置? 我能够获得位置名称和其他属性,但不能获得该地点的经纬度。 javascript中是否有相同的API。 最佳答案 如果您有用户
在我的“原生”Android 应用程序中,我试图计算 map 上两个位置之间以英尺和/或米(如乌鸦飞翔)为单位的距离。理想情况下,会有一种方法将两个 LatLng 值(因为这是我随时可用的)作为输入并
我想使用 Google API 获取 GPS 位置。 我的代码: mGoogleApiClient = new GoogleApiClient.Builder(this)
这个问题在这里已经有了答案: How to calculate the latlng of a point a certain distance away from another? (6 个答案)
我是一名优秀的程序员,十分优秀!