עשיתי דה-קומפילציה לאפליקציה הזאת שאמרת CALL TRICKS
וראיתי מה הוא עשה שם.יש פה איזה טריק (כמו השם של האפליקציה..)
בעיקרון אתה צריך להתחיל Service כאשר אתה מזהה ששיחה נכנסת (ראיתי שאתה
כבר יודע איך עושים את זה)
בסרביס תחזיק איזשהו כפתור שאותו תצטרך להצמיד לWindowManager.
ואז תצטרך לעשות כמה פעולות על הLayoutParams של הWindowManager
הנה הדוגמא של הסרביס:
public class MyService extends Service { private Button button = null; private DisplayMetrics displayMetrics; @Override public IBinder onBind(Intent arg0) { return null; } @Override public int onStartCommand(Intent intent, int flags, int startId) { button = new Button(getApplicationContext()); button.setText("asdfasdfasdfsadf"); WindowManager.LayoutParams localLayoutParams = new WindowManager.LayoutParams(); localLayoutParams.format = WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON; localLayoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; localLayoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT; WindowManager localWindowManager = (WindowManager) getSystemService("window"); this.displayMetrics = new DisplayMetrics(); localWindowManager.getDefaultDisplay().getMetrics(this.displayMetrics); localLayoutParams.width = (this.displayMetrics.widthPixels / 4); localLayoutParams.height = (this.displayMetrics.heightPixels / 8); localWindowManager.addView(this.button, localLayoutParams); this.button.setOnClickListener(new View.OnClickListener() { public void onClick(View paramAnonymousView) { Toast.makeText(getApplicationContext(), "HEYYYYYYYYYY", Toast.LENGTH_SHORT).show(); } }); return super.onStartCommand(intent, flags, startId); } }
|
בלחיצה על כפתור תעשה מה שבא לך... אני הקפצתי TOAST לדוגמא
עכשיו.. הטריק הוא לשים בManifest את השורה הבאה
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
מקווה שעזרתי לך