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

Подружить receiver и service - Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android долгая загрузка http://www.cyberforum.ru/android-dev/thread923781.html
Пишу игрушку и проблема в том что контент грузиться 4-5 секунд работающий вариант public class MainActivity extends Activity { private WorldController controller; private MenuController menuController; private boolean isGame; @Override
Android AdMob баннер Кто сталкивался с такой проблемой - в эмуляторе AdMob баннер работает, а на физическом устройстве его попросту нет, т.е. пустое место? Все что можно перерыл уже... Делал согласно инструкции http://habrahabr.ru/post/133858/ http://www.cyberforum.ru/android-dev/thread923772.html
Google maps Android
Здравствуйте! Недавно начал разработку приложения с использованием google maps и при первом же этапе проектирования возникли проблемы. Имеется в виду простое отображение карты на layout. Приложение не загружает карту. Делал по примеру гугловской литературы. Собственно я хочу, чтобы вы подсказали где у меня ошибка в коде. API key: AIzaSyBJ40WcfO_nAnjy1-e3drIQXDEQtAkVQ-o Android apps: ...
Как организовать последовательную передачу данных между тремя активностями? Android
Здравствуйте! Столкнулся с проблемой. Есть потребность в справочном приложении, которое будет выглядеть следующим образом: Из первой активности (ListView) через intent происходит передача картинки во вторую активность в зависимости от выбранного элемента. Во второй активности необходимо перейти к комментарию в виде текста в третьей активности. Вывод через нажатие иконки в Action Bar. ...
Android Подскажите с работой сервиса в андроид http://www.cyberforum.ru/android-dev/thread923634.html
вообщем вот у меня есть сервис: 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;
Android Настройка экрана при откладке в BlueStacks Добрый день, тормоза и зависания стандартного эмулятора невыносимы. Решил перейти на BlueStacks по этой статье http://habrahabr.ru/company/infopulse/blog/148512/ в которой указано что можно менять тип экрана под мобильный как здесь https://getsatisfaction.com/bstk/topics/hxg3m5nqqxuls Однако на моем эмуляторе такой выбор просто отсутствует! см. скрин подробнее

Показать сообщение отдельно
jenyakirmiza
1 / 1 / 0
Регистрация: 13.02.2013
Сообщений: 90
18.07.2013, 13:28  [ТС]     Подружить receiver и service
Цитата Сообщение от 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;
    }
 
}
как теперь мне с помощью этого биндера управлять сервисом? например остановить сервис если нет интернета, а потом снова запустить если интернет появился?
 
Текущее время: 12:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru