چگونه تماس تلفنی با اندروید بگیریم؟ به خاطر این که اکثر دستگاه های اندرویدی از سیم کارت پشتیبانی می کنند و قابلیت تماس دارند اندروید کتابخانه های مفید و پراستفاده ای را برای کار با تماس در اختیار برنامه نویسان قرار داده است. همچنین اندروید یک برنامه داخلی برای انجام تماس ها دارد. با توجه به این که ممکن است در برنامه هایی که در اندروید می نویسیم نیاز به تماس صوتی و تماس تلفنی داشته باشیم پس در این مطلب در مورد تماس گرفتن در اندروید صحبت می کنیم.
برای تماس تلفنی می توانیم از intent های ضمنی تماس و ورودی ها و اکشن های مناسب استفاده کرد. همچنین راه دیگر تماس استفاده از تماس تلفنی استفاده از کلاس های PhoneStateListener و TelephonyManager استفاده کنیم. این کلاس ها برای نظارت بر تماس ها و تغییرات هنگام تماس در دستگاه استفاده می شود. در ادامه این روش ها را توضیح می دهیم و می گوییم که با هر کدام به چه شکل کار می کنیم.
در مطالب قبل نحوه ی کار با intent ها را توضیح داده ایم. و گفته ایم که برای این که از یک activity به اکتیویتی دیگری منتقل شویم از intent ها استفاده می کنیم. همچنین گفتیم که برای انتقال به اکتیویتیهای مخصوص مانند ارسال و پیامک و تماس هم از intent ها استفاده می کنیم. اکشنی که برای کار با intent ها به کار می رود و برای تماس استفاده می شود ACTION_CALL می باشد. این اکشن اکتیویتی مربوط به تماس را لود می کند. برای ساخت این intent از کد زیر استفاده می شود.
Intent phoneIntent = new Intent(Intent.ACTION_CALL);
در کد بالا یک شماره به intent پاس داده می شود که در صورت استارت کردن اکتیویتی شماره مورد نظر توسط دستگاه شماره گیری می شود. حال در کد بالا می توان به جای اکشن ACTIONCALL از اکشن ACTIONDIAL استفاده کرد. در این صورت به جای این که مستقیم شماره گیری شود قسمت شماره گیری دستگاه ظاهر می شود و شماره را نیز در صفحه شماره گیری نشان می دهد. حال اگر کاربر قصد داشته باشد که شماره را تغییر بدهد می تواند این کار را به راحتی انجام بدهد. زیرا که هنوز شماره گرفته نشده و فقط صفحه شماره گیری ظاهر شده و شماره گرفته شده است. حال نحوه شماره گیری و مقداردهی به intent هم مهم است. برای مقداردهی شماره به intent باید از متد setData استفاده کنیم و ورودی آن را در قالب یک URI می باشد. نحوه آدرس دهی این URI به شکل زیر است.
phoneIntent.setData(Uri.parse("tel:09121234567"));
در کد بالا شماره تلفن باید جلوی کلمه tel آمده باشد. برای این که قسمت تماس گرفتن شروع به کار کند باید از متد زیر استفاده شود
startActivity(phoneIntent);
برای این که یک مثال از برقراری تماس تلفنی بزنیم یک پروژه جدید اندرویدی می سازیم و مشخصات آن را به شکل زیر مشخص می کنیم. ابتدا در اکتیویتی main یک دکمه قرار می دهیم. مانند کد زیر
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/buttonCall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="call 09121234567" /> </LinearLayout>
حال باید در قسمت androidManifest.xml باید مجوز تماس تلفنی را دریافت کنیم. به همین دلیل خط کد زیر را در این فایل بنویسیم.
<uses-permission android:name="android.permission.CALL_PHONE" />
حال باید در کد جاوای اکتیویتی کد زیر را بنویسید.
public class MainActivity extends AppCompatActivity { private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button) findViewById(R.id.buttonCall); button.setOnClickListener(new View.OnClickListener() { public void onClick(View arg0) { Intent callIntent = new Intent(Intent.ACTION_CALL); callIntent.setData(Uri.parse("tel:۰۹۱۲۱۲۳۴۵۶۷")); if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { return; } startActivity(callIntent); } }); } }
در کد بالا نگاه می کنیم که اگر مجوز تماس به ما داده شده باشد پس تماس را شروع می کنیم. حال اگر این برنامه را اجرا کنیم یک دکمه در صفحه دیده می شود که اگر بر روی آن کلیک کنیم شماره مورد نظر گرفته خواهد شد.
بنیانگذار توسینسو و برنامه نویس
مهدی عادلی، بنیان گذار TOSINSO. کارشناس ارشد نرم افزار کامپیوتر از دانشگاه صنعتی امیرکبیر و #C و جاوا و اندروید کار می کنم. در زمینه های موبایل و وب و ویندوز فعالیت دارم و به طراحی نرم افزار و اصول مهندسی نرم افزار علاقه مندم.
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود