2013-11-14 3 views
0

Я хочу постоянно проверять системные сети Android таким образом, но я думаю, что в этой форме неверно, моя служба должна обновиться, если доступно подключение к Wi-Fi или другой сети.Проверить сеть Android непрерывно

public class ObjService extends Service{ 

    private final static int NOTIFICATION=1; 
    public static boolean process; 
    private NotificationManager state; 
    private NotificationCompat.Builder objBuilder; 

    public void onCreate(){ 
    process=true; 
    state=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);  
    objBuilder = new NotificationCompat.Builder(this) 
      .setContentTitle("Title") 
      .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.launchimg)) 
      .setSmallIcon(R.drawable.notification_img); 



    Thread checker=new Thread(){//1 
    public void run(){//2 
    while (process){//3 
    if (verifyConnection()){//4 
     updateNotificationService("Service is available"); 
    }else{ 
    updateNotificationService("Service is not available"); 
    }//4 
    try{ 
     Thread.sleep(6000); 
    }catch(InterruptedException e){ 
     //..printLog.. 
    } 
    }//3 
    };//2 

};//1 
checker.start(); 
. 
. 
. 

моя функция verifyConnection() является:

public boolean verifyConnection() { 

     boolean flag = true; 

     ConnectivityManager connec = (ConnectivityManager)this.getSystemService(Context.CONNECTIVITY_SERVICE); 

     NetworkInfo[] net = connec.getAllNetworkInfo(); 

     if (!net[0].isAvailable() && !net[1].isAvailable()) 
     { 
      flag = false; 

     } 
     return flag; 

    } 

updateNotificationService() является:

public void updateNotificacionService(String arg){ 

objBuilder.setContentText(arg) 
.setWhen(System.currentTimeMillis()); 

state.notify(NOTIFICATION, objBuilder.build()); 
} 
+0

P.S Извините мой английский, если это не так. –

+0

использовать [this] (http://viralpatel.net/blogs/android-internet-connection-status-network-change/) ссылка для проверки состояния сети –

+0

используйте эту ссылку -http: //stackoverflow.com/questions/14634074/notify-activity-of-network-change-android Надеюсь, это вам поможет! –

ответ

3

Попробуйте код, приведенный ниже, чтобы слушать, существует ли соединение, если состояние соединения изменяет его уведомляет об этом изменение,

public class NetworkStateReceiver extends BroadcastReceiver { 
public void onReceive(Context context, Intent intent) { 
super.onReceive(context, intent); 
Log.d("app","Network connectivity change"); 
if(intent.getExtras()!=null) { 
    NetworkInfo ni=(NetworkInfo) intent.getExtras().get(ConnectivityManager.EXTRA_NETWORK_INFO); 
    if(ni!=null && ni.getState()==NetworkInfo.State.CONNECTED) { 
     Log.i("app","Network "+ni.getTypeName()+" connected"); 
    } 
} 
if(intent.getExtras().getBoolean(ConnectivityManager.EXTRA_NO_CONNECTIVITY,Boolean.FALSE)) { 
     Log.d("app","There's no network connectivity"); 
} 
} 
} 

Тогда для манифеста,

<receiver android:name=".NetworkStateReceiver"> 
    <intent-filter> 
     <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 
    </intent-filter> 
</receiver> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

Ссылка: Internet listener Android example

+1

Большое спасибо за ваш ответ. Это проще, чем поток, выполняющийся непрерывно. –

Смежные вопросы