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

Как запустить метод в Activity из BroadcastReceiver - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Как раскрутить приложение - бесплатными методами? http://www.cyberforum.ru/android-dev/thread1267753.html
Запрограммировал логическую игру Быки и Коровы(для себя не для зарабатывания денег, просто попробовать_, выложил ее на маркет...
Программирование Android Динамический размер ImageView Здравствуйте. У меня есть xml файл с ImageView, в который я загружаю изображение из интернета (с помощью Picasso) добавляю его в лейаут. Изображения могут и быть разных размеров, следовательно,... http://www.cyberforum.ru/android-dev/thread1267629.html
Программирование Android Не создается фрагмент
При запуске приложения отображается фрагмент (fragment1) этот фрагмент имеет кнопку при нажатии на которую запускается другой фрагмент (fragment2), очередь должен запускать другой экземпляр...
Программирование Android Какого размера нужно создавать иконку приложения?
Какого размера нужно создать иконку приложения в Android? Я знаю, что для загрузки на Google Play нужна иконка 512x512, но, можно ли потом из этой иконки получить остальные нужных размеров? А из...
Программирование Android Анимация прозрачности от центра до границ http://www.cyberforum.ru/android-dev/thread1267257.html
Всем привет! Возникла проблема при работе с анимацией, необходимо сделать анимацию, чтоб прозрачность уменьшалась от центра вьюхи до границ. <set...
Программирование Android Как запустить приложение после обновления Добрый день! делаю обновление приложения, скачиваю apk и вот так потом его запускаю на установку Intent installApp = new Intent (Intent.ACTION_INSTALL_PACKAGE); installApp.setData... подробнее

Показать сообщение отдельно
Agassy
0 / 0 / 0
Регистрация: 03.10.2014
Сообщений: 5

Как запустить метод в Activity из BroadcastReceiver - Программирование Android

03.10.2014, 16:16. Просмотров 1052. Ответов 2
Метки (Все метки)

Здравствуйте!!!
Все до банальности просто и повторяется, по кругу
Новичок, увлекся Java & Android...
Пытаюсь изобразить приложения первого этапа - при вхождения в сектор, центр которого определен географическими координатами и имеет определенный радиус, срабатывает оповещение и уменьшается счетчик, в соответствии с временем нахождения в секторе.

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

MainActivity
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
public class ProximityAlertActivity extends Activity {
    private static final long POINT_RADIUS = 50;               // 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;
    
    TextView tvtextCounterLive;
    
    double counterLive = 100.00;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_proxymity);
 
            locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
            tvtextCounterLive = (TextView) findViewById(R.id.textCounterLive);
            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();
                  }
            });
 
    }    
 
 // запускаем таймер и изменение счетчика жизни 
    public void startTimer(){
        Timer myTimer = new Timer();
        myTimer.schedule(new TimerTask() {
 
    @Override
    public void run() {
        ProximityAlertActivity.this.runOnUiThread(new Runnable() {
            public void run() {
                counterLive-=0.15;
                tvtextCounterLive.setText(" " + String.format("%1$.2f", counterLive) + "%");
            }
        });
    }
}, 0, 2500);
    }
    
 // останавливаем таймер и изменение счетчика жизни
 //   public void stopTimer(){ } 
 
    
    public void showCounterLive(){
        tvtextCounterLive.setText(" " + counterLive + "%");
}
    
    
    private void addProximityAlert() {
           double latitude = Double.parseDouble(latitudeEditText.getText().toString());
           double longitude = Double.parseDouble(longitudeEditText.getText().toString());
           Log.d(getClass().getSimpleName(),"latitude = "+latitude);
           Log.d(getClass().getSimpleName(),"longitude= "+longitude);
           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(),"Точка добавлена!",Toast.LENGTH_SHORT).show();
    }     
}
BroadcastReceier
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;
       
       
       @SuppressWarnings("deprecation")
       @Override
       public void onReceive(Context context, Intent intent) {
 
           String key = LocationManager.KEY_PROXIMITY_ENTERING;
        
           Boolean entering = intent.getBooleanExtra(key, false);
           if (entering) {
                       Toast.makeText(context, "Вошли в сектор!", Toast.LENGTH_LONG).show();
              }else {
                       Toast.makeText(context, "Вышли из сектора!", Toast.LENGTH_LONG).show();
              }
              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, "Вошли в ZONE51", "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_launcher;
              notification.when = System.currentTimeMillis();
              notification.defaults |= Notification.DEFAULT_VIBRATE;
 
              return notification;
        }
}
Пробовал работать разные варианты "в лоб" - не заработало
Java
1
2
3
4
5
6
7
8
9
10
11
           Boolean entering = intent.getBooleanExtra(key, false);
           if (entering) {
 
                     Toast.makeText(context, "Вошли в сектор!", Toast.LENGTH_LONG).show();
                  //Вариант I   
                          //startTimer();
                  //Вариант II
                          // ProximityAlertActivity on = new ProximityAlertActivity ();
                          // startTimer.on();
                                 
              }
Пока читаю инет...если не сложно намекните, куда копать, первый раз с BroadcastReceiver Имею дело ...

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