2021-03-16 2021-03-16 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 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 package com.example.Qfrost; import android.Manifest; import android.content.pm.PackageManager; import android.os.Build; import android.os.Bundle; import android.widget.TextView; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import com.baidu.location.BDAbstractLocationListener; import com.baidu.location.BDLocation; import com.baidu.location.LocationClient; import com.baidu.location.LocationClientOption; // 超详细的Android百度地图开发 https://blog.csdn.net/Hanghang_/article/details/87207093 public class MainActivity extends AppCompatActivity { public LocationClient mLocationClient; //private MapView mapview; private TextView positionText; private StringBuilder currentPosition; private static final int WRITE_COARSE_LOCATION_REQUEST_CODE = 0; @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.textView2); positionText.setText("Listener starting..."); requestPermission(); } private final int REQUEST_CODE_ADDRESS = 100; /*初始化函数,并启动位置客户端LocationClient*/ private void requestLocation() { initLocation(); mLocationClient.start(); } /*初始化函数*/ private void initLocation() { LocationClientOption option = new LocationClientOption(); option.setScanSpan(1000); option.setLocationNotify(true); mLocationClient.setLocOption(option); } /*只有同意打开相关权限才可以开启本程序*/ private static final int REQUEST_CODE_ACCESS_COARSE_LOCATION = 1; private void requestPermission() { //Android 6.0判断用户是否授予定位权限 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {//如果 API level 是大于等于 23(Android 6.0) 时 //判断是否具有权限 if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { //判断是否需要向用户解释为什么需要申请该权限 if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.ACCESS_COARSE_LOCATION)) { Toast.makeText(MainActivity.this,"自Android 6.0开始需要打开位置权限",Toast.LENGTH_SHORT).show(); } //请求权限 ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, REQUEST_CODE_ACCESS_COARSE_LOCATION); } else { requestLocation() ; } } } @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == REQUEST_CODE_ACCESS_COARSE_LOCATION) { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { //用户允许改权限,0表示允许,-1表示拒绝 PERMISSION_GRANTED = 0, PERMISSION_DENIED = -1 requestLocation() ; //这里进行授权被允许的处理 } else { //permission denied, boo! Disable the functionality that depends on this permission. Toast.makeText(this, "必须同意所有权限才能使用本程序", Toast.LENGTH_SHORT).show(); } } else { super.onRequestPermissionsResult(requestCode, permissions, grantResults); } } public class MyLocationListener extends BDAbstractLocationListener { @Override public void onReceiveLocation(final BDLocation location) { runOnUiThread(new Runnable() { @Override public void run() { currentPosition = new StringBuilder(); currentPosition.append("时间:").append(location.getTime()).append("\n"); currentPosition.append("纬度:").append(location.getLatitude()).append("\n"); currentPosition.append("经度:").append(location.getLongitude()).append("\n"); currentPosition.append("定位方式:"); if (location.getLocType() == BDLocation.TypeGpsLocation) { currentPosition.append("GPS"); } else if (location.getLocType() == BDLocation.TypeNetWorkLocation) { currentPosition.append("网络"); } positionText.setText(currentPosition); } }); } } public void onConnectHotSpotMessage(String s, int i) { } @Override protected void onDestroy(){ super.onDestroy(); mLocationClient.stop(); } } 前一篇 linux bash字符串$‘‘连接 后一篇 GD25Q127C编程器写不进去的原因
说些什么吧!