首页 > 代码库 > android 手电筒demo
android 手电筒demo
package com.sphere.flashlight;import android.app.Activity;import android.app.AlertDialog;import android.content.DialogInterface;import android.content.pm.FeatureInfo;import android.content.pm.PackageManager;import android.hardware.Camera;import android.os.Bundle;import android.view.KeyEvent;import android.widget.CompoundButton;import android.widget.CompoundButton.OnCheckedChangeListener;import android.widget.Toast;import android.widget.ToggleButton;public class MainActivity extends Activity { private ToggleButton button ; private Camera camera; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); button = (ToggleButton)findViewById(R.id.lightButton); button.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton button, boolean checked) { if(checked){ tryOPenLight(); }else { tryClosedLight(); } } }); } private void tryOPenLight(){ PackageManager pm= this.getPackageManager(); FeatureInfo[] features = pm.getSystemAvailableFeatures(); for(FeatureInfo f : features){ if(PackageManager.FEATURE_CAMERA_FLASH.equals(f.name)) //判断设备是否支持闪光灯 { if ( null == camera ) { camera = Camera.open(); } Camera.Parameters parameters = camera.getParameters(); parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); camera.setParameters(parameters); camera.startPreview(); } } if(!pm.hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH)){ button.setChecked(false); Toast.makeText(getBaseContext(), "Sorry.You phone not support flashlight", Toast.LENGTH_SHORT).show(); } } private void tryClosedLight(){ if ( camera != null ) { camera.stopPreview(); camera.release(); camera = null; } } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_BACK: AlertDialog.Builder build=new AlertDialog.Builder(this); build.setTitle("退出程序") .setMessage("确定要退出手电筒吗 *^_^*") .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { tryClosedLight(); finish(); } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }) .show(); break; } return super.onKeyDown(keyCode, event); } @Override protected void onDestroy() { tryClosedLight(); super.onDestroy(); }}
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.sphere.flashlight" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" /> <uses-permission android:name="android.permission.FLASHLIGHT"/> <uses-permission android:name="android.permission.WAKE_LOCK"/> <uses-permission android:name="android.permission.CAMERA"/> <uses-permission android:name="android.hardware.camera"/> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.sphere.flashlight.MainActivity" android:screenOrientation="portrait" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 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>
android 手电筒demo
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。