Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
#1

Работает ли код когда приложение закрыто ?

28.07.2013, 14:39. Просмотров 909. Ответов 9
Метки нет (Все метки)

Не могу понять, должен ли этот код работать когда приложение закрыто. При реальных тестах не работает мне кажется. Вот сам код:

XML
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
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
       android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<EditText
              android:id="@+id/point_latitude"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:layout_marginLeft="25dip"
              android:layout_marginRight="25dip"
              android:hint="Latitude"
       />
 
       <EditText
              android:id="@+id/point_longitude"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:layout_marginLeft="25dip"
              android:layout_marginRight="25dip"
              android:hint="Longitude"
       />
       <Button
              android:id="@+id/add_alert_button"
              android:text="Add Alert"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
       />
 
</LinearLayout>

2) Main Activity ProximityAlertActivity.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
public class ProximityAlertActivity extends Activity {
       private static final long MINIMUM_DISTANCECHANGE_FOR_UPDATE = 1; // in Meters
       private static final long MINIMUM_TIME_BETWEEN_UPDATE = 1000; // in Milliseconds
       private static final long POINT_RADIUS = 100; // in Meters
       private static final long PROX_ALERT_EXPIRATION = -1; // It will never expire
       private static final String PROX_ALERT_INTENT = "com.androidmyway.demo.ProximityAlert";
private LocationManager locationManager;
private EditText latitudeEditText;
       private EditText longitudeEditText;
       private Button addAlertButton;
 
       @Override
       public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
              setContentView(R.layout.main);
 
              locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
 
              latitudeEditText = (EditText) findViewById(R.id.point_latitude);
              longitudeEditText = (EditText) findViewById(R.id.point_longitude);
              addAlertButton = (Button) findViewById(R.id.add_alert_button);
 
              addAlertButton.setOnClickListener(new OnClickListener() {
                     public void onClick(View v) {
                            addProximityAlert();
                     }
              });
 
       }
 
       private void addProximityAlert() {
              double latitude = Double.parseDouble(latitudeEditText.getText().toString());
              double longitude = Double.parseDouble(longitudeEditText.getText().toString());
              Intent intent = new Intent(PROX_ALERT_INTENT);
              PendingIntent proximityIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
locationManager.addProximityAlert(
                     latitude, // the latitude of the central point of the alert region
                     longitude, // the longitude of the central point of the alert region
                     POINT_RADIUS, // the radius of the central point of the alert region, in meters
                     PROX_ALERT_EXPIRATION, // time for this proximity alert, in milliseconds, or -1 to indicate no                           expiration
                     proximityIntent // will be used to generate an Intent to fire when entry to or exit from the alert region is detected
              );
 
              IntentFilter filter = new IntentFilter(PROX_ALERT_INTENT);
              registerReceiver(new ProximityIntentReceiver(), filter);
              Toast.makeText(getApplicationContext(),"Alert Added",Toast.LENGTH_SHORT).show();
       }
}
3) ProximityReceiver.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
public class ProximityIntentReceiver extends BroadcastReceiver {
       private static final int NOTIFICATION_ID = 1000;
 
       @Override
       public void onReceive(Context context, Intent intent) {
String key = LocationManager.KEY_PROXIMITY_ENTERING;
Boolean entering = intent.getBooleanExtra(key, false);
if (entering) {
                     Log.d(getClass().getSimpleName(), "entering");
              }else {
                     Log.d(getClass().getSimpleName(), "exiting");
              }
              NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
 
              Intent notificationIntent = new Intent(context, ProximityAlertActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
Notification notification = createNotification();
              notification.setLatestEventInfo(context, "Proximity Alert!", "You are near your point of interest.", pendingIntent);
 
              notificationManager.notify(NOTIFICATION_ID, notification);
      }
 
       private Notification createNotification() {
              Notification notification = new Notification();
notification.icon = R.drawable.ic_menu_notifications;
              notification.when = System.currentTimeMillis();
              notification.flags |= Notification.FLAG_AUTO_CANCEL;
              notification.flags |= Notification.FLAG_SHOW_LIGHTS;
notification.defaults |= Notification.DEFAULT_VIBRATE;
              notification.defaults |= Notification.DEFAULT_LIGHTS;
notification.ledARGB = Color.WHITE;
              notification.ledOnMS = 1500;
              notification.ledOffMS = 1500;
              return notification;
        }
}
permission
Java
1
2
3
4
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.VIBRATE" />
Скажите должен ли этот код работать когда приложение закрыто ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.07.2013, 14:39
Ответы с готовыми решениями:

Как сделать чтобы приложение работало только тогда когда работает Service
Как сделать чтобы приложение работала только тогда когда работает public...

Сообщение "приложение остановлено" постоянно, даже когда приложение вообще не запущено
Собственно ,сабж в топике

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

FCM: не срабатывает onMessageReceived когда приложение прибито
Здравствуйте. Столкнулся с проблемой -- не срабатывает onMessageReceived...

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

9
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
29.07.2013, 01:37 #2
глобальный ресивер работает даже если все активити закрыты.
0
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
29.07.2013, 13:32  [ТС] #3
Мне кажется что он не работает, как можно легко это проверить?
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
30.07.2013, 00:02 #4
Цитата Сообщение от Stylish2013 Посмотреть сообщение
registerReceiver(new ProximityIntentReceiver(), filter);
судя по этой строчке, вы используете его как локально.
0
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
30.07.2013, 00:21  [ТС] #5
Цитата Сообщение от V0v1k Посмотреть сообщение
судя по этой строчке, вы используете его как локально.
вот оно что.. А как же переделать на работу в фоне когда приложение закрыто?:
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
30.07.2013, 00:26 #6
в манифесте прописать ресивер.

Добавлено через 1 минуту
http://www.vogella.com/articles/AndroidBroadcastReceiver/article.html
0
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
30.07.2013, 00:47  [ТС] #7
Цитата Сообщение от V0v1k Посмотреть сообщение
в манифесте прописать ресивер.
Добавлено через 1 минуту
http://www.vogella.com/articles/Andr...r/article.html
а не могли бы сказать, что именно прописать мне ? Статья сложной мне показалась.
0
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
10.08.2013, 15:45  [ТС] #8
Цитата Сообщение от V0v1k Посмотреть сообщение
в манифесте прописать ресивер.
Помогите решить вопрос. Прописал я в Манифесте ресивер
Java
1
2
<receiver android:name="ProximityIntentReceiver" >
        </receiver>
но он не срабатывает когда приложение закрыто.

Помогите, уже много времени бьюсь с этим.
0
Wenceslaus
Android Developer
130 / 130 / 6
Регистрация: 05.07.2013
Сообщений: 205
12.08.2013, 11:45 #9
Объявить Receiver глобально и с фильтром можно так:
XML
1
2
3
4
5
<receiver android:name="your.package.name.ProximityIntentReceiver" android:enabled="true" >
    <intent-filter>
        <action  android:name="your.intent" />
    </intent-filter>
</receiver>
Послать ему сообщение (из Activity) можно так:
Java
1
2
3
Intent i = new Intent("any string");
i.setClass(this, ProximityIntentReceiver.class);
this.sendBroadcast(i);
0
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
15.08.2013, 19:26  [ТС] #10
это не помогает (((( не работает. Ещё варианты могут быть?

Добавлено через 3 часа 31 минуту
Можете мне правильно подсказать как прописать в манифесте? и если в манифесте прописал, в коде необходимо прописывать или нет??

Добавлено через 21 час 52 минуты
Может просто нужно использовать это:

Java
1
2
3
4
5
6
7
8
9
10
11
public class MyLocationListener implements LocationListener {
        public void onLocationChanged(Location location) {
            
        }
        public void onStatusChanged(String s, int i, Bundle b) {            
        }
        public void onProviderDisabled(String s) {
        }
        public void onProviderEnabled(String s) {           
        }
    }
0
15.08.2013, 19:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.08.2013, 19:26

Когда приложение удаляешь даже из списка открытых приложений
То есть если у меня есть приложение состоящее из одного активити и я не просто...

Прочитать нажатие кнопок, когда приложение в фоновом режиме
Доброго времени суток, как сделать так: когда запустил приложение и свернул...

Приложение падает когда шапка Navigation Drawer Activity пропадает из виду
В моей программе используется Navigation Drawer Activity и в нем много пунктов...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

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