سرویس های تلفن و اس ام اس در برنامه نویسی اندروید

ساخت وبلاگ

چه مطالبی در این فصل گنجانده شده است؟

  • برقراری تماس های تلفنی
  • خواندن اطلاعات تلفن، شبکه، اتصال داده و وضعیت تلفن
  • مانیتورینگ تغییر تلفن، شبکه، اتصال داده، و وضعیت تلفن
  • استفاده کردن از اینتنت Intent برای ارسال اس ام اس SMS  و ام ام اس MMS
  • استفاده از SMS Manager برای ارسال اس ام اس SMS
  • بدست گرفتن کنترل اس ام اس های دریافتی

در این فصل، شما طرز استفاده از ای پی آی های تلفنی اندروید(Android telephony APIs ) برای مانیتورینگ صدای موبایل و اتصال داده و تماس های ورودی و خروجی و ارسال و دریافت پیغام های اس ام اس را یاد میگیرید.

اندروید همچنین دسترسی کامل به اجرائیات اس ام اس را میسر کرده است، به شما اجازه میدهد که اس ام اس را از اپلیکیشن خودتان ارسال و یا دریافت کنید. استفاده از ای پی آی های اندروید(Android telephony APIs)، به شما اجازه میدهد که اپلیکیشن های کلاینت اس ام اس را بسازید و جایگزین برنامه کلاینت اصلی گوشی شود.متناوبا، شما میتوانید از قابلیت های پیام رسانی در اپلیکیشن خود استفاده بکنید تا یک برنامه اجتماعی قوی بر پایه اس ام اس باشد.

در انتهای این فصل شما با استفاده از اس ام اس منیجر (SMS Manager) یاد میگیرید که یک اپلیکیشن پیام رسان در حالت اضطراری بسازید.در حالت اضطراری پیام رسان بصورت خودکار یا دستی پیام برای مخاطبین تان میفرستد تا به کمک شما بشتابند.

TELEPHONY

ای پی ای های تلفنی اندروید (Android telephony APIs) به شما اجازه دسترسی به لایه سخت افزار تلفن و امکان ساخت تماس گیر برای خودتان را میدهد و یا یکپارچه کردن تماس ها و کنترل وضعیت تلفن را در اپلیکیشن شما می دهد.

در قسمت های بعدی بر مانیتورینگ و کنترل تلفن و سرویس و وقایع تلفن در اپلیکیشن خود برای مدیریت کنترل اصلی تلفن تمرکز میکنیم.اگر شما مایل باشید و با استفاده از این تکنیک هایی که میدیم شما میتوانید تماس گیر خودتان را بسازید و جایگزین تماس گیر اصلی گوشی کنید.

راه اندازی تماس گیر برای برقراری تماس های تلفن

بهترین تمرین استفاده از اینتنت(Intents) برای راه اندازی تماس گیر برای برقراری تماس تلفنی است.از اینتنت(Intents) برای راه اندازی و باز کردن تماس گیر استفاده بکنید; شما باید شماره تماس را با استفاده ازtel:  که بعنوان کامپوننت دیتا است مشخص کنید.

با استفاده از Intent.ACTION_DIAL شما میتوانید تماس گیر را اجرا کنید بجای اینکه شماره را دستی وارد کنید.

این اکشن تماسگیر را اجرا میکند و شماره ای که در برنامه وارد کرده اید را وارد خودش میکند اما این اجازه را به شما میدهد تا تماس را مدیریت کنید.این اکشن به هیچ اجازه ای (permission) نیازی ندارد و اپلیکیشن های استاندارد بایستی تماس ها را برقرار کننند.

کد 12-1 تماس با یک شماره :

با استفاده از اینتنت قصدتان را به تماس یک شماره اعلام میدارد، اپلیکیشن شما جدا از اجرائیات تماس گیر استفاده شده،

به برقراری تماس باقی میماند.

برای مثال: اگر شما به جایگزینی تماس گیر موجود با یک ترکیبی که اجازه تلفنی IP-based را میدهد بکنید، با استفاده از اینتنت برای برقراری تماس یک شماره از اپلیکیشن های دیگر شما باعث خواهد شد این قابلیت تماسگیر جدید را به قدرت بگیرید.

 

جایگزینی کردن تماس گیر اصلی یا پیش فرض

جایگزینی کردن تماس گیر اصلی شامل دو مرحله است:

  1. جلوگیری از اینتنت هایی که در حال حاضر توسط تماس گیر اصلی دارند سرویس داده میشوند.
  2. راه اندازی و مدیریت اختیاری تماس های خروجی

اپلیکیشن تماس گیر اصلی در حال حاضر به اینتنت اکشن هایی که با فشار دکمه  تماس همخوانی دارند اکشن نشان میدهد، درخواست برای نمایش اطلاعات با استفاده از پیش نویس tel:  ویا یک درخواست برقراری تماس با استفاده از tel:  انجام می دهد.

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

  • Intent.ACTION_CALL_BUTTON این اکشن موقه ای که دکمه سخت افزار تماس فشار داده می شود منتشر میکند.یک اینتنت فیلتر برای این اکشن به عنوان پیشفرض درست کنید.

Intent.ACTION_DIAL این اینتنت که در قسمت قبل هم توضیحاتی در مورد آن دادیم، این اینتنت در اپلیکیشن هایی استفاده می گردد که می خواهند تماس گیر را برای ایجاد تماس راه اندازی کنند. اینتنت فیلتر استفاده شده

  • برای ضبط  این اینتنت بایستی هم defaultو هم browsable باشد(برای پشتیبانی از درخواست تماس از مرورگر)، و باید پیش نویس tel:  را مشخص کند تا با قابلیت های تماسگیر پیشین جایگزین گردد( پس میتواند پیش نویس های بیشتری را ساپورت کند)
  • Intent.ACTION_VIEW اکشن ویو برای نمایش قسمتی از اطلاعات توسط اپلیکیشن مورد استفاده قرار میگیرد.مطمئن شوید که اینتنت فیلتر با پیش نویس tel:  را در اکتیویتی مورد نظر برای اجازه نمایش شماره تلفن ها وارد کرده باشید.

کد های مانیفست پایین مثالی از اینتنت فیلتر و اکشن های مورد نظر را نمایش میدهد:

یک بار که اپلیکیشن شما استارت بخورد ان موقه می توانید به کاربران اجازه وارد کردن یا تغییر شماره جهت تماس و آماده سازی تماس خروجی را بدهید.

ساده ترین تکنیک این است که از استکstack  تلفن موجود استفاده بکنید.در این منوال شما میتوانید از اکشن Intent.ACTION_CALL جهت آماده سازی تماس  با استفاده از اکتیویتی استاندارد و اجازه بدهید که سیستم، تماس و اتصال و صدا را کنترل بکند، استفاده بکنید.اپلیکیشن شما حتما باید اجازه  CALL_PHONE از

  uses-permission را در مانیفست manifest دارا باشد.

متناوبا، شما میتوانید بطور کامل استک تلفن تماس های خروجی را با فریمورک کنترل صدا و تماس خودتان  تعویض کنید.این بهترین چیزی است اگر شما در حال اجرای یک اپلیکیشین  VOIP(voice over IP) باشید.البته این توضیحات خارج از این توضیحات من خواهد بود.

همچنین شما میتوانید با سد معبر این اینتنت ها تماس های خروجی را ویرایش یا مسدود و بطور کامل صفحه تماس گیر را تعویض کنید.

دسترسی به مشخصات و وضعیت تلفن و شبکه

دسترسی به ای پی آی های تلفن توسط Telephony Manager مدیریت میشود با استفاده از متد getSystemService میتوانید دسترسی داشته باشید.کد 2-12 دسترسی به مدیر تلفنی

Manager اجازه دسترسی به مشخصات زیادی از تلفن ، دستگاه، شبکه، سیم، وضعیت دیتا را میدهد.

 خواندن مشخصات دستگاه تلفن

با استفاده ازTelephony Manager  شما میتوانید نوع تلفن(GSM or CDMAID منحصر بفرد(IMEI,MEID)، ورژن نرم افزار، و شماره تلفن را بدست آورید!

توجه کنید که بجز نوع تلفن، برای خواندن هر کدام از این مشخصات نیاز به گنجاندن اجازه :

READ_PHONE_STATE uses-permission

در مانیفست شما می باشد:

کد 3-12 خواندن مشخصات تلفن :

خواندن وضعیت انتقال و اتصال داده

با استفاده از دو متد getDataState and getDataActivity شما میتوانید وضعیت اتصال دیتای در حال حاضر و اکتیویتی انتقال را طبق کد 12-4 بدست آورید.

در کل شما میتوانید استفاده های زیادی از خواندن وضعیت انتقال و اتصال داده را بکنید.در ادامه با کنترل و مانیتورینگ هر دو آشنا خواهید شد.

کد 12-4 خواندن اتصال داده تلفن و انتقال داده

خواندن جزییات شبکه

هنگامی که به یک شبکه متصل هستید، شما میتوانید با استفاده از Telephony Manager به خواندن کد کشور و شبکه موبایل(MCC+MNC) ، ایزو کد کشور، و نوع شبکه ای که به آن متصل هستید بپردازید.

این دستورات تنها زمانی که شما به یک شبکه موبایل متصل هستید جواب میدهند.برای بدست آوردن اینکه شما به چه شبکه ای متصل هستید میتوانید با دستوری که بالا ذکر شد( getPhoneType ) بدست بیاورید.

کد 12-5 طریقه خروج جزئیات شبکه و لیستی از انواع اتصال شبکه را نمایش میدهد

خواندن جزئیات سیم کارت

اگر اپلیکیشن شما بر روی دستگاه GSM که سیم کارت دارد نصب است. شما میتوانید با کوئری زدن به جزئیات سیم کارت با Telephony Manager، ایزو کد کشور، نام اپراتور، اپراتورMCC(mobile country code)، وMNC(mobile network code) برای سیم کارتی که بروی دستگاه نصب میباشد را بدست آورید.این جزئیا برای اینکه اگر شما میخواهید به کاربر جئیات سیم کارت را نشان دهید و یا اینکه اپ شما بخواهد از این جزئیات استفاده بکند و در نهایت یک عملی انجام دهد خیلی مفید واقع خواهد شد.

شما حتی میتوانید شماره سریال سیم کارت نصب شده بر روی دستگاه تلفن را بدست بیاورید. فقط دقت کنید که مجوزی(READ_PHONE_STATE usespermission) که باید توی مانیفست وارد کنید را فراموش نکرده باشید:

قبل از استفاده از همه ی آن کد های بالا باید ببینید که سیم کارت در وضعیت آماده باشد! و این کار توسط کدهای زیر میتوانید مشخص کنید:

کد 12-6 خواندن جزئیات سیم کارت

مانیتورینگ تغییرات در وضعیت تلفن، اکتیویتی تلفن، و اتصال داده

API تلفن اندروید به شما اجازه مانیتور کردن وضعیت تلفن، برگرداندن شماره های ورودی تلفن ورودی، و مشاهده تغییرات اتصال داده، قدرت سیگنال، و اتصال شبکه را میدهد.

به منظور مانیتورینگ و مدیریت وضعیت تلفن، اپلیکیشن شما باید اجازه زیر را در فایل مانیفست معرفی کرده باشد.

"android.permission.READ_PHONE_STATE"/>

تغییرات توی وضعیت تلفن توسط کلاس PhoneStateListener مانیتورینگ میشود.توسعه دادن phone state listener

برای شنیدن، و پاسخ دادن به، وقایع تغییر وضعیت تلفن شامل وضعیت تماس(ringing, ff hook,..)، تغییرات مکان تلفن، وایس میل(voice-mail)، و وضعیت انتقال تماس، تغییرات سرویس تلفن، تغییرات در قدرت سیگنال موبایل.

برای واکنش دادن به وقایع تغییر وضعیت تلفن، یک اجرا کننده phone state listener بسازید،

ادامه دارد...

 

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

برچسب : نویسنده : 1mohammadi1366f بازدید : 757 تاريخ : يکشنبه 7 ارديبهشت 1399 ساعت: 7:14