آموزش ساخت چراغ قوه در آندروید , Android Flashlight
سوال : در مثالی ساده توضیح دهید که چطور میشه در یک اکتیویتی چراغ قوه ای ساده ای طراحی کرد که کدهاش استاندارد باشه و حجم کمی داشته باشه تا بنده سر درگم نشم .
پاسخ : با توجه به درخواست کاربر عزیز میریم سراغ آموزش تا با هم یک چراغ قوه ساده و سبک رو با هم طراحی کنیم :
فایل main.xml :
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/main" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/bg_off" tools:context="co.tooba.flashlight.Main" > <Button android:id="@+id/btnOn" style="?android:attr/buttonStyleSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_marginBottom="15dp" android:layout_marginLeft="15dp" android:width="80dp" android:onClick="flashLightOn" android:text="روشن" /> <Button android:id="@+id/btnOff" style="?android:attr/buttonStyleSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_marginBottom="15dp" android:layout_marginLeft="15dp" android:width="80dp" android:onClick="flashLightOff" android:text="خاموش" /> </RelativeLayout>
فایل Main.java :
package co.tooba.flashlight; import android.hardware.Camera; import android.hardware.Camera.Parameters; import android.os.Bundle; import android.app.Activity; import android.content.pm.PackageManager; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.RelativeLayout; import android.widget.Toast; public class Main extends Activity { public static Camera cam = null; private static long back_pressed; private Button btnOn , btnOff; RelativeLayout layout; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btnOn = (Button)findViewById(R.id.btnOn); btnOff = (Button)findViewById(R.id.btnOff); btnOff.setVisibility(View.INVISIBLE); layout =(RelativeLayout) findViewById(R.id.main); } public void flashLightOn(View view) { try { if (getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH)) { cam = Camera.open(); Parameters p = cam.getParameters(); p.setFlashMode(Parameters.FLASH_MODE_TORCH); cam.setParameters(p); cam.startPreview(); btnOn.setVisibility(View.INVISIBLE); btnOff.setVisibility(View.VISIBLE); layout.setBackgroundDrawable(getResources().getDrawable(R.drawable.bg_on)); } } catch (Exception e) { e.printStackTrace(); Toast.makeText(getBaseContext(), "گوشی شما این قابلیت را پشتیبانی نمی کند", Toast.LENGTH_SHORT).show(); } } public void flashLightOff(View view) { try { if (getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH)) { cam.stopPreview(); cam.release(); cam = null; btnOff.setVisibility(View.INVISIBLE); btnOn.setVisibility(View.VISIBLE); layout.setBackgroundDrawable(getResources().getDrawable(R.drawable.bg_off)); } } catch (Exception e) { e.printStackTrace(); Toast.makeText(getBaseContext(), "گوشی شما این قابلیت را پشتیبانی نمی کند", Toast.LENGTH_SHORT).show(); } } public void onBackPressed(){ if (back_pressed + 2000 > System.currentTimeMillis()){ super.onBackPressed(); } else{ Toast.makeText(getBaseContext(), "جهت خروج دوباره کلیک کنید.", Toast.LENGTH_SHORT).show(); back_pressed = System.currentTimeMillis(); } } }
فانکشن flashLightOn برای روشن کردن فلش دوربین دیوایس می باشد . در صورتی که گوشی مورد نظر این قابلیت را نداشته باشد ،پیامی نمایش داده میشود .
فانکشن flashLightOff برای خاموش کردن فلش دوربین می باشد .
در هر setBackgroundDrawable جهت تغییر عکس پس زمینه اکتیویتی استفاده شده است .
دستور setVisibility(View.VISIBLE) برای مخفی کردن Button و دستور setVisibility(View.INVISIBLE) برای نمایان کردن Button می باشد .
کدهای به کار برده خیلی ساده و قابل فهم می باشند . در صورت وجود مشکل میتوانید سوالات خودتان را کامنت کنید .
-
mohammadreza - 30 ژوئن 2018
ببخشید سلام bg_onوbg_offرا چطور بنویسم
مرسی اگه کمک کنید -
مجتبی - 12 دسامبر 2018
سلام خسته نباشید . من یک مشکلی دارم اینکه متد Camera از هارد پشتیبانی نمیکنه (یک خط مشکی میزنه وسط کد ) و متد Parameters هم همینطوریه مشکل کجا است؟ کمکم کنید مرسی.