第11章 LocationTest

来源:互联网 发布:linux 删除别名 编辑:程序博客网 时间:2024/06/03 22:44
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.util.Log;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;            Log.d("MainActivity","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);        }else{            Log.d("MainActivity","location is null.");        }        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);    }}
 这个案例一开始调试出来,一片空白的。后来发现在宿舍里信号不好,GPS搜索不到信号。到了操场之后,才有书上的效果。 但是,关闭了GPS,想用NETWORK_PROVIDER来定位,发现不可以。后来我打印了一下那个Location,发现是null,现在也搞不明白。然后,也尝试着直接将GPS_PROVIDER那个If语句注释掉,直接选择NETWORK_PROVIDER还是不行,可是又不会弹出那个Toast。 我遇到的问题是,为什么调用NETWORK_PROVIDER打印出来的是一片空白的情况,实在难以理解? 权限,我声明的是<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 泰迪口臭很严重怎么办 狗狗的嘴巴好臭怎么办 2岁宝宝有口臭怎么办 2岁半宝宝口臭怎么办 胃热引起的口臭怎么办 脑梗右手不能动怎么办 脑梗右手不灵活怎么办 冒冷汗头晕想吐怎么办 脸中风嘴歪了怎么办 耳朵里疱疹破了怎么办 吃了变质的米饭怎么办 吃了变质的蛋糕怎么办 吃了变质的饭怎么办 颈椎病犯了头晕恶心怎么办 感冒引起的耳朵疼怎么办 感冒了左耳朵疼怎么办 受风引起的面瘫怎么办 两边的脸不一样大怎么办 脖子扭到怎么办快速好 卡马西平片过量怎么办 天冷眼睛神经跳怎么办 每天失眠怎么办要疯了 老是失眠是怎么办才好 汗毛又多又长怎么办 脸上出油毛孔粗大黑头怎么办 毛长在皮肤里怎么办 腰韧带拉伤怎么办恢复快 脚扭伤伤了韧带怎么办 膝关节韧带拉伤怎么办恢复快 脚踝韧带拉伤怎么办恢复快 脚扭伤一年没好怎么办 脚扭伤半年还疼怎么办 脚崴过有后遗症怎么办 脚扭伤脚面肿了怎么办 腰突然扭了好痛怎么办 腰扭伤了怎么办最有效 腰扭伤了不能动怎么办 前交叉韧带增粗怎么办 膝盖前交叉韧带损伤怎么办 狗的腿肌肉拉伤怎么办 胳膊上的筋拉伤怎么办