zoukankan      html  css  js  c++  java
  • LBS 经纬度定位

    运行截图
    这里写图片描述
    AndroidManifest.xml

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="lbstest.example.com.lbs">
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
        <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
        <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
        <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
        <uses-permission android:name="android.permission.WAKE_LOCK"/>
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
        <uses-permission android:name="android.permission.INTERNET"/>
    
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
            <meta-data
                android:name="com.baidu.lbsapi.API_KEY"
                android:value="PsWuZ62gs3LoEIGjCUavpkehWynGGodD"
                />
            <activity android:name=".MainActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            <service android:name="com.baidu.location.f" android:enabled="true"
                android:process=":remote"
                >
    
            </service>
        </application>
    
    </manifest>

    MainACtivity.java代码

    package lbstest.example.com.lbs;
    
    import android.Manifest;
    import android.content.pm.PackageManager;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.support.annotation.NonNull;
    import android.support.v4.app.ActivityCompat;
    import android.support.v4.content.ContextCompat;
    import android.support.v7.app.AppCompatActivity;
    import android.util.Log;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import com.baidu.location.BDLocation;
    import com.baidu.location.BDLocationListener;
    import com.baidu.location.LocationClient;
    import com.baidu.location.LocationClientOption;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class MainActivity extends AppCompatActivity  {
    
        public static final int UPDATE_TEXT = 1;
    
        public LocationClient mLocationClient;
    
        private TextView positionText;
    
        StringBuilder currentPosition;
    
        Handler handler = new Handler(){
            @Override
            public void handleMessage(Message msg) {
                switch (msg.what){
                    case UPDATE_TEXT:
                        positionText.setText(currentPosition);
                        break;
                    default:
                        break;
                }
            }
        };
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            mLocationClient = new LocationClient(getApplicationContext());
            mLocationClient.registerLocationListener(new MyLoactionListener());
            setContentView(R.layout.activity_main);
            positionText = (TextView) findViewById(R.id.position_text_view);
            List<String> positionList = new ArrayList<>();
            if(ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)!=
                    PackageManager.PERMISSION_GRANTED){
                positionList.add(Manifest.permission.ACCESS_FINE_LOCATION);
            }
            if(ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)!=
                    PackageManager.PERMISSION_GRANTED){
                positionList.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
            }
            if(ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE)!=
                    PackageManager.PERMISSION_GRANTED){
                positionList.add(Manifest.permission.READ_PHONE_STATE);
            }
            if(!positionList.isEmpty()){
                String [] permissions = positionList.toArray(new String[positionList.size()]);
                ActivityCompat.requestPermissions(MainActivity.this,permissions,1);
            }else {
                requestLocation();
            }
    
        }
    
        private void requestLocation() {
            initLocation();
            mLocationClient.start();
        }
    
        private void initLocation() {
            LocationClientOption option = new LocationClientOption();
            option.setScanSpan(5000);
            mLocationClient.setLocOption(option);
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            mLocationClient.stop();
        }
    
        @Override
        public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
            switch (requestCode){
                case 1:
                    if (grantResults.length > 0 ){
                        for (int result : grantResults){
                         if (result != PackageManager.PERMISSION_DENIED){
                             Toast.makeText(this,"必须同意所有权限才能使用本程序",Toast.LENGTH_SHORT).show();
                             finish();
                             return;
                         }
                        }
                        requestLocation();
                    }else {
                        Toast.makeText(this,"发生未知错误",Toast.LENGTH_SHORT).show();
                        finish();
                    }
                    break;
                default:
            }
        }
    
        private class MyLoactionListener implements BDLocationListener {
            @Override
            public void onReceiveLocation(BDLocation bdLocation) {
               currentPosition = new StringBuilder();
                currentPosition.append("纬度: ").append(bdLocation.getLatitude()).append("
    ");
                currentPosition.append("经线: ").append(bdLocation.getLongitude()).append("
    ");
                currentPosition.append("定位方式: ");
                if(bdLocation.getLocType() == BDLocation.TypeGpsLocation){
                    currentPosition.append("GPS");
                }else if (bdLocation.getLocType() == BDLocation.TypeNetWorkLocation){
                    currentPosition.append("网络");
                }
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        Message message = new Message();
                        message.what = UPDATE_TEXT;
                        handler.sendMessage(message);
                    }
                }).start();
                Log.d("Main","本地位置是"+currentPosition);
              //  positionText.setText(currentPosition);
            }
    
            @Override
            public void onConnectHotSpotMessage(String s, int i) {
    
            }
        }
    }
    

    activity_main.xml代码

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        xmlns:android="http://schemas.android.com/apk/res/android">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/position_text_view"
            />
    </LinearLayout>
    
  • 相关阅读:
    rs
    stm32f767 usoc3
    stm32f767 RTT 日志
    stm32f767 标准库 工程模板
    stm32f767 HAL 工程模板
    docker tab 补全 linux tab 补全
    docker anconda 依赖 下载 不了
    docker run 常用 指令
    linux scp 命令
    Dockerfile 常用参数说明
  • 原文地址:https://www.cnblogs.com/CCCrunner/p/11781915.html
Copyright © 2011-2022 走看看