Android Location.distanceBetween和#x27;t获取距离、范围、米,并且不识别长变量
我试图从用户那里得到范围,如果他让他旋转,但我不能在屏幕上得到范围或距离,它总是显示0.0,并且不显示祝酒词Android Location.distanceBetween和#x27;t获取距离、范围、米,并且不识别长变量,android,google-maps,Android,Google Maps,我试图从用户那里得到范围,如果他让他旋转,但我不能在屏幕上得到范围或距离,它总是显示0.0,并且不显示祝酒词 公共类HomeActivity扩展了AppCompatActivity在MapreadyCallback上的实现{ /** *位置权限请求的请求代码。 * *@see#onRequestPermissionsResult(int,String[],int[])) */ 私有静态最终整数位置\权限\请求\代码=1; /** *指示请求的权限是否在之后被拒绝的标志 返回 *{@link#on
公共类HomeActivity扩展了AppCompatActivity在MapreadyCallback上的实现{
/**
*位置权限请求的请求代码。
*
*@see#onRequestPermissionsResult(int,String[],int[]))
*/
私有静态最终整数位置\权限\请求\代码=1;
/**
*指示请求的权限是否在之后被拒绝的标志
返回
*{@link#onRequestPermissionsResult(int,String[],int[])。
*/
私有布尔值mPermissionDenied=false;
LatLng LatLng;
谷歌地图;
SupportMapFragment SupportMapFragment;
标记;
//text查看电子邮件,名称,实际连接id
text查看text查看电子邮件;
语境;
双纬度,长纬度;
文本视图位置文本;
文本视图文本;
文本视图rangoText;
文本视图纵向文本;
文本视图纬度文本;
//浮动距离;
圆圈;
弦距离;
私有静态最终字符串TAG=“MyApp”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
supportMapFragment=(supportMapFragment)getSupportFragmentManager
().findFragmentById(R.id.mapHomeUbication);
supportMapFragment.getMapAsync(此文件);
上下文=这个;
//inicializamos el textview
textViewEmail=(TextView)findViewById(R.id.txt_EmailUsuario);
locationText=(TextView)findViewById(R.id.location);
longitudeText=(TextView)findViewById(R.id.longitude);
latitudeText=(TextView)findViewById(R.id.latitude);
tiempoText=(TextView)findViewById(R.id.tiempo);
rangoText=(TextView)findViewById(R.id.rango);
//cargamos el电子邮件共享参考
SharedReferences SharedReferences=GetSharedReferences
(Config.SHARED\u PREF\u NAME,Context.MODE\u PRIVATE);
String email=SharedReferences.getString(Config.email\u SHARED\u PREF,“无争议”);
//mostramos el email actualmente logueado
textViewEmail.setText(“通常:+电子邮件”);
已完成(mMap);
}
//函数salir
私有无效注销(){
//创建警报对话框以确认注销
AlertDialog.Builder alertDialogBuilder=新建AlertDialog.Builder(此);
setMessage(“Esta seguro que quiere salir?”);
alertDialogBuilder.setPositiveButton(“Sí”,
新建DialogInterface.OnClickListener(){
@凌驾
公共void onClick(对话框接口arg0,int arg1){
//获取共享引用
SharedReferences首选项=GetSharedReferences
(Config.SHARED\u PREF\u NAME,Context.MODE\u PRIVATE);
//获取编辑
SharedReferences.Editor=首选项.edit();
//将loggedin的值设为false
putBoolean(Config.LOGGEDIN\u SHARED\u PREF,false);
//将空白值放入电子邮件
putString(Config.EMAIL\u SHARED\u PREF,“”);
//保存SharedReferences
commit();
//正在启动登录活动
意向意向=新意向(HomeActivity.this,
物流活动(类);
星触觉(意向);
}
});
alertDialogBuilder.setNegativeButton(“否”,
新建DialogInterface.OnClickListener(){
@凌驾
公共void onClick(对话框接口arg0,int arg1){
}
});
//显示警报对话框
AlertDialog AlertDialog=alertDialogBuilder.create();
alertDialog.show();
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//将菜单添加到工具栏
getMenuInflater().充气(右菜单菜单菜单主菜单);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
int id=item.getItemId();
if(id==R.id.log\u OutMenu){
//单击注销按钮时调用注销方法
注销();
}
返回super.onOptionsItemSelected(项目);
}
@凌驾
public void onBackPressed(){
super.onBackPressed();
完成();
}
@凌驾
4月1日公开作废(谷歌地图谷歌地图){
mMap=谷歌地图;
setUpMap();
}
/**
*这是我们可以添加标记或线条、添加侦听器或移动摄影机的地方。
在这种情况下,我们
*在非洲附近加一个标记。
*
*这应该只调用一次。
*/
私有void setUpMap(){
如果(ContextCompat.checkSelfPermission)(此,
清单.权限.访问(位置)
!=PackageManager.权限(已授予){
//缺少访问该位置的权限。
PermissionUtils.requestPermission(此,
位置\权限\请求\代码,
Manifest.permission.ACCESS\u FINE\u LOCATION,true);
}否则如果(mMap!=null){
mMap.setMapType(GoogleMap.MAP\u TYPE\u NORMAL);
mMap.getUiSettings().setZoomControlsEnabled(true);
mMap.setMyLocationEnabled(真);
setOnMyLocationChangeListener(myLocationChangeListener());
}
}
私有GoogleMap.OnMyLocationChangeListener myLocationChangeListener(){
返回新的GoogleMap.OnMyLocationChangeListener(){
@凌驾
postRef.addChildEventListener( new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
if (!dataSnapshot.exists()) {
// Toast.makeText(this, "if", Toast.LENGTH_SHORT ).show();
} else {
String latitude_Display = dataSnapshot
.child( "Pro_file" )
.child( "bpro_latitude" )
.getValue().toString();
String longitude_Display = dataSnapshot
.child( "Pro_file" )
.child( "bpro_longitude" )
.getValue().toString();
//Toast.makeText(this, "else " + latitude_Display + "\n" + longitude_Display, Toast.LENGTH_SHORT ).show();
String latLng = latitude_Display;
String latLng1 = longitude_Display;
double latitude_C = Double.parseDouble(latLng);
double longitude_C = Double.parseDouble(latLng1);
LocationManager locationManager = (LocationManager) getSystemService( Context.LOCATION_SERVICE );
Criteria crit = new Criteria();
if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION ) != PackageManager.PERMISSION_GRANTED &&
ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION ) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return;
}
Location location = locationManager.getLastKnownLocation( locationManager.getBestProvider( crit, false ) );
float[] distance = new float[2];
CircleOptions circleOptions_b = new CircleOptions();
circleOptions_b.center(new LatLng(location.getLatitude(), location.getLongitude()));
circleOptions_b.radius(100000);
Location.distanceBetween( latitude_C, longitude_C,
circleOptions_b.getCenter().latitude, circleOptions_b.getCenter().longitude, distance);
if( distance[0] > circleOptions_b.getRadius() ){
Toast.makeText(this, "the user Outside", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this, "the user Inside", Toast.LENGTH_LONG).show();
//do something
listUsers.add( dataSnapshot
.child("Pro_file")
.getValue(user.class) );
displayUsers(listUsers);
find_myAdapter.notifyDataSetChanged();
}
}
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
find_myAdapter.notifyDataSetChanged();
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
Toast.makeText(this,"Canceled",Toast.LENGTH_SHORT).show();
find_myAdapter.notifyDataSetChanged();
}
});
}