[安卓开发] Android 自己做双向手电筒 源代码
生活随笔
收集整理的這篇文章主要介紹了
[安卓开发] Android 自己做双向手电筒 源代码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
水平這么爛真是慚愧。。
這年頭,想找一個沒有廣告,體積小巧的手電筒都不容易(好吧我知道大部分手機已經自己帶了)
除了閃光燈以外,屏幕也可以用作手電筒(適合于那些沒有閃光燈的平板或山寨機。。),即把背景設置為白色,把亮度調到最高。
運行效果如下(點擊橫線上方任意部分開啟、關閉前置,點擊橫線下方任意部分開啟、關閉后置):
如果不在意如何實現,可以直接——App下載
后置篇
打開閃光燈需要以下權限: <uses-permission android:name="android.permission.CAMERA"></uses-permission>
變量聲明:
private Camera mCamera;private Camera.Parameters mParameters;
開啟代碼如下:
判空是因為有可能被其他程序占用了攝像頭導致無法開啟 ,如果mCamera為空則會導致程序崩潰 mCamera=Camera.open();if (mCamera==null) break;<span style="white-space:pre"> </span>mParameters= mCamera.getParameters();mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);mCamera.setParameters(mParameters);mCamera.startPreview();
關閉代碼如下(camera是硬件設備,要及時釋放占用): if (mCamera==null) break;mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);mCamera.setParameters(mParameters);mCamera.release();
前置篇:
變量聲明: private int savedCurrentBrightness;private static final int BRIGHTNESS_MAX=255;
獲取屏幕亮度: public static int getScreenBrightness(Activity activity) {int currentBrightnessValue = 0;ContentResolver resolver = activity.getContentResolver();try {currentBrightnessValue = android.provider.Settings.System.getInt(resolver, Settings.System.SCREEN_BRIGHTNESS);} catch (Exception e) {e.printStackTrace();}return currentBrightnessValue;}
設置屏幕亮度: public static void setBrightness(Activity activity, int brightness,int color) {WindowManager.LayoutParams lp = activity.getWindow().getAttributes();lp.screenBrightness = Float.valueOf(brightness) * (1f / 255f);activity.getWindow().setAttributes(lp);activity.getWindow().setBackgroundDrawable(activity.getResources().getDrawable(color));}
將亮度調到最高: savedCurrentBrightness=getScreenBrightness(this);setBrightness(this,BRIGHTNESS_MAX,R.color.colorWhite);
恢復到原來的亮度:
setBrightness(this,savedCurrentBrightness,R.color.colorBlack);
UI篇:
因為功能比較簡單,所以將上半部分和下半部分分開作為兩個功能在開啟程序時,去掉標題欄,設定全屏,并把背景顏色該為黑色(開關前置時也會調整背景顏色) this.requestWindowFeature(Window.FEATURE_NO_TITLE);this.getWindow().setBackgroundDrawable(getResources().getDrawable(R.color.colorBlack));this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
設定屏幕常亮
WindowManager.LayoutParams params = getWindow().getAttributes();params.flags |= WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;getWindow().setAttributes(params);
鎖定屏幕朝向(這句話要放在?setContentView();之前)
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
布局代碼: <TextViewandroid:id="@+id/title"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:layout_marginTop="36dp"android:text="@string/app_name"android:textAppearance="?android:attr/textAppearanceLarge"android:textColor="@color/colorWhite"android:textSize="40sp" /><Buttonandroid:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/front_control"android:layout_weight="1"android:layout_gravity="top"android:background="@android:color/transparent"/><ImageViewandroid:layout_width="fill_parent"android:layout_height="3dp"android:background="#ffffff" /><Buttonandroid:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/back_control"android:layout_weight="1"android:layout_gravity="bottom"android:background="@android:color/transparent"/><TextViewandroid:id="@+id/author"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginBottom="42dp"android:gravity="right"android:textColor="@color/colorWhite"android:text="@string/author" />
附錄:
由于開啟閃光燈后,如果退出當前活動(按返回鍵)閃光燈依然亮著,下次回到當前活動時,只能先開啟閃光燈再關閉,因此可以寫如下代碼 @Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if(keyCode == KeyEvent.KEYCODE_BACK){if (mCamera!=null){mCamera.release();}}finish();return super.onKeyDown(keyCode, event);}開啟程序后,按返回鍵退出程序,按home鍵保持閃光燈亮,此時可以鎖屏
App:http://fir.im/p82x 源代碼:http://download.csdn.net/detail/martin20150405/9552360
總結
以上是生活随笔為你收集整理的[安卓开发] Android 自己做双向手电筒 源代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 独家 | 机器学习解释模型:黑盒VS白盒
- 下一篇: 原生js+css3实现点击图片正方体旋转