【Android開発】GPSをプログラムから有効・無効に切り替える方法【サンプルコード付き】
このチュートリアルでは、AndroidアプリからGPS(位置情報サービス)の現在の状態を確認し、ボタン操作で位置情報の設定画面を開いてGPSを有効・無効に切り替える方法を解説します。
注意:GPSを直接制御できない理由
セキュリティとプライバシー保護の観点から、一般アプリがシステム設定を直接書き換えてGPSを強制的にオン・オフすることは許可されていません。そこで本記事では、「LocationManagerでGPSの状態を判定する処理」と「ACTION_LOCATION_SOURCE_SETTINGSインテントでユーザーを設定画面へ誘導する処理」を組み合わせた実装方法を紹介します。
ステップ1:新規プロジェクトを作成
Android Studioを起動し、「File」→「New Project」を選択して必要事項を入力し、新しいプロジェクトを作成します。
ステップ2:activity_main.xml にレイアウトを定義
res/layout/activity_main.xml に以下のコードを追加します。
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android" xmlns:tools="https://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="MainActivity" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@+id/textView1" android:layout_centerHorizontal="true" android:layout_marginTop="70dp" android:text="Click Here to Enable Disable GPS location service!" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="132dp" android:gravity="center" android:text="location service Stauts Shows Here" android:textAppearance="?android:attr/textAppearanceLarge" /> </RelativeLayout>
ステップ3:MainActivity.java を実装
src/MainActivity.java に以下のコードを追加します。
import android.content.Context;
import android.content.Intent;
import android.location.LocationManager;
import android.provider.Settings;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
Button button;
Context context;
Intent intent1;
TextView textview;
LocationManager locationManager ;
boolean GpsStatus ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button)findViewById(R.id.button1);
textview = (TextView)findViewById(R.id.textView1);
context = getApplicationContext();
CheckGpsStatus();
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
intent1 = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(intent1);
}
});
}
public void CheckGpsStatus(){
locationManager = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);
assert locationManager != null;
GpsStatus = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
if(GpsStatus == true) {
textview.setText("GPS Is Enabled");
} else {
textview.setText("GPS Is Disabled");
}
}
}ステップ4:AndroidManifest.xml に権限を追加
androidManifest.xml に以下のコードを追加します。GPS_PROVIDERへアクセスするため、ACCESS_FINE_LOCATION権限の宣言が必須です。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="https://schemas.android.com/apk/res/android" package="app.com.sample"> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
コードのポイント解説
- CheckGpsStatus():LocationManagerのisProviderEnabled(GPS_PROVIDER)メソッドで、GPSが現在有効かどうかを判定し、結果をTextViewに表示します。
- onClick():ボタンがタップされるとACTION_LOCATION_SOURCE_SETTINGSインテントを発行し、端末の位置情報設定画面を開きます。ユーザーはそこでGPSのオン・オフを切り替えられます。
なお、本記事のコードは古いサポートライブラリ(android.support.v7)を使用しています。最新のAndroid Studioプロジェクトでは、androidx.appcompat.app.AppCompatActivityに置き換えてください。また、onResume()などのライフサイクルメソッド内でCheckGpsStatus()を再呼び出しすると、設定画面から戻ってきた際に最新のGPS状態を即座に反映できるのでおすすめです。
アプリを実行して確認
それでは実際にアプリを動かしてみましょう。ここでは、Androidスマートフォン(実機)をパソコンに接続しているものとします。Android Studioからアプリを実行するには、プロジェクト内の任意のアクティビティファイルを開き、ツールバーの「Run」アイコンをクリックしてください。接続済みのモバイルデバイスを選択すると、実機の画面に以下のように表示されます。



-
AndroidでプログラムからScrollViewを無効化する方法
このチュートリアルでは、AndroidアプリでScrollViewをプログラム的に無効化する方法を解説します。setOnTouchListener()を使ってタッチイベントを横取りすることで、ユーザーによるスクロール操作を防ぐことができます。 ステップ1:新規プロジェクトの作成 まず、Android Studioで新しいプロジェクトを作成します。メニューから「File」→「New Project」を選択し、必要な項目をすべて入力してプロジェクトを作成してください。 ステップ2:レイアウトファイルの編集(res/layout/activity_main.xml) 以下のコードを res/lay
-
AndroidでGoogleフィード(Discover)を有効・無効にする完全ガイド
Googleフィード(Google Discover)は、Googleが提供する非常に便利な機能のひとつです。ユーザーの興味や関心に基づいて、ニュースや情報が自動的にまとめられ、あなただけのために特別にキュレーションされます。例えば、応援しているチームの試合のリアルタイムスコアや、お気に入りのテレビ番組に関する記事など、自分に合ったストーリーやニュースが表示されます。さらに、表示されるコンテンツの種類はカスタマイズ可能で、Googleに興味関心に関するデータを提供すればするほど、フィードの関連性は高まっていきます。 現在、Android 6.0(Marshmallow)以降を搭載するほとんど