GPS定位:locationManager.requestLocationUpdates()报错 100C

我是新手 自学 改代码按照视频里写的 视频里代码没问题 到我这就有问题:locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,2000,100,this); 整行代码都有红线! 本页代码跟视频里一模一样http://v.youku.com/v_show/id_XMTYyMDIwNTgzNg==.html?f=27510286&o=0&firsttime=187&spm=a2hfx.8251854.recordContent.DL~DD~5~5!11~5~A
请大神帮忙看看视频!

 package fragment;
import android.content.Context;
import android.content.Intent;
import android.location.Address;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.provider.Settings;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.example.luao2.jiemianzhuantiao.R;
import com.lidroid.xutils.ViewUtils;

import org.xutils.view.annotation.ViewInject;

import java.io.IOException;
import java.util.List;

import luao2.utils.SharedUtils;


/**
 * Created by Administrator on 2017/4/4.
 */

public class FragmentHome extends Fragment implements LocationListener{
    @ViewInject(R.id.index_top_city)
    private TextView topCity;
    private String cityName; //当前城市名称
    private LocationManager locationManager;


    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
                             @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.home_index, null);
        ViewUtils.inject(this,view);
        //获取数据并显示

        return view;
    }

    @Override
    public void onStart() {
        super.onStart();
        //检查当前的GPS模块
        checkGPSIsOpen();
    }
    private void checkGPSIsOpen(){
        //获取当前的LocationManager对象
        locationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE);
        boolean isOpen = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
        if (!isOpen){
            //进入GPS的设置页面
            Intent intent = new Intent();
            intent.setAction(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivityForResult(intent,0);
        }
        //开始定位
        startLocation();
    }
//使用GPS定位的方法
    private void startLocation(){


        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,2000,100,this);
    }
    //接收并且处理消息
    private Handler handler = new Handler(new Handler.Callback() {
        @Override
        public boolean handleMessage(Message msg) {
            if (msg.what == 1){
                topCity.setText(cityName);
            }
            return false;
        }
    });
    //获取对应位置的经纬度并且定位城市
    private void updateWithNewLocation(Location location){
        double lat = 0.0,lng = 0.0;
        if (location !=null){
            lat = location.getLatitude();
            lng = location.getLongitude();
            Log.i("TAG","经度是"+lat+"纬度是:"+lng);
        }else {
            cityName = "无法获取城市信息";
        }
        //通过经纬度获取地址,由于地址会有多个,这个和经纬度精确度有关,本实例中定义了最大的返回数2,即在集合对象中有两个值
        List<Address> list = null;
        Geocoder ge = new Geocoder(getActivity());
        try {
            list = ge.getFromLocation(lat,lng,2);
        } catch (IOException e) {
            e.printStackTrace();
        }
        if (list !=null && list.size()>0){
            for (int i = 0; i < list.size(); i++){
                Address ad = list.get(i);
                cityName = ad.getLocality();//获取城市
            }
        }
        //发送一条空消息
        handler.sendEmptyMessage(1);
    }

    //位置信息更改执行方法
    @Override
    public void onLocationChanged(Location location) {
        //更新当前的位置信息
        updateWithNewLocation(location);
    }
    @Override
    public void onProviderDisabled(String provider) {
    }

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

    @Override
    public void onDestroy() {
        super.onDestroy();
        //保存城市

        //停止定位
        stopLocation();
    }
    //停止定位
    private void stopLocation(){
        locationManager.removeUpdates(this);
    }
}
gps

3个回答

问题现在解决了没

@SuppressLint("MissingPermission")
private void StartLocation(){
m_locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,2000,10,this);
}
加个注解就好了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
gps定位requestLocationUpdates第四个参数写什么?

我是新手 自学 改代码按照视频里写的 视频里代码没问题 到我这就有问题:locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,2000,100,this); 这里的this 有问题 换成什么参数都有问题 写成this 的话 整行代码都有红线! 请大神帮忙! ``` package fragment; import android.content.Context; import android.content.Intent; import android.location.Address; import android.location.Geocoder; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.provider.Settings; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; ; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.example.luao2.jiemianzhuantiao.R; import com.lidroid.xutils.ViewUtils; import org.xutils.view.annotation.ViewInject; import java.io.IOException; import java.util.List; import luao2.utils.SharedUtils; /** * Created by Administrator on 2017/4/4. */ public class FragmentHome extends Fragment implements LocationListener{ @ViewInject(R.id.index_top_city) private TextView topCity; private String cityName; //当前城市名称 private LocationManager locationManager; @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.home_index, null); ViewUtils.inject(this,view); //获取数据并显示 return view; } @Override public void onStart() { super.onStart(); //检查当前的GPS模块 checkGPSIsOpen(); } private void checkGPSIsOpen(){ //获取当前的LocationManager对象 locationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE); boolean isOpen = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); if (!isOpen){ //进入GPS的设置页面 Intent intent = new Intent(); intent.setAction(Settings.ACTION_LOCATION_SOURCE_SETTINGS); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivityForResult(intent,0); } //开始定位 startLocation(); } //使用GPS定位的方法 private void startLocation(){ locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,2000,100,this); } //接收并且处理消息 private Handler handler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message msg) { if (msg.what == 1){ topCity.setText(cityName); } return false; } }); //获取对应位置的经纬度并且定位城市 private void updateWithNewLocation(Location location){ double lat = 0.0,lng = 0.0; if (location !=null){ lat = location.getLatitude(); lng = location.getLongitude(); Log.i("TAG","经度是"+lat+"纬度是:"+lng); }else { cityName = "无法获取城市信息"; } //通过经纬度获取地址,由于地址会有多个,这个和经纬度精确度有关,本实例中定义了最大的返回数2,即在集合对象中有两个值 List<Address> list = null; Geocoder ge = new Geocoder(getActivity()); try { list = ge.getFromLocation(lat,lng,2); } catch (IOException e) { e.printStackTrace(); } if (list !=null && list.size()>0){ for (int i = 0; i < list.size(); i++){ Address ad = list.get(i); cityName = ad.getLocality();//获取城市 } } //发送一条空消息 handler.sendEmptyMessage(1); } //位置信息更改执行方法 @Override public void onLocationChanged(Location location) { //更新当前的位置信息 updateWithNewLocation(location); } @Override public void onProviderDisabled(String provider) { } @Override public void onProviderEnabled(String provider) { } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onDestroy() { super.onDestroy(); //保存城市 //停止定位 stopLocation(); } //停止定位 private void stopLocation(){ locationManager.removeUpdates(this); } } ```

我通过GPS用locationmanager获取不到位置,不会回调onLocationChanged

我通过GPS用locationmanager根本获取不到位置 不会回调onLocationChanged,室内室外都不行,移动了也不行,用的真机测试 ``` private LocationListener listener = new LocationListener() { @Override public void onLocationChanged(Location location) { LogUtil.e("onLocationChanged"); if (location == null) { return; } ToastUtil.showShortToast(MyApplication.getInstance().getApplicationContext(),"获取位置"+location.getLatitude() + ""); //纬度 LogUtil.e(location.getLatitude() + ""); //经度 LogUtil.e(location.getLongitude() + ""); sendLocation(location.getLatitude() + "", location.getLongitude() + ""); } @Override public void onStatusChanged(String provider, int status, Bundle extras) { /*即使某个供应商是enable,也不表示可以从他处监听位置信息,例如GPS是enable的,但是搜索不到卫星, 状态包括有:OUT_OF_SERVICE,TEMPORARILY_UNAVAILABLE和AVAILABLE*/ } @Override public void onProviderEnabled(String provider) { /* 当用户在系统设置中,开启某个位置供应商*/ } @Override public void onProviderDisabled(String provider) { /*当用户在系统设置中,关闭某个供应商。如果某个供应商是disabled,当通过requestLocationUpdate() 向系统注册监听位置,马上就会触发onProviderDisabled()。*/ } }; locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, listener); ```

dps定位requestLocationUpdates第四个参数些什么?

我是新手 自学 改代码按照视频里写的 视频里代码没问题 到我这就有问题:locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,2000,100,this); 这里的this 有问题 换成什么参数都有问题 写成this 的话 整行代码都有红线! 请大神帮忙! ``` package fragment; import android.content.Context; import android.content.Intent; import android.location.Address; import android.location.Geocoder; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.provider.Settings; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; ; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.example.luao2.jiemianzhuantiao.R; import com.lidroid.xutils.ViewUtils; import org.xutils.view.annotation.ViewInject; import java.io.IOException; import java.util.List; import luao2.utils.SharedUtils; /** * Created by Administrator on 2017/4/4. */ public class FragmentHome extends Fragment implements LocationListener{ @ViewInject(R.id.index_top_city) private TextView topCity; private String cityName; //当前城市名称 private LocationManager locationManager; @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.home_index, null); ViewUtils.inject(this,view); //获取数据并显示 return view; } @Override public void onStart() { super.onStart(); //检查当前的GPS模块 checkGPSIsOpen(); } private void checkGPSIsOpen(){ //获取当前的LocationManager对象 locationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE); boolean isOpen = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); if (!isOpen){ //进入GPS的设置页面 Intent intent = new Intent(); intent.setAction(Settings.ACTION_LOCATION_SOURCE_SETTINGS); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivityForResult(intent,0); } //开始定位 startLocation(); } //使用GPS定位的方法 private void startLocation(){ locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,2000,100,this); } //接收并且处理消息 private Handler handler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message msg) { if (msg.what == 1){ topCity.setText(cityName); } return false; } }); //获取对应位置的经纬度并且定位城市 private void updateWithNewLocation(Location location){ double lat = 0.0,lng = 0.0; if (location !=null){ lat = location.getLatitude(); lng = location.getLongitude(); Log.i("TAG","经度是"+lat+"纬度是:"+lng); }else { cityName = "无法获取城市信息"; } //通过经纬度获取地址,由于地址会有多个,这个和经纬度精确度有关,本实例中定义了最大的返回数2,即在集合对象中有两个值 List<Address> list = null; Geocoder ge = new Geocoder(getActivity()); try { list = ge.getFromLocation(lat,lng,2); } catch (IOException e) { e.printStackTrace(); } if (list !=null && list.size()>0){ for (int i = 0; i < list.size(); i++){ Address ad = list.get(i); cityName = ad.getLocality();//获取城市 } } //发送一条空消息 handler.sendEmptyMessage(1); } //位置信息更改执行方法 @Override public void onLocationChanged(Location location) { //更新当前的位置信息 updateWithNewLocation(location); } @Override public void onProviderDisabled(String provider) { } @Override public void onProviderEnabled(String provider) { } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onDestroy() { super.onDestroy(); //保存城市 //停止定位 stopLocation(); } //停止定位 private void stopLocation(){ locationManager.removeUpdates(this); } } ```

新手悬赏 400c币 requestLocationUpdates()报错

![图片说明](https://img-ask.csdn.net/upload/201704/07/1491539879_385760.png) 我是新手 自学 改代码按照视频里写的 视频里代码没问题 到我这就有问题:locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,2000,100,this); 整行代码都有红线! 本页代码跟视频里一模一样http://v.youku.com/v_show/id_XMTYyMDIwNTgzNg==.html?f=27510286&o=0&firsttime=187&spm=a2hfx.8251854.recordContent.DL~DD~5~5!11~5~A 实在没辙了,请高手看看视频,悬赏! ``` package fragment; import android.content.Context; import android.content.Intent; import android.location.Address; import android.location.Geocoder; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.provider.Settings; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; ; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.example.luao2.jiemianzhuantiao.R; import com.lidroid.xutils.ViewUtils; import org.xutils.view.annotation.ViewInject; import java.io.IOException; import java.util.List; import luao2.utils.SharedUtils; /** * Created by Administrator on 2017/4/4. */ public class FragmentHome extends Fragment implements LocationListener{ @ViewInject(R.id.index_top_city) private TextView topCity; private String cityName; //当前城市名称 private LocationManager locationManager; @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.home_index, null); ViewUtils.inject(this,view); //获取数据并显示 return view; } @Override public void onStart() { super.onStart(); //检查当前的GPS模块 checkGPSIsOpen(); } private void checkGPSIsOpen(){ //获取当前的LocationManager对象 locationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE); boolean isOpen = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); if (!isOpen){ //进入GPS的设置页面 Intent intent = new Intent(); intent.setAction(Settings.ACTION_LOCATION_SOURCE_SETTINGS); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivityForResult(intent,0); } //开始定位 startLocation(); } //使用GPS定位的方法 private void startLocation(){ locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,2000,100,this); } //接收并且处理消息 private Handler handler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message msg) { if (msg.what == 1){ topCity.setText(cityName); } return false; } }); //获取对应位置的经纬度并且定位城市 private void updateWithNewLocation(Location location){ double lat = 0.0,lng = 0.0; if (location !=null){ lat = location.getLatitude(); lng = location.getLongitude(); Log.i("TAG","经度是"+lat+"纬度是:"+lng); }else { cityName = "无法获取城市信息"; } //通过经纬度获取地址,由于地址会有多个,这个和经纬度精确度有关,本实例中定义了最大的返回数2,即在集合对象中有两个值 List<Address> list = null; Geocoder ge = new Geocoder(getActivity()); try { list = ge.getFromLocation(lat,lng,2); } catch (IOException e) { e.printStackTrace(); } if (list !=null && list.size()>0){ for (int i = 0; i < list.size(); i++){ Address ad = list.get(i); cityName = ad.getLocality();//获取城市 } } //发送一条空消息 handler.sendEmptyMessage(1); } //位置信息更改执行方法 @Override public void onLocationChanged(Location location) { //更新当前的位置信息 updateWithNewLocation(location); } @Override public void onProviderDisabled(String provider) { } @Override public void onProviderEnabled(String provider) { } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onDestroy() { super.onDestroy(); //保存城市 //停止定位 stopLocation(); } //停止定位 private void stopLocation(){ locationManager.removeUpdates(this); } } ```

GPS_PROVIDER无法获取定位

代码如下 ``` public class MainActivity extends AppCompatActivity { LocationManager locManager; EditText show; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); show = (EditText) findViewById(R.id.EditText); if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 123);} locManager = (LocationManager) getSystemService (Context.LOCATION_SERVICE); Location location = locManager.getLastKnownLocation( LocationManager.GPS_PROVIDER); updateView(location); locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER , 3000, 8, new LocationListener() // ① { @Override public void onLocationChanged(Location location) { updateView(location); Log.v("MSG","1"); } @Override public void onProviderDisabled(String provider) { updateView(null); Log.v("MSG","2"); } @Override public void onProviderEnabled(String provider) { if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 123);} updateView(locManager .getLastKnownLocation(provider)); Log.v("MSG","3"); } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } }); } public void updateView(Location newLocation) { if (newLocation != null) { StringBuilder sb = new StringBuilder(); sb.append("实时的位置信息:\n"); sb.append("经度:"); sb.append(newLocation.getLongitude()); sb.append("\n纬度:"); sb.append(newLocation.getLatitude()); sb.append("\n高度:"); sb.append(newLocation.getAltitude()); sb.append("\n速度:"); sb.append(newLocation.getSpeed()); sb.append("\n方向:"); sb.append(newLocation.getBearing()); show.setText(sb.toString()); } else { show.setText("无法获取地理信息"); Log.v("MSG","4"); } } } ``` 权限都已申请,还根据6.0的新变化,增加了运行时权限申请,但是还是无法获得定位信息, 把GPS_PROVIDER换成NETWORK_PROVIDER就可以获得定位,咋回事?

getLastknownLocation()在 nexus 返回null值

我使用下面的代码来开发一个基于位置定位的项目,这个项目我是用的是google api 8。 lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this); currloc = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); TextView t = (TextView)findViewById(R.id.textView1); try{ t.setText("Your current location is - "+currloc.getLatitude()+","+currloc.getLongitude()); }catch (Exception e) { // TODO: handle exception t.setText("cant find current location "); } 这段代码在galaxy tab上能正常运行,htc上也可以。 但是当我使用nexus的时候,location得到的是null。对于galaxy nexus来说,我是不是得改变api版本,或者说还有其他一些特殊需求吗?

关于Android获取GPS位置问题

各位大佬,我是大二学生。最近在看《第一行代码(第一版)》时,看到GPS定位时按着书上代码打的,但是却显示工程发生错误,检查了一下代码,未能发现错误。特此求助。 注明:已在AndroidMainFest中声明网络权限和位置权限。![图片说明](https://img-ask.csdn.net/upload/201701/24/1485228550_667497.png) package com.example.school_pet; 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.widget.TextView; import android.widget.Toast; public class test_location extends Activity{ private TextView positionTextView; private LocationManager locationManager; private String provider; protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.location_test); positionTextView=(TextView)findViewById(R.id.show_location); locationManager=(LocationManager)getSystemService(Context.LOCATION_SERVICE); //获取所有可用的位置提供器 List<String>providerList=locationManager.getProviders(true); if(providerList.contains(LocationManager.GPS_PROVIDER)){ provider=LocationManager.GPS_PROVIDER; }else if(providerList.contains(LocationManager.NETWORK_PROVIDER)){ provider=LocationManager.NETWORK_PROVIDER; }else { Toast.makeText(this, "No location provider to use.",Toast.LENGTH_SHORT).show(); return; } Location location=locationManager.getLastKnownLocation(provider); if(location !=null) {showLocation(location);} locationManager.requestLocationUpdates(provider, 5000, 1, locationListener); } protected void onDestroy(){ super.onDestroy(); if(locationManager!=null){ locationManager.removeUpdates(locationListener); } } LocationListener locationListener=new LocationListener(){ public void onStatusChanged(String provider,int status,Bundle extras){ } public void onProviderEnabled(String provider){ } public void onProviderDisabled(String provider){ } public void onLocationChanged(Location location){ showLocation(location); } }; private void showLocation(Location location){ String currentPosition="latitude is"+location.getLatitude()+"\n"+"longitude is "+location.getLongitude(); positionTextView.setText(currentPosition); } }

android gps获取坐标测速不准确,问题点在哪里

做法: 1.用的是LocationListener监听实时坐标。监听和计算等操作都在一个service里完成。 2.监听设置为实时监听。 lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener); 3.有一个3秒间隔的的循环任务,任务就是计算3秒前后的2个实时坐标的距离,并根据距离和间隔时间计算速度。 结果: 计算出来的速度和实际速度相差太大。 设备静止时,获取到的坐标计算出来的速度也不为0。 我测试过三星手机和华为手机,都有类似的效果。 这个,,,什么原因呢,怎么破?

Android 的定位问题,location

运行之后手机应用里一片空白,并没有显示设定的TextView,这是为啥 public class MainActivity extends AppCompatActivity { private TextView positionTextView; private LocationManager locationManager; private String provider; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); positionTextView=(TextView)findViewById(R.id.position_text_view); locationManager=(LocationManager)getSystemService(Context.LOCATION_SERVICE); //获取所有可用的位置提供器 List<String> providerList=locationManager.getProviders(true); if (providerList.contains(LocationManager.GPS_PROVIDER)){ provider=LocationManager.GPS_PROVIDER; }else if (providerList.contains(LocationManager.NETWORK_PROVIDER)){ provider=LocationManager.NETWORK_PROVIDER; }else { //当前没有可用的位置提供器时,弹出Toast提示用户 Toast.makeText(this,"No location provider to use", Toast.LENGTH_SHORT).show(); return; } Location location=locationManager.getLastKnownLocation(provider); if (location!=null){ //显示当前设备的位置信息 showLocation(location); } locationManager.requestLocationUpdates(provider,5000,1,locationListener); } protected void onDestroy(){ super.onDestroy(); if (locationManager!=null){ //关闭程序时将监听器移除 locationManager.removeUpdates(locationListener); } } LocationListener locationListener=new LocationListener() { @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { } @Override public void onLocationChanged(Location location) { //更新设备当前的位置信息 showLocation(location); } }; private void showLocation(Location location){ String currentPosition="latitude is "+ location.getLatitude()+"\n"+"longitude is "+location.getLongitude(); positionTextView.setText(currentPosition); } }

Android获取当前位置,location为空

MainActivity.java: public class MainActivity extends Activity { LocationManager locationManager ; String provider; TextView location_msg; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); location_msg = (TextView) findViewById(R.id.location_msg); locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); List<String> providerList = locationManager.getProviders(true); if(providerList.contains(LocationManager.GPS_PROVIDER)) { provider = LocationManager.GPS_PROVIDER; } else if(providerList.contains(LocationManager.NETWORK_PROVIDER)) { provider = LocationManager.NETWORK_PROVIDER; } else { Toast.makeText(MainActivity.this, "here are no useful location service", 1000).show(); return; } Location location = locationManager.getLastKnownLocation(provider); if(location!=null) { Log.i(">>>>>>>MainActivity", "显示位置信息,信息呢?"); showLocation(location); } else { Log.i(">>>>>>>MainActivity", "信息显示为空。。。。。。"); } locationManager.requestLocationUpdates(provider, 5000, 1, listener); } private void showLocation(Location location) { String position = "latitude is " + location.getLatitude() + "\n" + "longitude is " + location.getLongitude(); location_msg.setText("HELLO WORLD"); location_msg.setTextColor(Color.BLUE); //Log.i(">>>>>>>MainActivity", "显示位置信息,信息呢?"); } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); if(locationManager!=null) { locationManager.removeUpdates(listener); } } LocationListener listener = new LocationListener() { @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { } @Override public void onLocationChanged(Location location) { showLocation(location); } }; } 布局文件为:一个TextView显示地理位置:经度和纬度 AndroidManifest.xml文件添加访问位置权限: <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> ``` ```

界面一片空白,连toast都不显示

界面一片空白,显示不出自己所在的经纬度,连toast都不显示 ``` public class MainActivity extends Activity { public static final int SHOW_LOCATION = 0; private TextView positionTextView; private LocationManager locationManager; private String provider; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); positionTextView = (TextView) findViewById(R.id.position_text_view); locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); // 获取所有可用的位置提供器 List<String> providerList = locationManager.getProviders(true); if (providerList.contains(LocationManager.GPS_PROVIDER)) { provider = LocationManager.GPS_PROVIDER; } else if (providerList.contains(LocationManager.NETWORK_PROVIDER)) { provider = LocationManager.NETWORK_PROVIDER; } else { // 当没有可用的位置提供器时,弹出Toast提示用户 Toast.makeText(this, "没有可用的位置提供器", Toast.LENGTH_SHORT).show(); return; } Location location = locationManager.getLastKnownLocation(provider); if (location != null) { // 显示当前设备的位置信息 showLocation(location); } locationManager.requestLocationUpdates(provider, 5000, 1, locationListener); } protected void onDestroy() { super.onDestroy(); if (locationManager != null) { // 关闭程序时将监听器移除 locationManager.removeUpdates(locationListener); } } LocationListener locationListener = new LocationListener() { @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { } @Override public void onLocationChanged(Location location) { // 更新当前设备的位置信息 showLocation(location); } }; private void showLocation(Location location) { String currentPosition="纬度"+location.getLatitude()+"\n"+"经度"+location.getLongitude(); positionTextView.setText(currentPosition); } } ```

【新手求助】安卓 利用百度地图定位

import java.util.List; import com.baidu.location.BDLocation; import com.baidu.location.BDLocationListener; import com.baidu.location.LocationClient; import com.baidu.location.LocationClientOption; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.app.Activity; import android.content.Context; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { private Button bt; private TextView tv_coordinate; private TextView tv_city; private String provider; private LocationManager locationManager; private LocationClient locationClient = null; private LocationClientOption option; // private BDLocationListener bdLocationListener; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); tv_coordinate = (TextView)findViewById(R.id.textView1); tv_city = (TextView)findViewById(R.id.textView2); bt = (Button)findViewById(R.id.button1); locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); bt.setOnClickListener(new OnClickListener() { public void onClick(View v) { } }); //坐标 List<String> providerList = locationManager.getProviders(true); if(providerList.contains(LocationManager.GPS_PROVIDER)) { provider = LocationManager.GPS_PROVIDER; }else if(providerList.contains(LocationManager.NETWORK_PROVIDER)) { provider = LocationManager.NETWORK_PROVIDER; }else { Toast.makeText(MainActivity.this, "No Location provider", Toast.LENGTH_SHORT).show(); return; } Location location = locationManager.getLastKnownLocation(provider); if(location != null) { showLocation(location); } locationManager.requestLocationUpdates(provider, 5000, 10, locationListener); //城市名 locationClient = new LocationClient(getApplicationContext()); locationClient.registerLocationListener(bdLocationListener); option.setCoorType("all"); option.setOpenGps(true); BDLocation bdLocation = locationClient.getLastKnownLocation(); if(bdLocation != null) { showBDlocation(bdLocation); } locationClient.registerNotifyLocationListener(bdLocationListener); locationClient.requestLocation(); locationClient.requestNotifyLocation(); } protected void onDestroy() { super.onDestroy(); if(locationManager != null) { locationManager.removeUpdates(locationListener); } } LocationListener locationListener = new LocationListener() { public void onStatusChanged(String provider, int status, Bundle extras) { } public void onProviderEnabled(String provider) { } public void onProviderDisabled(String provider) { } public void onLocationChanged(Location location) { showLocation(location); } }; public void showLocation(Location location) { String coordinate = "纬度:" + location.getLatitude() + "\n" + "经度:" + location.getLongitude(); tv_coordinate.setText(coordinate); } BDLocationListener bdLocationListener = new BDLocationListener() { public void onReceiveLocation(BDLocation bdlocation) { showBDlocation(bdlocation); } }; public void showBDlocation(BDLocation bdLocation) { String city = bdLocation.getCity(); tv_city.setText(city); } } 运行报错java.lang.NoClassDefFoundError: com.zk.dddd.MainActivity$2 求帮助解决错误 想知道怎么能定位出当前城市

location始终为null,想让它不为空

为什么location始终为null,怎么样让location不为空? ``` public class MainActivity extends Activity { public static final int SHOW_LOCATION = 0; private TextView positionTextView; private LocationManager locationManager; private String provider; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); positionTextView = (TextView) findViewById(R.id.position_text_view); Toast.makeText(getApplication(), "测试1", Toast.LENGTH_LONG).show(); locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); // 获取所有可用的位置提供器 List<String> providerList = locationManager.getProviders(true); if (providerList.contains(LocationManager.GPS_PROVIDER)) { provider = LocationManager.GPS_PROVIDER; Toast.makeText(getApplication(), "测试4", Toast.LENGTH_LONG).show(); } else if (providerList.contains(LocationManager.NETWORK_PROVIDER)) { provider = LocationManager.NETWORK_PROVIDER; Toast.makeText(getApplication(), "测试5", Toast.LENGTH_LONG).show(); } else { // 当没有可用的位置提供器时,弹出Toast提示用户 Toast.makeText(getApplication(), "没有可用的位置提供器", Toast.LENGTH_LONG).show(); return; } Toast.makeText(getApplication(), "测试2", Toast.LENGTH_LONG).show(); Location location = locationManager.getLastKnownLocation(provider); if (location != null) { // 显示当前设备的位置信息 showLocation(location); } else { Toast.makeText(getApplication(), "测试3", Toast.LENGTH_LONG).show(); } locationManager.requestLocationUpdates(provider, 5000, 1, locationListener); } protected void onDestroy() { super.onDestroy(); if (locationManager != null) { // 关闭程序时将监听器移除 locationManager.removeUpdates(locationListener); } } LocationListener locationListener = new LocationListener() { @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { } @Override public void onLocationChanged(Location location) { // 更新当前设备的位置信息 showLocation(location); } }; public void showLocation(Location location) { String currentPosition="纬度"+location.getLatitude()+"\n"+"经度"+location.getLongitude(); positionTextView.setText(currentPosition); } } ``` ![图片说明](https://img-ask.csdn.net/upload/201802/23/1519388946_441384.png) ![图片说明](https://img-ask.csdn.net/upload/201802/23/1519388977_214950.png)

Android中百度地图定位问题

public class MainActivity extends Activity { private MapView mapView; private LocationManager locationManager; private String provider; private Location location; private BaiduMap baiduMap; private boolean isFirstLocate=true; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_main); mapView=(MapView)findViewById(R.id.map1_view); baiduMap=mapView.getMap(); locationManager=(LocationManager)getSystemService(Context.LOCATION_SERVICE); List<String> providerList=locationManager.getProviders(true); if(providerList.contains(LocationManager.GPS_PROVIDER)){ provider=LocationManager.GPS_PROVIDER; }else if(providerList.contains(LocationManager.NETWORK_PROVIDER)){ provider=LocationManager.NETWORK_PROVIDER; }else{ Toast.makeText(this, "请打开GPS或者联网!", Toast.LENGTH_LONG).show(); return; } location=locationManager.getLastKnownLocation(provider); if(location !=null){ Log.d("map", "ffff"); showLocation(location); } locationManager.requestLocationUpdates(provider, 5000, 1, locationListener); } LocationListener locationListener=new LocationListener() { @Override public void onStatusChanged(String arg0, int arg1, Bundle arg2) { // TODO Auto-generated method stub } @Override public void onProviderEnabled(String arg0) { // TODO Auto-generated method stub } @Override public void onProviderDisabled(String arg0) { // TODO Auto-generated method stub } @Override public void onLocationChanged(Location arg0) { if(location!=null){ showLocation(location); } } }; protected void showLocation(Location location){ if(isFirstLocate){ LatLng latLng=new LatLng(location.getLatitude(), location.getAltitude()); MapStatusUpdate update=MapStatusUpdateFactory.newLatLng(latLng); baiduMap.animateMapStatus(update); update=MapStatusUpdateFactory.zoomTo(16f); baiduMap.animateMapStatus(update); isFirstLocate=false; } Log.d("map", "ggggg"); } protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); mapView.onDestroy(); if(location!=null){ locationManager.removeUpdates(locationListener); } } 为什么我一直无法地位到我所在地,还有就是我的key什么都没错,因为我地图能显示默认的北京地图。

编写一个显示当前经纬度的App,textview里面不显示信息?

想在TextView中显示当前经纬度,运行后是空白的(不管是模拟器上还是手机上)代码如下: package com.example.locationtest; import java.util.List; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.app.Activity; import android.content.Context; import android.view.Menu; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { private TextView positionTextView; private LocationManager locationManager; private String provider; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); positionTextView=(TextView)findViewById(R.id.position_text_view); locationManager=(LocationManager)getSystemService(Context.LOCATION_SERVICE); List<String>providerList=locationManager.getProviders(true); if(providerList.contains(LocationManager.GPS_PROVIDER)){ provider=LocationManager.GPS_PROVIDER; }else if(providerList.contains(LocationManager.NETWORK_PROVIDER)){ provider=LocationManager.NETWORK_PROVIDER; }else { Toast.makeText(this, "NO location provider to use",Toast.LENGTH_SHORT).show(); return; } Location location=locationManager.getLastKnownLocation(provider); if(location!=null){ showLocation(location); } locationManager.requestLocationUpdates(provider, 5000, 10, locationListener); } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); if(locationManager!=null){ locationManager.removeUpdates(locationListener); } } LocationListener locationListener=new LocationListener() { @Override public void onStatusChanged(String arg0, int arg1, Bundle arg2) { // TODO Auto-generated method stub } @Override public void onProviderEnabled(String arg0) { // TODO Auto-generated method stub } @Override public void onProviderDisabled(String arg0) { // TODO Auto-generated method stub } @Override public void onLocationChanged(Location location) { // TODO Auto-generated method stub showLocation(location); } }; private void showLocation(Location location){ String currentPosition="latitude is "+location.getLatitude()+"\n"+"longitude is "+location.getLongitude(); positionTextView.setText(currentPosition); } @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; } } 配置文件: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.locationtest" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="18" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.INTERNET"/> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.locationtest.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> ![图片说明](https://img-ask.csdn.net/upload/201607/31/1469931366_511492.png)

不能从 NETWORK_PROVIDER获得 gps坐标

我要从 NETWORK_PROVIDER中获得gps坐标,用的以下的代码实现这个功能。 LocationListener mlocListener = new MyLocationListener(); mlocManager.requestLocationUpdates( LocationManager.NETWORK_PROVIDER, 0, 0, mlocListener); //init(); } /* Class My Location Listener */ public class MyLocationListener implements LocationListener { @Override public void onLocationChanged(Location loc) { //_pd.dismiss(); loc.getLatitude(); loc.getLongitude(); String Text = "My current location is: " +"Latitud = " + loc.getLatitude() +"Longitud =" + loc.getLongitude(); txtInfo.setText(Text); Toast.makeText( getApplicationContext(),Text,Toast.LENGTH_SHORT).show(); } @Override public void onProviderDisabled(String provider) { Toast.makeText( getApplicationContext(),"Gps Disabled",Toast.LENGTH_SHORT ).show(); } @Override public void onProviderEnabled(String provider) { Toast.makeText( getApplicationContext(),"Gps Enabled",Toast.LENGTH_SHORT).show(); } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } } 但是,使用上面的方法有时候能获得gps坐标,有时候又获取不了,为什么呢?

Android经纬度获取不到?

权限: ``` uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" uses-permission android:name="android.permission.INTERNET" ``` 代码: ``` @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); editText = (EditText) findViewById(R.id.editText); lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); // 为获取地理位置信息时设置查询条件 String bestProvider = lm.getBestProvider(getCriteria(), true); // 获取位置信息 // 如果不设置查询要求,getLastKnownLocation方法传人的参数为LocationManager.GPS_PROVIDER Location location = lm.getLastKnownLocation(bestProvider); updateView(location); // 监听状态 lm.addGpsStatusListener(listener); // 绑定监听,有4个参数 // 参数1,设备:有GPS_PROVIDER和NETWORK_PROVIDER两种 // 参数2,位置信息更新周期,单位毫秒 // 参数3,位置变化最小距离:当位置距离变化超过此值时,将更新位置信息 // 参数4,监听 // 备注:参数2和3,如果参数3不为0,则以参数3为准;参数3为0,则通过时间来定时更新;两者为0,则随时刷新 // 1秒更新一次,或最小位移变化超过1米更新一次; // 注意:此处更新准确度非常低,推荐在service里面启动一个Thread,在run中sleep(10000);然后执行handler.sendMessage(),更新位置 if (lm.isProviderEnabled(LocationManager.GPS_PROVIDER)) { lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 1, locationListener); Log.i("gps123", "gps定位location=" + location); } else { lm.requestLocationUpdates(bestProvider, 1000, 1, locationListener); Log.i("gps123", "网络定位 location=" + location); } } // 位置监听 private LocationListener locationListener = new LocationListener() { /** * 位置信息变化时触发 */ @Override public void onLocationChanged(Location location) { updateView(location); Log.i(TAG, "时间:" + location.getTime()); Log.i(TAG, "经度:" + location.getLongitude()); Log.i(TAG, "纬度:" + location.getLatitude()); Log.i(TAG, "海拔:" + location.getAltitude()); } /** * GPS状态变化时触发 */ @Override public void onStatusChanged(String provider, int status, Bundle extras) { switch (status) { // GPS状态为可见时 case LocationProvider.AVAILABLE: Log.i(TAG, "当前GPS状态为可见状态"); break; // GPS状态为服务区外时 case LocationProvider.OUT_OF_SERVICE: Log.i(TAG, "当前GPS状态为服务区外状态"); break; // GPS状态为暂停服务时 case LocationProvider.TEMPORARILY_UNAVAILABLE: Log.i(TAG, "当前GPS状态为暂停服务状态"); break; } } /** * GPS开启时触发 */ @Override public void onProviderEnabled(String provider) { Location location = lm.getLastKnownLocation(provider); Log.i(TAG, "开启 " + location); updateView(location); } /** * GPS禁用时触发 */ @Override public void onProviderDisabled(String provider) { Location location = lm.getLastKnownLocation(provider); Log.i(TAG, "关闭 " + location); updateView(location); } }; // 状态监听 GpsStatus.Listener listener = new GpsStatus.Listener() { @Override public void onGpsStatusChanged(int event) { switch (event) { // 第一次定位 case GpsStatus.GPS_EVENT_FIRST_FIX: Log.i(TAG, "第一次定位"); break; // 卫星状态改变 case GpsStatus.GPS_EVENT_SATELLITE_STATUS: Log.i(TAG, "卫星状态改变"); // 获取当前状态 GpsStatus gpsStatus = lm.getGpsStatus(null); // 获取卫星颗数的默认最大值 int maxSatellites = gpsStatus.getMaxSatellites(); // 创建一个迭代器保存所有卫星 Iterator<GpsSatellite> iters = gpsStatus.getSatellites() .iterator(); int count = 0; while (iters.hasNext() && count <= maxSatellites) { // GpsSatellite s = iters.next(); iters.next(); count++; } System.out.println("搜索到:" + count + "颗卫星"); break; // 定位启动 case GpsStatus.GPS_EVENT_STARTED: Log.i(TAG, "定位启动"); break; // 定位结束 case GpsStatus.GPS_EVENT_STOPPED: Log.i(TAG, "定位结束"); break; } }; }; /** * 实时更新文本内容 * * @param location */ private void updateView(Location location) { if (location != null) { editText.setText("设备位置信息\n\n经度:"); editText.append(String.valueOf(location.getLongitude())); editText.append("\n纬度:"); editText.append(String.valueOf(location.getLatitude())); Geocoder geo = new Geocoder(this); try { List<Address> list = geo.getFromLocation( location.getLatitude(), location.getLongitude(), 1); if (!list.isEmpty()) { String country = list.get(0).getCountryName(); String address = list.get(0).getAddressLine(0); editText.append("\n国家:" + country + "\n地址:" + address); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else { // 清空EditText对象 // editText.getEditableText().clear(); editText.setText("没有收到信号"); lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 1, locationListener); } } /** * 返回查询条件 * * @return */ private Criteria getCriteria() { Criteria criteria = new Criteria(); // 设置定位精确度 Criteria.ACCURACY_COARSE比较粗略,Criteria.ACCURACY_FINE则比较精细 criteria.setAccuracy(Criteria.ACCURACY_FINE); // 设置是否要求速度 criteria.setSpeedRequired(false); // 设置是否允许运营商收费 criteria.setCostAllowed(false); // 设置是否需要方位信息 criteria.setBearingRequired(false); // 设置是否需要海拔信息 criteria.setAltitudeRequired(false); // 设置对电源的需求 criteria.setPowerRequirement(Criteria.POWER_LOW); return criteria; } ```

使用Android studio实现简单的GPS定位,为什么真机上不显示定位信息?

布局界面 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" android:orientation="vertical" > <TextView android:textColor="#ff00ff" android:textSize="40sp" android:id="@+id/tv0" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="您的定位信息:" /> <TextView android:textColor="#ff00ff" android:textSize="40sp" android:id="@+id/tv1" android:text="xinxi" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> MainActivity.java界面: package com.example.gps3; import android.Manifest; import android.content.pm.PackageManager; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.support.v4.app.ActivityCompat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private TextView textView; LocationManager manager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView) findViewById(R.id.tv1); manager = (LocationManager) getSystemService(LOCATION_SERVICE); if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { // TODO: Consider calling // ActivityCompat#requestPermissions // here to request the missing permissions, and then overriding // public void onRequestPermissionsResult(int requestCode, String[] permissions, // int[] grantResults) // to handle the case where the user grants the permission. See the documentation // for ActivityCompat#requestPermissions for more details. return; } manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 3000, 8, new LocationListener() { @Override public void onLocationChanged(Location location) { updateLocation(location); } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { } }); } public void updateLocation(Location location){ textView.setText(""); textView.append("经度是:"+location.getLongitude()); textView.append("\n纬度是:"+location.getLatitude()); textView.append("\n高度:"+location.getAltitude()); textView.append("\n方向:"+location.getBearing()); textView.append("\n速度:"+location.getSpeed()); } } 为什么我的第二个TextView不显示定位信息? 谢谢,第一次提问,排版不好,还请见谅!

Android GPS是返回过时的信息

在我现在的应用程序中,返回的位置信息是过时的。我使用一个方法来获得更新基于最小时间/更新之间的距离。然而,比方说,我把手机关掉,开车去另一个城市,然后把手机打开,在这种情况下我的GPS就会关闭。我怎么做才能让app获得当前的位置,而不是`getLastKnownLocation()` 我听说过`locationListener`,但是我获得信息关于怎么用它都很模糊 下边是我的代码,希望能对找到问题有点帮助: public class GPSHandling extends Service implements LocationListener{ private final Context myContext; //gps状态标记 public boolean isGPSEnabled = false; //网络状态标记 public boolean isNetworkEnabled = false; //用于决定是否我能通过网络或者是GPS获得位置 public boolean canGetLocation = false; Location myloc; public double latitude; public double longitude; public int MIN_TIME_BTWN_UPDATE = 500*10; public int MIN_DISTANCE_BTWN_UPDATE = 10; protected LocationManager locManager; public GPSHandling(Context context){ this.myContext= context; getLocation(); } public Location getLocation(){ try{ locManager =(LocationManager) myContext.getSystemService(LOCATION_SERVICE); // 现在获得gps状态 isGPSEnabled = locManager.isProviderEnabled(LocationManager.GPS_PROVIDER); //获得网络状态 isNetworkEnabled = locManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); if (!isGPSEnabled && !isNetworkEnabled){ (this.cangetlocation = false but its already set to that by default) } else{ this.canGetLocation=true; //首先从网络提供商获得值给locManager,发给parameters告诉他们何时更新 if(isNetworkEnabled){ locManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, MIN_TIME_BTWN_UPDATE, MIN_DISTANCE_BTWN_UPDATE, this); Log.d("provider", "network"); //如果我们成功了,然后检查位置信息是不是空,试着从manager处获得当前位置信息 if (locManager != null){ myloc =locManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); // 在得到当前的位置后,试着获得经纬度 if (myloc != null){ latitude = myloc.getLatitude(); longitude = myloc.getLongitude(); } } } //现在从GPS提供商获得值给locManager,发给parameters告诉什么时候更新】 if(isGPSEnabled){ locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, MIN_TIME_BTWN_UPDATE, MIN_DISTANCE_BTWN_UPDATE, this); Log.d("provider", "GPS"); } //如果我们成功了,然后检查位置信息是不是空,试着从manager处获得当前位置信息 if(locManager!= null){ myloc = locManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); } //在得到当前的位置后,试着获得经纬度 if(myloc != null){ latitude = myloc.getLatitude(); longitude = myloc.getLongitude(); } } } catch (Exception e) { e.printStackTrace(); } return myloc; } //通过类方法获得当前纬度的数据 public double getMyLatitude(){ if (myloc!= null){ latitude = myloc.getLatitude(); } return latitude; } //通过类方法获得当前经度的数据 public double getMyLongitude(){ if (myloc != null ){ longitude = myloc.getLongitude(); } return longitude; } //用这个方法看app是否能获得当前的坐标 public boolean canGetMyLocation(){ return this.canGetLocation; } public void showGPSDialog(){ AlertDialog.Builder alert = new AlertDialog.Builder(myContext); //设置Dialog Title alert.setTitle("Location Setting"); // 设置Dialog Message alert.setMessage("GPS is not enabled, do you want to enable this now in the settins menue?"); //给dialog设置icon //alert.setIcon(R.drawable.) //当点击的时候设置按钮 alert.setPositiveButton("Settins", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); myContext.startActivity(intent); } }); //当点击的时候取消按钮 alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); //显示警告dialog alert.show(); } public void stopUsingGPS(){ if(locManager !=null){ locManager.removeUpdates(GPSHandling.this); } } @Override public void onLocationChanged(Location location) { // TODO自动生成方法存根 } @Override public void onProviderDisabled(String provider) { // TODO自动生成方法存根 } @Override public void onProviderEnabled(String provider) { // TODO自动生成方法存根 } @Override public void onStatusChanged(String provider, int status, Bundle extras) { // TODO自动生成方法存根 } @Override public IBinder onBind(Intent intent) { // TODO自动生成方法存根 return null; } }

程序员的兼职技能课

获取讲师答疑方式: 在付费视频第一节(触摸命令_ALL)片头有二维码及加群流程介绍 限时福利 原价99元,今日仅需39元!购课添加小助手(微信号:csdn590)按提示还可领取价值800元的编程大礼包! 讲师介绍: 苏奕嘉&nbsp;前阿里UC项目工程师 脚本开发平台官方认证满级(六级)开发者。 我将如何教会你通过【定制脚本】赚到你人生的第一桶金? 零基础程序定制脚本开发课程,是完全针对零脚本开发经验的小白而设计,课程内容共分为3大阶段: ①前期将带你掌握Q开发语言和界面交互开发能力; ②中期通过实战来制作有具体需求的定制脚本; ③后期将解锁脚本的更高阶玩法,打通任督二脉; ④应用定制脚本合法赚取额外收入的完整经验分享,带你通过程序定制脚本开发这项副业,赚取到你的第一桶金!

Windows版YOLOv4目标检测实战:训练自己的数据集

课程演示环境:Windows10; cuda 10.2; cudnn7.6.5; Python3.7; VisualStudio2019; OpenCV3.4 需要学习ubuntu系统上YOLOv4的同学请前往:《YOLOv4目标检测实战:训练自己的数据集》 课程链接:https://edu.csdn.net/course/detail/28745 YOLOv4来了!速度和精度双提升! 与 YOLOv3 相比,新版本的 AP (精度)和 FPS (每秒帧率)分别提高了 10% 和 12%。 YOLO系列是基于深度学习的端到端实时目标检测方法。本课程将手把手地教大家使用labelImg标注和使用YOLOv4训练自己的数据集。课程实战分为两个项目:单目标检测(足球目标检测)和多目标检测(足球和梅西同时检测)。 本课程的YOLOv4使用AlexyAB/darknet,在Windows系统上做项目演示。包括:安装软件环境、安装YOLOv4、标注自己的数据集、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计(mAP计算)和先验框聚类分析。还将介绍改善YOLOv4目标检测性能的技巧。 除本课程《Windows版YOLOv4目标检测实战:训练自己的数据集》外,本人将推出有关YOLOv4目标检测的系列课程。请持续关注该系列的其它视频课程,包括: 《Windows版YOLOv4目标检测实战:人脸口罩佩戴检测》 《Windows版YOLOv4目标检测实战:中国交通标志识别》 《Windows版YOLOv4目标检测:原理与源码解析》

lena全身原图(非256*256版本,而是全身原图)

lena全身原图(非256*256版本,而是全身原图) lena原图很有意思,我们通常所用的256*256图片是在lena原图上截取了头部部分的256*256正方形得到的. 原图是花花公子杂志上的一个

快速入门Android开发 视频 教程 android studio

这是一门快速入门Android开发课程,顾名思义是让大家能快速入门Android开发。 学完能让你学会如下知识点: Android的发展历程 搭建Java开发环境 搭建Android开发环境 Android Studio基础使用方法 Android Studio创建项目 项目运行到模拟器 项目运行到真实手机 Android中常用控件 排查开发中的错误 Android中请求网络 常用Android开发命令 快速入门Gradle构建系统 项目实战:看美图 常用Android Studio使用技巧 项目签名打包 如何上架市场

Java调用微信支付

Java 使用微信支付 一. 准备工作 1.

汽车租赁管理系统需求分析规格说明书

汽车租赁管理系统需求分析规格说明书,这只是一个模板,如果有不会的可以借鉴一下,还是蛮详细的。。。。

C/C++跨平台研发从基础到高阶实战系列套餐

一 专题从基础的C语言核心到c++ 和stl完成基础强化; 二 再到数据结构,设计模式完成专业计算机技能强化; 三 通过跨平台网络编程,linux编程,qt界面编程,mfc编程,windows编程,c++与lua联合编程来完成应用强化 四 最后通过基于ffmpeg的音视频播放器,直播推流,屏幕录像,

程序员的算法通关课:知己知彼(第一季)

【超实用课程内容】 程序员对于算法一直又爱又恨!特别是在求职面试时,算法类问题绝对是不可逃避的提问点!本门课程作为算法面试系列的第一季,会从“知己知彼”的角度,聊聊关于算法面试的那些事~ 【哪些人适合学习这门课程?】 求职中的开发者,对于面试算法阶段缺少经验 想了解实际工作中算法相关知识 在职程序员,算法基础薄弱,急需充电 【超人气讲师】 孙秀洋&nbsp;| 服务器端工程师 硕士毕业于哈工大计算机科学与技术专业,ACM亚洲区赛铜奖获得者,先后在腾讯和百度从事一线技术研发,对算法和后端技术有深刻见解。 【课程如何观看?】 PC端:https://edu.csdn.net/course/detail/27272 移动端:CSDN 学院APP(注意不是CSDN APP哦) 本课程为录播课,课程无限观看时长,但是大家可以抓紧时间学习后一起讨论哦~

机器学习初学者必会的案例精讲

通过六个实际的编码项目,带领同学入门人工智能。这些项目涉及机器学习(回归,分类,聚类),深度学习(神经网络),底层数学算法,Weka数据挖掘,利用Git开源项目实战等。

Python入门视频精讲

Python入门视频培训课程以通俗易懂的方式讲解Python核心技术,Python基础,Python入门。适合初学者的教程,让你少走弯路! 课程内容包括:1.Python简介和安装 、2.第一个Python程序、PyCharm的使用 、3.Python基础、4.函数、5.高级特性、6.面向对象、7.模块、8.异常处理和IO操作、9.访问数据库MySQL。教学全程采用笔记+代码案例的形式讲解,通俗易懂!!!

我以为我对Mysql事务很熟,直到我遇到了阿里面试官

太惨了,面试又被吊打

深度学习原理+项目实战+算法详解+主流框架(套餐)

深度学习系列课程从深度学习基础知识点开始讲解一步步进入神经网络的世界再到卷积和递归神经网络,详解各大经典网络架构。实战部分选择当下最火爆深度学习框架PyTorch与Tensorflow/Keras,全程实战演示框架核心使用与建模方法。项目实战部分选择计算机视觉与自然语言处理领域经典项目,从零开始详解算法原理,debug模式逐行代码解读。适合准备就业和转行的同学们加入学习! 建议按照下列课程顺序来进行学习 (1)掌握深度学习必备经典网络架构 (2)深度框架实战方法 (3)计算机视觉与自然语言处理项目实战。(按照课程排列顺序即可)

Java62数据提取代码

利用苹果手机微信下面的wx.data文件提取出62数据,通过62可以实现不同设备直接登陆,可以通过文件流的方式用脚本上传到服务器进行解析

Python代码实现飞机大战

文章目录经典飞机大战一.游戏设定二.我方飞机三.敌方飞机四.发射子弹五.发放补给包六.主模块 经典飞机大战 源代码以及素材资料(图片,音频)可从下面的github中下载: 飞机大战源代码以及素材资料github项目地址链接 ————————————————————————————————————————————————————————— 不知道大家有没有打过飞机,喜不喜欢打飞机。当我第一次接触这个东西的时候,我的内心是被震撼到的。第一次接触打飞机的时候作者本人是身心愉悦的,因为周边的朋友都在打飞机, 每

2018年全国大学生计算机技能应用大赛决赛 大题

2018年全国大学生计算机技能应用大赛决赛大题,程序填空和程序设计(侵删)

Lena图像处理测试专业用图,高清完整全身原图

Lena图像处理测试专业用图,高清完整全身原图,该图片很好的包含了平坦区域、阴影和纹理等细节,这些都有益于测试各种不同的图像处理算法。它是一幅很好的测试照片!其次,由于这是一个非常有魅力女人的照片。

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

verilog实现地铁系统售票

使用 verilog 实现地铁售票

Python+OpenCV计算机视觉

Python+OpenCV计算机视觉系统全面的介绍。

Python可以这样学(第四季:数据分析与科学计算可视化)

董付国老师系列教材《Python程序设计(第2版)》(ISBN:9787302436515)、《Python可以这样学》(ISBN:9787302456469)配套视频,在教材基础上又增加了大量内容,通过实例讲解numpy、scipy、pandas、statistics、matplotlib等标准库和扩展库用法。

150讲轻松搞定Python网络爬虫

【为什么学爬虫?】 &nbsp; &nbsp; &nbsp; &nbsp;1、爬虫入手容易,但是深入较难,如何写出高效率的爬虫,如何写出灵活性高可扩展的爬虫都是一项技术活。另外在爬虫过程中,经常容易遇到被反爬虫,比如字体反爬、IP识别、验证码等,如何层层攻克难点拿到想要的数据,这门课程,你都能学到! &nbsp; &nbsp; &nbsp; &nbsp;2、如果是作为一个其他行业的开发者,比如app开发,web开发,学习爬虫能让你加强对技术的认知,能够开发出更加安全的软件和网站 【课程设计】 一个完整的爬虫程序,无论大小,总体来说可以分成三个步骤,分别是: 网络请求:模拟浏览器的行为从网上抓取数据。 数据解析:将请求下来的数据进行过滤,提取我们想要的数据。 数据存储:将提取到的数据存储到硬盘或者内存中。比如用mysql数据库或者redis等。 那么本课程也是按照这几个步骤循序渐进的进行讲解,带领学生完整的掌握每个步骤的技术。另外,因为爬虫的多样性,在爬取的过程中可能会发生被反爬、效率低下等。因此我们又增加了两个章节用来提高爬虫程序的灵活性,分别是: 爬虫进阶:包括IP代理,多线程爬虫,图形验证码识别、JS加密解密、动态网页爬虫、字体反爬识别等。 Scrapy和分布式爬虫:Scrapy框架、Scrapy-redis组件、分布式爬虫等。 通过爬虫进阶的知识点我们能应付大量的反爬网站,而Scrapy框架作为一个专业的爬虫框架,使用他可以快速提高我们编写爬虫程序的效率和速度。另外如果一台机器不能满足你的需求,我们可以用分布式爬虫让多台机器帮助你快速爬取数据。 &nbsp; 从基础爬虫到商业化应用爬虫,本套课程满足您的所有需求! 【课程服务】 专属付费社群+每周三讨论会+1v1答疑

获取Linux下Ftp目录树并逐步绑定到treeview

在linux下抓取目录树,双击后获取该节点子节点(逐步生成)。另外有两个类,一个是windows下的(一次性获取目录树),一个是linux下的(足部获取目录树)

YOLOv3目标检测实战系列课程

《YOLOv3目标检测实战系列课程》旨在帮助大家掌握YOLOv3目标检测的训练、原理、源码与网络模型改进方法。 本课程的YOLOv3使用原作darknet(c语言编写),在Ubuntu系统上做项目演示。 本系列课程包括三门课: (1)《YOLOv3目标检测实战:训练自己的数据集》 包括:安装darknet、给自己的数据集打标签、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计(mAP计算和画出PR曲线)和先验框聚类。 (2)《YOLOv3目标检测:原理与源码解析》讲解YOLOv1、YOLOv2、YOLOv3的原理、程序流程并解析各层的源码。 (3)《YOLOv3目标检测:网络模型改进方法》讲解YOLOv3的改进方法,包括改进1:不显示指定类别目标的方法 (增加功能) ;改进2:合并BN层到卷积层 (加快推理速度) ; 改进3:使用GIoU指标和损失函数 (提高检测精度) ;改进4:tiny YOLOv3 (简化网络模型)并介绍 AlexeyAB/darknet项目。

手把手实现Java图书管理系统(附源码)

【超实用课程内容】 本课程演示的是一套基于Java的SSM框架实现的图书管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的java人群。详细介绍了图书管理系统的实现,包括:环境搭建、系统业务、技术实现、项目运行、功能演示、系统扩展等,以通俗易懂的方式,手把手的带你从零开始运行本套图书管理系统,该项目附带全部源码可作为毕设使用。 【课程如何观看?】 PC端:https://edu.csdn.net/course/detail/27513 移动端:CSDN 学院APP(注意不是CSDN APP哦) 本课程为录播课,课程2年有效观看时长,大家可以抓紧时间学习后一起讨论哦~ 【学员专享增值服务】 源码开放 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化

微信小程序开发实战之番茄时钟开发

微信小程序番茄时钟视频教程,本课程将带着各位学员开发一个小程序初级实战类项目,针对只看过官方文档而又无从下手的开发者来说,可以作为一个较好的练手项目,对于有小程序开发经验的开发者而言,可以更好加深对小程序各类组件和API 的理解,为更深层次高难度的项目做铺垫。

Java 最常见的 200+ 面试题:面试必备

这份面试清单是从我 2015 年做了 TeamLeader 之后开始收集的,一方面是给公司招聘用,另一方面是想用它来挖掘在 Java 技术栈中,还有那些知识点是我不知道的,我想找到这些技术盲点,然后修复它,以此来提高自己的技术水平。虽然我是从 2009 年就开始参加编程工作了,但我依旧觉得自己现在要学的东西很多,并且学习这些知识,让我很有成就感和满足感,那所以何乐而不为呢? 说回面试的事,这份面试...

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

三个项目玩转深度学习(附1G源码)

从事大数据与人工智能开发与实践约十年,钱老师亲自见证了大数据行业的发展与人工智能的从冷到热。事实证明,计算机技术的发展,算力突破,海量数据,机器人技术等,开启了第四次工业革命的序章。深度学习图像分类一直是人工智能的经典任务,是智慧零售、安防、无人驾驶等机器视觉应用领域的核心技术之一,掌握图像分类技术是机器视觉学习的重中之重。针对现有线上学习的特点与实际需求,我们开发了人工智能案例实战系列课程。打造:以项目案例实践为驱动的课程学习方式,覆盖了智能零售,智慧交通等常见领域,通过基础学习、项目案例实践、社群答疑,三维立体的方式,打造最好的学习效果。

微信小程序 实例汇总 完整项目源代码

微信小程序 实例汇总 完整项目源代码

基于西门子S7—1200的单部六层电梯设计程序,1部6层电梯

基于西门子S7—1200的单部六层电梯设计程序,1部6层电梯。 本系统控制六层电梯, 采用集选控制方式。 为了完成设定的控制任务, 主要根据电梯输入/输出点数确定PLC 的机型。 根据电梯控制的要求,

相关热词 c#分级显示数据 c# 不区分大小写替换 c#中调用就java c#正则表达式 验证小数 c# vscode 配置 c#三维数组能存多少数据 c# 新建excel c#多个文本框 c#怎么创建tcp通讯 c# mvc 电子病例
立即提问