اذهب إلى المحتوى

Flutter Dev

الأعضاء
  • المساهمات

    787
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    2

أجوبة بواسطة Flutter Dev

  1. @Mohamd Imran

    لقد صار شغال ميه ميه ربي يعطيك الف صحه وعافيه يا غالي وربي يقدرني وارجع لك هذا الفضل ما قصرت معي وربي حليت مشكله كبيره في تطبيقي 

     

    سوال اخير بس ي غالي لو بكلف عليك

    الان  احنا عملنا الكود في كلاس my server وهو شغال ميه ميه ولكن لو بغينا 

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

    الفكره حقيقي هذا ما واضحه معي فيها نوعا من الغموض لنه الان الكود يجيب لي جميع الادروس في الجدول او التعليقات ولكن بشكل عام لتطبيق 

    @Mohamd Imran

    في الاصدارات الجديده يعمل نظام الاشعارات 

    في القديمه يعمل ولكن يحدث كراش ل تطبيق وينهار مع وجود لوجت التالي 

     

    05-29 17:55:33.310 1955-1955/com.example.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
        java.lang.SecurityException: Requires VIBRATE permission
            at android.os.Parcel.readException(Parcel.java:1425)
            at android.os.Parcel.readException(Parcel.java:1379)
            at android.app.INotificationManager$Stub$Proxy.enqueueNotificationWithTag(INotificationManager.java:295)
            at android.app.NotificationManager.notify(NotificationManager.java:124)
            at android.app.NotificationManager.notify(NotificationManager.java:103)
            at com.example.myapplication.MyService.notifaction(MyService.java:95)
            at com.example.myapplication.MyService.access$000(MyService.java:29)
            at com.example.myapplication.MyService$1.onResponse(MyService.java:128)
            at com.example.myapplication.MyService$1.onResponse(MyService.java:117)
            at com.android.volley.toolbox.JsonRequest.deliverResponse(JsonRequest.java:83)
            at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:106)
            at android.os.Handler.handleCallback(Handler.java:615)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4745)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
            at dalvik.system.NativeStart.main(Native Method)
    05-29 17:55:33.522 1955-1959/com.example.myapplication D/dalvikvm: GC_CONCURRENT freed 361K, 6% free 12220K/12871K, paused 12ms+15ms, total 63ms

    ايضا توجد مشكلة التكرار هو شغال هو الوقت هذا مافيها مشكله المشكله يعطيني اخر رقم طول الوقت يعني يكرر العملية بدون توقق المتفرض اذا كان الرقم ك السابق لا يرسل لي اشعارات لني قد سبق وقرارت المووضوع

    • أعجبني 1
  2. @Mohamd Imran

     

      JSONObject hit = jsonArray.getJSONObject(0);
                                    String idtopic = hit.getString("idtopic");
                                    int lastThread = Integer.parseInt(String.valueOf(idtopic));
                                    JSONObject jsonObject = null;
                                    Toast.makeText(MyService.this, lastThread + ":", Toast.LENGTH_SHORT).show();

    عملت ازاله for كامل وهو شغال ايضا تمام ي غالي 

     

    بس باقي مشكلة ظهور التنبيه بدل التوست مسج وحسب ما فهمت الان ايضا يجب عمل قناة مع الاندويد الجديد

    انا جربت الكود الذي ادرجته انته ولكن لم يظهر شي لي

    • أعجبني 1
  3. @Mohamd Imran

    هلا بيك ي غالي 

    اعذرني على تاخر الرد كنت احاول اكتشف السبب 

    فعلا لقد حلت المشكله ربي يعطيك الف صحه وعافيه 

    الكود الحين صار شغال الخطاء كان في السطر التالي 

     

    
                                    JSONObject hit = jsonArray.getJSONObject(i);
                                    String idtopic =hit  .getString("idtopic");
                            

    المفترض استخدم hit بدل response 

    الحين هو شغال ولكن فيه مشكله وحده فقط 

    لما اضع الكود حسب توصيتك بشكل التالي 

      JSONObject hit = jsonArray.getJSONObject(i);

    يصير يقرا لي الاسطر كلها من الاعلى الى الاصغر مسج توست 3 ثم مسج توست 2 ثم مسج توست 1 

     

    ولما اكتب السطر بشكل التالي 

     

      JSONObject hit = jsonArray.getJSONObject(0);

    ياتي لي باخر ID لدي ولكن يتم تكراره بحسب عدد الاسطر مثلا انا لدي الان 3 سجلات في قاعدة البيانات 

     

    يتم اظهار هي 3 ل ث مرات متتاليه خلف بعض 

     

    مع العلم بانا كود الVOlley اصبح كالتالي 

     

    public void run_loop(){
    
            String url =  "http://00000000000/testnet/android_register_login/ShowAllData.php";
            JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
                    new Response.Listener<JSONObject>() {
                        @Override
                        public void onResponse(JSONObject response) {
                            try {
                                JSONArray jsonArray = response.getJSONArray("data");
                                for (int i = 0; i < jsonArray.length(); i++) {
                                    JSONObject hit = jsonArray.getJSONObject(i);
                                    String idtopic =hit  .getString("idtopic");
                                    int lastThread=Integer.parseInt(String.valueOf(idtopic));
                                    JSONObject jsonObject = null;
                                    Toast.makeText(MyService.this, lastThread+":", Toast.LENGTH_SHORT).show();
    
                                }
    
                            } catch (JSONException e) {
                                e.printStackTrace();
                            }
                        }
                    }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    error.printStackTrace();
                }
            });
    
    
            RequestQueue requestQueue = Volley.newRequestQueue(this);
            requestQueue.add(request);
    
    
            Handler handler=new Handler();
            handler.postDelayed(new Runnable(){
                @Override
                public void run() {
                    run_loop();
                }
                },20000);
    
        }

     

    @Mohamd Imran

    قمت بعمل الكود كالتالي الان التوست مسج يظهر ولكن الاشعارات لا تظهر في الاعلى 

     

      public void run_loop(){
    
            String url =  "http://00000000/testnet/android_register_login/ShowAllData.php";
            JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
                    new Response.Listener<JSONObject>() {
                        @Override
                        public void onResponse(JSONObject response) {
                            try {
                                JSONArray jsonArray = response.getJSONArray("data");
                                for (int i = 0; i < jsonArray.length(); i++) {
                                    JSONObject hit = jsonArray.getJSONObject(i);
                                    String idtopic =hit  .getString("idtopic");
                                    int lastThread=Integer.parseInt(String.valueOf(idtopic));
                                    JSONObject jsonObject = null;
                                    Toast.makeText(MyService.this, lastThread+":", Toast.LENGTH_SHORT).show();
                                    NotificationCompat.Builder builder = new NotificationCompat.Builder(getApplicationContext())
                                            .setSmallIcon(R.drawable.ic_launcher_background)
                                            .setContentTitle("قام مستخدم بالتعليق على منشورك")
                                            .setContentText("قام مستخدم بإضافة تعليق جديد!")
                                            .setPriority(NotificationCompat.PRIORITY_DEFAULT);
                                }
    
                            } catch (JSONException e) {
                                e.printStackTrace();
                            }
                        }
                    }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    error.printStackTrace();
                }
            });
    
    
            RequestQueue requestQueue = Volley.newRequestQueue(this);
            requestQueue.add(request);
    
    
            Handler handler=new Handler();
            handler.postDelayed(new Runnable(){
                @Override
                public void run() {
                    run_loop();
                }
                },20000);
    
        }
    

     

    • أعجبني 1
  4. @Mohamd Imran

    اهلا بك اخي

    بنسبة لملف mainfest  لقد قمت باضافة السيرفر فيه كالتالي 

     

     <service
                android:name=".MyService"
                android:enabled="true"
                android:exported="false"></service>

    بنسبة الى نوع لجهاز قمت بتجربة على جهازين الاول جهاوي حقيقي نوت 5 

    اصدار الاندرويد 7.0

    ايضا قمت بتجربته على جيني موشن اندرويد 4.1.1

    والنتيجة واحده فقط مسج تسجيل الخروج ومسج عمل السيرفر الذي يظهر 

     

    هذا مجموعة الاخطار التي تظهر في شريط logcat

    05-29 13:10:32.164 2432-2437/com.example.myapplication D/dalvikvm: GC_CONCURRENT freed 420K, 5% free 12218K/12807K, paused 13ms+12ms, total 48ms
    05-29 13:10:32.192 2432-2497/com.example.myapplication D/dalvikvm: GC_FOR_ALLOC freed 402K, 5% free 12196K/12807K, paused 16ms, total 16ms
    05-29 13:10:32.220 2432-2497/com.example.myapplication D/dalvikvm: GC_FOR_ALLOC freed 363K, 5% free 12214K/12807K, paused 10ms, total 10ms
    05-29 13:10:32.260 2432-2437/com.example.myapplication D/dalvikvm: GC_CONCURRENT freed 357K, 5% free 12241K/12807K, paused 11ms+3ms, total 21ms
    05-29 13:10:32.300 2432-2437/com.example.myapplication D/dalvikvm: GC_CONCURRENT freed 407K, 5% free 12262K/12871K, paused 12ms+1ms, total 23ms
    05-29 13:10:32.348 2432-2437/com.example.myapplication D/dalvikvm: GC_CONCURRENT freed 401K, 5% free 12290K/12871K, paused 11ms+11ms, total 34ms
    05-29 13:10:32.392 2432-2437/com.example.myapplication D/dalvikvm: GC_CONCURRENT freed 429K, 4% free 12390K/12871K, paused 12ms+1ms, total 27ms
    05-29 13:10:32.416 2432-2432/com.example.myapplication W/System.err: org.json.JSONException: No value for idtopic
    05-29 13:10:32.416 2432-2432/com.example.myapplication W/System.err:     at org.json.JSONObject.get(JSONObject.java:354)
    05-29 13:10:32.416 2432-2432/com.example.myapplication W/System.err:     at org.json.JSONObject.getString(JSONObject.java:510)
    05-29 13:10:32.416 2432-2432/com.example.myapplication W/System.err:     at com.example.myapplication.MyService$1.onResponse(MyService.java:48)
    05-29 13:10:32.416 2432-2432/com.example.myapplication W/System.err:     at com.example.myapplication.MyService$1.onResponse(MyService.java:41)
    05-29 13:10:32.416 2432-2432/com.example.myapplication W/System.err:     at com.android.volley.toolbox.JsonRequest.deliverResponse(JsonRequest.java:83)
    05-29 13:10:32.416 2432-2432/com.example.myapplication W/System.err:     at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:106)
    05-29 13:10:32.416 2432-2432/com.example.myapplication W/System.err:     at android.os.Handler.handleCallback(Handler.java:615)
    05-29 13:10:32.416 2432-2432/com.example.myapplication W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:92)
    05-29 13:10:32.416 2432-2432/com.example.myapplication W/System.err:     at android.os.Looper.loop(Looper.java:137)
    05-29 13:10:32.416 2432-2432/com.example.myapplication W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:4745)
    05-29 13:10:32.416 2432-2432/com.example.myapplication W/System.err:     at java.lang.reflect.Method.invokeNative(Native Method)
    05-29 13:10:32.416 2432-2432/com.example.myapplication W/System.err:     at java.lang.reflect.Method.invoke(Method.java:511)
    05-29 13:10:32.416 2432-2432/com.example.myapplication W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
    05-29 13:10:32.416 2432-2432/com.example.myapplication W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
    05-29 13:10:32.416 2432-2432/com.example.myapplication W/System.err:     at dalvik.system.NativeStart.main(Native Method)
        
        --------- beginning of /dev/log/system

    @Mohamd Imran

    • أعجبني 1
  5. @Mohamd Imran

    اهلا بك اخي الكريم

    شكرا على ردك في بداية الامر

    لقد قمت بعمل كلاس سيرفر حسب تعليماتك انته والاخ @عماره ميلوديله الشكر الجزيل ايضا

    وقمت بعمل كلاس فولي في كلاس السيرفر وقمت بعمل توقيت لكلاس السيرفر ايضا 

     Handler handler=new Handler();
            handler.postDelayed(new Runnable(){
                @Override
                public void run() {
                    run_loop();
                }
                },20000);

    ايضا قمت بادرج كلاس السيرفر كالتالي في الصفحة main 

     

      @Override
        public void onBackPressed() {
            Intent sr =new Intent(MainActivity.this,MyService.class);
            startService(sr);
            Toast.makeText(this, "Exit", Toast.LENGTH_SHORT).show();
            finish();
            super.onBackPressed();
        }
    

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

     

    هذا كلاس السيرفر كامل مرفق لكم 

     

    public class MyService extends Service {
        public MyService() {
        }
    
        @Override
        public void onCreate(){
            super.onCreate();
        }
    
        @Override
        public int onStartCommand(Intent intent,int flags,int startId){
            Toast.makeText(this, "Start myServis", Toast.LENGTH_LONG).show();
            run_loop();
            return START_STICKY;
        }
    
        public void run_loop(){
           final RequestQueue mRequestQueue;
            mRequestQueue = Volley.newRequestQueue(this);
            String url =  "http://0000000/testnet/android_register_login/ShowAllData.php";
            JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
                    new Response.Listener<JSONObject>() {
                        @Override
                        public void onResponse(JSONObject response) {
                            try {
                                JSONArray jsonArray = response.getJSONArray("data");
                                for (int i = 0; i < jsonArray.length(); i++) {
                                    JSONObject hit = jsonArray.getJSONObject(0);
                                    String idtopic =response  .getString("idtopic");
                                    int lastThread=Integer.parseInt(String.valueOf(idtopic));
                                    JSONObject jsonObject = null;
                                    Toast.makeText(MyService.this, lastThread+":", Toast.LENGTH_LONG).show();
    
                                }
    
                            } catch (JSONException e) {
                                e.printStackTrace();
                            }
                        }
                    }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    error.printStackTrace();
                }
            });
    
            mRequestQueue.add(request);
    
    
    
            Handler handler=new Handler();
            handler.postDelayed(new Runnable(){
                @Override
                public void run() {
                    run_loop();
                }
                },20000);
    
        }
    
    
    
    
    
        @Override
        public void onDestroy(){
            Toast.makeText(this, "Stopmyservci", Toast.LENGTH_LONG).show();
           super.onDestroy();
        }
    
        @Override
        public IBinder onBind(Intent intent) {
            // TODO: Return the communication channel to the service.
            throw new UnsupportedOperationException("Not yet implemented");
        }
    }

     

    مع العلم ان موقع الصفر هو IP كمبيوتري 

     

    وهذا صفحة php وهيا شغاله 100%100 قمت بتجربتها من خلال المتصفح ومن خلال رابط الفولي بعد الضغط عليه 

    <?php
    include ("connt.php");
    
    $sql="SELECT * FROM `topic` ORDER BY idtopic DESC";
    $result=mysqli_query($con,$sql);
    
    $data=array();
    while($row=mysqli_fetch_assoc($result)){
    //$data[]=$row;
    $data["data"][]=$row;
    }
    	
    			
    	echo json_encode($data);
    
    	
    	?>
    

     

    وهذا صورة من جدول البيانات الذي احاول الحصول على العدد منه او العمل عليه 

    https://gofile.io/d/n2uDuX

    لا اعلم ما هيا المشكله بتحديد في الامر

     

    اخي  @Mohamd Imran بعد ان احصل على العدد في توست مسج بقدر استخدم كود التنبيهات الذي قمت بمشاركته معي سابقا 

     

    مرفق لكم المشروع كامل ايضا لو امكنكم الاتطلاع عليه 

     

    Allproject.rar

    • أعجبني 1
  6. @عماره ميلوديتابعة الشرح كامل يوجد بعض الاختلاف بين ما يفعله ومشروعي ولكن هذا ليست المشكله حسب التعليقات على المقطع

    الطريقة هذا تشتغل على الاصدارت الاندرويد القديمة فقط 

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

  7. @عماره ميلودي

    هلا بك عزيزي

    والله ي اخوي انا مطور تطبيقات ما جديد ميه ب ميه ولكن خبرتي قليله جدا

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

    • أعجبني 1
  8. مرحبا جميعا ي اخوان

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

     

    لدي سورس كود مربوط بقاعدة البيانات mysql و ملفات php ويتصل من خلال مكتبة volley

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

     

     

  9. مرحبا اخواني الكرام

    اعذروني على ازعاجكم ولكني مطور تطبيقات جديد واحتاج المساعده بعض الاوقات..

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

    انا اطور تطبيق فيه نظام المواضيع + تعليقات الاعضاء طبعا كل موضوع يمتلك تعليقات خاصة به يعتمد الامر على ربط الموضوع ب التعليقات من خلال ID المرضوع هذا الاشيا مفهومه لدي الداله الشرطيه وكذا

    وانا استخدم قواعد بيانات نوع Mysql وملفات php واستخدام للاتصال بها مكتبة Volley 

    قاعدة بياناتي تحتوى على جدول المواضيع + جدول التعليقات +جدول  المستخدمون 

    طيب سوالي الحين لو فيه عضو ونقول هو العضو B وضع رد على موضوع العضو A مثلا كيف اقدر ارسل تنبيه للعضو A بوجود تعليق جديد على موضوعه ؟ كيف اقوم بعمل ذلك من خلال mysql و Volley

     

    ياليت لو فيه كود نموذج بسيط سهل فهمه 

    شكرا للجميع

     

    • أعجبني 1
  10. مرحبا اخواني الكرام

    اعمال على نظام خرائط وهو شغال ميه ميه ولكن توجد مشكله واجهتني بعد طلب اذونات تشفيل GPS وذهاب الى اعدادات الهاتف وتشغيل نظام GPS بطبيعة الحال اعمل رجوع الى الاكتفي من خلال زر الرجوع بعد تشغيل GPS المشكله بعد من ارجع للاكتفتي الاكتفي الاكتفي هنا لا يعمل تحديث الى نفسه بصراحه انا مطور تطبيقات جديد ولا اعلم اذا كان وصفي صحيح هاكذا ولكن الفكرة المطلوبه بعد تشغيل GPS ورجوع الى الاكتفتي  المفترض احصل على قيمة Longitude and latitude ولكن هذا لا يحدث من اجل ان يحدث احتاج الرجوع الى صفحة main activity واعادة الدخول الى هذا الاكتفتي حتى اجد القيمة

    الكود الي شغال عليه كالتالي:  

     

    public class SendMapLactiontest extends AppCompatActivity implements OnMapReadyCallback {
    
    
    
        private static final String TAG = SendMapLactiontest.class.getSimpleName();
        private GoogleMap mMap;
    
        LocationManager locationManager;
        private CameraPosition mCameraPosition;
    
    
        private PlacesClient mPlacesClient;
    
    
        private FusedLocationProviderClient mFusedLocationProviderClient;
    
        private final LatLng mDefaultLocation = new LatLng(-33.8523341, 151.2106085);
        private static final int DEFAULT_ZOOM = 15;
    
    
        private Location mLastKnownLocation;
    
    
        private static final String KEY_CAMERA_POSITION = "camera_position";
        private static final String KEY_LOCATION = "location";
    
    
        private static final int M_MAX_ENTRIES = 5;
    
        EditText textLatitude,textLongitude,lonTextView,lonTextView1;
        Button button,btn;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            if (savedInstanceState != null) {
                mLastKnownLocation = savedInstanceState.getParcelable(KEY_LOCATION);
                mCameraPosition = savedInstanceState.getParcelable(KEY_CAMERA_POSITION);
            }
    
            setContentView(R.layout.map_send_lcation);
            textLatitude=findViewById(R.id.textLatitude);
            textLongitude=findViewById(R.id.textLongitude);
            lonTextView =findViewById(R.id.tap_text1);
            lonTextView1 =findViewById(R.id.tap_text);
    
            String apiKey = getString(R.string.google_map_api_key);
            Places.initialize(getApplicationContext(), apiKey);
            mPlacesClient = Places.createClient(this);
    
            mFusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this);
    
            SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                    .findFragmentById(R.id.map);mapFragment.getMapAsync(this);
    
    
    
            if(!isLocationEnabled()) {
                AlertDialog.Builder builder = new AlertDialog.Builder(SendMapLactiontest.this);
                builder.setTitle("R.string.network_not_enabled")
                        .setMessage("R.string.open_location_settings")
                        .setPositiveButton("R.string.yes",
                                new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog, int id) {
                                        startActivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS));
    
                                    }
                                })
                        .setNegativeButton("R.string.cancel",
                                new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog, int id) {
                                        dialog.cancel();
                                        Intent imgListIntent = new Intent(SendMapLactiontest.this, AddNewItem.class);
                                        startActivity(imgListIntent);
                                        finish();
                                    }
                                });
                AlertDialog alert = builder.create();
                alert.show();
            }
        }
    
    
        @Override
        protected void onSaveInstanceState(Bundle outState) {
            if (mMap != null) {
                outState.putParcelable(KEY_CAMERA_POSITION, mMap.getCameraPosition());
                outState.putParcelable(KEY_LOCATION, mLastKnownLocation);
                super.onSaveInstanceState(outState);
            }
        }
    
    
    
        @Override
        public void onMapReady(GoogleMap map) {
            mMap = map;
            mMap.clear();
    
    
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    
                if (ActivityCompat.checkSelfPermission
                        (this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
                        &&
                        ActivityCompat.checkSelfPermission
                                (this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED)
                {
                    requestPermissions(new String[]{
                            Manifest.permission.ACCESS_COARSE_LOCATION,
                            Manifest.permission.ACCESS_FINE_LOCATION
                    }, 1); // 1 is requestCode
                    return;
    
                }
            }else{
    
    
            }
    
    
    
    
    
    
    
            getDeviceLocation();
            mMap.setMyLocationEnabled(true);
            mMap.getUiSettings().setMyLocationButtonEnabled(true);
    
    
    
    
    
    
    
        }
    
        protected boolean isLocationEnabled(){
            String le = Context.LOCATION_SERVICE;
            locationManager = (LocationManager) getSystemService(le);
            if(!locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){
    
                return false;
            } else {
    
                return true;
            }
        }
        @Override
        public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
            switch (requestCode) {
    
                case 1:
                    if (grantResults[0] != PackageManager.PERMISSION_GRANTED){
                        Toast.makeText(SendMapLactiontest.this,"PERMISSION_DENIED",Toast.LENGTH_SHORT).show();
                        Intent imgListIntent = new Intent(SendMapLactiontest.this, AddNewItem.class);
                        startActivity(imgListIntent);
                        finish();
                    }
                    else {
                        Toast.makeText(SendMapLactiontest.this,"PERMISSION_GRANTED",Toast.LENGTH_SHORT).show();
                        mMap.setMyLocationEnabled(true);
                        mMap.getUiSettings().setMyLocationButtonEnabled(true);
                        getDeviceLocation();
    
                        // permission granted do something
                    }
                    break;
            }
        }
    
        private void getDeviceLocation() {
                try {
                    Task<Location> locationResult = mFusedLocationProviderClient.getLastLocation();
                    locationResult.addOnCompleteListener(this, new OnCompleteListener<Location>() {
    
                        @Override
                        public void onComplete(@NonNull Task<Location> task) {
                            if (task.isSuccessful()) {
                                mLastKnownLocation = task.getResult();
                                try {
                                    if (mLastKnownLocation==null){
                                        isLocationEnabled();
    
    
                                    }else {
    
                                textLatitude.setText("" + mLastKnownLocation.getLatitude());
                                textLongitude.setText("" + mLastKnownLocation.getLongitude());
                                    if (mLastKnownLocation != null) {
    
                                        mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(
                                                new LatLng(mLastKnownLocation.getLatitude(),
                                                        mLastKnownLocation.getLongitude()), DEFAULT_ZOOM));
    
                                    }
                                    }
                                } catch (Exception e) {
                                    e.printStackTrace();
                                }
    
    
                            } else {
    
                                Log.d(TAG, "Current location is null. Using defaults.");
                                Log.e(TAG, "Exception: %s", task.getException());
                                mMap.moveCamera(CameraUpdateFactory
                                        .newLatLngZoom(mDefaultLocation, DEFAULT_ZOOM));
                                mMap.getUiSettings().setMyLocationButtonEnabled(false);
    
    
                            }
                        }
                    });
    
                } catch (SecurityException e) {
                    Log.e("Exception: %s", e.getMessage());
                }
    
        }
    
    
    
    
    
    }

    اتمنى من الي يعرف حل للمشكلة يساعدني 

    • أعجبني 1
  11. السلام عليكم

    انا مطور تطبيقات جديد واحاول اضافة عرض الصور عن طريق SliderLayout 

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

    اذا ممكن احد يساعدني اكون شاكر له 

    هذا سورس كود الصفحة الاساسية 

    
    public class SlidShowMain extends AppCompatActivity {
        SliderLayout sliderLayout;
        private List<SlidShowListData> list_dataList;
    
        private JsonArrayRequest request;
        private RequestQueue requestQueue;
    TextView textView;
        private static final String HI = "https://uniqueandrocode.000webhostapp.com/hiren/horizontal/lpimgdata.php";
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.slide_show_new);
    
    textView = (TextView)findViewById(R.id.textView);
            sliderLayout = (SliderLayout) findViewById(R.id.imageSlider);
            sliderLayout.setIndicatorAnimation(SliderLayout.Animations.WORM);
    
            list_dataList=new ArrayList<>();
            sliderLayout.setScrollTimeInSec(1);
    
            SliderView sliderView = new SliderView(this);
            setSliderViews();
    
    
        }
    
        private void setSliderViews() {
            request = new JsonArrayRequest(HI, new Response.Listener<JSONArray>() {
                @Override
                public void onResponse(JSONArray response) {
    
                    JSONObject jsonObject = null;
                    for (int i = 0; i < response.length(); i++) {
                        try {
                            jsonObject = response.getJSONObject(i);
                            SlidShowListData listData = new SlidShowListData(jsonObject.getString("imageurl"),jsonObject.getString("id"));
                            String name = jsonObject.getString("id");
                            textView.append(name + ", "  +"\n\n");
                            list_dataList.add(listData);
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                    setupdata(list_dataList);
    
    
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
    
                }
            });
    
    
            requestQueue = Volley.newRequestQueue(this);
            requestQueue.add(request);
    
        }
    
        private void setupdata(List<SlidShowListData> list_dataList) {
    
            for (int i = 0; i <= 4; i++) {
                final SlidShowListData ld = list_dataList.get(i);
                SliderView view = new SliderView(this);
                view.setImageUrl(ld.getImageurl());
    
                view.setImageScaleType(ImageView.ScaleType.CENTER_CROP);
                final int finalI = i;
                sliderLayout.addSliderView(view);
    
            }
        }
    }
    

     

    وهذا سورس كود الصفحة الثانية 

    class SlidShowListData {
        private String imageurl;
        private String id;
        public SlidShowListData(String imageurl,String id) {
            this.imageurl = imageurl;
            this.id = id;
        }
    
        public String getImageurl() {
            return imageurl;
        }
        public String getId() {
            return id;
        }
    }

     

    وهذا ملف XML

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".SlidShowMain">
    
        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"/>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="50dp"
            android:gravity="center">
    
    
            <androidx.cardview.widget.CardView
                android:layout_width="330dp"
                android:layout_height="250dp"
                android:layout_centerInParent="true"
                android:layout_margin="30dp"
                app:cardCornerRadius="8dp">
    
                <com.smarteist.autoimageslider.SliderLayout
                    android:id="@+id/imageSlider"
                    android:layout_width="match_parent"
                    android:layout_height="250dp"
                    android:layout_alignParentTop="true" >
    
                </com.smarteist.autoimageslider.SliderLayout>
    
            </androidx.cardview.widget.CardView>
    
    
        </LinearLayout>
    
    
    
    </RelativeLayout>

     

     

        implementation 'com.github.smarteist:autoimageslider:1.1.1'
        implementation 'com.github.bumptech.glide:glide:4.7.1'
        implementation 'com.android.volley:volley:1.1.0'
        implementation 'com.android.support:cardview-v7:28.1.1'

    ياليت الي يعرف كيف ممكن ننقل ID من خلال الضغط على صورة المحددة يساعدني بتعديل على الكود المرفق ولكم جزيل الشكر

    • أعجبني 1
×
×
  • أضف...