آموزش اندروید استودیوآموزش های برنامه نویسی اندروید
آموزش برنامه نویسی اندروید با اندروید استودیو (بخش چهل و نهم: PhoneCall )
PhoneCall در برنامه نویسی اندروید به ما اجازه می دهد که بتوانیم قابلیت تماس را به اپلیکیشن اندرویدیمان اضافه نماییم.
برای این پروژه ما از Intent که در بخش قبلی آن را آموزش دادیم ، استفاده می کنیم. زیرا Intent قادر است داده ای را به صورت پیام به activity دیگری بفرستد.
ما برای تماس به اکتیویتی تماس احتیاج داریم. پس مقدار شماره را به این اکتیویتی با استفاده از اینتنت می فرستیم.
این آموزش را به ساده ترین نحو پیش می بریم.
برای این کار یک EditText ایجاد می کنیم. کاربر می تواند شماره ای که می خواهد با آن تماس بگیرد را در EditText وارد نماید.
شماره ی داخل EditText را به ACTION_Dial می فرستیم. ACTION_DIAL وظیفه ی عملیات تماس را دارد.
پس از بررسی ساختار کاری که می خواهیم انجام دهیم به سراغ پروژه ای که می خواهیم بنویسیم می رویم.
من یک پروژه به نام PhoneCall-Gsm در اندروید استودیو ایجاد می کنم.
به آیدی این ابزار “PhoneText” را بدهید. (ID=PhoneText)
ابزار دیگری که می خواهیم با استفاده از آن دستور تماس را به اپلیکیشن بدهیم، دکمه Button است.
یک Button به لایه اپلیکیشن خود اضافه کرده و نام آن را ( و نه آیدی) Call بذارید.
البته تغییرات آیدی و نام برای زیبایی بهتر در برنامه نویسی است. شما می توانید نامی دلخواه بدهید.
می توانید کد دو ابزاری که من اضافه کردم را در زیر مشاهده نمایید:
<EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="phone" android:ems="10" android:id="@+id/PhoneText" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="171dp" /> <Button android:text="Call" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/PhoneText" android:layout_centerHorizontal="true" android:layout_marginTop="34dp" android:id="@+id/button" />
به سراغ قسمت کدنویسی جاوای پروژه می رویم.
ابتدا باید دو ابزار Phone که یک EditText است و دکمه Button را به قسمت جاوای برنامه معرفی کنم.
پس دو شی EditText و Button خارج از متد ()onCreate به صورت سراسری ایجاد می کنم.
EditText myPhoneText; Button myButton;
حال در متد ()onCreate این دو شی را با استفاده از آیدی هایی که در لایه اپلیکیشن به دو ابزارمان دادیم، مقدار دهی میکنم.
myPhoneText =(EditText)findViewById(R.id.PhoneText); myButton =(Button)findViewById(R.id.button);
در مرحله ی بعدی یک رویداد Listener برای دکمه ایجاد می کنم تا وقتی بر روی دکمه Button کلیک شد، عملیاتی که می خواهیم را برای ما انجام دهد.
myButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { String number = myPhoneText.getText().toString(); Intent callIntent = new Intent(Intent.ACTION_DIAL); callIntent.setData(Uri.parse("tel:"+number)); startActivity(callIntent); } });
در کد بالا ابتدا با استفاده از متد ()getText().toString ، شماره ای که در ابزار phone وجود دارد، به رشته تبدیل شده و به متغیر number که یک نوع رشته است داده می شود.
این کار لازم است زیرا ما می خواهیم پیام را در Intent به صورت رشته ارسال نماییم.
سپس یک شی به نام callIntent از نوع Intent می سازیم و Intent.ACTION_DIAL را به آن نسبت می دهیم.
در قسمت بعدی با استفاده از متد setData که در کلاس Intent وجود دارد، شی callIntent را مقداردهی می کنیم.
(در این قسمت شماره number که داده ایم ، به عنوان یکی از پارامترهای شی callIntent مورد استفاده قرار می گیرد)
در آخر با استفاده از متد startActivity این اکتیویتی را شروع می کنیم.
کد کامل MainActivity
package com.gsm_developers.phonecall_gsm; import android.content.Intent; import android.net.Uri; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; public class MainActivity extends AppCompatActivity { EditText myPhoneText; Button myButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myPhoneText = (EditText) findViewById(R.id.PhoneText); myButton = (Button) findViewById(R.id.button); myButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { String number = myPhoneText.getText().toString(); Intent callIntent = new Intent(Intent.ACTION_DIAL); callIntent.setData(Uri.parse("tel:"+number)); startActivity(callIntent); } }); } }