如何在 Android 中检查 GPS 接收器的当前状态?
简介
许多 Android 应用程序会获取用户的位置信息,以便将特定产品或服务送到用户家门口。这些应用程序通常使用 GPS 获取用户的位置,以便提供服务。要从 GPS 获取位置信息,我们应该检查 Android 设备中 GPS 接收器的当前状态(GPS 是开启还是关闭)。在本文中,我们将了解如何在 Android 中检查 GPS 接收器的当前状态。
实现
我们将创建一个简单的应用程序,在其中显示一个文本视图作为标题,然后再创建另一个文本视图,用于显示 GPS 的当前状态(GPS 是开启还是关闭)。除此之外,我们还将添加一个按钮,用于在 Android 应用程序中检查 GPS 的当前状态。
步骤 1:在 Android Studio 中创建新项目
如下图所示,导航到 Android Studio。在下方屏幕中,点击"新建项目"以创建一个新的 Android Studio 项目。
点击"新建项目"后,您将看到以下屏幕。
在此屏幕中,我们只需选择"空活动",然后点击"下一步"。点击"下一步"后,您将看到以下屏幕。
在此屏幕中,我们只需指定项目名称。然后包名称将自动生成。
注意 - 确保选择 Java 作为语言。
指定所有详细信息后,点击"完成"以创建一个新的 Android Studio 项目。
项目创建完成后,我们将看到两个打开的文件,即 activity_main.xml 和 MainActivity.java 文件。
步骤 3:使用 activity_main.xml。
导航到 activity_main.xml。如果此文件不可见,请打开此文件。在左侧窗格中,导航至 app>res>layout>activity_main.xml 并打开此文件。打开此文件后,添加以下代码。代码中添加了注释,以便您详细了解。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/idRLLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<!-- on below line creating a text view for displaying a heading-->
<TextView
android:id="@+id/idTVHeading"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@id/idTVGPSStatus"
android:layout_margin="10dp"
android:gravity="center"
android:text="Check Current Status of GPS Reciever in Android"
android:textAlignment="center"
android:textColor="@color/black"
android:textSize="18sp"
android:textStyle="bold" />
<!-- on below line displaying a text to show GPS status-->
<TextView
android:id="@+id/idTVGPSStatus"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_margin="10dp"
android:gravity="center"
android:text="GPS Status"
android:textAlignment="center"
android:textColor="@color/black"
android:textSize="15sp"
android:textStyle="normal" />
<!-- on below line creating a button to check the GPS status -->
<Button
android:id="@+id/idBtnCheckGPS"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/idTVGPSStatus"
android:layout_margin="10dp"
android:text="Check GPS Status"
android:textAllCaps="false" />
</RelativeLayout>
说明 - 在上面的代码中,我们创建了一个相对布局作为根布局。在这个相对布局中,我们首先显示文本视图,它将显示应用程序的标题。之后,我们再创建一个文本视图,用于显示当前的 GPS 状态。最后,我们创建一个按钮,用于检查当前的 GPS 状态。
步骤 4:使用 MainActivity.java 文件
导航到 MainActivity.java。如果此文件不可见,请在左侧窗格中导航至 app>res>layout>MainActivity.java 以打开此文件。打开此文件后,将以下代码添加到其中。代码中添加了注释,以便您详细了解。
package com.example.androidjavaapp;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.location.GpsStatus;
import android.location.LocationManager;
import android.media.Image;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.os.SystemClock;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.material.internal.FlowLayout;
public class MainActivity extends AppCompatActivity {
// 下面一行我们正在为文本视图创建变量。
private TextView gpsStatusTV;
private Button checkGPSStatusBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 下面一行使用 id 初始化变量。
gpsStatusTV = findViewById(R.id.idTVGPSStatus);
checkGPSStatusBtn = findViewById(R.id.idBtnCheckGPS);
// 下面一行调用方法检查 GPS 状态
checkGPSStatus();
// 下面一行为按钮添加点击监听器
checkGPSStatusBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 在下面的代码中调用方法来检查 GPS 状态
checkGPSStatus();
}
});
}
private void checkGPSStatus() {
// 创建 LocationManager 实例
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
// 检查 GPS 是否已启用
boolean isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
// 如果 GPS 未启用,则向用户显示一个对话框以启用它
if (isGPSEnabled) {
// 显示对话框
gpsStatusTV.setText("GPS is Enabled..");
} else {
gpsStatusTV.setText("GPS is Disabled..");
}
}
}
说明 - 在上面的代码中,我们首先创建了用于显示 GPS 接收器状态的文本视图变量,以及用于检查 GPS 状态的按钮变量。之后,我们将看到一个 onCreate 方法,在该方法中,我们将对要向用户显示的布局进行扩展。然后,我们使用在 activity_main.xml 文件中指定的 id 初始化按钮和文本视图的变量。
之后,我们创建了一个 checkGPS status 方法,用于检查当前的 GPS 状态。在此方法中,我们检查 GPS 状态,并将 GPS 状态相应地设置为文本视图。现在,我们在 onCreate 方法中调用此方法来显示 GPS 状态。之后,我们为按钮添加一个点击监听器来检查 GPS 状态。在此按钮的点击监听器中,我们再次调用一个方法来检查 GPS 状态,并显示当前的 GPS 状态。
添加上述代码后,现在只需点击顶部栏中的绿色图标即可在移动设备上运行我们的应用程序。
注意 - 确保您已连接到真实设备或模拟器。
输出
结论
在上文中,我们介绍了如何在 Android 应用程序中获取 GPS 接收器的当前状态。

