Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GPS定位赢了';t显示在手机上_Java_Android_Android Emulator - Fatal编程技术网

Java GPS定位赢了';t显示在手机上

Java GPS定位赢了';t显示在手机上,java,android,android-emulator,Java,Android,Android Emulator,我正在尝试从GPS获取位置并将其显示在屏幕上,到目前为止,我有以下代码: public class MainActivity extends AppCompatActivity implements LocationListener { EditText el; TextView output; LocationManager lm; @Override protected void onCreate(Bundle savedInstanceStat

我正在尝试从GPS获取位置并将其显示在屏幕上,到目前为止,我有以下代码:

public class MainActivity extends AppCompatActivity implements LocationListener {

    EditText el;
    TextView output;

    LocationManager lm;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        el = (EditText) findViewById(R.id.editText);
        output = (TextView) findViewById(R.id.textView2);
        output.setMovementMethod(new ScrollingMovementMethod());
        output.setText("");

        LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        output.append("Start");
        if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

            //ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION}, 1);

             output.append("Initially Failed to Grand Permission\n");
             return;
        }
        output.append("\nOutside Permission controle");

        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10, 1, this);
        output.append("\nYoo");

    }

    public void send(View v) {
        MessageSender messageSender = new MessageSender();
        messageSender.execute(el.getText().toString());
        output.append("Hello\n");

    }


    @Override
    public void onLocationChanged(@NonNull Location location) {
        output.append("Inside location function");
        output.append(String.valueOf(location.getLongitude()));
    }
}
我还在android清单中添加了精细定位和粗略定位的权限。我错过了什么

我用的是三星galaxy S10

注意 当我在android studio上使用emulator时,它会显示位置,但当我使用usb调试器并在android设备上运行它时,它不会显示位置

同时
即使我在模拟器上运行它,当我移动笔记本电脑时,位置也不会更新,为什么?

locationManager.requestLocationUpdates(locationManager.GPS\u PROVIDER,10,1,this)

如果您不允许
访问\u FINE\u LOCATION
访问\u rough\u LOCATION
则会导致错误,因此您必须请求这些权限。您可以这样做:

if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED ||
            ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION}, 1);
    } else {
        lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10, 1, this);
    }
请注意,
&&
已更改为
|
。基本上,这段代码会询问权限是否未被授予。如果已授予权限,请调用
locationManager.RequestLocationUpdate(locationManager.GPS\u提供程序,10,1,此)

如果没有授予权限怎么办?在调用
requestLocationUpdates
之前,您需要等待权限被授予。授予权限后将调用此方法

@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
    switch (requestCode) {
        case 1: {
            // If request is cancelled, the result arrays are empty.
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
                if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                    return;
                }
            locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10, 1, this);
            return;
        }
    }
}

将此方法添加到活动中。我用一个物理设备测试了这段代码,它似乎正常工作。

我用Android studio从GPS获取位置
你不是用Android studio来做这件事的,你是用Android studio开发一个应用程序来做这件事的,记住-Android studio只是一个IDE,它只是帮助你编码,你的应用程序的结果没有任何不同,因为你使用(或没有使用)android studio
你可以通过点击左侧的大灰色复选按钮接受一个答案(如果它对你有帮助的话)。如果您希望,您可以通过单击上方的灰色三角形为任何好答案的作者增加+10分