رفتن به مطلب
  • 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 استفاده کرد؟!

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

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

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

  • 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

 

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

  • 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

 

سلام.

استاد اینو من تست کردم، این پیامو چاپ میکنه فقط:

do.php?imgf=org-ec95b57fbdb01.png

من به جای log از msgbox استفاده کردم

ممنون میشم راهنماییم کنید

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

  • 0
7 ساعت قبل، MR.B4A گفته است:

سلام.

استاد اینو من تست کردم، این پیامو چاپ میکنه فقط:

do.php?imgf=org-ec95b57fbdb01.png

من به جای log از msgbox استفاده کردم

ممنون میشم راهنماییم کنید

چک کنید که جی پی اس روشن باشه و حتما باید تو فظای باز تست کنید. نباید مشکلی باشه. به جای msgbox  از یه لیبل استفاده کنید که لت و لانگ رو نشون بده

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

  • 0
در ۱۴۰۳/۷/۲۶ در 10:20، محمدرضا شاهپیری گفته است:

چک کنید که جی پی اس روشن باشه و حتما باید تو فظای باز تست کنید. نباید مشکلی باشه. به جای msgbox  از یه لیبل استفاده کنید که لت و لانگ رو نشون بده

سلام مجدد استاد

ببیند به من لت و لانگ رو میده:

do.php?imgf=org-849ee447cf9e1.png

منتهای مراتب نام شهر رو چه طوری دست بیارم؟!

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

  • 0
۱۱ ساعت قبل، MR.B۴A گفته است:

سلام مجدد استاد

ببیند به من لت و لانگ رو میده:

do.php?imgf=org-849ee447cf9e1.png

منتهای مراتب نام شهر رو چه طوری دست بیارم؟!

برای به دست آوردن نام شهر باید از api هایی که برای این کاره استفاده کنید. سرچ کنید زیاد هست که البته غیر رایگانن اکثرا.

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

  • 0
در ۱۴۰۳/۸/۹ در ۱۲:۰۸، محمدرضا شاهپیری گفته است:

برای به دست آوردن نام شهر باید از api هایی که برای این کاره استفاده کنید. سرچ کنید زیاد هست که البته غیر رایگانن اکثرا.

استاد ظاهرا سایت نشان این کارو انجام میده، اما چه طوری باید توی b4a پیادش کرد؟!

https://platform.neshan.org/api/reverse-geocoding/

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

  • 0
۱۲ ساعت قبل، MR.B۴A گفته است:

استاد ظاهرا سایت نشان این کارو انجام میده، اما چه طوری باید توی b4a پیادش کرد؟!

https://platform.neshan.org/api/reverse-geocoding/

از متد زیر استفاده کنید. apiKey و مختصات رو جایگذاری کنید خودتون

Private Sub getCityNmae(apiKey As String,lat As Double,lng As Double)
	Dim job As HttpJob
	job.Initialize("",Me)
	job.Download($"https://api.neshan.org/v5/reverse?lat=${lat}lng=${lng}"$)
	job.GetRequest.SetHeader("Api-Key", apiKey)
	Wait For (job) JobDone(j As HttpJob)
	If j.Success Then
		Log(j.GetString)
	End If
	job.Release
End Sub

 

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

  • 0
11 ساعت قبل، محمدرضا شاهپیری گفته است:

از متد زیر استفاده کنید. apiKey و مختصات رو جایگذاری کنید خودتون

Private Sub getCityNmae(apiKey As String,lat As Double,lng As Double)
	Dim job As HttpJob
	job.Initialize("",Me)
	job.Download($"https://api.neshan.org/v5/reverse?lat=${lat}lng=${lng}"$)
	job.GetRequest.SetHeader("Api-Key", apiKey)
	Wait For (job) JobDone(j As HttpJob)
	If j.Success Then
		Log(j.GetString)
	End If
	job.Release
End Sub

 

استاد برای من این ارور رو میده:

do.php?imgf=org-adac1f25dc381.png

اینم کلیده دسترسیم هست که توی سایت ساختم:

web.c671fd739e7f461e962818b7b7d4dd96

میدونم مشکل از کلیدم هست

اما نمیدونم چه طوری حلش کنم

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

  • 0
۱۴ ساعت قبل، MR.B۴A گفته است:

استاد ممنون میشم جواب بدید

عزیز من با این سایت کار نکردم. با پشتیبانیشون مطرح کنید یا از داکیومنتاشون

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

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

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

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

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

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

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

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

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

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

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