Beispiel #1
0
 private void handleIncomingCallIntent(Intent intent)
 {
     if (intent != null && intent.Action != null && intent.Action == VoiceActivity.ACTION_INCOMING_CALL)
     {
         IncomingCallMessage incomingCallMessage = intent.getParcelableExtra(INCOMING_CALL_MESSAGE);
         VoiceClient.handleIncomingCallMessage(ApplicationContext, incomingCallMessage, incomingCallMessageListener_Renamed);
     }
 }
        /*
         * Send the IncomingCallMessage to the VoiceActivity
         */
        private void sendIncomingCallMessageToActivity(IncomingCallMessage incomingCallMessage, int notificationId)
        {
            Intent intent = new Intent(VoiceActivity.ACTION_INCOMING_CALL);

            intent.putExtra(VoiceActivity.INCOMING_CALL_MESSAGE, incomingCallMessage);
            intent.putExtra(VoiceActivity.INCOMING_CALL_NOTIFICATION_ID, notificationId);
            LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
        }
        public override void onMessageReceived(string from, Bundle bundle)
        {
            Log.d(TAG, "onMessageReceived " + from);

            if (IncomingCallMessage.isValidMessage(bundle))
            {
                /*
                 * Generate a unique notification id using the system time
                 */
                int notificationId = (int)DateTimeHelperClass.CurrentUnixTimeMillis();

                /*
                 * Create an IncomingCallMessage from the bundle
                 */
                IncomingCallMessage incomingCallMessage = new IncomingCallMessage(bundle);

                showNotification(incomingCallMessage, notificationId);
                sendIncomingCallMessageToActivity(incomingCallMessage, notificationId);
            }
        }
		public override void onMessageReceived(string from, Bundle bundle)
		{
			Log.d(TAG, "onMessageReceived " + from);

			if (IncomingCallMessage.isValidMessage(bundle))
			{
				/*
				 * Generate a unique notification id using the system time
				 */
				int notificationId = (int)DateTimeHelperClass.CurrentUnixTimeMillis();

				/*
				 * Create an IncomingCallMessage from the bundle
				 */
				IncomingCallMessage incomingCallMessage = new IncomingCallMessage(bundle);

				showNotification(incomingCallMessage, notificationId);
				sendIncomingCallMessageToActivity(incomingCallMessage, notificationId);
			}

		}
Beispiel #5
0
 private void SetIncomingCall(string strPhoneNo)
 {
     if (txtTelephone.InvokeRequired)
     {
         IncomingCallMessage myInvoke = new IncomingCallMessage(SetIncomingCall);
         this.Invoke(myInvoke, new object[] { strPhoneNo });
     }
     else
     {
         int callType = 1;  //程序
         FormIncomingCall form = new FormIncomingCall(strPhoneNo, string.Empty, callType);
         form.ShowDialog();
         if (!string.IsNullOrEmpty(form.IncomingPhoneNo))
         {
             txtTelephone.Text = form.IncomingPhoneNo;
         }
         if (!string.IsNullOrEmpty(form.SelectedAddress))
         {
             txtAddress.Text = form.SelectedAddress;
         }
         if (form.CurCustomerInfo != null)
         {
             txtTelephone.Text = form.CurCustomerInfo.Telephone;
             txtName.Text = form.CurCustomerInfo.CustomerName;
         }
     }
 }
		/*
		 * Show the notification in the Android notification drawer
		 */
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @TargetApi(android.os.Build.VERSION_CODES.KITKAT_WATCH) private void showNotification(com.twilio.voice.IncomingCallMessage incomingCallMessage, int notificationId)
		private void showNotification(IncomingCallMessage incomingCallMessage, int notificationId)
		{
			string callSid = incomingCallMessage.CallSid;

			if (!incomingCallMessage.Cancelled)
			{
				/*
				 * Create a PendingIntent to specify the action when the notification is
				 * selected in the notification drawer
				 */
				Intent intent = new Intent(this, typeof(VoiceActivity));
				intent.Action = VoiceActivity.ACTION_INCOMING_CALL;
				intent.putExtra(VoiceActivity.INCOMING_CALL_MESSAGE, incomingCallMessage);
				intent.putExtra(VoiceActivity.INCOMING_CALL_NOTIFICATION_ID, notificationId);
				intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
				PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT);

				/*
				 * Pass the notification id and call sid to use as an identifier to cancel the
				 * notification later
				 */
				Bundle extras = new Bundle();
				extras.putInt(NOTIFICATION_ID_KEY, notificationId);
				extras.putString(CALL_SID_KEY, callSid);

				/*
				 * Create the notification shown in the notification drawer
				 */
				NotificationCompat.Builder notificationBuilder = (new NotificationCompat.Builder(this)).setSmallIcon(R.drawable.ic_call_white_24px).setContentTitle(getString([email protected]_name)).setContentTextuniquetempvar.setAutoCancel(true).setExtras(extras).setContentIntent(pendingIntent).setColor(Color.rgb(214, 10, 37));

				notificationManager.notify(notificationId, notificationBuilder.build());
			}
			else
			{
				if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
				{
					/*
					 * If the incoming call was cancelled then remove the notification by matching
					 * it with the call sid from the list of notifications in the notification drawer.
					 */
					StatusBarNotification[] activeNotifications = notificationManager.ActiveNotifications;
					foreach (StatusBarNotification statusBarNotification in activeNotifications)
					{
						Notification notification = statusBarNotification.Notification;
						Bundle extras = notification.extras;
						string notificationCallSid = extras.getString(CALL_SID_KEY);
						if (callSid.Equals(notificationCallSid))
						{
							notificationManager.cancel(extras.getInt(NOTIFICATION_ID_KEY));
						}
					}
				}
				else
				{
					/*
					 * Prior to Android M the notification manager did not provide a list of
					 * active notifications so we lazily clear all the notifications when
					 * receiving a cancelled call.
					 *
					 * In order to properly cancel a notification using
					 * NotificationManager.cancel(notificationId) we should store the call sid &
					 * notification id of any incoming calls using shared preferences or some other form
					 * of persistent storage.
					 */
					notificationManager.cancelAll();
				}
			}
		}
		/*
		 * Send the IncomingCallMessage to the VoiceActivity
		 */
		private void sendIncomingCallMessageToActivity(IncomingCallMessage incomingCallMessage, int notificationId)
		{
			Intent intent = new Intent(VoiceActivity.ACTION_INCOMING_CALL);
			intent.putExtra(VoiceActivity.INCOMING_CALL_MESSAGE, incomingCallMessage);
			intent.putExtra(VoiceActivity.INCOMING_CALL_NOTIFICATION_ID, notificationId);
			LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
		}
        /*
         * Show the notification in the Android notification drawer
         */
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @TargetApi(android.os.Build.VERSION_CODES.KITKAT_WATCH) private void showNotification(com.twilio.voice.IncomingCallMessage incomingCallMessage, int notificationId)
        private void showNotification(IncomingCallMessage incomingCallMessage, int notificationId)
        {
            string callSid = incomingCallMessage.CallSid;

            if (!incomingCallMessage.Cancelled)
            {
                /*
                 * Create a PendingIntent to specify the action when the notification is
                 * selected in the notification drawer
                 */
                Intent intent = new Intent(this, typeof(VoiceActivity));
                intent.Action = VoiceActivity.ACTION_INCOMING_CALL;
                intent.putExtra(VoiceActivity.INCOMING_CALL_MESSAGE, incomingCallMessage);
                intent.putExtra(VoiceActivity.INCOMING_CALL_NOTIFICATION_ID, notificationId);
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT);

                /*
                 * Pass the notification id and call sid to use as an identifier to cancel the
                 * notification later
                 */
                Bundle extras = new Bundle();
                extras.putInt(NOTIFICATION_ID_KEY, notificationId);
                extras.putString(CALL_SID_KEY, callSid);

                /*
                 * Create the notification shown in the notification drawer
                 */
                NotificationCompat.Builder notificationBuilder = (new NotificationCompat.Builder(this)).setSmallIcon(R.drawable.ic_call_white_24px).setContentTitle(getString([email protected]_name)).setContentTextuniquetempvar.setAutoCancel(true).setExtras(extras).setContentIntent(pendingIntent).setColor(Color.rgb(214, 10, 37));

                notificationManager.notify(notificationId, notificationBuilder.build());
            }
            else
            {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
                {
                    /*
                     * If the incoming call was cancelled then remove the notification by matching
                     * it with the call sid from the list of notifications in the notification drawer.
                     */
                    StatusBarNotification[] activeNotifications = notificationManager.ActiveNotifications;
                    foreach (StatusBarNotification statusBarNotification in activeNotifications)
                    {
                        Notification notification        = statusBarNotification.Notification;
                        Bundle       extras              = notification.extras;
                        string       notificationCallSid = extras.getString(CALL_SID_KEY);
                        if (callSid.Equals(notificationCallSid))
                        {
                            notificationManager.cancel(extras.getInt(NOTIFICATION_ID_KEY));
                        }
                    }
                }
                else
                {
                    /*
                     * Prior to Android M the notification manager did not provide a list of
                     * active notifications so we lazily clear all the notifications when
                     * receiving a cancelled call.
                     *
                     * In order to properly cancel a notification using
                     * NotificationManager.cancel(notificationId) we should store the call sid &
                     * notification id of any incoming calls using shared preferences or some other form
                     * of persistent storage.
                     */
                    notificationManager.cancelAll();
                }
            }
        }