رفتن به مطلب
بخش Unity به انجمن اضافه شد
  • 0

استفاده از جاوا برای دریافت شهر کاربر در b4a


MR.B4A

سوال

سلام به همه

این کدهایی هست که به زبان جاوا برای دریافت نام شهر از طریق لوکیشن من پیدا کردم:

اینا مجوزاشه:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.cityname">

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

    <application
        android:allowBackup="true"
        android:label="@string/app_name"
        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>

اینا هم دستوراتش

package com.example.cityname;

import android.Manifest;
import android.content.pm.PackageManager;
import android.location.Address;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;

import java.io.IOException;
import java.util.List;
import java.util.Locale;

public class MainActivity extends AppCompatActivity {

    private LocationManager locationManager;
    private TextView cityTextView;

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

        cityTextView = findViewById(R.id.cityTextView);

        locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);

        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
            ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, 1);
        } else {
            getLocation();
        }
    }

    private void getLocation() {
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new LocationListener() {
            @Override
            public void onLocationChanged(@NonNull Location location) {
                getCityName(location.getLatitude(), location.getLongitude());
            }
        });
    }

    private void getCityName(double latitude, double longitude) {
        Geocoder geocoder = new Geocoder(this, Locale.getDefault());
        try {
            List<Address> addresses = geocoder.getFromLocation(latitude, longitude, 1);
            if (addresses != null && !addresses.isEmpty()) {
                String cityName = addresses.get(0).getLocality();
                cityTextView.setText("شهر شما: " + cityName);
            } else {
                cityTextView.setText("نامشخص");
            }
        } catch (IOException e) {
            e.printStackTrace();
            cityTextView.setText("خطا در دریافت نام شهر");
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if (requestCode == 1 && grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            getLocation();
        }
    }
}

چه طوری میشه از این دستورات توی b4a استفاده کرد؟!

لینک ارسال
به اشتراک گذاری در سایت های دیگر

1 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

  • 0

نیازی به جاوا نیست. کتابخونه gps رو تیک بزنید و کد زیر رو منیفست اضافه کنید

AddPermission(android.permission.ACCESS_FINE_LOCATION)

به شکل زیر میتونید بگیرید لوکیشن رو

Sub Process_Globals
	Dim gp As GPS
	Dim runtime As RuntimePermissions
End Sub

Sub Activity_Create(FirstTime As Boolean)
	If runtime.Check("android.permission.ACCESS_FINE_LOCATION") Then
		   startLocating
		Else
			runtime.CheckAndRequest("android.permission.ACCESS_FINE_LOCATION")
	End If
End Sub

Private Sub startLocating
	gp.Initialize("gp")
	If gp.GPSEnabled = False Then StartActivity(gp.LocationSettingsIntent)
	gp.start(1000,2)
End Sub

Private Sub Activity_PermissionResult (Permission As String, Result As Boolean)
	If Result Then
		startLocating
	End If
End Sub
Private Sub gp_LocationChanged (Location1 As Location)
	Log("gp_LocationChanged:"&Location1.Longitude&"-"&Location1.Latitude)
End Sub

Private Sub gp_UserEnabled (Enabled As Boolean)
	Log("gp_UserEnabled:"&Enabled)
End Sub

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .
توجه: مطلب ارسالی شما پس از تایید مدیریت برای همه قابل رویت خواهد بود.

مهمان
پاسخ به این سوال ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
  • اضافه کردن...