کار با دوربین (camera) در برنامه نویسی اندروید

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
فهرست مطالب:

  1. رفتن به صفحه (برنامه) مربوط به دوربین گوشی (camera) برای عکس گرفتن، با کدنویسی، در برنامه نویسی اندروید
  2. رفتن به صفحه (برنامه) مربوط به دوربین گوشی (camera) و نمایش عکس گرفته شده، در یک ImageView در خود برنامه اندروید
  3. بررسی اینکه آیا گوشی اندروید دارای دوربین (camera) می باشد یا خیر


منبع: kelidestan
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
رفتن به صفحه (برنامه) مربوط به دوربین گوشی (camera) برای عکس گرفتن، با کدنویسی، در برنامه نویسی اندروید

رفتن به صفحه (برنامه) مربوط به دوربین گوشی (camera) برای عکس گرفتن، با کدنویسی، در برنامه نویسی اندروید

با استفاده از کد زیر، کاربر به برنامه مربوط به دوربین گوشی (camera) هدایت می شود که در آنجا می تواند عکس بگیرد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]Intent intent [COLOR=#339933]=[/COLOR] [B]new[/B] Intent[COLOR=#009900]([/COLOR]android.[COLOR=#006633]provider[/COLOR].[COLOR=#006633]MediaStore[/COLOR].[COLOR=#006633]ACTION_IMAGE_CAPTURE[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
startActivityForResult[COLOR=#009900]([/COLOR]intent,[COLOR=#CC66CC]0[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
بنابراین با اجرای کد فوق، صفحه (برنامه) مربوط به دوربین گوشی نمایش داده می شود :

634.jpg
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
رفتن به صفحه (برنامه) مربوط به دوربین گوشی (camera) و نمایش عکس گرفته شده، در یک ImageView در خود برنامه اندروید

رفتن به صفحه (برنامه) مربوط به دوربین گوشی (camera) و نمایش عکس گرفته شده، در یک ImageView در خود برنامه اندروید

در این مبحث، یک برنامه اندروید می سازیم که در آن، کاربر بر روی یک دکمه (Button) اشاره می کند و سپس به صفحه (برنامه) مربوط به دوربین گوشی (camera) هدایت می شود و در آنجا، چنانچه عکس بگیرد و بر روی دکمه save برای ذخیره عکس اشاره کند و در آخر، بر روی دکمه Back گوشی اشاره کند، عکس گرفته شده، توسط برنامه اندروید دریافت شده و در یک ImageView نمایش داده می شود.
فایل پروژه اندروید و همچنین فایل apk مربوط به آن را می توانید در انتهای مبحث، دانلود نمایید.
نام پروژه اندروید را برابر CameraTakePhoto انتخاب کرده ایم (نام package برابر com.kelidestan.cameratakephoto انتخاب شده است. نام activity اصلی را برابر MainActivity انتخاب کرده ایم و فایل xml متناظر آن را هم برابر activity_main قرار داده ایم).
ابتدا به سراغ فایل activity_main.xml می رویم که ظاهر گرافیکی مربوط به Activity را تعریف می کند :

635.jpg

کدهای فایل activity_main.xml را به صورت زیر می نویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<[/COLOR]LinearLayout xmlns[COLOR=#339933]:[/COLOR]android[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/apk/res/android"[/COLOR]
    xmlns[COLOR=#339933]:[/COLOR]tools[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/tools"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]orientation[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"vertical"[/COLOR]
    tools[COLOR=#339933]:[/COLOR]context[COLOR=#339933]=[/COLOR][COLOR=#0000FF]".MainActivity"[/COLOR] [COLOR=#339933]>[/COLOR]

    [COLOR=#339933]<[/COLOR][COLOR=#003399]Button[/COLOR]
        android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/button1"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"wrap_content"[/COLOR]
        android[COLOR=#339933]:[/COLOR]text[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"گرفتن عکس"[/COLOR] [COLOR=#339933]/>[/COLOR]

    [COLOR=#339933]<[/COLOR]ImageView
        android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/imageView1"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
        android[COLOR=#339933]:[/COLOR]src[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@drawable/ic_launcher"[/COLOR] [COLOR=#339933]/>[/COLOR]

[COLOR=#339933]</[/COLOR]LinearLayout[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
همان طور که مشاهده می کنید، در آن، یک Button و یک ImageView تعریف کرده ایم.

ظاهر گرافیکی فایل activity_main.xml به صورت زیر می باشد :

636.jpg


اکنون به سراغ فایل MainActivity.java می رویم (فایل مربوط به کدهای Activity ، یعنی تنها Activity برنامه) :

637.jpg

کدهای فایل MainActivity.java را به صورت زیر می نویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]package[/B] [COLOR=#006699]com.kelidestan.cameratakephoto[/COLOR][COLOR=#339933];[/COLOR]

[B]import[/B] [COLOR=#006699]android.app.Activity[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.content.Intent[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.graphics.Bitmap[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.os.Bundle[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.View[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.View.OnClickListener[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.widget.Button[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.widget.ImageView[/COLOR][COLOR=#339933];[/COLOR]

[B]public[/B] [B]class[/B] MainActivity [B]extends[/B] Activity [COLOR=#009900]{[/COLOR]
        
        [B]public[/B] ImageView iv[COLOR=#339933];[/COLOR]

        @Override
        [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onCreate[COLOR=#009900]([/COLOR]Bundle savedInstanceState[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]super[/B].[COLOR=#006633]onCreate[/COLOR][COLOR=#009900]([/COLOR]savedInstanceState[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                setContentView[COLOR=#009900]([/COLOR]R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]activity_main[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                
                iv [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR]ImageView[COLOR=#009900])[/COLOR]findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]imageView1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                
                [COLOR=#003399]Button[/COLOR] b [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR][COLOR=#003399]Button[/COLOR][COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]button1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                b.[COLOR=#006633]setOnClickListener[/COLOR][COLOR=#009900]([/COLOR][B]new[/B] OnClickListener[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                 @Override
                 [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onClick[COLOR=#009900]([/COLOR][COLOR=#003399]View[/COLOR] v[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                         Intent intent [COLOR=#339933]=[/COLOR] [B]new[/B]Intent[COLOR=#009900]([/COLOR]android.[COLOR=#006633]provider[/COLOR].[COLOR=#006633]MediaStore[/COLOR].[COLOR=#006633]ACTION_IMAGE_CAPTURE[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                     startActivityForResult[COLOR=#009900]([/COLOR]intent, [COLOR=#CC66CC]0[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                 [COLOR=#009900]}[/COLOR]
            [COLOR=#009900]}[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]
        
        
        @Override
           [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onActivityResult[COLOR=#009900]([/COLOR][COLOR=#000066][B]int[/B][/COLOR] requestCode, [COLOR=#000066][B]int[/B][/COLOR] resultCode, Intent data[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
              [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
              [B]super[/B].[COLOR=#006633]onActivityResult[/COLOR][COLOR=#009900]([/COLOR]requestCode, resultCode, data[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
              Bitmap bp [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR]Bitmap[COLOR=#009900])[/COLOR] data.[COLOR=#006633]getExtras[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]get[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"data"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
              iv.[COLOR=#006633]setImageBitmap[/COLOR][COLOR=#009900]([/COLOR]bp[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
           [COLOR=#009900]}[/COLOR]


[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
در روش onCreate ، کدهای زیر را نوشته ایم (کدهای روش onCreate ، به محض اجرای Activity ، اجرا خواهند شد) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]iv [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR]ImageView[COLOR=#009900])[/COLOR]findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]imageView1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                
[COLOR=#003399]Button[/COLOR] b [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR][COLOR=#003399]Button[/COLOR][COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]button1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
b.[COLOR=#006633]setOnClickListener[/COLOR][COLOR=#009900]([/COLOR][B]new[/B] OnClickListener[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
    @Override
    [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onClick[COLOR=#009900]([/COLOR][COLOR=#003399]View[/COLOR] v[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
        Intent intent [COLOR=#339933]=[/COLOR] [B]new[/B] Intent[COLOR=#009900]([/COLOR]android.[COLOR=#006633]provider[/COLOR].[COLOR=#006633]MediaStore[/COLOR].[COLOR=#006633]ACTION_IMAGE_CAPTURE[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        startActivityForResult[COLOR=#009900]([/COLOR]intent, [COLOR=#CC66CC]0[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
    [COLOR=#009900]}[/COLOR]
[COLOR=#009900]}[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
در کدهای فوق، ابتدا ImageView را شناسایی کرده ایم. سپس دکمه (Button) را شناسایی کرده ایم و با روش setOnClickListener ، تعیین کرده ایم که اگر کاربر بر روی دکمه (Button) اشاره کند، کدهای زیر اجرا شوند :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]Intent intent [COLOR=#339933]=[/COLOR] [B]new[/B] Intent[COLOR=#009900]([/COLOR]android.[COLOR=#006633]provider[/COLOR].[COLOR=#006633]MediaStore[/COLOR].[COLOR=#006633]ACTION_IMAGE_CAPTURE[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
startActivityForResult[COLOR=#009900]([/COLOR]intent, [COLOR=#CC66CC]0[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
کدهای فوق را در مبحثی دیگر شرح دادیم و گفتیم که باعث می شوند که صفحه مربوط به دوربین گوشی (camera) به کاربر نمایش داده شود.

اما بخش مهم کدهای Activity ، کدهای زیر می باشند که عکس گرفته شده توسط کاربر را دریافت کرده و در ImageView نمایش می دهند :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]           @Override
           [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onActivityResult[COLOR=#009900]([/COLOR][COLOR=#000066][B]int[/B][/COLOR] requestCode, [COLOR=#000066][B]int[/B][/COLOR] resultCode, Intent data[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
              [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
              [B]super[/B].[COLOR=#006633]onActivityResult[/COLOR][COLOR=#009900]([/COLOR]requestCode, resultCode, data[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
              Bitmap bp [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR]Bitmap[COLOR=#009900])[/COLOR] data.[COLOR=#006633]getExtras[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]get[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"data"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
              iv.[COLOR=#006633]setImageBitmap[/COLOR][COLOR=#009900]([/COLOR]bp[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
           [COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
ساخت پروژه اندروید تمام شد و من اکنون آن را بر روی یک گوشی اندروید واقعی تست می کنم :صفحه اول برنامه به صورت زیر می باشد :

638.jpg


بر روی دکمه (Button) با عنوان ((گرفتن عکس)) اشاره می کنیم تا صفحه (برنامه) مربوط به دوربین گوشی (camera) نمایش داده شود :

639.jpg

یک عکس می گیریم :


640.jpg

بر روی گزینه Save اشاره می کنیم، بنابراین خود به خود به برنامه اندروید باز می گردیم (اگر بر روی گزینه Discard اشاره کنیم، دوباره به صفحه دوربین گوشی برمی گردیم) :

641.jpg

مشاهده می کنید که عکس گرفته شده، در ImageView نمایش داده شده است.

فایل های پروژه اندروید را می توانید از لینک های زیر دریافت کنید :
 

پیوست ها

  • 92.zip
    926.8 کیلوبایت · بازدیدها: 0
  • 93.rar
    260.8 کیلوبایت · بازدیدها: 0
بالا