国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

Android 通用型手電筒代碼

2020-04-11 11:30:36
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

前幾天這邊一個(gè)小區(qū)斷電,黑麻麻的,一只貓闖進(jìn)寢室,把我嚇哭,然后就果斷寫(xiě)了個(gè)手電筒,下次斷電,再來(lái),我要嚇?biāo)浪?/p>

我之前看到很多人都是直接調(diào)用閃光燈,其實(shí)大部分機(jī)型都不支持,我這個(gè)是用相機(jī)功能來(lái)實(shí)現(xiàn)的,大部分機(jī)型都支持。

MainActivity.class

public class MainActivity extends FragmentActivity {   @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);     if (isFlashSupported()) {      if (savedInstanceState == null) {        getSupportFragmentManager().beginTransaction().add(R.id.container, new FlashlightFragment()).commit();      }    } else {      showNoFlashAlert();    }  }   private void showNoFlashAlert() {    new AlertDialog.Builder(this)        .setMessage(R.string.device_not_support_msg)        .setIcon(android.R.drawable.ic_dialog_alert).setTitle(R.string.device_not_support_title)        .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {           @Override          public void onClick(DialogInterface dialog, int which) {            dialog.dismiss();            finish();          }        }).create().show();  }   private boolean isFlashSupported() {    PackageManager pm = getPackageManager();    return pm.hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);  }   public static class FlashlightFragment extends Fragment implements SurfaceHolder.Callback {     public FlashlightFragment() { }     ImageButton btnSwitch;    ImageView bg;    private boolean isLighOn = false;     private Camera camera;    Camera.Parameters params;     @Override    public void onStart() {      super.onStart();      SurfaceView preview = (SurfaceView) getView().findViewById(R.id.PREVIEW);      SurfaceHolder mHolder = preview.getHolder();      mHolder.addCallback(this);    }     @Override    public void onPause() {      super.onPause();      turnOffFlash();    }     @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {      View view = inflater.inflate(R.layout.fragment_main_activity, container, false);       // flash switch button      btnSwitch = (ImageButton) view.findViewById(R.id.flashlight_button);       bg = (ImageView) view.findViewById(R.id.flashlight_bg);       // displaying button image      toggleBgImage();       // Switch button click event to toggle flash on/off      btnSwitch.setOnClickListener(new View.OnClickListener() {         @Override        public void onClick(View v) {          if (isLighOn) {            turnOffFlash();          } else {            turnOnFlash();          }        }      });       return view;    }     // Turning On flash    private void turnOnFlash() {       if (!isLighOn) {        if (camera == null || params == null) {          return;        }        params = camera.getParameters();        params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);        camera.setParameters(params);        camera.startPreview();        isLighOn = true;         toggleBgImage();      }     }     // Turning Off flash    private void turnOffFlash() {       if (isLighOn) {        if (camera == null || params == null) {          return;        }         params = camera.getParameters();        params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);        camera.setParameters(params);        camera.stopPreview();        isLighOn = false;         toggleBgImage();      }    }     private void toggleBgImage() {      if (isLighOn) {        bg.setImageResource(R.mipmap.f_on);      } else {        bg.setImageResource(R.mipmap.f_off);      }    }     @Override    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {     }     @Override    public void surfaceDestroyed(SurfaceHolder holder) {      if (camera != null) {        camera.stopPreview();        camera.setPreviewCallback(null);        camera.release();        camera = null;      }    }     @Override    public void surfaceCreated(SurfaceHolder holder) {      if (camera == null) {        camera = Camera.open();        params = camera.getParameters();        try {          camera.setPreviewDisplay(holder);        } catch (IOException e) {          camera.release();          camera = null;        }      }       turnOnFlash();    }   }  }

fragment_main_activity.xml

<RelativeLayout  xmlns:android="http://schemas.android.com/apk/res/android"  android:layout_width="match_parent"  android:layout_height="match_parent"  >   <SurfaceView    android:id="@+id/PREVIEW"    android:layout_width="1dp"    android:layout_height="1dp"/>   <ImageView    android:id="@+id/flashlight_bg"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:src="@mipmap/f_on"    android:scaleType="centerCrop"    />   <ImageButton    android:id="@+id/flashlight_button"    android:layout_width="100dp"    android:layout_height="200dp"    android:layout_centerInParent="true"    android:background="@android:color/transparent"    android:text="fuck"/> </RelativeLayout>

activity_main.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"       android:id="@+id/container"       android:layout_width="match_parent"       android:layout_height="match_parent"       />

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"  package="com.liujinghuiuncleapp.app.tool.flashlight" >   <uses-permission android:name="android.permission.CAMERA" />  <uses-permission android:name="android.permission.FLASHLIGHT" />   <uses-feature android:name="android.hardware.camera" />  <uses-feature android:name="android.hardware.camera.flash" />   <application    android:allowBackup="true"    android:icon="@mipmap/ic_launcher"    android:theme="@style/AppTheme"    android:label="@string/app_name" >    <activity      android:name=".MainActivity"      android:label="@string/app_name" >      <intent-filter>        <action android:name="android.intent.action.MAIN" />         <category android:name="android.intent.category.LAUNCHER" />      </intent-filter>    </activity>  </application> </manifest>

以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 凤凰县| 财经| 会东县| 昭通市| 防城港市| 香河县| 宜宾市| 龙州县| 永川市| 宜黄县| 桃江县| 五华县| 崇仁县| 高台县| 新蔡县| 科尔| 石门县| 霍山县| 青海省| 长治市| 五莲县| 曲麻莱县| 台安县| 宁远县| 敦煌市| 米林县| 玛沁县| 绵阳市| 怀远县| 淄博市| 大余县| 治多县| 正阳县| 郸城县| 苗栗县| 会同县| 古交市| 应城市| 泰安市| 宝清县| 清河县|