القائمة الرئيسية

الصفحات

التعامل مع Map #4 : كيفية التاكد من الموقع يعمل على هاتف المستخدم - how to check gps on or off android studio

 

كيفية التاكد من الموقع يعمل على هاتف المستخدم - how to check gps on or off android studio

كيفية التاكد من الموقع يعمل على هاتف المستخدم - how to check gps on or off android studio


من اهم الاشياء التي يجب ان تراعيها في تطوير تطبيقات الاندرويد وهي التفكير في ادق التفاصيل التي تحتاجها لتطبيقك , وبما اننا نشرح في maping يجب ان نراعي التاكد من تشغيل gps او location في هاتف المستخدم لانه بدونه لن يعمل تطبيقنا وهذا هو محور درسنا اليوم من تطوير تطبيقات الموبايل ولا تقلق الامر بسيط جدا وهوع عباره عن function سوف نقوم بعملها تظهر لنا dialog يقوم بفتح الموقع او gps بشكل تلقائي دون الحاجه الى فتحه من جهازك .


تعد الماب او الخرائط من اهم الاشياء التي يجب عليك معرفتها اذا كنت تريد التعمق في مجال تطوير تطبيقات الاندرويد ونحن في جي كودرس نقدم لكم دائما شروحات متنوعه في تطوير تطبيقات الاندرويد باستخدام اندرويد ستوديو او غيره من البرامج ولغات البرمجة حيث نهدف لان نصبح واحد من اكبر المواقع العربيه المخصصه في تعلم البرمجة بشكل مجاني و تعليمكم تطوير تطبيقات الهواتف الذكية ببساطه وبدون اي تعقيدات ويوجد قسم كامل في موقعنا مختص بهذا الشيئ يمكنك الذهاب اليه والاطلاع على احدث ما يوجد به .


برمجة و تطوير تطبيقات الهواتف الذكية باستخدام اندرويد ستوديو سواء كان باستخدام برمجة جافا او كوتلن او غيرها مهمه جدا وايضا عليها اقبال كبير في سوق العمل وقد يتطور الامر معك وتبحث عن شركة تطوير تطبيقات الجوال للعمل فيها , ف العمل في مجال تطوير تطبيقات الاندرويد لديه شعبيه كبيره جدا في الشركات وايضا اذا لم تكن تحب العمل في شركة يمكنك تطوير تطبيقات الموبايل ورفعها على متجر بلاي ووضع اعلانات والربح منها او العمل بشكل اونلاين " فري لانسر - عامل حر " وهذا النوع من العمل كبير جدا وغير محدود و شركة تطوير تطبيقات الجوال قد تجد موظفين لها من خلال الاعمال الحره او قد تنشر اعمالك لياتي اليك اشخاص يحتاجون لتطوير تطبيقات الاندرويد وتقوم بتصميم البرنامج لهم بمقابل مادي .


قم بانشاء زر داخل xml وقم بعمل له id , وانتقل الى class الخاص بملف xml لعملية تطوير تطبيقات الاندرويد عن طريق الكود , قم بعد ذلك بتعريف الزر عن طريق findViewById وايضا سوف نحتاج الى عمل LOCATION_REQUEST_SETTING و LocationManager و LocationRequest وجعلهم global  , ونقوم بتعريفهم بالاسفل كما بالصورة .



الكود الموجود بالصورة الاولى 


    private LocationRequest locationRequest;
    private LocationManager manager;
    private final int LOCATION_REQUEST_SETTING = 1002;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        check = findViewById(R.id.check);
        manager = (LocationManager) getSystemService( MainActivity.LOCATION_SERVICE );
        fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this);

        locationRequest = LocationRequest.create();
        locationRequest.setInterval(4000);
        locationRequest.setFastestInterval(2000);
        locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
        


الان سوف نقوم بعمل اختبار بسيط للتاكد من عمل الموقع ( جي بي اس ) في هاتف المستخدم لذلك قم بعمل if نختبر فيها اذا لم يكن يعمل الموقع قم باظهار الفانكشن المسؤوله عن تشغيل الموقع في هاتف المستخدم وبعدها return ليقف واذا كان الموقع يعمل نقوم بإخفاء الزر .



الكود السابق 


if ( !manager.isProviderEnabled( LocationManager.GPS_PROVIDER ) ) {
check_Gps_ON_or_OFF();
return;
}
check.setVisibility(View.GONE);


كل ما عليك هو عمل function باسم check_Gps_ON_or_OFF() اسفل oncreat وتحتوي على الكود الخاص بعملية اخراج مربع حواري يخبر المستخدم بانه يحتاج الى الوصول الى موقعه وسوف وبمجرد النقر على موافق سوف يقوم بفتح الموقع في هاتف المستخدم يمكنك نسخ الكود التالي وتغيير context الى الاسم الذي تعمل عليه , هناك تعديل قمت به وهو عندما يعمل الجي بي اس - GPS سوف يختفي الزر يمكنك ازالة امر setVisibility اذا كنت تريد بقاء مكان الزر .



كود الوظيفة السابقة 


    private void check_Gps_ON_or_OFF() {

        check.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder()

                        .addLocationRequest(locationRequest);

                builder.setAlwaysShow(true);

                Task<LocationSettingsResponse> result = LocationServices.getSettingsClient(getApplicationContext())

                        .checkLocationSettings(builder.build());
                result.addOnCompleteListener(new OnCompleteListener<LocationSettingsResponse>() { 

                    @Override

                    public void onComplete(@NonNull Task<LocationSettingsResponse> task) {

                        try {

                            LocationSettingsResponse response = task.getResult(ApiException.class);

                            check.setVisibility(View.GONE);

                            Toast.makeText(MainActivity.this, "GPS in ON", Toast.LENGTH_SHORT).show();


                        } catch (ApiException e) {

                            switch (e.getStatusCode()) {



                                case LocationSettingsStatusCodes

                                        .RESOLUTION_REQUIRED:

                                    try {

                                        ResolvableApiException resolvableApiException = (ResolvableApiException) e;

                                        resolvableApiException.startResolutionForResult(MainActivity.this, LOCATION_REQUEST_SETTING);

                                    } catch (IntentSender.SendIntentException ex) {

                                    }

                                    break;

                                case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE:

                                    break;

                            }

                        }


                    }

                });

            }

        });

    }
    


قم الان بإنشاء onActivityResult اسفل الكود السابق ( ما زلنا خارج onCreat ) وبعدها تاكد ان فيمة requestCode هي نفس القيمة التي تحصل عليها من المستخدم واذا كانت تعمل تطبع رسالة GPS is True واذا لم قام بالالغاء تظهر رسالة GPS is required to be turned on .



الكود السابق


    @Override

protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == LOCATION_REQUEST_SETTING) {
switch (resultCode) {
case Activity.RESULT_OK:
check.setVisibility(View.GONE);
Toast.makeText(this, "GPS is True", Toast.LENGTH_SHORT).show();
break;
case Activity.RESULT_CANCELED:
Toast.makeText(this, "GPS is required to be turned on", Toast.LENGTH_SHORT).show();
                    return;
}
}
}


للمزيد من دروس تطوير تطبيقات الجوال او تطوير تطبيقات الاندرويد




رابط المشروع كامل على جيت هب - github



التنقل السريع