Android Google Maps V2 当前位置纬度经度 NullPointerException

2024-05-03

有很多类似的问题,但我没有找到解决我的问题的方法。 setUpMap方法是:

private void setUpMap() {
    BitmapDescriptor iconm = BitmapDescriptorFactory.fromResource(R.drawable.m);
    BitmapDescriptor iconc = BitmapDescriptorFactory.fromResource(R.drawable.c);
    // Enable MyLocation Layer of Google Map
    mMap.setMyLocationEnabled(true);
    // Get LocationManager object from System Service LOCATION_SERVICE
    LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    // Create a criteria object to retrieve provider
    Criteria criteria = new Criteria();
    // Get the name of the best provider
    String provider;
    provider = locationManager.getBestProvider(criteria,true);
    // Get Current Location
    Location myLocation = locationManager.getLastKnownLocation(provider);
    // getting GPS status
    boolean isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
    // getting network status
    boolean isNWEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);

    if (!isNWEnabled)
    {
        AlertDialog.Builder dialog = new AlertDialog.Builder(this);
        dialog.setMessage(getString(R.string.askposition) );
        dialog.setPositiveButton(getString(R.string.settings), new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface paramDialogInterface, int paramInt) {
                // TODO Auto-generated method stub
                startActivityForResult(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS), 100);
            }
        });
        dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface paramDialogInterface, int paramInt) {
                // TODO Auto-generated method stub
            }
        });
        dialog.show();
        // no network provider is enabled
        Log.e("Current Location", "Current Lat Lng is Null");
    }
    else
    {
        // if GPS Enabled get lat/long using GPS Services
        if (isGPSEnabled){
            if (myLocation == null) {
                if (locationManager != null) {
                    myLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
                    double latitude = myLocation.getLatitude();
                    double longitude = myLocation.getLongitude();
                    LatLng latlng = new LatLng(latitude, longitude);
                    //myLocation = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                    //double latitude = myLocation.getLatitude();
                    //double longitude = myLocation.getLongitude();
                    //String lati = String.valueOf(latitude);
                    //String longi = String.valueOf(longitude);
                    // Create a LatLng object for the current location
                    //LatLng latlng = new LatLng(latitude, longitude);
                    // set map type
                    //mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
                    //CameraPosition cameraPosition = new CameraPosition.Builder().target(latlng).zoom(12).build();

                    //mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));

                    // Show the current location in Google Map
                   // mMap.moveCamera(newLatLng(latlng));
                    // Zoom in the Google Map
                    //mMap.animateCamera(CameraUpdateFactory.zoomTo(12));
                }
            }
        }
        else {
            // First get location from Network Provider
            if (isNWEnabled) {
                if (myLocation == null) {
                    if (locationManager != null) {
                        myLocation = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                        double latitude = myLocation.getLatitude();
                        double longitude = myLocation.getLongitude();
                        LatLng latlng = new LatLng(latitude, longitude);
                        //double latitude = myLocation.getLatitude();
                        //double longitude = myLocation.getLongitude();

                        // Create a LatLng object for the current location
                        //LatLng latlng = new LatLng(latitude, longitude);
                        // set map type
                        //mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);

                        // Zoom in the Google Map
                        //CameraPosition cameraPosition = new CameraPosition.Builder().target(latlng).zoom(12).build();

                        //mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
                        //mMap.animateCamera(CameraUpdateFactory.zoomTo(12));
                        // Show the current location in Google Map
                        //mMap.moveCamera(newLatLng(latlng));
                    }
                }
            }}
        }

    double latitude = myLocation.getLatitude();
    double longitude = myLocation.getLongitude();
    LatLng latlng = new LatLng(latitude, longitude);

    CameraPosition cameraPosition = new CameraPosition.Builder().target(latlng).zoom(11).build();
    mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);

    mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));

当我第一次从 Android Studio 运行应用程序到我的设备时,它工作正常,如果我关闭并重新启动应用程序,它也工作正常。 但是当我重新启动智能手机时,它给了我 NullPointerException @double latitude = myLocation.getLatitude(); 从那一刻起,它总是崩溃。 我该如何解决它? 注释的代码行是关于一些尝试。完全一样的问题。 任何帮助将非常感激。 提前致谢。


我认为解决你的问题的方法是使用被动_提供者 http://developer.android.com/reference/android/location/LocationManager.html#PASSIVE_PROVIDER.

示例代码:

    LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 10, locationListener);
    myLocation = locationManager.getLastKnownLocation(LocationManager.PASSIVE_PROVIDER);
    double longitude = myLocation.getLongitude();
    double latitude = myLocation.getLatitude();

    private final LocationListener locationListener = new LocationListener() {
        public void onLocationChanged(Location location) {
            longitude = location.getLongitude();
            latitude = location.getLatitude();
        }
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android Google Maps V2 当前位置纬度经度 NullPointerException 的相关文章

  • 将数组值导出到 csv 文件 java

    我只需要帮助将数组元素导出到 csv 文件 我不知道我的代码有什么问题 任何帮助将不胜感激 谢谢 for int index 0 index lt cols length index FileWriter fw new FileWriter
  • 如何强制下载图片?

    我的页面上有一个动态生成的图像 如下所示 img src 我不想告诉我的用户右键单击图像并点击保存 而是想公开一个下载链接 单击该链接将提示下载图像 如何实现这一目标 最初我在 js 中尝试这样做 var path my image att
  • 将 Hbase 与 PHP 集成 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我已经安装了 Hbase 现在我正在寻找一些 PHP 库来将 hbase 与 PHP 集成 我尝试了 2 个库 第一个是我尝试与 th
  • R - 加速近似日期匹配。 idata.frame?

    我正在努力有效地执行两个数据帧之间的 关闭 日期匹配 这个问题探索了一个解决方案 使用idata frame来自plyr包 但我也对其他建议的解决方案感到非常满意 这是两个数据框的非常简单的版本 sampleticker lt data f
  • UI Router 将 url 与 hash(片段)相匹配

    使用 UI 路由器 我需要将 URL 与其中包含的哈希 片段 进行匹配 HTML5 模式 state myState url path id page section templateUrl template html controller
  • CUDA 添加矩阵的行

    我试图将 4800x9600 矩阵的行加在一起 得到一个 1x9600 的矩阵 我所做的是将 4800x9600 分成 9 600 个矩阵 每个矩阵长度为 4800 然后我对 4800 个元素进行缩减 问题是 这真的很慢 有人有什么建议吗
  • 如何使用placement new重新初始化该字段?

    我的课程包含字段 private OrderUpdate curOrderUpdate 我一遍又一遍地使用它 经常需要重新初始化 for int i 0 i lt entries size i auto entry entries i ne
  • 突出显示单词并提取其附近文本的函数

    我有一个文本例如 Etiam porta semmalesuada magna mollis euismod 整数取数 ante venenatis dapibus posuere velit aliquet 埃蒂亚姆 门塔 塞姆 male
  • 拉斐尔路径交叉点不起作用

    我对拉斐尔和 pathIntersection method JSFiddle 示例 http jsfiddle net t6gWt 2 您可以看到有两条线都与曲线相交 但当我使用 pathIntersection method 有一个未解
  • 缓存感知树的实现

    I have a tree where every node may have 0 to N children 用例是以下查询 给定指向两个节点的指针 这些节点是否位于树的同一分支内 Examples q 2 7 gt true q 5 4
  • 结构化绑定的用例有哪些?

    C 17 标准引入了新的结构化绑定 http en cppreference com w cpp language structured binding功能 最初是proposed http www open std org jtc1 sc
  • 为什么匹配模板类上的部分类模板特化与没有模板匹配的另一个部分特化不明确?

    这个问题可能很难用标题中的句子来描述 但这里有一个最小的例子 include
  • 无法完成添加 Android 证书的构建

    我刚刚完成构建我的应用程序 我发送了一个没有证书的构建版本 它工作了 现在添加一个 android 证书 它在我的代号 one 仪表板上报告构建错误 如有帮助 将不胜感激 失败 构建失败并出现异常 出了什么问题 执行 任务失败 transf
  • jQuery appendTo(), json 在 IE 6,7,8 中不起作用

    我这两天绞尽脑汁想找到解决办法 我使用 jQuery ajax 从数据库中获取值 以便在另一个框发生更改时更新一个框 php 脚本从数据库中获取值 然后输出 json 它在 FF 中工作正常 但在所有版本的 IE 中 选择框都不会更新 我已
  • Jenkins 通过 ssh 发布显示错误“jenkins.plugins.publish_over.BapPublisherException:无法添加 SSH 密钥。”

    为了使用 ssh 连接 jenkins 与远程服务器 我在 jenkins 中安装了通过 SSH 发布的插件 但配置后 它显示错误为 jenkins plugins publish over BapPublisherException 无法
  • NSUserDefaults、Settings.bundle 和应用程序组

    我有一个有 2 个目标的应用程序 主应用程序和 Today 扩展 为了在这些目标之间共享设置 我打开了应用程序组功能 添加了一个组group myApp com然后使用NSUserDefaults在主应用程序和今日扩展中都是如此 var d
  • React Native 0.61 中引入的快速刷新不起作用

    也发表在https github com facebook react native issues 27583 https github com facebook react native issues 27583 更新 一天过去了 我再次
  • 使用未分配的局部变量

    我遇到了一个错误 尽管声明了变量 failturetext 和 userName 错误仍然出现 谁能帮帮我吗 Use of Unassigned local variable FailureText Use of Unassigned lo
  • 在 Perl 中查找数组的大小

    我似乎遇到过几种不同的方法来查找数组的大小 这三种方法有什么区别呢 my arr 2 print scalar arr First way to print array size print arr Second way to print
  • 将 R 中的列中的单引号替换为双引号

    我在 R 中的数据框有一个 A 列 其中有带单引号的字符串数据 Column A Hello World Hi World Good morning world 我想做的是将单引号替换为双引号并实现如下所示的输出 Column A Hell

随机推荐

  • PHP 中使用 MVC 的 Post-Redirect-Get (PRG) 最佳实践

    PRG 模式与 MVC 是否有最佳实践 在本教程中 http www theserverside com news 1365146 Redirect After Post http www theserverside com news 13
  • Android 数组列表如何使用

    所以我有一个标记列表 我需要弄清楚如何处理它们 我已经搜索了几个小时 但没有明确说明如何使用这些信息或如何从列表中获取信息 请解释或分解我的代码并告诉我它到底是如何工作的 这样我就可以在地图上设置标记 这就是我将标记添加到列表中的方法 现在
  • 我如何将 C++ 与 VALA 混合起来

    我需要用 C 编写跨平台的 GUI 应用程序 但由于 C 的大多数 GUI 库都有点乏味 而且我对 C NET 非常熟悉 我发现使用 GTK 的代码 Vala 代码非常有趣 并且与其他方式相比有点容易 那么我该如何将 VAlA 与 C 混合
  • Windows 终端中的图标和背景图像字段无法识别父进程目录

    Windows 终端版本 1 12 10732 0 Windows 内部版本号 19043 1645 Issue 如果这个问题已经在其他地方得到解决 请原谅我 但我意识到当Use parent process directory被检查 Co
  • Perl:通过一次 MySQL 调用更新多行

    似乎这不可能 但嘿我不妨问一下 我可能是错的 想知道 perl 是否可以使用一个 MySQL 调用来更新多行 我正在使用 DBI 任何帮助或反馈将不胜感激 这可以通过 ASP 和 ASP net 在 MSSQL 中实现 所以想知道是否也可以
  • MongoDB 将字符串转换为数组

    我对 MongoDB 非常陌生 在将数据导入数据库时 遇到一些困难 现在我有一个文档集合 看起来像 db Question findOne id ObjectId 124 Answers 502 784 1060 答案现在存储为单个字符串
  • 为什么any 会在不进行强制转换的情况下转换为更具体的类型

    在试图找出将 http 调用的 json 响应转换为 TypeScript 类 接口的最好方法时 我发现了这个代码片段堆栈溢出 https stackoverflow com questions 37792534 http type ass
  • 如何使用 GPUImageHarrisCornerDetectionFilter 获取角点

    我正在尝试使用以下方法从静态图像中获取角点GPUImageHarrisCornerDetectionFilter 我查看了项目中的示例代码 查看了文档 还查看了这篇文章 内容大致相同 GPUImage 现有 UIImage 上的 Harri
  • 如何访问模板缓存? - 姜戈

    I am 缓存 HTML在几个模板内 例如 cache 900 stats stats endcache 我可以使用以下方式访问缓存吗低级图书馆 例如 html cache get stats 我确实需要对模板缓存进行一些细粒度的控制 有任
  • 我该怎么做才能完全关闭与mcu的tcpClient连接?

    我现在正在研究与 ESP32 中运行的 tcp 服务器的 tcp 套接字连接 通信工作正常 但我无法关闭连接 在搜索关闭 重置 tcpClient 上的解决方案后 似乎关闭 tcpClient 的正确方法应该是 tcpClient GetS
  • 使用 GIT_PS1_SHOWCOLORHINTS 自定义 __git_ps1 的颜色

    我尝试过的 我已更新我的提示以包含分支名称 git ps1 另外 我设置GIT PS1 SHOWCOLORHINTS 问题 提示正确显示 然而 树枝的颜色始终是绿色的 我预计肮脏的树枝会是红色的 文档指出 颜色基于 git status s
  • MVC 4 无法修复错误元素中存在类型“System.Web.Mvc.WebViewPage

    将我的 MVC 4 项目从 VS 2012 移动到 VS 2013 社区后 我收到以下错误 在 LogIn cshtml 页面中 CS0433 类型 System Web Mvc WebViewPage 存在于元素c Windows Mic
  • 主干关系有许多最佳实践

    我是 Backbone 关系新手 我不确定使用 HasMany 的正确方法是什么 我有一个Parent模型有很多children 许多 是指成千上万的孩子 为了避免性能问题 我通过外键查询子项 child parent 1 而不是创建一个巨
  • 我可以从 LDAP 更改自己的 Active Directory 密码(无需管理帐户)

    我没有 也不会 拥有管理员帐户 我想从 java 更改 Active Directory 中自己 用户 的密码 我怎样才能做到这一点 使用来自网络的代码 private void changePass throws Exception St
  • 如何使用PDFBOX确定文本的人工粗体样式、人工斜体样式和人工轮廓样式

    我正在使用 PDFBox 来验证 pdf 文档 检查 PDF 中存在的以下类型的文本有一定要求 人工粗体样式文本 人造斜体样式文本 人工轮廓样式文本 我在 PDFBOX api 列表中进行了搜索 但找不到此类 api 任何人都可以帮助我并告
  • R 中的网页抓取表

    完全菜鸟试图抓取此页面上的表格 我所能做的最远的是加载 rvest 包 我的问题是 我找不到合适的元素 我通过检查器尝试的元素是 table w782 comm lsjz 但它返回长度为0的列表 并在 html table 之后执行 gt
  • 下载位置 Selenium-webdriver Cucumber Chrome

    我正在使用 Cucumber 和 Ruby 当通过 Selenium Webdriver 在 Chrome 中运行测试时 我想将下载位置更改为测试文件夹而不是用户下载文件夹 我当前的 chrome 驱动程序设置如下 Capybara def
  • Kamada 和 Kawai 图形布局算法? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有人尝试过 Kamada Kawai 的 88 算法来绘制一般无向图吗 如果是这样 并且您知道其中的任
  • 设置 put 的行尾字符

    我有一系列想要打印的条目 Being arr数组 我只是用来写 puts arr 然后我需要使用DOS格式的行尾 r n 所以我写道 arr each e print e r n 这工作正常 但我想知道是否有一种方法可以指定要使用的行尾格式
  • Android Google Maps V2 当前位置纬度经度 NullPointerException

    有很多类似的问题 但我没有找到解决我的问题的方法 setUpMap方法是 private void setUpMap BitmapDescriptor iconm BitmapDescriptorFactory fromResource R