Окно активности на стандартном экране вызова - включить кнопки - PullRequest
3 голосов
/ 02 ноября 2010

Я хотел бы добавить небольшое окно (всплывающее окно) на экране активности вызова. Google voice и worldcallplaceandtime добавляют одно и то же окно во время разговора.

Проблема в том, что когда я открываю новое действие в верхней части экрана, остальные кнопки отключаются (Завершить, Отключить звук и т. Д.). Единственный вариант нажать кнопку завершения вызова - это только когда я закрываю новое действие, которое было добавлено.

Может кто-нибудь сказать, пожалуйста, как я могу добавить небольшое окно на экране и при этом использовать стандартные кнопки вызова?

Ответы [ 2 ]

0 голосов
/ 21 марта 2012

Если я использую это, я получаю исключение при использовании removeInvitePopup() в состоянии IDLE. Кнопка закрытия приглашения не исчезает, когда вы пропускаете звонок

0 голосов
/ 25 сентября 2011

Это код, который я использовал для добавления кнопки наложения на экран вызова без отключения кнопок.Я надеюсь, что это помогает ..

    public void addInvitePopup(final String number){
    //check if pref is ok with invite in call
    if(!Preferences.getInstance(getApplicationContext()).getInviteInCall()){return ; }
    // sets the WindowManager
    wm = (WindowManager) getApplicationContext().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;


    params.gravity = Gravity.TOP;
    params.setTitle("Testing");

    ly = new LinearLayout(getApplicationContext());
    ly.setOrientation(LinearLayout.VERTICAL);

    Button inviteButton = new Button(getApplicationContext());
    inviteButton.setClickable(true);
    inviteButton.setBackgroundDrawable(getResources().getDrawable(R.drawable.invite_incall_off));
    inviteButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Toast.makeText(v.getContext(), "Inviting by free SMS..", Toast.LENGTH_LONG).show();
            v.setBackgroundDrawable(getResources().getDrawable(R.drawable.invite_incall_on));
            v.setClickable(false);
            sendMessage(v, number);

            //Track this event:
            MixPanelTracking.setPropKeyValue(getApplicationContext(), null, null, "Add friend - During Call");
        }
    });

    //closeInviteButton. ///////////////////////
    closeInviteButton = new Button(getApplicationContext());
    closeInviteButton.setClickable(true);
    //closeInviteButton.setGravity(Button.);
    closeInviteButton.setBackgroundDrawable(getResources().getDrawable(R.drawable.close_invitebutton_off));
    closeInviteButton.setWidth(30);
    closeInviteButton.setHeight(30);
//  closeInviteButton.setLayoutParams(WindowManager.LayoutParams.WRAP_CONTENT,
//          WindowManager.LayoutParams.WRAP_CONTENT);

    closeInviteButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            removeInvitePopup();
            //Add to Preferences:
            //Preferences.getInstance(v.getContext()).setInviteInCall(false);
            //Track this event:

        }
    });
    ////////////////////////////////////////////
    ly.addView(inviteButton);

    wm.addView(ly, params);
    wm.addView(closeInviteButton, params);
    Log.i("TTT", "after add view");
}
public void removeInvitePopup(){
    if(ly != null){
        wm.removeView(ly);
        wm.removeView(closeInviteButton);
        ly =  null;
        closeInviteButton = null;
    }
}
...