Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
#1

Работает ли код когда приложение закрыто ? - Программирование Android

28.07.2013, 14:39. Просмотров 865. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работает ли код когда приложение закрыто ? (Программирование Android):

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

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

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

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

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

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

9
V0v1k
1159 / 983 / 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
1159 / 983 / 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
1159 / 983 / 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 / 4
Регистрация: 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
Привет! Вот еще темы с ответами:

Запущенный service не работает, когда нет процесса - Программирование Android
Запускаю сервис в startForeground() он работает, в работающих приложениях у меня показано активны 1н процесс и 1н сервис (мой). Но когда...

Ошибка: приложение будет закрыто - Visual C++
Компилирую прогу ошибок нет запускается ана потом бац : приложение будет закрыто, отправить отчет и т.д. Че это ваще за шняга?

Обнаружена ошибка. Приложение будет закрыто. - Видеопрограммы
Помогите решить проблему. При открывании (любым проигывателем) DVD диска, выдаёт такое сообщение: &quot;обнаружена ошибка. приложение будет...

в консоли браузера работает , а когда вставляю в код, нет - jQuery
$('#Image1').src = $('#grdImages td img').src; в консоли браузера работает , а когда вставляю в код не работает. что не так?


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

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

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