به نام خدا
سلام دوستان عزیز
در این جلسه از آموزش میخام با درباره چگونگی کار با دوربین کار کنیم
اینکه چطور بتونیم در برنامه خودمون وارد دوربین گوشی بشیم و بتونیم از
دوربین استفاده کنیم
قبل از هر کاری ما باید ببینیم به چه چیزهایی در برناممون نیاز داریم
خب من در برنامه به یک دکمه نیاز دارم که با اون عکس بگیرم
و به یک ImageView برای نشون دادن تصویر گرفته شده
خب میریم سراغ آموزش
قدم اول
ابتدا در activity مورد نظر من یک Button و یک ImageView ایجاد میکنم
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<ImageView
android:id="@+id/imageview"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:src="@drawable/ic_launcher_foreground" />
<Button
android:id="@+id/btn_photo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:text="Take Picture" />
</LinearLayout>
خب در بالا من یک Button و یک ImageView ایجاد کردم
نکته ای که در اینجا باید بهتون بگم اینه که
در خط 13 ارتفاع را 0 تعیین کردم و در خط چهارده
یک ویژگی به نام weight یعنی وزن اضافه کردم
من با دادن ویژگی وزن به ایمیج ویو در واقع دستور دادم که هرچقدر از فضای صفحه باقی مونده
به همان اندازه گسترش پیدا کن از همین ویژگی هم می توان برای عرض استفاده کرد یعنی عرض را صف بدهیم و به اون وزن اضافه کنیم
قدم دوم
در این مرحله باید برای برنامه مجوز دسترسی به دوربین دستگاه را صادر کنیم
برای اجازه دسترسی به دوربین دستگاه در قسمت Manifest کد زیر را جای گذاری می کنیم
و از طریق این کد به ویژگی های دوربین دسترسی پیدا می کنیم
نکته افزودن ویژگی های دوربین به مانیفست باعث میشه Google Play مانع از نصب برنامه شماروی دستگاه هایی بشه که ویژگی های دوربین مورد نظر شما پشتیبانی نمیکنه
<uses-feature android:name="android.hardware.camera" android:required="true" />
قدم سوم
نوشتن کدهای java در کلاس مورد نظر
من کدها رو در پایین مینویسم و در آخر خط به خط توضیح میدم
MainActivity.java
package com.hamyarandroid.capturingpictures;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends AppCompatActivity {
ImageView imgView;
Button btnPhoto;
protected static final int CameraRequest = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imgView = findViewById(R.id.imageview);
btnPhoto = findViewById(R.id.btn_photo);
btnPhoto.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent aks = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(aks, CameraRequest);
}
});
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CameraRequest) {
Bitmap resultPhoto = (Bitmap) data.getExtras().get("data");
imgView.setImageBitmap(resultPhoto);
}
}
}
کد کلی جاوا کلاس به صورت بالا هستش حالا من در پایین بخش به بخش اونو واستون توضیح میدم
خط 15 و 16
معرفی ویوها به کلاس
خط 17
برای برگرداندن نتیجه کار و نمایش عکس از این کد استفاده میکنیم که عدد دلخواه 1 و نام دلخواه میگیرد
خط های 24 و 25
اتصال ویوهای معرفی شده بالا به id
خط 27
خاصیت کلیک خوری برای باتن ایجاد کردیم
خط 31
ما اینجا مشخص میکنیم که از چه ویژگی دوربین میخایم استفاده کنیم
و من در اینجا از ویژگی گرفتن عکس توسط دوربین استفاده کردم
خط 32
برای رفتن به دوربین استفاده میکنیم
خط 39
یک متد ایجاد میکنیم برای دریافت عکس و نمایش آن درون ImageView
خط 41
یک شرط ایجاد میکنیم و میگیم اگر requestCode برابر بود با CameraRequest عمل زیر برای ما اجرا شود
CameraRequest را در بالا توضیح دادیم که قرار است یه int برای ما برگرداند
خط 43
تصویری که در یافت میکنیم را باید به جنس Bitmap تبدیل کنیم و در ImageView نمایش بدیم
پس ما به یک شی نیاز داریم که اسمش هست Bitmap و اسمشو resultPhoto گذاشتیم
که میاد و اطلاعاتی رو در خودش ذخیره میکنه و اسم اون اطلاعات رو data میذاریم
خط 44
تصویر گرفته شده را روی ImageView ست میکنیم
تصویر خروجی برنامه را میتونید در پایین ببینید
امیدوارم از این آموزش استفاده مفید رو ببرید
موفق و پیروز باشین