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手电筒(摇一摇也可开启手电筒)的更多相关文章

  1. Android 摇一摇 之 传感器片

    要监视原始的传感器数据,你需要实现两个通过SensorEventListener接口暴露的回调方法:onAccuracyChanged()和onSensorChanged(). 传感器数据的速度值,这 ...

  2. Android 摇一摇之双甩功能

    Android 摇一摇之双甩功能 最近做一个摇一摇的功能 网上相关代码很多 但是这次的需求有点奇葩 要求是摇两次才生效 看起来好像很简单 但真正要做遇到的问题还是很多 时间限制 机型灵敏性 摇动的方式 ...

  3. Android仿iPhone晃动撤销输入功能(微信摇一摇功能)

    重力传感器微信摇一摇SensorMannager自定义alertdialogSensorEventListener 很多程序中我们可能会输入长文本内容,比如短信,写便笺等,如果想一次性撤销所有的键入内 ...

  4. 玩转Android之加速度传感器的使用,模仿微信摇一摇

    Android系统带的传感器有很多种,最常见的莫过于微信的摇一摇了,那么今天我们就来看看Anroid中传感器的使用,做一个类似于微信摇一摇的效果. OK ,废话不多说,我们就先来看看效果图吧: 当我摇 ...

  5. Android摇一摇振动效果Demo

    前言     在微信刚流行的时候,在摇一摇还能用来那啥的时候,我也曾深更半夜的拿着手机晃一晃.当时想的最多的就是.我靠,为神马摇一下须要用这么大的力度,当时我想可能腾讯认为那是个人性的设计.后来才发觉 ...

  6. Android的加速度传感器模拟摇一摇的效果-android学习之旅(66)

    主要介绍一下android的加速传感器的简单用法,模拟摇一摇 ,如果x,y,z三个方向的加速度超过了15,就会弹出Toast,当然你可以设置更复杂的策略,比如判断间隔 代码如下 public clas ...

  7. android 摇一摇+震动+声音效果

    文章链接:https://mp.weixin.qq.com/s/n6EXvfmpNPtWM1kEnGgwUA 摇一摇红包效果已经是老生常谈的了,利用手机的传感器识别摇一摇,同时过程中进行动画+震动+声 ...

  8. android音乐播放器开发 SweetMusicPlayer 摇一摇换歌

    上一篇写了怎样在线匹配歌词,http://blog.csdn.net/huweigoodboy/article/details/39878063,如今来讲讲摇一摇功能开发. 相同用了一个Service ...

  9. android 实现摇一摇功能

    实现“摇一摇”功能,其实很简单,就是检测手机的重力感应,具体实现代码如下: 一.在 AndroidManifest.xml 中添加操作权限 二.实现代码 package com.xs.test; im ...

随机推荐

  1. mysql 的2个关于事务和安全性的参数

    innodb_flush_log_at_trx_commit:(mysql写事物日志的方式) 0 log buffer 会每秒写入到日志文件中,并刷新到磁盘  (提交方式与事物无关,性能最好) 1 事 ...

  2. JQuery基本方法介绍和使用

    1.属性 $("p").addClass(css中定义的样式类型); 给某个元素添加样式 常用于表格鼠标移动效果 $(document).ready(function(){ //& ...

  3. JAVA 往jar包添加class文件

    (1) jar -uf jarfile.jar yourclasses (2) 右击要打包的文件夹,选择“添加到压缩文件”,弹出对话框: 把压缩文件格式改为zip,再把压缩文件名中的反缀改为.jar, ...

  4. document.body.clientHeight 和 document.documentElement.clientHeight的区别

    document.body.clientWidth ==> BODY对象宽度document.body.clientHeight ==> BODY对象高度document.document ...

  5. java中类的继承

    我们都知道java的四大特性:抽象.继承.封装.多态: 那么关于继承有哪些特性呢?下面看具体实例: (1) public class Person { public  int a=2; public  ...

  6. BizTalk开发系列(二十二) 开发自定义Map Functoid

    尽管 BizTalk Server 提供许多Functoid以支持一系列不同的操作,但仍可能会遇到需要其他方法的情况.<BizTalk开发系列 Map扩展开发>介绍了通过使用自定义 XSL ...

  7. Android课程---String、StringBuffer 、StringBuilder 的区别(转)

    String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全)  简要的说, String 类型和 StringBuffer 类型的主 ...

  8. android 一个简单的服务例子

    public class MessageService extends Service { // 获取消息线程 private MessageThread messageThread = null; ...

  9. HTML DOM基础知识

    HTML DOM基础知识 一.什么是DOM? 1.HTML DOM 定义了访问和操作HTML文档的标准方法. 2.HTML DOM 把 HTML 文档呈现为带有元素.属性和文本的树结构(节点树). 3 ...

  10. B、B*、B+

    转自:http://blog.csdn.net/v_JULY_v/article/details/6530142 从B 树.B+ 树.B* 树谈到R 树 作者:July.weedge.Frankie. ...