خاموش / روشن کردن چراغ قوه گوشی در اپلیکیشن (پروژه محور)

سه شنبه 8 مهر 1399

آموزش روشن و خاموش کردن چراغ قوه در اپلیکیشن اندروید (اولین مقاله پروژه محور سایت برنامه نویسان)

خاموش / روشن کردن چراغ قوه گوشی در اپلیکیشن (پروژه محور)

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

 

بریم سراغ پروژه خب امروز می‌خوایم که یک نرم افزار چراغ قوه بنویسیم در ابتدای کار یک اپلیکیشن در IDE خود ایجاد میکنیم 

 

در ابتدای کار یک دکمه ایجاد میکنیم که زمانی روی آن کلیک شد چراغ قوه روشن یا خاموش بشود که من از قبل آماده کردم و کد های XML این صفحه رو در اختیارتون قرار میدم 

<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">
	<LinearLayout
		android:id="@+id/linear1"
		android:layout_width="match_parent"
		android:layout_height="match_parent"
		android:padding="8dp"
		android:background="#000000"
		android:gravity="center_horizontal|center_vertical"
		android:orientation="vertical"
		android:layout_gravity="center_horizontal|center_vertical">
		<Button
			android:id="@+id/button1"
			android:layout_width="match_parent"
			android:layout_height="85dp"
			android:padding="8dp"
			android:text="روشن"
			android:textSize="30sp"
			android:textColor="#FFFFFF"/>
		<TextView
			android:id="@+id/textview1"
			android:layout_width="wrap_content"
			android:layout_height="wrap_content"
			android:padding="8dp"
			android:text="برنامه نویسان  barnamenevisan.org"
			android:textSize="12sp"
			android:textColor="#FFFFFF"/>
	</LinearLayout>
</LinearLayout>

حالا ما یک دکمه داریم که میتوانیم با onclick شدن آن چراغ قوه را روشن و خاموش کنیم  

این از کد های XML حالا بریم سراغ کد های جاوا در ابتدا یک متغیر Boolean تعریف میکنیم یادتان باشد که به صورت پیشفرض آن را False قرار بدیم 

private boolean on_and_off = false;

اینم از این حالا دو تابع بنویسیم که هروقت صدا شدن تابع اول چراغ قوه را روشن و تابع دوم چراغ قوه را خاموش کند 

 

تابع تعریف شده برای روشن شدن چراغ قوه 

public void _flashLightOn () {
		android.hardware.camera2.CameraManager cameraManager = (android.hardware.camera2.CameraManager) getSystemService(Context.CAMERA_SERVICE);
		try {
				String cameraId = cameraManager.getCameraIdList()[0]; cameraManager.setTorchMode(cameraId, true); } catch (android.hardware.camera2.CameraAccessException e) { }
	}

تابع تعریف شده برای خاموش شدن چراغ قوه

public void _flashLightOff () {
		android.hardware.camera2.CameraManager cameraManager = (android.hardware.camera2.CameraManager) getSystemService(Context.CAMERA_SERVICE);
		try {
				String cameraId = cameraManager.getCameraIdList()[0]; cameraManager.setTorchMode(cameraId, false); } catch (android.hardware.camera2.CameraAccessException e) { }
	}

 

حالا بریم سراغ اصل مطلب :)

یعنی زمانی که دکمه ای که در ابتدا تعریف کردیم onclick بشه 

private void initialize(Bundle _savedInstanceState) {
		
		linear1 = (LinearLayout) findViewById(R.id.linear1);
		button1 = (Button) findViewById(R.id.button1);
		textview1 = (TextView) findViewById(R.id.textview1);
		
		button1.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View _view) {
				if (on_and_off) {
					_flashLightOff();
					button1.setText("روشن ");
					int[] colorsCRNRK = { Color.parseColor("#006aff"), Color.parseColor("#00ffe4") }; android.graphics.drawable.GradientDrawable CRNRK = new android.graphics.drawable.GradientDrawable(android.graphics.drawable.GradientDrawable.Orientation.BR_TL, colorsCRNRK);
					CRNRK.setCornerRadii(new float[]{(int)64,(int)64,(int)64,(int)64,(int)64,(int)64,(int)64,(int)64});
					CRNRK.setStroke((int) 0, Color.parseColor("#000000"));
					button1.setElevation((float) 12);
					button1.setBackground(CRNRK);
					
					on_and_off = false;
				}
				else {
					_flashLightOn();
					button1.setText("خاموش");
					int[] colorsCRNIK = { Color.parseColor("#ff2800"), Color.parseColor("#ff00f9") }; android.graphics.drawable.GradientDrawable CRNIK = new android.graphics.drawable.GradientDrawable(android.graphics.drawable.GradientDrawable.Orientation.BR_TL, colorsCRNIK);
					CRNIK.setCornerRadii(new float[]{(int)64,(int)64,(int)64,(int)64,(int)64,(int)64,(int)64,(int)64});
					CRNIK.setStroke((int) 0, Color.parseColor("#000000"));
					button1.setElevation((float) 12);
					button1.setBackground(CRNIK);
					
					on_and_off = true;
				}
			}
		});
	}
	

خب اینم از این حالا یکم بهتون در رابطه با کد بالا توضیح بدم 

وقتی که کلیک میشه روی دکمه کد های بالای ما اجرا میشن 

یادتونه متغیرمون رو False کرده بودیم؟ در این شرطی که در کد های بالا وجود داره میگه که زمانی True نبود چراغ قوه رو روشن کن و متغیر رو True کن 

حالا کاربر برای بار دوم کلیک که می‌کنه متغیر ما که True شده پس شرط اصلی انجام میشه یعنی چراغ قوه خاموش میشه و دوباره متغیر False میشه

و به همین روال اگه کاربر دوباره کلیک که کرد چراغ قوه روشن میشه 

 

خب تموم شد :)

 

کل سورس پروژه رو در یک فایل ZIP براتون ضمیمه میکنم  و میتونید به راحتی به سورس کامل دسترسی داشته باشید  ⁦;)⁩

همچنین در این فایل ، فایل APK رو هم براتون قرار میدم که کامپایل شده همین سورسه 

اینجا یه نکته هم بگم : 

انقدم من بی سلیقه نیستما بخاطر اینکه سریع کارو تموم کنیم یه مقدار زشت شد وگرنه باور کنید بیشتر از اینا خلاقیت دارم :)   

در ضمن خودمونی صحبت کردنم توی مقاله هم صرفا جهت این بود که راحت تر تعامل کنید امیدوارم باعث دلخوری نشده باشه 

 

امیدوارم به دردتان خورده باشد 

موفق و پیروز باشید .

 

 

محتویات فایل ضمیمه شده : XML , java , apk 

رمز فایل : barnamenevisan.org

فایل های ضمیمه

حمیدرضا قهرمانی

نویسنده 16 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید