Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
4 / 4 / 0
Регистрация: 18.11.2012
Сообщений: 101
1

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

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

Author24 — интернет-сервис помощи студентам
Добрый вечер
Возможно ли сделать так чтобы после того как пользователь отвечал на звонок или к примеру приходило смс, выполнялось какое то событие генерируемое приложением (например какое то сообщение появлялось на экране) ?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.04.2013, 23:08
Ответы с готовыми решениями:

Запуск приложения при входящем звонке
В общем необходимо сделать отвечалку на звонки кастомную нужно чтобы она открывалась вместо...

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

Не изменяется текст в TextView при звонке
Здравствуйте. Пытаюсь реализовать следующее: Есть activity, где проигрывается аудио. Хочу чтобы при...

Возможно ли передавать информацию о входящем звонке?
Добрый день. Мне никогда ранее не приходилось писать на мобильных платформах, поэтому заранее...

18
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
24.04.2013, 23:16 2
http://stackoverflow.com/quest... er-handler
http://www.tutorialforandroid.... ng_22.html
1
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);
          }
 
    }

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

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

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

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

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


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


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

есть программа, из нее запускается сервис, предположим потом ее закрывают.
Если она закрыта при звонке уведомление она не сможет выдать ,так же? вот для этого я все это делаю в сервисе.
0
1162 / 986 / 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.
...
0
4 / 4 / 0
Регистрация: 18.11.2012
Сообщений: 101
25.04.2013, 22:28  [ТС] 11
тогда последний вопрос, как создать и активировать приложение из ресивера?
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
25.04.2013, 22:30 12
Цитата Сообщение от metrolog Посмотреть сообщение
создать и активировать приложение
нет такого понятия.
0
4 / 4 / 0
Регистрация: 18.11.2012
Сообщений: 101
25.04.2013, 22:31  [ТС] 13
блин, уведомление имел ввиду.
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
25.04.2013, 22:34 14
какое уведомление?
0
4 / 4 / 0
Регистрация: 18.11.2012
Сообщений: 101
25.04.2013, 22:36  [ТС] 15
чтобы при звонке ресивер сгенерировал уведомление и оно появилось в центре уведомлений телефона.
как создать уведомление из ресивера?
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
25.04.2013, 22:38 16
если вам нужен Notification, то смотрите сюда - http://developer.android.com/g... tions.html
0
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();
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
25.04.2013, 22:50 18
потому что у BroadcastReceiver'a нет такого метода. контекст вы получаете в onReceive(Context context, Intent intent)
1
4 / 4 / 0
Регистрация: 18.11.2012
Сообщений: 101
25.04.2013, 22:54  [ТС] 19
спасибо вам большое все заработало.
0
25.04.2013, 22:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.04.2013, 22:54
Помогаю со студенческими работами здесь

Есть ли API на Android, чтобы я мог отклонить входящий звонок, получать инфу о звонке?
Очень нужно, если есть такая документация по API до дайте ссылку, хочу написать прогу которая...

Оповещение в UI из потока
Доброго времени. суть проблеммы в сл. не работает повторное оповещение UI из потока. в приложении...

Оповещение по заданному времени и дате
Здравствуйте, есть задача вывести оповещение по заданной пользователем дате и времени. В сети...

Оповещение в приложение, к которому нет доступа
Возможно ли как-то показать сообщение всем, у кого установлено приложение? Но к самому...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru