نمایش نتایج 1 تا 3 از 3

نام تاپیک: کار با broad cast reciver و alarm manager

  1. #1
    کاربر دائمی
    تاریخ عضویت
    آبان 1394
    محل زندگی
    تهران
    پست
    179

    Question کار با broad cast reciver و alarm manager

    سلام دوستان من در قسمتی از پروژه می خوام که در background برنامه , یه سری اطلاعات برن سمت سرور و این در یه بازه زمانی مثلا یه ثانیه یه ثانیه باشه.
    این کد رو نوشتم که اجرا نمی شه یعنی اصلا در تابع onrecieve()نمیره که بخواد به سمت سرور درخواست بده ...
    کدها رو میگذارم میشه لطفا راهنمایی کنید ...


    Intent intent = new Intent(getContext(), ApiManager.class);
    //get intent extras
    PendingIntent pendingIntent = PendingIntent.getBroadcast(getContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    AlarmManager am = (AlarmManager)getContext().getSystemService(Contex t.ALARM_SERVICE);
    am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 1000, 1000, pendingIntent);


    این کدها در یه فرگمنت هست که باید بگه هر ثانیه یه بار برو تو کلاس ApiManager و درخواست بده

    public class ApiManager extends BroadcastReceiver {
    public ApiManager() {
    interviewPartner = new InterviewPartner();
    deliveryPartner = new DeliveryPartner();

    deliveryPartners = new ArrayList<DeliveryPartner>();
    deliveryBikes = new ArrayList<DeliveryBike>();

    }

    @Override
    public void onReceive(Context context, Intent intent) {
    setReportOfPartnerInServer();
    }

    private void setReportOfPartnerInServer() {
    //make object in interviewpartner
    makeJsonObjectsToSend(deliveryPartner);
    //request
    deliveryPartner.jsonObjectRequest = new JsonObjectRequest(Request.Method.POST,
    "http://192.168.43.206/project-server/Request.php?action=ReportDeliveryLocation",
    deliveryPartner.jsonObject,
    new Response.Listener<JSONObject>() {
    @Override
    public void onResponse(JSONObject response) {
    System.out.println("Response:" + response);
    try {
    actionType = ActionType.REPORT_LOCATION;
    responseListener.onSuccesResponse(response);
    } catch (JSONException e) {
    e.printStackTrace();
    }
    }
    }, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
    System.out.println("Response:" + error);
    actionType = ActionType.REPORT_LOCATION;
    responseListener.onErrorResponse(error);
    }
    });
    requestTimeOut(deliveryPartner.jsonObjectRequest);
    G.getInstance().addToRequestQueue(deliveryPartner. jsonObjectRequest);
    }



    این کدها هم در کلاس apimanager هست که از braodcastreciver ارث بری میکنه و میگه که یه تابع رو باید در onrecieve () اجرا کنه ...
    مسئله اینجاست که اصلا در onrecieve نمیره
    من رو از راهنمایی خودتون دریغ نفرمایید دوستان عزیز ...متشکرم

  2. #2
    کاربر دائمی
    تاریخ عضویت
    آبان 1394
    محل زندگی
    تهران
    پست
    179

    نقل قول: کار با broad cast reciver و alarm manager

    سلام
    باید در مانیفست این کد رو اضافه می کردم ..

    <receiver
    android:name="com.example.parisa.deliverybikeproje ct.Activities.Model.ApiManager"
    android:exported="true" >
    <intent-filter>
    <action android:name="android.intent.action.NOTIFY" />
    </intent-filter>
    </receiver>

    لی حالا یه مسئله ای هست که وقتی میره تو recieve همه پراپر تی ها رو نال میکنه ...:(

  3. #3
    کاربر دائمی
    تاریخ عضویت
    آبان 1394
    محل زندگی
    تهران
    پست
    179

    نقل قول: کار با broad cast reciver و alarm manager

    سلام دوستان
    من در یه فرگمنت که موقعیت جغرافیایی رو میگیره (البته گرفتن موقعیت جغرافیایی در یک کلاس دیگه هست که در فرگمنت کال می کنمش ) اومدم گفتم زمانیکه lat , lng رو گرفتی , برو یه کلاس به نامdeliverypartner رو مقدار دهی کن و بعد از یه ثانیه برو تو کلاس apimanager که علاوه بر انجام دادن همه درخواست ها به سرور ...میاد یه متد onrecieve () هم میگیره که داده ها یی رو که در deliverypartner داره باید ببره سمت سرور آپدیت کنه !!! در سمت سرور مقدار دهی میکنم و مقدار دهی هم میشه ولی وقتی میره تو recieve همه getter /setter های مربوط به کلاس deliverypartner که پر بود خالی میشه حتی listener هم نال میشه ...لطفا راهنمایی کنید از چی میتونه باشه ... چه حدسی می زنید ...
    کدای مربوط به فرگمنت :

    public class MapFragment extends Fragment implements LocationSource.OnLocationChangedListener, ApiManager.onResponseListener {
    private MapView mapView;
    private GoogleMap googleMap;
    private LatLng latLng = new LatLng(0.0, 0.0);
    private View view;
    private GPSLocation gpsLocation;
    private double latitude, longitude;
    private TextView txtSourceAddress;
    private GoogleApiReader googleApiReader;
    private ProgressBar progressLoadData;
    private ImageView imgMarker;
    private LinearLayout progressLayout;
    private Thread thread;
    private boolean FirstLevel = true;
    private ApiManager apiManager = new ApiManager();


    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    view = inflater.inflate(R.layout.map_fragment, container, false);//inflate and return layout
    init();//init controls
    showAndHideImageFlag(false);//gone flag
    mapView.onCreate(savedInstanceState);
    mapView.onResume();// needed to get the map to display immediately
    try {
    MapsInitializer.initialize(getActivity().getApplic ationContext());//init map, get activity
    } catch (Exception e) {
    e.printStackTrace();
    }
    googleMap = mapView.getMap();//set googlemap with map view contain
    mapView.getMapAsync(new OnMapReadyCallback() {
    @Override
    public void onMapReady(GoogleMap map) {
    googleMap = map;
    googleMap.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() {
    @Override
    public void onCameraChange(CameraPosition cameraPosition) {
    if (FirstLevel) {//first get current location
    //show current location in this moment on map
    gpsLocation = new GPSLocation(getContext(), getActivity());
    if (gpsLocation.canGetLocation()) {
    latitude = gpsLocation.getLatitude();
    longitude = gpsLocation.getLongitude();
    onLocationChanged(gpsLocation.getLocation());
    convertLatLngToAddress();
    //alarm manager work, get lat/lng,get date/time,fire recieve method
    workingAlaramManager();
    FirstLevel = false;
    }
    } else {//camera location
    showHidePrograssbar(true);
    showAndHideLayout(true);
    showAndHideImageFlag(false);
    txtSourceAddress.setText(R.string.get_info_progres s);
    getLatLngFromCameraMoving();//get camera lat lng
    convertLatLngToAddress();//convert camera got latlng to address
    }
    }
    });
    }
    });
    return view;
    }

    //Alarm Manager work
    private void workingAlaramManager() {
    apiManager.deliveryPartner.setDeliveryLatitude(lat itude);//get latitude
    apiManager.deliveryPartner.setDeliveryLongitude(lo ngitude);//get longitude
    apiManager.deliveryPartner.dateTime();//get date time *i dont need address yet*
    //
    //enable onRecieve method in broadcast reciever to report and get action in listener
    //
    apiManager.setResponseListener(this);
    Intent intent = new Intent(G.context, ApiManager.class);
    //get intent extras
    PendingIntent pendingIntent = PendingIntent.getBroadcast(G.context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    AlarmManager am = (AlarmManager) G.context.getSystemService(Context.ALARM_SERVICE);
    am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 1000, 1000, pendingIntent);
    }
    دهای مربوط به کلاس api manager

    public class ApiManager extends BroadcastReceiver {
    public ApiManager() {
    interviewPartner = new InterviewPartner();
    deliveryPartner = new DeliveryPartner();
    deliveryPartners = new ArrayList<DeliveryPartner>();
    deliveryBikes = new ArrayList<DeliveryBike>();
    }
    public ApiManager(Activity context) {
    this.context = context;
    interviewPartner = new InterviewPartner();
    deliveryPartner = new DeliveryPartner();
    responseListener = (onResponseListener) context;

    deliveryPartners = new ArrayList<DeliveryPartner>();
    deliveryBikes = new ArrayList<DeliveryBike>();
    }
    private Context context;
    public InterviewPartner interviewPartner;
    public DeliveryPartner deliveryPartner;
    private onResponseListener responseListener;
    private ActionType actionType;
    private ArrayList<DeliveryPartner> deliveryPartners;
    private ArrayList<DeliveryBike> deliveryBikes;

    @Override
    public void onReceive(Context context, Intent intent) {
    setReportOfPartnerInServer();
    }
    private void setReportOfPartnerInServer() {
    //make object in interviewpartner
    makeJsonObjectsToSend(deliveryPartner);
    //request
    deliveryPartner.jsonObjectRequest = new JsonObjectRequest(Request.Method.POST,
    "http://192.168.43.206/project-server/Request.php?action=ReportDeliveryLocation",
    deliveryPartner.jsonObject,
    new Response.Listener<JSONObject>() {
    @Override
    public void onResponse(JSONObject response) {
    System.out.println("Response:" + response);
    try {
    actionType = ActionType.REPORT_LOCATION;
    responseListener.onSuccesResponse(response);
    } catch (JSONException e) {
    e.printStackTrace();
    }
    }
    }, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
    System.out.println("Response:" + error);
    actionType = ActionType.REPORT_LOCATION;
    responseListener.onErrorResponse(error);
    }
    });
    requestTimeOut(deliveryPartner.jsonObjectRequest);
    G.getInstance().addToRequestQueue(deliveryPartner. jsonObjectRequest);
    }

    دارم دیوونه همیشم ....:(
    چرا نال میشه....؟؟؟

تاپیک های مشابه

  1. کار با Alarm Manager و نمایش Notification در هر چند ثانیه
    نوشته شده توسط CodeforLife در بخش Android Studio
    پاسخ: 0
    آخرین پست: دوشنبه 27 دی 1395, 16:14 عصر
  2. کار با فلش Flash Manager
    نوشته شده توسط sg.programmer در بخش C#‎‎
    پاسخ: 9
    آخرین پست: یک شنبه 26 اردیبهشت 1389, 11:37 صبح
  3. کار با action manager
    نوشته شده توسط raeisi_15494 در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 5
    آخرین پست: دوشنبه 24 اسفند 1388, 01:01 صبح
  4. سوال: نحوه کار با Bandwidth Management and Firewall
    نوشته شده توسط acilios در بخش شبکه و Networking‌
    پاسخ: 1
    آخرین پست: یک شنبه 25 بهمن 1388, 19:28 عصر
  5. مبتدی: کار با Sql Server Management
    نوشته شده توسط iran2008 در بخش SQL Server
    پاسخ: 1
    آخرین پست: چهارشنبه 06 آبان 1388, 07:49 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •