您的位置:首页 > 其它

制作手电筒

2015-07-23 11:25 399 查看
市场里的手电筒,老有广告,让人受不了。于是自己开发一个手电筒,这里面的图标是在网上下了个app解压出来用的,请谅解。环境android studio

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,打完收工。源码地址
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: