Android 返回俄罗斯中部的一个随机位置 i战争试图通过SMS发送用户最后知道的位置,但是LaStestNealNosioTo()不返回NULL或随机位置在俄罗斯海岸附近的任何地方,任何帮助都是值得赞赏的! 我之前尝试通过LocationManager获取Locat
返回俄罗斯中部的一个随机位置Android 返回俄罗斯中部的一个随机位置 i战争试图通过SMS发送用户最后知道的位置,但是LaStestNealNosioTo()不返回NULL或随机位置在俄罗斯海岸附近的任何地方,任何帮助都是值得赞赏的! 我之前尝试通过LocationManager获取Locat,android,location,android-gps,android-fusedlocation,fusedlocationproviderclient,Android,Location,Android Gps,Android Fusedlocation,Fusedlocationproviderclient,返回俄罗斯中部的一个随机位置 i战争试图通过SMS发送用户最后知道的位置,但是LaStestNealNosioTo()不返回NULL或随机位置在俄罗斯海岸附近的任何地方,任何帮助都是值得赞赏的! 我之前尝试通过LocationManager获取Location,该方法最初有效,但后来每次都开始重新调整null。 我正在遵循文档中给出的步骤 package com.r30.wec_任务; 导入androidx.annotation.NonNull; 导入androidx.appcompat.a
i战争试图通过SMS发送用户最后知道的位置,但是LaStestNealNosioTo()不返回NULL或随机位置在俄罗斯海岸附近的任何地方,任何帮助都是值得赞赏的! 我之前尝试通过LocationManager获取Location,该方法最初有效,但后来每次都开始重新调整null。 我正在遵循文档中给出的步骤
package com.r30.wec_任务;
导入androidx.annotation.NonNull;
导入androidx.appcompat.app.AlertDialog;
导入androidx.appcompat.app.appcompat活动;
导入androidx.core.app.ActivityCompat;
导入android.Manifest;
导入android.app.pendingent;
导入android.content.Context;
导入android.content.DialogInterface;
导入android.content.Intent;
导入android.content.pm.PackageManager;
导入android.location.location;
导入android.location.LocationManager;
导入android.os.Bundle;
导入android.provider.Settings;
导入android.telephony.smsmsmanager;
导入android.view.view;
导入android.widget.ImageButton;
导入android.widget.Toast;
导入com.google.android.gms.location.FusedLocationProviderClient;
导入com.google.android.gms.location.LocationServices;
导入com.google.android.gms.tasks.OnSuccessListener;
导入com.google.firebase.auth.FirebaseAuth;
导入com.google.firebase.auth.FirebaseUser;
导入com.google.firebase.database.DataSnapshot;
导入com.google.firebase.database.DatabaseError;
导入com.google.firebase.database.DatabaseReference;
导入com.google.firebase.database.FirebaseDatabase;
导入com.google.firebase.database.ValueEventListener;
公共类SosActivity扩展了AppCompativity{
私有静态最终int请求_位置=1;
私有静态最终整数请求\u SMS=1;
私有FusedLocationProviderClient fusedLocationClient;
FirebaseUser=FirebaseAuth.getInstance().getCurrentUser();
DatabaseReference userRef=FirebaseDatabase.getInstance().getReference(“用户”).child(user.getUid());
//地点经理地点经理;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sos2);
ActivityCompat.requestPermissions(此,
新字符串[]{Manifest.permission.ACCESS\u FINE\u LOCATION},REQUEST\u LOCATION);
fusedLocationClient=LocationServices.getFusedLocationProviderClient(此);
}
字符串紧急联系人编号;
@凌驾
受保护的void onStart(){
super.onStart();
ImageButton sosBtn=findViewById(R.id.sosButton);
//从数据库中获取紧急联系人
userRef.addValueEventListener(新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot snapshot snapshot){
emergencyContactNo=snapshot.child(“eContact”).getValue(String.class).toString();
Toast.makeText(SosActivity.this、emergencyContactNo、Toast.LENGTH\u SHORT);
}
@凌驾
已取消公共void(@NonNull DatabaseError){
Toast.makeText(SosActivity.this,“获取紧急联系人时出错”,Toast.LENGTH\u SHORT);
}
});
//点击按钮发送SOS信号+GPS坐标
sosBtn.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//获取用户的位置
LocationManager LocationManager=(LocationManager)getSystemService(Context.LOCATION\u服务);
如果(!locationManager.isProviderEnabled(locationManager.GPS\U提供程序)){
OnGPS();
}否则{
sendLocation();
}
}
});
}
私人机构{
final AlertDialog.Builder=新建AlertDialog.Builder(此);
builder.setMessage(“启用GPS”).setCancelable(false).setPositiveButton(“是”,新建DialogInterface.OnClickListener()){
@凌驾
public void onClick(DialogInterface dialog,int which){
startActivity(新意图(设置、动作、位置、来源、设置));
}
}).setNegativeButton(“否”,新的DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int which){
dialog.cancel();
}
});
final AlertDialog AlertDialog=builder.create();
alertDialog.show();
}
字符串ans;
私有void sendLocation(){
如果(ActivityCompat.checkSelfPermission(
SosActivity.this、Manifest.permission.ACCESS_FINE_LOCATION)!=PackageManager.permission_已授予&&ActivityCompat.checkSelfPermission(
SosActivity.this、Manifest.permission.ACCESS_\u位置)!=PackageManager.permission(已授予){
ActivityCompat.requestPermissions(这是一个新字符串[]{Manifest.permission.ACCESS\u FINE\u LOCATION},REQUEST\u LOCATION);
}否则{
fusedLocationClient.getLastLocation()文件
.addOnSuccessListener(此,新的OnSuccessListener(){
@凌驾
成功时的公共无效(位置){
//已获取最后一个已知位置。在某些罕见情况下,此值可以为空。
如果(位置!=null){
//处理位置对象的逻辑
ans=location.getLongitude()+”,“+location.getLongitude();
Intent Intent=新的Intent(SosActivity.this,SosActivity.class);
PendingEvent pi=PendingEvent.getActivity(getApplicationContext(),0,intent,0);
//获取smsmsmanager实例并调用sendTextMessage方法来发送消息
SmsManager sms=SmsManager.getDefault();
package com.r30.wec_task;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import android.Manifest;
import android.app.PendingIntent;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.location.Location;
import android.location.LocationManager;
import android.os.Bundle;
import android.provider.Settings;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.ImageButton;
import android.widget.Toast;
import com.google.android.gms.location.FusedLocationProviderClient;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
public class SosActivity extends AppCompatActivity {
private static final int REQUEST_LOCATION = 1;
private static final int REQUEST_SMS = 1;
private FusedLocationProviderClient fusedLocationClient;
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
DatabaseReference userRef = FirebaseDatabase.getInstance().getReference("users").child(user.getUid());
// LocationManager locationManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sos2);
ActivityCompat.requestPermissions( this,
new String[] {Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_LOCATION);
fusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
}
String emergencyContactNo;
@Override
protected void onStart() {
super.onStart();
ImageButton sosBtn = findViewById(R.id.sosButton);
//Get Emergency Contact from DataBase
userRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
emergencyContactNo = snapshot.child("eContact").getValue(String.class).toString();
Toast.makeText(SosActivity.this,emergencyContactNo,Toast.LENGTH_SHORT);
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
Toast.makeText(SosActivity.this,"Error getting your emergency contact",Toast.LENGTH_SHORT);
}
});
//Button Click sends SOS signal + GPS Co-ordinates
sosBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//get Location of user
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
OnGPS();
} else {
sendLocation();
}
}
});
}
private void OnGPS() {
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Enable GPS").setCancelable(false).setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
startActivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS));
}
}).setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
final AlertDialog alertDialog = builder.create();
alertDialog.show();
}
String ans;
private void sendLocation() {
if (ActivityCompat.checkSelfPermission(
SosActivity.this,Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(
SosActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_LOCATION);
} else {
fusedLocationClient.getLastLocation()
.addOnSuccessListener(this, new OnSuccessListener<Location>() {
@Override
public void onSuccess(Location location) {
// Got last known location. In some rare situations this can be null.
if (location != null) {
// Logic to handle location object
ans=location.getLongitude()+","+location.getLongitude();
Intent intent=new Intent(SosActivity.this,SosActivity.class);
PendingIntent pi=PendingIntent.getActivity(getApplicationContext(), 0, intent,0);
//Get the SmsManager instance and call the sendTextMessage method to send message
SmsManager sms=SmsManager.getDefault();
sms.sendTextMessage(emergencyContactNo, null, "SOS my location is http://maps.google.com/maps?q="+ans, pi,null);
Toast.makeText(getApplicationContext(), "Message Sent successfully!"+emergencyContactNo,
Toast.LENGTH_LONG).show();
}
}
});
}
}
}
ans=location.getLongitude()+","+location.getLongitude();
ans=location.getLatitude()+","+location.getLongitude();