android手电筒(摇一摇也可开启手电筒)
package com.firefly.myflashlight; import android.app.Activity;
import android.hardware.Camera;
import android.hardware.Camera.Parameters;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.os.Vibrator;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast; public class MainActivity extends Activity {
ImageView image;
Boolean flag = false;
Camera camera;
Parameters params;
// 传感器管理
SensorManager sm;
Vibrator v ;//震动
sensorListener s;//传感器监听 @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(1);
setContentView(R.layout.activity_main);
image = (ImageView) findViewById(R.id.image);
Shake();
} private void Shake() {
// 初始化数据
sm = (SensorManager) getSystemService(SENSOR_SERVICE);
v = (Vibrator) getSystemService(VIBRATOR_SERVICE);
s = new sensorListener();
sm.registerListener(s, sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_NORMAL);
} //开/关按钮的点击事件
public void init(View view) {
Replese();
}
public void Replese(){
if (flag == false) {
camera = Camera.open();//打开相机
params = camera.getParameters();////获取预览的各种分辨率
params.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(params);
camera.startPreview();
Toast.makeText(getApplicationContext(), "别摇了,我又不是微信,摇不出妹子的!!", 0).show();
Toast.makeText(getApplicationContext(), "电筒已开启", 0).show();
image.setImageResource(R.drawable.off);//当相机打开之后按钮要变成关闭的颜色
flag = true;
} else {
Toast.makeText(getApplicationContext(), "您还可以直接摇一摇打开手电筒哦!", 0).show();
image.setImageResource(R.drawable.on);
camera.stopPreview();
camera.release();
flag = false;
}
} @Override
protected void onPause() {
// TODO Auto-generated method stub
sm.unregisterListener(s);
super.onPause();
} @Override
protected void onStop() {
// TODO Auto-generated method stub
sm.unregisterListener(s);
super.onStop();
} //震动(传感器)监听事件
private class sensorListener implements SensorEventListener { @Override
public void onSensorChanged(SensorEvent event) {
int sensorType = event.sensor.getType();
float[] values = event.values;
if (sensorType == Sensor.TYPE_ACCELEROMETER) {
//如果摇晃的力度在15
if (Math.abs(values[0]) > 15 || Math.abs(values[1]) > 15
|| Math.abs(values[2]) > 15) {
Replese();//就把电筒打开
v.vibrate(200);
}
}
} @Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub } }
}
android手电筒(摇一摇也可开启手电筒)的更多相关文章
- Android 摇一摇 之 传感器片
要监视原始的传感器数据,你需要实现两个通过SensorEventListener接口暴露的回调方法:onAccuracyChanged()和onSensorChanged(). 传感器数据的速度值,这 ...
- Android 摇一摇之双甩功能
Android 摇一摇之双甩功能 最近做一个摇一摇的功能 网上相关代码很多 但是这次的需求有点奇葩 要求是摇两次才生效 看起来好像很简单 但真正要做遇到的问题还是很多 时间限制 机型灵敏性 摇动的方式 ...
- Android仿iPhone晃动撤销输入功能(微信摇一摇功能)
重力传感器微信摇一摇SensorMannager自定义alertdialogSensorEventListener 很多程序中我们可能会输入长文本内容,比如短信,写便笺等,如果想一次性撤销所有的键入内 ...
- 玩转Android之加速度传感器的使用,模仿微信摇一摇
Android系统带的传感器有很多种,最常见的莫过于微信的摇一摇了,那么今天我们就来看看Anroid中传感器的使用,做一个类似于微信摇一摇的效果. OK ,废话不多说,我们就先来看看效果图吧: 当我摇 ...
- Android摇一摇振动效果Demo
前言 在微信刚流行的时候,在摇一摇还能用来那啥的时候,我也曾深更半夜的拿着手机晃一晃.当时想的最多的就是.我靠,为神马摇一下须要用这么大的力度,当时我想可能腾讯认为那是个人性的设计.后来才发觉 ...
- Android的加速度传感器模拟摇一摇的效果-android学习之旅(66)
主要介绍一下android的加速传感器的简单用法,模拟摇一摇 ,如果x,y,z三个方向的加速度超过了15,就会弹出Toast,当然你可以设置更复杂的策略,比如判断间隔 代码如下 public clas ...
- android 摇一摇+震动+声音效果
文章链接:https://mp.weixin.qq.com/s/n6EXvfmpNPtWM1kEnGgwUA 摇一摇红包效果已经是老生常谈的了,利用手机的传感器识别摇一摇,同时过程中进行动画+震动+声 ...
- android音乐播放器开发 SweetMusicPlayer 摇一摇换歌
上一篇写了怎样在线匹配歌词,http://blog.csdn.net/huweigoodboy/article/details/39878063,如今来讲讲摇一摇功能开发. 相同用了一个Service ...
- android 实现摇一摇功能
实现“摇一摇”功能,其实很简单,就是检测手机的重力感应,具体实现代码如下: 一.在 AndroidManifest.xml 中添加操作权限 二.实现代码 package com.xs.test; im ...
随机推荐
- Daily Scrum 10.29
今天大家的工作做的还算不错,但是晚些时候遗憾的得知我们的吴文会同学生病住院了,所以她明天的任务暂时保留,再做调整.希望大家在努力学习工作的同时一定要注意身体啊! 下面是今天的Task统计:
- Another app is currently holding the yum lock; waiting for it to exit...
刚安装完虚拟机,用xshell连接上linux后,安装程序时一直出现这个信息Another app is currently holding the yum lock; waiting for it ...
- liunx系统计划任务管理(at/crond调度)
一.at命令 at命令格式at HH:MM YYYY-MM-DD 其中 HH(小时):MM(分钟) YYYY(年)-MM(月份)-DD(日) 启动atd进程 /etc/init.d/atd start ...
- 会场安排问题---nyoj14
描述学校的小礼堂每天都会有许多活动,有时间这些活动的计划时间会发生冲突,需要选择出一些活动进行举办.小刘的工作就是安排学校小礼堂的活动,每个时间最多安排一个活动.现在小刘有一些活动计划的时间表,他想尽 ...
- Python字符串,元组、列表、字典
1.字符串 <string>.strip() 去掉两边空格及去指定字符 <string>.split() 按指定字符分隔字符串为数组 <string>.isdigi ...
- IOS彩票第一天基本框架搭建
*****初始化 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionar ...
- ios-系统警告框 跳转到设置里面
-(void)createUIAlertIphone:(NSString*)title { UIAlertController * alert =[UIAlertController alertCon ...
- 打包成zip
protected void btnExportZip_Click(object sender,EventArgs e) { string archiveName=String.Format(&quo ...
- DevExpress GridView加入DevExpress中的右键菜单PopuMenu
1. 添加一个Barmanager控件 2. 加入popumenu控件,点击该控件右上角的黑色三角号,编辑选项,点击编辑的选项,选择事件,编辑事件. 3. 在使用该右键菜单的控件添加MouseUp事件 ...
- javascript 隐性类型转换步骤
这里说的隐性类型转换,是==引起的转换. 如果存在NaN,一律返回false 再看有没有布尔,有布尔就将布尔转换为数字 接着看有没有字符串, 有三种情况,对方是对象,对象使用toString进行转换: ...