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

الصفحات

اندرويد ستوديو بالعربي | شرح كيفية التعامل مع Maping و الحصول على العنوان من المستخدم .

اندرويد ستوديو بالعربي | شرح كيفية التعامل مع Maping و الحصول على العنوان من المستخدم .


 اندرويد ستوديو بالعربي | شرح كيفية التعامل مع Maping و الحصول على العنوان من المستخدم .


يعتبر أندرويد ستوديو اقوى برنامج لتصميم تطبيقات الهاتف الجوال بشكل مجاني وهو البرنامج الرسمي في عمليات تطوير تطبيقات الاندرويد وغيرها وهو من تطوير العملاق جوجل حيث تسعى الى تطوير لغات برمجة وبرامج لدعم المطورين ونحن في جي كودرس نقدم لكم android studio شرح بالعربي ومفصل ويسعى الموقع الخاص بنا لتقديم اكواد برمجية مختلفة في لغات برمجة متنوعة ومن اهمها الجافا والبايثون , نقدم لكم اليوم في درس جديد من دروس تعلم الاندرويد استوديو بالعربي كيفة اضافة ماب الى التطبيق الخاص بك وكيفية عمل سماح للمستخدم بجعل التطبيق يتتبع موقعه وهذة المقالة هي اولى المقالات لنا في هذا الجزء وهو جزء map سوف نتعرف في هذة المقالة على عدة اجزاء , هذة الاجزاء هي اضافة تسمح لنا بعمل map لموقع المتسخدم ثانينا سوف نتعرف على اجزاء مهمه في الاندرويد وبعدها سوف ننتقل معكم الى اهم جزء وهو اكواد الماب .


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


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


ماهي المكتبة التي تحتاجها في برنامج اندرويد ستوديو لعمل الماب - map ؟


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


اضف المكتبة التالية في المكان المخصص لها .


dependencies {
    implementation 'com.google.android.gms:play-services-location:18.0.0'
}


ماهي permission وكيف نستفاد منها في أندرويد ستوديو ؟


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


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



ماهي الاكواد المطلوب لعمل تتبع لعنوان المستخدم والحصول عليه في اندرويد ستوديو ؟


سوف نحتاج الى عمل اكثر من دالة لكي نحصل على عنوان المستخدم وايضا اذا لم يكن فاتح للموقع بان يفتحه وسوف اشرح لكم جميع الدوال التي قمنا بعملها في هذا البرنامج حيث لدينا حوالي 4 دوال او function , قبل كل شيئ قم بعمل location request واعطائه اي قيمة بالاعلى وايضا logt لكي تشاهد ما يحدث في التطبيق خلال العمل في logcat و FusedLocation .


اهم الوظايف وfunctions للحصول على عنوان المستخدم في اندرويد ستوديو ؟




1- وظيفية AskForPermission .


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


    private void askForPermission() {

        if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

            if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.ACCESS_FINE_LOCATION)) {

                ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, LOCATION_REQUEST_CODE);
            } else {
                ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, LOCATION_REQUEST_CODE);

            }
        }
    }


2- وظيفة OnStart


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


    @Override
    protected void onStart() {
        super.onStart();

        if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {

            getLastLocation();

        } else {
            askForPermission();

        }

    }
    



3- وظيفة onRequestPermissionResult


هذة الوظيفية موجودة بداخل برنامج اندرويد ستوديو جاهزة , في هذا المكان نحصل فيه على نتيجة المستخدم سواء كانت بعملة القبول او الرفض ف الاجابة تصل لنا هنا وعندما نتاكد ان الاجابه كانت نعم و قيمة request نفس القيمة التي اعطاها لنا المستخدم سوف نتوجه الى وظيفية getlastlocation وهي للحصول على العنوان اخيرا .


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


4- وظيفة getlastlocation


في هذا المكان سوف نتاكد من ان نتيجة request وبعدها نستعمل tasl<location> لكي نحصل على العنوان من خلالها وبعدها نقوم بعمل listener اي نسمع للاجابة اذا كانت صحيحة سوف نطبع موقع المستخدم عن طريق خط الطول والعرض للماب وسوف تكون النتيجة في logi واذا لم نحصل على تظهر رسالة was null اي انه فير موجود , بالنسبة لو فشلت المهمة السابقة سوف نطبع رسالة بالمشكلة للمستخدم .


    private void getLastLocation() {

        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &&

                ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

            return;

        }

        Task<Location> locationTask = fusedLocationProviderClient.getLastLocation();
        locationTask.addOnSuccessListener(new OnSuccessListener<Location>() {

            @Override
            public void onSuccess(Location location) {

                if (location != null) {
                    Log.i(TAG, "onSuccess: " + location.toString());
                    Log.i(TAG, "onSuccess: " + location.getLatitude());
                    Log.i(TAG, "onSuccess: " + location.getLongitude());



                } else {

                    Log.i(TAG, "onSuccess: Location was null ");
                }
            }

        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                String Error = e.getMessage();
                Log.i(TAG, "onFailure: "+Error);
                Toast.makeText(MainActivity.this, Error, Toast.LENGTH_LONG).show();

            }
        });
    }


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



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


هل اعجبك الموضوع :