获取塔 GSM 位置 lat lng

2023-12-07

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

这是我的课:

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() or gsmLocation.getLongitude()?


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

如果您只想修复设备的位置,请尝试这个问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取塔 GSM 位置 lat lng 的相关文章

  • BottomNavigationView - 如何获取选定的菜单项?

    我使用BottomNavigationView来切换片段 如何获取当前选定的菜单项 以防止重新打开片段 BottomNavigationView bottomNavigationView BottomNavigationView findV
  • 检测到设备正在振动?

    我使用下面的代码来振动设备 public void vibrator try Vibrator vibrator Vibrator getSystemService Context VIBRATOR SERVICE vibrator vib
  • 共同的偏好不断消失

    我正在使用共享首选项来存储我的应用程序的登录凭据 除了一个用户之外 一切正常 一段时间后 共享偏好似乎会以某种方式重置或清除 我已针对该用户调整了我的应用程序 使其不再清除他的共享偏好设置 这样我就可以确定这不是我的应用程序的错 但即使在这
  • Android:“dp”到“px”转换?

    我正在读这篇文章 http developer android com guide practices screens support html http developer android com guide practices scre
  • RxJava、Proguard 和 sun.misc.Unsafe

    我有以下问题RxJava 1 1 0 使用时Proguard 我没有更改 RxJava 版本或其 pro文件 但更新后OkHttp我无法编译使用Proguard因为我有关于sun misc Unsafe不在场 rxJava pro keep
  • 如果我们使用后退按钮退出,为什么 Android 应用程序会重新启动?

    按住主页按钮并返回应用程序时 应用程序不会重新启动 为什么使用后退按钮会重新启动 如果我们使用后退按钮退出 有什么方法可以解决在不重新启动的情况下获取应用程序的问题吗 请帮忙 当您按下Home按钮 应用程序将暂停并保存当前状态 最后应用程序
  • 线程自动利用多个CPU核心?

    假设我的应用程序运行 2 个线程 例如渲染线程和游戏更新线程 如果它在具有多核 CPU 当今典型 的移动设备上运行 我是否可以期望线程在可能的情况下自动分配给不同的核心 我知道底层操作系统内核 Android linux内核 决定调度 我的
  • Android Studio 在编译时未检测到支持库

    由于 Android Studio 将成为 Android 开发的默认 IDE 因此我决定将现有项目迁移到 Android studio 中 项目结构似乎不同 我的项目中的文件夹层次结构如下 Complete Project gt idea
  • 在意图过滤器中使用多个操作时的默认值

    尝试理解 Android 中的意图和操作并查看文档 http developer android com guide topics intents intents filters html 但我一直看到的一件事是定义了多个操作的意图过滤器
  • 如何查找 Android 设备中的所有文件并将它们放入列表中?

    我正在寻求帮助来列出 Android 外部存储设备中的所有文件 我想查找所有文件夹 包括主文件夹的子文件夹 有办法吗 我已经做了一个基本的工作 但我仍然没有得到想要的结果 这不起作用 这是我的代码 File files array file
  • 从 Firebase 数据库填充微调器

    public class MainActivity extends AppCompatActivity DatabaseReference reference Spinner areaSpinner ArrayList
  • 应用程序未安装在 Android 模拟器上

    我正在 android Geocoder 中开发一个应用程序 当我运行该应用程序时 它会显示 2011 01 11 11 08 13 GeoTourProject 自动目标模式 使用现有模拟器 emulator 5554 运行兼容的 AVD
  • MediaCodec 创建输入表面

    我想使用 MediaCodec 将 Surface 编码为 H 264 使用 API 18 有一种方法可以通过调用 createInputSurface 然后在该表面上绘图来对表面中的内容进行编码 我在 createInputSurface
  • 使用 Matrix.setPolyToPoly 选择位图上具有 4 个点的区域

    我正在 Android 上使用位图 在使用 4 个点选择位图上的区域时遇到问题 并非所有 4 点组都适合我 在某些情况下 结果只是一个空白位图 而不是裁剪后的位图 如图所示 并且 logcat 中没有任何错误 甚至是内存错误 这是我用来进行
  • Android 设备上的静默安装

    我已经接受了一段时间了 在 Android 上静默安装应用程序是不可能的 也就是说 让程序安装捆绑为 APK 的应用程序 而不提供标准操作系统安装提示并完成应用程序安装程序活动 但现在我已经拿到了 Appbrain 快速网络安装程序的副本
  • 当手机旋转(方向改变)时如何最好地重新创建标记/折线

    背景 开发一个使用 Android Google Map v2 的本机 Android 应用程序 使用android support v4 app FragmentActivity 在 Android v2 2 上运行 客观的 在更改手机方
  • 保护 APK 中的字符串

    我正在使用 Xamarin 的 Mono for Android 开发一个 Android 应用程序 我目前正在努力使用 Google Play API 添加应用内购买功能 为此 我需要从我的应用程序内向 Google 发送公共许可证密钥
  • Android 如何聚焦当前位置

    您好 我有一个 Android 应用程序 可以在谷歌地图上找到您的位置 但是当我启动该应用程序时 它从非洲开始 而不是在我当前的城市 国家 位置等 我已经在developer android com上检查了信息与位置问题有关 但问题仍然存在
  • 如何将图像从 Android 应用程序上传到网络服务器的特定文件夹中

    如何将图像从 android 移动到 Web 服务器上的指定文件夹 这是我的安卓代码 package com example bitmaptest import java io ByteArrayOutputStream import ja
  • 找到 Android 浏览器中使用的 webkit 版本?

    有没有办法知道某些特定手机上的 Android 浏览器使用的是哪个版本的 webkit 软件 如果有一个您可以浏览以获取该信息的 URL 那就太好了 但任何其他方式也很好 如果你知道 webkit 版本 你就知道 html5 支持多少 至少

随机推荐

  • PostgreSQL IN() 子句中的 ORDER BY 值

    好的 有一些关于如何执行此操作的答案 但所有答案都假设查询选择全部 如果您有不同的选择 这些方法将不再起作用 请参阅此处了解该方法 在 Postgresql 中模拟 MySQL 的 ORDER BY FIELD 基本上我有 SELECT D
  • React.js 应用程序显示 404 未在 nginx 服务器中找到

    我将react js应用程序上传到服务器 我正在使用 nginx 服务器 应用程序运行良好 但是当我转到另一个页面并刷新时 该网站无法正常工作 它显示 404 未找到错误 我该如何解决这个问题 当你的react js应用程序加载时 路由由前
  • PostgreSQL:在 PostgreSQL 中同时修改所有表的 OWNER

    如何修改 PostgreSQL 数据库中所有表的所有者 I tried ALTER TABLE OWNER TO new owner但它不支持星号语法 您可以使用REASSIGN OWNED命令 概要 REASSIGN OWNED BY o
  • 如何创建自定义 WPF 设置向导

    我已经构建了我的第一个 wpf 应用程序 没什么花哨的 但我想通过添加一个设置让它看起来很酷 我在互联网上研究了一些免费的实用程序来做到这一点 但由于它是一个 wpf 应用程序 我希望设置能够进行沿着这些思路 知道如何创建自定义 wpf 设
  • 使用代码分发 git 配置

    在尝试为开发人员标准化平台时 我的需求之一是承诺 git config这样每个人都有相同的 CRLF 配置 而不会忘记手动设置它 我该如何设置 我对所有这些负面影响感到有点担心autocrlf 如果这个功能不起作用 为什么不删除它呢 这个功
  • 为什么尝试通过序列化为 JSON 来打印对象时缺少一些成员?

    如何在C 中打印任意变量以打印所有成员 我用相同的技术找到了三个答案 https stackoverflow com a 26181763 2125837这建议在其他答案中使用 Json NET 进行序列化 并且 https tech io
  • 如何附加数据库?

    当我想附加数据库时 出现错误 无法打开数据库 Almizan 因为它是版本 661 此服务器支持版本 655 及更早版本 不支持降级路径 无法打开新数据库 Almizan 创建数据库被中止 Net SqlClient 数据提供程序 帮我附加
  • 如何解决“APK META-INF/* 中复制的重复文件”问题

    我正在开发一个商业 Android 应用程序 我还使用一些根据不同许可证类型获得许可的库 其中一些库声明如下 如果图书馆有带有归属说明的 通知 文件 则在分发时必须包含该通知 其中之一已获得许可阿帕奇许可证 2 0例如 有不止一个图书馆 当
  • 使用包罗万象的通配符重定向到控制器(但使用不同的主控制器)

    我有一个问题 我想根据它的来源以不同的方式显示视图 不同的母版页 但不知道从哪里开始 我有几条路线可以捕获包含不同结构的各种不同类型的网址 在下面的代码片段中 我有一个产品路线 然后有一个合作伙伴网站路线 它也可以转到产品页面 但假设这个合
  • Rails Active Storage 并非每次都工作。有时有效,有时无效

    我正在使用 Active Storage 来存储比赛得分图像 我的班级看起来像这样 class TournamentMatch lt ApplicationRecords has many attached score cards end
  • 分区数量如何影响“wholeTextFiles”和“textFiles”?

    在spark中 我明白了如何使用wholeTextFiles and textFiles 但我不确定何时使用哪个 到目前为止我所知道的是 当处理不按行分割的文件时 应该使用wholeTextFiles 否则使用textFiles 我认为默认
  • 撤销 Azure AD B2C 上的刷新令牌

    我不知道是否有解决方案可以在以下情况下撤销刷新令牌 用户使用重置密码策略重置自己的密码 用户使用基于Graph API的特定表单更改自己的密码 我认为出于安全原因必须实施它 但我不知道现在是否可能 如果不可行的话什么时候可以使用 提前致谢
  • 创建实现 ContainerAwareInterface 的服务

    当我扩展 ContainerAware 或实现 ContainerAwareInterface 时 该服务不会调用 setContainer class CustomService implements ContainerAwareInte
  • 将字符串参数传递到点击绑定中,同时保留 Knockoutjs 中的默认参数

    我想将参数传递给单击时调用的函数 同时保留默认参数 问题出在啤酒花部分 我试着做remove
  • Python 的 itertools.product() 的效率

    所以我正在寻找不同的方法来计算笛卡尔积n数组 我遇到了使用以下代码的相当优雅的解决方案 此处为 SO import itertools for array in itertools product arrays print array 看着
  • XSL:列表分为几列

    请帮帮我 有一个节点列表
  • Android - 动态添加片段

    我浏览了互联网 只找到了 Android 片段的示例 它们被放置在适当的位置 比如其中两个 一个作为列表 第二个是显示列表中所选项目的详细信息 我的目标是拥有经典的 android 活动 并且我希望能够使用特定的 GUI 动态添加预先准备的
  • 3rd 方库和 Py2exe

    我将如何使用 py2exe 将 Beautiful soup 与我的代码一起捆绑到 exe 中 我现在用于 setup py 的代码是 from distutils core import setup import py2exe equiv
  • 如何让路线绘制更加高效?

    这是我用来绘制路线的代码 当我有 1000 个点时 路线会严重减慢用户界面 也许有人可以提供一个代码片段或一个链接来解释如何更有效地绘制路线 我知道解决这个问题的一种方法是缓存位图路径 但不知道该怎么做 public class PathO
  • 获取塔 GSM 位置 lat lng

    我想知道一种方法或方法来查找手机所连接的小区的位置 GSM 小区 这是我的课 package com example signal import java io File import java io FileOutputStream im