以下是《第一行代码》获取经纬度示例,为什么我真机测试无效果,连Log都没有在控制台打印

大针蜂 2015-07-17 07:43:31

...全文
459 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lt85612455 2016-05-31
  • 打赏
  • 举报
回复
楼主的问题解决了吗?为什么我也打不出来,代码和书上的一模一样。 权限如下。如果这个没有问题了,实在不知道是哪儿的问题。 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.administrator.locationmanager"> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
SMouse鱼骨头 2015-09-06
  • 打赏
  • 举报
回复
楼主可以比较一下,测试过了在户外这个Demo是没有问题的 package com.example.maptest; import java.util.ArrayList; import java.util.List; 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.text.TextUtils; import android.view.Menu; import android.view.MenuItem; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { private TextView text; LocationManager locationManager ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); text = (TextView)findViewById(R.id.text); locationManager= (LocationManager)getSystemService(Context.LOCATION_SERVICE); List<String> providers = new ArrayList<String>(); providers = locationManager.getProviders(true); String provider = null; if(providers.contains(LocationManager.GPS_PROVIDER)) { provider = LocationManager.GPS_PROVIDER; }else if(providers.contains(LocationManager.NETWORK_PROVIDER)){ provider = LocationManager.NETWORK_PROVIDER; }else if (providers.contains(LocationManager.PASSIVE_PROVIDER)){ provider = LocationManager.PASSIVE_PROVIDER; } if(TextUtils.isEmpty(provider)) { Toast.makeText(getApplicationContext(), "请打开GPS以便定位", Toast.LENGTH_LONG).show(); return; } Location location = locationManager.getLastKnownLocation(provider); Toast.makeText(getApplicationContext(), "provider" +provider + "<location>" +location , Toast.LENGTH_LONG).show(); if(location!=null) { double latitude = location.getLatitude(); double longitude = location.getLongitude(); text.setText("latitude: " +latitude +"\n"+"longitude : "+longitude); } locationManager.requestLocationUpdates(provider, 3000, 1, listener); } LocationListener listener = new LocationListener() { @Override public void onStatusChanged(String arg0, int arg1, Bundle arg2) {} @Override public void onProviderEnabled(String arg0) {} @Override public void onProviderDisabled(String arg0) {} @Override public void onLocationChanged(Location location) { Toast.makeText(getApplicationContext(), "<location> :" +location , Toast.LENGTH_LONG).show(); if(location!=null) { double latitude = location.getLatitude(); double longitude = location.getLongitude(); text.setText("latitude: " +latitude +"\n"+"longitude : "+longitude); } } }; @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); locationManager.removeUpdates(listener); } }
GaoleiFu 2015-09-05
  • 打赏
  • 举报
回复
引用 6 楼 fu755383249 的回复:
三楼说的对,Log没打印出来说明location为null了 你在if后面加个else打日志试一下,应该运行了。
我获取位置之前加了一个循环,打开定位不一定能获取位置,影响的原因很多,给你作参考: //位置大于1千米,或者时间大于5分钟时才会触发 Location location = null; int type = 0; //判断结果:0定位成功成功、本地与服务器数据已更新;1系统定位设置关闭;2安全软件权限阻止; try{ locationManager = (LocationManager)DemoHXSDKHelper.getCurrentActivity().getSystemService(Context.LOCATION_SERVICE); locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener); //由于GPS定位速度较慢,使用GPS会导致刷新数据时需要等待很长时间,本软件不需要精确位置,故使用网络定位 if(locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){ // locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 5*1000*60, 1*1000, locationListener); location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); int times = 10; while(location == null&×>0) { // EMLog.d("======获取失败,重试中======", "times:"+times); times --; locationManager.requestLocationUpdates("network", 0, 0, locationListener); } if(location == null){ //系统设置可用,实际未获取到,是安全软件拦截 type = 2; }else{ type = 0; } locationManager.removeUpdates(locationListener); }else{ EMLog.d("========位置获取失败===========","位置功能未开启,该用户无法使用定位及附近功能"); type = 1; } if(location != null){ upLoadLocaton(HCApplication.getInstance()); } }catch(Exception e){ } return type;
GaoleiFu 2015-09-05
  • 打赏
  • 举报
回复
三楼说的对,Log没打印出来说明location为null了 你在if后面加个else打日志试一下,应该运行了。
qq_27605041 2015-09-05
  • 打赏
  • 举报
回复
怎么解决的 ,程序运行也没有报错,就是显示不出经纬度来
qq_27605041 2015-09-05
  • 打赏
  • 举报
回复
luqing414 2015-07-18
  • 打赏
  • 举报
回复
Log没打印出来说明location为null了,你在上面加日志看看,确保相关的权限已添加
大针蜂 2015-07-18
  • 打赏
  • 举报
回复
并不能输出log,请问这是为什么啊,实在想不通
gao_chun 2015-07-17
  • 打赏
  • 举报
回复
1.确认下机器正常链接能输出Log 2.显示模式是d 3.网络是否正常,是否在AndroidManifest.xml中添加了网络访问权限 4.再检查下代码 5.还是不行?重装个系统

80,492

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧