2012-05-21 3 views
15

날씨 정보와 같은 화면에서 통화 중에 일부 정보를 표시하거나 그와 같은 Facebook 업데이트가 도움이 될 수 있습니다.통화 도중 정보 표시

내가 원하는 업데이트의 스크린 샷을 참조하십시오.

enter image description here

답변

20

검사 사용자 정의 건배하고 사용자 정의 토스트를 통해 업데이트를 보여 그 토스트 다른 통화 states.Instead을 보여주는 건배를 볼 수있는 대답이 stack overflow answer .IN. 당신이

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; 
      } 
     }  
    } 

화면을 호출 기본에 터치를 활성화하기위한 활동이를 추가하려면 CustomPhoneStateListener에이 코드를 시도하는 대신 토스트의 활동을 표시하려는 경우

.

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

이 함수가 호출 화면과 팝업 모두 터치를 줄 것이다

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"); 
} 

내가 하란 터치를 acivating에 대한 해결책을 찾을 수없는 시도

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

매니페스트 파일에이 권한을 추가 두 가지 activity.if에 대한 참조를하면 ..... –

+0

나는 그것을 시도 ... 그 작품 괜찮아요. 전화 화면과 팝업 모두에 터치를 잡아 ... 나는 대답에 함수를 추가 ... 그 기능을 추가 ~에 customphonestatelistner (울리는 중) .URL 코드 및 연구용 감사 ... :) –

+0

answer.addInvitePopup 함수를 추가하여 customphonestatelistner 클래스에 해당 함수를 추가하고 'case like TelephonyManager.CALL_STATE_RINGING : addInvitePopup ("hai" 기음);' customphonestatelistner (그 대답도 덧붙였다)에서 그 경우 –