スマホアプリをJAVAでコーディング

質問

ある店舗がレジ近く(緯度・経度は任意)で位置情報を感知して、来店したらnearと表示するアンドロイドアプリをJAVAで記入したソースコードを教えてください。必要なライブラリィはすでにインストールしているものとします。レジからの距離はお任せします。

Chat GPT

以下は、Android Studioを使用してJavaで記述された、レジ近くで位置情報を検出してnearと表示するAndroidアプリのソースコードの例です。

import android.Manifest;
import android.content.pm.PackageManager;
import android.location.Location;
import android.os.Bundle;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;

import com.google.android.gms.location.FusedLocationProviderClient;
import com.google.android.gms.location.LocationServices;

public class MainActivity extends AppCompatActivity {

private static final int LOCATION_PERMISSION_REQUEST_CODE = 1;

private FusedLocationProviderClient fusedLocationClient;
private TextView locationTextView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

fusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
locationTextView = findViewById(R.id.locationTextView);

if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
getCurrentLocation();
} else {
ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.ACCESS_FINE_LOCATION}, LOCATION_PERMISSION_REQUEST_CODE);
}
}

private void getCurrentLocation() {
fusedLocationClient.getLastLocation().addOnSuccessListener(this, location -> {
if (location != null) {
double latitude = location.getLatitude();
double longitude = location.getLongitude();

// レジの位置情報を固定値で設定する(ここでは例として、東京駅の位置を設定する)
double registerLatitude = 35.681236;
double registerLongitude = 139.767125;

// レジの位置情報と現在地の距離を計算する
float[] results = new float[1];
Location.distanceBetween(latitude, longitude, registerLatitude, registerLongitude, results);
float distanceInMeters = results[0];

// レジとの距離が一定範囲以内ならnearと表示する
if (distanceInMeters < 100) {
locationTextView.setText(“near”);
} else {
locationTextView.setText(“not near”);
}
} else {
locationTextView.setText(“Location not found”);
}
});
}

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (requestCode == LOCATION_PERMISSION_REQUEST_CODE) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
getCurrentLocation();
} else {
locationTextView.setText(“Location permission denied”);
}
}
}
}

このコードでは、FusedLocationProviderClientを使用して、デバイスの現在位置を取得します。位置情報の取得には、ACCESS_FINE_LOCATIONパーミッションが必要であるため、パーミッションが付与されているかどうかを確認し、付与されていない場合はリクエストを送信します。