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();
}
} |