安卓studio来写一个智能巴士系统app,拿到手机定位的代码
时间: 2023-11-20 22:04:44 浏览: 31
非常好,获取手机定位是实现智能巴士系统应用程序的重要步骤之一。在Android Studio中,您可以使用Android的Location API来获取设备的位置信息。
以下是一个简单的代码示例,可以帮助您获取手机当前的位置:
首先,在您的AndroidManifest.xml文件中,添加以下权限:
```xml
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
```
接下来,在您的Activity或Fragment类中,添加以下代码:
```java
public class MainActivity extends AppCompatActivity implements
LocationListener {
private LocationManager locationManager;
private String provider;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取 LocationManager 实例
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
// 获取最佳的位置提供者
Criteria criteria = new Criteria();
provider = locationManager.getBestProvider(criteria, false);
// 获取用户当前位置
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
locationManager.requestLocationUpdates(provider, 400, 1, this);
Location location = locationManager.getLastKnownLocation(provider);
if (location != null) {
onLocationChanged(location);
}
} else {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);
}
}
@Override
protected void onPause() {
super.onPause();
locationManager.removeUpdates(this);
}
@Override
protected void onResume() {
super.onResume();
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
locationManager.requestLocationUpdates(provider, 400, 1, this);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (requestCode == 1) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
locationManager.requestLocationUpdates(provider, 400, 1, this);
}
}
}
}
@Override
public void onLocationChanged(Location location) {
double lat = location.getLatitude();
double lng = location.getLongitude();
Log.i("Location", "Latitude: " + lat + ", Longitude: " + lng);
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
}
```
这段代码将获取用户的当前位置,并在控制台中记录经纬度。
请注意,您需要在运行时请求定位权限,以便应用程序可以访问用户的位置信息。如果用户不授予许可,应用程序将无法访问位置信息。
希望这可以帮助您开始编写您的智能巴士系统应用程序!