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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
metrolog
4 / 4 / 0
Регистрация: 18.11.2012
Сообщений: 101
#1

Оповещение при звонке - Android

24.04.2013, 23:08. Просмотров 1427. Ответов 18
Метки нет (Все метки)

Добрый вечер
Возможно ли сделать так чтобы после того как пользователь отвечал на звонок или к примеру приходило смс, выполнялось какое то событие генерируемое приложением (например какое то сообщение появлялось на экране) ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.04.2013, 23:08     Оповещение при звонке
Посмотрите здесь:

Android Оповещение в UI из потока
Android Запуск приложения при входящем звонке
Возможно ли передавать информацию о входящем звонке? Android
Android Оповещение по заданному времени и дате

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
24.04.2013, 23:16     Оповещение при звонке #2
http://stackoverflow.com/questions/9...ceiver-handler
http://www.tutorialforandroid.com/20...alling_22.html
metrolog
4 / 4 / 0
Регистрация: 18.11.2012
Сообщений: 101
25.04.2013, 21:23  [ТС]     Оповещение при звонке #3
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import android.content.Intent;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.widget.Toast;
 
public class MyPhoneStateListener extends PhoneStateListener {
    
      public void onCallStateChanged(int state,String incomingNumber){
      switch(state){
        case TelephonyManager.CALL_STATE_IDLE:    
          Log.d("DEBUG", "IDLE");
        break;
        case TelephonyManager.CALL_STATE_OFFHOOK:      
          Log.d("DEBUG", "OFFHOOK");
        break;
        case TelephonyManager.CALL_STATE_RINGING:  
          Log.d("DEBUG", "RINGING");
        break;
        }
      } 
    }

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
 
public class ServiceReceiver extends BroadcastReceiver {
      @Override
      public void onReceive(Context context, Intent intent) {
        MyPhoneStateListener phoneListener=new MyPhoneStateListener();
        TelephonyManager telephony = (TelephonyManager) 
        context.getSystemService(Context.TELEPHONY_SERVICE);
        telephony.listen(phoneListener,PhoneStateListener.LISTEN_CALL_STATE);
      }
    }

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
import java.util.concurrent.TimeUnit;
 
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.widget.Toast;
 
public class MyService extends Service {
    NotificationManager nm;
      
      final String LOG_TAG = "myLogs";
 
      public void onCreate() {
        super.onCreate();
        Log.d(LOG_TAG, "onCreate");
        nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        
      }
      
      public int onStartCommand(Intent intent, int flags, int startId) {
        sendNotif();
        return super.onStartCommand(intent, flags, startId);
      }
 
      public void onDestroy() {
        super.onDestroy();
      }
 
      public IBinder onBind(Intent intent) {
        return null;
      }
 
 
    
      
      @SuppressWarnings("deprecation")
    void sendNotif() {
            Notification notif = new Notification(R.drawable.ic_launcher, "Text", 
              System.currentTimeMillis());
            Intent intent = new Intent(this, MainActivity.class);
            PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent, 0);
            notif.setLatestEventInfo(this, "Text", "Text", pIntent);
            notif.flags |= Notification.FLAG_AUTO_CANCEL;
            nm.notify(1, notif);
          }
 
    }

Когда программа в фоне, то в логах появляются записи об этом.

а как определять звонок в сервисе?
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
25.04.2013, 21:35     Оповещение при звонке #4
Цитата Сообщение от metrolog Посмотреть сообщение
а как определять звонок в сервисе?
передать с ресивера в сервис.

Добавлено через 2 минуты
ресивер можно динамически создать в сервисе - http://www.vogella.com/articles/Andr...ver_deregister
metrolog
4 / 4 / 0
Регистрация: 18.11.2012
Сообщений: 101
25.04.2013, 21:38  [ТС]     Оповещение при звонке #5
нужно чтобы при звонке, сервис создал уведомление.
то есть при звонке, передаю с ресивера на сервис, да?
каким образом он примет с ресивера? в потоке проверять? или он сам проверяет ?
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
25.04.2013, 21:50     Оповещение при звонке #6
Цитата Сообщение от metrolog Посмотреть сообщение
нужно чтобы при звонке, сервис создал уведомление
а какая разница кто создает уведомление?

Цитата Сообщение от metrolog Посмотреть сообщение
то есть при звонке, передаю с ресивера на сервис, да?
да.

Цитата Сообщение от metrolog Посмотреть сообщение
каким образом он примет с ресивера? в потоке проверять? или он сам проверяет ?
вызовом метода сервиса.
metrolog
4 / 4 / 0
Регистрация: 18.11.2012
Сообщений: 101
25.04.2013, 21:55  [ТС]     Оповещение при звонке #7
а какая разница кто создает уведомление?
чтобы уведомления появлялись при закрытой программе, через сервис.


вызовом метода сервиса.
не могли небольшой пример как передать с ресивера на сервис и как обработать на ресивере?
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
25.04.2013, 22:03     Оповещение при звонке #8
Цитата Сообщение от metrolog Посмотреть сообщение
чтобы уведомления появлялись при закрытой программе, через сервис.
так какая разница?


Цитата Сообщение от metrolog Посмотреть сообщение
не могли небольшой пример как передать с ресивера на сервис и как обработать на ресивере?
биндаете сервис и получаете объект для коммуникации, это может быть сам сервис и вызываете нужный метод.
metrolog
4 / 4 / 0
Регистрация: 18.11.2012
Сообщений: 101
25.04.2013, 22:07  [ТС]     Оповещение при звонке #9
Цитата Сообщение от V0v1k Посмотреть сообщение
чтобы уведомления появлялись при закрытой программе, через сервис.
так какая разница?

есть программа, из нее запускается сервис, предположим потом ее закрывают.
Если она закрыта при звонке уведомление она не сможет выдать ,так же? вот для этого я все это делаю в сервисе.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
25.04.2013, 22:16     Оповещение при звонке #10
Цитата Сообщение от документация
Declares a broadcast receiver (a BroadcastReceiver subclass) as one of the application's components. Broadcast receivers enable applications to receive intents that are broadcast by the system or by other applications, even when other components of the application are not running.
...
metrolog
4 / 4 / 0
Регистрация: 18.11.2012
Сообщений: 101
25.04.2013, 22:28  [ТС]     Оповещение при звонке #11
тогда последний вопрос, как создать и активировать приложение из ресивера?
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
25.04.2013, 22:30     Оповещение при звонке #12
Цитата Сообщение от metrolog Посмотреть сообщение
создать и активировать приложение
нет такого понятия.
metrolog
4 / 4 / 0
Регистрация: 18.11.2012
Сообщений: 101
25.04.2013, 22:31  [ТС]     Оповещение при звонке #13
блин, уведомление имел ввиду.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
25.04.2013, 22:34     Оповещение при звонке #14
какое уведомление?
metrolog
4 / 4 / 0
Регистрация: 18.11.2012
Сообщений: 101
25.04.2013, 22:36  [ТС]     Оповещение при звонке #15
чтобы при звонке ресивер сгенерировал уведомление и оно появилось в центре уведомлений телефона.
как создать уведомление из ресивера?
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
25.04.2013, 22:38     Оповещение при звонке #16
если вам нужен Notification, то смотрите сюда - http://developer.android.com/guide/t...fications.html
metrolog
4 / 4 / 0
Регистрация: 18.11.2012
Сообщений: 101
25.04.2013, 22:45  [ТС]     Оповещение при звонке #17
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
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
 
public class ServiceReceiver extends BroadcastReceiver {
    
    NotificationManager nm;
      
      
      @Override
      public void onReceive(Context context, Intent intent) {
        MyPhoneStateListener phoneListener=new MyPhoneStateListener();
        TelephonyManager telephony = (TelephonyManager) 
        context.getSystemService(Context.TELEPHONY_SERVICE);
        telephony.listen(phoneListener,PhoneStateListener.LISTEN_CALL_STATE);
      }
      
      
      public void ff(){
            Context context1 = getApplicationContext();
 
            Intent notificationIntent = new Intent(context1, ServiceReceiver.class);
            PendingIntent contentIntent = PendingIntent.getActivity(context1,
                    0, notificationIntent,
                    PendingIntent.FLAG_CANCEL_CURRENT);
 
            NotificationManager nm = (NotificationManager) context1 
                    .getSystemService(Context.NOTIFICATION_SERVICE);
            
            Resources res = context1.getResources();
            Notification.Builder builder = new Notification.Builder(context1);
 
            builder.setContentIntent(contentIntent)
                        .setSmallIcon(R.drawable.ic_launcher)
                        .setTicker("text")
                        .setWhen(System.currentTimeMillis())
                        .setAutoCancel(true)
                        .setContentTitle("text")
                        .setContentText("text");
            
            Notification n = builder.getNotification();
 
            nm.notify(101, n);
        }
      }


ругается на
Context context1 = getApplicationContext();
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
25.04.2013, 22:50     Оповещение при звонке #18
потому что у BroadcastReceiver'a нет такого метода. контекст вы получаете в onReceive(Context context, Intent intent)
metrolog
4 / 4 / 0
Регистрация: 18.11.2012
Сообщений: 101
25.04.2013, 22:54  [ТС]     Оповещение при звонке #19
спасибо вам большое все заработало.
Yandex
Объявления
25.04.2013, 22:54     Оповещение при звонке
Ответ Создать тему
Опции темы

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