制作手电筒
2015-07-23 11:25
399 查看
市场里的手电筒,老有广告,让人受不了。于是自己开发一个手电筒,这里面的图标是在网上下了个app解压出来用的,请谅解。环境android studio
1,定义布局activity_light.xml
2,在drawable里新建toggle_btn_click.xml
3,copy两张按钮点击前后状态的图片,命名open、off。如
![](http://img.blog.csdn.net/20150723111742003?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20150723111757268?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
4,新建activity,如下
5,在manifest.xml中加入权限
OK,打完收工。源码地址
1,定义布局activity_light.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#000000" android:orientation="vertical"> <ToggleButton android:id="@+id/toggleButton" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/transparent" android:button="@drawable/toggle_btn_click" android:onClick="onClick"/> </LinearLayout>
2,在drawable里新建toggle_btn_click.xml
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="false" android:drawable="@drawable/open" /><!--设置默认是开的状态--> <item android:state_checked="true" android:drawable="@drawable/off" /> </selector>
3,copy两张按钮点击前后状态的图片,命名open、off。如
4,新建activity,如下
package xzy.light; import android.app.Activity; import android.content.pm.FeatureInfo; import android.content.pm.PackageManager; import android.hardware.Camera; import android.os.Bundle; import android.view.View; import android.view.WindowManager; import android.widget.ToggleButton; public class LightActivity extends Activity { private ToggleButton toggleButton; private Camera m_Camera; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_light); toggleButton = (ToggleButton)this.findViewById(R.id.toggleButton); toggleButton.setChecked(true); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); } public void onClick(View v) { ToggleButton tb = (ToggleButton)v; if(!tb.isChecked()){ PackageManager pm= this.getPackageManager(); FeatureInfo[] features=pm.getSystemAvailableFeatures(); for(FeatureInfo f : features) { if(PackageManager.FEATURE_CAMERA_FLASH.equals(f.name)) //判断设备是否支持闪光灯 { if ( null == m_Camera ) { m_Camera = Camera.open(); } Camera.Parameters parameters = m_Camera.getParameters(); parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); m_Camera.setParameters( parameters ); m_Camera.startPreview(); } } }else{ if ( m_Camera != null ) { m_Camera.stopPreview(); m_Camera.release(); m_Camera = null; } } } }
5,在manifest.xml中加入权限
<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"/>
OK,打完收工。源码地址
相关文章推荐
- [算法]最优矩阵链乘(动态规划 记忆化搜索)
- MySQL日期数据类型、时间类型使用总结
- APP上线前,如何做运营推广工作?
- spring MVC配置说明及Controller注解实例
- 在 UIViewController 中手动增加 TableView 出现 Type 'SomeViewController' does not confirm to protocol 'UITableViewDataSource' 问题的解决办法
- 深度学习(卷积神经网络)一些问题总结
- Codeforces 560C Gerald's Hexagon(几何)
- openwrt console密码登录
- 隐藏状态栏
- POJ Agri-Net
- java swing 文件选择,设置默认文件选择路径,桌面路径
- Android 让他们自己控制开发的定义(一个)
- Unity3D项目
- 决策树
- php中浮点数计算问题
- ps -aux与ps -ef
- 详解Django中的权限和组以及消息
- iOS 8 录音重放出现 OSStatus error 1685348671 / 2003334207 问题的解决办法
- YUM配置及自定义
- 8 个最优秀的 Android Studio 插件