به نام خدا.امروز میخواهیم کار با دروبین ها رو در برنامه نویسی اندروید شروع کنیم،کار با دوربین ها (Camera) در اندروید خیلی ساده است در این پروژه باهم با نحوه کارکردن با دوربین در محیط برنامه نویسی و کدنویسی اون بیشتر اشنا میشیم.درو شروع کار یک دکمه بروی لاهی خودم می کشم،وظیفه این دکمه فعال کردن دوربین با استفاده از اینتنت هست. بعد از قرار دادن دکمه یک Imageview بروری لایه خودم قرار میدیم و مقدار layout_width رو fill_parent قرار دادم تا عرض نمایشگرعکس کامل باشه و مقدار layout_height رو match_parent قرار دادم تا خودش رو با دکمه و لایه مچ کنه.سوالی که ممکنه برای دوستان پیش بیاد اینکه خاصیت layout_below کارش چیه؟این خاصیت وظیفه داره که Imageview رو در زیر باتن قرار بده، میبینید که ادرس باتن هم در مقدار دهی خاصیت نوشته شده.در فرهنگ لغت below به معنی زیر و پایین است.
کدهای کامل بخش activity_main.xml رو در زیری میبینید.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="27dp" android:text="aks ghreftan" /> <ImageView android:id="@+id/imageView1" android:layout_width="fill_parent" android:layout_height="match_parent" android:layout_below="@+id/button1" android:layout_centerHorizontal="true" android:layout_marginTop="14dp" /> </RelativeLayout>
بعد از طراحی لایه برنامه میریم به بخش MainActivity.java و نوشتن کدهای جاوای برنامه.میبینید که من در بالای متد onCreate و در قسمت شروع دستور public class MainActivity extends Activity یک مقدار ثابت برای دوربین تعریف کردم تا هر وختی که اکتویتی بالا اومد برنامه اماده اجرا بشه.بعد ایمیج ویو (Imageview) رو به صورت گلوبال (global) تعریف کردم تا در همه قسمت های برنامه مورد استفاده باشه.کدهای کامل بخش MainActivity.java
public class MainActivity extends Activity { private static final int CAMERA_REQUEST = 1; ImageView image; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button photoButton = (Button) findViewById(R.id.button1); image = (ImageView) findViewById(R.id.imageView1); photoButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(cameraIntent, CAMERA_REQUEST); } }); } protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == CAMERA_REQUEST) { Bitmap photo = (Bitmap) data.getExtras().get("data"); image.setImageBitmap(photo); } }
می بینید که دکمه برنامه رو معرفی کردم بعد از اون هم ایمیج ویو.در ادامه نوبت به نوشتن یک رویداد کلیک برای دکمه است که با دستور setOnClickListener کاملش میکنم.در قسمت بعد نوشتن اینتنت هست که اطلاعات رو از برنامه بگیره و به MediaStore بفرسته، بعد با دستور startActivityForResult اینتنت رو به دوربین ارجا میدیم تا فعال بشه.سپس یک متد جیدی ایجاد میکنیم به اسم onActivityResult تا اطلاعاتی رو که از دوربین میگیره رو به فایل تصویری تبدیل کنه و در Imageview نمایش بده.