Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
jenyakirmiza
1 / 1 / 0
Регистрация: 13.02.2013
Сообщений: 90
#1

Подружить receiver и service - Программирование Android

16.07.2013, 01:24. Просмотров 1232. Ответов 8
Метки нет (Все метки)

вообщем такая ситуация. У меня есть сервис который каждые 10 минут отправляет данные на сервер.
Мне нужно сделать так чтоб этот сервис работал правильно. То есть нужно отследить если есть соединение с инетом или нет, нужно сделать как-то по умному, тут уже гавнокод не прокатит.

вот класс сервиса:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
package com.example.androidhive;
 
import java.util.ArrayList;
import java.util.List;
 
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONException;
import org.json.JSONObject;
 
import android.app.ProgressDialog;
import android.app.Service;
import android.content.Intent;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.IBinder;
import android.os.Looper;
import android.os.Message;
import android.os.Process;
import android.util.Log;
import android.widget.Toast;
 
public class GPSService extends Service {
    // Progress Dialog
        private Double lat=0.0;
        private Double lon=0.0;
        JSONParser jsonParser = new JSONParser();
 
        // url to create new product
        private static String url_create_product = "http://www.wiseguys.com.ua/android_connect/create_product.php";
 
        // JSON Node names
        private static final String TAG_SUCCESS = "success";
      private Looper mServiceLooper;
      private ServiceHandler mServiceHandler;
 
      // Handler that receives messages from the thread
      private final class ServiceHandler extends Handler {
          public ServiceHandler(Looper looper) {
              super(looper);
          }
          @Override
          public void handleMessage(Message msg) {
              // Normally we would do some work here, like download a file.
              // For our sample, we just sleep for 5 seconds.
              while(true){
                  
              _getLocation();
              String coord1 = lat.toString();           
                String coord2 = lon.toString();
                // Building Parameters
                List<NameValuePair> params = new ArrayList<NameValuePair>();
                params.add(new BasicNameValuePair("coord1", coord1));
                params.add(new BasicNameValuePair("coord2", coord2));
                params.add(new BasicNameValuePair("description", "1"));
 
                // getting JSON Object
                // Note that create product url accepts POST method
                JSONObject json = jsonParser.makeHttpRequest(url_create_product,
                        "POST", params);
                
                // check log cat fro response
                Log.d("Create Response", json.toString());
 
                // check for success tag
                try {
                    int success = json.getInt(TAG_SUCCESS);
 
                    if (success == 1) {
                        // successfully created product
                    /*  Intent i = new Intent(getApplicationContext(), AllProductsActivity.class);
                        startActivity(i);
                        finish();
                        */
                        
                    } else {
                        // failed to create product
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
 
              long endTime = System.currentTimeMillis() + 60*10*1000;
              while (System.currentTimeMillis() < endTime) {
                  synchronized (this) {
                      try {
                          wait(endTime - System.currentTimeMillis());
                      } catch (Exception e) {
                      }
                  }
              }
              }
          }
          
          
      }
 
      @Override
      public void onCreate() {
        // Start up the thread running the service.  Note that we create a
        // separate thread because the service normally runs in the process's
        // main thread, which we don't want to block.  We also make it
        // background priority so CPU-intensive work will not disrupt our UI.
        HandlerThread thread = new HandlerThread("ServiceStartArguments",
                Process.THREAD_PRIORITY_BACKGROUND);
        thread.start();
        
        // Get the HandlerThread's Looper and use it for our Handler 
        mServiceLooper = thread.getLooper();
        mServiceHandler = new ServiceHandler(mServiceLooper);
      }
 
      @Override
      public int onStartCommand(Intent intent, int flags, int startId) {
          Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show();
 
          // For each start request, send a message to start a job and deliver the
          // start ID so we know which request we're stopping when we finish the job
          Message msg = mServiceHandler.obtainMessage();
          msg.arg1 = startId;
          mServiceHandler.sendMessage(msg);
          
          // If we get killed, after returning from here, restart
          return START_STICKY;
      }
 
      @Override
      public IBinder onBind(Intent intent) {
          // We don't provide binding, so return null
          return null;
      }
      
      @Override
      public void onDestroy() {
        Toast.makeText(this, "service done", Toast.LENGTH_SHORT).show(); 
      }
      private void _getLocation() {
            // Get the location manager
            LocationManager locationManager = (LocationManager) 
                    getSystemService(LOCATION_SERVICE);
            Criteria criteria = new Criteria();
            String bestProvider = locationManager.getBestProvider(criteria, false);
            Location location = locationManager.getLastKnownLocation(bestProvider);
            LocationListener loc_listener = new LocationListener() {
 
                public void onLocationChanged(Location l) {}
 
                public void onProviderEnabled(String p) {}
 
                public void onProviderDisabled(String p) {}
 
                public void onStatusChanged(String p, int status, Bundle extras) {}
            };
            locationManager
                    .requestLocationUpdates(bestProvider, 0, 0, loc_listener);
            location = locationManager.getLastKnownLocation(bestProvider);
            try {
                lat = location.getLatitude();
                lon = location.getLongitude();
            } catch (NullPointerException e) {
                lat = -1.0;
                lon = -1.0;
            }
        }
    }
как видите он будет работать бессконечно как служба, пока его не закрыть средствами диспетчера задач.
И у меня есть ресивер:

манифест:

XML
1
2
3
4
5
6
<receiver android:name=".ReceiverName" >
    <intent-filter >
        <action android:name="android.net.wifi.STATE_CHANGE" />
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
    </intent-filter>
</receiver>

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package com.example.androidhive;
 
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
 
public class NetworkChangeReceiver extends BroadcastReceiver {
 
      @Override
      public void onReceive(final Context context, final Intent intent) {
        final ConnectivityManager connMgr = (ConnectivityManager) 
        context.getSystemService(Context.CONNECTIVITY_SERVICE);
 
        final android.net.NetworkInfo wifi = 
        connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
 
        final android.net.NetworkInfo mobile = 
        connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
 
        if (wifi.isAvailable()) {
          //Do something
        if (mobile.isAvailable()) {
          //Do something else
        }
      }
    }
}
вопрос: как их подружить? вот к примеру ресивер сработает, как я сообщу сервису что ему нужно поставить паузу и потом когда появится инет опять продолжать работу? можно ли такое сделать и как.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.07.2013, 01:24     Подружить receiver и service
Посмотрите здесь:

AlarmManager и Service or Receiver? - Программирование Android
Целый день искал, но нифига не нашел( то что нашел помогло тоолько частично). Суть вот в чем, у меня есть AlarmManeger как уже всем и так...

Динамический Receiver в Service перестаёт принимать сообщения - Программирование Android
В классе, который наследуется от Service определен BroadcastReceiver. Когда ловим сообщение о изменении состояния подключения к сети, то...

Receiver - Программирование Android
Добрый день уважаемые форумчане! Помогите разобраться, на сколько я понял receiver нужен для прослушки широковещателных сообщений, т.е к...

WhatsApp call receiver - Программирование Android
После появления звонков можно ли как определить начало и конец звонка как в gsm?

Receiver не принимает сообщения - Программирование Android
Привет. Почему-то receiver не принимает системные броадкасты, можешь какая-то ошибка в моей писанине, а ее &quot;замыленым&quot; взглядом не вижу. ...

Как вызвать Notification в Broadcast Receiver? - Программирование Android
нужно чтобы по событию в классе Broadcast Receiver, а точнее в методе onReceive() запустить метод уведомления например такое...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
16.07.2013, 01:30     Подружить receiver и service #2
bindService
jenyakirmiza
1 / 1 / 0
Регистрация: 13.02.2013
Сообщений: 90
16.07.2013, 11:25  [ТС]     Подружить receiver и service #3
Цитата Сообщение от V0v1k Посмотреть сообщение
можете дать хоть один пример использования bind, с документации я так прямо не понимаю.
jenyakirmiza
1 / 1 / 0
Регистрация: 13.02.2013
Сообщений: 90
18.07.2013, 13:28  [ТС]     Подружить receiver и service #4
Цитата Сообщение от V0v1k Посмотреть сообщение
вот как я изменил сервис и добавил туда IBinder

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
package com.http.gps;
 
import java.util.ArrayList;
import java.util.List;
 
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONException;
import org.json.JSONObject;
 
import android.app.Service;
import android.content.Intent;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Binder;
import android.os.Bundle;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.IBinder;
import android.os.Looper;
import android.os.Message;
import android.os.Process;
import android.util.Log;
import android.widget.Toast;
 
public class GPSService extends Service {
    
    public class LocalBinder extends Binder {
        public GPSService getService() {
            return GPSService.this;
        }
    }
    // Progress Dialog
        private Double lat=0.0;
        private Double lon=0.0;
        JSONParser jsonParser = new JSONParser();
 
        // url to create new product
        private static String url_create_product = "http://www.wiseguys.com.ua/android_connect/create_product.php";
 
        // JSON Node names
        private static final String TAG_SUCCESS = "success";
      private Looper mServiceLooper;
      private ServiceHandler mServiceHandler;
 
      // Handler that receives messages from the thread
      private final class ServiceHandler extends Handler {
          public ServiceHandler(Looper looper) {
              super(looper);
          }
          @Override
          public void handleMessage(Message msg) {
              // Normally we would do some work here, like download a file.
              // For our sample, we just sleep for 5 seconds.
              int k=0;
              while(true){
                  k++;
              _getLocation();
              String coord1 = lat.toString();           
                String coord2 = lon.toString();
                // Building Parameters
                List<NameValuePair> params = new ArrayList<NameValuePair>();
                params.add(new BasicNameValuePair("coord1", coord1));
                params.add(new BasicNameValuePair("coord2", coord2));
                params.add(new BasicNameValuePair("description", String.valueOf(k)));
 
                // getting JSON Object
                // Note that create product url accepts POST method
                JSONObject json = jsonParser.makeHttpRequest(url_create_product,
                        "POST", params);
                
                // check log cat fro response
                Log.d("Create Response", json.toString());
 
                // check for success tag
                try {
                    int success = json.getInt(TAG_SUCCESS);
 
                    if (success == 1) {
                        // successfully created product
                    /*  Intent i = new Intent(getApplicationContext(), AllProductsActivity.class);
                        startActivity(i);
                        finish();
                        */
                        
                    } else {
                        // failed to create product
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
 
              long endTime = System.currentTimeMillis() + 60*1000;
              while (System.currentTimeMillis() < endTime) {
                  synchronized (this) {
                      try {
                          wait(endTime - System.currentTimeMillis());
                      } catch (Exception e) {
                      }
                  }
              }
              }
          }
          
          
      }
 
      @Override
      public void onCreate() {
        // Start up the thread running the service.  Note that we create a
        // separate thread because the service normally runs in the process's
        // main thread, which we don't want to block.  We also make it
        // background priority so CPU-intensive work will not disrupt our UI.
        HandlerThread thread = new HandlerThread("ServiceStartArguments",
                Process.THREAD_PRIORITY_BACKGROUND);
        thread.start();
        
        // Get the HandlerThread's Looper and use it for our Handler 
        mServiceLooper = thread.getLooper();
        mServiceHandler = new ServiceHandler(mServiceLooper);
      }
 
      @Override
      public int onStartCommand(Intent intent, int flags, int startId) {
          Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show();
 
          // For each start request, send a message to start a job and deliver the
          // start ID so we know which request we're stopping when we finish the job
          Message msg = mServiceHandler.obtainMessage();
          msg.arg1 = startId;
          mServiceHandler.sendMessage(msg);
          
          // If we get killed, after returning from here, restart
          return START_STICKY;
      }
      private final IBinder mBinder = new LocalBinder();
      @Override
      public IBinder onBind(Intent intent) {
          // We don't provide binding, so return null
          return mBinder;
      }
      
      @Override
      public void onDestroy() {
        Toast.makeText(this, "service done", Toast.LENGTH_SHORT).show(); 
      }
      
      
      private void _getLocation() {
            // Get the location manager
            LocationManager locationManager = (LocationManager) 
                    getSystemService(LOCATION_SERVICE);
            Criteria criteria = new Criteria();
            String bestProvider = locationManager.getBestProvider(criteria, false);
            Location location = locationManager.getLastKnownLocation(bestProvider);
            LocationListener loc_listener = new LocationListener() {
 
                public void onLocationChanged(Location l) {}
 
                public void onProviderEnabled(String p) {}
 
                public void onProviderDisabled(String p) {}
 
                public void onStatusChanged(String p, int status, Bundle extras) {}
            };
            locationManager
                    .requestLocationUpdates(bestProvider, 0, 0, loc_listener);
            location = locationManager.getLastKnownLocation(bestProvider);
            try {
                lat = location.getLatitude();
                lon = location.getLongitude();
            } catch (NullPointerException e) {
                lat = -1.0;
                lon = -1.0;
            }
        }
    }
вот так я сделал в MainActivity.java

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package com.example.mygpslocation;
 
import com.http.gps.AppStatus;
import com.http.gps.GPSService;
 
import android.os.Bundle;
import android.os.IBinder;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.util.Log;
import android.view.Menu;
import android.widget.Toast;
 
public class MainActivity extends Activity {
    private GPSService mBoundService;
    private boolean mIsBound=false;
    private ServiceConnection mConnection = new ServiceConnection() {
        public void onServiceConnected(ComponentName className, IBinder service) {
            // This is called when the connection with the service has been
            // established, giving us the service object we can use to
            // interact with the service.  Because we have bound to a explicit
            // service that we know is running in our own process, we can
            // cast its IBinder to a concrete class and directly access it.
            mBoundService = ((GPSService.LocalBinder)service).getService();
 
            // Tell the user about this for our demo.
            Toast.makeText(MainActivity.this, "local service connected",
                    Toast.LENGTH_SHORT).show();
        }
 
        public void onServiceDisconnected(ComponentName className) {
            // This is called when the connection with the service has been
            // unexpectedly disconnected -- that is, its process crashed.
            // Because it is running in our same process, we should never
            // see this happen.
            mBoundService = null;
            Toast.makeText(MainActivity.this, "local_service_disconnected",
                    Toast.LENGTH_SHORT).show();
        }
    };
 
    void doBindService() {
        // Establish a connection with the service.  We use an explicit
        // class name because we want a specific service implementation that
        // we know will be running in our own process (and thus won't be
        // supporting component replacement by other applications).
        bindService(new Intent(MainActivity.this, 
                GPSService.class), mConnection, Context.BIND_AUTO_CREATE);
        mIsBound = true;
    }
 
    void doUnbindService() {
        if (mIsBound) {
            // Detach our existing connection.
            unbindService(mConnection);
            mIsBound = false;
        }
    }
 
    @Override
    protected void onDestroy() {
        super.onDestroy();
        doUnbindService();
    }
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    if (AppStatus.getInstance(this).isOnline(this)) {
            
        }
        else{
            Toast.makeText(getBaseContext(),"no internet connection",Toast.LENGTH_SHORT).show();
            Log.v("Home", "############################You are not online!!!!");  
            finish();
        }
        doBindService();
        Intent intent = new Intent(this, GPSService.class);
        startService(intent);   
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
 
}
как теперь мне с помощью этого биндера управлять сервисом? например остановить сервис если нет интернета, а потом снова запустить если интернет появился?
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
19.07.2013, 01:26     Подружить receiver и service #5
Java
1
2
startService(Intent service);
stopService(Intent service);
Добавлено через 28 минут
а чтобы, например, бесконечный while прервать, используйте вместо true переменную и меняйте ее через биндер.
jenyakirmiza
1 / 1 / 0
Регистрация: 13.02.2013
Сообщений: 90
19.07.2013, 01:35  [ТС]     Подружить receiver и service #6
Цитата Сообщение от V0v1k Посмотреть сообщение
Java
1
2
startService(Intent service);
stopService(Intent service);
Добавлено через 28 минут
а чтобы, например, бесконечный while прервать, используйте вместо true переменную и меняйте ее через биндер.
Останавливать сервис в случае отсутствия интернета? у меня есть ресивер который срабатывает если изменяется состояние инета. Мне нужно в этом ресивере остановить сервис stopService(...)? как я могу к нему обратится через ресивер, если у меня класс ресивера наследуется от Broadcast, a не от Activity откуда в принципе и stopService.

Или где мне нужно делать проверку на интернет.




Просто я уже сделал через аларм менеджер,убрал бесконечный цикл и сделал repeatable, но непонятно как все-равно связаться с сервисом и указать ему что нужно делать. Он работает как хочет. И я не понимаю почему, но оно работает так как надо, это меня удивляет, но не понимаю почему работает правильно. Вообщем если есть интернет, то служба работает, если его нет, она продолжает работу, но почему-то не вылетает. когда нет появляется она продолжает работу и работает правильно, я даже не знаю как. единственное когда она вылетает, это в случае если остановить сервис с помощью диспетчера задач, он перезапускается, потому что сделал STICKY, и если нет интернета, то происходит вылет приложения. Почему оно перазапускается я понимаю, но каким образом оно работает когда нет инета я понятия не имею
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
19.07.2013, 03:07     Подружить receiver и service #7
Цитата Сообщение от jenyakirmiza Посмотреть сообщение
Останавливать сервис в случае отсутствия интернета? у меня есть ресивер который срабатывает если изменяется состояние инета. Мне нужно в этом ресивере остановить сервис stopService(...)?
я не знаю что вам нужно.

Цитата Сообщение от jenyakirmiza Посмотреть сообщение
как я могу к нему обратится через ресивер, если у меня класс ресивера наследуется от Broadcast, a не от Activity
это методы класса Context, можно написать кастомный класс Application и получать его инстанс как синглетона, Application наследуется от Context.
Цитата Сообщение от jenyakirmiza Посмотреть сообщение
но непонятно как все-равно связаться с сервисом и указать ему что нужно делать.
ну, вы же получаете инстанс сервиса через биндер и можете вызывать любые его методы.
jenyakirmiza
1 / 1 / 0
Регистрация: 13.02.2013
Сообщений: 90
19.07.2013, 11:38  [ТС]     Подружить receiver и service #8
Цитата Сообщение от V0v1k Посмотреть сообщение
я не знаю что вам нужно.


это методы класса Context, можно написать кастомный класс Application и получать его инстанс как синглетона, Application наследуется от Context.

ну, вы же получаете инстанс сервиса через биндер и можете вызывать любые его методы.
вот где я могу нормально получить инстанс моего сервиса и говорить ему, что ему делать

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
    private ServiceConnection mConnection = new ServiceConnection() {
        public void onServiceConnected(ComponentName className, IBinder service) {
            // This is called when the connection with the service has been
            // established, giving us the service object we can use to
            // interact with the service.  Because we have bound to a explicit
            // service that we know is running in our own process, we can
            // cast its IBinder to a concrete class and directly access it.
         [B]   mBoundService = ((GPSService.LocalBinder)service).getService();
            mBoundService.stopSelf();[/B]
            Toast.makeText(MainActivity.this, "local service connected",
                    Toast.LENGTH_SHORT).show();
        }
 
        public void onServiceDisconnected(ComponentName className) {
            // This is called when the connection with the service has been
            // unexpectedly disconnected -- that is, its process crashed.
            // Because it is running in our same process, we should never
            // see this happen.
            mBoundService = null;
            Toast.makeText(MainActivity.this, "local_service_disconnected",
                    Toast.LENGTH_SHORT).show();
        }
    };
 
    void doBindService() {
        // Establish a connection with the service.  We use an explicit
        // class name because we want a specific service implementation that
        // we know will be running in our own process (and thus won't be
        // supporting component replacement by other applications).
        bindService(new Intent(MainActivity.this, 
                GPSService.class), mConnection, Context.BIND_AUTO_CREATE);
        mIsBound = true;
    }
 
    void doUnbindService() {
        if (mIsBound) {
            // Detach our existing connection.
            unbindService(mConnection);
            mIsBound = false;
        }
    }
но мне нужно сделать это в классе NetworkChangeReceiver
как тут получить этот инстанс, я понятия не имею

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package com.http.gps;
 
 
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
 
public class NetworkChangeReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        ConnectivityManager cm = ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE));
        if (cm == null)
            return;
        if (cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isConnected()) {
        } 
        else {
            // Do nothing or notify user somehow
        }
 
    }
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.07.2013, 00:42     Подружить receiver и service
Еще ссылки по теме:

Service - Программирование Android
Как создать приложение как Service?

Работа с Service - Программирование Android
Всем добрый вечер! Есть приложение под андроид. С активити, с интерфейсом, всё как нужно. Теперь потребовалось сделать из него фоновое...

Fragments и service - Программирование Android
такой вопрос как реализовать запуск сервиса и обработку результатов приложении где есть fragments.? хотелось бы запускать сервис в...

Автозагрузка Service - Программирование Android
Привет, люди! Давно бьюсь с автозапуском сервисов. Скиньте, пожалуйста РАБОЧИЙ пример сего действа, иначе я вообще никогда так и не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
20.07.2013, 00:42     Подружить receiver и service #9
да точно так же, только Application переопределите чтобы контекст получить.
http://www.devahead.com/blog/2011/06...ith-singleton/
Yandex
Объявления
20.07.2013, 00:42     Подружить receiver и service
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru