alexandre9009

توسعه دهنده اندروید
  • تعداد ارسال ها

    4
  • تاریخ عضویت

  • آخرین بازدید

اعتبار در انجمن

0 Neutral

درباره alexandre9009

  • درجه
    Newbie
  1. نه کد ها همه درست هست ، سرویس به درستی کار میکنه . یک مشکل اساسی دگ : من یک مقدار رو بوسیله edittext در main activity. از کاربر میگیرم و برای سرویس ارسال میکنم . سرویس اون مقدار رو دریافت میکنه و در شرط if قرار میده و زمانی که داده ارسالی من به اون مقدار رسید اینترنت رو قطع میکنه . حالا اگر سرویس ران بشه و اکتیویتی سازنده اش destroy. بهش سرویس ریستارت میشه و مقدار null رو توی شرط if میزاره و برنامه کرش میکنه . راهی هست که سرویس پس از destroy شدن برنامه ریستارت نشه ؟ من خیلی تحقیق کردم و گفتن باید return START_STICKY; به return START_NOT_STICKY; تبدیل کنم ، با این کار سرویس ریستارت نمیشه ولی انگار خود سرویس هم destroy میشه چون هیچکاری نمیکنه . چکار باید بکنم ؟؟؟؟ بعضی ها گفتن از broadcast هم میشه بجای سرویس استفاده کرد و خیلی بهتره . میتونین کمکم کنین که broadcast بنویسم که حجم داده ارسالی و دریافتی رو مانیتور کنه و اگر به یک مقدار خاصی رسید بیاد و یک اکتیویتی رو ران کنه ؟ ( در بکگراند گوشی کار کنه و با بستن برنامه به کارش ادامه بده )
  2. یک کانتکس اولش اضافه کردم ، ارورش رفت ولی یک ارور دگ میده Context context; کجای کد زیر اشتباه هستش ؟؟؟ package ir.alexandre9009.service; import android.app.AlertDialog; import android.app.Service; import android.content.Context; import android.content.Intent; import android.net.TrafficStats; import android.net.wifi.WifiManager; import android.os.IBinder; import android.widget.Toast; public class FirstService extends Service{ public static long mStartRX ; public static long mStartTX ; Context context; @Override public IBinder onBind(Intent arg0) { return null; } @Override public int onStartCommand(Intent intent, int flags, int startId) { Toast.makeText(this,"FirstService Started!",Toast.LENGTH_LONG).show(); mStartTX=0; mStartRX=0; mStartRX = TrafficStats.getTotalRxBytes(); mStartTX = TrafficStats.getTotalTxBytes(); if (mStartRX==5) { WifiManager wifiManager = (WifiManager)this.context.getSystemService(Context.WIFI_SERVICE); wifiManager.setWifiEnabled(false); } return START_STICKY; } } @Override public void onDestroy() { TrafficStats.clearThreadStatsTag(); Toast.makeText(this,"FirstService Stoped",Toast.LENGTH_LONG).show(); mStartTX=0; mStartRX=0; super.onDestroy(); } }
  3. خب ممنونم ، از راهنماییتون ، من سرویس رو فعال کردم و به خوبی کار میکنه ، حالا سوال من اینجاست میخوام وقتی متغییری که حجم دانلود ان به یک مقدار مشخص رسید بیاد و وای فای رو خاموش یا روشن کنه . کد اش رو پیدا کردم هرکار میکنم کانتکس ارور میده package ir.alexandre9009.service; import android.app.AlertDialog; import android.app.Service; import android.content.Context; import android.content.Intent; import android.net.TrafficStats; import android.net.wifi.WifiManager; import android.os.IBinder; import android.widget.Toast; public class FirstService extends Service{ public static long mStartRX ; public static long mStartTX ; @Override public IBinder onBind(Intent arg0) { return null; } @Override public int onStartCommand(Intent intent, int flags, int startId) { Toast.makeText(this,"FirstService Started!",Toast.LENGTH_LONG).show(); mStartTX=0; mStartRX=0; mStartRX = TrafficStats.getTotalRxBytes(); mStartTX = TrafficStats.getTotalTxBytes(); if (mStartRX==5) { WifiManager wifiManager = (WifiManager)this.context.getSystemService(Context.WIFI_SERVICE); wifiManager.setWifiEnabled(false); } return START_STICKY; } } @Override public void onDestroy() { TrafficStats.clearThreadStatsTag(); Toast.makeText(this,"FirstService Stoped",Toast.LENGTH_LONG).show(); mStartTX=0; mStartRX=0; super.onDestroy(); } }
  4. سلام دوستان من یه پروژه درسی دارم باید تا فردا برای استاد بفرستم ، خیلی هم راجبش تحقیق کردم ، یک نرم افزار اندروید باید بنویسم که با زدن یک دکمه شروع به مانیتورینگ حجم دیتای ارسالی و دریافتی از اینترنت کنه ، خب توی اینترنت سورس کد این بخش رو پیدا کردم MainActivity : package com.authorwjf; import android.app.Activity; import android.app.AlertDialog; import android.net.TrafficStats; import android.os.Bundle; import android.os.Handler; import android.widget.TextView; public class Main extends Activity { private Handler mHandler = new Handler(); private long mStartRX = 0; private long mStartTX = 0; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mStartRX = TrafficStats.getTotalRxBytes(); mStartTX = TrafficStats.getTotalTxBytes(); if (mStartRX == TrafficStats.UNSUPPORTED || mStartTX == TrafficStats.UNSUPPORTED) { AlertDialog.Builder alert = new AlertDialog.Builder(this); alert.setTitle("Uh Oh!"); alert.setMessage("Your device does not support traffic stat monitoring."); alert.show(); } else { mHandler.postDelayed(mRunnable, 1000); } } private final Runnable mRunnable = new Runnable() { public void run() { TextView RX = (TextView)findViewById(R.id.RX); TextView TX = (TextView)findViewById(R.id.TX); long rxBytes = TrafficStats.getTotalRxBytes()- mStartRX; RX.setText(Long.toString(rxBytes/1048576)); long txBytes = TrafficStats.getTotalTxBytes()- mStartTX; TX.setText(Long.toString(txBytes/1048576)); mHandler.postDelayed(mRunnable, 1000); } }; } main.xml : <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="16sp" android:textStyle="bold" android:gravity="center" android:paddingBottom="20dip" android:text="Traffic Stats Demo" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="14sp" android:textColor="#00ff00" android:gravity="center" android:text="Transmit MB" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="14sp" android:gravity="center" android:text="0" android:id="@+id/TX"/>" <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="14sp" android:textColor="#ff0000" android:gravity="center" android:text="Receive MB" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="14sp" android:gravity="center" android:text="0" android:id="@+id/RX"/> </LinearLayout> خب این نرم افزار خوب کار میکنه و دیتای ارسالی و دریافتی کل شبکه رو مانیتور میکنه ، اما یک مشکل داره وقتی برنامه رو میبندم و دوباره بازش میکنم کل مقادیر صفر میشه . تحقیق کردم و دیدم که باید از سرویس ها استفاده کنیم که بعد از بسته شدن نرم افزار هم بازم دیتا رو مانیتور کنه . این قسمتش رو نمیدونم که چجوری براش سرویس بنویسم ... ممنون میشم کمکم کنین ، و اینکه اگه سرویس نوشتیم چطور توی statusbar میتونیم با اینکه برنامه بسته هستش مقادیر رو مشاهده کنیم. خواهش میکنم راهنماییم کنین