تماس های ورودی و خروجی در اندروید

اولین کار برای اینکه بتونیم به تماس های ورودی و خروجی در اندروید دسترسی داشته باشیم اضافه کردن مجوز دسترسی به تماس ها در فایل AndroidManifest.xml است :

  • ساخت کلاس CallReceiver :

برای دریافت تماس های ورودی و خروجی در اندروید باید یک رسیور تعریف کنیم تا حالت های مختلف تماس رو بتونیم کنترل کنیم . اسم کلاس رو CallReceiver میذارم :

برای اینکه این کلاس رسیور ما بتونه تغییرات رو دریافت کنه باید اون رو به عنوان رسیور در فایل AndroidManifest.xml اضافه کنیم :

دوتا action برای این رسیور تعریف کردیم . این دوتا action مشخص میکنن که این رسیور چه رویدادهایی رو باید دریافت کنه یا بهشون پاسخ بده .

تماس ها در اندروید سه حالت دارند :

  1. در حال زنگ خودرن : Ringing
  2. در حال مکالمه یا جواب دادن تماس : Offhook
  3. قطع شدن تماس یا رد تماس :Idle

برای اینکه بتونیم تشخصی بدیم که کدوم یکی از حالت های بالا اتفاق افتاده به صورت زیر عمل میکنیم :

تشخیص تماس های خروجی با دریافت تماس های ورودی فرق داره . برای تشخصی تماس های خروجی نیاز به مجوز PROCESS_OUTGOING_CALLS در فایل AndroidManifast.xml داریم که در ابتدای این آموزش این کار رو انجام دادیم . حالا باید ببینیم که چطوری میشه فهمید که تماس خروجی گرفته شده ؟ ینی یوزر خودش با یک شماره تماس گرفته :

از سه حالتی که برای تماس های ورودی گفتم فقط دو حالتش برای تماس خروجی قابل استفاده است و حالت Ringing برای تماس های خروجی کاربرد نداره.

حالا سوال اینجاست که چطوری بفهمیم این دو حالت برای کدوم یکی از تماس هاست ؟ مثلا وقتی حالت Idle اتفاق افتاد ینی تماس قطع شد برای تماس دریافتی بوده یا تماس خروجی ؟!

برای تشخیص این حالت باید دو نوع state تعریف کنیم ، currenState و firstState .

firstState مشخص میکنه که اولین state ی که اتفاق اتفاده چی بوده مثلا تلفن درحال زنگ خوردنه یا اینکه یوزر داره تماس میگیره .

currenState هم حالت های offhook و Idle رو مشخص میکنه .

به این مطلب چه امتیازی میدهید ؟

اشتراک
باخبر شدن از
guest
4 Comments
Inline Feedbacks
View all comments
navid

سلام خسته نباشید . ببخشی اگه بخوایم زنگ بزنیم به کسی باید چیکارکنیم

فاطمه

خواهش میکنم این مطالب رو به پستتون اضاف کنید
خیلی جالب و خوب نوشتین

1. اگه بخوايم کدی بنویسم که زمان مکالمه رو محاسبه کنه
و زمان رو به شماره تلفن تماس گیرنده یا تماس شونده نسبت داد
2. در آخر آماری از مکالمات با شماره رو داشته باشیم ( جمع زد مکالمات رو)
3. چطور میشه اولین تاریخ تماس و آخرین تاریخ تماس رو برای شماره مورد نظر ثبت کرد
4. و اینکه از مخاطبین نام شماره مورد نظر رو دریافت کرد