android phone-call

android - Mostrar la información en medio de la llamada.



phone-call (1)

consulte esta respuesta de desbordamiento de pila . En esa respuesta puede ver un brindis con diferentes estados de llamada. En lugar de eso, haga un brindis personalizado y muestre sus actualizaciones a través de ese brindis personalizado.

Si desea mostrar una actividad en lugar de un brindis, pruebe este código en su CustomPhoneStateListener

public class CustomPhoneStateListener extends PhoneStateListener { ActivityManager activityManager; Intent i1; public CustomPhoneStateListener(Context context) { super(); this.context = context; i1 = new Intent(context, TelephoneyWithoutToastActivity.class); i1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); } @Override public void onCallStateChanged(int state, String incomingNumber) { super.onCallStateChanged(state, incomingNumber); switch (state) { case TelephonyManager.CALL_STATE_IDLE: //when Idle i.e no call Toast.makeText(context, "Phone state Idle", Toast.LENGTH_LONG).show(); break; case TelephonyManager.CALL_STATE_OFFHOOK: //when Off hook i.e in call //Make intent and start your service here Toast.makeText(context, "Phone state Off hook", Toast.LENGTH_LONG).show(); break; case TelephonyManager.CALL_STATE_RINGING: ActivityManager localActivityManager = (ActivityManager) this.context.getSystemService("activity"); for (String str = ((ActivityManager.RunningTaskInfo) localActivityManager.getRunningTasks(1).get(0)).topActivity.flattenToString();; str = ((ActivityManager.RunningTaskInfo) localActivityManager.getRunningTasks(1).get(0)).topActivity.flattenToString()) { if ((!str.contains("com.android.phone.InCallScreen"))) continue; Log.d("IncomingCallPlus", "*****************************************************"); context.startActivity(i1); return; } default: break; } } }

agréguelo a su actividad para activar el toque en la pantalla de llamadas predeterminada.

getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE); getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);

Esta función le dará un toque tanto en la pantalla del llamante como en la ventana emergente

public void addInvitePopup(final String number, Context c) { //check if pref is ok with invite in call // if(!Preferences.getInstance(c.getInviteInCall())){return ; } // sets the WindowManager WindowManager wm = (WindowManager) c.getSystemService(Context.WINDOW_SERVICE); WindowManager.LayoutParams params = new WindowManager.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.TYPE_SYSTEM_ALERT | WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, PixelFormat.TRANSLUCENT); params.x = 250; params.height = LayoutParams.WRAP_CONTENT; params.width = LayoutParams.WRAP_CONTENT; params.format = PixelFormat.TRANSLUCENT; final Context ct = c; params.gravity = Gravity.TOP; params.setTitle("Testing"); LinearLayout ly = new LinearLayout(c); ly.setOrientation(LinearLayout.VERTICAL); Button inviteButton = new Button(c); inviteButton.setClickable(true); inviteButton.setBackgroundDrawable(c.getResources().getDrawable(R.drawable.ic_launcher)); inviteButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(v.getContext(), "adding to blacklist..", Toast.LENGTH_LONG).show(); v.setBackgroundDrawable(ct.getResources().getDrawable(R.drawable.images)); v.setClickable(false); // sendMessage(v, number); //Track this event: //MixPanelTracking.setPropKeyValue(getApplicationContext(), null, null, "Add friend - During Call"); } }); inviteButton.setWidth(30); inviteButton.setHeight(30); // inviteButton.setLayoutParams(WindowManager.LayoutParams.WRAP_CONTENT, // WindowManager.LayoutParams.WRAP_CONTENT); ly.addView(inviteButton); wm.addView(ly, params); // wm.addView( inviteButton, params); Log.i("TTT", "after add view"); }

agregar este permiso en el archivo de manifiesto

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

Quiero mostrar algo de información en medio de una llamada en esa pantalla, como información del tiempo o actualizaciones de Facebook como esas, alguien puede ayudarme.

Vea la captura de pantalla a continuación de la actualización que quiero.