کار با دوربین در اندروید

منتشرشده توسط حامد قنبری در تاریخ

اکثر دستگاه های اندروید دارای حداقل یک دوربین هستند. برخی از آنها  دارای یک دوربین جلویی و پشتی هستند و برخی دیگر فقط از یک دوربین آن هم در پشت دستگاه برخوردارند.شما نیز می توانید در برنامه های  خود از دوربین دستگاه اندرویدی خود استفاده کنید . در این مورد شما می توانید برنامه موجود دوربین را از طریق یک intent فراخوانی کرده و از طریق داده های بازگشتی (OnResultActivity (به نتیجه موردنظرتان دسترسی پیدا کنید.همچنین شما همچنین می توانید دوربین را به طور مستقیم از طریق API دوربین به برنامه خود متصل کنید،که این موضوع فعلاً  از مجال بحث ما خارج است.

در این روش شما بطور کلی از MediaStore.ACTION_IMAGE_CAPTURE برای راه اندازی یک برنامه دوربین (موجود در گوشی خود )استفاده خواهید کرد. که نحوه بکارگیری آن در ذیل امده است.

 

Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent,0);

به منظور درک بهتر این موضوع مثالی را برایتان آماده کرده ایم:

اگر در داخل برنامه اکلیپس یا اندروید استودیو قرار دارید پروژه جدیدی را  ایجاد کنید

اکلیپس :File ⇒ New Android ⇒ Application Project

اندروید استودیو :File ⇒ New  ⇒ New Project

اما اگر هنوز برنامه خود را باز نکرده اید یکی از برنامه های فوق را باز نموده و بعد از تعیین مشخصات(نامگذاری) ، تعیین حداقل sdk  و نوع اکتیویتی (blank  یا Empty) ، نام اکتیویتی ابتدایی و اصلی خود  را همان MainActivity قرار دهید. بعد از لود کامل برنامه ، در مسیر res ⇒layout لایه متناظر اکتیوتی اصلی یعنی activity_main را پیدا نمود و کدهای مندرج و پیش فرض آن را پاک کرده و کدهای xml  زیر را به آن اضافه کنید:

 

<LinearLayout 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:orientation="vertical"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="capture image camera" />

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
         />

</LinearLayout>

در لایوت فوق به منظور گرفتن عکس   button را تعریف کرده ایم که کاربر با لمس  آن به صفحه مربوط به دوربین هدایت خواهد شد و همچنین یک imageView تعریف کرده ایم که عکس گرفته شده در آن به نمایش خواهد درآمد.

حال به سراغ کلاس اصلی خود یا همان MainActivity  می رویم و کدهای زیر را در آن قرار می دهیم:

package com.psrd.example.media;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends Activity {

    public ImageView img;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        img = (ImageView)findViewById(R.id.imageView1);

        Button b = (Button) findViewById(R.id.button1);
        b.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
                startActivityForResult(intent, 0);
            }
        });
    }


    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        Bitmap bp = (Bitmap) data.getExtras().get("data");
        img.setImageBitmap(bp);
    }


}

 

حال برنامه را اجرا کرده و نتیجه کار خودر را ببینید.

 

 

 

 

   


0 دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

-- بارگیری کد امنیتی --