热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android百度地图SDK,为何只有将App放在后台才能定位?

看了郭霖的第一行代码,照着上面的百度地图SDK教程敲了一遍,发现第一次进App的时候是不定位的,只有回到桌面,也就是把App后台运行,再打开App才会进行定位功能,这是什么原因呢?代码确认了好几

看了郭霖的第一行代码,照着上面的百度地图SDK教程敲了一遍,发现第一次进App的时候是不定位的,只有回到桌面,也就是把App后台运行,再打开App才会进行定位功能,这是什么原因呢?代码确认了好几遍了



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
public class MainActivity extends AppCompatActivity

{

    public LocationClient mLocationClient;

    private TextView positionText;



    @Override

    protected void onCreate(Bundle savedInstanceState)

    {

        super.onCreate(savedInstanceState);

        mLocatiOnClient=new LocationClient(getApplicationContext());

        mLocationClient.registerLocationListener(new MyLocationListener());

        setContentView(R.layout.activity_main);

        positiOnText= (TextView) findViewById(R.id.position_text_view);

        List permissiOnList=new ArrayList<>();

        if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION)

                != PackageManager.PERMISSION_GRANTED)

        {

            permissionList.add(Manifest.permission.ACCESS_FINE_LOCATION);

        }

        if (ContextCompat.checkSelfPermission(this,Manifest.permission.WRITE_EXTERNAL_STORAGE)

                !=PackageManager.PERMISSION_GRANTED)

        {

            permissionList.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);

        }

        if (ContextCompat.checkSelfPermission(this,Manifest.permission.READ_PHONE_STATE)

                !=PackageManager.PERMISSION_GRANTED)

        {

            permissionList.add(Manifest.permission.READ_PHONE_STATE);

        }

        if (!permissionList.isEmpty())

        {

            String[] permissiOns=permissionList.toArray(new String[permissionList.size()]);

            ActivityCompat.requestPermissions(this,permissions,1);

        }

        else

        {

            requestLocation();

        }

    }



    private void requestLocation()

    {

        initLocation();

        mLocationClient.start();

    }



    private void initLocation()

    {

        LocationClientOption option=new LocationClientOption();

        option.setScanSpan(1000);

        mLocationClient.setLocOption(option);

    }



    public class MyLocationListener implements BDLocationListener

    {



        @Override

        public void onReceiveLocation(BDLocation bdLocation)

        {

            //当绑定的LocationClient获取到位置信息的时候就会回调这个方法,BDLocation中存放的就是位置信息

            StringBuilder currentPosition=new StringBuilder();

            currentPosition.append("纬度:").append(bdLocation.getLatitude()).append("\n");

            currentPosition.append("经度:").append(bdLocation.getLongitude()).append("\n");

            currentPosition.append("定位方式:");

            if (bdLocation.getLocType()==BDLocation.TypeGpsLocation)

            {

                currentPosition.append("GPS");

            }

            else if (bdLocation.getLocType()==BDLocation.TypeNetWorkLocation)

            {

                currentPosition.append("网络");

            }

            positionText.setText(currentPosition);

        }



        @Override

        public void onConnectHotSpotMessage(String s, int i)

        {



        }





    }



    @Override

    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults)

    {

        switch (requestCode)

        {

            case 1:

            {

                if (grantResults.length>0)

                {

                    for (int results:grantResults)

                    {

                        if (results!=PackageManager.PERMISSION_GRANTED)

                        {

                            Toast.makeText(this,"拒绝权限将无法使用本产品",Toast.LENGTH_SHORT).show();

                            finish();

                            return;

                        }

                    }

                    requestLocation();

                }

                else

                {

                    Toast.makeText(this,"发生未知错误",Toast.LENGTH_SHORT).show();

                    finish();

                }

                break;

            }

        }

    }



    @Override

    protected void onDestroy()

    {

        super.onDestroy();

        mLocationClient.stop();

    }

}



   



推荐阅读
author-avatar
U友50140932
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有