PackageCom.sphere.flashlight;Importandroid.app.Activity;ImportAndroid.app.AlertDialog;ImportAndroid.content.DialogInterface;ImportAndroid.content.pm.FeatureInfo;ImportAndroid.content.pm.PackageManager;ImportAndroid.hardware.Camera;ImportAndroid.os.Bundle;Importandroid.view.KeyEvent;ImportAndroid.widget.CompoundButton;ImportAndroid.widget.CompoundButton.OnCheckedChangeListener;ImportAndroid.widget.Toast;ImportAndroid.widget.ToggleButton; Public classMainactivityextendsActivity {PrivateToggleButton button; Privatecamera camera; @Overrideprotected voidonCreate (Bundle savedinstancestate) {Super. OnCreate (savedinstancestate); Setcontentview (R.layout.main); Button=(ToggleButton) Findviewbyid (R.id.lightbutton); Button.setoncheckedchangelistener (NewOncheckedchangelistener () {@Override Public voidOnCheckedChanged (Compoundbutton button,Booleanchecked) { if(checked) {tryopenlight (); }Else{tryclosedlight (); } } }); } Private voidtryopenlight () {Packagemanager pm= This. Getpackagemanager (); Featureinfo[] Features=pm.getsystemavailablefeatures (); for(Featureinfo f:features) {if(PackageManager.FEATURE_CAMERA_FLASH.equals (F.name))//determine if the device supports Flash { 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 voidtryclosedlight () {if(Camera! =NULL) {Camera.stoppreview (); Camera.release (); Camera=NULL; }} @Override Public BooleanOnKeyDown (intKeyCode, KeyEvent event) { Switch(keycode) { CaseKeyEvent.KEYCODE_BACK:AlertDialog.Builder Build=NewAlertdialog.builder ( This); Build.settitle ("Exit program"). Setmessage ("Are you sure you want to exit the flashlight? * ^_^ *"). Setpositivebutton ("OK",NewDialoginterface.onclicklistener () {@Override Public voidOnClick (Dialoginterface Dialog,intwhich) {tryclosedlight (); Finish (); }}). Setnegativebutton ("Cancel",NewDialoginterface.onclicklistener () {@Override Public voidOnClick (Dialoginterface Dialog,intwhich) { //TODO auto-generated Method Stub}}). Show (); Break; } return Super. OnKeyDown (KeyCode, event); } @Overrideprotected voidOnDestroy () {tryclosedlight (); Super. OnDestroy (); }}
Androidmanifest.xml
<?XML version= "1.0" encoding= "Utf-8"?><Manifestxmlns:android= "Http://schemas.android.com/apk/res/android" Package= "Com.sphere.flashlight"Android:versioncode= "1"Android:versionname= "1.0" > <USES-SDKandroid:minsdkversion= "8"android:targetsdkversion= "+" /> <uses-permissionAndroid:name= "Android.permission.FLASHLIGHT"/> <uses-permissionAndroid:name= "Android.permission.WAKE_LOCK"/> <uses-permissionAndroid:name= "Android.permission.CAMERA"/> <uses-permissionAndroid:name= "Android.hardware.camera"/> <ApplicationAndroid:allowbackup= "true"Android:icon= "@drawable/ic_launcher"Android:label= "@string/app_name"Android:theme= "@style/apptheme" > <ActivityAndroid:name= "Com.sphere.flashlight.MainActivity"android:screenorientation= "Portrait"Android:theme= "@android: Style/theme.notitlebar.fullscreen"Android:label= "@string/app_name" > <Intent-filter> <ActionAndroid:name= "Android.intent.action.MAIN" /> <categoryAndroid:name= "Android.intent.category.LAUNCHER" /> </Intent-filter> </Activity> </Application></Manifest>
Android Flashlight Demo